From 8adbc609ea7b5982d5c7bd3c47beb2fa775c5399 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期一, 29 十二月 2025 18:43:08 +0800
Subject: [PATCH] 1
---
WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs | 2
WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs | 60 ++++++
WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs | 8
WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs | 28 +++
WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/INewOutboundOrderDetailService.cs | 22 ++
WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/INewOutboundOrderDetailRepository.cs | 14 +
WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/NewOutboundOrderDetailRepository.cs | 18 ++
WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/INewOutboundOrderRepository.cs | 14 +
WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs | 6
WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/INewOutboundOrderService.cs | 19 ++
WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs | 1
WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrderDetail.cs | 103 +++++++++++
WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/NewOutboundOrderRepository.cs | 18 ++
WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/NewOutboundOrderService.cs | 49 +++++
WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs | 1
WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs | 83 +++++++++
WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/NewOutboundOrderDetailService.cs | 37 ++++
17 files changed, 482 insertions(+), 1 deletions(-)
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/INewOutboundOrderDetailRepository.cs b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/INewOutboundOrderDetailRepository.cs
new file mode 100644
index 0000000..41a49ee
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/INewOutboundOrderDetailRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundRepository
+{
+ public interface INewOutboundOrderDetailRepository : IRepository<Dt_NewOutboundOrderDetail>
+ {
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/INewOutboundOrderRepository.cs b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/INewOutboundOrderRepository.cs
new file mode 100644
index 0000000..c5f1ebe
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/INewOutboundOrderRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundRepository
+{
+ public interface INewOutboundOrderRepository : IRepository<Dt_NewOutboundOrder>
+ {
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/INewOutboundOrderDetailService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/INewOutboundOrderDetailService.cs
new file mode 100644
index 0000000..78422f6
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/INewOutboundOrderDetailService.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+ public interface INewOutboundOrderDetailService : IService<Dt_NewOutboundOrderDetail>
+ {
+ INewOutboundOrderDetailRepository Repository { get; }
+
+
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/INewOutboundOrderService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/INewOutboundOrderService.cs
new file mode 100644
index 0000000..8b076cf
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/INewOutboundOrderService.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IOutboundService
+{
+ public interface INewOutboundOrderService : IService<Dt_NewOutboundOrder>
+ {
+ INewOutboundOrderRepository Repository { get; }
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs
index c894e2e..b52dac0 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs
@@ -30,5 +30,6 @@
/// <param name="taskNum"></param>
/// <returns></returns>
Dt_OutStockLockInfo GetOutStockLockInfo(Dt_OutboundOrder outboundOrder, Dt_OutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null);
+ Dt_OutStockLockInfo GetOutStockLockInfo(Dt_NewOutboundOrder outboundOrder, Dt_NewOutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null);
}
}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs
index 7e86e2f..6befb8f 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs
@@ -10,8 +10,10 @@
public interface IOutboundService:IDependency
{
IOutboundOrderDetailService OutboundOrderDetailService { get; }
+ INewOutboundOrderDetailService NewOutboundOrderDetailService { get; }
IOutboundOrderService OutboundOrderService { get; }
+ INewOutboundOrderService NewOutboundOrderService { get; }
IOutStockLockInfoService OutboundStockLockInfoService { get; }
}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
index 5087b00..3314a18 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -96,5 +96,6 @@
/// <param name="stockViews"></param>
/// <returns></returns>
WebResponseContent TakeOutbound(List<StockViewDTO> stockViews);
+ WebResponseContent WMSGenerateNewOutboundTask(int[] keys);
}
}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs b/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs
new file mode 100644
index 0000000..ff92b6e
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrder.cs
@@ -0,0 +1,60 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+ [SugarTable(nameof(Dt_NewOutboundOrder), "鍑哄簱鍗�")]
+ public class Dt_NewOutboundOrder : BaseEntity
+ {
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿", IsOnlyIgnoreUpdate = true)]
+ public string OrderNo { get; set; }
+
+ [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "涓婃父鍗曟嵁缂栧彿", IsOnlyIgnoreUpdate = true)]
+ public string UpperOrderNo { get; set; }
+
+ [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁绫诲瀷", IsOnlyIgnoreUpdate = true)]
+ public int OrderType { get; set; }
+
+ [SugarColumn(IsNullable = false, ColumnDescription = "鍗曟嵁鐘舵��")]
+ public int OrderStatus { get; set; }
+
+ [SugarColumn(IsNullable = false, ColumnDescription = "鍒涘缓鏂瑰紡", IsOnlyIgnoreUpdate = true)]
+ public int CreateType { get; set; }
+
+ [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+ public string Remark { get; set; }
+ /// <summary>
+ /// 鎺ㄥ崟绯荤粺
+ /// </summary>
+ [SugarColumn(IsNullable = true, Length = 10, ColumnDescription = "鎺ㄥ崟绯荤粺")]
+ public string System { get; set; }
+
+
+ [ImporterHeader(Name = "浠撳簱缂栫爜")]
+ [ExporterHeader(DisplayName = "浠撳簱缂栫爜")]
+ [SugarColumn(IsNullable = true, ColumnDescription = "浠撳簱缂栫爜")]
+ public string OutWareHouse { get; set; }
+
+ [ImporterHeader(Name = "鍗曟嵁灏忕被")]
+ [ExporterHeader(DisplayName = "鍗曟嵁灏忕被")]
+ [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁灏忕被", Length = 50)]
+ public string TransactionCode { get; set; }
+ [ImporterHeader(Name = "鍑哄叆搴撶被鍨�")]
+ [ExporterHeader(DisplayName = "鍑哄叆搴撶被鍨�")]
+ [SugarColumn(IsNullable = true, ColumnDescription = "鍑哄叆搴撶被鍨�",Length = 50)]
+ public string InoutType { get; set; }
+
+ [Navigate(NavigateType.OneToMany, nameof(Dt_OutboundOrderDetail.OrderId), nameof(Id))]
+ public List<Dt_OutboundOrderDetail> Details { get; set; }
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrderDetail.cs b/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrderDetail.cs
new file mode 100644
index 0000000..2d81f54
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_NewOutboundOrderDetail.cs
@@ -0,0 +1,103 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+ [SugarTable(nameof(Dt_NewOutboundOrderDetail), "鍑哄簱鍗曟槑缁�")]
+ public class Dt_NewOutboundOrderDetail : BaseEntity
+ {
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+ /// <summary>
+ /// 鍑哄簱鍗曚富閿�
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鍑哄簱鍗曚富閿�")]
+ public int OrderId { get; set; }
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+ public string MaterielCode { get; set; }
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+ public string MaterielName { get; set; }
+ /// <summary>
+ /// 鎵规鍙�
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鎵规鍙�")]
+ public string BatchNo { get; set; }
+ /// <summary>
+ /// 鍗曟嵁鏁伴噺
+ /// </summary>
+ [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "鍗曟嵁鏁伴噺")]
+ public decimal OrderQuantity { get; set; }
+ /// <summary>
+ /// 閿佸畾鏁伴噺
+ /// </summary>
+ [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "閿佸畾鏁伴噺", DefaultValue = "0")]
+ public decimal LockQuantity { get; set; }
+ /// <summary>
+ /// 宸插嚭鏁伴噺
+ /// </summary>
+ [SugarColumn(IsNullable = false, DecimalDigits = 2, ColumnDescription = "宸插嚭鏁伴噺", DefaultValue = "0")]
+ public decimal OverOutQuantity { get; set; }
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏鐘舵��
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鏄庣粏鐘舵��")]
+ public int OrderDetailStatus { get; set; }
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鐗╂枡瑙勬牸")]
+ public string MaterieSpec { get; set; }
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+ public string Remark { get; set; }
+ /// <summary>
+ /// 鏄庣粏id
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "鏄庣粏id")]
+ public string LinId { get; set; }
+ /// <summary>
+ /// LPN鍙�
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "LPN鍙�")]
+ public string LPNNo { get; set; }
+ /// <summary>
+ /// 浠撳簱
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "浠撳簱")]
+ public string WarehouseCode { get; set; }
+ /// <summary>
+ /// 搴撳尯
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "搴撳尯")]
+ public string StorageAreaCode { get; set; }
+ /// <summary>
+ /// 搴撲綅
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "搴撲綅")]
+ public string StorageLocationCode { get; set; }
+ /// <summary>
+ /// SMOM鎸囧畾鍑哄簱璐т綅
+ /// </summary>
+ [SugarColumn(IsNullable = true, ColumnDescription = "SMOM鎸囧畾鍑哄簱璐т綅")]
+ public string LocationName { get; set; }
+
+ [SugarColumn(IsNullable = true, ColumnDescription = "渚涘簲鍟嗘壒娆�")]
+ public string SupplierBatch { get; set; }
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/NewOutboundOrderDetailRepository.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/NewOutboundOrderDetailRepository.cs
new file mode 100644
index 0000000..a6cc7ef
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/NewOutboundOrderDetailRepository.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundRepository
+{
+ public class NewOutboundOrderDetailRepository : RepositoryBase<Dt_NewOutboundOrderDetail>, INewOutboundOrderDetailRepository
+ {
+ public NewOutboundOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+ {
+ }
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/NewOutboundOrderRepository.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/NewOutboundOrderRepository.cs
new file mode 100644
index 0000000..1090eba
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/NewOutboundOrderRepository.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundRepository
+{
+ public class NewOutboundOrderRepository : RepositoryBase<Dt_NewOutboundOrder>, INewOutboundOrderRepository
+ {
+ public NewOutboundOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+ {
+ }
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/NewOutboundOrderDetailService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/NewOutboundOrderDetailService.cs
new file mode 100644
index 0000000..fc851f0
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/NewOutboundOrderDetailService.cs
@@ -0,0 +1,37 @@
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IBasicRepository;
+using WIDESEA_IBasicService;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_IOutboundService;
+using WIDESEA_IRecordService;
+using WIDESEA_IStockRepository;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+using WIDESEA_StockRepository;
+
+namespace WIDESEA_OutboundService
+{
+ public partial class NewOutboundOrderDetailService : ServiceBase<Dt_NewOutboundOrderDetail, INewOutboundOrderDetailRepository>, INewOutboundOrderDetailService
+ {
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+ public INewOutboundOrderDetailRepository Repository => BaseDal;
+
+ public NewOutboundOrderDetailService(INewOutboundOrderDetailRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+ {
+ _unitOfWorkManage = unitOfWorkManage;
+ }
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/NewOutboundOrderService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/NewOutboundOrderService.cs
new file mode 100644
index 0000000..ddd7fbb
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/NewOutboundOrderService.cs
@@ -0,0 +1,49 @@
+锘縰sing AutoMapper;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Inbound;
+using WIDESEA_DTO.Outbound;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IBasicService;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_IOutboundService;
+using WIDESEA_IStockService;
+//using WIDESEA_ITaskInfoRepository;
+//using WIDESEA_ITaskInfoService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+ public partial class NewOutboundOrderService : ServiceBase<Dt_NewOutboundOrder, INewOutboundOrderRepository>, INewOutboundOrderService
+ {
+ private readonly IMapper _mapper;
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+ public INewOutboundOrderRepository Repository => BaseDal;
+
+ public NewOutboundOrderService(INewOutboundOrderRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+ {
+ _mapper = mapper;
+ _unitOfWorkManage = unitOfWorkManage;
+ }
+
+
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs
index 4b48024..b78724f 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs
@@ -15,11 +15,17 @@
public IOutStockLockInfoService OutboundStockLockInfoService { get; }
- public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService)
+ public INewOutboundOrderDetailService NewOutboundOrderDetailService { get; }
+
+ public INewOutboundOrderService NewOutboundOrderService { get; }
+
+ public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService, INewOutboundOrderDetailService newOutboundOrderDetailService, INewOutboundOrderService newOutboundOrderService)
{
OutboundOrderDetailService = outboundOrderDetailService;
OutboundOrderService = outboundOrderService;
OutboundStockLockInfoService = outboundStockLockInfoService;
+ NewOutboundOrderDetailService= newOutboundOrderDetailService;
+ NewOutboundOrderService = newOutboundOrderService;
}
}
}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs
index 8ff3be0..cea3190 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs
@@ -40,5 +40,33 @@
return outStockLockInfo;
}
+
+ public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_NewOutboundOrder outboundOrder, Dt_NewOutboundOrderDetail outboundOrderDetail, Dt_StockInfo outStock, decimal assignQuantity, int? taskNum = null)
+ {
+
+ Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo()
+ {
+ PalletCode = outStock.PalletCode,
+ AssignQuantity = assignQuantity,
+ MaterielCode = outboundOrderDetail.MaterielCode,
+ BatchNo = outboundOrderDetail.BatchNo ?? outStock.Details.FirstOrDefault()?.BatchNo,
+ LocationCode = outStock.LocationCode,
+ MaterielName = outboundOrderDetail.MaterielName,
+ OrderDetailId = outboundOrderDetail.Id,
+ OrderNo = outboundOrder.OrderNo,
+ OrderType = outboundOrder.OrderType,
+ OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity),
+ //Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(),
+ StockId = outStock.Id,
+ TaskNum = taskNum,
+ OrderQuantity = outboundOrderDetail.OrderQuantity,
+ LinId = outboundOrderDetail.LinId,
+ //Unit = outboundOrderDetail.Unit,
+ //ProductionDate = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.ProductionDate,
+ //EffectiveDate = outStock.Details.Where(x => x.MaterielCode == outboundOrderDetail.MaterielCode).FirstOrDefault()?.EffectiveDate
+ };
+
+ return outStockLockInfo;
+ }
}
}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs
new file mode 100644
index 0000000..0f9506a
--- /dev/null
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/NewPartialTaskService_Outbound.cs
@@ -0,0 +1,83 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_TaskInfoService
+{
+ public partial class TaskService
+ {
+ public WebResponseContent WMSGenerateNewOutboundTask(int[] keys)
+ {
+ try
+ {
+ List<Dt_Task> tasks = new List<Dt_Task>();
+ List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+ List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
+
+ List<Dt_NewOutboundOrderDetail> outboundOrderDetails = _outboundService.NewOutboundOrderDetailService.Repository.QueryData(x => keys.Contains(x.OrderId));
+ if (outboundOrderDetails == null || outboundOrderDetails.Count == 0)
+ {
+ throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
+ }
+ if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus > OrderDetailStatusEnum.New.ObjToInt() && x.OrderDetailStatus != OrderDetailStatusEnum.AssignOverPartial.ObjToInt()) != null)
+ {
+ throw new Exception("鎵�閫夊嚭搴撳崟鏄庣粏瀛樺湪鍑哄簱涓垨宸插畬鎴�");
+ }
+ List<Dt_NewOutboundOrder> outboundOrders = _outboundService.NewOutboundOrderService.Repository.QueryData(x => keys.Contains(x.Id));
+ List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.Repository.QueryData(x => outboundOrderDetails.Select(s => s.LPNNo).Contains(x.PalletCode));
+ if (outboundOrderDetails == null || outboundOrderDetails.Count == 0)
+ {
+ throw new Exception("鏈壘鍒板簱瀛樹俊鎭�");
+ }
+ var Newtasks = GetTasks(stockInfos, TaskTypeEnum.OutProduct);
+ List<Dt_StockInfoDetail> stockInfoDetails = _stockService.StockInfoDetailService.Repository.QueryData(x => stockInfos.Select(x => x.Id).Contains(x.StockId));
+ foreach (var item in outboundOrderDetails)
+ {
+ Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.PalletCode == item.LPNNo);
+ if (stockInfo == null) continue;
+ Dt_StockInfoDetail? stockInfoDetail = stockInfoDetails.FirstOrDefault(x => x.StockId == stockInfo.Id && x.BatchNo == item.BatchNo);
+ if (stockInfoDetail == null) continue;
+ stockInfoDetail.OutboundQuantity += item.OrderQuantity;
+ item.LockQuantity += item.OrderQuantity;
+ var outboundOrder = outboundOrders.FirstOrDefault(x => x.Id == item.OrderId);
+ Dt_OutStockLockInfo outStockLockInfo = _outboundService.OutboundStockLockInfoService.GetOutStockLockInfo(outboundOrder, item, stockInfo, item.OrderQuantity);
+ outStockLockInfo.Status = OutStockStatus.鍑哄簱涓�.ObjToInt();
+ item.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
+ outboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱涓�.ObjToInt();
+ var task = Newtasks.FirstOrDefault(x => x.PalletCode == item.LPNNo);
+ task.OrderNo = outboundOrder.OrderNo;
+ tasks.Add(task);
+ outStockLockInfo.TaskNum = task.TaskNum;
+ outStockLockInfos.Add(outStockLockInfo);
+ }
+ locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(stockInfos.Select(x => x.LocationCode).ToList()));
+
+ _unitOfWorkManage.BeginTran();
+
+ BaseDal.AddData(tasks);
+ _stockService.StockInfoService.Repository.UpdateData(stockInfos);
+ _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetails);
+ _outboundService.NewOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
+ _outboundService.NewOutboundOrderService.Repository.UpdateData(outboundOrders);
+ _outboundService.OutboundStockLockInfoService.Repository.AddData(outStockLockInfos);
+ _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock.ObjToInt(), StockChangeType.Outbound.ObjToInt(), "", tasks?.Select(x => x.TaskNum).ToList());
+ _basicService.LocationInfoService.Repository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
+
+ _unitOfWorkManage.CommitTran();
+ //灏嗕换鍔℃帹閫佸埌WCS
+ return PushTasksToWCS(tasks);
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+ }
+}
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
index 929f2b2..026bc56 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -41,6 +41,12 @@
{
return Service.WMSGenerateOutboundTask(keys);
}
+
+ [HttpPost, Route("WMSGenerateNewOutboundTask"), AllowAnonymous]
+ public WebResponseContent WMSGenerateNewOutboundTask([FromBody] int[] keys)
+ {
+ return Service.WMSGenerateNewOutboundTask(keys);
+ }
/// <summary>
/// WCS鐢宠鍏ュ簱浠诲姟
/// </summary>
--
Gitblit v1.9.3