From cbf06cbb2e7988fdee53507dede034756ebfbf59 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期二, 14 一月 2025 15:47:40 +0800
Subject: [PATCH] 1
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderDetailService.cs | 211 ++++++++++++++++++++++++++++++++++++----------------
1 files changed, 147 insertions(+), 64 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 e60bbc5..5d8b6f2 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"
@@ -49,7 +49,7 @@
{
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($"鏈壘鍒拌鏀惰揣鍗�");
@@ -67,92 +67,146 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�");
}
-
- Dt_PurchaseOrder purchaseOrder = _inboundRepository.PurchaseOrderRepository.QueryFirst(x => x.PurchaseOrderNo == model.PurchaseOrderNo);
+ //璇ユ敹璐у崟浠撳簱鏄惁鏈夎鐗╂枡
+ if (materielInfo.WarehouseId != receiveOrder.WarehouseId)
+ {
+ return WebResponseContent.Instance.Error($"璇ョ墿鏂欎笉灞炰簬璇ヤ粨搴�");
+ }
+ 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())).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)
+ //鍒ゆ柇鏄惁瀛樺湪瀵瑰簲閲囪喘鏄庣粏鐨勬敹璐ф槑缁�
+ Dt_ReceiveOrderDetail? detail = receiveOrder.Details.FirstOrDefault(x => x.PurchaseOrderNo == model.PurchaseOrderNo && x.PurchaseOrderDetailRowNo == purchaseOrderDetail.RowNo);
+ if (detail != null && detail.ReceivedQuantity == purchaseOrderDetail.PurchaseDetailQuantity)
{
- return WebResponseContent.Instance.Error($"璇ユ槑缁嗘敹璐у凡瀹屾垚");
+ return WebResponseContent.Instance.Error($"璇ユ敹璐у崟鏄庣粏宸叉敹璐�");
}
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 = detail.ReceivedQuantity;
+ if (purchaseOrderDetail.PurchaseDetailReceiveQty > purchaseOrderDetail.PurchaseDetailQuantity)
+ {
+ return WebResponseContent.Instance.Error($"閲囪喘鍗曡鐗╂枡鏁伴噺鍜屾敹璐ф暟閲忎笉涓�鑷�");
+ }
+ if (purchaseOrderDetail.PurchaseDetailReceiveQty == purchaseOrderDetail.PurchaseDetailQuantity)
+ {
+ purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.ObjToInt();
+ }
+ else
+ {
+ purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt();
+ }
+ float sumQty = purchaseOrder.Details.Sum(x => x.PurchaseDetailReceiveQty)+ model.Quantity;
+ 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,
+ 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($"閲囪喘鍗曡鐗╂枡鏁伴噺鍜屾敹璐ф暟閲忎笉涓�鑷�");
+ }
+ if (purchaseOrderDetail.PurchaseDetailQuantity == purchaseOrderDetail.PurchaseDetailReceiveQty)
+ {
+ purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Received.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);
+ }
+ _inboundRepository.ReceiveOrderRepository.UpdateData(receiveOrder);
+ _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrderDetail);
+ #region 娉ㄩ噴
+ //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);
+ //}
+ #endregion
+ _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();
}
}
@@ -162,6 +216,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