From 06a8b6963d6d4f229d4e196b4b09ce57e2cbf2dd Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期四, 24 七月 2025 17:21:40 +0800 Subject: [PATCH] 印尼佳通-GT服务开发 --- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs | 294 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 154 insertions(+), 140 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs index 3cce68b..b314fce 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs @@ -1,4 +1,5 @@ 锘縰sing HH.WCS.Mobox3.FJJF.models; +using HH.WCS.Mobox3.FJJT.dispatch; using HH.WCS.Mobox3.FJJT.models; using HH.WCS.Mobox3.FJJT.models.other; using HH.WCS.Mobox3.FJJT.util; @@ -17,6 +18,7 @@ using System.Threading.Tasks; using System.Web.UI.WebControls; using static HH.WCS.Mobox3.FJJT.api.ApiModel; +using static HH.WCS.Mobox3.FJJT.util.ExcetionHelper; using static HH.WCS.Mobox3.FJJT.util.Settings; namespace HH.WCS.Mobox3.FJJT.wms { @@ -214,66 +216,6 @@ /// <summary> - /// 鏌ヨ閫昏緫閰嶇疆琛�- /// </summary> - /// <param name="taskType">浠诲姟绫诲瀷</param> - /// <returns></returns> - internal static List<LogicConfig> getLogicConfigByTaskType(string taskType) - { - var db = new SqlHelper<object>().GetInstance(); - var logicConfigList = db.Queryable<LogicConfig>() - .Where(a => a.S_TASK_TYPE.Trim() == taskType && a.S_ENABLE.Trim() == "鏄�) - .OrderBy(a => a.S_PRI) - .ToList(); - return logicConfigList; - } - - /// <summary> - /// 鏌ヨ閫昏緫閰嶇疆琛�- /// </summary> - /// <param name="hcLocCode">琛ョ┖缂撳瓨浣�/param> - /// <returns></returns> - internal static LogicConfig getLogicConfigByHcLoc(string hcLocCode) - { - var db = new SqlHelper<object>().GetInstance(); - var logicConfig = db.Queryable<LogicConfig>() - .Where(a => a.S_LKBKHCLOC.Trim() == hcLocCode && a.S_ENABLE.Trim() == "鏄�) - .OrderBy(a => a.S_PRI) - .First(); - return logicConfig; - } - - /// <summary> - /// 鏌ヨ閫昏緫閰嶇疆琛�- /// </summary> - /// <param name="mtjbLoc">婊℃枡鎺ラ┏浣�/param> - /// <returns></returns> - internal static LogicConfig getLogicConfigByMtjbLoc(string mtjbLoc) - { - var db = new SqlHelper<object>().GetInstance(); - var logicConfig = db.Queryable<LogicConfig>() - .Where(a => a.S_MTJBLOC.Trim() == mtjbLoc && a.S_ENABLE.Trim() == "鏄�) - .OrderBy(a => a.S_PRI) - .First(); - return logicConfig; - } - - /// <summary> - /// 鏌ヨ閫昏緫閰嶇疆琛�- /// </summary> - /// <param name="jtCode"></param> - /// <returns></returns> - internal static LogicConfig getLogicConfigByJtCode(string jtCode) - { - var db = new SqlHelper<object>().GetInstance(); - var logicConfig = db.Queryable<LogicConfig>() - .Where(a => a.S_JT_CODE.Trim() == jtCode && a.S_ENABLE.Trim() == "鏄�) - .OrderBy(a => a.S_PRI) - .First(); - return logicConfig; - } - - /// <summary> /// 鏌ヨ鏌愪釜鐗╂枡鍦ㄤ腑杞簱鐨勫簱瀛樹俊鎭� /// </summary> /// <param name="itemCode"></param> @@ -282,7 +224,7 @@ { DateTime inboundTime = DateTime.MinValue; var db = new SqlHelper<object>().GetInstance(); - string areaCode = Settings.areaPropertyList.Where(a => a.areaName.Contains("涓浆搴�)).Select(a => a.areaCode).FirstOrDefault(); + string areaCode = Settings.areaRelevanceList.Where(a => a.areaCode.Contains("ZZFZLKQ")).Select(a => a.areaCode).FirstOrDefault(); if (areaCode != null) { inboundTime = db.Queryable<CntrItemRel>() @@ -328,7 +270,7 @@ } else { - List<string> areaCodes = Settings.areaPropertyList.Select(a => a.areaCode).ToList(); + List<string> areaCodes = Settings.areaRelevanceList.Select(a => a.areaCode).ToList(); queryable = queryable.Where((a, b, c, d) => areaCodes.Contains(a.S_AREA_CODE.Trim())); } if (traySatus == 0) @@ -518,6 +460,31 @@ } /// <summary> + /// 鏌ヨ鏈夌┖宸ヨ鐨勫浐瀹氱┖宸ヨ鍑哄簱绔欏彴 + /// </summary> + /// <param name="areaCode"></param> + /// <returns></returns> + public static Location GetFullFixedOutLoc(string areaCode) + { + var db = new SqlHelper<object>().GetInstance(); + return db.Queryable<Location>() + .LeftJoin<TransfeRelevance>((a,b) => b.S_LOC_CODE == a.S_CODE) + .Where((a, b) => a.S_AREA_CODE.Trim() == areaCode && b.N_IS_FIXED_OUT == 1 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 1).First(); + } + + /// <summary> + /// 鏌ヨ鎵�湁绌虹殑鍥哄畾绌哄伐瑁呭嚭搴撶珯鍙�+ /// </summary> + /// <returns></returns> + public static List<Location> GetEmptyFixedOutLocList() + { + var db = new SqlHelper<object>().GetInstance(); + return db.Queryable<Location>() + .LeftJoin<TransfeRelevance>((a, b) => b.S_LOC_CODE == a.S_CODE) + .Where((a, b) => b.N_IS_FIXED_OUT == 1 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0).ToList(); + } + + /// <summary> /// 鏌ヨ鎺ラ┏浣嶅叧鑱斿睘鎬� /// </summary> /// <param name="locCode"></param> @@ -588,6 +555,59 @@ return query.First(); } + public static BufferLocConfig GetBufferLocConfig(string locCode) + { + var db = new SqlHelper<object>().GetInstance(); + return db.Queryable<BufferLocConfig>().Where(a => a.S_LOC_CODE == locCode).First(); + } + + public static BufferLocConfig GetBufferLocConfigByJtNo(string jtNo) + { + var db = new SqlHelper<object>().GetInstance(); + return db.Queryable<BufferLocConfig>().Where(a => a.S_OFF_LINE_JT_NO == jtNo).First(); + } + + /// <summary> + /// 鏌ヨ绌哄伐瑁呯紦瀛樹綅(闈炵洿杩� + /// </summary> + /// <param name="areaCode"></param> + /// <returns></returns> + public static Location getEmptyBufferLoc(string areaCode) + { + var db = new SqlHelper<object>().GetInstance(); + var emptyBufferLocList = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == areaCode && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").ToList(); + if (emptyBufferLocList.Count > 0) + { + foreach (var bufferLoc in emptyBufferLocList) + { + var bufferLocConfig = GetBufferLocConfig(bufferLoc.S_CODE); + + return bufferLoc; + // 涓氬姟浠g爜锛屽嬁鍒�+ /* var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { bufferLocConfig.S_DEVICE_NO }); + if (deviceStatusDatas != null && deviceStatusDatas.Count > 0) + { + var deviceStatus = deviceStatusDatas[0]; + if (deviceStatus.workStatus == 1 && deviceStatus.manualStatus == 0) + { + return bufferLoc; + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); + throw new BusinessException($"璁惧鍙�{bufferLocConfig.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); + } + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); + throw new BusinessException($"璁惧鍙�{bufferLocConfig.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); + }*/ + } + } + return null; + } + //------------------------------------------------MES涓棿琛�---------------------------------------------- @@ -613,15 +633,18 @@ if (mesTask != null) { // 2.璇诲彇鎵樼洏鐗╂枡淇℃伅琛�- res = updateCarrier(mesTask.PALLET_ID); - if (res) + var container = ContainerHelper.GetCntr(mesTask.PALLET_ID); + if (container != null) { - mesTask.AGVORDER_ID = taskNo; - mesTask.RETURN_CODE = "1"; - mesTask.RECEIVE_FLAG = "COMPLETE"; - mesTask.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - db.Updateable(mesTask).ExecuteCommand(); + container.N_DETAIL_COUNT = mesTask.QTY == 0 ? 0 : 1; + ContainerHelper.UpdateCntr(container); + updateCarrier(mesTask.PALLET_ID); } + mesTask.AGVORDER_ID = taskNo; + mesTask.RETURN_CODE = "1"; + mesTask.RECEIVE_FLAG = "COMPLETE"; + mesTask.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + db.Updateable(mesTask).ExecuteCommand(); } else { @@ -643,88 +666,79 @@ { bool res = true; var db = new SqlHelper<object>().GetInstance(); - var container = ContainerHelper.GetCntr(palletId); - if (container != null) + // 1.璇诲彇鎵樼洏鐗╂枡淇℃伅琛�+ var lotCarrier = db.Queryable<LjLotCarrier>().Where(a => a.RECEIVE_FLAG.Trim() == "PENDING" && a.PALLET_ID == palletId).OrderByDescending(a => a.CREATION_DATE).First(); + if (lotCarrier != null) { - // 1.璇诲彇鎵樼洏鐗╂枡淇℃伅琛�- var lotCarrier = db.Queryable<LjLotCarrier>().Where(a => a.RECEIVE_FLAG.Trim() == "PENDING" && a.PALLET_ID == palletId).OrderByDescending(a => a.CREATION_DATE).First(); - if (lotCarrier != null) + CntrItemRel cntrItemRel = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == palletId).First(); + if (cntrItemRel != null) { - CntrItemRel cntrItemRel = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == palletId).First(); - if (cntrItemRel != null) + cntrItemRel.S_CNTR_CODE = lotCarrier.PALLET_ID; + cntrItemRel.S_BATCH_NO = lotCarrier.LOT_NAME; + cntrItemRel.S_SERIAL_NO = lotCarrier.YCL_BATCH; + cntrItemRel.S_ITEM_CODE = lotCarrier.MATERIALCODE; + cntrItemRel.F_QTY = lotCarrier.QTY; + cntrItemRel.D_PRD_DATE = lotCarrier.PRODUCTION_DATE; + cntrItemRel.S_ITEM_STATE = lotCarrier.QC_STATUS; + cntrItemRel.D_EXP_DATE = lotCarrier.SHELFLIFE_DATE; + cntrItemRel.D_EXP_DATE1 = lotCarrier.MINSHELFLIFE_DATE; + db.Updateable(cntrItemRel).ExecuteCommand(); + } + else + { + cntrItemRel = new CntrItemRel() { - cntrItemRel.S_CNTR_CODE = lotCarrier.PALLET_ID; - cntrItemRel.S_BATCH_NO = lotCarrier.LOT_NAME; - cntrItemRel.S_SERIAL_NO = lotCarrier.YCL_BATCH; - cntrItemRel.S_ITEM_CODE = lotCarrier.MATERIALCODE; - cntrItemRel.F_QTY = lotCarrier.QTY; - cntrItemRel.D_PRD_DATE = lotCarrier.PRODUCTION_DATE; - cntrItemRel.S_ITEM_STATE = lotCarrier.QC_STATUS; - cntrItemRel.D_EXP_DATE = lotCarrier.SHELFLIFE_DATE; - cntrItemRel.D_EXP_DATE1 = lotCarrier.MINSHELFLIFE_DATE; - db.Updateable(cntrItemRel).ExecuteCommand(); + S_CNTR_CODE = lotCarrier.PALLET_ID, + S_BATCH_NO = lotCarrier.LOT_NAME, + S_SERIAL_NO = lotCarrier.YCL_BATCH, + S_ITEM_CODE = lotCarrier.MATERIALCODE, + F_QTY = lotCarrier.QTY, + D_PRD_DATE = lotCarrier.PRODUCTION_DATE, + S_ITEM_STATE = lotCarrier.QC_STATUS, + D_EXP_DATE = lotCarrier.SHELFLIFE_DATE, + D_EXP_DATE1 = lotCarrier.MINSHELFLIFE_DATE, + }; + db.Insertable(cntrItemRel).ExecuteCommand(); + } + + lotCarrier.RECEIVE_FLAG = "COMPLETE"; + lotCarrier.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd"); + db.Updateable(lotCarrier).UpdateColumns(a => new { a.RECEIVE_FLAG, a.RECEIVE_DATE }).ExecuteCommand(); + + // 璇诲彇鍩虹鐗╂枡淇℃伅琛�+ var material = db.Queryable<LjItem>().Where(a => a.RECEIVE_FLAG.Trim() == "PENDING" && a.MATERIAL_CODE == lotCarrier.MATERIALCODE).OrderByDescending(a => a.CREATION_DATE).First(); + if (material != null) + { + TN_Material tn_material = db.Queryable<TN_Material>().Where(a => a.S_ITEM_CODE == material.MATERIAL_CODE).First(); + + if (tn_material != null) + { + tn_material.S_ITEM_CODE = material.MATERIAL_CODE; + tn_material.S_ITEM_NAME = material.MATERIAL_NAME; + tn_material.S_SPEC = material.SPEC; + tn_material.S_MODEL = material.MODEL; + tn_material.S_UNIT = material.UNIT; + tn_material.S_MEMO = material.MEMO; + db.Updateable(material).ExecuteCommand(); } else { - cntrItemRel = new CntrItemRel() + tn_material = new TN_Material() { - S_CNTR_CODE = lotCarrier.PALLET_ID, - S_BATCH_NO = lotCarrier.LOT_NAME, - S_SERIAL_NO = lotCarrier.YCL_BATCH, - S_ITEM_CODE = lotCarrier.MATERIALCODE, - F_QTY = lotCarrier.QTY, - D_PRD_DATE = lotCarrier.PRODUCTION_DATE, - S_ITEM_STATE = lotCarrier.QC_STATUS, - D_EXP_DATE = lotCarrier.SHELFLIFE_DATE, - D_EXP_DATE1 = lotCarrier.MINSHELFLIFE_DATE, + S_ITEM_CODE = material.MATERIAL_CODE, + S_ITEM_NAME = material.MATERIAL_NAME, + S_SPEC = material.SPEC, + S_MODEL = material.MODEL, + S_UNIT = material.UNIT, + S_MEMO = material.MEMO, }; - db.Insertable(cntrItemRel).ExecuteCommand(); + db.Insertable(material).ExecuteCommand(); } - lotCarrier.RECEIVE_FLAG = "COMPLETE"; - lotCarrier.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd"); - db.Updateable(lotCarrier).UpdateColumns(a => new { a.RECEIVE_FLAG, a.RECEIVE_DATE }).ExecuteCommand(); - - // 璇诲彇鍩虹鐗╂枡淇℃伅琛�- var material = db.Queryable<LjItem>().Where(a => a.RECEIVE_FLAG.Trim() == "PENDING" && a.MATERIAL_CODE == lotCarrier.MATERIALCODE).OrderByDescending(a => a.CREATION_DATE).First(); - if (material != null) - { - TN_Material tn_material = db.Queryable<TN_Material>().Where(a => a.S_ITEM_CODE == material.MATERIAL_CODE).First(); - - if (tn_material != null) - { - tn_material.S_ITEM_CODE = material.MATERIAL_CODE; - tn_material.S_ITEM_NAME = material.MATERIAL_NAME; - tn_material.S_SPEC = material.SPEC; - tn_material.S_MODEL = material.MODEL; - tn_material.S_UNIT = material.UNIT; - tn_material.S_MEMO = material.MEMO; - db.Updateable(material).ExecuteCommand(); - } - else - { - tn_material = new TN_Material() - { - S_ITEM_CODE = material.MATERIAL_CODE, - S_ITEM_NAME = material.MATERIAL_NAME, - S_SPEC = material.SPEC, - S_MODEL = material.MODEL, - S_UNIT = material.UNIT, - S_MEMO = material.MEMO, - }; - db.Insertable(material).ExecuteCommand(); - } - - material.RECEIVE_FLAG = "COMPLETE"; - material.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd"); - db.Updateable(material).ExecuteCommand(); - } + material.RECEIVE_FLAG = "COMPLETE"; + material.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd"); + db.Updateable(material).ExecuteCommand(); } - } - else - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"鏈湪WMS绯荤粺涓煡璇㈠埌瀹瑰櫒淇℃伅,瀹瑰櫒缂栫爜锛歿palletId}"); - res = false; } return res; } -- Gitblit v1.9.1