New file |
| | |
| | | using HH.WMS.BLL.Basic; |
| | | using HH.WMS.BLL.External; |
| | | using HH.WMS.BLL.Interface; |
| | | using HH.WMS.BLL.MiddleDB; |
| | | using HH.WMS.Common; |
| | | using HH.WMS.Common.External; |
| | | using HH.WMS.Common.Response; |
| | | using HH.WMS.DAL.Basic; |
| | | using HH.WMS.DAL.Pda; |
| | | using HH.WMS.Entitys; |
| | | using HH.WMS.Entitys.Autobom; |
| | | using HH.WMS.Entitys.Basic; |
| | | using HH.WMS.Entitys.Common; |
| | | using HH.WMS.Entitys.Dto; |
| | | using HH.WMS.Entitys.Entitys.Mes; |
| | | using HH.WMS.Entitys.External; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace HH.WMS.BLL.Pda |
| | | { |
| | | public class ZCBLL : DapperBaseBLL |
| | | { |
| | | #region 保存任务 |
| | | |
| | | public OperateResult SaveTask(TN_MES_TASK task) |
| | | { |
| | | OperateResult result = BLLCreator.CreateDapper<TN_MES_TASK>().Add(task); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 根据库区取占用的货位 |
| | | /// <summary> |
| | | /// 根据库区取占用的货位 |
| | | /// </summary> |
| | | /// <param name="areaCode"></param> |
| | | /// <returns></returns> |
| | | public List<TN_WM_LOCATION_EXTEntity> GetUsedLocationByArea(string areaCode) |
| | | { |
| | | return CreateDAL<GlDAL>().GetUsedLocationByArea(areaCode); |
| | | } |
| | | #endregion |
| | | |
| | | #region 移库 |
| | | /// <summary> |
| | | /// 移库 |
| | | /// </summary> |
| | | /// <param name="transferType"></param> |
| | | public void TransferRubber(string transferType) |
| | | { |
| | | string workFlowName = string.Empty; |
| | | switch (transferType) |
| | | { |
| | | case "transferOfFinalRubber": |
| | | workFlowName = WorkFlowName.FlowNameList["Z3"]; |
| | | break; |
| | | case "transferOfRawRubber": |
| | | workFlowName = WorkFlowName.FlowNameList["S2"]; |
| | | break; |
| | | } |
| | | if (string.IsNullOrEmpty(workFlowName)) |
| | | TransferRubberThrow(new Exception("未找到移库工作流名称"), workFlowName); |
| | | |
| | | |
| | | var isEnableAms = new GLTransferDto(); |
| | | var _isEnableAmsStr = JsonHelper.GetValue("isSendAms"); |
| | | if (!string.IsNullOrEmpty(_isEnableAmsStr)) |
| | | { |
| | | isEnableAms = JsonConvert.DeserializeObject<GLTransferDto>(_isEnableAmsStr); |
| | | isEnableAms = isEnableAms ?? new GLTransferDto(); |
| | | } |
| | | |
| | | try |
| | | { |
| | | var mapStr = JsonHelper.GetValue(transferType); |
| | | if (string.IsNullOrEmpty(mapStr)) |
| | | return; |
| | | var config = JsonConvert.DeserializeObject<GLTransferDto>(mapStr); |
| | | |
| | | if (IsWorkTime(config)) |
| | | { |
| | | var usedLocations = BLLCreator.Create<GlBLL>().GetUsedLocationByArea(config.endArea); |
| | | if (usedLocations.Count < config.transferMax) |
| | | { |
| | | mapStr = JsonHelper.GetValue("workFlowTransType"); |
| | | if (string.IsNullOrEmpty(mapStr)) |
| | | return; |
| | | var workFlowTransType = JsonConvert.DeserializeObject<List<GLTransferDto>>(mapStr); |
| | | var existsWorkFlow = workFlowTransType.Find(f => f.workFlowName == workFlowName); |
| | | if (existsWorkFlow == null) |
| | | { |
| | | TransferRubberThrow(new Exception("未找到移库方向"), workFlowName); |
| | | } |
| | | |
| | | TN_WM_B_MAKE_TASKEntity makeReq = new TN_WM_B_MAKE_TASKEntity() |
| | | { |
| | | CN_S_START_AREA = config.startArea, |
| | | CN_S_END_AREA = config.endArea, |
| | | CN_S_ITEM_CODE = config.itemCode, |
| | | CN_S_NEED_AMS = Constants.Y, |
| | | CN_S_WORKFLOW_NAME = workFlowName, |
| | | CN_S_ISTRANSPORT = isEnableAms.moveStockEnableAms, |
| | | //CN_F_QUANTITY = 1 |
| | | }; |
| | | |
| | | var externalRes = new ExternalResponse(); |
| | | if (existsWorkFlow.transType == "In") |
| | | { |
| | | try |
| | | { |
| | | var res = BLLCreator.Create<GlBLL>().GLInWorkArea(makeReq); |
| | | externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | TransferRubberThrow(ex, workFlowName); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | try |
| | | { |
| | | var res = BLLCreator.Create<GlBLL>().GLOutWorkArea(makeReq); |
| | | externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | TransferRubberThrow(ex, workFlowName); |
| | | } |
| | | } |
| | | |
| | | if (!externalRes.success) |
| | | { |
| | | TransferRubberThrow(new Exception(externalRes.errMsg), workFlowName); |
| | | } |
| | | else//成功的话写移库记录 |
| | | { |
| | | var ok = externalRes.okList[0]; |
| | | AGV_Transfer_record _log = new AGV_Transfer_record() |
| | | { |
| | | ID = Guid.NewGuid().ToString(), |
| | | LoadNo = ok.trayCode, |
| | | MaterielCode = config.itemCode, |
| | | MaterielName = config.itemName, |
| | | Quantity = 1, |
| | | LocationName_Source = ok.startBit, |
| | | LocationName_Dest = ok.endBit, |
| | | CreateDate = DateTime.Now, |
| | | HasBeenReceived = Constants.Y |
| | | }; |
| | | var _or = BLLCreator.CreateMiddleDapper<AGV_Transfer_record>().Add(_log); |
| | | if (!_or.Success) |
| | | { |
| | | TransferRubberThrow(new Exception("下达成功,写入移库记录失败:" + _or.Msg), workFlowName); |
| | | //throw new Exception("下达成功,写入移库记录失败:" + _or.Msg); |
| | | //ors.Add(OperateResult.Succeed("下达成功,写入移送任务日志失败:" + _or.Msg, req)); |
| | | } |
| | | var _serviceExec = new TN_WM_SERVICE_EXECEntity() |
| | | { |
| | | CN_S_TASK_NO = Guid.NewGuid().ToString(), |
| | | CN_S_ITEM_CODE = config.itemCode, |
| | | CN_S_ITEM_NAME = config.itemName, |
| | | CN_S_TASK_TYPE = "移库", |
| | | CN_S_TRANS_TYPE = workFlowName, |
| | | CN_S_TRAY_CODE = ok.trayCode, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_START_LOCATION = ok.startBit, |
| | | CN_S_END_LOCATION = ok.endBit, |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_C_COMPLETE = Constants.Y, |
| | | CN_C_SEND_MES = Constants.Y, |
| | | CN_S_MSG = "下达成功" |
| | | }; |
| | | |
| | | var or = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Add(_serviceExec); |
| | | if (!or.Success) |
| | | throw new Exception(or.Msg); |
| | | |
| | | Log.DomainInfo(workFlowName + "移库成功", JsonConvert.SerializeObject(externalRes)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Log.DomainInfo(workFlowName + " Error", ex.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region 移库异常记录 |
| | | /// <summary> |
| | | /// 移库异常记录 |
| | | /// </summary> |
| | | /// <param name="ex"></param> |
| | | private void TransferRubberThrow(Exception ex, string workFlowName) |
| | | { |
| | | var lastServiceExec = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_TASK_TYPE = "移库", |
| | | CN_S_TRANS_TYPE = workFlowName, |
| | | }, " ORDER BY CN_T_CREATE DESC "); |
| | | if (lastServiceExec != null && ex.Message == lastServiceExec.CN_S_MSG) |
| | | { |
| | | BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Update(new |
| | | { |
| | | CN_T_CREATE = DateTime.Now |
| | | }, new |
| | | { |
| | | CN_S_TASK_NO = lastServiceExec.CN_S_TASK_NO |
| | | }); |
| | | throw ex; |
| | | } |
| | | TN_WM_SERVICE_EXECEntity serviceExec = new TN_WM_SERVICE_EXECEntity() |
| | | { |
| | | CN_S_TASK_NO = Guid.NewGuid().ToString(), |
| | | CN_S_TASK_TYPE = "移库", |
| | | CN_S_TRANS_TYPE = workFlowName, |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_C_COMPLETE = Constants.Y, |
| | | CN_C_SEND_MES = Constants.N, |
| | | CN_S_MSG = ex.Message |
| | | }; |
| | | var or = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Add(serviceExec); |
| | | if (!or.Success) |
| | | throw new Exception(or.Msg); |
| | | throw ex; |
| | | } |
| | | #endregion |
| | | |
| | | #region 移送任务 |
| | | /// <summary> |
| | | /// 移送任务 |
| | | /// </summary> |
| | | /// <param name="transportReqs"></param> |
| | | public List<OperateResult> ExecTransferTask(List<TN_MES_TASK> transportReqs) |
| | | { |
| | | var mapStr = JsonHelper.GetValue("workFlowTransType"); |
| | | if (string.IsNullOrEmpty(mapStr)) |
| | | throw new Exception("未找到配置:workFlowTransType"); |
| | | |
| | | var isEnableAms = new ZCTransferDto(); |
| | | var _isEnableAmsStr = JsonHelper.GetValue("isSendAms"); |
| | | if (!string.IsNullOrEmpty(_isEnableAmsStr)) |
| | | { |
| | | isEnableAms = JsonConvert.DeserializeObject<ZCTransferDto>(_isEnableAmsStr); |
| | | isEnableAms = isEnableAms ?? new ZCTransferDto(); |
| | | } |
| | | |
| | | var workFlowTransType = JsonConvert.DeserializeObject<List<ZCTransferDto>>(mapStr); |
| | | |
| | | List<OperateResult> ors = new List<OperateResult>(); |
| | | if (transportReqs.Any()) |
| | | { |
| | | foreach (var req in transportReqs) |
| | | { |
| | | string startBit = req.Location_From; |
| | | string endBit = req.Location_To; |
| | | |
| | | string startArea = string.Empty, endArea = string.Empty; |
| | | //校验起点 |
| | | if (!string.IsNullOrEmpty(startBit)) |
| | | { |
| | | var _location = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = startBit |
| | | }); |
| | | if (_location == null) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到起始货位:" + startBit, req)); |
| | | continue; |
| | | } |
| | | startArea = Util.ToString(_location.CN_S_AREA_CODE).Trim(); |
| | | } |
| | | //校验终点 |
| | | if (!string.IsNullOrEmpty(endBit)) |
| | | { |
| | | var _location = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = endBit |
| | | }); |
| | | if (_location == null) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到终点货位:" + endBit, req)); |
| | | continue; |
| | | } |
| | | endArea = Util.ToString(_location.CN_S_AREA_CODE).Trim(); |
| | | } |
| | | if (string.IsNullOrEmpty(startArea) && string.IsNullOrEmpty(endArea)) |
| | | { |
| | | ors.Add(OperateResult.Error("起点终点不可同时为空")); |
| | | continue; |
| | | } |
| | | //找作业路径 |
| | | //var workRoute = BLLCreator.Create<TN_AB_B_WORK_AREA_PROBLL>().GetSingleRoute(startArea, endArea); |
| | | //if (workRoute == null) |
| | | //{ |
| | | // ors.Add(OperateResult.Error("未找到作业路径", req)); |
| | | // continue; |
| | | //} |
| | | |
| | | var workRoute = new TN_AB_B_WORK_AREA_PROEntity(); |
| | | var workRoutes = BLLCreator.Create<TN_AB_B_WORK_AREA_PROBLL>().GetRoute("", startArea, endArea); |
| | | if (!workRoutes.Any()) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到作业路径", req)); |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | workRoute = workRoutes[0]; |
| | | if (workRoutes.Count > 1) |
| | | { |
| | | if (workRoutes.Exists(e => Util.ToString(e.CN_S_TYPE_CODE) == "X6" || Util.ToString(e.CN_S_TYPE_CODE) == "X7")) |
| | | { |
| | | if (string.IsNullOrEmpty(req.PROD_NO)) |
| | | { |
| | | workRoute = workRoutes.Find(f => f.CN_S_TYPE_CODE == "X6"); |
| | | } |
| | | else |
| | | { |
| | | workRoute = workRoutes.Find(f => f.CN_S_TYPE_CODE == "X7"); |
| | | } |
| | | } |
| | | } |
| | | if (workRoute == null) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到作业路径", req)); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | |
| | | var existsWorkFlow = workFlowTransType.Find(f => f.workFlowCode == workRoute.CN_S_TYPE_CODE); |
| | | if (existsWorkFlow == null) |
| | | { |
| | | ors.Add(OperateResult.Error("未找到作业方向", req)); |
| | | continue; |
| | | } |
| | | |
| | | TN_WM_B_MAKE_TASKEntity makeReq = new TN_WM_B_MAKE_TASKEntity() |
| | | { |
| | | CN_S_ITEM_CODE = req.PROD_NO, |
| | | CN_S_ITEM_NAME = "", |
| | | CN_S_START_BIT = req.Location_From, |
| | | CN_S_START_AREA = workRoute.CN_S_START_AREA_CODE, |
| | | CN_S_END_BIT = req.Location_To, |
| | | CN_S_END_AREA = workRoute.CN_S_END_AREA_CODE, |
| | | CN_S_TRAY_CODE = req.TurnCardNum, |
| | | CN_S_PRIORITY = req.Priority.ToString(), |
| | | CN_S_WORKFLOW_NAME = WorkFlowName.FlowNameList[existsWorkFlow.workFlowCode], |
| | | CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT), |
| | | CN_S_NEED_AMS = isEnableAms.transferEnableAms, |
| | | CN_S_ISTRANSPORT = existsWorkFlow.isTransport |
| | | }; |
| | | |
| | | var externalRes = new ExternalResponse(); |
| | | if (existsWorkFlow.transType == "In") |
| | | { |
| | | try |
| | | { |
| | | var res = BLLCreator.Create<ZCBLL>().GLInWorkArea(makeReq); |
| | | externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ors.Add(OperateResult.Error("入作业区失败:" + ex.Message, req)); |
| | | continue; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | try |
| | | { |
| | | var res = BLLCreator.Create<ZCBLL>().GLOutWorkArea(makeReq); |
| | | externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ors.Add(OperateResult.Error("出作业区失败:" + ex.Message, req)); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | var _serviceExec = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_TASK_NO = req.task_no |
| | | }); |
| | | if (_serviceExec != null) |
| | | { |
| | | _serviceExec.Update = true; |
| | | } |
| | | else |
| | | { |
| | | _serviceExec = new TN_WM_SERVICE_EXECEntity() |
| | | { |
| | | CN_S_TASK_NO = req.task_no, |
| | | CN_S_ITEM_CODE = req.PROD_NO, |
| | | CN_S_ITEM_NAME = "", |
| | | CN_S_TASK_TYPE = "移送", |
| | | CN_S_TRANS_TYPE = WorkFlowName.FlowNameList[existsWorkFlow.workFlowCode], |
| | | CN_S_TRAY_CODE = req.TurnCardNum, |
| | | CN_N_PRIORITY = req.Priority, |
| | | CN_S_START_LOCATION = req.Location_From, |
| | | CN_S_END_LOCATION = req.Location_To, |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_C_COMPLETE = Constants.N, |
| | | CN_C_SEND_MES = Constants.N, |
| | | CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT), |
| | | CN_N_REQUEST_TYPE = 0,//req.RequestType, |
| | | CN_S_TRAY_TYPE = "0"//req.LoadType |
| | | }; |
| | | } |
| | | |
| | | if (!externalRes.success) |
| | | { |
| | | //写任务执行表,并回报mes |
| | | if (externalRes.errCode == "7" || externalRes.errCode == "8") |
| | | { |
| | | |
| | | _serviceExec.CN_C_COMPLETE = Constants.Y; |
| | | _serviceExec.CN_C_SEND_MES = Constants.Y; |
| | | _serviceExec.CN_S_MSG = externalRes.errMsg; |
| | | } |
| | | else |
| | | { |
| | | _serviceExec.CN_C_COMPLETE = Constants.N; |
| | | _serviceExec.CN_C_SEND_MES = Constants.N; |
| | | _serviceExec.CN_S_MSG = externalRes.errMsg; |
| | | } |
| | | |
| | | var _or = TransportSuccess(_serviceExec); |
| | | |
| | | if (!_or.Success) |
| | | { |
| | | Log.DomainInfo("TransportSuccess error", _or.Msg); |
| | | Log.DomainInfo("externalRes Error: " + externalRes.errMsg, JsonConvert.SerializeObject(req)); |
| | | |
| | | ors.Add(OperateResult.Error("TransportSuccess error", _or.Msg)); |
| | | } |
| | | else |
| | | { |
| | | if (externalRes.errCode == "7" || externalRes.errCode == "8") |
| | | { |
| | | ors.Add(OperateResult.Warning("已反馈至mes,消息: " + externalRes.errMsg, req)); |
| | | } |
| | | else |
| | | { |
| | | ors.Add(OperateResult.Error("externalRes Error: " + externalRes.errMsg, req)); |
| | | } |
| | | } |
| | | } |
| | | else//成功的话写移送任务日志 |
| | | { |
| | | var ok = externalRes.okList[0]; |
| | | |
| | | _serviceExec.CN_S_START_LOCATION = ok.startBit; |
| | | _serviceExec.CN_S_END_LOCATION = ok.endBit; |
| | | _serviceExec.CN_C_COMPLETE = Constants.Y; |
| | | _serviceExec.CN_C_SEND_MES = Constants.Y; |
| | | _serviceExec.CN_S_MSG = "下达成功"; |
| | | var _or = TransportSuccess(_serviceExec); |
| | | if (!_or.Success) |
| | | { |
| | | ors.Add(OperateResult.Warning("下达成功,更新移送任务日志失败:" + _or.Msg, req)); |
| | | continue; |
| | | } |
| | | ors.Add(OperateResult.Succeed("下达成功", req)); |
| | | } |
| | | } |
| | | Log.DomainInfo("移送任务 结果", JsonConvert.SerializeObject(ors)); |
| | | } |
| | | return ors; |
| | | } |
| | | #endregion |
| | | |
| | | #region 判断是否在工作时间 |
| | | /// <summary> |
| | | /// 判断是否在工作时间 |
| | | /// </summary> |
| | | /// <param name="config"></param> |
| | | /// <returns></returns> |
| | | private bool IsWorkTime(GLTransferDto config) |
| | | { |
| | | try |
| | | { |
| | | TimeSpan dspWorkingDayAM = config.startTime.TimeOfDay; |
| | | TimeSpan dspWorkingDayPM = config.endTime.TimeOfDay; |
| | | TimeSpan dspNow = DateTime.Now.TimeOfDay; |
| | | if (dspNow >= dspWorkingDayAM && dspNow <= dspWorkingDayPM) |
| | | { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | catch |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 入作业区 |
| | | /// </summary> |
| | | /// <param name="entity"></param> |
| | | /// <returns></returns> |
| | | public string GLInWorkArea(TN_WM_B_MAKE_TASKEntity entity) |
| | | { |
| | | ExternalResponse result = new ExternalResponse(); |
| | | try |
| | | { |
| | | Log.Info("处理位置信息开始:", JsonConvert.SerializeObject(entity)); |
| | | //处理位置信息 |
| | | CheckPosition(ref entity); |
| | | Log.Info("处理位置信息结束:", JsonConvert.SerializeObject(entity)); |
| | | |
| | | //传递参数 |
| | | List<InWorkAreaEntity> inWorkAreaEntitys = new List<InWorkAreaEntity>(); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | InWorkAreaEntity model = new InWorkAreaEntity(); |
| | | |
| | | model.itemCode = entity.CN_S_ITEM_CODE; |
| | | model.trayCode = entity.CN_S_TRAY_CODE; |
| | | model.priority = Convert.ToInt32(entity.CN_S_PRIORITY); |
| | | model.startBit = entity.CN_S_START_BIT; |
| | | model.startArea = entity.CN_S_START_AREA; |
| | | model.startStock = entity.CN_S_START_STOCK; |
| | | model.endBit = entity.CN_S_END_BIT; |
| | | model.endArea = entity.CN_S_END_AREA; |
| | | model.endStock = entity.CN_S_END_STOCK; |
| | | model.remark = entity.CN_S_WORKFLOW_NAME; |
| | | model.isBackItem = ""; |
| | | model.needCreateAMSTask = entity.CN_S_NEED_AMS; |
| | | |
| | | //标记是否是退回物料(生胶、小料、母胶、终炼胶小盘料退回,余料格栅车退回,余料帘布退回) |
| | | string workFlowName = entity.CN_S_WORKFLOW_NAME; |
| | | if (workFlowName == WorkFlowName.FlowNameList["S5"] || workFlowName == WorkFlowName.FlowNameList["X7"] || workFlowName == WorkFlowName.FlowNameList["M5"] || workFlowName == WorkFlowName.FlowNameList["Z6"] || workFlowName == WorkFlowName.FlowNameList["T5"] || workFlowName == WorkFlowName.FlowNameList["L5"]) |
| | | { |
| | | model.isBackItem = Constants.Y; |
| | | } |
| | | |
| | | List<string> keyList = (from q in WorkFlowName.FlowNameList |
| | | where q.Value == entity.CN_S_WORKFLOW_NAME |
| | | select q.Key).ToList<string>(); //get all keys |
| | | |
| | | var funcName = WorkFlowName.FlowNameList.FirstOrDefault(q => q.Value == entity.CN_S_WORKFLOW_NAME).Key; |
| | | |
| | | if (funcName != "" && funcName != null) |
| | | { |
| | | model.funCode = funcName; |
| | | } |
| | | |
| | | //物料编码不为空时 才组织Data |
| | | if (!string.IsNullOrEmpty(entity.CN_S_ITEM_CODE)) |
| | | { |
| | | |
| | | var item = BLLCreator.Create<TN_WMS_ITEMBLL>().GetItem(entity.CN_S_ITEM_CODE); |
| | | |
| | | List<ChaoYangItemDataEntity> DataList = new List<ChaoYangItemDataEntity>(); |
| | | |
| | | DataList.Add(new ChaoYangItemDataEntity |
| | | { |
| | | itemCode = entity.CN_S_ITEM_CODE, |
| | | qty = Convert.ToInt32(entity.CN_F_QUANTITY), |
| | | itemModel = item == null ? "" : item.CN_S_MODEL, |
| | | itemPackUnit = item == null ? "" : item.CN_S_MEASURE_UNIT, |
| | | itemName = item == null ? "" : item.CN_S_ITEM_NAME, |
| | | itemState = "合格" |
| | | }); |
| | | model.data = DataList; |
| | | } |
| | | |
| | | inWorkAreaEntitys.Add(model); |
| | | |
| | | Log.Info("开始进入入库,传参:", JsonConvert.SerializeObject(inWorkAreaEntitys)); |
| | | result = BLLCreator.Create<WmsApiBaseBLL>().InWorkArea(inWorkAreaEntitys); |
| | | return JsonConvert.SerializeObject(result); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | result.errCode = "5";//程序异常 |
| | | result.errMsg = ex.Message;//程序异常 |
| | | Log.DomainInfo(entity.CN_S_WORKFLOW_NAME + ": InError", ex.Message); |
| | | return JsonConvert.SerializeObject(result); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 出作业区 |
| | | /// </summary> |
| | | /// <param name="entity"></param> |
| | | /// <returns></returns> |
| | | public string GLOutWorkArea(TN_WM_B_MAKE_TASKEntity entity) |
| | | { |
| | | ExternalResponse result = new ExternalResponse(); |
| | | |
| | | try |
| | | { |
| | | Log.Info("处理位置信息开始:", JsonConvert.SerializeObject(entity)); |
| | | //处理位置信息 |
| | | CheckPosition(ref entity); |
| | | Log.Info("处理位置信息结束:", JsonConvert.SerializeObject(entity)); |
| | | |
| | | //传递参数 |
| | | List<OutWorkAreaEntity> outWorkAreaEntitys = new List<OutWorkAreaEntity>(); |
| | | |
| | | List<OutWorkDataEntity> DataList = new List<OutWorkDataEntity>(); |
| | | |
| | | //物料编码不为空时 才组织Data |
| | | if (!string.IsNullOrEmpty(entity.CN_S_ITEM_CODE)) |
| | | { |
| | | DataList.Add(new OutWorkDataEntity |
| | | { |
| | | ItemCode = entity.CN_S_ITEM_CODE, |
| | | TrayCode = entity.CN_S_TRAY_CODE, |
| | | UnitQty = Convert.ToInt32(entity.CN_F_QUANTITY) |
| | | }); |
| | | } |
| | | string funCode = ""; |
| | | List<string> keyList = (from q in WorkFlowName.FlowNameList |
| | | where q.Value == entity.CN_S_WORKFLOW_NAME |
| | | select q.Key).ToList<string>(); //get all keys |
| | | |
| | | var funcName = WorkFlowName.FlowNameList.FirstOrDefault(q => q.Value == entity.CN_S_WORKFLOW_NAME).Key; |
| | | |
| | | if (funcName != "" && funcName != null) |
| | | { |
| | | funCode = funcName; |
| | | } |
| | | |
| | | outWorkAreaEntitys.Add(new OutWorkAreaEntity() |
| | | { |
| | | itemCode = entity.CN_S_ITEM_CODE, |
| | | trayCode = entity.CN_S_TRAY_CODE, |
| | | priority = Convert.ToInt32(entity.CN_S_PRIORITY), |
| | | startBit = entity.CN_S_START_BIT, |
| | | startArea = entity.CN_S_START_AREA, |
| | | startStock = entity.CN_S_START_STOCK, |
| | | endBit = entity.CN_S_END_BIT, |
| | | endArea = entity.CN_S_END_AREA, |
| | | endStock = entity.CN_S_END_STOCK, |
| | | remark = entity.CN_S_WORKFLOW_NAME, |
| | | Data = DataList, |
| | | needCreateAMSTask = entity.CN_S_NEED_AMS, |
| | | IsTransport = entity.CN_S_ISTRANSPORT, |
| | | funCode = string.IsNullOrEmpty(funCode) ? "" : funCode |
| | | }); |
| | | |
| | | Log.Info("开始进入出库,传参:", JsonConvert.SerializeObject(entity)); |
| | | |
| | | result = BLLCreator.Create<WmsApiBaseBLL>().OutWorkArea(outWorkAreaEntitys); |
| | | return JsonConvert.SerializeObject(result); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | result.errCode = "5";//程序异常 |
| | | result.errMsg = ex.Message;//程序异常 |
| | | Log.DomainInfo(entity.CN_S_WORKFLOW_NAME + ": OutError", ex.Message); |
| | | return JsonConvert.SerializeObject(result); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理位置信息 |
| | | /// </summary> |
| | | /// <param name="entity"></param> |
| | | private void CheckPosition(ref TN_WM_B_MAKE_TASKEntity entity) |
| | | { |
| | | //防止传了起始位置,没传起始库区 |
| | | if (!string.IsNullOrEmpty(entity.CN_S_START_BIT)) |
| | | { |
| | | TN_WM_LOCATION_EXTEntity locationModel = BLL.BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetExtModel(" WHERE CN_S_LOCATION_CODE='" + entity.CN_S_START_BIT + "' "); |
| | | if (locationModel != null) |
| | | { |
| | | entity.CN_S_START_AREA = locationModel.CN_S_AREA_CODE.Trim(); |
| | | entity.CN_S_START_STOCK = locationModel.CN_S_STOCK_CODE.Trim(); |
| | | } |
| | | } |
| | | //防止传了目的位置,没传目的库区 |
| | | if (!string.IsNullOrEmpty(entity.CN_S_END_BIT)) |
| | | { |
| | | TN_WM_LOCATION_EXTEntity locationModel = BLL.BLLCreator.Create<TN_WM_LOCATION_EXTBLL>().GetExtModel(" WHERE CN_S_LOCATION_CODE='" + entity.CN_S_END_BIT + "' "); |
| | | if (locationModel != null) |
| | | { |
| | | entity.CN_S_END_AREA = locationModel.CN_S_AREA_CODE.Trim(); |
| | | entity.CN_S_END_STOCK = locationModel.CN_S_STOCK_CODE.Trim(); |
| | | } |
| | | } |
| | | |
| | | Log.Info("处理位置信息位置一:", JsonConvert.SerializeObject(entity)); |
| | | |
| | | if (string.IsNullOrEmpty(entity.CN_S_START_AREA) || string.IsNullOrEmpty(entity.CN_S_END_AREA)) |
| | | { |
| | | //找作业路径 |
| | | var workRoute = BLLCreator.Create<TN_AB_B_WORK_AREA_PROBLL>().GetSingleRoute(entity.CN_S_START_AREA, entity.CN_S_END_AREA); |
| | | if (workRoute == null) |
| | | { |
| | | throw new Exception("失败,未找到作业路径!"); |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(entity.CN_S_START_AREA)) |
| | | { |
| | | entity.CN_S_START_AREA = workRoute.CN_S_START_AREA_CODE; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(entity.CN_S_END_AREA)) |
| | | { |
| | | entity.CN_S_END_AREA = workRoute.CN_S_END_AREA_CODE; |
| | | } |
| | | } |
| | | |
| | | Log.Info("处理位置信息位置二:", JsonConvert.SerializeObject(entity)); |
| | | |
| | | var SareaEntity = BLLCreator.Create<TN_AB_B_STOCK_AREABLL>().GetStockAreaEntity(entity.CN_S_START_AREA.Trim()); |
| | | if (SareaEntity != null) |
| | | entity.CN_S_START_STOCK = SareaEntity.CN_S_STOCK_CODE; |
| | | |
| | | |
| | | var EareaEntity = BLLCreator.Create<TN_AB_B_STOCK_AREABLL>().GetStockAreaEntity(entity.CN_S_END_AREA.Trim()); |
| | | if (EareaEntity != null) |
| | | entity.CN_S_END_STOCK = EareaEntity.CN_S_STOCK_CODE; |
| | | |
| | | Log.Info("处理位置信息位置三:", JsonConvert.SerializeObject(entity)); |
| | | } |
| | | |
| | | private OperateResult TransportSuccess(TN_WM_SERVICE_EXECEntity _serviceExec) |
| | | { |
| | | return UseTransaction(trans => |
| | | { |
| | | if (_serviceExec.Update) |
| | | { |
| | | var or = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Update(new |
| | | { |
| | | CN_S_START_LOCATION = _serviceExec.CN_S_START_LOCATION, |
| | | CN_S_END_LOCATION = _serviceExec.CN_S_END_LOCATION, |
| | | CN_C_COMPLETE = _serviceExec.CN_C_COMPLETE, |
| | | CN_C_SEND_MES = _serviceExec.CN_C_SEND_MES, |
| | | CN_S_MSG = _serviceExec.CN_S_MSG |
| | | }, new |
| | | { |
| | | CN_S_TASK_NO = _serviceExec.CN_S_TASK_NO |
| | | }); |
| | | if (!or.Success) |
| | | throw new Exception(or.Msg); |
| | | } |
| | | else |
| | | { |
| | | var or = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Add(_serviceExec); |
| | | if (!or.Success) |
| | | throw new Exception(or.Msg); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | #region 服务执行记录日志分页 |
| | | /// <summary> |
| | | /// 服务执行记录日志分页 |
| | | /// </summary> |
| | | /// <param name="sm"></param> |
| | | /// <returns></returns> |
| | | public OperateResult GetServiceExecList(SearchModel sm) |
| | | { |
| | | return CreateDAL<GlDAL>().GetServiceExecList(sm); |
| | | } |
| | | #endregion |
| | | |
| | | public void SelfManageTask() |
| | | { |
| | | try |
| | | { |
| | | //取未执行的自管任务 |
| | | var tasks = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetList(new |
| | | { |
| | | CN_S_TASK_FLAG = Constants.TaskFlag_ZG, |
| | | CN_S_STATE = new List<string>() { Constants.TaskState_NoExecuted, Constants.TaskState_CompleteHalf } |
| | | }); |
| | | |
| | | var connectBitStr = JsonHelper.GetValue("connectBit"); |
| | | if (string.IsNullOrEmpty(connectBitStr)) |
| | | throw new Exception("未找到配置:connectBit"); |
| | | |
| | | var connectBits = JsonConvert.DeserializeObject<List<ConnectBitDto>>(connectBitStr); |
| | | |
| | | List<OperateResult> ors = new List<OperateResult>(); |
| | | foreach (var task in tasks) |
| | | { |
| | | try |
| | | { |
| | | //未执行表示第一个任务 |
| | | if (task.CN_S_STATE == Constants.TaskState_NoExecuted) |
| | | { |
| | | //立库货位 |
| | | string lkBit = string.Empty; |
| | | //根据任务类型判断立库货位 |
| | | if (task.CN_S_TASK_TYPE == Constants.Out) |
| | | { |
| | | lkBit = task.CN_S_START_BIT; |
| | | } |
| | | else if (task.CN_S_TASK_TYPE == Constants.In) |
| | | { |
| | | lkBit = task.CN_S_END_BIT; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("自管任务任务类型不正确"); |
| | | } |
| | | |
| | | var locationBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = lkBit |
| | | }); |
| | | if (locationBit == null) |
| | | throw new Exception("未找到立库货位:" + lkBit); |
| | | var _bit = connectBits.Find(f => f.tunnel == Util.ToString(locationBit.CN_S_ROADWAY).Trim()); |
| | | if (_bit == null) |
| | | throw new Exception("未找到配置巷道:" + locationBit.CN_S_ROADWAY + "的接驳位"); |
| | | |
| | | var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = _bit.bit |
| | | }); |
| | | if (connectBit == null) |
| | | throw new Exception("未找到接驳位货位:" + _bit.bit); |
| | | if (connectBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal) |
| | | throw new Exception("接驳位:" + _bit.bit + "存在未执行完的任务"); |
| | | |
| | | //赋值接驳位 |
| | | task.CN_S_CONNECT_BIT = _bit.bit; |
| | | |
| | | //string postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_TransTaskNo + "\",\"orgId\":\"\",\"orgFlag\":\"0\"}"; |
| | | //string taskNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData); |
| | | //if (string.IsNullOrEmpty(taskNo)) |
| | | // throw new Exception("任务号生成失败,请检查在AUTOBOM中是否配置转运任务号生成规则!"); |
| | | string taskNo = task.CN_S_TASK_NO + "_1"; |
| | | //创建第一个任务 |
| | | TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity() |
| | | { |
| | | CN_S_TASK_NO = taskNo, |
| | | CN_S_TRAY_CODE = task.CN_S_TRAY_CODE, |
| | | CN_S_START_BIT = task.CN_S_START_BIT, |
| | | CN_S_END_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_STATE = Constants.TaskState_NoExecuted, |
| | | CN_S_BF_TASK_NO = "", |
| | | CN_S_AF_TASK_NO = "", |
| | | CN_S_STOCK_CODE = task.CN_S_STOCK_CODE, |
| | | CN_S_START_AREA = task.CN_S_START_AREA, |
| | | CN_S_END_AREA = connectBit.CN_S_AREA_CODE, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_CREATOR = "sys", |
| | | CN_S_CREATOR_BY = "sys", |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_T_MODIFY = DateTime.Now, |
| | | CN_S_REMARK = "", |
| | | //CN_C_IS_AUTO = transport.CN_C_IS_AUTO, |
| | | CN_S_TASK_FLAG = task.CN_S_TASK_TYPE == Constants.Out ? Constants.TaskFlag_LG : Constants.TaskFlag_AGV, |
| | | //CN_C_START_IS_CONTROL_QTY = transport.CN_C_START_IS_CONTROL_QTY, |
| | | //CN_C_END_IS_CONTROL_QTY = transport.CN_C_END_IS_CONTROL_QTY, |
| | | //CN_S_START_CONTROL_INV = transport.CN_S_START_CONTROL_INV, |
| | | //CN_S_END_CONTROL_INV = transport.CN_S_END_CONTROL_INV, |
| | | //CN_S_START_AREA_TYPE = transport.CN_S_START_AREA_TYPE, |
| | | //CN_S_END_AREA_TYPE = transport.CN_S_END_AREA_TYPE, |
| | | }; |
| | | var or = UseTransaction(trans => |
| | | { |
| | | //增加子任务 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity, trans); |
| | | //更新接驳位状态 |
| | | CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new |
| | | { |
| | | CN_S_LOCATION_STATE = Constants.Location_State_OutLock |
| | | }, new |
| | | { |
| | | CN_S_LOCATION_CODE = taskEntity.CN_S_END_BIT |
| | | }, trans); |
| | | // 更新主任务接驳位 状态置为执行中 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Update(new |
| | | { |
| | | CN_S_CONNECT_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_STATE = Constants.TaskState_Executing |
| | | }, new |
| | | { |
| | | CN_S_TASK_NO = task.CN_S_TASK_NO |
| | | }, trans); |
| | | //立库任务 需要调用wcs接口 |
| | | if (taskEntity.CN_S_TASK_FLAG == Constants.TaskFlag_LG) |
| | | { |
| | | //to do... |
| | | #region 待测试 |
| | | //OperateResult re = new OtherSysApi().SendWcsCreateTask(taskEntity, _bit); |
| | | //if (!re.Success) |
| | | //{ |
| | | // throw new Exception(re.Msg); |
| | | //} |
| | | #endregion |
| | | } |
| | | else//agv任务 |
| | | { |
| | | //OperateResult re = new OtherSysApi().SendAmsCreateTask(taskEntity); |
| | | //if (!re.Success) |
| | | //{ |
| | | // throw new Exception(re.Msg); |
| | | //} |
| | | } |
| | | }); |
| | | if (!or.Success) throw new Exception(or.Msg); |
| | | } |
| | | else//执行一半的任务,开始创建第二个任务 |
| | | { |
| | | //string postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_TransTaskNo + "\",\"orgId\":\"\",\"orgFlag\":\"0\"}"; |
| | | //string taskNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData); |
| | | //if (string.IsNullOrEmpty(taskNo)) |
| | | // throw new Exception("任务号生成失败,请检查在AUTOBOM中是否配置转运任务号生成规则!"); |
| | | string taskNo = task.CN_S_TASK_NO + "_2"; |
| | | var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new |
| | | { |
| | | CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT |
| | | }); |
| | | var _bit = connectBits.Find(f => f.tunnel == Util.ToString(connectBit.CN_S_ROADWAY).Trim()); |
| | | if (_bit == null) |
| | | throw new Exception("未找到配置巷道:" + connectBit.CN_S_ROADWAY + "的接驳位"); |
| | | //创建第二个任务 |
| | | TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity() |
| | | { |
| | | CN_S_TASK_NO = taskNo, |
| | | CN_S_TRAY_CODE = task.CN_S_TRAY_CODE, |
| | | CN_S_START_BIT = task.CN_S_CONNECT_BIT, |
| | | CN_S_END_BIT = task.CN_S_END_BIT, |
| | | CN_S_STATE = Constants.TaskState_NoExecuted, |
| | | CN_S_BF_TASK_NO = "", |
| | | CN_S_AF_TASK_NO = "", |
| | | CN_S_STOCK_CODE = task.CN_S_STOCK_CODE, |
| | | CN_S_START_AREA = connectBit.CN_S_AREA_CODE, |
| | | CN_S_END_AREA = task.CN_S_END_AREA, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_CREATOR = "sys", |
| | | CN_S_CREATOR_BY = "sys", |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_T_MODIFY = DateTime.Now, |
| | | CN_S_REMARK = "", |
| | | //CN_C_IS_AUTO = transport.CN_C_IS_AUTO, |
| | | CN_S_TASK_FLAG = task.CN_S_TASK_TYPE == Constants.Out ? Constants.TaskFlag_AGV : Constants.TaskFlag_LG, |
| | | //CN_C_START_IS_CONTROL_QTY = transport.CN_C_START_IS_CONTROL_QTY, |
| | | //CN_C_END_IS_CONTROL_QTY = transport.CN_C_END_IS_CONTROL_QTY, |
| | | //CN_S_START_CONTROL_INV = transport.CN_S_START_CONTROL_INV, |
| | | //CN_S_END_CONTROL_INV = transport.CN_S_END_CONTROL_INV, |
| | | //CN_S_START_AREA_TYPE = transport.CN_S_START_AREA_TYPE, |
| | | //CN_S_END_AREA_TYPE = transport.CN_S_END_AREA_TYPE, |
| | | }; |
| | | |
| | | var or = UseTransaction(trans => |
| | | { |
| | | //增加子任务 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity, trans); |
| | | //更新接驳位状态 |
| | | CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new |
| | | { |
| | | CN_S_LOCATION_STATE = Constants.Location_State_InLock |
| | | }, new |
| | | { |
| | | CN_S_LOCATION_CODE = taskEntity.CN_S_START_BIT |
| | | }, trans); |
| | | // 更新主任务接驳位 状态置为执行中 |
| | | CreateDapperDAL<TN_WM_TASKEntity>().Update(new |
| | | { |
| | | CN_S_STATE = Constants.TaskState_Executing |
| | | }, new |
| | | { |
| | | CN_S_TASK_NO = task.CN_S_TASK_NO |
| | | }, trans); |
| | | |
| | | //立库任务 需要调用wcs接口 |
| | | if (taskEntity.CN_S_TASK_FLAG == Constants.TaskFlag_LG) |
| | | { |
| | | //to do... |
| | | #region 待测试 |
| | | //OperateResult re = new OtherSysApi().SendWcsCreateTask(taskEntity, _bit); |
| | | //if (!re.Success) |
| | | //{ |
| | | // throw new Exception(re.Msg); |
| | | //} |
| | | #endregion |
| | | } |
| | | else//agv任务 |
| | | { |
| | | //OperateResult re = new OtherSysApi().SendAmsCreateTask(taskEntity); |
| | | //if (!re.Success) |
| | | //{ |
| | | // throw new Exception(re.Msg); |
| | | //} |
| | | } |
| | | }); |
| | | if (!or.Success) throw new Exception(or.Msg); |
| | | } |
| | | ors.Add(OperateResult.Succeed("生成成功")); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ors.Add(OperateResult.Error(ex.Message)); |
| | | } |
| | | } |
| | | Log.DomainInfo("SelfManageTask", JsonConvert.SerializeObject(ors)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Log.DomainInfo("SelfManageTask Error", ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 遍历中间表,根据业务类型创建WMS任务 |
| | | /// </summary> |
| | | public void ExecTransferTask() |
| | | { |
| | | // 已接收待处理任务 |
| | | var receiveTasks = BLLCreator.CreateDapper<TN_MES_TASK>().GetList(new TN_MES_TASK |
| | | { |
| | | NeedTrig = "Y" |
| | | }).OrderBy(t => t.CreateDate).ToList(); |
| | | |
| | | List<OperateResult> ors = new List<OperateResult>(); |
| | | |
| | | foreach (var task in receiveTasks) |
| | | { |
| | | try |
| | | { |
| | | // 从mongo中获取货位相关的信息 - 起始货位 |
| | | AutoBomLocationEntity start_location = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetModel(task.Location_From); |
| | | // 从mongo中获取货位相关的信息 - 终点货位 |
| | | AutoBomLocationEntity end_location = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetModel(task.Location_To); |
| | | |
| | | // 创建WMS主任务 |
| | | TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity() |
| | | { |
| | | CN_S_TASK_NO = task.task_no, |
| | | CN_S_TRAY_CODE = task.TurnCardNum, |
| | | CN_S_STATE = Constants.TaskState_NoExecuted, |
| | | CN_S_BF_TASK_NO = "", |
| | | CN_S_AF_TASK_NO = "", |
| | | CN_S_STOCK_CODE = start_location.CN_S_STOCK_CODE, |
| | | CN_S_START_AREA = start_location.CN_S_AREA_CODE, |
| | | CN_S_START_BIT = start_location.CN_S_LOCATION_CODE, |
| | | CN_S_END_AREA = end_location.CN_S_AREA_CODE, |
| | | CN_S_END_BIT = end_location.CN_S_LOCATION_CODE, |
| | | CN_N_PRIORITY = 1, |
| | | CN_S_CREATOR = "sys", |
| | | CN_S_CREATOR_BY = "sys", |
| | | CN_T_CREATE = DateTime.Now, |
| | | CN_T_MODIFY = DateTime.Now, |
| | | CN_S_REMARK = "", |
| | | CN_S_TASK_FLAG = Constants.TaskFlag_ZG, |
| | | }; |
| | | UseTransaction(trans => |
| | | { |
| | | // 增加WMS主任务 |
| | | OperateResult re = CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity); |
| | | if (!re.Success) |
| | | throw new Exception(re.Msg); |
| | | // 更新TN_MES_TASK状态 |
| | | CreateDapperDAL<TN_MES_TASK>().Update(new |
| | | { |
| | | NeedTrig = "N" |
| | | }, new { task_no = task.task_no }, trans); |
| | | if (!re.Success) |
| | | throw new Exception(re.Msg); |
| | | }); |
| | | |
| | | ors.Add(OperateResult.Succeed("生成成功")); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ors.Add(OperateResult.Error(ex.Message)); |
| | | } |
| | | Log.DomainInfo("ExecTransferTask", JsonConvert.SerializeObject(ors)); |
| | | } |
| | | } |
| | | } |
| | | } |