using IWareDataAccess.EF; using IWareDataAccess.Entity.Base; using IWareDataAccess.Entity.Order; using IWareDataAccess.Helper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IWareDataAccess.Order.OUTORDER { public static class OutOrderSqlFunc { /// /// 搜索表 /// /// /// /// public static List Search(OutOrderWebEntity 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); } //执行时间 if (i.Name == "doTimeStart") { f = f.And(x => x.DOTIME > value); } if (i.Name == "doTimeEnd") { f = f.And(x => x.DOTIME < value); } //修改时间 if (i.Name == "changeDateStart") { f = f.And(x => x.CHANGEDATE > value); } if (i.Name == "changeDateEnd") { f = f.And(x => x.CHANGEDATE < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } List list = edm.ORDER_OUTORDER.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList(); return list; } } /// /// 搜索视图 /// /// /// /// public static List SearchView(OutOrderWebEntity 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); } //执行时间 if (i.Name == "doTimeStart") { f = f.And(x => x.doTime > value); } if (i.Name == "doTimeEnd") { f = f.And(x => x.doTime < value); } //修改时间 if (i.Name == "changeDateStart") { f = f.And(x => x.changeDate > value); } if (i.Name == "changeDateEnd") { f = f.And(x => x.changeDate < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } List list = edm.View_ORDER_OUTORDER.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList(); return list; } } /// /// 搜索视图数量 /// /// /// /// public static int SearchViewNum(OutOrderWebEntity webEntity) { 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); } //执行时间 if (i.Name == "doTimeStart") { f = f.And(x => x.doTime > value); } if (i.Name == "doTimeEnd") { f = f.And(x => x.doTime < value); } //修改时间 if (i.Name == "changeDateStart") { f = f.And(x => x.changeDate > value); } if (i.Name == "changeDateEnd") { f = f.And(x => x.changeDate < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } int num = edm.View_ORDER_OUTORDER.Where(f.Compile()).Count(); return num; } } /// /// 添加修改 出库单 /// /// /// public static bool AddOrUpdate(OutOrderWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { ORDER_OUTORDER order = new ORDER_OUTORDER(); order = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == webEntity.outOrderCode); if (order == null) { order = new ORDER_OUTORDER(); order.ORDERSTATUS = "新建"; order.CHECKOUTNUM = 0; } else { if (order.ORDERSTATUS == "新建") { msg = "此单据已处理"; return false; } order.ORDERSTATUS = webEntity.orderStatus ?? order.ORDERSTATUS; } SYS_USER user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.userName); if (user != null) { order.CREATORID = user.ID; } if (string.IsNullOrEmpty(webEntity.orderType))//为空返回false { msg = "未选择出库类型"; return false; } else { //修改用户可以为空,[Editby kejj,20230628] if (user.SYS_USER_VS_ROLE.FirstOrDefault() == null) { msg = "用户无角色"; return false; } if ((webEntity.orderType != "空器具出库" && !webEntity.orderType.Contains("冲压待返修")) && user.SYS_USER_VS_ROLE.FirstOrDefault().SYS_ROLE.ROLENAME.Contains("冲压")) { msg = "冲压无法出零件"; return false; } } order.OUTORDERCODE = webEntity.outOrderCode ?? order.OUTORDERCODE; BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName); if (item == null) { msg = "无此零件"; return false; } order.BASE_ITEM = item; order.UPDATETIME = DateTime.Now; order.ORDERTYPE = webEntity.orderType ?? order.ORDERTYPE; order.TOTALOUTNUM = webEntity.totalOutNum ?? order.TOTALOUTNUM; order.ISFINISH = webEntity.isFinish ?? order.ISFINISH; order.TOTALWEIGHT = item.WEIGHT * order.TOTALOUTNUM ?? 0; order.CARUSERID = webEntity.CarUserId; BASE_PRODUCTIONLINE pl = edm.BASE_PRODUCTIONLINE.FirstOrDefault(x => x.PRODUCTIONLINENAME == webEntity.productionLineName); if (pl != null) { order.BASE_PRODUCTIONLINE = pl; } else { pl = edm.BASE_PRODUCTIONLINE.FirstOrDefault(x => x.PRODUCTIONLINECODE == webEntity.productionLineCode); if (pl != null) { order.BASE_PRODUCTIONLINE = pl; } } ERP_EPRORDER erpOrder = edm.ERP_EPRORDER.FirstOrDefault(x => x.ERPORDERID == webEntity.erpOrderId); if (erpOrder != null) { order.ERP_EPRORDER = erpOrder; } order.DOTIME = webEntity.doTime ?? order.DOTIME; order.CHANGEDATE = webEntity.changeDate ?? order.CHANGEDATE; order.ENABLE = webEntity.enable ?? order.ENABLE; order.TRANLINE = webEntity.tranLine ?? order.TRANLINE; order.ISERP = webEntity.isErp ?? order.ISERP; if ((order.TRANLINE ?? 0) == 0) { msg = "选择出库口"; return false; } edm.ORDER_OUTORDER.AddOrUpdateExtension(order); if (edm.SaveChanges() > 0) { return true; } else { msg = "保存失败"; return false; } } } /// /// 删除 /// /// /// public static bool Delete(OutOrderWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { ORDER_OUTORDER outOrder = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == webEntity.outOrderCode); if (outOrder == null) { //无此角色 msg = "无此订单"; return false; } else { //edm.BASE_CONTAINER_VS_ITEM.Remove(cvi); outOrder.ENABLE = 0; if (edm.SaveChanges() > 0) { 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 "OO" + time; } } /// /// 确认下发出库计划 /// /// public static bool CheckOutOrder(OutOrderWebEntity model, out string msg) { msg = ""; using (Model edm = new Model()) { ORDER_OUTORDER order = null; if (model.id != null) { order = edm.ORDER_OUTORDER.FirstOrDefault(x => x.ID == model.id); } if(!string.IsNullOrEmpty(model.outOrderCode)) { order = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == model.outOrderCode); } if (order != null) { PlaceVsContainerWebEntity pvcWeb = new PlaceVsContainerWebEntity(); pvcWeb.itemName = order.BASE_ITEM.ITEMNAME; if (order.ORDERTYPE != "空器具出库") { int num = Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.SearchItemCanUseNum(pvcWeb, out msg); if (order.TOTALOUTNUM <= num)//数量够 { order.ORDERSTATUS = "执行中"; if (edm.SaveChanges() > 0) { return true; } else { msg = "保存失败"; return false; } } else { msg = "库存不足不能下发"; return false; } } else { int num = Base.PLACEVSCONTAINER.PlaceVsContainerSqlFunc.SearchEmptyContainerPlace(pvcWeb, out msg).FirstOrDefault(x => x.titel == "有效空器具数").value; if (order.TOTALOUTNUM <= num)//数量够 { order.ORDERSTATUS = "执行中"; if (edm.SaveChanges() > 0) { return true; } else { msg = "保存失败"; return false; } } else { msg = "库存不足不能下发"; return false; } } } else { msg = "无此计划"; return false; } } } } }