Browse Source

重构代码,优化方法和数据结构

在 `SxController.cs` 中删除了不必要的方法,添加了 `CellInfo` 方法以提高可读性。
在 `CurtainProductionOrderRequest.cs` 中新增 `LINECLIP_SIDE_COLOR` 属性,增强请求数据完整性。
在 `SxLayerPackingHelp.cs` 中增加日志记录功能,改进库存预占逻辑并增强异常处理。
在 `LayerPackingBoxInfo.cs` 中新增 `GetLogString` 方法,提升调试能力。
更新 `ISXService.cs` 接口定义,增强文档性。
重构 `SXService.cs` 中的 `CurtainProductionOrder` 方法,优化SKU和包号处理,确保数据一致性。
更新机器人最大层数配置,优化SKU下的箱号列表获取逻辑,增加可用箱号数量的日志记录。
修复获取颜色的逻辑,确保颜色信息准确性,增强代码健壮性。
林豪 左 1 week ago
parent
commit
649aef829d

+ 0 - 41
wms.api/Controllers/SxController.cs

@@ -297,47 +297,6 @@ namespace wms.api.Controllers
             return _sxService.CellInfo(code);
         }
 
-        /// <summary>
-        /// 码垛层配装箱
-        /// </summary>
-        /// <param name="request"></param>
-        /// <returns></returns>
-        [HttpPost]
-        public SRes PalletizingLayerPackStockOut(PalletizingPackStockOutRequest request)
-        {
-            return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingLayerPackStockOut, "PalletizingLayerPackStockOut", request.Equip, request, _sxService.PalletizingLayerPackStockOut);
-        }
-
-        ///// <summary>
-        ///// 码垛SPC非控制装箱(缓存托盘)
-        ///// </summary>
-        ///// <param name="request"></param>
-        ///// <returns></returns>
-        //[HttpPost]
-        //public SRes PalletizingSpcNotPackStockOut2(PalletizingPackStockOutRequest request)
-        //{
-        //    lock (lockerPalletizingSpcPackStockOut)
-        //    {
-        //        return _sxService.PalletizingSpcNotPackStockOut2(request);
-        //    }
-        //    //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcNotPackStockOut);
-        //}
-
-        ///// <summary>
-        ///// 码垛SPC控制装箱(缓存托盘)
-        ///// </summary>
-        ///// <param name="request"></param>
-        ///// <returns></returns>
-        //[HttpPost]
-        //public SRes PalletizingSpcPackStockOut2(PalletizingPackStockOutRequest request)
-        //{
-        //    lock (lockerPalletizingSpcPackStockOut)
-        //    {
-        //        return _sxService.PalletizingSpcPackStockOut2(request);
-        //    }
-        //    //return ConcurrencyReqControl<PalletizingPackStockOutRequest, SRes>(lockerPalletizingSpcPackStockOut, "PalletizingSpcPackStockOut", request.Equip, request, _sxService.PalletizingSpcPackStockOut);
-        //}
-
         /// <summary>
         /// 码垛SPC装箱(控制非控制一起执行) --在用
         /// </summary>

+ 5 - 0
wms.dto/request/fj/CurtainProductionOrderRequest.cs

@@ -134,6 +134,11 @@ namespace wms.dto.request.fj
         /// </summary>
         public string SPOOL_MAJOR_COLOR { get; set; }
 
+        /// <summary>
+        /// 别线面颜色 浅蓝/灰色/橙色
+        /// </summary>
+        public string LINECLIP_SIDE_COLOR { get; set; }
+
         /// <summary>
         /// 收线自动扭转检测(俯视)  顺时针/逆时针
         /// </summary>

+ 16 - 4
wms.service/Help/LayerPacking/SxLayerPackingHelp.cs

@@ -417,6 +417,7 @@ namespace wms.service.Help.Packing
             PreOccupyInventory(rule, allocationResult.BoxInfo);
 
             res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode();
+            _logger.LogError($"CP装箱信息:[箱号:{rule.PBoxCode};{allocationResult.BoxInfo.GetLogString()}]");
             return res;
         }
 
@@ -615,7 +616,8 @@ namespace wms.service.Help.Packing
             LayerPackingBoxInfo boxInfo)
         {
             var res = new SRes() { ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode(), ResMsg = ResponseStatusCodeEnum.Sucess.GetDescription() };
-            if (boxInfo.Layers.SelectMany(x=>x.Products).Count() != rule.FullCountQty)
+            var productsCount = boxInfo.Layers.SelectMany(x => x.Products).Count();
+            if (productsCount != rule.FullCountQty)
             {
                 res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
                 res.ResMsg = "成箱产品数与满箱产品数不符";
@@ -630,20 +632,30 @@ namespace wms.service.Help.Packing
 
                 // 更新库存预占用标记
                 var presign = rule.Id.ToString();
-                var layerNumber = 0;
+                var layerNumber = 1;
+                var updateNumber = 0;
                 foreach (var layer in boxInfo.Layers.OrderByDescending(x => x.TotalTorsion))
                 {
                     var layerProductsIds = layer.Products.Select(x => x.ContGrpId).ToList();
-                    _invNow.UpdateSetColumnsTrue(p => new BillInvnow
+                    var result = _invNow.Context.Updateable<BillInvnow>().SetColumns(p => new BillInvnow
                     {
                         PreStock = presign,
                         EditTime = DateTime.Now,
                         PackingLayer = layerNumber,
                         Memo = $"箱号预占用:{rule.PBoxCode}"
-                    }, p => layerProductsIds.Contains(p.ContGrpId));
+                    }).Where(p => layerProductsIds.Contains(p.ContGrpId)).ExecuteCommand();
+                    updateNumber += result;
                     layerNumber++;
                 }
 
+                if (updateNumber != productsCount)
+                {
+                    _db.RollbackTran();
+                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
+                    res.ResMsg = $"更新库存预占用标记失败,应更新:{productsCount},实更新:{updateNumber}";
+                    return res;
+                }
+
                 var containerIds = boxInfo.TotalProduct.Select(x => x.ContGrpId).ToList();
                 _db.CommitTran();
                 _logger.LogInformation($"{rule.PBoxCode}预占:{JsonConvert.SerializeObject(containerIds)}");

+ 9 - 0
wms.service/Help/LayerPacking/model/LayerPackingBoxInfo.cs

@@ -124,5 +124,14 @@ namespace wms.service.Help.LayerPacking.model
         {
             return Layers.Sum(l => l.Products.Count);
         }
+
+        /// <summary>
+        /// 获取日志描述信息
+        /// </summary>
+        /// <returns></returns>
+        public string GetLogString()
+        {
+            return $"最小箱目标:{MinBoxTarget};最大箱目标:{MaxBoxTarget};箱目标:{BoxTarget};产品池平均值:{ProductPoolAverage};箱总扭转值:{TotalTorsion}:箱总数:{TotalProduct.Count}";
+        }
     }
 }

+ 1 - 1
wms.service/IService/ISXService.cs

@@ -90,7 +90,7 @@ namespace wms.service.IService
 
         SRes CancelTask(CompleteTaskRequest request);
 
-        SRes PalletizingLayerPackStockOut(PalletizingPackStockOutRequest request);
+        
 
         /// <summary>
         /// 预锁库存

File diff suppressed because it is too large
+ 379 - 1105
wms.service/Service/SXService.cs


Some files were not shown because too many files changed in this diff