From 4d83bc8431bb1fda7b3cef959e2505b2402285d2 Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期四, 26 十二月 2024 21:53:14 +0800
Subject: [PATCH] ·
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 215 insertions(+), 15 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
index 7c0e82c..e309926 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/ReceiveOrderService.cs"
@@ -1,4 +1,5 @@
-锘縰sing MailKit.Search;
+锘縰sing AutoMapper;
+using MailKit.Search;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -7,8 +8,12 @@
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
using WIDESEA_External.ERPService;
using WIDESEA_External.Model;
using WIDESEA_IBasicRepository;
@@ -21,13 +26,17 @@
{
public class ReceiveOrderService : ServiceBase<Dt_ReceiveOrder, IReceiveOrderRepository>, IReceiveOrderService
{
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
+ private readonly IMapper _mapper;
private readonly ICheckOrderRepository _checkOrderRepository;
private readonly IInboundRepository _inboundRepository;
private readonly IBasicRepository _basicRepository;
private readonly IInvokeERPService _invokeERPService;
- public ReceiveOrderService(IReceiveOrderRepository BaseDal, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository, IBasicRepository basicRepository, IInvokeERPService invokeERPService) : base(BaseDal)
+ public ReceiveOrderService(IReceiveOrderRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, ICheckOrderRepository checkOrderRepository, IInboundRepository inboundRepository, IBasicRepository basicRepository, IInvokeERPService invokeERPService) : base(BaseDal)
{
+ _mapper = mapper;
+ _unitOfWorkManage = unitOfWorkManage;
_checkOrderRepository = checkOrderRepository;
_inboundRepository = inboundRepository;
_basicRepository = basicRepository;
@@ -72,7 +81,11 @@
return base.AddData(saveModel);
}
-
+ /// <summary>
+ /// 鏀惰揣瀹屾垚骞跺洖浼燛RP
+ /// </summary>
+ /// <param name="orderId"></param>
+ /// <returns></returns>
public WebResponseContent FeedbackReceiveOrder(int orderId)
{
try
@@ -81,6 +94,10 @@
if (receiveOrder == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒版敹璐у崟");
+ }
+ if (receiveOrder.ReceiveOrderStatus==ReceiveOrderStatusEnum.Completed.ObjToInt())
+ {
+ return WebResponseContent.Instance.Error($"鏀惰揣鍗曞凡瀹屾垚");
}
if (receiveOrder.Details == null || receiveOrder.Details.Count == 0)
{
@@ -105,10 +122,11 @@
PriceInTax = 0,
PurchaseOrderCode = item.PurchaseOrderNo,
PurchaseOrderSerno = item.PurchaseOrderDetailRowNo,
- QtyReceived = item.ReceivedQuantity,
+ QtyRecieved = item.ReceivedQuantity.ObjToInt(),
Serno = item.RowNo,
Supplotno = "",
- Taxrate = ""
+ Taxrate = "",
+
};
recevieOrderDetails.Add(recevieOrderDetail);
}
@@ -116,29 +134,41 @@
ERPReceiveModel receiveModel = new ERPReceiveModel()
{
Code = receiveOrder.ReceiveOrderNo,
- CompanyId = "",
+ CompanyId = "HATC",
DeliveryCode = receiveOrder.DeliveryCode,
CustomerId = receiveOrder.CustomerId,
- CreatorId = receiveOrder.CustomerId,
- EndDate = receiveOrder.CreateDate,
- ReceiveDate = receiveOrder.CreateDate,
- PlantsId = "",
+ CreatorId = "TC20082",//娴嬭瘯 receiveOrder.Creater
+ EntDate = receiveOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
+ ReceiveDate = receiveOrder.ReceiveDate.ToString("yyyy-MM-dd HH:mm:ss"),
+ PlantsId = "HA02",
SuppliersId = receiveOrder.SuppliersId,
- Type = "PO",
+ Type = Enum.GetName(typeof(ReceiveOrderTypeEnum),receiveOrder.ReceiveOrderType),
UniqueTag = receiveOrder.ReceiveOrderId.ToString(),
WarehouseCode = warehouse.WarehouseCode,
Way = 1,
Details = recevieOrderDetails
};
-
- string response = _invokeERPService.InvokeMatReceiveApi(receiveModel);
-
+ //鏀惰揣鎺ㄩ�佽嚦ERP
+ string Content = _invokeERPService.InvokeMatReceiveApi(receiveModel);
+ ErpRequestContent erpRequest=Content.DeserializeObject<ErpRequestContent>();
+ if (erpRequest.res==0)
+ {
+ return WebResponseContent.Instance.Error(erpRequest.Data);
+ }
+ receiveOrder.ReceiveOrderStatus = ReceiveOrderStatusEnum.Completed.ObjToInt();
+ receiveOrder.UploadStatus = WhetherEnum.True.ObjToInt();
+ //鏇存柊鏀惰揣鍗曚俊鎭�
+ _unitOfWorkManage.BeginTran();
+ BaseDal.UpdateData(receiveOrder);
+ _unitOfWorkManage.CommitTran();
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error(ex.Message);
}
+ }
+
public WebResponseContent GetReceiveOrders(SaveModel saveModel)
{
WebResponseContent content = new WebResponseContent();
@@ -165,7 +195,11 @@
}
return content;
}
-
+ /// <summary>
+ /// 鍒涘缓鍏ュ簱鍗�
+ /// </summary>
+ /// <param name="receiveOrderId">鏀惰揣鍗曠紪鍙�</param>
+ /// <returns></returns>
public WebResponseContent CreateInboundOrder(int receiveOrderId)
{
try
@@ -197,6 +231,7 @@
Dt_InboundOrder inboundOrder = new Dt_InboundOrder()
{
+ InboundOrderNo="TestInboundNo1",//娴嬭瘯
UpperOrderNo = receiveOrder.ReceiveOrderNo,
CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
OrderStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(),
@@ -241,5 +276,170 @@
return WebResponseContent.Instance.Error(ex.Message);
}
}
+
+ public WebResponseContent ReceiveAllOrder(int purchaseOrderId, string lotNo)
+ {
+ try
+ {
+ Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().Where(x => x.Id == purchaseOrderId).Includes(x => x.Details).First();
+ if (purchaseOrder == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌閲囪喘鍗�");
+ }
+ if (purchaseOrder.Details == null || purchaseOrder.Details.Count == 0)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟鏄庣粏淇℃伅");
+ }
+ if (purchaseOrder.PurchaseOrderStatus == PurchaseOrderStatusEnum.Received.ObjToInt())
+ {
+ return WebResponseContent.Instance.Error($"宸叉敹璐у畬鎴�");
+ }
+ if (purchaseOrder.Details.FirstOrDefault(x => x.PurchaseDetailStatus == PurchaseOrderStatusEnum.NotReceived.ObjToInt()) == null)
+ {
+ return WebResponseContent.Instance.Error($"宸叉敹璐у畬鎴�");
+ }
+ List<Dt_CheckOrder> checkOrders = new List<Dt_CheckOrder>();
+ List<Dt_MaterielInfo> materielInfos = new List<Dt_MaterielInfo>();
+ List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>();
+ Dt_ReceiveOrder receiveOrder = BaseDal.Db.Queryable<Dt_ReceiveOrder>().Where(x => x.SuppliersId == purchaseOrder.SupplierCode && x.ReceiveOrderStatus != ReceiveOrderStatusEnum.Completed.ObjToInt()).Includes(x => x.Details).First();
+ if (receiveOrder == null)
+ {
+ int rowNo = 0;
+ foreach (var item in purchaseOrder.Details)
+ {
+ Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode);
+ if (materielInfo == null)
+ {
+ materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterielCode);
+ if (materielInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�");
+ }
+ materielInfos.Add(materielInfo);
+ }
+ Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail()
+ {
+ PurchaseOrderNo = purchaseOrder.PurchaseOrderNo,
+ ReceivedQuantity = item.PurchaseDetailQuantity,
+ MaterielCode = item.MaterielCode,
+ LotNo = lotNo,
+ PurchaseOrderDetailRowNo = item.RowNo,
+ IfInspection = materielInfo.IsCheck.ObjToInt(),
+ CurrCode = "",
+ PriceInTax = 0,
+ TaxRate = "",
+ RowNo = rowNo + 1,
+ Unit = item.Unit
+ };
+ rowNo += 1;
+ receiveOrderDetails.Add(receiveOrderDetail);
+
+ if (materielInfo.IsCheck == WhetherEnum.True)
+ {
+ Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
+ checkOrder.CheckOrderNo = "TestCheckNo11";//娴嬭瘯
+ checkOrder.ReceiveOrderNo = "";
+ checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity;
+ checkOrder.ScrappedQuantity = 0;
+ checkOrder.ReturnQuantity = 0;
+ checkOrder.DefectedQuantity = 0;
+ checkOrder.ReceiveDetailRowNo = rowNo;
+ checkOrder.UploadStatus = CheckUploadEnum.UploadNo.ObjToInt();
+ checkOrders.Add(checkOrder);
+ }
+ }
+ receiveOrder = new Dt_ReceiveOrder()
+ {
+ ReceiveOrderNo= "TestReceiveOrderNo11",//娴嬭瘯
+ ReceiveOrderStatus = ReceiveOrderStatusEnum.Receiving.ObjToInt(),
+ CustomerId = "",
+ DeliveryCode = "/",
+ ReceiveDate = DateTime.Now,
+ ReceiveOrderType = ReceiveOrderTypeEnum.PO.ObjToInt(),
+ SuppliersId = purchaseOrder.SupplierCode,
+ WarehouseId = purchaseOrder.Details.FirstOrDefault()?.WarehouseId ?? 0,
+ UploadStatus = WhetherEnum.False.ObjToInt(),
+ Details = receiveOrderDetails
+ };
+ }
+ else
+ {
+ int rowNo = receiveOrder.Details.Count > 0 ? receiveOrder.Details.Max(x => x.RowNo) : 0;
+
+ foreach (var item in purchaseOrder.Details)
+ {
+ Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode);
+ if (materielInfo == null)
+ {
+ materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterielCode);
+ if (materielInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡鐨勪俊鎭�");
+ }
+ materielInfos.Add(materielInfo);
+ }
+ Dt_ReceiveOrderDetail receiveOrderDetail = new Dt_ReceiveOrderDetail()
+ {
+ PurchaseOrderNo = purchaseOrder.PurchaseOrderNo,
+ ReceivedQuantity = item.PurchaseDetailQuantity,
+ MaterielCode = item.MaterielCode,
+ LotNo = lotNo,
+ ReceiveOrderId = receiveOrder.ReceiveOrderId,
+ PurchaseOrderDetailRowNo = item.RowNo,
+ IfInspection = materielInfo.IsCheck.ObjToInt(),
+ CurrCode = "",
+ PriceInTax = 0,
+ TaxRate = "",
+ RowNo = rowNo + 1,
+ Unit = item.Unit,
+
+ };
+ rowNo += 1;
+ receiveOrderDetails.Add(receiveOrderDetail);
+
+ if (materielInfo.IsCheck == WhetherEnum.True)
+ {
+ Dt_CheckOrder checkOrder = _mapper.Map<Dt_CheckOrder>(receiveOrderDetail);
+ checkOrder.CheckOrderNo = "Test-CheckNo1";//娴嬭瘯
+ checkOrder.QualifiedQuantity = receiveOrderDetail.ReceivedQuantity;
+ checkOrder.ScrappedQuantity = 0;
+ checkOrder.ReceiveOrderNo = receiveOrder.ReceiveOrderNo;
+ checkOrder.ReturnQuantity = 0;
+ checkOrder.DefectedQuantity = 0;
+ checkOrder.ReceiveDetailRowNo = rowNo;
+ checkOrder.UploadStatus = CheckUploadEnum.UploadNo.ObjToInt();
+ checkOrders.Add(checkOrder);
+ }
+ }
+ }
+
+ purchaseOrder.Details.ForEach(x => x.PurchaseDetailStatus = PurchaseOrderStatusEnum.Received.ObjToInt());
+ purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Received.ObjToInt();
+
+ _unitOfWorkManage.BeginTran();
+ if (receiveOrder.ReceiveOrderId > 0)
+ {
+ Db.Insertable(receiveOrderDetails).ExecuteCommand();
+ }
+ else
+ {
+ Db.InsertNav(receiveOrder).Include(x => x.Details).ExecuteCommand();
+ checkOrders.ForEach(x => x.ReceiveOrderNo = receiveOrder.ReceiveOrderNo);
+ }
+ if (checkOrders.Count > 0)
+ {
+ _checkOrderRepository.AddData(checkOrders);
+ }
+ _inboundRepository.PurchaseOrderRepository.UpdateData(purchaseOrder);
+ _inboundRepository.PurchaseOrderDetailRepository.UpdateData(purchaseOrder.Details);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
}
}
--
Gitblit v1.9.3