Bladeren bron

增强码垛信息处理和库存验证逻辑

在 `FJService.cs` 中添加了对 `ringPalletizingInfo` 的处理逻辑,修改了码垛信息的判断方式,并增加了对直接码垛的验证。实现了环形库情况下的库存信息检查与更新。新增 `GetIsDirectPalletizing` 方法以判断设备是否支持直接码垛。

在 `BillRingPalletizingInfo.cs` 中新增 `MaDuoGongWei` 属性,用于记录码垛工位信息。
林豪 左 3 maanden geleden
bovenliggende
commit
d5d79c30db
2 gewijzigde bestanden met toevoegingen van 93 en 22 verwijderingen
  1. 86 21
      wms.service/Service/FJService.cs
  2. 7 1
      wms.sqlsugar/model/fj/BillRingPalletizingInfo.cs

+ 86 - 21
wms.service/Service/FJService.cs

@@ -5189,6 +5189,7 @@ namespace wms.service.Service
                     !x.Out).OrderBy(x => x.AddTime);
                 BillRingPalletizingInfo ringPalletizingInfo = null;
                 if (ringPalletizingInfoList.Any())
+                {
                     foreach (var ringPalletizing in ringPalletizingInfoList)
                     {
                         if (ringPalletizingInfo != null) continue;
@@ -5219,6 +5220,7 @@ namespace wms.service.Service
                             ringPalletizingInfo = ringPalletizing;
                         }
                     }
+                }
 
                 if (ringPalletizingInfo != null)
                 {
@@ -5245,9 +5247,8 @@ namespace wms.service.Service
                         ringPalletizingInfo = null;
                     }
                 }
-
-                if (ringPalletizingInfo == null) //如果没有码垛信息
-                {
+                else
+                {   //如果没有码垛信息
                     var bomsetGrp =
                         _billBomsetgrpRepository.GetFirst(x => x.IsStop == 0 && x.BomCode.Contains(wcsTask.MatCode));
                     if (bomsetGrp == null)
@@ -6619,7 +6620,10 @@ namespace wms.service.Service
                 return res;
             }
 
-            if (wareHosue.TypeNum == FjLocationType.RingLibrary) //环形库需要验证一下库存信息
+            var isDP = GetIsDirectPalletizing(reqDto.RobotCode);
+
+            if (wareHosue.TypeNum == FjLocationType.RingLibrary && !isDP) //环形库需要验证一下库存信息
+            {
                 foreach (var code in reqDto.TaskCode)
                 {
                     var billInvnow = _billInvnowrepository.GetSingle(x => x.HWBarCode == code);
@@ -6637,6 +6641,7 @@ namespace wms.service.Service
                         return res;
                     }
                 }
+            }
 
             #endregion 检查工字轮任务是否有效
 
@@ -6663,26 +6668,59 @@ namespace wms.service.Service
                     switch (wareHosue.TypeNum)
                     {
                         case FjLocationType.RingLibrary:
-                            if (stock == null)
+                            if (isDP)
                             {
-                                _db.RollbackTran();
-                                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
-                                res.ResMsg = $"{code}未找到库存信息";
-                                return res;
-                            }
+                                if (stock != null)
+                                {
+                                    _db.RollbackTran();
+                                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
+                                    res.ResMsg = $"{code}已有库存信息";
+                                    return res;
+                                }
 
-                            //更新库存信息
-                            _billInvnowrepository.UpdateModelColumns(
-                                x => new BillInvnow
+                                //将条码表映射到库存表
+                                stock = _mapper.Map<BillInvnow>(billInv);
+                                stock.AddTime = DateTime.Now;
+                                stock.Id = IdFactory.NewId();
+                                stock.ContGrpId = contGrpId;
+                                stock.ContGrpType = FJContGrpType.Material;
+                                stock.ContGrpBarCode = reqDto.PalletCode;
+                                stock.WarehouseId = wareHosue.Id;
+                                stock.IsFail = reqDto.IsFail;
+                                stock.FailReason = reqDto.FailReason;
+                                stock.InvStateCode = InvState.InvEcecState_BuildUp.ToString();
+
+                                if (!_billInvnowrepository.Insert(stock))
                                 {
-                                    WarehouseId = wareHosue.Id,
-                                    ContGrpId = contGrpId,
-                                    ContGrpType = FJContGrpType.Material,
-                                    ContGrpBarCode = reqDto.PalletCode,
-                                    IsFail = reqDto.IsFail,
-                                    FailReason = reqDto.FailReason
-                                },
-                                x => x.Id == stock.Id && x.InvStateCode == FJInvState.InvEcecState_BuildUp.ToString());
+                                    _db.RollbackTran();
+                                    res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
+                                    res.ResMsg = "库存信息存储失败";
+                                    return res;
+                                }
+                            }
+                            else 
+                            {
+                                if (stock == null)
+                                {
+                                    _db.RollbackTran();
+                                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
+                                    res.ResMsg = $"{code}未找到库存信息";
+                                    return res;
+                                }
+
+                                //更新库存信息
+                                _billInvnowrepository.UpdateModelColumns(
+                                    x => new BillInvnow
+                                    {
+                                        WarehouseId = wareHosue.Id,
+                                        ContGrpId = contGrpId,
+                                        ContGrpType = FJContGrpType.Material,
+                                        ContGrpBarCode = reqDto.PalletCode,
+                                        IsFail = reqDto.IsFail,
+                                        FailReason = reqDto.FailReason
+                                    },
+                                    x => x.Id == stock.Id && x.InvStateCode == FJInvState.InvEcecState_BuildUp.ToString());
+                            }
                             break;
 
                         case FjLocationType.Storage:
@@ -9035,6 +9073,28 @@ namespace wms.service.Service
 
             //return res;
         }
+
+        /// <summary>
+        ///  获取当前设备是否直接码垛
+        /// </summary>
+        /// <param name="devCode"></param>
+        /// <param name="db"></param>
+        /// <returns></returns>
+        public bool GetIsDirectPalletizing(string devCode)
+        {
+            var code = $"{devCode}DirectPalletizing";
+            var isDP = _sysconfigrepository.AsQueryable().With(SqlWith.NoLock).Single(x => x.Code == code);
+            if (isDP == null)
+            {
+                return false;
+            }
+            var isDirectPalletizing = Convert.ToInt32(isDP.SContent);
+            if (isDirectPalletizing == 0 || isDirectPalletizing != 1)
+            {
+                return false;
+            }
+            return true;
+        }
     }
 
     public static class TaslEx
@@ -9213,6 +9273,11 @@ namespace wms.service.Service
         ///     是否为半跺入库
         /// </summary>
         public bool IsItHalf { get; set; }
+
+        /// <summary>
+        ///  机械臂设备号,用于判断是否启用直接入库
+        /// </summary>
+        public string? RobotCode { get; set; }
     }
 
     public class FJGetTwoPalletDto : BaseRequest

+ 7 - 1
wms.sqlsugar/model/fj/BillRingPalletizingInfo.cs

@@ -62,5 +62,11 @@ namespace wms.sqlsugar.model.fj
         /// </summary>
         [SugarColumn(ColumnDataType = "int", IsNullable = true)]
         public int LastXYNO { get; set; }
+
+        /// <summary>
+        /// 码垛工位
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 20, IsNullable = true, ColumnDescription = "码垛工位(在直接码垛的环形库拥有此功能)")]
+        public string? MaDuoGongWei { get; set; }
     }
-}
+}