using HH.WCS.NongFuChaYuan.OtherService; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WCS.NongFuChaYuan.WmsService { /// /// 容器帮助类 /// internal class ContainerHelper { internal static string GenerateCntrNo() { var date = DateTime.Now.ToString("yyMMdd"); var id = SYSHelper.GetSerialNumber(date, "TP"); return $"TP{date}{id.ToString().PadLeft(4, '0')}"; } /// /// 根据容器类型、目的地、状态查询容器 /// /// /// /// /// internal static List GetCntrListByPurpose(string dest, string cntrType, string state) { //1.0 查货位容器表 var db = new SqlHelper().GetInstance(); var list = db.Queryable().Where(a => a.S_DEST == dest && a.S_TYPE == cntrType && a.S_CNTR_STATE == state).ToList(); return list; } /// /// 判断容器是否有物料信息 /// /// /// 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 Container GetCntr(string cntr) { //1.0 查货位容器表 var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.S_CNTR_CODE == cntr).First(); } /// /// 根据容器获取物料信息 /// /// /// 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 BindCntrItem(Container cntr, string itemCode, string batchNo, string qty) { var res = false; var db = new SqlHelper().GetInstance(); try { db.BeginTran(); db.Updateable(cntr).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand(); //1.将原有容器物料信息删除 db.Deleteable().Where(it => it.S_CNTR_CODE == cntr.S_CNTR_CODE.Trim()).ExecuteCommand(); //2.插入新的容器物料信息(容器号不变) var cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CNTR_CODE.Trim(), S_BATCH_NO = batchNo, F_QTY = qty, S_ITEM_CODE = itemCode }; db.Insertable(cir).ExecuteCommand(); db.Ado.CommitTran(); res = true; } catch (Exception ex) { db.Ado.RollbackTran(); } return res; } /// /// 根据容器来源和状态获取托盘 /// /// /// /// internal static List GetCntr(string dest, string state, string cntrType = "") { var db = new SqlHelper().GetInstance(); if (cntrType == "") { return db.Queryable().Where(a => a.S_DEST == dest && a.S_CNTR_STATE == state).ToList(); } else { return db.Queryable().Where(a => a.S_DEST == dest && a.S_CNTR_STATE == state && a.S_TYPE == cntrType).ToList(); } } internal static bool UpdateCntr(List cntrs, string dest, string state) { var res = false; var db = new SqlHelper().GetInstance(); var models = db.Queryable().Where(a => cntrs.Contains(a.S_CNTR_CODE)).ToList(); if (models.Count > 0) { models.ForEach(a => { a.S_DEST = dest; a.S_CNTR_STATE = state; db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.S_CNTR_STATE }).ExecuteCommand(); }); res = true; } return res; } internal static bool UpdateCntrDest(List cntrs, string dest) { var res = false; var db = new SqlHelper().GetInstance(); var models = db.Queryable().Where(a => cntrs.Contains(a.S_CNTR_CODE)).ToList(); if (models.Count > 0) { models.ForEach(a => { a.S_DEST = dest; db.Updateable(a).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand(); }); res = true; } return res; } /// /// 更新托盘来源 /// /// /// /// internal static bool UpdateCntrSrc(string cntr, string src) { var res = false; var db = new SqlHelper().GetInstance(); var model = db.Queryable().Where(a => a.S_CNTR_CODE == cntr).First(); if (model != null) { model.S_SRC = src; model.T_MODIFY = DateTime.Now; res = db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.T_MODIFY }).ExecuteCommand() > 0; } return res; } internal static bool UpdateCntrState(List cntrs, string state) { var res = false; var db = new SqlHelper().GetInstance(); var models = db.Queryable().Where(a => cntrs.Contains(a.S_CNTR_CODE)).ToList(); if (models.Count > 0) { models.ForEach(a => { a.S_CNTR_STATE = state; db.Updateable(a).UpdateColumns(it => new { it.S_CNTR_STATE }).ExecuteCommand(); }); res = true; } return res; } internal static bool UpdateCntr(List cntrs, string src, string dest, string state) { var res = false; var db = new SqlHelper().GetInstance(); var models = db.Queryable().Where(a => cntrs.Contains(a.S_CNTR_CODE)).ToList(); if (models.Count > 0) { models.ForEach(a => { a.S_DEST = dest; a.S_CNTR_STATE = state; a.S_SRC = src; db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.S_CNTR_STATE, it.S_SRC }).ExecuteCommand(); }); res = true; } return res; } public static bool ClearCntrInfo(string cntr) { var db = new SqlHelper().GetInstance(); var model = db.Queryable().Where(a => a.S_CNTR_CODE == cntr).First(); if (model != null) { model.S_SRC = ""; model.S_DEST = ""; model.S_CNTR_STATE = ""; model.T_MODIFY = DateTime.Now; } db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.S_DEST, it.S_CNTR_STATE, it.T_MODIFY }).ExecuteCommand(); return db.Deleteable().Where(a => a.S_CNTR_CODE.Trim() == cntr.Trim()).ExecuteCommand() > 0; } internal static List GetCntrBySrc(string src, string state, string cntrType = "") { var db = new SqlHelper().GetInstance(); if (cntrType == "") { return db.Queryable().Where(a => a.S_SRC == src && a.S_CNTR_STATE == state).ToList(); } else { return db.Queryable().Where(a => a.S_SRC == src && a.S_CNTR_STATE == state && a.S_TYPE == cntrType).ToList(); } } } }