using HH.WCS.Mobox3.YNJT_PT.models; using HH.WCS.Mobox3.YNJT_PT.models.other; using HH.WCS.Mobox3.YNJT_PT.util; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static HH.WCS.Mobox3.YNJT_PT.dispatch.NDC; namespace HH.WCS.Mobox3.YNJT_PT.wms { /// /// 容器帮助类 /// internal class ContainerHelper { internal static string GenerateCntrNo() { var id = SYSHelper.GetSerialNumber("托盘号", "TP"); var date = DateTime.Now.ToString("yyMMdd"); return $"TP{date}{id.ToString().PadLeft(4, '0')}"; } /// /// TN_ContainerHelper.test("4L天然水箱装6入", 50, "335ml东方树叶15入", 30); /// /// /// /// /// //internal static void test(string item1, int qty1, string item2, int qty2) { // var db = new SqlHelper().GetInstance(); // var cntr = db.Queryable().Includes(a => a.CntrItemRelList). // Where(a => a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item1 && int.Parse(b.F_QTY) > qty1) > 0 // && a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item2 && int.Parse(b.F_QTY) > qty2) > 0).First(); //} /// /// 判断容器是否有物料信息 /// /// /// internal static bool CheckEmpty(string cntr) { //1.0 查货位容器表 var db = new SqlHelper().GetInstance(); return db.Queryable().Count(a => a.S_LOC_CODE.Trim() == cntr) == 0; } internal static bool AddCntr(string cntrCode) { var res = false; var db = new SqlHelper().GetInstance(); var TN_Container = new Container { S_CODE = cntrCode }; try { res = db.Insertable(TN_Container).ExecuteCommand() > 0; } catch (Exception ex) { LogHelper.Info($"添加容器错误,错误原因:{ex.Message}", "WMS"); } return res; } internal static bool AddCntr(string cntrCode, string itemCode) { var res = false; var db = new SqlHelper().GetInstance(); var TN_Container = new Container { S_CODE = cntrCode }; var cntrItemRel = new CntrItemRel { S_CNTR_CODE = cntrCode, S_ITEM_CODE = itemCode }; try { db.BeginTran(); db.Insertable(TN_Container).ExecuteCommand(); db.Insertable(cntrItemRel).ExecuteCommand(); db.CommitTran(); res = true; } catch (Exception ex) { db.RollbackTran(); } return res; } /// /// 根据容器号获取容器信息 /// /// /// internal static Container GetCntr(string cntr, bool create = false) { //1.0 查货位容器表 var db = new SqlHelper().GetInstance(); var old = db.Queryable().Where(a => a.S_CODE == cntr).First(); if (old == null && create) { var model = new Container { S_CODE = cntr }; if (db.Insertable(model).ExecuteCommand() > 0) { old = model; } } return old; } /// /// 根据容器获取物料信息 /// /// /// internal static List GetCntrItemRel(string cntr) { var db = new SqlHelper().GetInstance(); var list = db.Queryable().Where(a => a.S_CNTR_CODE == cntr).ToList(); return list; } /// /// 根据容器获取物料信息 /// /// /// internal static bool deleteCntrItemRelByCntr(string cntr) { var db = new SqlHelper().GetInstance(); var container = ContainerHelper.GetCntr(cntr); if(container != null) { db.Deleteable().Where(a => a.S_CNTR_CODE == cntr).ExecuteCommand(); container.N_DETAIL_COUNT = 0; db.Updateable(container).ExecuteCommand(); } return true; } /// /// 添加容器物料信息 /// /// public static bool addCntrItemRel( string cntrCode,GreenTireInformation info) { bool res = false; var db = new SqlHelper().GetInstance(); var container = ContainerHelper.GetCntr(cntrCode); if (container != null) { try { db.BeginTran(); db.Deleteable().Where(a => a.S_CNTR_CODE == cntrCode).ExecuteCommand(); CntrItemRel cntrItemRel = new CntrItemRel() { S_CG_ID = info.BARCODE, S_CNTR_CODE = cntrCode, S_ITEM_CODE = info.ITEMCODE, S_CELL_NO = info.TIRECODE, F_QTY = info.QTY, S_MCN = info.MCN, S_OPR = info.OPR, S_OPR02 = info.OPR02, S_OPR03 = info.OPR03, S_OPR04 = info.OPR04, S_WINDUP = info.WINDUP, S_TXNDATE = info.TXNDATE, S_DATE_SHIFT = info.DATE_SHIFT, S_EFFECTIVE_TIME = info.S_EFFECTIVE_TIME, S_EXPIRATION_TIME = info.S_EXPIRATION_TIME, N_URGENT_FLAG = info.N_URGENT_FLAG, }; db.Insertable(cntrItemRel).ExecuteCommand(); container.N_DETAIL_COUNT = 1; db.Updateable(container).ExecuteCommand(); db.CommitTran(); res = true; } catch (Exception ex) { db.RollbackTran(); } } return res; } } }