jinxin
2025-06-05 8ad8eea3e7d876fd996130f40a17ed47d794236a
码盘入库任务取消降量
5个文件已修改
51 ■■■■■ 已修改文件
.vs/VSWorkspaceState.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/slnx.sqlite 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/api/MoboxController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
C#/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/VSWorkspaceState.json
@@ -2,6 +2,6 @@
  "ExpandedNodes": [
    ""
  ],
  "SelectedNode": "\\E:\\项目\\Weili",
  "SelectedNode": "\\E:\\项目\\Git\\银川威力二期",
  "PreviewInSolutionExplorer": false
}
.vs/slnx.sqlite
Binary files differ
C#/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs
@@ -3156,6 +3156,7 @@
                                            S_ITEM_NAME = itemName.S_ITEM_NAME,
                                            S_ITEM_CODE = a.itemCode,
                                            S_BATCH_NO = a.batchNo,
                                            S_BS_NO=a.inWorkNo,
                                            S_OWNER = a.factoryCode,
                                            S_ERP_WH_CODE = a.stockLocation,
                                            F_QTY = a.qty,
C#/HH.WCS.Mobox3.WeiLi/api/MoboxController.cs
@@ -40,7 +40,7 @@
                        LocationHelper.UnLockLoc(task.S_START_LOC);
                        LocationHelper.UnLockLoc(task.S_END_LOC);
                        LocationHelper.UnLockLoc(wmsTask.S_END_LOC);
                        TaskProcess.Reducequantity(wmsTask);
                        result.resultMsg = "任务等待,直接取消";
                    }
                    else if (task.N_B_STATE != 3 && task.N_B_STATE != 4)
C#/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs
@@ -51,6 +51,7 @@
        /// <param name="mst"></param>
        internal static void CacheBitCancelUpdate(WCSTask mst)
        {
            LogHelper.Info($"任务取消 任务调度类型{mst.S_SCHEDULE_TYPE}");
            var db = new SqlHelper<object>().GetInstance();
            //任务取消,取货完成前的,起点的loadingCount和终点unLoadingCount都清除,取货完成的只处理终点
            if (mst.S_SCHEDULE_TYPE == "WCS")
@@ -90,8 +91,7 @@
                {
                    db.Updateable<Location>().SetColumns(it => new Location() { N_CURRENT_NUM = 0 }).Where(a => a.S_CODE == mst.S_START_LOC).ExecuteCommand();
                }
                db.Deleteable<LocCntrRel>().Where(a => a.S_CNTR_CODE == mst.S_CNTR_CODE).ExecuteCommand();
                db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == mst.S_CNTR_CODE).ExecuteCommand();
                LocationHelper.UnLockLoc(mst.S_START_LOC);
                LocationHelper.UnLockLoc(mst.S_END_LOC);
@@ -99,12 +99,52 @@
                if (wmsTask != null)
                {
                    LocationHelper.UnLockLoc(wmsTask.S_END_LOC);
                    Reducequantity(wmsTask);
                }
                db.Deleteable<LocCntrRel>().Where(a => a.S_CNTR_CODE == mst.S_CNTR_CODE).ExecuteCommand();
                db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == mst.S_CNTR_CODE).ExecuteCommand();
            }
        }
        public static void Reducequantity(WMSTask wmsTask)
        {
            var db = new SqlHelper<object>().GetInstance();
            if (wmsTask.S_OP_DEF_NAME == "码盘入库")
            {
                //降入库单明细的分配量
                var itemlist = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == wmsTask.S_CNTR_CODE).ToList();
                if (itemlist.Count > 0)
                {
                    LogHelper.Info($"查找到物料明细{itemlist.Count}条");
                    foreach (var item in itemlist)
                    {
                        var exp = Expressionable.Create<TN_Inbound_Detail>();
                        exp.And(it => it.S_IO_NO == item.S_BS_NO);
                        exp.And(it => it.N_BS_ROW_NO == item.S_WU);
                        exp.And(it => it.S_ITEM_CODE == item.S_ITEM_CODE);
                        exp.AndIF(!string.IsNullOrEmpty(item.S_BATCH_NO), it => it.S_BATCH_NO == item.S_BATCH_NO);
                        exp.AndIF(!string.IsNullOrEmpty(item.S_ERP_WH_CODE), it => it.S_ERP_WH_CODE == item.S_ERP_WH_CODE);
                        exp.AndIF(!string.IsNullOrEmpty(item.S_OWNER), it => it.S_OWNER == item.S_OWNER);
                        exp.AndIF(!string.IsNullOrEmpty(item.S_SUPPLIER_NO), it => it.S_SUPPLIER_NO == item.S_SUPPLIER_NO);
                        var InWorkOrder = db.Queryable<TN_Inbound_Detail>().Where(exp.ToExpression()).First();
                        InWorkOrder.F_ACC_B_QTY = InWorkOrder.F_ACC_B_QTY - item.F_QTY;
                        db.Updateable(InWorkOrder).UpdateColumns(it => new { it.F_ACC_B_QTY }).ExecuteCommand();
                    }
                }
                else
                {
                    LogHelper.Info($"未找到托盘{wmsTask.S_CNTR_CODE}的物料明细");
                }
            }
            else
            {
                LogHelper.Info($"作业类型为{wmsTask.S_OP_DEF_NAME} 无须降量");
            }
        }
        /// <summary>
@@ -190,6 +230,8 @@
                            mst.S_ERR_LOC = "";
                            db.Updateable(mst).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH, a.S_START_LOC, a.S_START_AREA, a.S_START_WH, a.S_ERR_LOC }).ExecuteCommand();
                            TaskProcess.Reducequantity(wmsTask);
                            //NDCApi.ChangeOrderParam(mst.S_CODE, 1, startLoc.S_AGV_SITE);
                            //NDCApi.ChangeOrderParam(mst.S_CODE, 2, endLoc.S_AGV_SITE);
                            //NDCApi.ChangeOrderParam(mst.S_CODE, 4, "0");