From dc06f58d8ed537555fd529551180f43a0586ec3f Mon Sep 17 00:00:00 2001 From: helongyang <647556386@qq.com> Date: 星期日, 22 六月 2025 11:44:43 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs | 395 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 328 insertions(+), 67 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" index 71cd415..a5ebece 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs" @@ -1,7 +1,9 @@ 锘� using AutoMapper; +using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -12,11 +14,16 @@ using WIDESEA_Core.BaseServices; using WIDESEA_Core.CodeConfigEnum; using WIDESEA_Core.Helper; +using WIDESEA_DTO; using WIDESEA_DTO.Basic; +using WIDESEA_DTO.QMS; +using WIDESEA_External.Model; +using WIDESEA_External.QMSService; using WIDESEA_IBasicRepository; using WIDESEA_ICheckRepository; using WIDESEA_IInboundRepository; using WIDESEA_IInboundService; +using WIDESEA_IStockRepository; using WIDESEA_Model.Models; namespace WIDESEA_InboundService @@ -28,22 +35,34 @@ private readonly IInboundRepository _inboundRepository; private readonly IBasicRepository _basicRepository; private readonly ICheckOrderRepository _checkOrderRepository; + private readonly IStockRepository _stockRepository; + private readonly ISupplierInfoRepository _supplierInfoRepository; + private readonly IInvokeQMSService _invokeQMSService; - public ReceiveOrderDetailService(IReceiveOrderDetailRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IInboundRepository inboundRepository, IBasicRepository basicRepository, ICheckOrderRepository checkOrderRepository) : base(BaseDal) + public ReceiveOrderDetailService(IReceiveOrderDetailRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IInboundRepository inboundRepository, IBasicRepository basicRepository, ICheckOrderRepository checkOrderRepository, IStockRepository stockRepository,ISupplierInfoRepository supplierInfoRepository,IInvokeQMSService invokeQMSService) : base(BaseDal) { _mapper = mapper; _unitOfWorkManage = unitOfWorkManage; _inboundRepository = inboundRepository; _basicRepository = basicRepository; _checkOrderRepository = checkOrderRepository; + _stockRepository = stockRepository; + _supplierInfoRepository = supplierInfoRepository; + _invokeQMSService = invokeQMSService; } private static object _rowNoLocker = new object(); + /// <summary> + /// 鎵爜娣诲姞鏀惰揣鍗曟槑缁嗭紙鍗曚釜锛� + /// </summary> + /// <param name="serNum">鐗╂枡鐮�</param> + /// <param name="orderNo">鏀惰揣鍗曞彿</param> + /// <returns></returns> public WebResponseContent AddReceiveOrderDetail(string serNum, string orderNo) { try { - Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.QueryFirst(x => x.ReceiveOrderNo == orderNo); + Dt_ReceiveOrder receiveOrder = _inboundRepository.ReceiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == orderNo).Includes(x => x.Details).First(); if (receiveOrder == null) { return WebResponseContent.Instance.Error($"鏈壘鍒拌鏀惰揣鍗�"); @@ -53,100 +72,313 @@ { return WebResponseContent.Instance.Error($"璇ュ崟鎹凡鏀惰揣瀹屾垚"); } - + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == receiveOrder.WarehouseId); MatSerNumAnalysisModel model = CodeAnalysisHelper.CodeAnalysis<MatSerNumAnalysisModel>(AnalysisCodeEnum.MatSerNumAnalysis, serNum); + Dt_SupplierInfo supplierInfo = _supplierInfoRepository.QueryFirst(x => x.SupplierCode == receiveOrder.SuppliersId); + //鏀惰揣澧炲姞鎵规鍗℃帶,鏌ヨ鏀惰揣鏄庣粏鏄惁鏈夊瓨鍦ㄥ悓涓�涓壒娆� + Dt_ReceiveOrderDetail receiveOrderDetailOld = _inboundRepository.ReceiveOrderDetailRepository.QueryFirst(x => x.LotNo == model.LotNo && x.MaterielCode == model.MaterielCode); + Dt_ReceiveOrder? receiveOrderOld = null; + if (receiveOrderDetailOld!=null) + { + receiveOrderOld = _inboundRepository.ReceiveOrderRepository.QueryFirst(x => x.ReceiveOrderId == receiveOrderDetailOld.ReceiveOrderId); + } + if (receiveOrderDetailOld!=null && receiveOrderOld?.WarehouseId== receiveOrder.WarehouseId) + { + return WebResponseContent.Instance.Error($"鏀惰揣鍗曞彿{receiveOrderOld.ReceiveOrderNo}涓壒娆model.LotNo}宸插瓨鍦�"); + } + //鏌ヨ搴撳瓨鎵规鏄惁鏈夊瓨鍦ㄥ悓涓�涓壒娆� + Dt_StockInfoDetail stockInfoDetail = _stockRepository.StockInfoDetailRepository.QueryFirst(x => x.BatchNo == model.LotNo && x.MaterielCode == model.MaterielCode); + Dt_StockInfo? stockInfo = null; + if (stockInfoDetail!=null) + { + stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.Id == stockInfoDetail.Id); + } + if (stockInfoDetail!=null && stockInfo?.WarehouseId==receiveOrder.WarehouseId) + { + return WebResponseContent.Instance.Error($"搴撳瓨{stockInfo.PalletCode}涓壒娆model.LotNo}宸插瓨鍦�"); + } + if (model!=null) + { + string format = "yyyy-MM-dd"; // 鐩爣鏍煎紡 + DateTime parsedDate; + // 瑙f瀽楠岃瘉鏍煎紡 + bool isValidEffDate = DateTime.TryParseExact( + model.EffectiveDate, + format, + CultureInfo.InvariantCulture, + DateTimeStyles.None, + out parsedDate + ); + bool isValidProDate = DateTime.TryParseExact( + model.ProductionDate, + format, + CultureInfo.InvariantCulture, + DateTimeStyles.None, + out parsedDate + ); + if (!isValidEffDate || !isValidProDate) + { + return WebResponseContent.Instance.Error("鏍煎紡鏃犳晥鎴栨棩鏈熶笉鍚堟硶"); + } + } Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == model.MaterielCode); if (materielInfo == null) { return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�"); } - - Dt_PurchaseOrder purchaseOrder = _inboundRepository.PurchaseOrderRepository.QueryFirst(x => x.PurchaseOrderNo == model.PurchaseOrderNo); + //璇ユ敹璐у崟浠撳簱鏄惁鏈夎鐗╂枡 + if (materielInfo.WarehouseId != receiveOrder.WarehouseId) + { + return WebResponseContent.Instance.Error($"璇ョ墿鏂欎笉灞炰簬璇ヤ粨搴�"); + } + //鏃犻噰璐崟杩涜鏀惰揣 + if (receiveOrder.ReceiveOrderType != ReceiveOrderTypeEnum.PO.ObjToInt()) + { + //鑾峰彇鍏蜂綋鎵规鍙婄墿鏂� + Dt_ReceiveOrderDetail? detailNoPo = receiveOrder.Details.FirstOrDefault(x => x.LotNo == model.LotNo && x.MaterielCode == model.MaterielCode); + lock (_rowNoLocker) + { + if (detailNoPo != null) + { + //鍘熸湁鏀惰揣鏄庣粏澧炲姞鏀惰揣鏁伴噺 + detailNoPo.ReceivedQuantity += model.Quantity; + _unitOfWorkManage.BeginTran(); + BaseDal.UpdateData(detailNoPo); + _unitOfWorkManage.CommitTran(); + } + else + { + int rowNo = 0; + if (receiveOrder.Details.Count > 0) + { + rowNo = receiveOrder.Details.Max(x => x.RowNo); + } + Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() + { + PurchaseOrderNo = model.PurchaseOrderNo, + ReceivedQuantity = model.Quantity, + MaterielCode = model.MaterielCode, + LotNo = model.LotNo, + MaterielName = materielInfo.MaterielName, + MaterielSpec = materielInfo.MaterielSpec, + ReceiveOrderId = receiveOrder.ReceiveOrderId, + PurchaseOrderDetailRowNo = rowNo + 1, + IfInspection = materielInfo.IsCheck.ObjToInt(), + CurrCode = "", + PriceInTax = 0, + TaxRate = "", + RowNo = rowNo + 1, + Unit = materielInfo.MaterielUnit + }; + if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt()) + { + receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(); + } + _unitOfWorkManage.BeginTran(); + _inboundRepository.ReceiveOrderDetailRepository.AddData(receiveOrderDetail); + _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); + #region 娉ㄩ噴 + if (materielInfo.IsCheck == WhetherEnum.True) + { + Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); + checkOrder.OrderType = CheckTypeEnum.ReceiveCheck.ObjToInt(); + checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; + checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; + checkOrder.ReceiveDetailRowNo = receiveOrderDetail.RowNo; + checkOrder.ScrappedQuantity = 0; + checkOrder.ReturnQuantity = 0; + checkOrder.DefectedQuantity = 0; + _checkOrderRepository.AddData(checkOrder); + } + #endregion + _unitOfWorkManage.CommitTran(); + } + return WebResponseContent.Instance.OK(); + } + } + Dt_PurchaseOrder purchaseOrder = _inboundRepository.PurchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == model.PurchaseOrderNo).Includes(x => x.Details).First(); if (purchaseOrder == null) { return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗�"); } - + if (purchaseOrder.Details.Count == 0) + { + return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗曟槑缁嗘暟鎹�"); + } if (purchaseOrder.SupplierCode != receiveOrder.SuppliersId) { return WebResponseContent.Instance.Error($"渚涘簲鍟嗕笉涓�鑷�,璇锋柊寤烘敹璐у崟"); } - if (purchaseOrder.PurchaseOrderStatus == PurchaseOrderStatusEnum.Received.ObjToInt()) { return WebResponseContent.Instance.Error($"璇ラ噰璐崟鏀惰揣宸插畬鎴�"); } - - List<Dt_PurchaseOrderDetail> purchaseOrderDetails = _inboundRepository.PurchaseOrderDetailRepository.QueryData(x => x.PurchaseOrderId == purchaseOrder.Id); - if (purchaseOrderDetails == null || purchaseOrderDetails.Count == 0) - { - return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗曟槑缁嗘暟鎹�"); - } - - Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrderDetails.FirstOrDefault(x => x.PurchaseDetailQuantity == model.Quantity && x.MaterielCode == model.MaterielCode && x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt()); + Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrder.Details.Where(x => x.MaterielCode == model.MaterielCode && (x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt() || x.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Receiving.ObjToInt())).OrderBy(x=>x.Id).FirstOrDefault(); if (purchaseOrderDetail == null) { - if (purchaseOrderDetails.Count > 0) - { - return WebResponseContent.Instance.Error($"璇ユ槑缁嗘敹璐у凡瀹屾垚"); - } - return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑閲囪喘鍗曟槑缁嗘暟鎹�"); + return WebResponseContent.Instance.Error($"璇ラ噰璐崟鏄庣粏鏀惰揣宸插畬鎴�"); } - Dt_ReceiveOrderDetail detail = BaseDal.QueryFirst(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo); - if (detail != null) + //鍒ゆ柇璇ラ噰璐崟鏄庣粏鏄惁宸插瓨鍦ㄦ槑缁� + List<Dt_ReceiveOrderDetail> details = receiveOrder.Details.Where(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo && x.MaterielCode == model.MaterielCode).ToList(); + if (details.Count >0 && details.Sum(x=>x.ReceivedQuantity) == purchaseOrderDetail.PurchaseDetailQuantity) { - return WebResponseContent.Instance.Error($"璇ユ槑缁嗘敹璐у凡瀹屾垚"); + return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏄庣粏宸叉敹璐�"); } - + //鑾峰彇鍏蜂綋鎵规鍙婄墿鏂� + Dt_ReceiveOrderDetail? detail = details.FirstOrDefault(x => x.LotNo == model.LotNo && x.MaterielCode==model.MaterielCode); lock (_rowNoLocker) { - int rowNo = 0; - List<Dt_ReceiveOrderDetail> receiveOrderDetails = BaseDal.QueryData(x => x.ReceiveOrderId == receiveOrder.ReceiveOrderId); - if (receiveOrderDetails != null && receiveOrderDetails.Count > 0) + if (detail != null) { - rowNo = receiveOrderDetails.Max(x => x.RowNo); + //鍘熸湁鏀惰揣鏄庣粏澧炲姞鏀惰揣鏁伴噺 + detail.ReceivedQuantity += model.Quantity; + purchaseOrderDetail.PurchaseDetailReceiveQty += model.Quantity; + if (purchaseOrderDetail.PurchaseDetailReceiveQty > purchaseOrderDetail.PurchaseDetailQuantity) + { + return WebResponseContent.Instance.Error($"閲囪喘鍗曡鍙穥purchaseOrderDetail.RowNo}鐗╂枡{purchaseOrderDetail.MaterielCode}鏁伴噺婧㈠嚭:{purchaseOrderDetail.PurchaseDetailReceiveQty - purchaseOrderDetail.PurchaseDetailQuantity}"); + } + if (purchaseOrderDetail.PurchaseDetailReceiveQty == purchaseOrderDetail.PurchaseDetailQuantity) + { + purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); + } + else + { + purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt(); + } + float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty); + if (purchaseOrder.OrderQuantity == sumQty) + { + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); + } + else + { + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt(); + } + _unitOfWorkManage.BeginTran(); + _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); + BaseDal.UpdateData(detail); + _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); + _unitOfWorkManage.CommitTran(); + } + else + { + int rowNo = 0; + if (receiveOrder.Details.Count > 0) + { + rowNo = receiveOrder.Details.Max(x => x.RowNo); + } + Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() + { + PurchaseOrderNo = model.PurchaseOrderNo, + ReceivedQuantity = model.Quantity, + MaterielCode = model.MaterielCode, + LotNo = model.LotNo, + MaterielName=materielInfo.MaterielName, + MaterielSpec=materielInfo.MaterielSpec, + ReceiveOrderId = receiveOrder.ReceiveOrderId, + PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo, + IfInspection = materielInfo.IsCheck.ObjToInt(), + CurrCode = "", + PriceInTax = 0, + TaxRate = "", + RowNo = rowNo + 1, + Unit = purchaseOrderDetail.Unit + }; + if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt()) + { + receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(); + } + //鍒ゆ柇閲囪喘鏄庣粏鏁伴噺 + if (purchaseOrderDetail.PurchaseDetailQuantity < model.Quantity) + { + return WebResponseContent.Instance.Error($"璇锋牳瀵归噰璐崟璇ョ墿鏂欐暟閲�"); + } + if (purchaseOrderDetail.PurchaseDetailReceiveQty > 0) + { + purchaseOrderDetail.PurchaseDetailReceiveQty += model.Quantity; + } + else + { + purchaseOrderDetail.PurchaseDetailReceiveQty = model.Quantity; + } + if (purchaseOrderDetail.PurchaseDetailReceiveQty > purchaseOrderDetail.PurchaseDetailQuantity) + { + return WebResponseContent.Instance.Error($"閲囪喘鍗曡鍙穥purchaseOrderDetail.RowNo}鐗╂枡{purchaseOrderDetail.MaterielCode}鏁伴噺婧㈠嚭:{purchaseOrderDetail.PurchaseDetailReceiveQty - purchaseOrderDetail.PurchaseDetailQuantity}"); + } + if (purchaseOrderDetail.PurchaseDetailQuantity == purchaseOrderDetail.PurchaseDetailReceiveQty) + { + purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); + } + else + { + purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt(); + } + float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty); //+ model.Quantity + _unitOfWorkManage.BeginTran(); + BaseDal.AddData(receiveOrderDetail); + if (purchaseOrder.OrderQuantity == sumQty) + { + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt(); + _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); + } + if(purchaseOrder.PurchaseOrderStatus== PurchaseOrderStatusEnum.NotReceived.ObjToInt()) + { + purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt(); + _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder); + } + _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); + _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); + if (materielInfo.IsCheck == WhetherEnum.True) + { + Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); + checkOrder.OrderType = CheckTypeEnum.ReceiveCheck.ObjToInt(); + checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; + checkOrder.Result = CheckAcceptEnum.NotCheckAccept.ToString(); + checkOrder.QualifiedQuantity = 0; + checkOrder.ReceiveDetailRowNo = receiveOrderDetail.RowNo; + checkOrder.WarehouseId = receiveOrder.WarehouseId; + checkOrder.ScrappedQuantity = 0; + checkOrder.MaterielSpec = materielInfo.MaterielSpec; + checkOrder.ReturnQuantity = 0; + checkOrder.DefectedQuantity = 0; + int id = _checkOrderRepository.AddData(checkOrder); + QMSReceiveCheckModel qMSReceiveCheck = new QMSReceiveCheckModel() + { + UniqueTag = id.ToString(), + EntryNumber = receiveOrder.ReceiveOrderNo, + MaterialCode = receiveOrderDetail.MaterielCode, + MaterialName = receiveOrderDetail.MaterielName, + Quantity = (decimal)receiveOrderDetail.ReceivedQuantity, + SupplierCode = receiveOrder.SuppliersId, + SupplierName = supplierInfo.SupplierName, + BatchNumber = receiveOrderDetail.LotNo, + DeliveryNumber = receiveOrder.DeliveryCode, + PurchaseNumber = receiveOrderDetail.PurchaseOrderNo, + RowNumber = receiveOrderDetail.RowNo, + WarehouseCode = warehouse.WarehouseCode, + ReceiptDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + Remark = " " + }; + //璋冪敤QMS鏉ユ枡妫�楠屾帴鍙� + string response = _invokeQMSService.InvokeReceiveCheckApi(qMSReceiveCheck); + MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>(); + if (!mesResponseContent.BSucc) + { + throw new Exception(mesResponseContent.StrMsg); + } + ReceiveResultDTO? receiveResult = JsonConvert.DeserializeObject<ReceiveResultDTO>(mesResponseContent.Content.ToString()); + if (receiveResult == null) + { + throw new Exception("鎺ユ敹QMS缁撴灉澶辫触"); + } + Dt_CheckOrder _CheckOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == id); + _CheckOrder.CheckOrderNo = receiveResult.InspectionNumber; + _checkOrderRepository.UpdateData(_CheckOrder); + } + _unitOfWorkManage.CommitTran(); } - Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail() - { - PurchaseOrderNo = model.PurchaseOrderNo, - ReceivedQuantity = model.Quantity, - MaterielCode = model.MaterielCode, - LotNo = model.LotNo, - ReceiveOrderId = receiveOrder.ReceiveOrderId, - PurchaseOrderDetailRowNo = purchaseOrderDetail.RowNo, - IfInspection = materielInfo.IsCheck.ObjToInt(), - CurrCode = "", - PriceInTax = 0, - TaxRate = "", - RowNo = rowNo + 1, - Unit = purchaseOrderDetail.Unit - }; - - if (receiveOrder.ReceiveOrderStatus == ReceiveOrderStatusEnum.NotStarted.ObjToInt()) - { - receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(); - } - purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt(); - - _unitOfWorkManage.BeginTran(); - BaseDal.AddData(receiveOrderDetail); - _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder); - _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail); - - if (materielInfo.IsCheck == WhetherEnum.True) - { - Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail); - checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo; - checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity; - checkOrder.ScrappedQuantity = 0; - checkOrder.ReturnQuantity = 0; - checkOrder.DefectedQuantity = 0; - _checkOrderRepository.AddData(checkOrder); - } - - _unitOfWorkManage.CommitTran(); return WebResponseContent.Instance.OK(); } } @@ -156,6 +388,35 @@ return WebResponseContent.Instance.Error(ex.Message); } } + public WebResponseContent ScaninnerCode(string innerCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + var innerCodes = innerCode.Split(','); + var matCode = innerCodes.FirstOrDefault(x => x.Contains("M:"));//.Replace("M:", ""); + if (matCode == null) throw new Exception("鏈幏鍙栧埌鐗╂枡鐮�"); + var batchNo = innerCodes.FirstOrDefault(x => x.Contains("BS:"));//.Replace("BS:", "") + if (batchNo == null) throw new Exception("鏈幏鍙栧埌鎵规鍙�"); + var purchaseOrderNo = innerCodes.FirstOrDefault(x => x.Contains("PO:"));//.Replace("PO:", "") + if (purchaseOrderNo == null) throw new Exception("鏈幏鍙栧埌閲囪喘鍗曞彿"); + var qty = innerCodes.FirstOrDefault(x => x.Contains("Q:")); + if (qty == null) throw new Exception("鏈幏鍙栧埌鏁伴噺"); + InnerCodeDTO innerCodeDTO = new InnerCodeDTO() + { + matCode = matCode.Replace("M:", ""), + batchNo = batchNo.Replace("BS:", ""), + purchaseOrderNo = purchaseOrderNo.Replace("PO:", ""), + qty = Convert.ToInt32(qty.Replace("Q:", "")) + }; + content.OK("鎵弿鎴愬姛", data: innerCodeDTO); + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } public WebResponseContent GetReceiveOrderInfos(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); -- Gitblit v1.9.3