From a0a0df2e824b6fe7e5a3c0afce78127fecf84fc9 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 03 十一月 2025 08:23:05 +0800
Subject: [PATCH] ERP接口代码更新,WCS代码优化,出入库分配优化
---
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs | 148 ++++++++++++++-----------------------------------
1 files changed, 43 insertions(+), 105 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
index 5ddf32a..40ceaf1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
@@ -33,14 +33,19 @@
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
+using WIDESEA_DTO.ERP;
using WIDESEA_DTO.Inbound;
-using WIDESEA_DTO.MES;
using WIDESEA_DTO.Stock;
using WIDESEA_DTO.Task;
using WIDESEA_External.ERPService;
using WIDESEA_External.Model;
using WIDESEA_IBasicRepository;
using WIDESEA_IBasicService;
+using WIDESEA_IInboundRepository;
+using WIDESEA_IInboundService;
+using WIDESEA_InboundRepository;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_IOutboundService;
using WIDESEA_IRecordService;
using WIDESEA_IStockRepository;
using WIDESEA_IStockService;
@@ -55,15 +60,16 @@
{
private readonly IMapper _mapper;
private readonly IUnitOfWorkManage _unitOfWorkManage;
- private readonly IStockRepository _stockRepository;
- private readonly IBasicService _basicService;
private readonly IRecordService _recordService;
+ private readonly IStockRepository _stockRepository;
private readonly IStockService _stockService;
private readonly IBasicRepository _basicRepository;
- private readonly IApiInfoRepository _apiInfoRepository;
+ private readonly IBasicService _basicService;
private readonly IInvokeERPService _invokeERPService;
- private readonly IPalletTypeInfoRepository _palletTypeInfoRepository;
- private readonly IAGVStationInfoRepository _agvStationInfoRepository;
+ private readonly IOutboundRepository _outboundRepository;
+ private readonly IOutboundService _outboundService;
+ private readonly IInboundRepository _inboundRepository;
+ private readonly IInboundService _inboundService;
public ITaskRepository Repository => BaseDal;
private Dictionary<string, OrderByType> _taskOrderBy = new()
@@ -76,7 +82,7 @@
public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 100 && x < 500).ToList();
- public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IPalletTypeInfoRepository palletTypeInfoRepository, IAGVStationInfoRepository agvStationInfoRepository) : base(BaseDal)
+ public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IInvokeERPService invokeERPService, IOutboundRepository outboundRepository, IOutboundService outboundService, IInboundRepository inboundRepository,IInboundService inboundService) : base(BaseDal)
{
_mapper = mapper;
_unitOfWorkManage = unitOfWorkManage;
@@ -85,10 +91,11 @@
_recordService = recordService;
_stockService = stockService;
_basicRepository = basicRepository;
- _apiInfoRepository = apiInfoRepository;
_invokeERPService = invokeERPService;
- _palletTypeInfoRepository = palletTypeInfoRepository;
- _agvStationInfoRepository = agvStationInfoRepository;
+ _outboundRepository = outboundRepository;
+ _outboundService = outboundService;
+ _inboundRepository = inboundRepository;
+ _inboundService = inboundService;
}
/// <summary>
@@ -99,6 +106,10 @@
{
try
{
+ if (tasks==null || tasks.Count == 0)
+ {
+ return WebResponseContent.Instance.Error($"浼犲叆浠诲姟涓虹┖");
+ }
List<WMSTaskDTO> taskDTOs = _mapper.Map<List<WMSTaskDTO>>(tasks);
taskDTOs.ForEach(x =>
{
@@ -141,105 +152,32 @@
return WebResponseContent.Instance.Error(ex.Message);
}
}
+ private readonly static object lockerAddSG = new object();
+ public WebResponseContent AddOutSGOrder(List<SGOutOrderDTO> outOrderDTOs)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ lock (lockerAddSG)
+ {
+ int outDetailId = _outboundRepository.OutSGOrderDetailRepository.QueryData().OrderByDescending(x=>x.Id).FirstOrDefault()?.Id ?? 0;
+ content = _outboundService.OutSGOrderService.AddOutSGOrder(outOrderDTOs);
+ if (!content.Status)
+ {
+ return content;
+ }
+ List<int> ints = _outboundRepository.OutSGOrderDetailRepository.QueryData(x=>x.Id>outDetailId).Select(x=>x.Id).ToList();
+ int[] reseponse= new int[ints.Count];
+ for (int i = 0; i < ints.Count; i++)
+ {
+ reseponse[i] = ints[i];
+ }
+ content.Message = CreateSGOutboundTasks(reseponse).Message;
+ }
- /// <summary>
- /// 鎴愬搧浠撳叆搴撲换鍔″畬鎴�
- /// </summary>
- public WebResponseContent InProductCompleted(Dt_Task task)
- {
- WebResponseContent content=new WebResponseContent();
- try
- {
- switch (task.TaskType)
- {
- case (int)TaskTypeEnum.EmptyProductBack:
- content = EmptyProBackCompleted(task);
- break;
- case (int)TaskTypeEnum.InProductBack:
- content = InProBackCompleted(task);
- break;
- default:
- content.Error("鏈煡浠诲姟绫诲瀷");
- break;
- }
}
catch (Exception ex)
{
- _unitOfWorkManage.RollbackTran();
- content.Error(ex.Message);
- }
- return content;
- }
- public WebResponseContent EmptyProBackCompleted(Dt_Task task)
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- //鏇存柊鍏ュ簱鐘舵��
- task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
- _unitOfWorkManage.BeginTran();
- BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
- _unitOfWorkManage.CommitTran();
- content.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- content.Error(ex.Message);
- }
- return content;
- }
- /// <summary>
- /// 鎴愬搧浣欐枡閫�搴撲换鍔″畬鎴�
- /// </summary>
- /// <param name="task"></param>
- /// <returns></returns>
- public WebResponseContent InProBackCompleted(Dt_Task task)
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- //鑾峰彇缁勭洏淇℃伅
- Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.proStockInfoDetails).First();
- if (proStockInfo == null)
- {
- return content.Error($"鏈壘鍒拌兌妗嗕负{task.PalletCode}缁勭洏淇℃伅");
- }
- Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
- if (locationInfo == null)
- {
- return content.Error($"鏈壘鍒扮洰鏍囪揣浣嶄俊鎭�");
- }
- if (locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
- {
- return content.Error($"璐т綅鐘舵�佷笉姝g‘");
- }
- if (proStockInfo.StockStatus!=StockStatusEmun.鎴愬搧浣欐枡鍥炲簱.ObjToInt())
- {
- return content.Error($"鑳舵{proStockInfo.PalletCode}搴撳瓨鐘舵�佷笉姝g‘");
- }
- LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
- locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
- proStockInfo.LocationCode = locationInfo.LocationCode;
- proStockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
- proStockInfo.proStockInfoDetails.ForEach(x =>
- {
- x.ProOutDetailStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
- });
- //鏇存柊鍏ュ簱鐘舵��
- task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
- _unitOfWorkManage.BeginTran();
- BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
- _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.InStock, locationInfo.WarehouseId);
- _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
- _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfo.proStockInfoDetails);
- _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted);
- _unitOfWorkManage.CommitTran();
- content.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
content.Error(ex.Message);
}
return content;
--
Gitblit v1.9.3