Prechádzať zdrojové kódy

重构CpController,优化服务逻辑和数据库管理

在 `CpController.cs` 中移除冗余静态锁对象,重新定义为私有静态对象,并添加多个新的 API 接口以增强功能。
在 `EnumClass.cs` 中添加多个枚举类型,扩展系统状态和类型定义。
在 `CPService.cs` 中进行代码重构,优化锁对象定义、方法实现和错误处理,增加支持自动校秤任务的新方法。
更新 `DBService.cs` 中的数据库初始化逻辑,确保新表结构(如 `BaseWeighingResult`)的创建和管理。
新增 `BaseWeighingResult.cs` 文件,定义称重结果模型类,支持称重相关业务逻辑。
林豪 左 1 týždeň pred
rodič
commit
b43a737618

+ 115 - 71
wms.api/Controllers/CpController.cs

@@ -1,8 +1,6 @@
 using AutoMapper;
-using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using Newtonsoft.Json;
-using NPOI.SS.Formula.Functions;
 using SqlSugar;
 using System.Text.RegularExpressions;
 using wms.api.Job;
@@ -31,52 +29,51 @@ namespace wms.api.Controllers
         private readonly ICPService _cpService;
         private readonly ILogger<CpController> _logger;
         private readonly IMapper _mapper;
-        static object lockerSalesDocTrans = new object();
-        static object lockerSalesBackDocTrans = new object();
-        static object lockerComPushApiResInfo = new object();
-        static object lockerStockChange = new object();
-        static object lockerMesReleaseFlag = new object();
-        
-        static object lockerStockStateChange = new object();
-        static object lockerPdaCpGroupStock = new object();   //pda空托or 物料 or 间隔板组盘
-        static object lockerPdaTrayTaskOut = new object();   //pda空托 or 间隔板出库
-        static object lockerWCS_InTaskInfo = new object();   //入库任务
-        static object lockerGetCpTunnelList = new object();   //巷道锁
-        static object lockerCpCompleteTask = new object();
-        static object lockerCpApplyStockInLoc = new object();
-        static object lockerCpManualTaskOut = new object();
-        static object lockerCpSrmPickOutCompleted = new object();
-        static object lockerMoveTask = new object();
-        static object lockerSalesDocOutTask = new object();
-        static object lockerCpSyncMaterInfoList = new object();
-        static object lockerCpCancelOrComplet = new object();
-        static object lockerCpCarryTask = new object();
-        static object lockerUpdatePuchState = new object();
-        static object lockerForceCancelTask = new object();
-        static object lockerDeleteStockInfo = new object();
-        static object lockerUpdateStockState = new object();
-        static object lockerUpdateCellState = new object();
-        static object lockerDataSwapCell = new object();
-        static object lockerDataBasePatch = new object();
-        static object lockerDataMoveCell = new object();
-        static object lockerErpCancelStock = new object();
-        static object lockerPdaStockInBack = new object();
-        static object lockerPreLockedStock = new object();
-        static object lockerMoveTaskInfo = new object();
-        static object lockerTrayPortageTask = new object();
-        static object lockerTrayPortageTaskCheck = new object();
-
-        
-        static object lockerPalletAutoInTask = new object();
-        static object lockWcsUploadInfo = new object();
-        static object lockLabellingMachine = new object();
-        static object lockerHandErrTask = new object();
-        static object lockerPalletManualMoveTask = new object();
-        static object lockerFlowDataMoveJob = new object();
-        static object lockerProductBoxDetailUploadJob = new object();
-
-       
-        Repository<cpSysJob> _sysJobrepository => new Repository<cpSysJob>();
+        private static object lockerSalesDocTrans = new object();
+        private static object lockerSalesBackDocTrans = new object();
+        private static object lockerComPushApiResInfo = new object();
+        private static object lockerStockChange = new object();
+        private static object lockerMesReleaseFlag = new object();
+
+        private static object lockerStockStateChange = new object();
+        private static object lockerPdaCpGroupStock = new object();   //pda空托or 物料 or 间隔板组盘
+        private static object lockerPdaTrayTaskOut = new object();   //pda空托 or 间隔板出库
+        private static object lockerWCS_InTaskInfo = new object();   //入库任务
+        private static object lockerGetCpTunnelList = new object();   //巷道锁
+        private static object lockerCpCompleteTask = new object();
+        private static object lockerCpApplyStockInLoc = new object();
+        private static object lockerCpManualTaskOut = new object();
+        private static object lockerCpSrmPickOutCompleted = new object();
+        private static object lockerMoveTask = new object();
+        private static object lockerSalesDocOutTask = new object();
+        private static object lockerCpSyncMaterInfoList = new object();
+        private static object lockerCpCancelOrComplet = new object();
+        private static object lockerCpCarryTask = new object();
+        private static object lockerUpdatePuchState = new object();
+        private static object lockerForceCancelTask = new object();
+        private static object lockerDeleteStockInfo = new object();
+        private static object lockerUpdateStockState = new object();
+        private static object lockerUpdateCellState = new object();
+        private static object lockerDataSwapCell = new object();
+        private static object lockerDataBasePatch = new object();
+        private static object lockerDataMoveCell = new object();
+        private static object lockerErpCancelStock = new object();
+        private static object lockerPdaStockInBack = new object();
+        private static object lockerPreLockedStock = new object();
+        private static object lockerMoveTaskInfo = new object();
+        private static object lockerTrayPortageTask = new object();
+        private static object lockerTrayPortageTaskCheck = new object();
+
+        private static object lockerPalletAutoInTask = new object();
+        private static object lockWcsUploadInfo = new object();
+        private static object lockLabellingMachine = new object();
+        private static object lockerHandErrTask = new object();
+        private static object lockerPalletManualMoveTask = new object();
+        private static object lockerFlowDataMoveJob = new object();
+        private static object lockerProductBoxDetailUploadJob = new object();
+
+        private Repository<cpSysJob> _sysJobrepository => new Repository<cpSysJob>();
+
         public CpController(ICPService cpService, ILogger<CpController> logger, IMapper mapper) : base(cpService)
         {
             _cpService = cpService;
@@ -147,13 +144,13 @@ namespace wms.api.Controllers
                     {
                         if (_cpService.SyncMaterInfo(resbody.ResData))
                         {
-
                         }
                     }
                 }
             }
             return result.ToCamelCaseString();
         }
+
         /// <summary>
         /// 成品库主数据接收
         /// </summary>
@@ -164,6 +161,7 @@ namespace wms.api.Controllers
         {
             return ConcurrencyReqControl<CpSyncMaterInfoListRequest, SRes>(lockerCpSyncMaterInfoList, "CpSyncMaterInfoList", request.MatCode, request, _cpService.SyncMaterInfoList);
         }
+
         /// <summary>
         /// 销售单信息传输接口
         /// </summary>
@@ -182,6 +180,7 @@ namespace wms.api.Controllers
             //    return ComPushApiResInfo(new ComPushApiResInfoRequest() { ApiId = "SalesDocTrans", ReqId = Guid.NewGuid().ToString(), ResCode = ResponseStatusCodeEnum.Fail.GetDescription() });
             //}
         }
+
         /// <summary>
         /// 销售单下发出库任务
         /// </summary>
@@ -195,8 +194,9 @@ namespace wms.api.Controllers
                 return ConcurrencyReqControl<SalesDocOutTaskRequest, SRes>(lockerSalesDocOutTask, "SalesDocOutTask", request.SalesDoc, request, _cpService.SalesDocOutTask);
             }
         }
+
         /// <summary>
-        ///单据预锁库存(手动按钮触发) 
+        ///单据预锁库存(手动按钮触发)
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
@@ -205,6 +205,7 @@ namespace wms.api.Controllers
         {
             return ConcurrencyReqControl<PreLockedStockRequest, SRes>(lockerPreLockedStock, "PreLockedStock", request.BillCode, request, _cpService.PreLockedStock);
         }
+
         /// <summary>
         /// 销售出库信息反馈接口/呆滞料/异常料出库反馈接口
         /// </summary>
@@ -267,6 +268,7 @@ namespace wms.api.Controllers
             }
             return res;
         }
+
         /// <summary>
         /// 退售单信息传输接口
         /// </summary>
@@ -277,6 +279,7 @@ namespace wms.api.Controllers
         {
             return ConcurrencyReqControl<SalesDocTransRequest, SRes>(lockerSalesBackDocTrans, "SalesBackDocTrans", reqDto.BillCode, reqDto, _cpService.SalesBackDocTrans);
         }
+
         /// <summary>
         /// 销售退货入库信息反馈接口
         /// </summary>
@@ -291,6 +294,7 @@ namespace wms.api.Controllers
             SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
             return resbody;
         }
+
         /// <summary>
         /// 销售余料回库入库信息反馈接口
         /// </summary>
@@ -305,6 +309,7 @@ namespace wms.api.Controllers
             SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
             return resbody;
         }
+
         /// <summary>
         /// 接收回馈接口
         /// </summary>
@@ -318,6 +323,7 @@ namespace wms.api.Controllers
                 return JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(reqDto));
             }
         }
+
         /// <summary>
         /// 呆滞料/异常料出库接口
         /// </summary>
@@ -328,6 +334,7 @@ namespace wms.api.Controllers
         {
             return ConcurrencyReqControl<ErrorMaterialStockOutRequest, SRes>(lockerComPushApiResInfo, "CpErrorMaterialStockOut", reqDto.BillCode, reqDto, _cpService.ErrorMaterialStockOut);
         }
+
         /// <summary>
         /// 库存改判
         /// </summary>
@@ -347,8 +354,9 @@ namespace wms.api.Controllers
         [HttpPost]
         public SRes MesReleaseFlag(MesReleaseFlagDto reqDto)
         {
-            lock(lockerMesReleaseFlag) { return _cpService.MesReleaseFlag(reqDto); }
+            lock (lockerMesReleaseFlag) { return _cpService.MesReleaseFlag(reqDto); }
         }
+
         /// <summary>
         /// 改判反馈接口
         /// </summary>
@@ -435,6 +443,7 @@ namespace wms.api.Controllers
             }
             return res;
         }
+
         /// <summary>
         /// 实时库存查询接口
         /// </summary>
@@ -445,6 +454,7 @@ namespace wms.api.Controllers
         {
             return _cpService.GetCurStockList(reqDto);
         }
+
         /// <summary>
         /// 移库货位上报MES接口
         /// </summary>
@@ -516,6 +526,7 @@ namespace wms.api.Controllers
             }
             return res;
         }
+
         /// <summary>
         /// 放行/冻结单传输接口
         /// </summary>
@@ -526,6 +537,7 @@ namespace wms.api.Controllers
         {
             return ConcurrencyReqControl<StockStateChangeRequest, StockStateChangeResponse>(lockerStockStateChange, "CpStockStateChange", reqDto.BillCode, reqDto, _cpService.StockStateChange);
         }
+
         /// <summary>
         /// 同步箱号信息(人工入库使用)
         /// </summary>
@@ -554,6 +566,7 @@ namespace wms.api.Controllers
             }
             return res;
         }
+
         /// <summary>
         /// 成品入库反馈接口
         /// </summary>
@@ -590,6 +603,7 @@ namespace wms.api.Controllers
 
             return res;
         }
+
         /// <summary>
         /// ERP取消出库
         /// </summary>
@@ -605,6 +619,7 @@ namespace wms.api.Controllers
         }
 
         #region 手持机操作功能
+
         /// <summary>
         /// PDA 组盘绑定(只组盘)
         /// </summary>
@@ -638,11 +653,11 @@ namespace wms.api.Controllers
                             return new SRes() { ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(), ResMsg = tt.ResMsg };
                         }
                     }
-
                 }
                 return _cpService.PdaGroupStock(request);
             }
         }
+
         /// <summary>
         /// 空托盘 or 间隔板出库
         /// </summary>
@@ -656,6 +671,7 @@ namespace wms.api.Controllers
                 return _cpService.PdaTrayTaskOut(request);
             }
         }
+
         /// <summary>
         /// PDA 退料
         /// </summary>
@@ -669,9 +685,11 @@ namespace wms.api.Controllers
                 return _cpService.PdaStockInBack(request);
             }
         }
-        #endregion
+
+        #endregion 手持机操作功能
 
         #region WCS调用
+
         /// <summary>
         /// 获取入库任务
         /// </summary>
@@ -682,6 +700,7 @@ namespace wms.api.Controllers
         {
             return ConcurrencyReqControl<TrayGroupOutRequest, SRes>(lockerWCS_InTaskInfo, "WCS_InTaskInfo" + request.Equip, request.Code, request, _cpService.InsertWCSInTask);
         }
+
         /// <summary>
         /// WCS信息上传(称重)
         /// </summary>
@@ -709,6 +728,7 @@ namespace wms.api.Controllers
                 return _cpService.LabellingMachine(request);
             }
         }
+
         /// <summary>
         /// 获取巷道
         /// </summary>
@@ -722,6 +742,7 @@ namespace wms.api.Controllers
                 return _cpService.GetCpTunnelPriorityList(reqEntity);
             }
         }
+
         /// <summary>
         /// 分配货位
         /// </summary>
@@ -732,6 +753,7 @@ namespace wms.api.Controllers
         {
             return ConcurrencyReqControl<CpApplyStockInLocRequest, SRes<CpApplyStockInLocResponse>>(lockerCpApplyStockInLoc, "CpApplyStockInLoc", "分配货位" + request.TunnelNum, request, _cpService.CpApplyStockInLoc);
         }
+
         /// <summary>
         /// 完成任务
         /// </summary>
@@ -751,6 +773,7 @@ namespace wms.api.Controllers
                 return res;
             }
         }
+
         /// <summary>
         /// 堆垛机出库放货完成
         /// </summary>
@@ -764,6 +787,7 @@ namespace wms.api.Controllers
                 return _cpService.CpSrmPickOutCompleted(request);
             }
         }
+
         /// <summary>
         /// 移库任务申请
         /// </summary>
@@ -777,6 +801,7 @@ namespace wms.api.Controllers
                 return _cpService.WcsMoveTask(request);
             }
         }
+
         /// <summary>
         /// 修改任务状态
         /// </summary>
@@ -790,6 +815,7 @@ namespace wms.api.Controllers
                 return _cpService.UpdateTaskState(request);
             }
         }
+
         /// <summary>
         /// 手动移库确定
         /// </summary>
@@ -817,6 +843,7 @@ namespace wms.api.Controllers
                 return _cpService.CpCancelTaskVerify(request);
             }
         }
+
         /// <summary>
         /// 成品库 执行任务(开放wcs调用,前端不调用)
         /// </summary>
@@ -830,7 +857,8 @@ namespace wms.api.Controllers
                 return _cpService.CpCarryTaskInfo(request);
             }
         }
-        #endregion
+
+        #endregion WCS调用
 
         /// <summary>
         /// 手动出库确定
@@ -888,10 +916,11 @@ namespace wms.api.Controllers
         [HttpPost]
         public SRes CpWareCellInit(int row, int col, int deot, int rowcount, int tun)
         {
-            return _cpService.CpWareCellInit(row,col, deot, rowcount, tun);
+            return _cpService.CpWareCellInit(row, col, deot, rowcount, tun);
         }
 
         #region 异常处理
+
         /// <summary>
         /// 强制取消任务
         /// </summary>
@@ -905,6 +934,7 @@ namespace wms.api.Controllers
                 return _cpService.ForceCancelTask(request);
             }
         }
+
         /// <summary>
         /// 删除库存信息
         /// </summary>
@@ -918,6 +948,7 @@ namespace wms.api.Controllers
                 return _cpService.DeleteStockInfo(request);
             }
         }
+
         /// <summary>
         /// 修改库存状态
         /// </summary>
@@ -931,6 +962,7 @@ namespace wms.api.Controllers
                 return _cpService.UpdateStockState(request);
             }
         }
+
         /// <summary>
         /// 修改货位状态
         /// </summary>
@@ -944,6 +976,7 @@ namespace wms.api.Controllers
                 return _cpService.UpdateCellState(request);
             }
         }
+
         /// <summary>
         /// 货位数据互换
         /// </summary>
@@ -957,6 +990,7 @@ namespace wms.api.Controllers
                 return _cpService.DataSwapCell(request);
             }
         }
+
         /// <summary>
         /// 补数据
         /// </summary>
@@ -970,6 +1004,7 @@ namespace wms.api.Controllers
                 return _cpService.DataBasePatch(request);
             }
         }
+
         [HttpPost]
         public SRes UpdatePurchState(UpdatePurchStateRequestdto request)
         {
@@ -978,6 +1013,7 @@ namespace wms.api.Controllers
                 return _cpService.UpdatePurchState(request);
             }
         }
+
         /// <summary>
         /// 货位数据转移
         /// </summary>
@@ -991,6 +1027,7 @@ namespace wms.api.Controllers
                 return _cpService.DataMoveCell(request);
             }
         }
+
         /// <summary>
         /// 修改任务目标地址
         /// </summary>
@@ -1005,10 +1042,10 @@ namespace wms.api.Controllers
             }
         }
 
-
-        #endregion
+        #endregion 异常处理
 
         #region 定时器
+
         /// <summary>
         /// 启用job
         /// </summary>
@@ -1028,6 +1065,7 @@ namespace wms.api.Controllers
             JobScheduler.Start(sysjob.Code, Type.GetType("wms.api.Job.PostJob"), sysjob.CronExpression);
             return res.ToCamelCaseString();
         }
+
         /// <summary>
         /// 执行job
         /// </summary>
@@ -1081,6 +1119,7 @@ namespace wms.api.Controllers
             }
             return new List<dto.response.hj.SysJobDto>();
         }
+
         /// <summary>
         /// 获取执行状态
         /// </summary>
@@ -1108,9 +1147,11 @@ namespace wms.api.Controllers
                 return "Stop";
             }
         }
-        #endregion
+
+        #endregion 定时器
 
         #region 时效调用接口
+
         /// <summary>
         /// 托盘搬运任务
         /// </summary>
@@ -1121,10 +1162,9 @@ namespace wms.api.Controllers
         {
             lock (lockerPalletAutoInTask)
             {
-               return  _cpService.TrayPortageTask(request);
+                return _cpService.TrayPortageTask(request);
             }
             //return ConcurrencyReqControl<TrayGroupOutRequest, SRes>(lockerTrayPortageTask, "TrayPortageTask", request.Equip, request, _cpService.TrayPortageTask);
-   
         }
 
         /// <summary>
@@ -1156,7 +1196,8 @@ namespace wms.api.Controllers
             }
             //return ConcurrencyReqControl<PalletAutoTaskRequest, SRes>(lockerPalletAutoInTask, "PalletAutoInTask", request.Equip, request, _cpService.PalletAutoInTask);
         }
-        #endregion
+
+        #endregion 时效调用接口
 
         /// <summary>
         /// 成品整箱上传接口
@@ -1228,7 +1269,6 @@ namespace wms.api.Controllers
                                 itemreq.OvcFlag = item.First().OvcFlag.ToString();
                             }
 
-
                             var laydetail = new LayerListItem()
                             {
                                 LayerCode = item.Key.Layer.ToString().PadLeft(2, '0'),
@@ -1274,7 +1314,6 @@ namespace wms.api.Controllers
 
                 return res;
             }
-           
         }
 
         /// <summary>
@@ -1334,7 +1373,6 @@ namespace wms.api.Controllers
                         itemreq.OvcFlag = item.First().OvcFlag.ToString();
                     }
 
-
                     var laydetail = new LayerListItem()
                     {
                         LayerCode = item.Key.Layer.ToString().PadLeft(2, '0'),
@@ -1355,12 +1393,10 @@ namespace wms.api.Controllers
                 if (resbody.ResCode == 200)
                 {
                     _logger.LogInformation("推送箱号:" + itemreq.HuNr + "反馈:" + resbody.ResMsg);
-
                 }
                 else
                 {
                     _logger.LogInformation("推送箱号:" + itemreq.HuNr + "反馈:" + resbody.ResMsg);
-
                 }
             }
 
@@ -1417,7 +1453,7 @@ namespace wms.api.Controllers
                             _cpService.UpdateBoxFail(item.Key);
                             _cpService.UpdateBoxItemsModelColumns(new sqlsugar.model.UpdateModelColumns<cpBoxItems>()
                             {
-                                Columns = it => new cpBoxItems { UpLoadFlag = 1, EditTime = DateTime.Now,Memo = "临时箱推送MES失败,自动设置成异常箱" },
+                                Columns = it => new cpBoxItems { UpLoadFlag = 1, EditTime = DateTime.Now, Memo = "临时箱推送MES失败,自动设置成异常箱" },
                                 WhereExpression = it => it.HuNr == item.Key
                             });
                         }
@@ -1429,14 +1465,13 @@ namespace wms.api.Controllers
                                 WhereExpression = it => it.HuNr == item.Key
                             });
                         }
-                      
                     }
                 }
-
             }
 
             return res;
         }
+
         /// <summary>
         /// 监控遗留的库存数据
         /// </summary>
@@ -1447,6 +1482,7 @@ namespace wms.api.Controllers
         {
             return _cpService.MonitorLeftStock(request);
         }
+
         /// <summary>
         /// 手动出库数据反馈(分发)
         /// </summary>
@@ -1513,7 +1549,6 @@ namespace wms.api.Controllers
             return res;
         }
 
-
         /// <summary>
         /// 成品人工口上成品码垛托盘PDA提交接口(MES调用)
         /// </summary>
@@ -1541,5 +1576,14 @@ namespace wms.api.Controllers
                 return _cpService.FlowDataMoveJob(request);
             }
         }
+
+        /// <summary>
+        /// 触发自动校秤任务
+        /// </summary>
+        /// <returns></returns>
+        public SRes TriggerAutoCalibration()
+        {
+            return _cpService.TriggerAutoCalibration();
+        }
     }
-}
+}

+ 148 - 11
wms.dto/const/EnumClass.cs

@@ -6,10 +6,9 @@ using System.Text;
 namespace wms.dto
 {
     public class EnumClass
-    { 
-
-    
+    {
     }
+
     /// <summary>
     /// 货位类型
     /// </summary>
@@ -19,15 +18,18 @@ namespace wms.dto
         /// 立库货位
         /// </summary>
         LocationType_StorageLocation = 1,
+
         /// <summary>
         /// 平库货位
         /// </summary>
         LocationType_GroudLocation = 2,
+
         /// <summary>
         /// 虚拟货位
         /// </summary>
         LocationType_VirtualLocation1 = 3,
     }
+
     /// <summary>
     /// 货位是否启用
     /// </summary>
@@ -37,11 +39,13 @@ namespace wms.dto
         /// 启用
         /// </summary>
         LocationInvoke = 0,
+
         /// <summary>
         /// 停用
         /// </summary>
         LocationStopped = 1
     }
+
     /// <summary>
     /// 货位状态
     /// </summary>
@@ -51,25 +55,28 @@ namespace wms.dto
         /// 货位空
         /// </summary>
         LocationState_Empty = 1,
+
         /// <summary>
         /// 货位有货
         /// </summary>
         LocationState_Full = 2,
+
         /// <summary>
         /// 入库锁
         /// </summary>
         LocationState_StockIn = 3,
+
         /// <summary>
         /// 出库锁
         /// </summary>
         LocationState_StockOut = 4,
+
         /// <summary>
         /// 移库锁
         /// </summary>
         LocationState_StockMove = 5,
     }
 
-
     public enum ResponseStatusCodeEnum
     {
         /// <summary>
@@ -95,6 +102,7 @@ namespace wms.dto
         /// </summary>
         [Description("参数错误")]
         ErrParam = 203,
+
         /// <summary>
         /// 语法异常
         /// </summary>
@@ -112,6 +120,7 @@ namespace wms.dto
         /// </summary>
         [Description("失败")]
         Fail = 206,
+
         /// <summary>
         /// 账号密码错误或账号不存在
         /// </summary>
@@ -130,133 +139,156 @@ namespace wms.dto
         [Description("没有传过账凭证号")]
         NotReqId = 1003,
 
-
         /// <summary>
         /// 仓库编码不存在
         /// </summary>
         [Description("仓库编码不存在")]
         WarehouseCodeNotExist = 2001,
+
         /// <summary>
         /// 容器码不能为空
         /// </summary>
         [Description("容器码不能为空")]
         ContainerCodeNotEmpty = 2002,
+
         /// <summary>
         /// 该托盘号已在库中,请检查托盘号是否贴重复
         /// </summary>
         [Description("该托盘号已在库中,请检查托盘号是否贴重复")]
         BarcodeContainerRepeat = 2003,
+
         /// <summary>
         /// 物料条码重复组盘
         /// </summary>
         [Description("物料条码重复组盘")]
         GroupStockDetailMaterialBarCodeExist = 2004,
+
         /// <summary>
         /// 物料编码信息不存在
         /// </summary>
         [Description("物料编码信息不存在")]
         MaterInfoNotExist = 2005,
+
         /// <summary>
         /// 不存在该任务
         /// </summary>
         [Description("不存在该任务")]
         WcsTaskNotExist = 2006,
+
         /// <summary>
         /// 组盘信息不存在
         /// </summary>
         [Description("组盘信息不存在")]
         StockNotExist = 2007,
+
         /// <summary>
         /// 没有可用库位
         /// </summary>
         [Description("没有可用库位")]
         NotEnoughLocation = 2008,
+
         /// <summary>
         /// 库区编码不存在
         /// </summary>
         [Description("库区编码不存在")]
         WareZoneCodeNotExist = 2009,
+
         /// <summary>
         /// 货位编码不存在
         /// </summary>
         [Description("货位编码不存在")]
         WareLocationCodeNotExist = 2010,
+
         /// <summary>
         /// 物料编码不存在
         /// </summary>
         [Description("物料编码不存在")]
         BaseMaterCodeNotExist = 2011,
+
         /// <summary>
         /// 单位编码不存在
         /// </summary>
         [Description("单位编码不存在")]
         BaseUnitCodeNotExist = 2012,
+
         /// <summary>
         /// 条码不存在
         /// </summary>
         [Description("条码不存在")]
         BaseBarcodeNotExist = 2013,
+
         /// <summary>
         /// 明细数据必须传参
         /// </summary>
         [Description("明细数据必须传参")]
         DocDetailNotExist = 2014,
-     
+
         /// <summary>
         /// 当前组盘状态不是已组盘,不允许取消
         /// </summary>
         [Description("当前组盘状态不是已组盘,不允许取消")]
         StockStateNotBuildUp = 2015,
+
         /// <summary>
         /// 当前任务是已完成或已取消状态
         /// </summary>
         [Description("当前任务是已完成或已取消状态")]
         WcsTaskStateIsComplete = 2016,
+
         /// <summary>
         /// 组盘状态是已出库或已入库
         /// </summary>
         [Description("组盘状态是已出库或已入库")]
         StockStateFail = 2017,
+
         /// <summary>
         /// 当前入库任务还未分配货位,不允许完成
         /// </summary>
         [Description("当前入库任务还未分配货位,不允许完成")]
         InTaskNotLocation = 2018,
+
         /// <summary>
         /// 当前任务不是新建状态,只能取消新建状态的任务
         /// </summary>
         [Description("当前任务不是新建状态,只能取消新建状态的任务")]
         WcsTaskStateNotCreate = 2019,
+
         /// <summary>
         /// 单据不存在
         /// </summary>
         [Description("单据不存在")]
         DocNoCodeNotExist = 2019,
+
         /// <summary>
         /// 单据状态不是新增或执行,不允许结单
         /// </summary>
         [Description("单据状态不是新增或执行,不允许结单")]
         DocumentStateNotFinish = 2020,
+
         /// <summary>
         /// 单据存在新建或执行中的任务,不允许结单
         /// </summary>
         [Description("单据存在新建或执行中的任务,不允许结单")]
         IsTaskNotFinish = 2021,
+
         /// <summary>
         /// 存在进行中任务,不允许解绑
         /// </summary>
         [Description("存在进行中任务,不允许解绑")]
         IsTaskNotUnbounding = 2022,
+
         /// <summary>
         /// 没有当前设备信息,请进行维护
         /// </summary>
         [Description("没有当前设备信息,请进行维护")]
         EquipInfoNotExist = 2023,
+
         /// <summary>
         /// 存在当前任务
         /// </summary>
         [Description("存在当前任务")]
         WcsTaskExist = 2024,
+
         /// <summary>
         /// 组盘状态不对,请检查当前的组盘状态
         /// </summary>
@@ -268,27 +300,32 @@ namespace wms.dto
         /// </summary>
         [Description("该接口只允许出库任务调用")]
         OnlyStockOutAvil = 2026,
+
         /// <summary>
         /// 当前单据状态不支持修改
         /// </summary>
         [Description("当前状态不支持修改")]
         StateNotUpdate = 2027,
+
         /// <summary>
         /// 库存不足
         /// </summary>
         [Description("库存不足")]
         NotEnoughStock = 2028,
+
         /// <summary>
         /// 没有传巷道号
         /// </summary>
         [Description("没有传巷道号")]
         NotTunnelNum = 2029,
+
         /// <summary>
         /// 组盘信息已存在,不允许重复组盘
         /// </summary>
         [Description("组盘信息已存在,不允许重复组盘")]
         StockInfoExist = 2030,
     }
+
     /// <summary>
     /// 单据类型
     /// </summary>
@@ -299,26 +336,31 @@ namespace wms.dto
         /// </summary>
         [Description("合金镀铜满轮入库单")]
         DocType_HJ_CopperProductStockIn = 1,
+
         /// <summary>
         /// 湿拉产线领料
         /// </summary>
         [Description("湿拉产线领料")]
-        DocType_HJ_WetLinePickMaterApply= 2,
+        DocType_HJ_WetLinePickMaterApply = 2,
+
         /// <summary>
         /// 湿拉产线退料
         /// </summary>
         [Description("湿拉产线退料单")]
         DocType_HJ_WetLineBack = 3,
+
         /// <summary>
         /// 湿拉产线余料
         /// </summary>
         [Description("湿拉产线余料单")]
         DocType_HJ_WetLineLeft = 4,
+
         /// <summary>
         /// 合金库库存改判
         /// </summary>
         [Description("合金库库存改判")]
         DocType_HJ_WetLineStockChange = 5,
+
         /// <summary>
         /// 特殊出库领料
         /// </summary>
@@ -330,29 +372,32 @@ namespace wms.dto
         /// </summary>
         [Description("湿拉入库单")]
         DocType_FJ_WetStockIn = 7,
+
         /// <summary>
         /// 合金空轮初始化入库单
         /// </summary>
         [Description("合金空轮初始化入库单")]
         DocType_HJ_EmptyContStockIn = 8,
 
-
         /// <summary>
         /// 帘线领料单
         /// </summary>
         [Description("帘线领料单")]
         DocType_FJ_CurtainProductionStockOut = 11,
+
         /// <summary>
         /// 帘线工序工单
         /// </summary>
         [Description("帘线工序工单")]
         DocType_FJ_CurtainProduction = 12,
+
         /// <summary>
         /// 一楼满轮出库
         /// </summary>
         [Description("一楼满轮出库")]
         DocType_HJ_StockOut = 13,
     }
+
     /// <summary>
     /// 盘条单据类型
     /// </summary>
@@ -363,32 +408,38 @@ namespace wms.dto
         /// </summary>
         [Description("采购到货单")]
         Purchase = 1,
+
         /// <summary>
         /// 采购退货单
         /// </summary>
         [Description("采购退货单")]
         PurReturn = 2,
+
         /// <summary>
         /// 到货重挂清单
         /// </summary>
         [Description("到货重挂清单")]
         PurError = 3,
+
         /// <summary>
         /// 生产领料单
         /// </summary>
         [Description("生产领料单")]
         DocType_PT_ProductionStockOut = 4,
+
         /// <summary>
         /// 生产退料入库单
         /// </summary>
         [Description("生产退料入库单")]
         DocType_PT_ProductionBackStockIn = 5,
+
         /// <summary>
         /// 库存改判单
         /// </summary>
         [Description("库存改判单")]
         DocType_PT_StateTrans = 6,
     }
+
     /// <summary>
     /// 成品单据类型
     /// </summary>
@@ -399,27 +450,32 @@ namespace wms.dto
         /// </summary>
         [Description("销售出货单")]
         DocType_CP_SalesDocTrans = 1,
+
         /// <summary>
         /// 销售退货入库单
         /// </summary>
         [Description("销售退货入库单")]
         DocType_CP_SalesBackDocTrans = 2,
+
         /// <summary>
         /// 呆滞料/异常料出库单
         /// </summary>
         [Description("呆滞料/异常料出库单")]
         DocType_CP_ErrorMaterialDocTrans = 3,
+
         /// <summary>
         /// 库存改判单
         /// </summary>
         [Description("库存改判单")]
         DocType_CP_StateTrans = 4,
+
         /// <summary>
         /// 放行/冻结单
         /// </summary>
         [Description("放行/冻结单")]
         DocType_CP_StockStateChangeTrans = 5,
     }
+
     /// <summary>
     /// 单据状态
     /// </summary>
@@ -430,22 +486,26 @@ namespace wms.dto
         /// </summary>
         [Description("新增")]
         DocState_Create = 1,
+
         /// <summary>
         /// 执行中
         /// </summary>
         [Description("执行中")]
         DocState_Execute = 2,
+
         /// <summary>
         /// 完成
         /// </summary>
         [Description("完成")]
         DocState_Complete = 3,
+
         /// <summary>
         /// 停止
         /// </summary>
         [Description("停止")]
         DocState_Stop = 4,
     }
+
     /// <summary>
     /// 容器类型
     /// </summary>
@@ -456,11 +516,13 @@ namespace wms.dto
         /// </summary>
         [Description("RFID")]
         ContainerType_RFID = 1,
+
         /// <summary>
         /// 工字轮条码
         /// </summary>
         [Description("Spool")]
         ContainerType_Spool = 2,
+
         /// <summary>
         /// 工字轮条码
         /// </summary>
@@ -468,7 +530,6 @@ namespace wms.dto
         ContainerType_Pallet = 3,
     }
 
-
     /// <summary>
     /// 任务类型
     /// </summary>
@@ -498,12 +559,12 @@ namespace wms.dto
         [Description("移库")]
         TransferDepot = 3,
 
-     
         /// <summary>
         /// 输送
         /// </summary>
         [Description("输送")]
         Delivery = 5,
+
         /// <summary>
         ///  空轮初始化
         /// </summary>
@@ -564,6 +625,7 @@ namespace wms.dto
         [Description("已取消")]
         Cancel = 106
     }
+
     ///// <summary>
     ///// 任务类型
     ///// </summary>
@@ -627,6 +689,7 @@ namespace wms.dto
         /// </summary>
         [Description("已组盘")]
         InvEcecState_BuildUp = 1,
+
         ///// <summary>
         ///// 入库中
         ///// </summary>
@@ -637,17 +700,20 @@ namespace wms.dto
         /// </summary>
         [Description("已入库")]
         InvEcecState_In = 3,
+
         /// <summary>
         /// 出库中
         /// </summary>
         [Description("出库中")]
         InvEcecState_OutGoing = 4,
+
         /// <summary>
         /// 已出库
         /// </summary>
         [Description("已出库")]
         InvEcecState_Out = 5,
     }
+
     /// <summary>
     ///  出库任务类型
     /// </summary>
@@ -668,6 +734,7 @@ namespace wms.dto
         /// </summary>
         半自动手动出库任务 = 2
     }
+
     /// <summary>
     /// 库存锁定状态
     /// </summary>
@@ -678,6 +745,7 @@ namespace wms.dto
         /// </summary>
         [Description("正常")]
         InvState_Normal,
+
         /// <summary>
         /// 锁定
         /// </summary>
@@ -695,41 +763,49 @@ namespace wms.dto
         /// </summary>
         [Description("默认")]
         TaskBusType_HJ_Def = 0,
+
         /// <summary>
         /// 镀铜一楼取满
         /// </summary>
         [Description("镀铜一楼取满")]
         TaskBusType_HJ_OneFloorLineStockIn = 1,
+
         /// <summary>
         /// 一楼立库出空轮
         /// </summary>
         [Description("一楼立库出空轮")]
         TaskBusType_HJ_OneFloorEmptySpoolOut = 2,
+
         /// <summary>
         /// 镀铜线补空轮
         /// </summary>
         [Description("镀铜线补空轮")]
         TaskBusType_HJ_OneFloorEmptySpoolToLine = 3,
+
         /// <summary>
         /// 手动出库
         /// </summary>
         [Description("手动出库")]
         TaskBusType_HJ_ManualOut = 4,
+
         /// <summary>
         /// 二楼空轮初始化入库
         /// </summary>
         [Description("二楼空轮初始化入库")]
         TaskBusType_HJ_EmptySpoolStockIn = 5,
+
         /// <summary>
         /// 二楼湿拉线退料回立库
         /// </summary>
         [Description("二楼湿拉线退料回立库")]
         TaskBusType_HJ_WetBack = 6,
+
         /// <summary>
         /// 二楼湿拉线余料回立库
         /// </summary>
         [Description("二楼湿拉线余料回立库")]
         TaskBusType_HJ_WetLeft = 7,
+
         /// <summary>
         /// 二楼湿拉空轮回立库
         /// </summary>
@@ -747,36 +823,43 @@ namespace wms.dto
         /// </summary>
         [Description("质检回库")]
         TaskBusType_HJ_QualityStockIn = 10,
+
         /// <summary>
         /// 其他入库
         /// </summary>
         [Description("其他入库")]
         TaskBusType_HJ_OtherStockIn = 11,
+
         /// <summary>
         /// 采购550工字轮入库
         /// </summary>
         [Description("采购550工字轮入库")]
         TaskBusType_HJ_PurchaseSpoolStockIn = 11,
+
         /// <summary>
         /// 重挂入库
         /// </summary>
         [Description("重挂入库")]
         TaskBusType_HJ_AnewStockIn = 12,
+
         /// <summary>
         /// 质检领料
         /// </summary>
         [Description("质检领料")]
         TaskBusType_HJ_QualityOut = 13,
+
         /// <summary>
         /// 呆滞料出库
         /// </summary>
         [Description("呆滞料出库")]
         TaskBusType_HJ_DullMaterOut = 14,
+
         /// <summary>
         /// 重挂出库
         /// </summary>
         [Description("重挂出库")]
         TaskBusType_HJ_AnewOut = 18,
+
         /// <summary>
         /// PDA指定出库
         /// </summary>
@@ -801,6 +884,7 @@ namespace wms.dto
         [Description("移库")]
         TaskBusType_HJ_Move = 100,
     }
+
     public enum PtTaskBusType
     {
         /// <summary>
@@ -808,42 +892,50 @@ namespace wms.dto
         /// </summary>
         [Description("质检回库")]
         TaskBusType_PT_QualityStockIn = 1,
+
         /// <summary>
         /// 手动入库
         /// </summary>
         [Description("手动入库")]
         TaskBusType_PT_ManaelStockIn = 2,
+
         /// <summary>
         /// 采购入库单
         /// </summary>
         [Description("采购入库单")]
         TaskBusType_PT_PurchaseStockIn = 3,
+
         /// <summary>
         /// 重挂入库
         /// </summary>
         [Description("重挂入库")]
         TaskBusType_PT_AnewStockIn = 4,
+
         /// <summary>
         /// 生产领料
         /// </summary>
         [Description("生产领料")]
         TaskBusType_PT_ProductionStockOut = 5,
+
         /// <summary>
         /// 生产退料
         /// </summary>
         [Description("生产退料")]
         TaskBusType_PT_ProductionBackStockIn = 6,
+
         /// <summary>
         /// 自动补架子
         /// </summary>
         [Description("自动补架子")]
         TaskBusType_PT_AotuShelf = 7,
+
         /// <summary>
         /// 移库
         /// </summary>
         [Description("移库")]
         TaskBusType_PT_Move = 100,
     }
+
     /// <summary>
     /// 成品任务业务类型
     /// </summary>
@@ -854,47 +946,68 @@ namespace wms.dto
         /// </summary>
         [Description("空托盘入库")]
         TaskBusType_CP_TrayStockIn = 1,
+
         /// <summary>
         /// 成品入库
         /// </summary>
         [Description("成品入库")]
         TaskBusType_CP_ProductStockIn = 2,
+
         /// <summary>
         /// 间隔板入库
         /// </summary>
         [Description("间隔板入库")]
         TaskBusType_CP_SpacingBoardStockIn = 3,
+
         /// <summary>
         /// 空托盘出库
         /// </summary>
         [Description("空托盘出库")]
         TaskBusType_CP_TrayStockOut = 4,
+
         /// <summary>
         /// 间隔板出库
         /// </summary>
         [Description("间隔板出库")]
         TaskBusType_CP_SpacingBoardStockOut = 5,
+
         /// <summary>
         /// 销售发货单出库
         /// </summary>
         [Description("销售发货单出库")]
         TaskBusType_CP_SalesDocStockOut = 6,
+
         /// <summary>
         /// 退料入库
         /// </summary>
         [Description("退料入库")]
         TaskBusType_CP_ProductBackStockIn = 7,
+
         /// <summary>
         /// 码垛托盘输送
         /// </summary>
         [Description("码垛托盘输送")]
         TaskBusType_CP_TrayPortage = 8,
+
+        /// <summary>
+        /// 砝码出库
+        /// </summary>
+        [Description("砝码出库")]
+        TaskBusType_CP_WeightOut = 9,
+
+        /// <summary>
+        /// 砝码入库
+        /// </summary>
+        [Description("砝码入库")]
+        TaskBusType_CP_WeightIn = 10,
+
         /// <summary>
         /// 移库
         /// </summary>
         [Description("移库")]
         TaskBusType_CP_Move = 100,
     }
+
     public enum FackbeekType
     {
         /// <summary>
@@ -902,21 +1015,25 @@ namespace wms.dto
         /// </summary>
         [Description("合金一楼满轮入库反馈")]
         InterfaceType_HJ_1F_StockIn,
+
         /// <summary>
         /// 合金二楼退料入库反馈
         /// </summary>
         [Description("合金二楼退料入库反馈")]
         InterfaceType_HJ_2F_BackStockIn,
+
         /// <summary>
         /// 合金二楼余料入库反馈
         /// </summary>
         [Description("合金二楼余料入库反馈")]
         InterfaceType_HJ_2F_LeftStockIn,
+
         /// <summary>
         /// 改判反馈
         /// </summary>
         [Description("改判反馈")]
         InterfaceType_HJ_StockChanage,
+
         /// <summary>
         /// 满轮出库反馈
         /// </summary>
@@ -931,32 +1048,38 @@ namespace wms.dto
         /// </summary>
         [Description("采购到货单入库反馈")]
         InterfaceType_PT_PurchaseStockIn,
+
         /// <summary>
         /// 采购退货出库反馈
         /// </summary>
         [Description("采购退货出库反馈")]
         InterfaceType_PT_PurchaseBack,
+
         /// <summary>
         /// 重挂反馈接口
         /// </summary>
         [Description("重挂反馈接口")]
         InterfaceType_PT_AnewStockIn,
+
         /// <summary>
         /// 改判反馈
         /// </summary>
         [Description("改判反馈")]
         StateTrans,
+
         /// <summary>
         /// 生产领料反馈
         /// </summary>
         [Description("生产领料反馈")]
         PickMat,
+
         /// <summary>
         /// 退料反馈
         /// </summary>
         [Description("退料反馈")]
         ReturnMat,
     }
+
     public enum fjFackbeekType
     {
         /// <summary>
@@ -1001,6 +1124,7 @@ namespace wms.dto
         [Description("库存改判回库反馈")]
         InterfaceType_FJ_ChanageBack,
     }
+
     /// <summary>
     /// 成品反馈类型
     /// </summary>
@@ -1011,37 +1135,44 @@ namespace wms.dto
         /// </summary>
         [Description("销售出库单反馈")]
         SalesDoc = 1,
+
         /// <summary>
         /// 改判反馈
         /// </summary>
         [Description("改判反馈")]
         StateTrans = 2,
+
         /// <summary>
         /// 呆滞料/异常料出库反馈
         /// </summary>
         [Description("呆滞料/异常料出库反馈")]
         ErrorMaterial = 3,
+
         /// <summary>
         /// 移库反馈
         /// </summary>
         [Description("移库反馈")]
         MoveCell = 4,
+
         /// <summary>
         /// 成品入库反馈
         /// </summary>
         [Description("成品入库反馈")]
         ProductStockIn = 5,
+
         /// <summary>
         /// 退料入库反馈
         /// </summary>
         [Description("退料入库反馈")]
         ProductBackStockIn = 6,
+
         /// <summary>
         /// 手动出库反馈
         /// </summary>
         [Description("手动出库反馈")]
         ManualOut = 7,
     }
+
     public enum InvInOutType
     {
         /// <summary>
@@ -1056,6 +1187,7 @@ namespace wms.dto
         [Description("出库")]
         Out = 2,
     }
+
     public enum ContGrpType
     {
         /// <summary>
@@ -1070,6 +1202,7 @@ namespace wms.dto
         [Description("出库")]
         EmptyCon = 2,
     }
+
     public enum CpContGrpType
     {
         /// <summary>
@@ -1083,12 +1216,14 @@ namespace wms.dto
         /// </summary>
         [Description("空托盘")]
         EmptyCon = 2,
+
         /// <summary>
         /// 间隔板
         /// </summary>
         [Description("间隔板")]
         Jiangeban = 3,
     }
+
     /// <summary>
     /// 移库返回
     /// </summary>
@@ -1099,11 +1234,13 @@ namespace wms.dto
         /// </summary>
         [Description("失败")]
         失败 = 0,
+
         /// <summary>
         /// 允许2升位执行
         /// </summary>
         [Description("允许2升位执行")]
         允许2升位执行 = 1,
+
         /// <summary>
         /// 执行移库任务
         /// </summary>
@@ -1149,4 +1286,4 @@ namespace wms.dto
         [Description("计划关闭")]
         计划关闭 = 5,
     }
-}
+}

+ 6 - 0
wms.service/IService/ICPService.cs

@@ -88,5 +88,11 @@ namespace wms.service.IService
         public SRes GenInventoryReport();
         SRes PalletManualMoveTask(PalletManualMoveTaskRequest request);
         SRes FlowDataMoveJob(SalesDocAutoPushRequest request);
+
+        /// <summary>
+        /// 触发自动校秤任务
+        /// </summary>
+        /// <returns></returns>
+        public SRes TriggerAutoCalibration();
     }
 }

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 139 - 98
wms.service/Service/CPService.cs


+ 5 - 3
wms.service/Service/DBService.cs

@@ -4,6 +4,7 @@ using System.Text;
 using WCS.Entity;
 using wms.service.IService;
 using wms.sqlsugar;
+using wms.sqlsugar.model.cp;
 //using WMS.BGServices.Model;
 //using WMS.BZModels;
 
@@ -132,8 +133,9 @@ namespace wms.service.Service
         }
         public void InitCpDB()
         {
-            //var db1 = SqlSugarHelper.Db.GetConnectionScopeWithAttr<cpBillPushinfo>();
-            //db1.DbMaintenance.CreateDatabase();
+            var db1 = SqlSugarHelper.Db.GetConnectionScopeWithAttr<cpBillPushinfo>();
+            db1.DbMaintenance.CreateDatabase();
+            db1.CodeFirst.InitTables<BaseWeighingResult>();
             //db1.CodeFirst.InitTables<cpBaseMatinfo>();
             //db1.CodeFirst.InitTables<cpSysConfig>();
             //db1.CodeFirst.InitTables<cpBaseMatgrp>();
@@ -165,7 +167,7 @@ namespace wms.service.Service
             //db1.CodeFirst.InitTables<cpBoxItems>();
             //db1.CodeFirst.InitTables<cpBillInventoryReport>();
 
-            
+
         }
     }
 }

+ 37 - 0
wms.sqlsugar/model/cp/BaseWeighingResult.cs

@@ -0,0 +1,37 @@
+using SqlSugar;
+
+namespace wms.sqlsugar.model.cp
+{
+    /// <summary>
+    /// 称重结果
+    /// </summary>
+    [Tenant("cp")]
+    [SugarTable("Base_WeighingResult")]
+    public partial class BaseWeighingResult : BaseModel
+    {
+        /// <summary>
+        /// 标准重量
+        /// </summary>
+        public decimal StandardWeight;
+
+        /// <summary>
+        /// 称重重量
+        /// </summary>
+        public decimal MeasuredWeight;
+
+        /// <summary>
+        /// 偏差上限
+        /// </summary>
+        public decimal UpperDeviationLimit;
+
+        /// <summary>
+        /// 偏差下限
+        /// </summary>
+        public decimal LowerDeviationLimit;
+
+        /// <summary>
+        /// 是否超限
+        /// </summary>
+        public bool IsOutOfTolerance;
+    }
+}

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov