zhao
2021-07-07 2fdf959ac739edd6de84aa8053b8b9683dce8e8b
HH.WMS.BLL/External/WmsApiBaseBLL.cs
@@ -1512,16 +1512,23 @@
            #endregion
            string tno = executeStatePara.transportTask.CN_S_TASK_NO.Trim();
            string tno = executeStatePara.transportTask.CN_S_TASK_NO;
            if (tno.IndexOf('_') > 0)
            {
                tno = tno.Split('_')[0];
                tno = tno.Substring(tno.IndexOf("_") + 1);
            }
            // 获取主任务
            var task = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetSingleEntity(new
            {
                CN_S_TASK_NO = tno
            });
            Log.Detail(logPara, "获取主任务:任务编号: " + tno);
            // mes任务
            var mes_task = BLLCreator.CreateDapper<TN_MES_TASK>().GetSingleEntity(new
            {
                task_no = task.CN_S_EXT1
            });
            Log.Detail(logPara, "获取MES任务:任务编号: " + task.CN_S_EXT1);
            return UseTransaction(trans =>
            {
@@ -1536,119 +1543,40 @@
                }, new { executeStatePara.transportTask.CN_S_TASK_NO }, trans);
                Log.Detail(logPara, "更新任务状态-任务号:" + executeStatePara.transportTask.CN_S_TASK_NO + "状态为:" + executeStatePara.taskState);
                //立库任务   子任务完成时,需要同步处理主任务
                string taskNo = executeStatePara.transportTask.CN_S_TASK_NO;
                //立库任务   子任务完成时,需要同步处理主任务
                if (taskNo.IndexOf('_') > 0)
                {
                    string fatherNo = taskNo.Substring(0, taskNo.IndexOf("_"));
                    string childNo = taskNo.Substring(taskNo.IndexOf("_") + 1);
                    #region 海潮中策
                    // 半成品满托入库流程
                    if (task.CN_S_EXT1 == BusinessTypeConstants.BCP_MTRK)
                    {
                        // 空托出库第一条子任务
                        if (executeStatePara.transportTask.CN_S_EXT2 == "ktck_sub_1")
                        {
                            // 接驳位状态改为:满
                            CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
                            {
                                CN_S_LOCATION_STATE = Constants.Location_State_Full
                            }, new
                            {
                                CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
                            }, trans);
                            // 立库货位状态改为:空
                            CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
                            {
                                CN_S_LOCATION_STATE = Constants.Location_State_Empty
                            }, new
                            {
                                CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
                            }, trans);
                            Log.Detail(logPara, "子任务完成-任务号:" + executeStatePara.transportTask.CN_S_TASK_NO + ",更新接驳位状态-货位号:" + executeStatePara.transportTask.CN_S_END_BIT + "状态为:" + Constants.Location_State_Full + ",更新立库状态-货位号:" + executeStatePara.transportTask.CN_S_START_BIT + "状态为:" + Constants.Location_State_Empty);
                        }
                        // 空托出库第二条子任务
                        if (executeStatePara.transportTask.CN_S_EXT2 == "ktck_sub_2")
                        {
                            // 主任务状态置为完成部分
                            // 主任务的子任务标识置空
                            // 主任务阶段置为半成品-满托入库
                            CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
                            {
                                CN_S_STATE = Constants.TaskState_CompletePart,
                                CN_S_EXT2 = "",
                                CN_S_EXT3 = TaskSectionConstants.BCP_MTRK
                            }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
                            // 接驳位状态改为:正常
                            CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
                            {
                                CN_S_LOCATION_STATE = Constants.Location_State_Normal
                            }, new
                            {
                                CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT
                            }, trans);
                            // 准备点货位状态改为:正常
                            CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
                            {
                                CN_S_LOCATION_STATE = Constants.Location_State_Normal
                            }, new
                            {
                                CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
                            }, trans);
                            // 终点货位状态改为:满
                            CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
                            {
                                CN_S_LOCATION_STATE = Constants.Location_State_Full
                            }, new
                            {
                                CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
                            }, trans);
                            Log.Detail(logPara, "子任务完成-任务号:" + executeStatePara.transportTask.CN_S_TASK_NO + ",更新接驳位状态-货位号:" + task.CN_S_CONNECT_BIT + "状态为:" + Constants.Location_State_Normal + ",更新准备点状态-货位号:" + executeStatePara.transportTask.CN_S_START_BIT + "状态为:" + Constants.Location_State_Normal + ",更新终点状态-货位号:" + executeStatePara.transportTask.CN_S_END_BIT + "状态为:" + Constants.Location_State_Full);
                            // 在主循环中创建后继任务
                        }
                        // 满托入库第一条子任务
                        if (executeStatePara.transportTask.CN_S_EXT2 == "bcp_mtrk_sub_1")
                        {
                            // 主任务状态置为完成部分
                            // 主任务的子任务标识置为bcp_mtrk_sub_1_completed
                            CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
                            {
                                CN_S_STATE = Constants.TaskState_CompletePart,
                                CN_S_EXT2 = "bcp_mtrk_sub_1_completed"
                            }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
                            // 在主循环中创建后继任务
                        }
                        // 满托入库第二条子任务
                        if (executeStatePara.transportTask.CN_S_EXT2 == "bcp_mtrk_sub_2")
                        {
                        }
                    }
                    #endregion
                    string topNo = taskNo.Substring(0, taskNo.IndexOf("_"));
                    string navNo = taskNo.Substring(taskNo.IndexOf("_") + 1);
                    //A到B的AGV搬运任务
                    if (hzNo == "1")
                    if (navNo == "1")
                    {
                        //主任务状态更改为:完成一半
                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
                        if (mes_task.SECTION == TaskSectionConstants.BCP_KTCK ||
                            mes_task.SECTION == TaskSectionConstants.CXJ_MTCK ||
                            mes_task.SECTION == TaskSectionConstants.DS_MTCK)
                        {
                            CN_S_MODIFY = "",
                            CN_S_MODIFY_BY = "",
                            CN_T_END = DateTime.Now,
                            CN_T_MODIFY = DateTime.Now,
                            CN_S_STATE = Constants.TaskState_CompleteHalf
                        }, new { CN_S_TASK_NO = fatherNo }, trans);
                        Log.Detail(logPara, "更新主任务状态-任务号:" + fatherNo + "状态为:" + Constants.TaskState_CompleteHalf);
                        }
                        else
                        {
                            //主任务状态更改为:完成一半
                            CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
                            {
                                CN_S_MODIFY = "",
                                CN_S_MODIFY_BY = "",
                                CN_T_END = DateTime.Now,
                                CN_T_MODIFY = DateTime.Now,
                                CN_S_STATE = Constants.TaskState_CompleteHalf
                            }, new { CN_S_TASK_NO = topNo }, trans);
                            Log.Detail(logPara, "更新主任务状态-任务号:" + topNo + "状态为:" + Constants.TaskState_CompleteHalf);
                        }
                    }
                    //B到C的立库搬运任务
                    if (hzNo == "2")
                    if (navNo == "2")
                    {
                        //主任务状态更改为:完成
                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
@@ -1658,50 +1586,17 @@
                            CN_T_END = DateTime.Now,
                            CN_T_MODIFY = DateTime.Now,
                            CN_S_STATE = Constants.TaskState_Complete
                        }, new { CN_S_TASK_NO = fatherNo }, trans);
                        Log.Detail(logPara, "更新主任务状态-任务号:" + fatherNo + "状态为:" + Constants.TaskState_Complete);
                        }, new { CN_S_TASK_NO = topNo }, trans);
                        Log.Detail(logPara, "更新主任务状态-任务号:" + topNo + "状态为:" + Constants.TaskState_Complete);
                        if (task != null)
                        // mes任务进入下一阶段
                        CreateDAL<DapperDAL<TN_MES_TASK>>().Update(new
                        {
                            // 接驳位状态改为:正常
                            CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
                            {
                                CN_S_LOCATION_STATE = Constants.Location_State_Normal
                            }, new
                            {
                                CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT
                            }, trans);
                            Log.Detail(logPara, "主任务完成,更新接驳位状态-货位号:" + task.CN_S_CONNECT_BIT + "状态为:" + Constants.Location_State_Normal);
                            if (task.CN_S_TASK_TYPE == Constants.In)
                            {
                                // 入库完成终点货位状态改为:满
                                CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
                                {
                                    CN_S_LOCATION_STATE = Constants.Location_State_Full
                                }, new
                                {
                                    CN_S_LOCATION_CODE = task.CN_S_END_BIT
                                }, trans);
                                Log.Detail(logPara, "主任务完成,更新终点立库货位状态-货位号:" + task.CN_S_END_BIT + "状态为:" + Constants.Location_State_Full);
                            }
                            else if (task.CN_S_TASK_TYPE == Constants.Out)
                            {
                                // 出库完成起点货位状态改为:空
                                CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
                                {
                                    CN_S_LOCATION_STATE = Constants.Location_State_Empty
                                }, new
                                {
                                    CN_S_LOCATION_CODE = task.CN_S_START_BIT
                                }, trans);
                                Log.Detail(logPara, "主任务完成,更新起点立库货位状态-货位号:" + task.CN_S_START_BIT + "状态为:" + Constants.Location_State_Empty);
                            }
                        }
                            NeedTrig = Constants.Y
                        }, new { task_no = mes_task.task_no }, trans);
                    }
                }
                if (executeStatePara.transportTask.CN_S_TASK_TYPE == null)
                    executeStatePara.transportTask.CN_S_TASK_TYPE = "";