From 734f49c3f74e4a46cfb5892ce60dbf1bb86e74ab Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期二, 22 七月 2025 19:14:39 +0800 Subject: [PATCH] 出入库流程 --- WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs | 572 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 474 insertions(+), 98 deletions(-) diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs index f6f4695..4617dd9 100644 --- a/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs +++ b/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Base/InboundOrderService.cs @@ -3,23 +3,32 @@ using SqlSugar; using System; using System.Collections.Generic; +using System.Data; +using System.Globalization; using System.Linq; using System.Reflection.Metadata; using System.Text; using System.Threading.Tasks; +using WIDESEA_BasicRepository; using WIDESEA_Common; +using WIDESEA_Common.OrderEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; +using WIDESEA_Core.CodeConfigEnum; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_Core.Utilities; using WIDESEA_DTO; +using WIDESEA_DTO.Basic; using WIDESEA_DTO.Inbound; using WIDESEA_DTO.Outbound; +using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; using WIDESEA_IInboundRepository; using WIDESEA_IInboundService; +using WIDESEA_InboundRepository; +using WIDESEA_IStockRepository; using WIDESEA_IStockService; using WIDESEA_ITaskInfoRepository; using WIDESEA_Model.Models; @@ -32,58 +41,217 @@ private readonly IMapper _mapper; private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly ITaskRepository _taskRepository; - + private readonly IInboundRepository _inboundRepository; + private readonly IBasicRepository _basicRepository; private IBasicService _basicService; private IStockService _stockService; private IInboundOrderDetailService _inboundOrderDetailService; private IInboundOrder_HtyService _inboundOrderHtyService; private IInboundOrderDetail_HtyService _inboundOrderDetail_HtyService; + private IWarehouseService _warehouseService; + private readonly IStockRepository _stockRepository; + private IPalletTypeInfoRepository _palletTypeInfoRepository; public IInboundOrderRepository Repository => BaseDal; - public InboundOrderService(IInboundOrderRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, ITaskRepository taskRepository, IBasicService basicService, IStockService stockService, IInboundOrderDetailService inboundOrderDetailService, IInboundOrder_HtyService inboundOrderHtyService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService) : base(BaseDal) + public InboundOrderService(IInboundOrderRepository BaseDal, IMapper mapper, IBasicService basicService, IBasicRepository basicRepository, IInboundRepository inboundRepository, IUnitOfWorkManage unitOfWorkManage, ITaskRepository taskRepository, IStockService stockService, IInboundOrderDetailService inboundOrderDetailService, IInboundOrder_HtyService inboundOrderHtyService, IInboundOrderDetail_HtyService inboundOrderDetail_HtyService, IWarehouseService warehouseService, IStockRepository stockRepository,IPalletTypeInfoRepository palletTypeInfoRepository) : base(BaseDal) { _mapper = mapper; _unitOfWorkManage = unitOfWorkManage; _taskRepository = taskRepository; - _basicService = basicService; _stockService = stockService; + _inboundRepository = inboundRepository; + _basicRepository = basicRepository; _inboundOrderDetailService = inboundOrderDetailService; _inboundOrderHtyService = inboundOrderHtyService; _inboundOrderDetail_HtyService = inboundOrderDetail_HtyService; + _basicService = basicService; + _warehouseService = warehouseService; + _stockRepository = stockRepository; + _palletTypeInfoRepository = palletTypeInfoRepository; } /// <summary> - /// 娣诲姞鍗曟嵁 + /// 缁勭洏 /// </summary> - /// <param name="saveModel"></param> + /// <param name="materielGroupDTO"></param> /// <returns></returns> - public override WebResponseContent AddData(SaveModel saveModel) + public WebResponseContent MaterielGroup(SaveModel saveModel) { - InboundOrderAddDTO orderAddDTO = saveModel.MainData.DicToModel<InboundOrderAddDTO>(); - orderAddDTO.Details = saveModel.DetailData.DicToIEnumerable<InboundOrderDetailAddDTO>(); - return AddInboundOrder(orderAddDTO); - } - - /// <summary> - /// 娣诲姞鍗曟嵁 - /// </summary> - /// <param name="orderAddDTO">鍗曟嵁娣诲姞DTO</param> - /// <returns></returns> - public WebResponseContent AddInboundOrder(InboundOrderAddDTO orderAddDTO) - { - WebResponseContent content = new(); + WebResponseContent content = new WebResponseContent(); try { - #region 楠岃瘉鏁版嵁 - (bool, string, object?) result = CheckInboundOrderAddData(orderAddDTO); - if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); - #endregion - Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(orderAddDTO); - inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt(); - bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); - content = WebResponseContent.Instance.OK(); + var orderNo = saveModel.MainData["orderNo"].ToString(); + var palletCode = saveModel.MainData["palletCode"].ToString(); + var warehouseId = saveModel.MainData["warehouseId"].ObjToInt(); + var Initiallife = saveModel.MainData["initiallife"].ObjToInt(); + var serNums = saveModel.DelKeys.Select(x => x.ToString()).ToList(); + Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == warehouseId); + if (warehouse == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒拌浠撳簱淇℃伅"); + } + + Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderNo == orderNo && x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).First(); + if (inboundOrder == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟淇℃伅"); + } + if (inboundOrder.Details == null || inboundOrder.Details.Count <= 0) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板叆搴撳崟鏄庣粏淇℃伅"); + } + List<MatSerNumAnalysisModel> models = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNums); + //楠岃瘉鍒ゆ柇鏃堕棿鏍煎紡 + WebResponseContent IsValidContent = IsValidMCDates(models); + if (!IsValidContent.Status) + { + return content.Error(IsValidContent.Message); + } + + string materielCode = models.FirstOrDefault()?.MaterielCode ?? ""; + Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materielCode); + if (materielInfo == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�"); + } + + List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode && x.BatchNo == (models.FirstOrDefault()?.LotNo ?? "")).ToList(); + + if (inboundOrderDetails == null || inboundOrderDetails.Count <= 0) + { + return WebResponseContent.Instance.Error($"鏈湪鍏ュ簱鍗曟槑缁嗕腑鎵惧埌璇ョ墿鏂欎俊鎭�"); + } + var inboundOrderDet = inboundOrderDetails.FirstOrDefault(); + //Dt_StockInfo? stockInfo = _stockService.StockInfoService.GetStockByPalletCode(palletCode); + + decimal beforeQuantity = 0; + + Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First(); + if (stockInfo == null) + { + stockInfo = new Dt_StockInfo() + { + BatchNo = inboundOrderDet.BatchNo, + PalletCode = palletCode, + PalletType =1,//GetPalletType(warehouse, palletCode) + IsFull = true, + StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨, + Creater = "WMS", + CreateDate = DateTime.Now, + MaterialType = (int)InventoryMaterialType.鎴愬搧, + Materialweight = 0, + Wlstatus = (int)InventoryMaterialStatus.鍚堟牸, + Mgeneratetime = DateTime.Now, + WarehouseId = warehouse.WarehouseId, + Details = new List<Dt_StockInfoDetail>() + }; + } + else + { + if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt()) + { + return WebResponseContent.Instance.Error($"鎵樼洏鍙烽噸澶�"); + } + beforeQuantity = stockInfo.Details.Sum(x => x.StockQuantity); + } + + if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ToString()) + { + stockInfo.Remark = Initiallife.ToString(); + string batchNo = models.FirstOrDefault()?.LotNo ?? ""; + //Dt_StockInfoDetail existDetail = _stockRepository.StockInfoDetailRepository.QueryFirst(x => x.BatchNo == batchNo); + //if (existDetail != null) + //{ + // return WebResponseContent.Instance.Error($"{batchNo}娴嬭瘯鏋跺凡瀛樺湪"); + //} + if (models.Count >= 2) + { + return WebResponseContent.Instance.Error($"缁勭洏鏄庣粏涓嶅敮涓�"); + } + if (palletCode.Substring(0, 1) == "6") + { + stockInfo.PalletType = PalletTypeEnum.MediumPallet.ObjToInt(); + } + else + { + stockInfo.PalletType = PalletTypeEnum.LargestPallet.ObjToInt(); + } + } + else if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ToString()) + { + if (models.Count >= 2) + { + return WebResponseContent.Instance.Error($"缁勭洏鏄庣粏涓嶅敮涓�"); + } + } + + List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>(); + foreach (var model in models) + { + Dt_InboundOrderDetail? notGroupDetail = inboundOrderDetails.Where(x => x.OrderDetailStatus <= OrderDetailStatusEnum.Inbounding.ObjToInt() && x.MaterielCode == model.MaterielCode && x.BatchNo == model.LotNo && x.OrderQuantity > x.ReceiptQuantity).FirstOrDefault(); + + if (notGroupDetail == null) + { + return WebResponseContent.Instance.Error($"璇ョ墿鏂欏湪璇ュ叆搴撳崟涓凡鍏ㄩ儴缁勭洏瀹屾垚"); + } + Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail() + { + MaterielCode = inboundOrderDet.MaterielCode, + MaterielName = inboundOrderDet.MaterielName, + OrderNo = inboundOrder.OrderNo, + BatchNo = inboundOrderDet.BatchNo, + LinId = inboundOrderDet.LinId, + StockQuantity = model.Quantity, + Status = (int)StockStatusEmun.缁勭洏鏆傚瓨, + Creater = "WMS", + CreateDate = DateTime.Now, + Id = inboundOrderDet.LinId.ObjToInt(), + }; + + if (stockInfo.Id > 0) + { + stockInfoDetail.StockId = stockInfo.Id; + } + stockInfo.Details.Add(stockInfoDetail); + + stockInfoDetails.Add(stockInfoDetail); + + decimal decimalReceiptQuantity = Convert.ToDecimal(notGroupDetail.ReceiptQuantity); + decimal decimalModelQuantity = Convert.ToDecimal(model.Quantity); + decimal decimalOrderQuantity = Convert.ToDecimal(notGroupDetail.OrderQuantity); + decimalReceiptQuantity += decimalModelQuantity; + // 妫�鏌ユ槸鍚﹁秴鍑鸿鍗曟暟閲� + if (decimalReceiptQuantity > decimalOrderQuantity) + { + return WebResponseContent.Instance.Error($"缁勭洏鏁伴噺婧㈠嚭{decimalReceiptQuantity - decimalOrderQuantity}"); + } + // 杞洖float绫诲瀷瀛樺偍锛屼絾姣旇緝鍜岃绠楅兘浣跨敤decimal瀹屾垚 + notGroupDetail.ReceiptQuantity = Convert.ToDecimal(decimalReceiptQuantity); + if (notGroupDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) + { + notGroupDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt(); + } + } + + decimal totalQuantity = stockInfo.Details.Sum(x => x.StockQuantity); + + inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt(); + + _unitOfWorkManage.BeginTran(); + if (stockInfo.Id == 0) + { + _stockRepository.StockInfoRepository.Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand(); + } + else + { + _stockRepository.StockInfoRepository.Db.UpdateNav(stockInfo).Include(x => x.Details, new UpdateNavOptions() { OneToManyInsertOrUpdate = true }).ExecuteCommand(); + } + _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetails); + _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder); + _unitOfWorkManage.CommitTran(); + content.OK(); } catch (Exception ex) { @@ -95,35 +263,220 @@ } return content; } + public int GetPalletType(Dt_Warehouse warehouse, string palletCode) + { + + if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ObjToString()) + { + Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 1)); + if (palletTypeInfo == null) + { + throw new Exception($"鎵樼洏鍙烽敊璇�"); + } + return palletTypeInfo.PalletType; + } + //else if (warehouse.WarehouseCode == WarehouseEnum.HA152.ObjToString()) + //{ + // Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 2)); + // if (palletTypeInfo == null) + // { + // throw new Exception($"鎵樼洏鍙烽敊璇�"); + // } + // return palletTypeInfo.PalletType; + //} + //else if (warehouse.WarehouseCode == WarehouseEnum.HA57.ObjToString()) + //{ + // Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 3)); + // if (palletTypeInfo == null) + // { + // throw new Exception($"鎵樼洏鍙烽敊璇�"); + // } + // return palletTypeInfo.PalletType; + //} + //else if (warehouse.WarehouseCode == WarehouseEnum.HA58.ObjToString()) + //{ + // Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 2)); + // if (palletTypeInfo == null) + // { + // throw new Exception($"鎵樼洏鍙烽敊璇�"); + // } + // return palletTypeInfo.PalletType; + //} + return -1; + } + /// <summary> + /// 鍒ゆ柇姝g‘鏃堕棿鏍煎紡 + /// </summary> + public WebResponseContent IsValidMCDates(List<MatSerNumAnalysisModel> analysisModels) + { + string[] effDates = analysisModels.Select(x => x.EffectiveDate).Distinct().ToArray(); + string[] ProDates = analysisModels.Select(x => x.ProductionDate).Distinct().ToArray(); + foreach (string effDate in effDates) + { + string format = "yyyy-MM-dd"; // 鐩爣鏍煎紡 + DateTime parsedDate; + // 瑙f瀽骞堕獙璇佹牸寮� + bool isValid = DateTime.TryParseExact( + effDate, + format, + CultureInfo.InvariantCulture, + DateTimeStyles.None, + out parsedDate + ); + + if (!isValid) + { + return WebResponseContent.Instance.Error("鏍煎紡鏃犳晥鎴栨棩鏈熶笉鍚堟硶"); + } + } + foreach (string ProDate in ProDates) + { + string format = "yyyy-MM-dd"; // 鐩爣鏍煎紡 + DateTime parsedDate; + // 瑙f瀽骞堕獙璇佹牸寮� + bool isValid = DateTime.TryParseExact( + ProDate, + format, + CultureInfo.InvariantCulture, + DateTimeStyles.None, + out parsedDate + ); + + if (!isValid) + { + return WebResponseContent.Instance.Error("鏍煎紡鏃犳晥鎴栨棩鏈熶笉鍚堟硶"); + } + } + return WebResponseContent.Instance.OK(); + } + /// <summary> /// 鍏ュ簱鍗曟嵁涓嬪彂 /// </summary> /// <param name="orderAddDTO"></param> /// <returns></returns> - public WebResponseContent AddInboundOrders(HouseInbound orderAddDTO) + public WebResponseContent AddInboundOrders(HouseInbound model) { - WebResponseContent content = new(); + WebResponseContent content = new WebResponseContent(); try { - InboundOrderAddDTO orderAddDTO1 = new InboundOrderAddDTO(); - orderAddDTO1.OrderNo = orderAddDTO.AsnNo; - orderAddDTO1.UpperOrderNo = orderAddDTO.AsnNo; - orderAddDTO1.OutWareHouse = orderAddDTO.InWarehouse; - orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode; - orderAddDTO1.InoutType = orderAddDTO.OrderType; - orderAddDTO1.OrderType = orderAddDTO.InoutType.ObjToInt(); - orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<InboundOrderDetailAddDTO>(); - #region 楠岃瘉鏁版嵁 - (bool, string, object?) result = CheckInboundOrderAddData(orderAddDTO1); - if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); - #endregion + foreach (var item in model.DetailList) + { + //鑾峰彇鐗╂枡淇℃伅 + Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterielCode); + if (materielInfo == null) + { + return content.Error($"鐗╂枡{item.MaterielCode}涓嶅瓨鍦�!"); + } + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == model.InWarehouse); + if (warehouse == null) + { + return content.Error($"鏈壘鍒颁粨搴撲俊鎭�"); + } + Dt_InboundOrder inboundOrderOld = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == model.AsnNo).Includes(x => x.Details).First(); + if (inboundOrderOld != null) + { + if (inboundOrderOld.OrderStatus != OrderDetailStatusEnum.New.ObjToInt()) + { + return content.Error($"{model.AsnNo}鍗曟嵁宸插紑濮�!"); + } + Dt_InboundOrderDetail? inboundOrderDetailOld = inboundOrderOld.Details?.FirstOrDefault(x => x.LinId == item.LinId && x.MaterielCode == item.MaterielCode); + if (inboundOrderDetailOld != null) + { + inboundOrderDetailOld.OrderQuantity += item.OrderQuantity; + _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetailOld); + } + else + { + Dt_InboundOrderDetail orderDetail = new Dt_InboundOrderDetail() + { + OrderId = inboundOrderOld.Id, + MaterielCode = item.MaterielCode, + BatchNo = "", + OrderQuantity = item.OrderQuantity, + ReceiptQuantity = 0, + OverInQuantity = 0, + OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(), + LinId = item.LinId, + MaterielName = materielInfo.MaterielName, + MaterieSpec = materielInfo.MaterieSpec + }; + _inboundRepository.InboundOrderDetailRepository.AddData(orderDetail); + } + } + else + { + Dt_InboundOrderDetail orderDetail = new Dt_InboundOrderDetail() + { + MaterielCode = item.MaterielCode, + BatchNo = item.BatchNo, + OrderQuantity = item.OrderQuantity, + ReceiptQuantity = 0, + OverInQuantity = 0, + OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(), + LinId = item.LinId, + LPNNo = item.LPN_No, + MaterielName = item.MaterielName, + MaterieSpec = item.MaterieSpec, + Creater = "涓婃父WMS" + }; - Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(orderAddDTO1); - inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt(); - inboundOrder.Creater = "WMS"; - inboundOrder.CreateDate = DateTime.Now; - bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); + Dt_InboundOrder inboundOrder = new Dt_InboundOrder() + { + OrderNo = model.AsnNo, + UpperOrderNo = model.AsnNo, + WarehouseId = warehouse.WarehouseId, + //SupplierId = "", + OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt(), + CreateType = CreateType.UpperSystemPush.ObjToInt(), + Remark = "", + TransactionCode = model.TransactionCode, + InoutType = model.OrderType, + OrderType = model.InoutType.ObjToInt(), + Creater = "涓婃父WMS", + Details = new List<Dt_InboundOrderDetail> { orderDetail } + }; + //switch (model.OrderType)//鍗曟嵁绫诲瀷 + //{ + // case 1: + // inboundOrder.OrderType = InOrderTypeEnum.Allocat.ObjToInt(); + // break; + // case 3: + // inboundOrder.OrderType = InOrderTypeEnum.CustomerRecovery.ObjToInt(); + // break; + // case 6: + // inboundOrder.OrderType = InOrderTypeEnum.SaleReturn.ObjToInt(); + // break; + // default: + // break; + //}; + Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); + } + } content = WebResponseContent.Instance.OK(); + + + + + //InboundOrderAddDTO orderAddDTO1 = new InboundOrderAddDTO(); + //orderAddDTO1.OrderNo = orderAddDTO.AsnNo; + //orderAddDTO1.UpperOrderNo = orderAddDTO.AsnNo; + //orderAddDTO1.OutWareHouse = orderAddDTO.InWarehouse; + //orderAddDTO1.TransactionCode = orderAddDTO.TransactionCode; + //orderAddDTO1.InoutType = orderAddDTO.OrderType; + //orderAddDTO1.OrderType = orderAddDTO.InoutType.ObjToInt(); + //orderAddDTO1.Details = orderAddDTO.DetailList.DicToIEnumerable<InboundOrderDetailAddDTO>(); + //#region 楠岃瘉鏁版嵁 + //(bool, string, object?) result = CheckInboundOrderAddData(orderAddDTO1); + //if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); + //#endregion + + //Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(orderAddDTO1); + //inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt(); + //inboundOrder.Creater = "WMS"; + //inboundOrder.CreateDate = DateTime.Now; + //bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); + } catch (Exception ex) { @@ -182,7 +535,7 @@ return content; } /// <summary> - /// 鍏ュ簱鍙栨秷 + /// 鍏ュ簱鍗曟嵁鍙栨秷 /// </summary> /// <param name="houseInventoryIn"></param> /// <returns></returns> @@ -194,7 +547,7 @@ InboundOrderAddDTO orderAddDTO1 = new InboundOrderAddDTO(); orderAddDTO1.OrderNo = houseCancelIn.AsnNo; orderAddDTO1.Details = houseCancelIn.DetailList.DicToIEnumerable<InboundOrderDetailAddDTO>(); - Dt_InboundOrder oldOutboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First(); + Dt_InboundOrder oldOutboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == orderAddDTO1.OrderNo).Includes(x => x.Details).First(); Dt_InboundOrderDetail dt_InboundOrderDetail = BaseDal.Db.Queryable<Dt_InboundOrderDetail>().Where(x => x.OrderId == oldOutboundOrder.Id).First(); if (oldOutboundOrder.OrderStatus != InboundStatusEnum.鏈紑濮�.ObjToInt()) { @@ -209,8 +562,8 @@ CreateType = oldOutboundOrder.CreateType, //SourceId = oldOutboundOrder.SourceId, UpperOrderNo = oldOutboundOrder.UpperOrderNo, - OrderNo = oldOutboundOrder.OrderNo, - OutWareHouse = oldOutboundOrder.OutWareHouse, + //OrderNo = oldOutboundOrder.OrderNo, + //OutWareHouse = oldOutboundOrder.OutWareHouse, TransactionCode = oldOutboundOrder.TransactionCode, InoutType = oldOutboundOrder.InoutType, OrderType = oldOutboundOrder.OrderType, @@ -218,33 +571,25 @@ CreateDate = DateTime.Now, }; _inboundOrderHtyService.AddData(inboundOrder_Hty); - - Dt_InboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_InboundOrderDetail_Hty + foreach (var item in oldOutboundOrder.Details) { - OrderId = dt_InboundOrderDetail.OrderId, - MaterielCode = dt_InboundOrderDetail.MaterielCode, - MaterielName = dt_InboundOrderDetail.MaterielName, - BatchNo = dt_InboundOrderDetail.BatchNo, - OrderQuantity = dt_InboundOrderDetail.OrderQuantity, - ReceiptQuantity = dt_InboundOrderDetail.ReceiptQuantity, - OverInQuantity = dt_InboundOrderDetail.OverInQuantity, - OrderDetailStatus = dt_InboundOrderDetail.OrderDetailStatus, - }; - _inboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty); + Dt_InboundOrderDetail_Hty dt_InboundOrderDetail_Hty = new Dt_InboundOrderDetail_Hty + { + OrderId = dt_InboundOrderDetail.OrderId, + MaterielCode = dt_InboundOrderDetail.MaterielCode, + MaterielName = dt_InboundOrderDetail.MaterielName, + BatchNo = dt_InboundOrderDetail.BatchNo, + OrderQuantity = dt_InboundOrderDetail.OrderQuantity, + ReceiptQuantity = dt_InboundOrderDetail.ReceiptQuantity, + OverInQuantity = dt_InboundOrderDetail.OverInQuantity, + OrderDetailStatus = dt_InboundOrderDetail.OrderDetailStatus, + Creater = "WMS", + CreateDate = DateTime.Now, + }; + _inboundOrderDetail_HtyService.AddData(dt_InboundOrderDetail_Hty); + _inboundOrderDetailService.DeleteData(item); + } BaseDal.DeleteData(oldOutboundOrder); - _inboundOrderDetail_HtyService.DeleteData(dt_InboundOrderDetail); - //inboundOrder_Hty.Details = oldOutboundOrder.Details; - - //#region 楠岃瘉鏁版嵁 - //(bool, string, object?) result = CheckInboundOrderAddData(orderAddDTO1); - //#endregion - - //Dt_InboundOrder inboundOrder = _mapper.Map<Dt_InboundOrder>(orderAddDTO1); - //inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt(); - //inboundOrder.OrderType = OutOrderTypeEnum.OutInventory.ObjToInt(); - //inboundOrder.Creater = "WMS"; - //inboundOrder.CreateDate = DateTime.Now; - //bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); content = WebResponseContent.Instance.OK(); } catch (Exception ex) @@ -258,37 +603,68 @@ return content; } + public WebResponseContent GetInboundOrders(SaveModel saveModel) + { + WebResponseContent content = new WebResponseContent(); + try + { + int pageNo = saveModel.MainData["pageNo"].ObjToInt(); + string? orderNo = saveModel.MainData["orderNo"].ToString(); + int warehouseId = saveModel.MainData["warehouseId"].ObjToInt(); + List<Dt_InboundOrder> dt_ReceiveOrders = new List<Dt_InboundOrder>(); + if (string.IsNullOrEmpty(orderNo)) + { + dt_ReceiveOrders = Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderStatus < InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && x.WarehouseId == warehouseId).Includes(x => x.Details).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 10); + } + else + { + dt_ReceiveOrders = Db.Queryable<Dt_InboundOrder>().Where(x => (x.OrderNo.Contains(orderNo)) && x.OrderStatus < InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && x.WarehouseId == warehouseId).Includes(x => x.Details).OrderByDescending(x => x.CreateDate).ToPageList(pageNo, 10); + } + + content.OK(data: dt_ReceiveOrders); + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } + /// <summary> /// 楠岃瘉鍗曟嵁娣诲姞DTO瀵硅薄 /// </summary> /// <param name="inboundOrderAddDTO">鍗曟嵁娣诲姞DTO</param> /// <returns></returns> - private (bool, string, object?) CheckInboundOrderAddData(InboundOrderAddDTO inboundOrderAddDTO) - { - (bool, string, object?) result1 = ModelValidate.ValidateModelData(inboundOrderAddDTO); - if (!result1.Item1) return result1; + //private (bool, string, object?) CheckInboundOrderAddData(InboundOrderAddDTO inboundOrderAddDTO) + //{ + // (bool, string, object?) result1 = ModelValidate.ValidateModelData(inboundOrderAddDTO); + // if (!result1.Item1) return result1; - (bool, string, object?) result2 = ModelValidate.ValidateModelData(inboundOrderAddDTO.Details); - if (!result2.Item1) return result2; + // (bool, string, object?) result2 = ModelValidate.ValidateModelData(inboundOrderAddDTO.Details); + // if (!result2.Item1) return result2; - //IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>(); - //if (!inOrderTypes.Contains(inboundOrderAddDTO.OrderType)) - //{ - // return (false, "鏈壘鍒拌鍗曟嵁绫诲瀷", inboundOrderAddDTO); - //} + // IEnumerable<int> inOrderTypes = Enum.GetValues<OrderTypeEmun>().Cast<int>(); + // if (!inOrderTypes.Contains(inboundOrderAddDTO.OrderType)) + // { + // return (false, "鏈壘鍒拌鍗曟嵁绫诲瀷", inboundOrderAddDTO); + // } - //List<string> materielCodes = inboundOrderAddDTO.Details.Select(x => x.MaterielCode).ToList(); - //if (!_basicService.MaterielInfoService.ExsitMateriels(materielCodes)) - //{ - // return (false, "鏈夌墿鏂欎俊鎭湭褰曞叆锛岃褰曞叆鐗╂枡淇℃伅", inboundOrderAddDTO); - //} - - if (BaseDal.QueryFirst(x => x.OrderName == inboundOrderAddDTO.orderName && !string.IsNullOrEmpty(x.OrderName)) != null) - { - return (false, "鍗曟嵁宸插瓨鍦�", inboundOrderAddDTO); - } - return (true, "鎴愬姛", inboundOrderAddDTO); - } + // List<string> materielCodes = inboundOrderAddDTO.Details.Select(x => x.MaterielCode).ToList(); + // if (!_basicService.MaterielInfoService.ExsitMateriels(materielCodes)) + // { + // return (false, "鏈夌墿鏂欎俊鎭湭褰曞叆锛岃褰曞叆鐗╂枡淇℃伅", inboundOrderAddDTO); + // } + // Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == inboundOrderAddDTO.OutWareHouse); + // if (warehouse == null) + // { + // return (false, "鏈壘鍒颁粨搴撲俊鎭�", inboundOrderAddDTO); + // } + // if (BaseDal.QueryFirst(x => x.OrderName == inboundOrderAddDTO.orderName && !string.IsNullOrEmpty(x.OrderName)) != null) + // { + // return (false, "鍗曟嵁宸插瓨鍦�", inboundOrderAddDTO); + // } + // return (true, "鎴愬姛", inboundOrderAddDTO); + //} } -- Gitblit v1.9.3