From 9a886d711d8b21adc335fdf8c39350584c7ba6fd Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 14 十月 2025 02:12:14 +0800
Subject: [PATCH] 更新代码,取消MES出库单号同步标识,平库转立库功能,寄售周期判断取消,精品标识等
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs | 101 +++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 91 insertions(+), 10 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs"
index fd2344f..03267dc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs"
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing SqlSugar;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -11,6 +12,7 @@
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
+using WIDESEA_DTO.Basic;
using WIDESEA_IBasicRepository;
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
@@ -24,14 +26,66 @@
private readonly IUnitOfWorkManage _unitOfWorkManage;
private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository;
private readonly IBasicRepository _basicRepository;
+ private readonly ISupplierInfoRepository _supplierInfoRepository;
+ private readonly IMaterielInfoRepository _materielInfoRepository;
- public PurchaseOrderService(IPurchaseOrderRepository BaseDal, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IUnitOfWorkManage unitOfWorkManage,IBasicRepository basicRepository) : base(BaseDal)
+ public PurchaseOrderService(IPurchaseOrderRepository BaseDal, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IUnitOfWorkManage unitOfWorkManage, IBasicRepository basicRepository, ISupplierInfoRepository supplierInfoRepository, IMaterielInfoRepository materielInfoRepository) : base(BaseDal)
{
_purchaseOrderDetailRepository = purchaseOrderDetailRepository;
_unitOfWorkManage = unitOfWorkManage;
_basicRepository = basicRepository;
+ _supplierInfoRepository = supplierInfoRepository;
+ _materielInfoRepository = materielInfoRepository;
}
+ public override PageGridData<Dt_PurchaseOrder> GetPageData(PageDataOptions options)
+ {
+ PageGridData<Dt_PurchaseOrder> pageGridData = base.GetPageData(options);
+
+ ISugarQueryable<Dt_PurchaseOrder> sugarQueryable1 = BaseDal.Db.Queryable<Dt_PurchaseOrder>().Includes(x => x.Details);
+ if (!string.IsNullOrEmpty(options.Wheres))
+ {
+
+ List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+ int totalCount = 0;
+ if (searchParametersList.Count > 0)
+ {
+ {
+ SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_PurchaseOrderDetail.MaterielCode).FirstLetterToLower());
+ if (searchParameters != null)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(v => v.MaterielCode.Contains(searchParameters.Value)));
+ List<Dt_PurchaseOrder> dataList = sugarQueryable1.ToPageList(options.Page, options.Rows, ref totalCount);
+ return new PageGridData<Dt_PurchaseOrder>(totalCount, dataList);
+ }
+ }
+
+ {
+ SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_PurchaseOrderDetail.WarehouseId).FirstLetterToLower());
+ if (searchParameters != null && int.TryParse(searchParameters.Value, out int warehouseId))
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x =>x.Details.Any(v => v.WarehouseId == warehouseId));
+ List<Dt_PurchaseOrder> dataList = sugarQueryable1.ToPageList(options.Page, options.Rows, ref totalCount);
+ return new PageGridData<Dt_PurchaseOrder>(totalCount, dataList);
+ }
+ }
+ }
+ }
+ return pageGridData;
+ }
+ public WebResponseContent GetPurchaseOrderInfo(string purchaseOrderNo)
+ {
+ try
+ {
+ Dt_PurchaseOrder purchaseOrder = BaseDal.Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == purchaseOrderNo).Includes(x => x.Details).First();
+ List<string> MaterielCodes = purchaseOrder.Details.Where(x => x.PurchaseDetailStatus != PurchaseOrderDetailStatusEnum.Received.ObjToInt()).Select(x => x.MaterielCode).ToList();
+ return WebResponseContent.Instance.OK(data: MaterielCodes);
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
public WebResponseContent ReceivePurchaseOrder(PurchaseOrderModel model)
{
try
@@ -59,19 +113,32 @@
{
return WebResponseContent.Instance.Error($"閲囪喘鍗曞彿閲嶅");
}
+ if (_supplierInfoRepository.QueryFirst(x => x.SupplierCode == model.SCode) == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒颁緵搴斿晢缂栫爜銆恵model.SCode}銆戠殑淇℃伅");
+ }
List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData();
- List<Dt_PurchaseOrderDetail> purchaseOrderDetails = new List<Dt_PurchaseOrderDetail>();
+ List<Dt_MaterielInfo> materielInfos = _materielInfoRepository.QueryData();
+ List<Dt_PurchaseOrderDetail> purchaseOrderDetails = new List<Dt_PurchaseOrderDetail>();
foreach (var item in model.MList)
{
Dt_Warehouse? warehouse = warehouses.FirstOrDefault(x => x.WarehouseCode == item.WaId);
- if(warehouse == null)
+ if (warehouse == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
+ }
+ Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MCode);
+ if (materielInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒扮墿鏂欑紪鐮併�恵item.MCode}銆戠殑淇℃伅");
}
Dt_PurchaseOrderDetail purchaseOrderDetail = new Dt_PurchaseOrderDetail()
{
MaterielCode = item.MCode,
+ MaterielName = materielInfo.MaterielName,
+ MaterielSpec = materielInfo.MaterielSpec,
PurchaseDetailQuantity = item.Qty,
+ PurchaseDetailReceiveQty = 0,
PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt(),
Unit = item.Unit,
WarehouseId = warehouse.WarehouseId,
@@ -105,7 +172,7 @@
{
try
{
- Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().First(x => x.PurchaseOrderNo == model.OrderNo);
+ Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == model.OrderNo).Includes(x => x.Details).First();
if (purchaseOrder == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟淇℃伅");
@@ -114,7 +181,12 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟鏄庣粏淇℃伅");
}
+ if (_supplierInfoRepository.QueryFirst(x => x.SupplierCode == model.SCode) == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒颁緵搴斿晢缂栫爜銆恵model.SCode}銆戠殑淇℃伅");
+ }
List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData();
+ List<Dt_MaterielInfo> materielInfos = _materielInfoRepository.QueryData();
List<Dt_PurchaseOrderDetail> purchaseOrderDetails = new List<Dt_PurchaseOrderDetail>();
List<Dt_PurchaseOrderDetail> updatePurchaseOrderDetails = new List<Dt_PurchaseOrderDetail>();
List<int> detailIds = new List<int>();
@@ -125,6 +197,11 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
}
+ Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MCode);
+ if (materielInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒扮墿鏂欑紪鐮併�恵item.MCode}銆戠殑淇℃伅");
+ }
Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault(x => x.RowNo == item.RowId);
if (purchaseOrderDetail == null)
{
@@ -132,6 +209,7 @@
{
MaterielCode = item.MCode,
PurchaseDetailQuantity = item.Qty,
+ PurchaseDetailReceiveQty = 0,
PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt(),
Unit = item.Unit,
WarehouseId = warehouse.WarehouseId,
@@ -186,7 +264,7 @@
{
try
{
- Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().First(x => x.PurchaseOrderNo == model.OrderNo);
+ Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().Where(x => x.PurchaseOrderNo == model.OrderNo).Includes(x => x.Details).First();
if (purchaseOrder == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟淇℃伅");
@@ -208,7 +286,7 @@
{
try
{
- Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().First(x => x.PurchaseOrderNo == model.OrderNo);
+ Dt_PurchaseOrder purchaseOrder = Db.Queryable<Dt_PurchaseOrder>().Where(x=>x.PurchaseOrderNo== model.OrderNo).Includes(x=>x.Details).First();
if (purchaseOrder == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟淇℃伅");
@@ -217,12 +295,15 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒伴噰璐崟鏄庣粏淇℃伅");
}
-
+ purchaseOrder.PurchaseOrderStatus = PurchaseOrderStatusEnum.Closed.ObjToInt();
_unitOfWorkManage.BeginTran();
- BaseDal.DeleteAndMoveIntoHty(purchaseOrder, OperateTypeEnum.鍏抽棴);
+ BaseDal.UpdateData(purchaseOrder);
+ //BaseDal.DeleteAndMoveIntoHty(purchaseOrder, OperateTypeEnum.鍏抽棴);
foreach (var item in purchaseOrder.Details)
{
- _purchaseOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.鍏抽棴);
+ item.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.Closed.ObjToInt();
+ //_purchaseOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.鍏抽棴);
+ _purchaseOrderDetailRepository.UpdateData(item);
}
_unitOfWorkManage.CommitTran();
return WebResponseContent.Instance.OK();
--
Gitblit v1.9.3