点对点任务增加优先级、人工拆盘入库物料状态改为待检、取消物料的混合状态、增加一级料、二级料状态
4个文件已修改
126 ■■■■ 已修改文件
api/ApiHelper.cs 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiModel.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/TN_CG_Detail.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wms/LocationHelper.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiHelper.cs
@@ -188,10 +188,26 @@
                            Where(o => o.S_AREA_CODE == Settings.Areas[2] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0).
                            OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//查询合适的终点货位
                }
                else if (model.cgState == 6)//一级料二级料回库
                {
                    cG_Detail.N_ITEM_STATE = 6;
                    cG_Detail.S_ITEM_STATE = "一级料";
                    endLoc = db.Queryable<TN_Location>().
                            Where(o => o.S_AREA_CODE == Settings.Areas[2] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0).
                            OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//查询合适的终点货位
                }
                else if (model.cgState == 7)//一级料二级料回库
                {
                    cG_Detail.N_ITEM_STATE = 7;
                    cG_Detail.S_ITEM_STATE = "二级料";
                    endLoc = db.Queryable<TN_Location>().
                            Where(o => o.S_AREA_CODE == Settings.Areas[2] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "无" && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0).
                            OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//查询合适的终点货位
                }
                else
                {
                    result.resultCode = 6;
                    result.resultMsg = $"物料状态只能为0、2、4、5,如果为其他值,则不处理,0合格,2不合格,4技术合格,5混合";
                    result.resultMsg = $"物料状态只能为0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料,如果为其他值,则不处理";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
@@ -1460,7 +1476,7 @@
                if (model.new_IsOK == model.old_IsOK)
                {
                    result.resultCode = 19;
                    result.resultMsg = $"人工拆盘入库,物料需要一个合格一个不合格";
                    result.resultMsg = $"人工拆盘入库,物料需要一个待检一个不合格";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
@@ -1503,7 +1519,6 @@
                var startLoc_New = db.Queryable<TN_Location>().
                    First(b => b.S_CODE == model.new_StartLoc && b.N_CURRENT_NUM == 0 && b.S_AREA_CODE == Settings.Areas[5] && b.N_LOCK_STATE == 0 && b.S_LOCK_STATE == "无");
                if (startLoc_New == null)
                {
@@ -1583,7 +1598,7 @@
                if (endLoc_Ok == null)
                {
                    result.resultCode = 10;
                    result.resultMsg = $"合格的物料未找到合适的称重终点货位{weightPoint}";
                    result.resultMsg = $"待检的物料未找到合适的称重终点货位{weightPoint}";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
@@ -1591,7 +1606,7 @@
                if (endLoc_NG == null)
                {
                    result.resultCode = 16;
                    result.resultMsg = $"不合格的物料未找到合适的回炉区终点货位{Settings.Areas[8]}";
                    result.resultMsg = $"不合格的物料未找到合适的拆盘不合格区终点货位{Settings.Areas[8]}";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
@@ -1609,7 +1624,7 @@
                    fromArea = startLoc_New.S_AREA_CODE,
                    to = (model.new_IsOK == 2) ? endLoc_NG.S_CODE : endLoc_Ok.S_CODE,
                    toArea = (model.new_IsOK == 2) ? endLoc_NG.S_AREA_CODE : endLoc_Ok.S_AREA_CODE,
                    taskType = (model.new_IsOK == 2) ? "人工拆盘回炉" : "人工拆盘回库",
                    taskType = (model.new_IsOK == 2) ? "人工拆盘回不合格区" : "人工拆盘回库",
                    pri = 3,
                    cntrInfo = model.new_CntIds,
                    spec = cG_new_Detail_Ins.S_SPE,
@@ -1624,7 +1639,7 @@
                    fromArea = startLoc_Old.S_AREA_CODE,
                    to = (model.old_IsOK == 2) ? endLoc_NG.S_CODE : endLoc_Ok.S_CODE,
                    toArea = (model.old_IsOK == 2) ? endLoc_NG.S_AREA_CODE : endLoc_Ok.S_AREA_CODE,
                    taskType = (model.old_IsOK == 2) ? "人工拆盘回炉" : "人工拆盘回库",
                    taskType = (model.old_IsOK == 2) ? "人工拆盘回不合格区" : "人工拆盘回库",
                    pri = 3,
                    cntrInfo = model.old_CntId,
                    spec = cG_old_Detail.S_SPE,
@@ -1795,10 +1810,10 @@
            {
                var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc);
                
                if(!(startLoc != null && startLoc.N_CURRENT_NUM > 0 && startLoc.N_LOCK_STATE == 0 && startLoc.S_LOCK_STATE == "无"))
                if(!(startLoc != null  && startLoc.N_LOCK_STATE == 0 && startLoc.S_LOCK_STATE == "无"))
                {
                    result.resultCode = 1;
                    result.resultMsg = $"起始位置{model.startLoc}不满足条件:startLoc != null && startLoc.N_CURRENT_NUM > 0 && startLoc.N_LOCK_STATE == 0 && startLoc.S_LOCK_STATE == 无";
                    result.resultMsg = $"起始位置{model.startLoc}不满足条件:startLoc != null && startLoc.N_LOCK_STATE == 0 && startLoc.S_LOCK_STATE == 无";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
@@ -1812,9 +1827,30 @@
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                var startLocCnt = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc);
                
                var tn_Task = new TN_Task()
                {
                    S_CODE = WCSHelper.GenerateTaskNo(),
                    S_START_AREA = startLoc.S_AREA_CODE,
                    S_END_AREA = endLoc.S_AREA_CODE,
                    S_START_LOC = startLoc.S_CODE,
                    S_END_LOC = endLoc.S_CODE,
                    S_TYPE = "点对点",
                    N_PRIORITY = model.priority,
                    N_SCHEDULE_TYPE = 1,
                    N_B_STATE = 0
                };
                startLoc.N_LOCK_STATE  = 2;
                startLoc.S_LOCK_STATE = "出库锁";
                startLoc.N_CURRENT_NUM = 1;
                endLoc.N_LOCK_STATE = 1;
                endLoc.S_LOCK_STATE = "入库锁";
                using (var tran = db.Ado.UseTran())
                {
                if (startLocCnt == null)
                {
                    startLocCnt = new TN_Loc_Container()
@@ -1822,14 +1858,22 @@
                        S_LOC_CODE = model.startLoc,
                        S_CNTR_CODE = Guid.NewGuid().ToString("D"),
                    };
                    db.Insertable<TN_Loc_Container>(startLocCnt).ExecuteCommand();
                        if (db.Insertable<TN_Loc_Container>(startLocCnt).ExecuteCommand() <= 0)
                        {
                            tran.RollbackTran();
                            result.resultCode = 3;
                            result.resultMsg = $"插入TN_Loc_Container表失败,货位:{model.startLoc}";
                            LogHelper.Info(result.resultMsg);
                            return result;
                        }
                }
                //创建点对点任务
                if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, "点对点", 3, startLocCnt.S_CNTR_CODE))//创建搬送任务,起点终点容器
                {
                    LocationHelper.LockLoc(startLoc.S_CODE, 2);//起点出库锁,
                    LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁
                    tn_Task.S_CNTR_CODE = startLocCnt.S_CNTR_CODE;
                    if (db.Insertable<TN_Task>(tn_Task).ExecuteCommand() > 0 &&
                        db.Updateable<TN_Location>(startLoc).ExecuteCommand() > 0 &&
                        db.Updateable<TN_Location>(endLoc).ExecuteCommand() > 0
                        ){
                    LogHelper.Info($"生成点对点任务成功,容器号{startLocCnt.S_CNTR_CODE},起点{startLoc.S_CODE},终点{endLoc.S_CODE}");
                    Task task1 = Task.Run(() =>
@@ -1840,7 +1884,7 @@
                    var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == startLocCnt.S_CNTR_CODE);
                    Task task27 = Task.Run(() =>
                    {
                        if (endLoc.S_AREA_CODE == Settings.Areas[2] && cginfo != null)
                            if (endLoc.S_AREA_CODE == Settings.Areas[2] && cginfo != null) //插入WMS库存明细
                        {
                            var target = new TN_InventoryM()
                            {
@@ -1864,6 +1908,7 @@
                        }
                    });
                        tran.CommitTran();
                    result.resultCode = 0;
                    result.resultMsg =  "成功";
                    LogHelper.Info($"生成点对点失败,容器号{ startLocCnt.S_CNTR_CODE},起点{startLoc.S_CODE},终点{endLoc.S_CODE}");
@@ -1871,12 +1916,13 @@
                }
                else
                {
                        tran.RollbackTran();
                    result.resultCode = 9;
                    result.resultMsg = $"生成点对点失败,容器号{ startLocCnt.S_CNTR_CODE},起点{startLoc.S_CODE},终点{endLoc.S_CODE}";
                    LogHelper.Info(result.resultMsg);
                    return result;
                }
                }
            }
            catch (Exception ex)
            {
api/ApiModel.cs
@@ -431,10 +431,18 @@
        {
            public string old_CntId { get; set; }//旧容器ID,被拆的
            public string old_StartLoc { get; set; }//旧容器的起点
            public int old_IsOK { get; set; }//旧容器ID,旧容器的货品的0合格1不合格
            /// <summary>
            /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料
            /// </summary>
            public int old_IsOK { get; set; }//旧容器ID,旧容器的货品的
            public string new_CntIds { get; set; }//拆后的新容器ID
            public string new_StartLoc { get; set; }//新容器ID起点
            public int new_IsOK { get; set; }//新容器ID的货品的0合格1不合格?
            /// <summary>
            /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料
            /// </summary>
            public int new_IsOK { get; set; }//新容器ID的货品的
            public string staff { get; set; } = "None";//操作人
            public string shift { get; set; } = "None";//班次
        }
@@ -452,6 +460,7 @@
        {
            public string startLoc { get; set; }//起点
            public string endLoc { get; set; }//终点
            public int priority { get; set; }//优先级
            public string staff { get; set; } = "None";//操作人
            public string shift { get; set; } = "None";//班次
        }
models/TN_CG_Detail.cs
@@ -27,12 +27,12 @@
        public string S_SPE { get; set; }//货品规格
        /// <summary>
        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合
        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料
        /// </summary>
        public string S_ITEM_STATE { get; set; }//货品状态
        /// <summary>
        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合
        ///0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料
        /// </summary>
        public int N_ITEM_STATE { get; set; }//货品状态_字典
        public string S_BATCH_NO { get; set; }//批次号
wms/LocationHelper.cs
@@ -516,6 +516,11 @@
            }
        }
        /// <summary>
        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料
        /// </summary>
        /// <param name="state"></param>
        /// <returns></returns>
        public static string GetStrByOk(int state)
        {
            if (state == 0)
@@ -529,6 +534,26 @@
            if (state == 2)
            {
                return "不合格";
            }
            if (state == 3)
            {
                return "过期";
            }
            if (state == 4)
            {
                return "技术合格";
            }
            if (state == 5)
            {
                return "混合";
            }
            if (state == 6)
            {
                return "一级料";
            }
            if (state == 7)
            {
                return "二级料";
            }
            return "待检";
        }
@@ -580,7 +605,7 @@
        public string rfId { get; set; }//容器号
        /// <summary>
        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合
        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合,6一级料、7二级料
        /// </summary>
        public int cgState { get; set; }//物料状态