using IWareDataAccess.EF; using IWareDataAccess.Entity.Base; using IWareDataAccess.Entity.Summary; using IWareDataAccess.Helper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IWareDataAccess.Base.PLACEVSCONTAINER { public static class PlaceVsContainerSqlFunc { /// /// 搜索表 /// /// /// /// public static List Search(PlaceVsContainerWebEntity webEntity, int page, int onePageNum, out string msg) { msg = ""; using (Model edm = new Model()) { var f = PredicateBuilder.True(); //便利所有属性 Type type = webEntity.GetType(); foreach (var i in type.GetProperties()) { object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); if (i.PropertyType == typeof(String)) { string value; if (v != null) { value = v.ToString(); f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); } } else if (i.PropertyType == typeof(DateTime?)) { if (v != null) { DateTime value = DateTime.Parse(v.ToString()); if (i.Name == "updateTimeStart") { f = f.And(x => x.UPDATETIME > value); } if (i.Name == "updateTimeEnd") { f = f.And(x => x.UPDATETIME < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } List list = edm.BASE_PLACE_VS_CONTAINER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList(); return list; } } /// /// 搜索视图 /// /// /// /// public static List SearchView(PlaceVsContainerWebEntity webEntity, int page, int onePageNum, out int totalnum, out string msg) { msg = ""; using (Model edm = new Model()) { if (!string.IsNullOrEmpty(webEntity.isEmptyContainer)) { webEntity.enable2 = null; } Dictionary parm = new Dictionary(); var f = PredicateBuilder.True(); //便利所有属性 Type type = webEntity.GetType(); foreach (var i in type.GetProperties()) { object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); if (i.PropertyType == typeof(String)) { string value; if (v != null) { value = v.ToString(); f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); parm.Add(i.Name, value); } } else if (i.PropertyType == typeof(DateTime?)) { if (v != null) { DateTime value = DateTime.Parse(v.ToString()); if (i.Name == "updateTimeStart") { f = f.And(x => x.updateTime > value); parm.Add("updateTime", value); } if (i.Name == "updateTimeEnd") { f = f.And(x => x.updateTime < value); parm.Add("updateTime", value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); parm.Add(i.Name, v); } } } List list = new List(); View_BASE_PLACE_VS_CONTAINER pvi = new View_BASE_PLACE_VS_CONTAINER(); var data = SearchHelper.GetSearchData(edm, page, onePageNum, out totalnum, parm, pvi); list = data; return list; } } /// /// 搜索视图数量 /// /// /// /// public static int SearchViewNum(PlaceVsContainerWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { var f = PredicateBuilder.True(); //便利所有属性 Type type = webEntity.GetType(); foreach (var i in type.GetProperties()) { object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); if (i.PropertyType == typeof(String)) { string value; if (v != null) { value = v.ToString(); f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); } } else if (i.PropertyType == typeof(DateTime?)) { if (v != null) { DateTime value = DateTime.Parse(v.ToString()); if (i.Name == "updateTimeStart") { f = f.And(x => x.updateTime > value); } if (i.Name == "updateTimeEnd") { f = f.And(x => x.updateTime < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } int num = 0; //补丁 if (string.IsNullOrEmpty(webEntity.itemName)) { num = edm.View_BASE_PLACE_VS_CONTAINER.Where(f.Compile()).Count(); } else { num = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.itemName.Contains(webEntity.itemName)).Where(f.Compile()).Count(); } return num; } } /// /// 搜索总库存数量 /// /// /// /// public static int SearchItemAllNum(PlaceVsContainerWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { var f = PredicateBuilder.True(); //便利所有属性 Type type = webEntity.GetType(); foreach (var i in type.GetProperties()) { object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); if (i.PropertyType == typeof(String)) { string value; if (v != null) { value = v.ToString(); f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); } } else if (i.PropertyType == typeof(DateTime?)) { if (v != null) { DateTime value = DateTime.Parse(v.ToString()); if (i.Name == "updateTimeStart") { f = f.And(x => x.updateTime > value); } if (i.Name == "updateTimeEnd") { f = f.And(x => x.updateTime < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } int num = edm.View_BASE_PLACE_VS_CONTAINER.Where(x => x.itemName.Contains(webEntity.itemName)).Where(f.Compile()).Sum(x => x.itemNum) ?? 0; return num; } } /// /// 搜索有效库存数量 /// /// /// /// public static int SearchItemCanUseNum(PlaceVsContainerWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { //int numCanUse = edm.BASE_CONTAINER_VS_ITEM.Where(x => (x.OUTPLANID ?? 0) == 0 && x.BASE_ITEM.ITEMNAME==webEntity.itemName && x.ENABLE==1).Sum(x => x.ITEMNUM) ?? 0; int numCanUse = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.BASE_ITEM.ITEMNAME == webEntity.itemName && x.ENABLE == 1).Sum(x => x.ITEMNUM) ?? 0; List orderList = edm.ORDER_OUTORDER.Where(x => x.BASE_ITEM.ITEMNAME == webEntity.itemName && x.ORDERSTATUS == "执行中" && x.ENABLE == 1).ToList(); foreach (var i in orderList) { numCanUse = numCanUse - ((i.TOTALOUTNUM ?? 0) - (i.CHECKOUTNUM ?? 0)); } return numCanUse; } } /// /// 添加修改 /// /// /// public static bool Add(PlaceVsContainerWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { BASE_PLACE_VS_CONTAINER pvc = new BASE_PLACE_VS_CONTAINER(); pvc = edm.BASE_PLACE_VS_CONTAINER.FirstOrDefault(x => x.PVCCODE == webEntity.pvcCode); if (pvc != null) { //msg = "此库存编号已存在"; //return false; } else { pvc = new BASE_PLACE_VS_CONTAINER(); pvc.STATUS = "IN"; pvc.BASE_PLACE.ISFULL = 1; } BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName); if (container == null) { msg = "无此托盘"; return false; } pvc.BASE_CONTAINER = container; BASE_PLACE place = edm.BASE_PLACE.FirstOrDefault(x => x.PLACE == webEntity.place); if (place == null) { msg = "无此库位"; return false; } if (place.ISFULL == 1) { msg = "此库位已有东西"; return false; } pvc.BASE_PLACE = place; pvc.UPDATETIME = DateTime.Now; pvc.ENABLE = webEntity.enable ?? pvc.ENABLE; pvc.PVCCODE = webEntity.pvcCode ?? pvc.PVCCODE; edm.BASE_PLACE_VS_CONTAINER.AddOrUpdateExtension(pvc); if (edm.SaveChanges() > 0) { return true; } else { msg = "保存失败"; return false; } } } /// /// 删除 /// /// /// public static bool Delete(PlaceVsContainerWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { BASE_PLACE_VS_CONTAINER pvc = edm.BASE_PLACE_VS_CONTAINER.FirstOrDefault(x => x.BASE_PLACE.PLACE == webEntity.place); if (pvc == null) { msg = "无此库存"; return false; } else { ///更改库位状态 var place = edm.BASE_PLACE.FirstOrDefault(x => x.ID == pvc.PLACEID); if (place != null) { place.ISFULL = 0; } ///删除托盘物料关系 var cvilst = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.CONTAINERID == pvc.CONTAINERID).ToList(); if (cvilst != null && cvilst.Count > 0) { edm.BASE_CONTAINER_VS_ITEM.RemoveRange(cvilst); } ///删除托盘库位关系 edm.BASE_PLACE_VS_CONTAINER.Remove(pvc); if (edm.SaveChanges() > 0) { //记录删除托盘和物料绑定关系日志 【Editby shaoc,2023-03-07】 IWareDataAccess.Helper.Helper.LogRemoveBASE_CONTAINER_VS_ITEM(cvilst, "PlaceVsContainerSqlFunc.Delete", "删除"); WZ.Useful.Commons.LogTextHelper.WriteLine("PlaceVsContainerSqlFunc", "Delete", "成功删除" + pvc.BASE_PLACE.PLACE + ",器具" + pvc.BASE_CONTAINER.CONTAINERNAME); return true; } else { msg = "保存失败"; return false; } } } } /// /// 获取组盘号 /// /// public static string GetCode() { using (Model edm = new Model()) { string month = DateTime.Now.Month.ToString("00"); string day = DateTime.Now.Day.ToString("00"); string hour = DateTime.Now.Hour.ToString("00"); string minute = DateTime.Now.Minute.ToString("00"); string second = DateTime.Now.Second.ToString("00"); string millSecond = DateTime.Now.Millisecond.ToString("0000"); string time = DateTime.Now.Year.ToString() + month + day + hour + minute + second + millSecond; return "PC" + time; } } public static List SearchEmptyContainerPlace(PlaceVsContainerWebEntity model, out string msg) { msg = ""; using (Model edm = new Model()) { var item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == model.itemName); int allcout = 0; int cout = 0; if (item != null && !string.IsNullOrEmpty(item.USECONTAINERTYPE)) { List typeList = item.USECONTAINERTYPE.Split(',').ToList(); foreach (var i in typeList) { var place = edm.BASE_PLACE_VS_CONTAINER.Where(x => x.BASE_CONTAINER.BASE_CONTAINER_VS_ITEM.Count == 0 && i.Contains(x.BASE_CONTAINER.CONTAINERTYPE)).ToList(); allcout = (place == null ? 0 : place.Select(x => x.CONTAINERID).ToList().Distinct().ToList().Count) + allcout; cout = (place == null ? 0 : place.Where(x => x.STATUS == "IN").Select(x => x.CONTAINERID).ToList().Distinct().ToList().Count) + cout; } } List hndlst = new List(); hndlst.Add(new HomeNumDataEntity() { no = 1, titel = "总空器具数", value = allcout }); hndlst.Add(new HomeNumDataEntity() { no = 2, titel = "有效空器具数", value = cout }); return hndlst; } } } }