From 0705cb6170a9ba77ba48bbb6dcebb9cf3d73cbea Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 14 十月 2025 02:12:25 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 150 insertions(+), 2 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
index 5e86d4c..4473e73 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs"
@@ -3,14 +3,18 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
+using WIDESEA_External.Model;
using WIDESEA_IApprovalRepository;
+using WIDESEA_IBasicRepository;
using WIDESEA_ICheckRepository;
using WIDESEA_ICheckService;
using WIDESEA_IInboundRepository;
@@ -30,7 +34,10 @@
private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository;
private readonly IOutboundRepository _outboundRepository;
private readonly IStockRepository _stockRepository;
- public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository) : base(BaseDal)
+ private readonly IWarehouseRepository _warehouseRepository;
+ private readonly IReceiveOrderDetailRepository _receiveOrderDetailRepository;
+
+ public CheckOrderResultService(ICheckOrderResultRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICheckOrderRepository checkOrderRepository, IReceiveOrderRepository receiveOrderRepository, ICheckOrderService checkOrderService, IPurchaseOrderRepository purchaseOrderRepository, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IOutboundRepository outboundRepository, IStockRepository stockRepository,IWarehouseRepository warehouseRepository, IReceiveOrderDetailRepository receiveOrderDetailRepository) : base(BaseDal)
{
_checkOrderRepository = checkOrderRepository;
_unitOfWorkManage = unitOfWorkManage;
@@ -40,6 +47,8 @@
_purchaseOrderDetailRepository = purchaseOrderDetailRepository;
_outboundRepository = outboundRepository;
_stockRepository = stockRepository;
+ _warehouseRepository=warehouseRepository;
+ _receiveOrderDetailRepository = receiveOrderDetailRepository;
}
/// <summary>
@@ -60,6 +69,7 @@
{
return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
}
+ Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId);
Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
if (receiveOrder.ReceiveOrderStatus!=ReceiveOrderStatusEnum.Completed.ObjToInt())
{
@@ -166,6 +176,144 @@
}
return content;
}
+ public WebResponseContent CommitCheckResult(ERPCheckModel checkModel)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderNo == checkModel.Code);
+ //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗�
+ if (checkOrder == null)
+ {
+ return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
+ }
+ Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseId == checkOrder.WarehouseId);
+ //鑾峰彇鏀惰揣鍗�
+ Dt_ReceiveOrder receiveOrder = _receiveOrderRepository.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == checkOrder.ReceiveOrderNo).Includes(x => x.Details).First();
+ if (receiveOrder.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt())
+ {
+ return content.Error($"{receiveOrder.ReceiveOrderNo}鏀惰揣鍗曟湭瀹屾垚鏃犳硶璐ㄦ");
+ }
+ if (checkOrder.CheckOrderStatus == CheckOrderStatusEnum.Checked.ObjToInt())
+ {
+ return content.Error($"璇ュ崟鎹凡缁忔楠屽畬鎴�");
+ }
+ Dt_CheckOrderResult? checkOrderResult = null;
+ Dt_PurchaseOrder? purchaseOrder = null;
+ Dt_PurchaseOrderDetail? purchaseOrderDetail = null;
+ if (checkModel.Details.Count>0)
+ {
+
+ ERPCheckResult eRPCheckResult = checkModel.Details.FirstOrDefault();
+ if (eRPCheckResult.Result == CheckResultEnum.Return.ToString())//閫�璐�
+ {
+ checkOrder.DefectedNote = eRPCheckResult.Result;
+ checkOrder.ReturnQuantity += (float)Convert.ToDecimal(eRPCheckResult.Quantity);
+ }
+ else
+ {
+ return content.Error($"鏈壘鍒扮己闄风被鍨�");
+ }
+ //妫�楠岀粨鏋�
+ checkOrderResult = new Dt_CheckOrderResult()
+ {
+ Quantity = (float)Convert.ToDecimal(eRPCheckResult.Quantity),
+ CheckOrderId = checkOrder.CheckOrderId,
+ DefectCode = eRPCheckResult.DefectCode,
+ Result = eRPCheckResult.Result,
+ Note = eRPCheckResult.Note,
+ SampleCount = 0,
+ };
+ //鑾峰彇瀵瑰簲閲囪喘鍗曟墸闄ゆ敹璐ф暟閲�
+ Dt_ReceiveOrderDetail receiveOrderDetail = receiveOrder.Details.First(x => x.RowNo == checkOrder.ReceiveDetailRowNo);
+ purchaseOrder = _purchaseOrderRepository.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == receiveOrderDetail.PurchaseOrderNo).Includes(x => x.Details).Where(x => x.Details.Any(v => v.RowNo == receiveOrderDetail.PurchaseOrderDetailRowNo)).First();
+ if (purchaseOrder == null)
+ {
+ return content.Error("鏈壘鍒板搴旀敹璐ч噰璐崟");
+ }
+ purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault();
+ if (purchaseOrderDetail == null)
+ {
+ return content.Error("鏈壘鍒伴��璐у搴旂殑閲囪喘鍗曟槑缁�");
+ }
+ purchaseOrderDetail.PurchaseDetailReceiveQty -= (float)Convert.ToDecimal(eRPCheckResult.Quantity);
+ }
+ //鍒ゆ柇妫�楠屽悎鏍肩粨鏋�
+ if (checkModel.Result == CheckAcceptEnum.Accept.ToString())
+ {
+ checkOrder.Result = CheckAcceptEnum.Accept.ToString();
+ }
+ else if (checkModel.Result == CheckAcceptEnum.UnAccept.ToString())
+ {
+ checkOrder.Result = CheckAcceptEnum.UnAccept.ToString();
+ }
+ else
+ {
+ return content.Error("鏈壘鍒版楠岀被鍨�");
+ }
+ checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt();
+ List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>();
+ //鏍规嵁妫�楠屾暟閲忔墸闄ゅ悎鏍兼暟閲�
+ if (checkOrderResult != null)
+ {
+ checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity - checkOrderResult.Quantity;
+ //鏇存柊鏀惰揣妫�楠屽悎鏍兼爣璇�
+ if (warehouse.WarehouseCode == WarehouseEnum.HA152.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA58.ToString())
+ {
+ receiveOrderDetails = receiveOrder.Details.Where(x=>x.RowNo==checkOrder.ReceiveDetailRowNo).OrderByDescending(x => x.RowNo).Take((int)checkOrderResult.Quantity).ToList();
+ receiveOrderDetails.ForEach(x =>
+ {
+ x.IsCheckOk = WhetherEnum.True.ObjToInt();
+ });
+ }
+ }
+ else
+ {
+ checkOrder.QualifiedQuantity = checkOrder.ReceivedQuantity;
+ }
+ checkOrder.CheckUserName = App.User.UserName;
+
+ _unitOfWorkManage.BeginTran();
+ if (receiveOrderDetails.Count > 0)
+ {
+ _receiveOrderDetailRepository.UpdateData(receiveOrderDetails);
+ }
+ //鏇存柊閲囪喘鍗�
+ if (checkOrderResult != null && purchaseOrder != null && purchaseOrderDetail != null)
+ {
+ BaseDal.AddData(checkOrderResult);
+ if (purchaseOrder.PurchaseOrderStatus >= PurchaseOrderStatusEnum.Received.ObjToInt())
+ {
+ purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Receiving.ObjToInt();
+ _purchaseOrderRepository.UpdateData(purchaseOrder);
+ }
+ if (purchaseOrderDetail.PurchaseDetailStatus == PurchaseOrderDetailStatusEnum.Received.ObjToInt())
+ {
+ purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Receiving.ObjToInt();
+ }
+ _purchaseOrderDetailRepository.UpdateData(purchaseOrderDetail);
+ }
+ if (string.IsNullOrEmpty(checkModel.CreatorCode))
+ {
+ //ERP涓婃姤
+ WebResponseContent responseContent = _checkOrderService.FeedbackCheckResult(checkOrder, checkOrderResult != null ? new List<Dt_CheckOrderResult> { checkOrderResult } : new List<Dt_CheckOrderResult>(),warehouse);
+ if (!responseContent.Status)
+ {
+ throw new Exception(responseContent.Message);
+ }
+ }
+ checkOrder.UploadStatus = CheckUploadEnum.UploadOk.ObjToInt();
+ _checkOrderRepository.UpdateData(checkOrder);
+ _unitOfWorkManage.CommitTran();
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return content.Error($"{ex.Message}");
+ }
+ return content;
+ }
/// <summary>
/// 鎻愪氦閫佹纭缁撴灉
/// </summary>
@@ -179,7 +327,7 @@
try
{
Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId);
- //鑾峰彇璐ㄦ鍗曞搴旂殑鏀惰揣鍗�
+ //鑾峰彇璐ㄦ鍗�
if (checkOrder == null)
{
return content.Error($"鏈壘鍒拌璐ㄦ鍗�");
--
Gitblit v1.9.3