using MailKit.Search; using Masuit.Tools; using System.Linq.Expressions; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_DTO.Order; using WIDESEA_IOrderRepository; using WIDESEA_IOrderServices; using WIDESEA_IStorageTaskRepository; using WIDESEA_IStorageTaskServices; using WIDESEA_Model.Models; using WIDESEA_Model.Models.Order; namespace WIDESEA_OrderServices { public class Dt_OutboundOrderService : ServiceBase, IDt_OutboundOrderService { private readonly IUnitOfWorkManage _unitOfWorkManage; public Dt_OutboundOrderService(IDt_OutboundOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; } public override WebResponseContent AddData(SaveModel saveModel) { if (Convert.ToInt32(saveModel.MainData["orderType"])== (int)OrderTypeEmun.原材料领料单 || Convert.ToInt32(saveModel.MainData["orderType"]) == (int)OrderTypeEmun.生产领料单) { return WebResponseContent.Instance.Error("生产领料单和原材料领料单只能通过ERP推送生成"); } saveModel.MainData.Add("orderNo", GetOrderPintCode("OrderNoOut")); saveModel.MainData.Add("upperOrderNo", saveModel.MainData["orderNo"]); return base.AddData(saveModel); } public WebResponseContent GetOutboundOrder(OutboundOrderGetDTO outboundOrderGetDTO) { WebResponseContent content = new WebResponseContent(); try { Expression> expressionOrder = x => true; if (!string.IsNullOrEmpty(outboundOrderGetDTO.OrderNo)) { expressionOrder = x => x.UpperOrderNo.Contains(outboundOrderGetDTO.OrderNo); } int count = 0; if (outboundOrderGetDTO.OrderNo == "") { count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.已完成).ToList().Count(); } else { count = BaseDal.QueryData(x => x.OrderStatus != (int)OrderStateEmun.已完成 && x.UpperOrderNo == outboundOrderGetDTO.OrderNo).ToList().Count(); } int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0)); if (outboundOrderGetDTO.pageNo <= maxPage) { var outboundOrder = BaseDal.Db.Queryable().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((outboundOrderGetDTO.pageNo - 1) * 10).Take(10).Select(x => new Dt_OutboundOrder { OrderNo = x.OrderNo, Id = x.Id, MaterielCode = x.MaterielCode, UpperOrderNo = x.UpperOrderNo, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, CreateDate = x.CreateDate, Creater = x.Creater }).ToList(); content = WebResponseContent.Instance.OK(data: outboundOrder); } else { var outboundOrder = BaseDal.Db.Queryable().Where(expressionOrder).OrderByDescending(x => x.CreateDate).Skip((0) * 10).Take(10).Select(x => new Dt_OutboundOrder { OrderNo = x.OrderNo, Id = x.Id, MaterielCode = x.MaterielCode, UpperOrderNo = x.UpperOrderNo, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, CreateDate = x.CreateDate, Creater = x.Creater }).ToList(); content = WebResponseContent.Instance.OK(data: outboundOrder); //content = WebResponseContent.Instance.OK(data: null, message: "已到最后一页"); } } catch (Exception ex) { content = WebResponseContent.Instance.Error($"查询出库单据错误,错误信息:{ex.Message}"); } return content; } public WebResponseContent GetOutboundOrder(int id) { WebResponseContent content = new WebResponseContent(); try { var outboundOrderDetail = BaseDal.Db.Queryable().Where(x => x.Id == id).Take(10).Select(x => new Dt_OutboundOrder { Id = x.Id, MaterielCode = x.MaterielCode, MaterielName = x.MaterielName, OrderQuantity = x.OrderQuantity, OverOutQuantity = x.OverOutQuantity, OrderNo = x.OrderNo, UpperOrderNo = x.UpperOrderNo }).ToList().FirstOrDefault(); content = WebResponseContent.Instance.OK(data: outboundOrderDetail); } catch (Exception ex) { content = WebResponseContent.Instance.Error($"查询出库单据错误,错误信息:{ex.Message}"); } return content; } public string GetOrderPintCode(string printCode) { string PrintCode = ""; var PrintSetting = SqlSugarHelper.DbWMS.Queryable().Where(x => x.PrintCode == printCode).ToList().FirstOrDefault(); if (PrintSetting.Spare1 == DateTime.Now.ToString("yyyyMMdd")) { PrintCode = PrintSetting.Spare1 + PrintSetting.PrintNo.ToString().PadLeft(PrintSetting.Spare2, '0'); PrintSetting.PrintNo = PrintSetting.PrintNo + 1; } else { PrintSetting.Spare1 = DateTime.Now.ToString("yyyyMMdd"); PrintSetting.PrintNo = 2; PrintCode = PrintSetting.Spare1 + 1.ToString().PadLeft(PrintSetting.Spare2, '0'); } SqlSugarHelper.DbWMS.Updateable(PrintSetting).ExecuteCommand(); return PrintCode; } } }