From 98186752629a7bd38965418af84db382d90b9c07 Mon Sep 17 00:00:00 2001 From: zhao Date: 星期五, 11 六月 2021 16:42:00 +0800 Subject: [PATCH] 移送任务,MES下达的任务生成WMS主任务 --- HH.WMS.WebUI/Web.config | 4 HH.WMS.BLL/HH.WMS.BLL.csproj | 1 HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs | 150 +++++ HH.WMS.WebApi/Config.json | 26 HH.WMS.WebApi/Extension/ExecSelfManageTask.cs | 2 HH.WMS.Entitys/External/ZCReceiveTaskEntity.cs | 110 ++++ HH.WMS.WebApi/Controllers/WmsApiController.cs | 26 + HH.WMS.Entitys/HH.WMS.Entitys.csproj | 3 HH.WMS.BLL/Pda/ZCBLL.cs | 1092 ++++++++++++++++++++++++++++++++++++++++++ HH.WMS.Entitys/Dto/ZCTransferDto.cs | 34 + HH.WMS.BLL/External/WmsApiBaseBLL.cs | 41 + HH.WMS.WebApi/Extension/ExecTransferTask.cs | 18 HH.WMS.WebApi/Web.config | 8 13 files changed, 1,489 insertions(+), 26 deletions(-) diff --git a/HH.WMS.BLL/External/WmsApiBaseBLL.cs b/HH.WMS.BLL/External/WmsApiBaseBLL.cs index e40b0c7..a3e3506 100644 --- a/HH.WMS.BLL/External/WmsApiBaseBLL.cs +++ b/HH.WMS.BLL/External/WmsApiBaseBLL.cs @@ -2,6 +2,7 @@ using HH.WMS.BLL.Basic; using HH.WMS.BLL.InStock; using HH.WMS.BLL.Interface; +using HH.WMS.BLL.Pda; using HH.WMS.BLL.SysMgr; using HH.WMS.Common; using HH.WMS.Common.Algorithm; @@ -19,6 +20,7 @@ using HH.WMS.Entitys.Common; using HH.WMS.Entitys.Dto; using HH.WMS.Entitys.Entitys; +using HH.WMS.Entitys.Entitys.Mes; using HH.WMS.Entitys.External; using Newtonsoft.Json; using System; @@ -2754,5 +2756,44 @@ } } + + /// <summary> + /// 鎺ユ敹浠诲姟 + /// </summary> + /// <param name="receuveTask"></param> + /// <returns></returns> + public OperateResult ReceiveTask(ZCReceiveTaskEntity receuveTask) + { + TN_MES_TASK req = new TN_MES_TASK() + { + task_no = receuveTask.task_no, + Task_type = receuveTask.Task_type, + TurnCardNum = receuveTask.TurnCardNum, + PROD_NO = receuveTask.PROD_NO, + PROD_TECH = receuveTask.PROD_TECH, + PROD_SPEC = receuveTask.PROD_SPEC, + PROD_BOM = receuveTask.PROD_BOM, + PROD_Feature = receuveTask.PROD_Feature, + TOOLS_NO = receuveTask.TOOLS_NO, + ST_AMOUNT = receuveTask.ST_AMOUNT, + CURRENT_AMOUNT = receuveTask.CURRENT_AMOUNT, + Location_From = receuveTask.Location_From, + Location_To = receuveTask.Location_To, + PRODUCE_TIME = receuveTask.PRODUCE_TIME, + SHELF_LIFE_TIME = receuveTask.SHELF_LIFE_TIME, + EXPIRED_TIME = receuveTask.EXPIRED_TIME, + SHELF_REP = receuveTask.SHELF_REP, + EXPIRED_REP = receuveTask.EXPIRED_REP, + CHECK_CODE = receuveTask.CHECK_CODE, + CHECK_INFO = receuveTask.CHECK_INFO, + Priority = receuveTask.Priority, + Data_status = receuveTask.Data_status, + NeedTrig = "Y", + CreateDate = DateTime.Now, + BUSI_TYPE = receuveTask.BUSI_TYPE + }; + + return BLLCreator.Create<ZCBLL>().SaveTask(req); + } } } diff --git a/HH.WMS.BLL/HH.WMS.BLL.csproj b/HH.WMS.BLL/HH.WMS.BLL.csproj index b04d4d6..4c54914 100644 --- a/HH.WMS.BLL/HH.WMS.BLL.csproj +++ b/HH.WMS.BLL/HH.WMS.BLL.csproj @@ -159,6 +159,7 @@ <Compile Include="Pda\ProdBLL.cs" /> <Compile Include="Pda\NtApiBLL.cs" /> <Compile Include="Pda\YuShouApiBLL.cs" /> + <Compile Include="Pda\ZCBLL.cs" /> <Compile Include="Project\Tzlj\MesStackTrayBLL.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="SysMgr\StockInitBLL.cs" /> diff --git a/HH.WMS.BLL/Pda/ZCBLL.cs b/HH.WMS.BLL/Pda/ZCBLL.cs new file mode 100644 index 0000000..2fcedf5 --- /dev/null +++ b/HH.WMS.BLL/Pda/ZCBLL.cs @@ -0,0 +1,1092 @@ +锘縰sing 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; + } + + //鐗╂枡缂栫爜涓嶄负绌烘椂 鎵嶇粍缁嘍ata + 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>(); + + //鐗╂枡缂栫爜涓嶄负绌烘椂 鎵嶇粍缁嘍ata + 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 + { + // 浠巑ongo涓幏鍙栬揣浣嶇浉鍏崇殑淇℃伅 - 璧峰璐т綅 + AutoBomLocationEntity start_location = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetModel(task.Location_From); + // 浠巑ongo涓幏鍙栬揣浣嶇浉鍏崇殑淇℃伅 - 缁堢偣璐т綅 + 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)); + } + } + } +} diff --git a/HH.WMS.Entitys/Dto/ZCTransferDto.cs b/HH.WMS.Entitys/Dto/ZCTransferDto.cs new file mode 100644 index 0000000..f3019f9 --- /dev/null +++ b/HH.WMS.Entitys/Dto/ZCTransferDto.cs @@ -0,0 +1,34 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HH.WMS.Entitys.Dto +{ + public class ZCTransferDto + { + public ZCTransferDto() + { + moveStockEnableAms = moveStockEnableAms ?? "N"; + transferEnableAms = transferEnableAms ?? "N"; + } + + public string itemCode { get; set; } + public string itemName { get; set; } + public int transferMax { get; set; } + public string startArea { get; set; } + public string endArea { get; set; } + public DateTime startTime { get; set; } + public DateTime endTime { get; set; } + + public string workFlowCode { get; set; } + public string workFlowName { get; set; } + public string transType { get; set; } + + public string isTransport { get; set; } + + public string moveStockEnableAms { get; set; } + public string transferEnableAms { get; set; } + } +} diff --git a/HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs b/HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs new file mode 100644 index 0000000..83dd663 --- /dev/null +++ b/HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs @@ -0,0 +1,150 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HH.WMS.Entitys.Entitys.Mes +{ + /// <summary> + /// 绉婚�浠诲姟 Transport invitation + /// </summary> + [Table("TN_MES_TASK")] + public class TN_MES_TASK + { + /// <summary> + /// 浠诲姟鍙�+ /// </summary> + [Column("task_no")] + public string task_no { get; set; } + /// <summary> + /// 浠诲姟绫诲瀷1:鍏ュ簱;2:鍑哄簱;3-绌烘《浠诲姟 + /// </summary> + + [Column("Task_type")] + public int Task_type { get; set; } + /// <summary> + /// 鍛ㄨ浆鍗″彿 + /// </summary> + [Column("TurnCardNum")] + public string TurnCardNum { get; set; } + /// <summary> + /// 鍒跺搧缂栧彿 + /// </summary> + [Column("PROD_NO")] + public string PROD_NO { get; set; } + /// <summary> + /// 宸ヨ壓缂栧彿 + /// </summary> + + [Column("PROD_TECH")] + public string PROD_TECH { get; set; } + /// <summary> + /// 鍒跺搧瑙勬牸 + /// </summary> + [Column("PROD_SPEC")] + public string PROD_SPEC { get; set; } + /// <summary> + /// 鍒跺搧绫诲瀷 + /// </summary> + [Column("PROD_BOM")] + public string PROD_BOM { get; set; } + /// <summary> + /// 鍒跺搧鐗瑰緛鍊�+ /// </summary> + [Column("PROD_Feature")] + public string PROD_Feature { get; set; } + /// <summary> + /// 宸ヨ缂栧彿 + /// </summary> + [Column("TOOLS_NO")] + public string TOOLS_NO { get; set; } + /// <summary> + /// 杞芥枡鏁伴噺 + /// </summary> + [Column("ST_AMOUNT")] + public float ST_AMOUNT { get; set; } + /// <summary> + /// 褰撳墠鏁伴噺 + /// </summary> + [Column("CURRENT_AMOUNT")] + public float CURRENT_AMOUNT { get; set; } + /// <summary> + /// 璧峰搴撲綅缂栧彿 + /// </summary> + [Column("Location_From")] + public string Location_From { get; set; } + /// <summary> + /// 鐩殑搴撲綅缂栧彿 + /// </summary> + [Column("Location_To")] + public string Location_To { get; set; } + /// <summary> + /// 鐢熶骇鏃堕棿 + /// </summary> + [Column("PRODUCE_TIME")] + public DateTime PRODUCE_TIME { get; set; } + /// <summary> + /// 鐢熸晥鏃堕棿 + /// </summary> + + [Column("SHELF_LIFE_TIME")] + public DateTime SHELF_LIFE_TIME { get; set; } + /// <summary> + /// 澶辨晥鏃堕棿 + /// </summary> + [Column("EXPIRED_TIME")] + public DateTime EXPIRED_TIME { get; set; } + /// <summary> + /// 缂╃煭鎶ュ憡鏃堕棿 + /// </summary> + [Column("SHELF_REP")] + public float SHELF_REP { get; set; } + /// <summary> + /// 寤堕暱鎶ュ憡鏃堕棿 + /// </summary> + [Column("EXPIRED_REP")] + public float EXPIRED_REP{ get; set; } + /// <summary> + /// 璐ㄦ鐘舵�浠g爜 + /// </summary> + [Column("CHECK_CODE")] + public string CHECK_CODE { get; set; } + /// <summary> + /// 璐ㄦ鐘舵� + /// </summary> + [Column("CHECK_INFO")] + public string CHECK_INFO { get; set; } + /// <summary> + /// 浼樺厛绾�-鏅�锛氫换鍔$敓鎴愭椂锛屽潎涓烘绾у埆;1-鍔犳�;2-绱ф� + /// </summary> + [Column("Priority")] + public int Priority { get; set; } + /// <summary> + /// 浠诲姟鐘舵�0-鍒濆鐘舵�;1-杩涜涓�2-瀹屾垚;3-浠诲姟鍙栨秷 + /// </summary> + [Column("Data_status")] + public int Data_status { get; set; } + /// <summary> + /// 鏄惁闇�瑙﹀彂 Y/N + /// </summary> + [Column("NeedTrig")] + public string NeedTrig { get; set; } + /// <summary> + /// 鍒涘缓鏃堕棿 + /// </summary> + [Column("CreateDate")] + public DateTime CreateDate { get; set; } + /// <summary> + /// 涓氬姟绫诲瀷 + /// 1 鍗婃垚鍝佹弧鎵樺叆搴�+ /// 2 鎴愬瀷鏈哄崐鎴愬搧鍥炲簱 + /// 3 鎴愬瀷鏈虹┖妗跺洖搴�+ /// 4 鎴愬瀷鏈烘弧鎵樺嚭搴�+ /// 5 鎴愬瀷鏈哄甫鏉熷洖搴�+ /// 6 鎴愬瀷鏈哄甫鏉熸弧鎵樺嚭搴�+ /// </summary> + [Column("BUSI_TYPE")] + public string BUSI_TYPE { get; set; } + } +} diff --git a/HH.WMS.Entitys/External/ZCReceiveTaskEntity.cs b/HH.WMS.Entitys/External/ZCReceiveTaskEntity.cs new file mode 100644 index 0000000..bf3b3f0 --- /dev/null +++ b/HH.WMS.Entitys/External/ZCReceiveTaskEntity.cs @@ -0,0 +1,110 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HH.WMS.Entitys.External +{ + public class ZCReceiveTaskEntity + { + /// <summary> + /// 浠诲姟鍙�+ /// </summary> + public string task_no { get; set; } + /// <summary> + /// 浠诲姟绫诲瀷1:鍏ュ簱;2:鍑哄簱;3-绌烘《浠诲姟 + /// </summary> + public int Task_type { get; set; } + /// <summary> + /// 鍛ㄨ浆鍗″彿 + /// </summary> + public string TurnCardNum { get; set; } + /// <summary> + /// 鍒跺搧缂栧彿 + /// </summary> + public string PROD_NO { get; set; } + /// <summary> + /// 宸ヨ壓缂栧彿 + /// </summary> + public string PROD_TECH { get; set; } + /// <summary> + /// 鍒跺搧瑙勬牸 + /// </summary> + public string PROD_SPEC { get; set; } + /// <summary> + /// 鍒跺搧绫诲瀷 + /// </summary> + public string PROD_BOM { get; set; } + /// <summary> + /// 鍒跺搧鐗瑰緛鍊�+ /// </summary> + public string PROD_Feature { get; set; } + /// <summary> + /// 宸ヨ缂栧彿 + /// </summary> + public string TOOLS_NO { get; set; } + /// <summary> + /// 杞芥枡鏁伴噺 + /// </summary> + public float ST_AMOUNT { get; set; } + /// <summary> + /// 褰撳墠鏁伴噺 + /// </summary> + public float CURRENT_AMOUNT { get; set; } + /// <summary> + /// 璧峰搴撲綅缂栧彿 + /// </summary> + public string Location_From { get; set; } + /// <summary> + /// 鐩殑搴撲綅缂栧彿 + /// </summary> + public string Location_To { get; set; } + /// <summary> + /// 鐢熶骇鏃堕棿 + /// </summary> + public DateTime PRODUCE_TIME { get; set; } + /// <summary> + /// 鐢熸晥鏃堕棿 + /// </summary> + public DateTime SHELF_LIFE_TIME { get; set; } + /// <summary> + /// 澶辨晥鏃堕棿 + /// </summary> + public DateTime EXPIRED_TIME { get; set; } + /// <summary> + /// 缂╃煭鎶ュ憡鏃堕棿 + /// </summary> + public float SHELF_REP { get; set; } + /// <summary> + /// 寤堕暱鎶ュ憡鏃堕棿 + /// </summary> + public float EXPIRED_REP { get; set; } + /// <summary> + /// 璐ㄦ鐘舵�浠g爜 + /// </summary> + public string CHECK_CODE { get; set; } + /// <summary> + /// 璐ㄦ鐘舵� + /// </summary> + public string CHECK_INFO { get; set; } + /// <summary> + /// 浼樺厛绾�-鏅�锛氫换鍔$敓鎴愭椂锛屽潎涓烘绾у埆;1-鍔犳�;2-绱ф� + /// </summary> + public int Priority { get; set; } + /// <summary> + /// 浠诲姟鐘舵�0-鍒濆鐘舵�;1-杩涜涓�2-瀹屾垚;3-浠诲姟鍙栨秷 + /// </summary> + public int Data_status { get; set; } + /// <summary> + /// 涓氬姟绫诲瀷 + /// 1 鍗婃垚鍝佹弧鎵樺叆搴�+ /// 2 鎴愬瀷鏈哄崐鎴愬搧鍥炲簱 + /// 3 鎴愬瀷鏈虹┖妗跺洖搴�+ /// 4 鎴愬瀷鏈烘弧鎵樺嚭搴�+ /// 5 鎴愬瀷鏈哄甫鏉熷洖搴�+ /// 6 鎴愬瀷鏈哄甫鏉熸弧鎵樺嚭搴�+ /// </summary> + public string BUSI_TYPE { get; set; } + } +} diff --git a/HH.WMS.Entitys/HH.WMS.Entitys.csproj b/HH.WMS.Entitys/HH.WMS.Entitys.csproj index 7128a83..127bbd1 100644 --- a/HH.WMS.Entitys/HH.WMS.Entitys.csproj +++ b/HH.WMS.Entitys/HH.WMS.Entitys.csproj @@ -66,6 +66,9 @@ <Compile Include="Algorithm\TN_AB_B_ITEM_PRICEEntity.cs" /> <Compile Include="Algorithm\TN_AB_B_LOCATION_LINKEntity.cs" /> <Compile Include="Algorithm\TN_AB_STOCKEntity.cs" /> + <Compile Include="Dto\ZCTransferDto.cs" /> + <Compile Include="Entitys\Mes\TN_MES_TASK.cs" /> + <Compile Include="External\ZCReceiveTaskEntity.cs" /> <Compile Include="Wcs\WcsResponse.cs" /> <Compile Include="Ams\AmsAddTask.cs" /> <Compile Include="Ams\AmsResponse.cs" /> diff --git a/HH.WMS.WebApi/Config.json b/HH.WMS.WebApi/Config.json index 6e0167c..078671d 100644 --- a/HH.WMS.WebApi/Config.json +++ b/HH.WMS.WebApi/Config.json @@ -232,11 +232,31 @@ "isTransport": "N" } ], - //宸烽亾鎺ラ┏浣�+ //鎺ラ┏浣� "connectBit": [ { - "tunnel": "01", - "bit": "CK001-A2-01-01" + "bit": "鎺ラ┏浣嶈揣浣�, + "tasktype": "甯︽潫鍏ュ簱" + }, + { + "bit": "鎺ラ┏浣嶈揣浣�, + "tasktype": "甯︽潫鍑哄簱" + }, + { + "bit": "鎺ラ┏浣嶈揣浣�, + "tasktype": "婊℃墭鍏ュ簱" + }, + { + "bit": "鎺ラ┏浣嶈揣浣�, + "tasktype": "绌烘墭鍑哄簱" + }, + { + "bit": "鎺ラ┏浣嶈揣浣�, + "tasktype": "婊℃墭鍑哄簱" + }, + { + "bit": "鎺ラ┏浣嶈揣浣�, + "tasktype": "绌烘墭鍏ュ簱" } ] } \ No newline at end of file diff --git a/HH.WMS.WebApi/Controllers/WmsApiController.cs b/HH.WMS.WebApi/Controllers/WmsApiController.cs index 7ba2d5e..9f33b68 100644 --- a/HH.WMS.WebApi/Controllers/WmsApiController.cs +++ b/HH.WMS.WebApi/Controllers/WmsApiController.cs @@ -1076,7 +1076,33 @@ #endregion + #region 娴锋疆涓瓥 + /// <summary> + /// 浠诲姟涓嬪彂鎺ュ彛 + /// </summary> + /// <param name="jsonData"></param> + /// <returns></returns> + [HttpPost] + public object ReceiveTask(dynamic jsonData) + { + var logPara = LogType.LogPara("浠诲姟涓嬪彂"); + Log.Detail(logPara, "HCZCSendTask:浠诲姟涓嬪彂浼犻�鍙傛暟锛� + jsonData.ToString()); + + ZCReceiveTaskEntity sendTaskEntity = JsonConvert.DeserializeObject<ZCReceiveTaskEntity>(jsonData.ToString()); + + //璋冪敤ReceiveTask鏂规硶淇濆瓨鑷充腑闂村簱 + var result = BLLCreator.Create<WmsApiBaseBLL>().ReceiveTask(sendTaskEntity); + return new + { + success = result.Success, + code = result.Success ? 0 : -1, + lastTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + message = result.Msg + }; + } + + #endregion diff --git a/HH.WMS.WebApi/Extension/ExecSelfManageTask.cs b/HH.WMS.WebApi/Extension/ExecSelfManageTask.cs index 133da2d..4636ec4 100644 --- a/HH.WMS.WebApi/Extension/ExecSelfManageTask.cs +++ b/HH.WMS.WebApi/Extension/ExecSelfManageTask.cs @@ -18,7 +18,7 @@ { //闃叉Timer閲嶅叆 lock (locko) { - BLLCreator.Create<GlBLL>().SelfManageTask(); + BLLCreator.Create<ZCBLL>().SelfManageTask(); } } catch (Exception ex) diff --git a/HH.WMS.WebApi/Extension/ExecTransferTask.cs b/HH.WMS.WebApi/Extension/ExecTransferTask.cs index 4542a72..e70a607 100644 --- a/HH.WMS.WebApi/Extension/ExecTransferTask.cs +++ b/HH.WMS.WebApi/Extension/ExecTransferTask.cs @@ -28,22 +28,8 @@ { //闃叉Timer閲嶅叆 lock (locko) { - var transportReqs = BLLCreator.CreateMiddleDapper<AGV_Transport_Request>().GetList(new - { - HasBeenReceived = Constants.N - }).OrderBy(o => o.CreateDate).ToList(); - - var serviceExecs = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetList(new - { - CN_C_COMPLETE = Constants.N, - CN_S_TASK_TYPE = "绉婚�" - }); - - transportReqs = transportReqs.FindAll(f => !serviceExecs.Exists(e => e.CN_S_TASK_NO == f.TaskNo)); - if(transportReqs.Any()) - { - BLLCreator.Create<GlBLL>().ExecTransferTask(transportReqs); - } + // 浣跨敤TN_MES_TASK涓存椂琛ㄤ腑鎺ユ敹鐨凪ES浠诲姟锛屽垱寤篧MS浠诲姟 + BLLCreator.Create<ZCBLL>().ExecTransferTask(); } } catch (Exception ex) diff --git a/HH.WMS.WebApi/Web.config b/HH.WMS.WebApi/Web.config index 6a8d23a..967229d 100644 --- a/HH.WMS.WebApi/Web.config +++ b/HH.WMS.WebApi/Web.config @@ -6,8 +6,8 @@ <configuration> <connectionStrings> <!--<add name="wmsConnection" connectionString="Data Source=192.168.1.198\sql2008;Initial Catalog=HC2_WMS;User ID=sa;Password=sa@2015" providerName="System.Data.SqlClient" />--> - <add name="wmsConnection" connectionString="Data Source=192.168.1.199;Initial Catalog=GL_WMS;User ID=sa;Password=test?123" providerName="System.Data.SqlClient"/> - <add name="middleConnection" connectionString="Data Source=192.168.1.199;Initial Catalog=GL_ZJK;User ID=sa;Password=test?123" providerName="System.Data.SqlClient"/> + <add name="wmsConnection" connectionString="Data Source=192.168.1.199;Initial Catalog=ZC_WMS;User ID=sa;Password=test?123" providerName="System.Data.SqlClient"/> + <!--<add name="middleConnection" connectionString="Data Source=192.168.1.199;Initial Catalog=GL_ZJK;User ID=sa;Password=test?123" providerName="System.Data.SqlClient"/>--> <add name="DataType" connectionString="MSSQL"/> <add name="MIP" connectionString="192.168.1.198"/> <add name="MPORT" connectionString="27017"/> @@ -17,7 +17,7 @@ </connectionStrings> <appSettings> <add key="appCode" value="AutoWMS" /> - <add key="autobom_ipAddress" value="localhost:7198" /> + <add key="autobom_ipAddress" value="192.168.1.199:8113" /> <add key="ams_ipAddress" value="192.168.1.199:8614" /> <add key="wcs_ipAddress" value="wcs_ipAddress" /> <add key="RedisPath" value="123456@192.168.1.199:6379" /> @@ -25,7 +25,7 @@ <add key="KdEID" /> <add key="KdEAppKey" /> <add key="KdEReqURL" /> - <add key="AppName" value="璐靛窞杞儙" /> + <add key="AppName" value="娴锋疆涓瓥" /> <add key="AutobomApi" value="192.168.1.199:8362" /> <add key="REDIS" value="123456@192.168.1.199:6379" /> <add key="REDIS_DB" value="1" /> diff --git a/HH.WMS.WebUI/Web.config b/HH.WMS.WebUI/Web.config index 0c9318b..98ee669 100644 --- a/HH.WMS.WebUI/Web.config +++ b/HH.WMS.WebUI/Web.config @@ -12,10 +12,10 @@ <section name="ActiveReports12" type="GrapeCity.ActiveReports.Web.ActiveReportsSettingsSection"/> </configSections> <appSettings> - <add key="WmsApp" value="璐靛窞杞儙"/> + <add key="WmsApp" value="娴锋疆涓瓥"/> <add key="appCode" value="AutoWMS"/> <add key="RedisPath" value="123456@36.33.24.94:6379"/> - <add key="autobom_ipAddress" value="36.33.24.94:8362" /> + <add key="autobom_ipAddress" value="192.168.1.199:8113" /> <add key="projectCode" value="qzhk"/> <add key="DefaultDb" value="1"/> <add key="DisplayLocationBtnUserCode" value="hh"/> -- Gitblit v1.9.1