From 65c40dc55ad74add31bbcf9c7563b09b2abc8f03 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期四, 08 一月 2026 18:41:38 +0800
Subject: [PATCH] 1

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs |  104 ++++++++++++++++++++++++++++------------------------
 1 files changed, 56 insertions(+), 48 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
index 269547c..15d40f2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs"
@@ -40,50 +40,55 @@
         }
 
         #region
+
+        static object lockObj = new object();
         public string CreateCodeByRule(string ruleCode)
         {
-            string code = string.Empty;
-            DateTime dataTime = DateTime.Now;
-            DateTime now = DateTime.Now;
-
-            try
+            lock (lockObj)
             {
-                Dt_CodeRuleConfig ruleConfig = _unitOfWorkManage.Db.Queryable<Dt_CodeRuleConfig>().Where(x => x.RuleCode == ruleCode).First();
-                if (ruleConfig.ModifyDate != null)
-                {
-                    dataTime = ruleConfig.ModifyDate.Value;
-                }
-                else
-                {
-                    dataTime = ruleConfig.CreateDate;
-                }
+                string code = string.Empty;
+                DateTime dataTime = DateTime.Now;
+                DateTime now = DateTime.Now;
 
-                if (now.Year == dataTime.Year && now.Month == dataTime.Month && now.Day == dataTime.Day)
+                try
                 {
-                    now = dataTime;
-                    ruleConfig.CurrentVal = Convert.ToInt32(ruleConfig.CurrentVal) + 1;
+                    Dt_CodeRuleConfig ruleConfig = _unitOfWorkManage.Db.Queryable<Dt_CodeRuleConfig>().Where(x => x.RuleCode == ruleCode).First();
+                    if (ruleConfig.ModifyDate != null)
+                    {
+                        dataTime = ruleConfig.ModifyDate.Value;
+                    }
+                    else
+                    {
+                        dataTime = ruleConfig.CreateDate;
+                    }
+
+                    if (now.Year == dataTime.Year && now.Month == dataTime.Month && now.Day == dataTime.Day)
+                    {
+                        now = dataTime;
+                        ruleConfig.CurrentVal = Convert.ToInt32(ruleConfig.CurrentVal) + 1;
+                    }
+                    else
+                    {
+                        ruleConfig.CurrentVal = 1;
+                    }
+
+                    ruleConfig.ModifyDate = DateTime.Now;
+
+                    code = ruleConfig.Format;
+                    code = code.Replace($"[{CodeFormatTypeEnum.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
+                    code = code.Replace($"[{CodeFormatTypeEnum.MM}]", now.Month.ToString().PadLeft(2, '0'));
+                    code = code.Replace($"[{CodeFormatTypeEnum.DD}]", now.Day.ToString().PadLeft(2, '0'));
+                    code = code.Replace($"[{CodeFormatTypeEnum.ST}]", ruleConfig.StartStr.ToString());
+                    code = code.Replace($"[{CodeFormatTypeEnum.NUM}]", ruleConfig.CurrentVal.ToString().PadLeft(ruleConfig.Length, '0'));
+
+                    _unitOfWorkManage.Db.Updateable(ruleConfig).ExecuteCommand();
                 }
-                else
+                catch (Exception ex)
                 {
-                    ruleConfig.CurrentVal = 1;
+                    throw new Exception(ex.Message);
                 }
-
-                ruleConfig.ModifyDate = DateTime.Now;
-
-                code = ruleConfig.Format;
-                code = code.Replace($"[{CodeFormatTypeEnum.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
-                code = code.Replace($"[{CodeFormatTypeEnum.MM}]", now.Month.ToString().PadLeft(2, '0'));
-                code = code.Replace($"[{CodeFormatTypeEnum.DD}]", now.Day.ToString().PadLeft(2, '0'));
-                code = code.Replace($"[{CodeFormatTypeEnum.ST}]", ruleConfig.StartStr.ToString());
-                code = code.Replace($"[{CodeFormatTypeEnum.NUM}]", ruleConfig.CurrentVal.ToString().PadLeft(ruleConfig.Length, '0'));
-
-                _unitOfWorkManage.Db.Updateable(ruleConfig).ExecuteCommand();
+                return code;
             }
-            catch (Exception ex)
-            {
-
-            }
-            return code;
         }
         #endregion
 
@@ -109,29 +114,32 @@
                 throw new Exception($"杞崲鍚庡崟浣嶄笉鑳戒负绌�");
             }
 
+            Dt_MaterielInfo materielInfo = MaterielInfoService.Repository.QueryFirst(x => x.MaterielCode == materialCode);
+            if (materielInfo == null)
+            {
+                throw new Exception("鍗曚綅杞崲鏃剁墿鏂欎俊鎭湭鎵惧埌");
+            }
             decimal ratio = 1;
 
-            if (fromUnit.Trim().ToLower() == toUnit.Trim().ToLower())
+            if (materielInfo.inventoryUOM.Trim().ToLower() == fromUnit.Trim().ToLower())
             {
-                return new UnitConvertResultDTO(materialCode, fromUnit, toUnit, quantity, ratio);
-            }
-
-            Dt_MaterialUnit materialUnit = MaterialUnitService.Repository.QueryFirst(x => x.ItemNo == materialCode && x.FromUom == fromUnit && x.ToUom == toUnit);
-            if (materialUnit != null)
-            {
-                ratio = materialUnit.Ratio;
                 return new UnitConvertResultDTO(materialCode, fromUnit, toUnit, quantity, ratio);
             }
             else
             {
-                materialUnit = MaterialUnitService.Repository.QueryFirst(x => x.ItemNo == materialCode && x.FromUom == toUnit && x.ToUom == fromUnit);
-                if (materialUnit == null)
+                Dt_MaterialUnit materialUnit = MaterialUnitService.Repository.QueryFirst(x => x.ItemNo == materialCode && x.FromUom == fromUnit);
+                if (materialUnit != null)
                 {
-                    throw new Exception($"鏈壘鍒板崟浣嶈浆鎹㈠叧绯伙紝鐗╂枡缂栧彿锛歿materialCode}锛岃浆鎹㈠墠鍗曚綅锛歿fromUnit}锛岃浆鎹㈠悗鍗曚綅锛歿toUnit}");
+                    toUnit = materialUnit.ToUom;
+                    ratio = materialUnit.Ratio;
+                    return new UnitConvertResultDTO(materialCode, fromUnit, toUnit, quantity, ratio);
                 }
-                ratio = materialUnit.Ratio;
-                return new UnitConvertResultDTO(materialCode, fromUnit, toUnit, quantity, ratio);
+                else
+                {
+                    throw new Exception($"鏈壘鍒板崟浣嶈浆鎹㈠叧绯伙紝鐗╂枡缂栧彿锛歿materialCode}锛岃浆鎹㈠墠鍗曚綅锛歿fromUnit}");
+                }
             }
+              
         }
 
         /// <summary>

--
Gitblit v1.9.3