From 7086c88c6c080aa9ff15664c5c97aee7bbcdc55b Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期三, 05 三月 2025 16:56:11 +0800 Subject: [PATCH] 阻焊仓堆垛机对接 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs | 175 ++-- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs | 489 ++++++++++-- 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/PPStockSelect.vue | 332 ++++++++ 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs | 88 ++ 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/ILocationInfoRepository.cs | 2 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d7d7cdfe-7831-4766-872e-1bbd2ae71185.vsidx | 0 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP仓/TSJConveyorLineJob_PP.cs | 7 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/mesPPOutboundOrderDetail.js | 119 +- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs | 8 代码管理/WMS/WIDESEA_WMSClient/src/views/outbound/mesPPCutOutboundOrder.vue | 2 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs | 7 项目资料/设备协议/干膜仓堆垛机通信协议.xlsx | 0 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPCutOutOrderDetail.vue | 16 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPoutOrderDetail.vue | 4 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c003f52c-46e5-4779-9a5b-7d482547a022.vsidx | 0 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderService.cs | 5 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs | 32 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 7 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs | 2 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs | 48 + 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1ffecc40-5215-4fbe-92a8-4f08c948917b.vsidx | 0 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs | 2 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderDetailService.cs | 10 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs | 45 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesPPOutboundOrderDetail.cs | 4 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/阻焊仓/GroundStationJob_ZH.cs | 153 ++++ 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6573eb92-5634-4b4e-a7f1-96f2790803c7.vsidx | 0 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 29 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7fca402a-0c47-4aac-bdef-736d4f6e2f32.vsidx | 0 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderDetailService.cs | 190 +--- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs | 20 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/OutboundRepository.cs | 5 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/MesPPOutboundOrderDetailController.cs | 11 /dev/null | 0 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPCutOutboundOrderDetailService.cs | 20 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IOutboundRepository.cs | 2 代码管理/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/5761a620-5bca-4675-84e1-2980dbca5573.vsidx | 0 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/阻焊仓/StackerCraneJob_ZH.cs | 165 ++- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs | 10 代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7465d6d9-8464-4852-a7e6-98848228a1cf.vsidx | 0 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPCutOutboundOrderDetailService.cs | 188 ++++ 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/PPStockSelectViewDTO.cs | 24 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs | 23 43 files changed, 1,767 insertions(+), 477 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/472a85b1-322e-46ee-835a-853cb266cbd8.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/472a85b1-322e-46ee-835a-853cb266cbd8.vsidx" deleted file mode 100644 index 4e42809..0000000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/472a85b1-322e-46ee-835a-853cb266cbd8.vsidx" +++ /dev/null Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/5761a620-5bca-4675-84e1-2980dbca5573.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/5761a620-5bca-4675-84e1-2980dbca5573.vsidx" new file mode 100644 index 0000000..dbc4fec --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/5761a620-5bca-4675-84e1-2980dbca5573.vsidx" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7fca402a-0c47-4aac-bdef-736d4f6e2f32.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7fca402a-0c47-4aac-bdef-736d4f6e2f32.vsidx" new file mode 100644 index 0000000..0fe529e --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7fca402a-0c47-4aac-bdef-736d4f6e2f32.vsidx" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c3952f00-6f03-46e1-a8c4-0c2746ff48ae.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c3952f00-6f03-46e1-a8c4-0c2746ff48ae.vsidx" deleted file mode 100644 index 4ccb739..0000000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/c3952f00-6f03-46e1-a8c4-0c2746ff48ae.vsidx" +++ /dev/null Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/read.lock" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/read.lock" deleted file mode 100644 index e69de29..0000000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/read.lock" +++ /dev/null diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" index 2d365d0..0197b6c 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" @@ -211,6 +211,12 @@ task.DeviceCode = stationManger.StackerCraneCode; task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); } + else if (item.TaskType == TaskTypeEnum.MesOutbound.ObjToInt() && item.RoadWay.Contains("ZH")) + { + task.NextAddress = stationManger.StackerCraneStationCode; + task.DeviceCode = stationManger.StackerCraneCode; + task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); + } else { task.NextAddress = taskTypeGroup == TaskTypeGroup.InboundGroup ? task.TargetAddress : router.NextPosi; @@ -251,7 +257,6 @@ return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢遍厤缃俊鎭�"); } router = routers.FirstOrDefault(); - task.NextAddress = router?.StartPosi ?? ""; task.DeviceCode = item.RoadWay; task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP\344\273\223/TSJConveyorLineJob_PP.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP\344\273\223/TSJConveyorLineJob_PP.cs" index d52dd9a..377fb7e 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP\344\273\223/TSJConveyorLineJob_PP.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/PP\344\273\223/TSJConveyorLineJob_PP.cs" @@ -96,14 +96,17 @@ //} #endregion + //2016鍑哄簱绔欏彴浠诲姟瀹屾垚 if (item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()) { if (conveyorLineSignalRead.STB) { device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode); + + Thread.Sleep(500); + device.SetValue(W_ConveyorLineDB.ACK, false, item.StationCode); + _taskService.TaskCompleted(conveyorLineInfoRead.TaskNum); } - Thread.Sleep(500); - device.SetValue(W_ConveyorLineDB.ACK, false, item.StationCode); } else if (item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt()) { diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/GroundStationJob_ZH.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/GroundStationJob_ZH.cs" new file mode 100644 index 0000000..ed04228 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/GroundStationJob_ZH.cs" @@ -0,0 +1,153 @@ +锘縰sing Quartz; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Common; +using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_IBasicInfoRepository; +using WIDESEAWCS_ITaskInfoRepository; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_Tasks.HoisterJob; + +namespace WIDESEAWCS_Tasks +{ + /// <summary> + /// 闃荤剨浠撳湴闈㈢珯 + /// </summary> + [DisallowConcurrentExecution] + public class GroundStationJob_ZH : JobBase, IJob + { + private readonly ITaskService _taskService; + private readonly ITaskExecuteDetailService _taskExecuteDetailService; + private readonly ITaskRepository _taskRepository; + private readonly IStationMangerRepository _stationMangerRepository; + + public GroundStationJob_ZH(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository) + { + _taskService = taskService; + _taskExecuteDetailService = taskExecuteDetailService; + _taskRepository = taskRepository; + _stationMangerRepository = stationMangerRepository; + } + + public Task Execute(IJobExecutionContext context) + { + OtherDevice device = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams"); + try + { + if (device == null) + { + WriteError(nameof(GroundStationJob_CSJ), "璋冨害閿欒,璁惧瀵硅薄浼犲�间负null"); + return Task.CompletedTask; + } + List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList(); + List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); + foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) + { + try + { + short isTraytype = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_TakePalletType, item.StationCode); + bool isCanPut = device.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, item.StationCode); + bool isCanTake = device.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, item.StationCode); + short takePalletType = device.GetValue<GroundStationDBName, short>(GroundStationDBName.W_PutPalletType, item.StationCode); + bool putRequest = device.GetValue<GroundStationDBName, bool>(GroundStationDBName.W_PutRequest, item.StationCode); + bool putFinish = device.GetValue<GroundStationDBName, bool>(GroundStationDBName.W_PutFinish, item.StationCode); + bool takeRequest = device.GetValue<GroundStationDBName, bool>(GroundStationDBName.W_TakeRequest, item.StationCode); + bool takeFinish = device.GetValue<GroundStationDBName, bool>(GroundStationDBName.W_TakeFinish, item.StationCode); + + if (item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()) + { + + //device.SetValue(GroundStationDBName.W_TakeRequest, true, item.StationCode); + //device.SetValue(GroundStationDBName.W_PutPalletType, 1, item.StationCode);//task.PalletType + + + //device.SetValue(GroundStationDBName.W_TakeFinish, true, item.StationCode); + ////鍒ゆ柇AGV浠诲姟瀹屾垚锛屽悗鍐欑粰鍦伴潰绔欏彇璐у畬鎴� + //device.SetValue(GroundStationDBName.W_TakeRequest, false, item.StationCode); + //device.SetValue(GroundStationDBName.W_TakeFinish, false, item.StationCode); + Dt_Task task = _taskRepository.QueryFirst(x => x.DeviceCode == item.StackerCraneCode && x.TaskState == TaskStatusEnum.SC_Execute.ObjToInt() && string.IsNullOrEmpty(x.NextAddress)); + if (task != null && isCanPut && !isCanTake && !putRequest && !putFinish && !takeRequest && !takeFinish) + { + _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, nextAddress: item.StationCode); + } + } + if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()) + { + Dt_Task task = _taskRepository.QueryFirst(x => (x.TargetAddress == item.StackerCraneCode || string.IsNullOrEmpty(x.TargetAddress) || x.NextAddress == item.StackerCraneCode || string.IsNullOrEmpty(x.NextAddress)) && (x.TaskState == TaskStatusEnum.New.ObjToInt() || x.TaskState == TaskStatusEnum.AGV_Finish.ObjToInt()) && (x.SourceAddress == item.StationCode || x.CurrentAddress == item.AGVStationCode || x.CurrentAddress == item.StationCode)); + if (task != null) + { + if (isCanPut) + { + device.SetValue(GroundStationDBName.W_PutRequest, true, item.StationCode); + device.SetValue(GroundStationDBName.W_PutPalletType, 1, item.StationCode);//task.PalletType + } + //鍒ゆ柇AGV浠诲姟瀹屾垚锛屽悗鍐欑粰鍦伴潰绔欐斁璐у畬鎴� + device.SetValue(GroundStationDBName.W_PutFinish, true, item.StationCode); + + string oldAddress = task.NextAddress; + int oldStatus = task.TaskState; + Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode); + if (stationManger == null) + { + WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); + continue; + } + string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, stationManger.StackerCraneCode); + if (string.IsNullOrEmpty(locationCode)) + { + WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); + continue; + } + _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, currentAddress: stationManger.StackerCraneStationCode, targetAddress: locationCode, nextAddress: locationCode, deviceCode: stationManger.StackerCraneCode); + } + } + } + catch (Exception ex) + { + WriteError(device.DeviceCode, $"{item}浜や簰閿欒", ex); + } + } + + foreach (var item in stationMangers.Where(x => !deviceStations.Contains(x.StationCode))) + { + try + { + Dt_Task task = _taskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.New.ObjToInt() && x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType)); + if (task != null) + { + Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode); + if (stationManger == null) + { + WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); + continue; + } + string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, stationManger.StackerCraneCode); + if (string.IsNullOrEmpty(locationCode)) + { + WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); + continue; + } + _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute, currentAddress: stationManger.StackerCraneStationCode, targetAddress: locationCode, nextAddress: locationCode, deviceCode: stationManger.StackerCraneCode); + } + } + catch (Exception ex) + { + + } + } + } + catch (Exception ex) + { + WriteError(device.DeviceName, "", ex); + } + return Task.CompletedTask; + } + } +} diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/StackerCraneJob_ZH.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/StackerCraneJob_ZH.cs" index 4a8d339..537052a 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/StackerCraneJob_ZH.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/\351\230\273\347\204\212\344\273\223/StackerCraneJob_ZH.cs" @@ -20,6 +20,7 @@ using WIDESEAWCS_Tasks.HoisterJob; using WIDESEAWCS_Tasks.StackerCraneJob; using WIDESEAWCS_Tasks; +using WIDESEAWCS_Core; namespace WIDESEAWCS_Tasks { @@ -69,7 +70,9 @@ if (sendFlag) { commonStackerCrane.LastTaskType = task.TaskType; - // _taskService.UpdateTaskStatusToNext(task.TaskNum); + task.Dispatchertime = DateTime.Now; + task.ExceptionMessage = ""; + _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing); } } } @@ -97,9 +100,54 @@ if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) { Console.Out.WriteLine("TaskCompleted" + e.TaskNum); - // _taskService.StackCraneTaskCompleted(e.TaskNum); + StackerCraneTaskCompleted(e.TaskNum, commonStackerCrane.DeviceCode); commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); } + } + } + + public WebResponseContent StackerCraneTaskCompleted(int taskNum, string deviceCode) + { + try + { + Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum); + if (task != null) + { + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + { + Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneStationCode == task.NextAddress); + if (stationManger == null) + { + _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"AGV绔欑偣鏈厤缃�,{task.NextAddress}"); + _taskService.UpdateTaskExceptionMessage(taskNum, $"AGV绔欑偣鏈厤缃�,{task.NextAddress}"); + return WebResponseContent.Instance.Error($"AGV绔欑偣鏈厤缃�,{task.NextAddress}"); + } + + _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute, deviceCode: "AGV_ZH", currentAddress: stationManger.AGVStationCode ?? throw new Exception($"agv绔欑偣閿欒"), nextAddress: task.TargetAddress); + } + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) + { + _taskService.TaskCompleted(taskNum); + } + else + { + WriteError(deviceCode, $"鏈壘鍒拌浠诲姟绫诲瀷鍥炶皟WMS浠诲姟瀹屾垚鎺ュ彛,{task.TaskType}"); + _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"鏈壘鍒拌浠诲姟绫诲瀷鍥炶皟WMS浠诲姟瀹屾垚鎺ュ彛,{task.TaskType}"); + _taskService.UpdateTaskExceptionMessage(taskNum, $"鏈壘鍒拌浠诲姟绫诲瀷鍥炶皟WMS浠诲姟瀹屾垚鎺ュ彛,{task.TaskType}"); + } + } + else + { + WriteError(deviceCode, $"鏈壘鍒颁换鍔′俊鎭�,浠诲姟鍙�:{taskNum}"); + return WebResponseContent.Instance.Error($"鏈壘鍒颁换鍔′俊鎭�,浠诲姟鍙�:{taskNum}"); + } + + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + WriteError(deviceCode, $"浠诲姟瀹屾垚閿欒", ex); + return WebResponseContent.Instance.Error(ex.Message); } } @@ -166,7 +214,7 @@ /// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns> private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task) { - Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.TargetAddress && x.StackerCraneCode == task.DeviceCode); + Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => (x.StationCode == task.NextAddress || x.StackerCraneStationCode == task.NextAddress) && x.StackerCraneCode == task.DeviceCode); if (stationManger != null) { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode); @@ -175,21 +223,22 @@ OtherDevice client = (OtherDevice)device; if (client.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode))//鍑哄簱绔欏彴鏈鍗犵敤 { - task.TargetAddress = stationManger.StackerCraneStationCode; + task.NextAddress = stationManger.StackerCraneStationCode; _taskRepository.UpdateData(task); + client.SetValue(GroundStationDBName.R_IsCanPut, true, stationManger.StationCode); return task; } } else { + WriteError(task.DeviceCode, $"鏈壘鍒板嚭搴撶珯鍙般�恵stationManger.StationDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤"); _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵stationManger.StationDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤"); - WriteInfo(nameof(StackerCraneJob_ZH), $"鏈壘鍒板嚭搴撶珯鍙般�恵stationManger.StationDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤"); } } else { + WriteError(task.DeviceCode, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴"); _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴"); - WriteInfo(nameof(StackerCraneJob_ZH), $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴"); } return null; } @@ -210,15 +259,35 @@ stackerCraneTaskCommand.TrayType = 1; if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//鍒ゆ柇鏄惁鏄叆搴撲换鍔� { - //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway); - //if (routers.Count > 0) - //{ + string[] startCodes = task.CurrentAddress.Split("-"); - - stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]); - stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]); - stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]); - + if (startCodes.Length == 3) + { + stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]); + stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]); + stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]); + } + else + { + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�"); + return null; + } + string[] targetCodes = task.NextAddress.Split("-"); + if (targetCodes.Length == 5) + { + stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]); + stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]); + stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]); + } + else + { + //鏁版嵁閰嶇疆閿欒 + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟缁堢偣閿欒锛岀粓鐐癸細銆恵task.NextAddress}銆�"); + return null; + } + } + else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + { string[] targetCodes = task.NextAddress.Split("-"); if (targetCodes.Length == 3) { @@ -229,77 +298,49 @@ else { //鏁版嵁閰嶇疆閿欒 - _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍏ュ簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�"); + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟涓嬩竴鍦板潃鐐归敊璇紝璧风偣锛氥�恵task.NextAddress}銆�"); return null; } - //} - //else - //{ - // _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鍙栬揣绔欏彴淇℃伅"); - // return null; - //} - } - else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) - { - //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress); - //if (routers.Count > 0) + string[] sourceCodes = task.CurrentAddress.Split("-"); + if (sourceCodes.Length == 5) { - string[] targetCodes = task.NextAddress.Split("-"); - - stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); - stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); - stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]); - - string[] sourceCodes = task.CurrentAddress.Split("-"); - if (sourceCodes.Length == 3) - { - stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]); - stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]); - stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]); - } - else - { - //鏁版嵁閰嶇疆閿欒 - _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�"); - WriteInfo(nameof(StackerCraneJob_ZH), $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�"); - return null; - } + stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]); + stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]); + stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]); } - //else - //{ - // _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鑾峰彇瀵瑰簲鐨勫爢鍨涙満鏀捐揣绔欏彴淇℃伅"); - // return null; - //} + else + { + //鏁版嵁閰嶇疆閿欒 + _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鍑哄簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�"); + return null; + } } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { string[] targetCodes = task.NextAddress.Split("-"); - if (targetCodes.Length == 3) + if (targetCodes.Length == 5) { - stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); - stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); - stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]); + stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]); + stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]); + stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]); } else { //鏁版嵁閰嶇疆閿欒 _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�"); - WriteInfo(nameof(StackerCraneJob_ZH), $"绉诲簱浠诲姟缁堢偣閿欒锛岃捣鐐癸細銆恵task.NextAddress}銆�"); return null; } string[] sourceCodes = task.CurrentAddress.Split("-"); - if (sourceCodes.Length == 3) + if (sourceCodes.Length == 5) { - stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]); - stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]); - stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]); + stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]); + stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]); + stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]); } else { //鏁版嵁閰嶇疆閿欒 _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"绉诲簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�"); - - WriteInfo(nameof(StackerCraneJob_ZH), $"绉诲簱浠诲姟璧风偣閿欒锛岃捣鐐癸細銆恵task.CurrentAddress}銆�"); return null; } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/PPStockSelect.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/PPStockSelect.vue" new file mode 100644 index 0000000..8dc77b0 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/PPStockSelect.vue" @@ -0,0 +1,332 @@ +<template> + <div> + <vol-box + v-model="showDetialBox" + :lazy="true" + width="60%" + :padding="15" + title="鎸囧畾搴撳瓨" + > + <div class="box-head"> + <el-alert :closable="false" style="width: 100%"> + <el-row> + <el-col :span="16"> + <span class="less-style">鐗╂枡鍚嶇О锛� {{ row.materielName }} </span> + <el-divider direction="vertical"></el-divider> + <span class="less-style">鐗╂枡缂栧彿锛� {{ row.materielCode }} </span> + <el-divider direction="vertical"></el-divider> + <span class="less-style" + >闇�姹傛暟閲忥細 {{ row.orderQuantity }} + </span> + <el-divider direction="vertical"></el-divider> + <span :class="selectionClass" + >宸查�夋暟閲忥細 {{ selectionSum }} + </span> + </el-col> + <el-col :span="8"> + <el-link + type="primary" + size="small" + style="float: right; height: 20px" + @click="getData(false)" + >{{ kcname }}</el-link + > + <el-link + type="primary" + size="small" + style="float: right; height: 20px; margin-right: 10px" + @click="getData" + >鍒锋柊</el-link + > + <el-link + type="primary" + size="small" + style="float: right; height: 20px; margin-right: 10px" + @click="revokeAssign" + >鎾ら攢鍒嗛厤</el-link + > + </el-col> + </el-row> + </el-alert> + </div> + <div class="box-table" style="margin-top: 1%"> + <el-table + ref="singleTable" + :data="tableData" + style="width: 100%; height: 100%" + highlight-current-row + @row-click="handleRowClick" + height="500px" + @selection-change="handleSelectionChange" + > + > + <el-table-column type="selection" width="55"> </el-table-column> + <el-table-column + label="搴忓彿" + type="index" + fixed="left" + width="55" + align="center" + ></el-table-column> + <el-table-column + v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" + :key="index" + :prop="item.prop" + :label="item.title" + :width="item.width" + align="center" + > + <template #default="scoped" v-if="item.type == 'icon'"> + <el-tooltip + class="item" + effect="dark" + :content="item.title" + placement="bottom" + ><el-button + type="text" + @click="tableButtonClick(scoped.row, item)" + ><i :class="item.icon" style="font-size: 22px"></i></el-button + ></el-tooltip> + </template> + </el-table-column> + </el-table> + </div> + <template #footer> + <el-button type="primary" size="small" @click="outbound" + >鐩存帴鍑哄簱</el-button + > + <el-button type="primary" size="small" @click="lockStock" + >閿佸畾搴撳瓨</el-button + > + <el-button type="danger" size="small" @click="showDetialBox = false" + >鍏抽棴</el-button + > + </template> + </vol-box> + </div> +</template> +<script> +import VolBox from "@/components/basic/VolBox.vue"; +import { fa } from "element-plus/es/locales.mjs"; +export default { + components: { VolBox }, + data() { + return { + row: null, + kcname: "", + pkcx: false, + showDetialBox: false, + tableData: [], + tableColumns: [ + { + prop: "materielCode", + title: "鐗╂枡缂栧彿", + type: "string", + width: 150, + }, + { + prop: "materielName", + title: "鐗╂枡鍚嶇О", + type: "string", + width: 150, + }, + { + prop: "palletCode", + title: "鎵樼洏缂栧彿", + type: "string", + width: 150, + }, + { + prop: "locationCode", + title: "璐т綅缂栧彿", + type: "string", + width: 180, + }, + { + prop: "unit", + title: "鍗曚綅", + type: "string", + width: 90, + }, + { + prop: "cutedWidth", + title: "瑁佸垏瀹�", + type: "string", + width: 100, + align: "left", + }, + { + prop: "useableQuantity", + title: "鍙敤鏁伴噺", + type: "string", + }, + ], + selection: [], + selectionSum: 0, + selectionClass: "less-style", + originalQuantity: 0, + }; + }, + methods: { + open(row) { + console.log(row); + this.row = row; + this.showDetialBox = true; + this.originalQuantity = this.row.lockQuantity; + this.selectionSum = this.row.lockQuantity; + this.getData(); + if (this.selectionSum == this.row.orderQuantity) { + this.selectionClass = "equle-style"; + } else if (this.selectionSum < this.row.orderQuantity) { + this.selectionClass = "less-style"; + } else { + this.selectionClass = "more-style"; + } + }, + lockStock() { + this.http + .post( + "api/OutboundOrderDetail/LockOutboundStock?id=" + this.row.id, + this.selection, + "鏁版嵁澶勭悊涓�" + ) + .then((x) => { + if (!x.status) return this.$message.error(x.message); + this.$message.success("鎿嶄綔鎴愬姛"); + this.showDetialBox = false; + this.$emit("parentCall", ($vue) => { + $vue.getData(); + }); + }); + }, + outbound() { + if (this.selection.length <= 0) { + return this.$message.error("璇峰嬀閫�"); + } + let url = this.pkcx + ? "api/Mes/PPGeneratePKOutboundTask?orderDetailId=" + : "api/Mes/PPCutOutGenerateOutboundTasks?orderDetailId="; + this.http + .post(url + this.row.id, this.selection, "鏁版嵁澶勭悊涓�") + .then((x) => { + if (!x.status) return this.$message.error(x.message); + this.$message.success("鎿嶄綔鎴愬姛"); + this.showDetialBox = false; + this.$emit("parentCall", ($vue) => { + $vue.getData(); + }); + }); + }, + getData(a) { + if (!a) this.pkcx = !this.pkcx; + let url = this.pkcx + ? "api/StockInfo/PPGetPKStockSelectViews?materielCode=" + : "api/StockInfo/PPGetStockSelectViews?materielCode="; + this.kcname = this.pkcx ? "绔嬪簱搴撳瓨" : "骞冲簱搴撳瓨"; + console.log(this.row.materielCode), + this.http + .post( + url + this.row.materielCode + "&orderId=" + this.row.orderId, + null, + "鏌ヨ涓�" + ) + .then((x) => { + this.tableData = x; + }); + }, + revokeAssign() { + console.log(this.row); + this.http + .post( + "api/OutboundOrderDetail/RevokeLockOutboundStock?id=" + this.row.id, + null, + "鏁版嵁澶勭悊涓�" + ) + .then((x) => { + if (!x.status) return this.$message.error(x.message); + this.$message.success("鎿嶄綔鎴愬姛"); + this.showDetialBox = false; + this.$emit("parentCall", ($vue) => { + $vue.getData(); + }); + }); + }, + handleSelectionChange(val) { + this.selection = val; + this.selectionSum = + val.reduce( + (accumulator, currentValue) => + accumulator + currentValue["useableQuantity"], + 0 + ) + this.originalQuantity; + if (this.selectionSum == this.row.orderQuantity) { + this.selectionClass = "equle-style"; + } else if (this.selectionSum < this.row.orderQuantity) { + this.selectionClass = "less-style"; + } else { + this.selectionClass = "more-style"; + } + }, + toggleSelection(rows) { + if (rows) { + rows.forEach((row) => { + this.$refs.singleTable.toggleRowSelection(row); + }); + } else { + this.$refs.singleTable.clearSelection(); + } + }, + clearSelection() { + this.$refs.singleTable.clearSelection(); + }, + handleRowClick(row) { + this.$refs.singleTable.toggleRowSelection(row); + }, + }, +}; +</script> +<style scoped> +.less-style { + color: black; +} + +.equle-style { + color: green; +} + +.more-style { + color: red; +} +</style> + +<style> +.text-button:hover { + background-color: #f0f9eb !important; +} + +.el-table .warning-row { + background: oldlace; +} + +.box-table .el-table tbody tr:hover > td { + background-color: #d8e0d4 !important; + /* color: #ffffff; */ +} + +.box-table .el-table tbody tr.current-row > td { + background-color: #f0f9eb !important; + /* color: #ffffff; */ +} + +.el-table .success-row { + background: #f0f9eb; +} + +.box-table .el-table { + border: 1px solid #ebeef5; +} + +.box-head .el-alert__content { + width: 100%; +} +</style> \ No newline at end of file diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPCutOutOrderDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPCutOutOrderDetail.vue" index 0f908fa..9088654 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPCutOutOrderDetail.vue" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPCutOutOrderDetail.vue" @@ -91,9 +91,9 @@ </el-table> </div> </vol-box> - <stock-select ref="child" @parentCall="parentCall"></stock-select> + <pp-stock-select ref="childs" ></pp-stock-select> <selected-stock - ref="selectedStock" + ref="SelectedStock" @parentCall="parentCall" ></selected-stock> </div> @@ -101,10 +101,10 @@ <script> import VolBox from "@/components/basic/VolBox.vue"; import VolForm from "@/components/basic/VolForm.vue"; -import StockSelect from "./StockSelect.vue"; +import PPStockSelect from "./PPStockSelect.vue"; import SelectedStock from "./SelectedStock.vue"; export default { - components: { VolBox, VolForm, StockSelect, SelectedStock }, + components: { VolBox, VolForm,"pp-stock-select":PPStockSelect, SelectedStock }, data() { return { row: null, @@ -297,10 +297,12 @@ }, tableButtonClick(row, column) { if (column.prop == "assignStock") { - this.$refs.child.open(row); + console.log(row); + console.log(this.$refs.childs); + this.$refs.childs.open(row); } else { //鐐瑰嚮鎵撳紑鍑哄簱璇︽儏 - this.$refs.selectedStock.open(row); + this.$refs.SelectedStock.open(row); } }, lockstocks() { @@ -326,7 +328,7 @@ var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id this.http - .post("api/Task/GenerateOutboundTasks", keys, "鏁版嵁澶勭悊涓�") + .post("api/Mes/PPCutOutGenerateOutboundTasks", keys, "鏁版嵁澶勭悊涓�") .then((x) => { if (!x.status) return this.$message.error(x.message); this.$message.success("鎿嶄綔鎴愬姛"); diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPoutOrderDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPoutOrderDetail.vue" index 04aa3e8..58cdc5b 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPoutOrderDetail.vue" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/mesPPoutOrderDetail.vue" @@ -271,7 +271,7 @@ this.http .post("api/MesPPOutboundOrderDetail/GetPageData", param, "鏌ヨ涓�") .then((x) => { - // console.log(x.rows); + console.log(x.rows); this.tableData = x.rows; }); }, @@ -306,7 +306,7 @@ var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id this.http - .post("api/Task/MESPPGenerateOutboundTasks", keys, "鏁版嵁澶勭悊涓�") + .post("api/Mes/MESPPGenerateOutboundTasks", keys, "鏁版嵁澶勭悊涓�") .then((x) => { if (!x.status) return this.$message.error(x.message); this.$message.success("鎿嶄綔鎴愬姛"); diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/mesPPOutboundOrderDetail.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/mesPPOutboundOrderDetail.js" index 6e33fa6..04c9401 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/mesPPOutboundOrderDetail.js" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/mesPPOutboundOrderDetail.js" @@ -1,57 +1,72 @@ //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜 let extension = { - components: { - //鏌ヨ鐣岄潰鎵╁睍缁勪欢 - gridHeader: '', - gridBody: gridBody, - gridFooter: '', - //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢 - modelHeader: '', - modelBody: '', - modelFooter: '' + components: { + //鏌ヨ鐣岄潰鎵╁睍缁勪欢 + gridHeader: '', + gridBody: gridBody, + gridFooter: '', + //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢 + modelHeader: '', + modelBody: '', + modelFooter: '' + }, + tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓) + buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽� + methods: { + //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄� + onInit() { + //鎵╁睍椤甸潰鍒濆鍖栨搷浣� + this.columns.push({ + field: '鎿嶄綔', + title: '鎿嶄綔', + width: 90, + fixed: 'right', + align: 'center', + formatter: (row) => { + return ( + '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">鏌ョ湅鏄庣粏</i>' + ); + }, + click: (row) => { + this.$refs.gridBody.open(row); + } + }); }, - tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓) - buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽� - methods: { - //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄� - onInit() { - }, - onInited() { - //妗嗘灦鍒濆鍖栭厤缃悗 - //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔 - //this.detailOptions.columns.forEach(column=>{ }); - }, - searchBefore(param) { - //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟 - //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ - return true; - }, - searchAfter(result) { - //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊� - return true; - }, - addBefore(formData) { - //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫�� - return true; - }, - updateBefore(formData) { - //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d - return true; - }, - rowClick({ row, column, event }) { - //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠� - this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�; - }, - modelOpenAfter(row) { - //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁 - //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add'; - //(2)缁欏脊鍑烘璁剧疆榛樿鍊� - //(3)this.editFormFields.瀛楁='xxx'; - //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊� - //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions) - } + onInited() { + //妗嗘灦鍒濆鍖栭厤缃悗 + //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔 + //this.detailOptions.columns.forEach(column=>{ }); + }, + searchBefore(param) { + //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟 + //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ + return true; + }, + searchAfter(result) { + //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊� + return true; + }, + addBefore(formData) { + //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫�� + return true; + }, + updateBefore(formData) { + //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d + return true; + }, + rowClick({ row, column, event }) { + //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠� + this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�; + }, + modelOpenAfter(row) { + //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁 + //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add'; + //(2)缁欏脊鍑烘璁剧疆榛樿鍊� + //(3)this.editFormFields.瀛楁='xxx'; + //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊� + //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions) } - }; - export default extension; - \ No newline at end of file + } +}; +export default extension; diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/mesPPCutOutboundOrder.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/mesPPCutOutboundOrder.vue" index a647ba0..f8a3c72 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/mesPPCutOutboundOrder.vue" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/outbound/mesPPCutOutboundOrder.vue" @@ -194,7 +194,7 @@ ]); const detail = ref({ cnName: "鍑哄簱鏄庣粏鍗�", - table: "OnboundOrderDetail", + table: "mesPPCutOutOrderDetail", columns: [ { field: "id", diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/16bda44f-cb60-43e3-8deb-16983a6c8720.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/16bda44f-cb60-43e3-8deb-16983a6c8720.vsidx" deleted file mode 100644 index fea932b..0000000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/16bda44f-cb60-43e3-8deb-16983a6c8720.vsidx" +++ /dev/null Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1ffecc40-5215-4fbe-92a8-4f08c948917b.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1ffecc40-5215-4fbe-92a8-4f08c948917b.vsidx" new file mode 100644 index 0000000..d741db6 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/1ffecc40-5215-4fbe-92a8-4f08c948917b.vsidx" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3a86d184-9f6a-4b52-8eb2-6a125517673d.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3a86d184-9f6a-4b52-8eb2-6a125517673d.vsidx" deleted file mode 100644 index 30a74c3..0000000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3a86d184-9f6a-4b52-8eb2-6a125517673d.vsidx" +++ /dev/null Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6573eb92-5634-4b4e-a7f1-96f2790803c7.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6573eb92-5634-4b4e-a7f1-96f2790803c7.vsidx" new file mode 100644 index 0000000..e50119f --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6573eb92-5634-4b4e-a7f1-96f2790803c7.vsidx" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7465d6d9-8464-4852-a7e6-98848228a1cf.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7465d6d9-8464-4852-a7e6-98848228a1cf.vsidx" new file mode 100644 index 0000000..a68c467 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/7465d6d9-8464-4852-a7e6-98848228a1cf.vsidx" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bcaff427-9b5a-40c5-b7b6-df06507540f9.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bcaff427-9b5a-40c5-b7b6-df06507540f9.vsidx" deleted file mode 100644 index 1abdbed..0000000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/bcaff427-9b5a-40c5-b7b6-df06507540f9.vsidx" +++ /dev/null Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c003f52c-46e5-4779-9a5b-7d482547a022.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c003f52c-46e5-4779-9a5b-7d482547a022.vsidx" new file mode 100644 index 0000000..f7dd227 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/c003f52c-46e5-4779-9a5b-7d482547a022.vsidx" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d7d7cdfe-7831-4766-872e-1bbd2ae71185.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d7d7cdfe-7831-4766-872e-1bbd2ae71185.vsidx" new file mode 100644 index 0000000..6e7f4b4 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d7d7cdfe-7831-4766-872e-1bbd2ae71185.vsidx" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d988a5f8-54ef-40e6-acc3-7fcd73682004.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d988a5f8-54ef-40e6-acc3-7fcd73682004.vsidx" deleted file mode 100644 index c2cf792..0000000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d988a5f8-54ef-40e6-acc3-7fcd73682004.vsidx" +++ /dev/null Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fed89d2c-c26e-4f31-9fa3-8a0b7f92a8fd.vsidx" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fed89d2c-c26e-4f31-9fa3-8a0b7f92a8fd.vsidx" deleted file mode 100644 index 8f9e9fa..0000000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/fed89d2c-c26e-4f31-9fa3-8a0b7f92a8fd.vsidx" +++ /dev/null Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs" index 14a133d..0338b2f 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicRepository/LocationInfoRepository.cs" @@ -86,6 +86,16 @@ } /// <summary> + /// 鑾峰彇鍙嚭搴撹揣浣嶇紪鍙� + /// </summary> + /// <param name="warehouseId"></param> + /// <returns></returns> + public List<string> PPGetCanOutLocationCodes(int warehouseId) + { + return QueryData(x => x.LocationCode, x => x.WarehouseId == warehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt())).Distinct().ToList(); + } + + /// <summary> /// 鑾峰彇MES鎸囧畾鍙嚭搴撹揣浣嶇紪鍙� /// </summary> /// <param name="warehouseId"></param> diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" index 3e875b8..d677aaf 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" @@ -55,7 +55,7 @@ "HA58" => AssignLocation_PP(roadwayNo, palletType, palletTypeInfo, beRelocationCode), "HA152" => AssignLocation_GM(roadwayNo, palletType, palletTypeInfo, beRelocationCode), "HA64" => AssignLocation_CSJ(roadwayNo, palletType, palletTypeInfo, beRelocationCode), - "闃荤剨浠�" => AssignLocation_ZH(roadwayNo, palletType, palletTypeInfo, beRelocationCode), + "HA154" => AssignLocation_ZH(roadwayNo, palletType, palletTypeInfo, beRelocationCode), "HA153" => AssignLocation(roadwayNo), "HA71" => AssignLocation(roadwayNo), "HA60" => AssignLocation(roadwayNo), diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/PPStockSelectViewDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/PPStockSelectViewDTO.cs" new file mode 100644 index 0000000..e0f5b7b --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/PPStockSelectViewDTO.cs" @@ -0,0 +1,24 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_DTO.Stock +{ + public class PPStockSelectViewDTO + { + public string MaterielCode { get; set; } + + public string MaterielName { get; set; } + + public float UseableQuantity { get; set; } + + public string PalletCode { get; set; } + + public string LocationCode { get; set; } + + public string Unit { get; set; } + public float CutedWidth { get; set; } + } +} diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/ILocationInfoRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/ILocationInfoRepository.cs" index 0a0ca37..f29220d 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/ILocationInfoRepository.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IBasicRepository/ILocationInfoRepository.cs" @@ -53,6 +53,8 @@ /// <returns></returns> List<string> GetCanOutLocationCodes(int warehouseId); + List<string> PPGetCanOutLocationCodes(int warehouseId); + /// <summary> /// 鑾峰彇MES鎸囧畾鍙嚭搴撹揣浣嶇紪鍙� /// </summary> diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IOutboundRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IOutboundRepository.cs" index 4a7d1be..7ee6315 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IOutboundRepository.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundRepository/IOutboundRepository.cs" @@ -14,5 +14,7 @@ IOutboundOrderRepository OutboundOrderRepository { get; } IOutStockLockInfoRepository OutboundStockLockInfoRepository { get; } + + IMesPPCutOutboundOrderRepository MesPPCutOutboundOrderRepository { get; } } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPCutOutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPCutOutboundOrderDetailService.cs" index 9eec4bb..d9c1538 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPCutOutboundOrderDetailService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPCutOutboundOrderDetailService.cs" @@ -3,12 +3,32 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using WIDESEA_Common.LocationEnum; +using WIDESEA_Core; using WIDESEA_Core.BaseServices; +using WIDESEA_DTO.Stock; +using WIDESEA_IOutboundRepository; using WIDESEA_Model.Models; namespace WIDESEA_IOutboundService { public interface IMesPPCutOutboundOrderDetailService : IService<Dt_MesPPCutOutboundOrderDetail> { + IMesPPCutOutboundOrderDetailRepository Repository { get; } + + (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPCutOutboundOrderDetail mesOutboundOrder,List<PPStockSelectViewDTO> stockSelectViewDTOs); + + /// <summary> + /// 閿佸畾鍑哄簱搴撳瓨(淇敼鏁版嵁) + /// </summary> + /// <param name="stockInfos">搴撳瓨鏄庣粏闆嗗悎</param> + /// <param name="outboundOrderDetails">鍑哄簱鍗曟槑缁嗛泦鍚�</param> + /// <param name="outStockLockInfos">鍑哄簱閿佸畾鏄庣粏闆嗗悎</param> + /// <param name="locationInfos">璐т綅缁撳悎</param> + /// <param name="locationStatus">璐т綅鐘舵�佷慨鏀圭殑鍊�</param> + /// <param name="tasks">浠诲姟淇℃伅</param> + /// <returns></returns> + WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_MesPPCutOutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null); + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderDetailService.cs" index efe0a5d..1cf3fa1 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderDetailService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderDetailService.cs" @@ -3,7 +3,6 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting.Server; using WIDESEA_Common.LocationEnum; using WIDESEA_Core; using WIDESEA_Core.BaseServices; @@ -16,11 +15,7 @@ { IMesPPOutboundOrderDetailRepository Repository { get; } - - - //(List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(List<Dt_MesPPOutboundOrderDetail> mesPPOutboundOrderDetails); - - (List<Dt_StockInfo>, Dt_MesPPOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrderDetail mesOutboundOrder); + (List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>, Dt_MesPPOutboundOrder mesPPOutboundOrder) AssignStockOutbound(List<Dt_MesPPOutboundOrderDetail> mesOutboundOrder); /// <summary> /// 閿佸畾鍑哄簱搴撳瓨(淇敼鏁版嵁) @@ -32,7 +27,8 @@ /// <param name="locationStatus">璐т綅鐘舵�佷慨鏀圭殑鍊�</param> /// <param name="tasks">浠诲姟淇℃伅</param> /// <returns></returns> - WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null); + WebResponseContent LockOutboundStockDataUpdate(Dt_MesPPOutboundOrder mesPPOutboundOrder,List<Dt_StockInfo> stockInfos, List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null); + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderService.cs" index bda1704..6974ddd 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IMesPPOutboundOrderService.cs" @@ -13,8 +13,9 @@ { IMesPPOutboundOrderRepository Repository { get; } - (List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrder mesOutboundOrder); + //(List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrder mesOutboundOrder); - (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPCutOutboundOrder mesPPOutboundOrder, Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail); + //(List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPCutOutboundOrder mesPPOutboundOrder, Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail); + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs" index 21d60b7..4d49688 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutStockLockInfoService.cs" @@ -58,7 +58,7 @@ /// <param name="assignQuantity"></param> /// <param name="taskNum"></param> /// <returns></returns> - Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder,Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null); + List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder,Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail, List<Dt_StockInfo> outStock, int? taskNum = null); /// <summary> /// diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs" index 146ddb5..2533a8d 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockInfoService.cs" @@ -22,7 +22,12 @@ List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, int warehoseId); - List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, string palletcode,int warehoseId); + //List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo,,string , int warehoseId); + + List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, string palletcode, int warehoseId); WebResponseContent StockQueryData(SaveModel saveModel); + + List<PPStockSelectViewDTO> PPGetStockSelectViews(int orderId, string materielCode); + List<PPStockSelectViewDTO> PPGetPKStockSelectViews(int orderId, string materielCode); } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" index 9b7a64c..ce08778 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs" @@ -160,12 +160,12 @@ WebResponseContent GenerateOutboundTasks(int[] keys); - /// <summary> - /// 鐢熸垚MESPP澶у嵎鍑哄簱浠诲姟 - /// </summary> - /// <param name="keys"></param> - /// <returns></returns> - WebResponseContent MESPPGenerateOutboundTasks(int[] keys); + ///// <summary> + ///// 鐢熸垚MESPP澶у嵎鍑哄簱浠诲姟 + ///// </summary> + ///// <param name="keys"></param> + ///// <returns></returns> + //WebResponseContent MESPPGenerateOutboundTasks(int[] keys); /// <summary> /// 鍑哄簱浠诲姟瀹屾垚 @@ -327,5 +327,25 @@ /// </summary> /// <returns></returns> MesResponseContent BagInfoSync(MesBagInfoModel bagInfoModel); + + /// <summary> + /// 鐢熸垚MESPP澶у嵎鍑哄簱浠诲姟 + /// </summary> + /// <param name="keys"></param> + /// <returns></returns> + WebResponseContent MESPPGenerateOutboundTasks(int[] keys); + + /// <summary> + /// 鐢熸垚MESPP灏忓嵎鍑哄簱浠诲姟 + /// </summary> + /// <param name="keys"></param> + /// <returns></returns> + //WebResponseContent PPCutOutGenerateOutboundTasks(int[] keys); + + WebResponseContent PPCutOutGenerateOutboundTasks(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews); + + WebResponseContent PPGeneratePKOutboundTask(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews); + + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesPPOutboundOrderDetail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesPPOutboundOrderDetail.cs" index 982fadc..ceef524 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesPPOutboundOrderDetail.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_MesPPOutboundOrderDetail.cs" @@ -11,7 +11,7 @@ /// <summary> /// PP浠撳ぇ鍗稭ES鍑哄簱鍗曟槑缁� /// </summary> - [SugarTable(nameof(Dt_MesPPOutboundOrderDetail))] + [SugarTable(nameof(Dt_MesPPOutboundOrderDetail), "PP浠撳ぇ鍗稭ES鍑哄簱鍗曟槑缁�")] public class Dt_MesPPOutboundOrderDetail : BaseEntity { /// <summary> @@ -40,7 +40,7 @@ /// <summary> /// 璁㈠崟鏄庣粏鐘舵�� /// </summary> - [SugarColumn(IsNullable = false,ColumnDescription = "璁㈠崟鏄庣粏鐘舵��")] + [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鏄庣粏鐘舵��")] public int OrderDetailStatus { get; set; } } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/OutboundRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/OutboundRepository.cs" index 8114089..7854934 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/OutboundRepository.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundRepository/OutboundRepository.cs" @@ -15,11 +15,14 @@ public IOutStockLockInfoRepository OutboundStockLockInfoRepository { get; } - public OutboundRepository(IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IOutStockLockInfoRepository outboundStockLockInfoRepository) + public IMesPPCutOutboundOrderRepository MesPPCutOutboundOrderRepository { get; } + + public OutboundRepository(IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IOutStockLockInfoRepository outboundStockLockInfoRepository,IMesPPCutOutboundOrderRepository mesPPCutOutboundOrderRepository) { OutboundOrderDetailRepository = outboundOrderDetailRepository; OutboundOrderRepository = outboundOrderRepository; OutboundStockLockInfoRepository = outboundStockLockInfoRepository; + MesPPCutOutboundOrderRepository = mesPPCutOutboundOrderRepository; } } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPCutOutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPCutOutboundOrderDetailService.cs" index 693de67..263ac9b 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPCutOutboundOrderDetailService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPCutOutboundOrderDetailService.cs" @@ -3,7 +3,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using SqlSugar.Extensions; +using WIDESEA_Common.LocationEnum; +using WIDESEA_Common.OrderEnum; +using WIDESEA_Core; using WIDESEA_Core.BaseServices; +using WIDESEA_DTO.Stock; using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; using WIDESEA_IOutboundRepository; @@ -33,5 +38,188 @@ _basicService = basicService; _recordService = recordService; } + + public (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPCutOutboundOrderDetail mesPPOutboundOrderDetails, List<PPStockSelectViewDTO> stockSelectViews) + { + #region + //Dt_MesPPCutOutboundOrder OutboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x => x.Id == mesPPOutboundOrderDetails.OrderId).First(); + //List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); + //List<Dt_MesPPCutOutboundOrderDetail> groupDetails = mesPPOutboundOrderDetails.GroupBy(x => new { x.MaterielCode, x.BatchNo }).Select(x => new Dt_MesPPCutOutboundOrderDetail { OrderQuantity = x.Sum(v => v.OrderQuantity) - x.Sum(v => v.LockQuantity), MaterielCode = x.Key.MaterielCode, BatchNo = x.Key.BatchNo, }).ToList(); + + //List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); + //List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + //foreach (var item in groupDetails) + //{ + // float originalNeedQuantity = item.OrderQuantity; + + // float needQuantity = originalNeedQuantity; + + // List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(item.MaterielCode, item.BatchNo, OutboundOrder.WarehouseId); + // if (!stockInfos.Any()) + // { + // throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); + // } + // List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, item.MaterielCode, needQuantity, out float residueQuantity); + // item.LockQuantity += needQuantity - residueQuantity; + // outStocks.AddRange(autoAssignStocks); + // float assignQuantity = needQuantity - residueQuantity; + + // List<Dt_MesPPCutOutboundOrderDetail> details = mesPPOutboundOrderDetails.Where(x => !string.IsNullOrEmpty(x.BatchNo) ? x.BatchNo == item.BatchNo : true && x.MaterielCode == item.MaterielCode).ToList(); + + // for (int i = 0; i < details.Count; i++) + // { + // float orderQuantity = details[i].OrderQuantity; + // for (int j = 0; j < autoAssignStocks.Count; j++) + // { + // float detailAssignQuantity = outStockLockInfos.Where(x => !string.IsNullOrEmpty(x.BatchNo) ? x.BatchNo == item.BatchNo : true && x.MaterielCode == item.MaterielCode && x.OrderDetailId == details[i].Id).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� + + // float palletAssignQuantity = outStockLockInfos.Where(x => x.BatchNo == item.BatchNo && x.MaterielCode == item.MaterielCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� + // if (string.IsNullOrEmpty(item.BatchNo)) + // { + // palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == item.MaterielCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� + // } + // float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); + // if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� + // { + // float orderDetailNeedQuantity = details[i].OrderQuantity - detailAssignQuantity; + // if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) + // { + // details[i].LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(OutboundOrder, details[i], autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // } + // else + // { + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(OutboundOrder, details[i], autoAssignStocks[j], details[i].OrderQuantity - details[i].LockQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // details[i].LockQuantity = details[i].OrderQuantity; + // break; + // } + + // } + // } + // } + + + // locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); + + //} + #endregion + (bool, string) checkResult = CheckSelectStockDeital(mesPPOutboundOrderDetails, stockSelectViews); + if (!checkResult.Item1) throw new Exception(checkResult.Item2); + Dt_MesPPCutOutboundOrder OutboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x => x.Id == mesPPOutboundOrderDetails.OrderId).First(); + float originalNeedQuantity = mesPPOutboundOrderDetails.OrderQuantity - mesPPOutboundOrderDetails.LockQuantity; + + float needQuantity = originalNeedQuantity; + + List<Dt_StockInfo> outStocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockSelectViews.Select(x => x.PalletCode).ToList()); + float assignQuantity = 0; + outStocks.ForEach(x => + { + x.Details.ForEach(v => + { + assignQuantity += v.StockQuantity - v.OutboundQuantity; + }); + }); + + mesPPOutboundOrderDetails.LockQuantity += assignQuantity; + outStocks.ForEach(x => + { + x.Details.ForEach(v => + { + v.OutboundQuantity = v.StockQuantity; + }); + }); + needQuantity -= assignQuantity; + if (mesPPOutboundOrderDetails.OrderQuantity > mesPPOutboundOrderDetails.LockQuantity) + { + List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrderDetails.MaterielCode, mesPPOutboundOrderDetails.BatchNo, OutboundOrder.WarehouseId); + stockInfos = stockInfos.Where(x => !stockSelectViews.Select(v => v.PalletCode).Contains(x.PalletCode)).ToList(); + List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrderDetails.MaterielCode, needQuantity, out float residueQuantity); + mesPPOutboundOrderDetails.LockQuantity += needQuantity - residueQuantity; + outStocks.AddRange(autoAssignStocks); + mesPPOutboundOrderDetails.OrderDetailStatus = OrderDetailStatusEnum.AssignOver.ObjToInt(); + if (residueQuantity > 0) + { + mesPPOutboundOrderDetails.OrderDetailStatus = OrderDetailStatusEnum.AssignOverPartial.ObjToInt(); + } + } + + List<Dt_OutStockLockInfo> outStockLockInfos = _outStockLockInfoService.GetOutStockLockInfos(OutboundOrder, mesPPOutboundOrderDetails, outStocks); + + + List<Dt_LocationInfo> locationInfos = _basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList()); + return (outStocks, mesPPOutboundOrderDetails, outStockLockInfos, locationInfos); + } + private (bool, string) CheckSelectStockDeital(Dt_MesPPCutOutboundOrderDetail outboundOrderDetail, List<PPStockSelectViewDTO> stockSelectViews) + { + if (outboundOrderDetail == null) + { + return (false, "鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅"); + } + if (outboundOrderDetail.OrderDetailStatus != OrderDetailStatusEnum.New.ObjToInt() && outboundOrderDetail.OrderDetailStatus != OrderDetailStatusEnum.AssignOverPartial.ObjToInt()) + { + return (false, "璇ユ槑缁嗕笉鍙搷浣�"); + } + if (stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrderDetail.OrderQuantity - outboundOrderDetail.LockQuantity) + { + return (false, "閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺"); + } + return (true, "鎴愬姛"); + } + + + /// <summary> + /// 鍑哄簱搴撳瓨鍒嗛厤鍚庯紝鏇存柊鏁版嵁搴撴暟鎹� + /// </summary> + /// <param name="stockInfos"></param> + /// <param name="outboundOrderDetails"></param> + /// <param name="outStockLockInfos"></param> + /// <param name="locationInfos"></param> + /// <param name="locationStatus"></param> + /// <param name="tasks"></param> + /// <returns></returns> + public WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_MesPPCutOutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null) + { + try + { + _stockService.StockInfoService.Repository.UpdateData(stockInfos); + List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>(); + foreach (var item in stockInfos) + { + stockInfoDetails.AddRange(item.Details); + } + _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetails); + BaseDal.UpdateData(outboundOrderDetails); + + List<Dt_OutStockLockInfo> addOutStockLockInfos = outStockLockInfos.Where(x => x.Id == 0).ToList(); + if (addOutStockLockInfos != null && addOutStockLockInfos.Any()) + { + if (tasks != null) + { + addOutStockLockInfos.ForEach(x => + { + x.TaskNum = tasks.FirstOrDefault(v => v.PalletCode == x.PalletCode)?.TaskNum; + }); + } + + _outStockLockInfoService.Repository.AddData(addOutStockLockInfos); + } + List<Dt_OutStockLockInfo> updateOutStockLockInfos = outStockLockInfos.Where(x => x.Id > 0).ToList(); + if (updateOutStockLockInfos != null && updateOutStockLockInfos.Any()) + { + _outStockLockInfoService.Repository.UpdateData(updateOutStockLockInfos); + } + + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, locationStatus, LocationChangeType.OutboundAssignLocation, "", tasks?.Select(x => x.TaskNum).ToList()); + _basicService.LocationInfoService.Repository.UpdateLocationStatus(locationInfos, locationStatus); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + return WebResponseContent.Instance.Error(ex.Message); + } + } + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderDetailService.cs" index 2f8ea48..eb95355 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderDetailService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderDetailService.cs" @@ -24,18 +24,74 @@ private readonly IOutStockLockInfoService _outStockLockInfoService; private readonly IBasicService _basicService; private readonly IRecordService _recordService; - private readonly IOutboundService _outboundService; - + private readonly IMesPPOutboundOrderService _mesPPOutboundOrderService; public IMesPPOutboundOrderDetailRepository Repository => BaseDal; - public MesPPOutboundOrderDetailService(IMesPPOutboundOrderDetailRepository BaseDal, IBasicRepository basicRepository, IOutboundService outboundService, IStockService stockService, IOutStockLockInfoService outStockLockInfoService, IBasicService basicService, IRecordService recordService) : base(BaseDal) + public MesPPOutboundOrderDetailService(IMesPPOutboundOrderDetailRepository BaseDal,IMesPPOutboundOrderService mesPPOutboundOrderService ,IBasicRepository basicRepository, IStockService stockService, IOutStockLockInfoService outStockLockInfoService, IBasicService basicService, IRecordService recordService) : base(BaseDal) { _basicRepository = basicRepository; _stockService = stockService; _outStockLockInfoService = outStockLockInfoService; _basicService = basicService; _recordService = recordService; - _outboundService = outboundService; + _mesPPOutboundOrderService=mesPPOutboundOrderService; + } + + public (List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>, Dt_MesPPOutboundOrder mesPPOutboundOrder) AssignStockOutbound(List<Dt_MesPPOutboundOrderDetail> mesPPOutboundOrderDetails) + { + List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); + + List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); + List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + Dt_MesPPOutboundOrder OutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.Id == mesPPOutboundOrderDetails.FirstOrDefault().OrderId).First(); + float originalNeedQuantity = OutboundOrder.OrderQuantity; + + float needQuantity = originalNeedQuantity; + //Dt_MesPPOutboundOrder outboundOrder = _outboundRepository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId); + + List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(OutboundOrder.MaterialCode, "", mesPPOutboundOrderDetails.FirstOrDefault()?.CarrierCode ?? "", OutboundOrder.WarehouseId); + if (!stockInfos.Any()) + { + throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); + } + List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, OutboundOrder.MaterialCode, needQuantity, out float residueQuantity); + OutboundOrder.LockQuantity += needQuantity - residueQuantity; + autoAssignStocks.OrderBy(x => x.Details.FirstOrDefault()?.StockQuantity).ToList(); + outStocks.AddRange(autoAssignStocks); + float assignQuantity = needQuantity - residueQuantity; + + float orderQuantity = OutboundOrder.OrderQuantity; + + for (int j = 0; j < autoAssignStocks.Count; j++) + { + float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == OutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� + + float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == OutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� + + float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); + if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� + { + float orderDetailNeedQuantity = OutboundOrder.OrderQuantity - detailAssignQuantity; + if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) + { + OutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; + //Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(OutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); + Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(OutboundOrder, autoAssignStocks[j], assignQuantity); + outStockLockInfos.Add(outStockLockInfo); + } + else + { + //Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(OutboundOrder, autoAssignStocks[j], OutboundOrder.OrderQuantity - OutboundOrder.LockQuantity); + Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(OutboundOrder, autoAssignStocks[j], assignQuantity); + outStockLockInfos.Add(outStockLockInfo); + OutboundOrder.LockQuantity = OutboundOrder.OrderQuantity; + break; + } + } + } + locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); + + return (outStocks, mesPPOutboundOrderDetails, outStockLockInfos, locationInfos, OutboundOrder); } /// <summary> @@ -48,7 +104,7 @@ /// <param name="locationStatus"></param> /// <param name="tasks"></param> /// <returns></returns> - public WebResponseContent LockOutboundStockDataUpdate(List<Dt_StockInfo> stockInfos, List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null) + public WebResponseContent LockOutboundStockDataUpdate(Dt_MesPPOutboundOrder mesPPOutboundOrder, List<Dt_StockInfo> stockInfos, List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails, List<Dt_OutStockLockInfo> outStockLockInfos, List<Dt_LocationInfo> locationInfos, LocationStatusEnum locationStatus = LocationStatusEnum.Lock, List<Dt_Task>? tasks = null) { try { @@ -79,6 +135,10 @@ { _outStockLockInfoService.Repository.UpdateData(updateOutStockLockInfos); } + if (mesPPOutboundOrder != null) + { + _mesPPOutboundOrderService.UpdateData(mesPPOutboundOrder); + } _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, locationStatus, LocationChangeType.OutboundAssignLocation, "", tasks?.Select(x => x.TaskNum).ToList()); _basicService.LocationInfoService.Repository.UpdateLocationStatus(locationInfos, locationStatus); @@ -90,125 +150,5 @@ } } - - /// <summary> - /// - /// </summary> - /// <param name="outboundOrderDetails"></param> - /// <returns></returns> - public (List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails) - { - if (!outboundOrderDetails.Any()) - { - throw new Exception($"鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅"); - } - - if (outboundOrderDetails.GroupBy(x => x.OrderId).Count() > 1) - { - throw new Exception($"璇峰嬁鍚屾椂鎿嶄綔澶氫釜鍗曟嵁鏄庣粏"); - } - Dt_MesPPOutboundOrder mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId).First(); - List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); - - List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); - List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); - - - List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrder.MaterialCode, "", outboundOrderDetails.FirstOrDefault()?.CarrierCode ?? "", mesPPOutboundOrder.WarehouseId); - if (!stockInfos.Any()) - { - throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); - } - float originalNeedQuantity = mesPPOutboundOrder.OrderQuantity; - - float needQuantity = originalNeedQuantity; - List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrder.MaterialCode, needQuantity, out float residueQuantity); - mesPPOutboundOrder.LockQuantity += needQuantity - residueQuantity; - outStocks.AddRange(autoAssignStocks); - float assignQuantity = needQuantity - residueQuantity; - - float orderQuantity = mesPPOutboundOrder.OrderQuantity; - for (int j = 0; j < autoAssignStocks.Count; j++) - { - float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� - - float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� - - float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); - if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� - { - float orderDetailNeedQuantity = mesPPOutboundOrder.OrderQuantity - detailAssignQuantity; - if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) - { - mesPPOutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); - outStockLockInfos.Add(outStockLockInfo); - } - else - { - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], mesPPOutboundOrder.OrderQuantity - mesPPOutboundOrder.LockQuantity); - outStockLockInfos.Add(outStockLockInfo); - mesPPOutboundOrder.LockQuantity = mesPPOutboundOrder.OrderQuantity; - break; - } - } - } - locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); - - return (outStocks, outboundOrderDetails, outStockLockInfos, locationInfos); - } - - - public (List<Dt_StockInfo>, Dt_MesPPOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrderDetail mesPPOutboundOrder) - { - List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); - - List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); - List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); - - //float originalNeedQuantity = mesPPOutboundOrder.OrderQuantity; - - //float needQuantity = originalNeedQuantity; - - //List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrder.MaterialCode, "", mesPPOutboundOrder.Details.FirstOrDefault()?.CarrierCode ?? "", mesPPOutboundOrder.WarehouseId); - //if (!stockInfos.Any()) - //{ - // throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); - //} - //List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrder.MaterialCode, needQuantity, out float residueQuantity); - //mesPPOutboundOrder.LockQuantity += needQuantity - residueQuantity; - //outStocks.AddRange(autoAssignStocks); - //float assignQuantity = needQuantity - residueQuantity; - - //float orderQuantity = mesPPOutboundOrder.OrderQuantity; - //for (int j = 0; j < autoAssignStocks.Count; j++) - //{ - // float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� - - // float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� - - // float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); - // if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� - // { - // float orderDetailNeedQuantity = mesPPOutboundOrder.OrderQuantity - detailAssignQuantity; - // if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) - // { - // mesPPOutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; - // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); - // outStockLockInfos.Add(outStockLockInfo); - // } - // else - // { - // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], mesPPOutboundOrder.OrderQuantity - mesPPOutboundOrder.LockQuantity); - // outStockLockInfos.Add(outStockLockInfo); - // mesPPOutboundOrder.LockQuantity = mesPPOutboundOrder.OrderQuantity; - // break; - // } - // } - //} - //locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); - - return (outStocks, mesPPOutboundOrder, outStockLockInfos, locationInfos); - } } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs" index 423d52c..31d97cd 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesPPOutboundOrderService.cs" @@ -34,109 +34,110 @@ _recordService = recordService; } - public (List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrder mesPPOutboundOrder) - { - List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); + //public (List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPOutboundOrder mesPPOutboundOrder) + //{ + // List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); - List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); - List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + // List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); + // List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); - float originalNeedQuantity = mesPPOutboundOrder.OrderQuantity; + // float originalNeedQuantity = mesPPOutboundOrder.OrderQuantity; - float needQuantity = originalNeedQuantity; + // float needQuantity = originalNeedQuantity; - List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrder.MaterialCode, "", mesPPOutboundOrder.Details.FirstOrDefault()?.CarrierCode ?? "",mesPPOutboundOrder.WarehouseId); - if (!stockInfos.Any()) - { - throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); - } - List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrder.MaterialCode, needQuantity, out float residueQuantity); - mesPPOutboundOrder.LockQuantity += needQuantity - residueQuantity; - outStocks.AddRange(autoAssignStocks); - float assignQuantity = needQuantity - residueQuantity; + // List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPOutboundOrder.MaterialCode, "", mesPPOutboundOrder.Details.FirstOrDefault()?.CarrierCode ?? "",mesPPOutboundOrder.WarehouseId); + // if (!stockInfos.Any()) + // { + // throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); + // } + // List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPOutboundOrder.MaterialCode, needQuantity, out float residueQuantity); + // mesPPOutboundOrder.LockQuantity += needQuantity - residueQuantity; + // outStocks.AddRange(autoAssignStocks); + // float assignQuantity = needQuantity - residueQuantity; - float orderQuantity = mesPPOutboundOrder.OrderQuantity; - for (int j = 0; j < autoAssignStocks.Count; j++) - { - float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� + // float orderQuantity = mesPPOutboundOrder.OrderQuantity; + // for (int j = 0; j < autoAssignStocks.Count; j++) + // { + // float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� - float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� + // float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� - float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); - if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� - { - float orderDetailNeedQuantity = mesPPOutboundOrder.OrderQuantity - detailAssignQuantity; - if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) - { - mesPPOutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); - outStockLockInfos.Add(outStockLockInfo); - } - else - { - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], mesPPOutboundOrder.OrderQuantity - mesPPOutboundOrder.LockQuantity); - outStockLockInfos.Add(outStockLockInfo); - mesPPOutboundOrder.LockQuantity = mesPPOutboundOrder.OrderQuantity; - break; - } - } - } - locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); + // float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); + // if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� + // { + // float orderDetailNeedQuantity = mesPPOutboundOrder.OrderQuantity - detailAssignQuantity; + // if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) + // { + // mesPPOutboundOrder.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // } + // else + // { + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, autoAssignStocks[j], mesPPOutboundOrder.OrderQuantity - mesPPOutboundOrder.LockQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // mesPPOutboundOrder.LockQuantity = mesPPOutboundOrder.OrderQuantity; + // break; + // } + // } + // } + // locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); - return (outStocks, mesPPOutboundOrder, outStockLockInfos, locationInfos); - } + // return (outStocks, mesPPOutboundOrder, outStockLockInfos, locationInfos); + //} - public (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPCutOutboundOrder mesPPOutboundOrder, Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail) - { - List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); + //public (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) AssignStockOutbound(Dt_MesPPCutOutboundOrder mesPPOutboundOrder, Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail) + //{ + // List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>(); - List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); - List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); - //Dt_MesPPCutOutboundOrder outboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x=>x.Id==mesPPOutboundOrder.OrderId).First(); - float originalNeedQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; + // List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); + // List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + // //Dt_MesPPCutOutboundOrder outboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x=>x.Id==mesPPOutboundOrder.OrderId).First(); + // float originalNeedQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; - float needQuantity = originalNeedQuantity; + // float needQuantity = originalNeedQuantity; - List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPCutOutboundOrderDetail.MaterielCode, "", mesPPOutboundOrder.WarehouseId); - if (!stockInfos.Any()) - { - throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); - } - List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPCutOutboundOrderDetail.MaterielCode, needQuantity, out float residueQuantity); - mesPPCutOutboundOrderDetail.LockQuantity += needQuantity - residueQuantity; - outStocks.AddRange(autoAssignStocks); - float assignQuantity = needQuantity - residueQuantity; + // List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesPPCutOutboundOrderDetail.MaterielCode, "", mesPPOutboundOrder.WarehouseId); + // if (!stockInfos.Any()) + // { + // throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨"); + // } + // List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesPPCutOutboundOrderDetail.MaterielCode, needQuantity, out float residueQuantity); + // mesPPCutOutboundOrderDetail.LockQuantity += needQuantity - residueQuantity; + // outStocks.AddRange(autoAssignStocks); + // float assignQuantity = needQuantity - residueQuantity; - float orderQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; - for (int j = 0; j < autoAssignStocks.Count; j++) - { - float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� + // float orderQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; + // for (int j = 0; j < autoAssignStocks.Count; j++) + // { + // float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲� - float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� + // float palletAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode && x.PalletCode == autoAssignStocks[j].PalletCode).Sum(x => x.AssignQuantity);//鍑哄簱璇︽儏宸插垎閰嶆暟閲� - float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); - if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� - { - float orderDetailNeedQuantity = mesPPCutOutboundOrderDetail.OrderQuantity - detailAssignQuantity; - if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) - { - mesPPCutOutboundOrderDetail.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, mesPPCutOutboundOrderDetail, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); - outStockLockInfos.Add(outStockLockInfo); - } - else - { - Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, mesPPCutOutboundOrderDetail, autoAssignStocks[j], mesPPCutOutboundOrderDetail.OrderQuantity - mesPPCutOutboundOrderDetail.LockQuantity); - outStockLockInfos.Add(outStockLockInfo); - mesPPCutOutboundOrderDetail.LockQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; - break; - } - } - } - locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); + // float palletOutboundQuantity = autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity); + // if (palletAssignQuantity < palletOutboundQuantity)//濡傛灉鍑哄簱璇︽儏宸插垎閰嶆暟閲忓皬浜庢墭鐩樺凡鍒嗛厤鏁伴噺锛屽垯鍙互缁х画娣诲姞璇ユ墭鐩樺嚭搴撲俊鎭� + // { + // float orderDetailNeedQuantity = mesPPCutOutboundOrderDetail.OrderQuantity - detailAssignQuantity; + // if (orderDetailNeedQuantity > autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity) + // { + // mesPPCutOutboundOrderDetail.LockQuantity += autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity; + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, mesPPCutOutboundOrderDetail, autoAssignStocks[j], autoAssignStocks[j].Details.Sum(x => x.OutboundQuantity) - palletAssignQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // } + // else + // { + // Dt_OutStockLockInfo outStockLockInfo = _outStockLockInfoService.GetOutStockLockInfo(mesPPOutboundOrder, mesPPCutOutboundOrderDetail, autoAssignStocks[j], mesPPCutOutboundOrderDetail.OrderQuantity - mesPPCutOutboundOrderDetail.LockQuantity); + // outStockLockInfos.Add(outStockLockInfo); + // mesPPCutOutboundOrderDetail.LockQuantity = mesPPCutOutboundOrderDetail.OrderQuantity; + // break; + // } + // } + // } + // locationInfos.AddRange(_basicService.LocationInfoService.Repository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); - return (outStocks, mesPPCutOutboundOrderDetail, outStockLockInfos, locationInfos); - } + // return (outStocks, mesPPCutOutboundOrderDetail, outStockLockInfos, locationInfos); + //} + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" index f4820b9..2e84bab 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutStockLockInfoService.cs" @@ -124,32 +124,37 @@ /// <param name="assignQuantity"></param> /// <param name="taskNum"></param> /// <returns></returns> - public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder,Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null) + public List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder, Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail, List<Dt_StockInfo> outStock, int? taskNum = null) { + List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); - Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo() + foreach (var item in outStock) { - PalletCode = outStock.PalletCode, - AssignQuantity = assignQuantity, - MaterielCode = mesPPCutOutboundOrderDetail.MaterielCode, - BatchNo = outStock.Details.FirstOrDefault()?.BatchNo ?? "", - LocationCode = outStock.LocationCode, - MaterielName = mesPPCutOutboundOrderDetail.MaterielName, - OrderDetailId = mesPPCutOutboundOrderDetail.Id, - OrderNo = mesPPCutOutboundOrder.OrderNo, - OrderType = mesPPCutOutboundOrder.OrderType, - OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity), - Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(), - StockId = outStock.Id, - TaskNum = taskNum, - OrderQuantity = mesPPCutOutboundOrderDetail.OrderQuantity, - Unit = mesPPCutOutboundOrderDetail.Unit - }; + Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo() + { + PalletCode = item.PalletCode, + AssignQuantity = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.OutboundQuantity), + MaterielCode = mesPPCutOutboundOrderDetail.MaterielCode, + BatchNo = item.Details.FirstOrDefault().BatchNo, + LocationCode = item.LocationCode, + MaterielName = mesPPCutOutboundOrderDetail.MaterielName, + OrderDetailId = mesPPCutOutboundOrderDetail.Id, + OrderNo = mesPPCutOutboundOrder.OrderNo, + OrderType = mesPPCutOutboundOrder.OrderType, + OriginalQuantity = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).Sum(x => x.StockQuantity), + Status = taskNum == null ? OutLockStockStatusEnum.宸插垎閰�.ObjToInt() : OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(), + StockId = item.Id, + TaskNum = taskNum, + OrderQuantity = mesPPCutOutboundOrderDetail.OrderQuantity, + Unit = mesPPCutOutboundOrderDetail.Unit + }; + outStockLockInfos.Add(outStockLockInfo); + } - return outStockLockInfo; + return outStockLockInfos; } - public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesPPOutboundOrder mesPPOutboundOrder, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null) + public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesPPOutboundOrder mesPPOutboundOrder, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null) { Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo() diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" index eaaf4d8..034efde 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" @@ -19,20 +19,22 @@ public IMesPPOutboundOrderService MesPPOutboundOrderService { get; } - public IMesPPOutboundOrderDetailService MesPPOutboundOrderDetailService { get; } + public IMesPPOutboundOrderDetailService MesPPOutboundOrderDetailService { get; } public IMesPPCutOutboundOrderService MesPPCutOutboundOrderService { get; } public IMesPPCutOutboundOrderDetailService MesPPCutOutboundOrderDetailService { get; } - public OutboundService(IOutboundOrderDetailService outboundOrderDetailService,IMesPPOutboundOrderService mesPPOutboundOrderService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService, IMesOutboundOrderService mesOutboundOrderService) + public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IMesPPOutboundOrderDetailService mesPPOutboundOrderDetailService, IMesPPCutOutboundOrderDetailService mesPPCutOutboundOrderDetailService, IMesPPCutOutboundOrderService mesPPCutOutboundOrderService, IMesPPOutboundOrderService mesPPOutboundOrderService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService, IMesOutboundOrderService mesOutboundOrderService) { OutboundOrderDetailService = outboundOrderDetailService; OutboundOrderService = outboundOrderService; OutboundStockLockInfoService = outboundStockLockInfoService; MesOutboundOrderService = mesOutboundOrderService; MesPPOutboundOrderService = mesPPOutboundOrderService; - + MesPPCutOutboundOrderService = mesPPCutOutboundOrderService; + MesPPCutOutboundOrderDetailService = mesPPCutOutboundOrderDetailService; + MesPPOutboundOrderDetailService = mesPPOutboundOrderDetailService; } } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" index 0892689..2df00a5 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" @@ -55,7 +55,7 @@ throw new Exception($"鏈壘鍒板嚭搴撳崟淇℃伅"); } - List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(outboundOrder.WarehouseId); + List<string> locationCodes = _basicRepository.LocationInfoRepository.PPGetCanOutLocationCodes(outboundOrder.WarehouseId); return BaseDal.QueryTabs<Dt_StockInfo, Dt_StockInfoDetail, StockSelectViewDTO>((a, b) => a.Id == b.StockId, (a, b) => new StockSelectViewDTO { @@ -115,6 +115,92 @@ return null; } } + /// <summary> + /// 鏌ヨ璁㈠崟PP绔嬪簱搴撳瓨瑙嗗浘 + /// </summary> + /// <param name="orderId"></param> + /// <param name="materielCode"></param> + /// <returns></returns> + public List<PPStockSelectViewDTO> PPGetStockSelectViews(int orderId, string materielCode) + { + try + { + Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder = _outboundRepository.MesPPCutOutboundOrderRepository.QueryFirst(x => x.Id == orderId); + if (mesPPCutOutboundOrder == null) + { + throw new Exception($"鏈壘鍒板嚭搴撳崟淇℃伅"); + } + List<string> locationCodes = _basicRepository.LocationInfoRepository.PPGetCanOutLocationCodes(mesPPCutOutboundOrder.WarehouseId); + + return BaseDal.QueryTabs<Dt_StockInfo, Dt_StockInfoDetail, PPStockSelectViewDTO>((a, b) => a.Id == b.StockId, (a, b) => new PPStockSelectViewDTO + { + LocationCode = a.LocationCode, + MaterielCode = b.MaterielCode, + MaterielName = b.MaterielName, + PalletCode = a.PalletCode, + Unit = b.Unit, + CutedWidth = b.CutedWidth, + UseableQuantity = b.StockQuantity - b.OutboundQuantity + }, a => locationCodes.Contains(a.LocationCode), b => b.StockQuantity > b.OutboundQuantity && b.MaterielCode == materielCode, x => true).GroupBy(x => x.PalletCode).Select(x => new PPStockSelectViewDTO + { + LocationCode = x.FirstOrDefault()?.LocationCode ?? "", + MaterielCode = x.FirstOrDefault()?.MaterielCode ?? "", + MaterielName = x.FirstOrDefault()?.MaterielName ?? "", + Unit = x.FirstOrDefault()?.Unit ?? "", + CutedWidth = x.Sum(x => x.CutedWidth), + PalletCode = x.Key, + UseableQuantity = x.Sum(x => x.UseableQuantity) + }).ToList(); + } + catch (Exception ex) + { + + return null; + } + } + + /// <summary> + /// 鏌ヨ璁㈠崟PP骞冲簱搴撳瓨瑙嗗浘 + /// </summary> + /// <param name="orderId"></param> + /// <param name="materielCode"></param> + /// <returns></returns> + public List<PPStockSelectViewDTO> PPGetPKStockSelectViews(int orderId, string materielCode) + { + try + { + Dt_MesPPCutOutboundOrder outboundOrder = _outboundRepository.MesPPCutOutboundOrderRepository.QueryFirst(x => x.Id == orderId); + if (outboundOrder == null) + { + throw new Exception($"鏈壘鍒板嚭搴撳崟淇℃伅"); + } + return BaseDal.QueryTabs<Dt_StockInfo, Dt_StockInfoDetail, PPStockSelectViewDTO>((a, b) => a.Id == b.StockId && a.WarehouseId == outboundOrder.WarehouseId, (a, b) => new PPStockSelectViewDTO + { + LocationCode = a.LocationCode, + MaterielCode = b.MaterielCode, + MaterielName = b.MaterielName, + PalletCode = a.PalletCode, + Unit = b.Unit, + CutedWidth = b.CutedWidth, + UseableQuantity = b.StockQuantity - b.OutboundQuantity + }, a => a.LocationCode.Contains("AGV_PP"), b => b.StockQuantity > b.OutboundQuantity && b.MaterielCode == materielCode, x => true).GroupBy(x => x.PalletCode).Select(x => new PPStockSelectViewDTO + { + LocationCode = x.FirstOrDefault()?.LocationCode ?? "", + MaterielCode = x.FirstOrDefault()?.MaterielCode ?? "", + MaterielName = x.FirstOrDefault()?.MaterielName ?? "", + Unit = x.FirstOrDefault()?.Unit ?? "", + CutedWidth = x.Sum(x => x.CutedWidth), + PalletCode = x.Key, + UseableQuantity = x.Sum(x => x.UseableQuantity) + }).ToList(); + } + catch (Exception ex) + { + return null; + } + } + + public WebResponseContent StockQueryData(SaveModel saveModel) { diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" index 6ca6a41..9fce273 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" @@ -28,6 +28,7 @@ using System.Reflection.Metadata; using WIDESEA_DTO.Task; using WIDESEA_DTO.Stock; +using SqlSugar; namespace WIDESEA_TaskInfoService { @@ -530,7 +531,14 @@ List<Dt_MesPPOutboundOrderDetail> mesPPOutboundOrderDetail = new List<Dt_MesPPOutboundOrderDetail>(); foreach (var item in model.Carriers) { - mesPPOutboundOrderDetail.Add(_mapper.Map<Dt_MesPPOutboundOrderDetail>(item)); + //mesPPOutboundOrderDetail.Add(_mapper.Map<Dt_MesPPOutboundOrderDetail>(item)); + Dt_MesPPOutboundOrderDetail dt_MesPPOutboundOrderDetail = new Dt_MesPPOutboundOrderDetail + { + CarrierCode = item.CarrierCode, + Warehouse = item.Warehouse, + OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt() + }; + mesPPOutboundOrderDetail.Add(dt_MesPPOutboundOrderDetail); } Dt_MesPPOutboundOrder mesOutboundOrder = new Dt_MesPPOutboundOrder() { @@ -542,8 +550,8 @@ Unit = model.Unit,//PP闇�瑕佽浆鎹㈡垚绫�(闇�姹傚钩鏂�(PNL鏁�*闈㈢Н)/瀹藉害) Width = model.Width, TargetAddressCode = model.TargetAddressCode, - OrderType = TaskTypeEnum.MesHandPickOutbound.ObjToInt(), OrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(), + OrderType = OutOrderTypeEnum.Issue.ObjToInt(), WarehouseId = warehouse.WarehouseId, Details = mesPPOutboundOrderDetail }; @@ -555,7 +563,7 @@ // List<Dt_OutStockLockInfo>? outStockLockInfos = null; // List<Dt_LocationInfo>? locationInfos = null; // { - (List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesOutboundOrder); + //(List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesOutboundOrder); // if (result.Item1 != null && result.Item1.Count > 0) // { // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); @@ -645,12 +653,14 @@ { CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), TaskNo = model.TaskNo, - OrderType = TaskTypeEnum.MesOutbound.ObjToInt(), + OrderType = OutOrderTypeEnum.Issue.ObjToInt(), OrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(), WarehouseId = warehouse.WarehouseId, Details = mesPPCutOutboundOrderDetail, }; + _unitOfWorkManage.BeginTran(); Db.InsertNav(mesPPOutboundOrder).Include(x => x.Details).ExecuteCommand(); + _unitOfWorkManage.CommitTran(); #region //List<Dt_Task> tasks = new List<Dt_Task>(); @@ -710,7 +720,7 @@ } catch (Exception ex) { - + _unitOfWorkManage.RollbackTran(); return MesResponseContent.Instance.Error(ex.Message); } } @@ -895,7 +905,7 @@ { content.Content = new { - MaterialCode= stock.MaterielCode, + MaterialCode = stock.MaterielCode, Quantity = stock.StockQuantity, Unit = stock.Unit, Warehouse = warehouse.WarehouseCode, @@ -980,8 +990,11 @@ return MesResponseContent.Instance.OK(); } + + + /// <summary> - /// 鐢熸垚鍑哄簱浠诲姟 + /// 鐢熸垚PP澶у嵎鍑哄簱浠诲姟 /// </summary> /// <param name="keys">鍑哄簱鍗曟槑缁嗕富閿�</param> /// <returns></returns> @@ -996,7 +1009,7 @@ List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); - (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = MESPPOutboundTaskDataHandle(keys); + (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, Dt_MesPPOutboundOrder mesPPOutboundOrder) result = MESPPOutboundTaskDataHandle(keys); if (result.Item2 != null && result.Item2.Count > 0) { stockInfos.AddRange(result.Item2); @@ -1017,13 +1030,131 @@ { tasks.AddRange(result.Item1); } + if (result.mesPPOutboundOrder != null) + { - WebResponseContent content = MESPPGenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos); + } + + WebResponseContent content = MESPPGenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, result.mesPPOutboundOrder); return content; } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + } + + /// <summary> + /// PP澶у嵎鍑哄簱浠诲姟鏁版嵁澶勭悊 + /// </summary> + /// <param name="orderDetailId"></param> + /// <param name="stockSelectViews"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, Dt_MesPPOutboundOrder mesPPOutboundOrder) MESPPOutboundTaskDataHandle(int[] keys) + { + List<Dt_Task> tasks = new List<Dt_Task>(); + List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).ToList(); + 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_StockInfo>? stockInfos = null; + List<Dt_MesPPOutboundOrderDetail>? orderDetails = null; + List<Dt_OutStockLockInfo>? outStockLockInfos = null; + List<Dt_LocationInfo>? locationInfos = null; + Dt_MesPPOutboundOrder? mesPPOutboundOrders = null; + if (outboundOrderDetails.FirstOrDefault().OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) + { + (List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>, Dt_MesPPOutboundOrder mesPPOutboundOrder) result = _outboundService.MesPPOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); + if (result.Item1 != null && result.Item1.Count > 0) + { + Dt_MesPPOutboundOrder outboundOrder = _outboundService.MesPPOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId); + TaskTypeEnum typeEnum = outboundOrder.OrderType switch + { + (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound, + (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate, + (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality, + _ => new TaskTypeEnum() + }; + tasks = GetTasks(result.Item1, typeEnum); + result.Item2.ForEach(x => + { + x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); + }); + result.Item3.ForEach(x => + { + x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(); + }); + + stockInfos = result.Item1; + orderDetails = result.Item2; + outStockLockInfos = result.Item3; + locationInfos = result.Item4; + mesPPOutboundOrders = result.mesPPOutboundOrder; + } + else + { + throw new Exception("鏃犲簱瀛�"); + } + } + //else + //{ + // List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetails.oi, OutLockStockStatusEnum.宸插垎閰�); + // if (stockLockInfos != null && stockLockInfos.Count > 0) + // { + // List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); + // tasks = GetTasks(stocks); + // } + //} + + return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos, mesPPOutboundOrders); + } + + /// <summary> + /// PP骞冲簱鐩存帴鍑哄簱 + /// </summary> + /// <param name="orderDetailId"></param> + /// <param name="stockSelectViews"></param> + /// <returns></returns> + public WebResponseContent PPGeneratePKOutboundTask(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews) + { + try + { + (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = PPOutboundTaskDataHandle(orderDetailId, stockSelectViews); + + WebResponseContent content = PPGenerateOutboundTaskDataUpdate(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5); + + return content; + } + catch (Exception ex) + { + return WebResponseContent.Instance.Error(ex.Message); + } + } + /// <summary> + /// PP绔嬪簱灏忓嵎鐩存帴鍑哄簱 + /// </summary> + /// <param name="orderDetailId"></param> + /// <param name="stockSelectViews"></param> + /// <returns></returns> + public WebResponseContent PPCutOutGenerateOutboundTasks(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews) + { + try + { + (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = PPOutboundTaskDataHandle(orderDetailId, stockSelectViews); + + WebResponseContent content = PPGenerateOutboundTaskDataUpdate(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5); + + return content; + } + catch (Exception ex) + { return WebResponseContent.Instance.Error(ex.Message); } } @@ -1035,85 +1166,68 @@ /// <param name="stockSelectViews"></param> /// <returns></returns> /// <exception cref="Exception"></exception> - public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) MESPPOutboundTaskDataHandle(int[] keys) + public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) PPOutboundTaskDataHandle(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews) { List<Dt_Task> tasks = new List<Dt_Task>(); - //List<Dt_MesPPOutboundOrderDetail> outboundOrderDetailss = _outboundService.MesPPOutboundOrderDetailService.Repository.QueryData(x => keys.Contains(x.Id)); + Dt_MesPPCutOutboundOrderDetail outboundOrderDetail = _outboundService.MesPPCutOutboundOrderDetailService.Repository.QueryFirst(x => x.Id == orderDetailId); - //List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).ToList(); - //List<Dt_MesPPOutboundOrder> mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => keys.Contains(10)).ToList(); - Dt_MesPPOutboundOrderDetail outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).First(); - Dt_MesPPOutboundOrder mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.Id == 10).First(); - //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("鎵�閫夊嚭搴撳崟鏄庣粏瀛樺湪鍑哄簱涓垨宸插畬鎴�"); - //} + if (outboundOrderDetail == null) + { + throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅"); + } + + if (stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrderDetail.OrderQuantity - outboundOrderDetail.LockQuantity) + { + throw new Exception("閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺"); + } List<Dt_StockInfo>? stockInfos = null; - List<Dt_MesPPOutboundOrderDetail>? orderDetails = null; + Dt_MesPPCutOutboundOrderDetail? orderDetail = null; List<Dt_OutStockLockInfo>? outStockLockInfos = null; List<Dt_LocationInfo>? locationInfos = null; - //if (outboundOrderDetails == OrderDetailStatusEnum.New.ObjToInt()) + if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) { - //(List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesPPOutboundOrder); - //(List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); - (List<Dt_StockInfo>, Dt_MesPPOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result1 = _outboundService.MesPPOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); - //if (result.Item1 != null && result.Item1.Count > 0) - //{ - // Dt_MesPPOutboundOrder outboundOrder = _outboundService.MesPPOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId); - // TaskTypeEnum typeEnum = outboundOrder.OrderType switch - // { - // (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound, - // (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate, - // (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality, - // _ => new TaskTypeEnum() - // }; - // tasks = GetTasks(result.Item1, typeEnum); - // result.Item2.ForEach(x => - // { - // x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); - // }); - // result.Item3.ForEach(x => - // { - // x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(); - // }); + (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPCutOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetail, stockSelectViews); + if (result.Item1 != null && result.Item1.Count > 0) + { + Dt_MesPPCutOutboundOrder outboundOrder = _outboundService.MesPPCutOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetail.OrderId); + TaskTypeEnum typeEnum = outboundOrder.OrderType switch + { + (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound, + (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate, + (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality, + _ => new TaskTypeEnum() + }; + tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound); + result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); + result.Item3.ForEach(x => + { + x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(); + }); - // stockInfos = result.Item1; - // orderDetails = result.Item2; - // outStockLockInfos = result.Item3; - // locationInfos = result.Item4; - //} - //else - //{ - // throw new Exception("鏃犲簱瀛�"); - //} + stockInfos = result.Item1; + orderDetail = result.Item2; + outStockLockInfos = result.Item3; + locationInfos = result.Item4; + } + else + { + throw new Exception("鏃犲簱瀛�"); + } } - //else - //{ - // List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.OrderId, OutLockStockStatusEnum.宸插垎閰�); - // if (stockLockInfos != null && stockLockInfos.Count > 0) - // { - // List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); - // tasks = GetTasks(stocks); - // } - //} + else + { + List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.OrderId, OutLockStockStatusEnum.宸插垎閰�); + if (stockLockInfos != null && stockLockInfos.Count > 0) + { + List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); + tasks = GetTasks(stocks, TaskTypeEnum.Outbound); + } + } - return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos); + return (tasks, stockInfos, orderDetail == null ? null : new List<Dt_MesPPCutOutboundOrderDetail> { orderDetail }, outStockLockInfos, locationInfos); } - /// <summary> - /// 鐢熸垚鍑哄簱浠诲姟鍚庢暟鎹洿鏂板埌鏁版嵁搴� - /// </summary> - /// <param name="tasks"></param> - /// <param name="stockInfos"></param> - /// <param name="outboundOrderDetails"></param> - /// <param name="outStockLockInfos"></param> - /// <param name="locationInfos"></param> - /// <returns></returns> - public WebResponseContent MESPPGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null) + public WebResponseContent PPGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPCutOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null) { try { @@ -1126,7 +1240,224 @@ { x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); }); - WebResponseContent content = _outboundService.MesPPOutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); + WebResponseContent content = _outboundService.MesPPCutOutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); + if (!content.Status) + { + _unitOfWorkManage.RollbackTran(); + return content; + } + } + else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0) + { + outboundOrderDetails.ForEach(x => + { + x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); + }); + + _outboundService.MesPPCutOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails); + } + _unitOfWorkManage.CommitTran(); + PushTasksToWCS(tasks); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + + } + #region + /// <summary> + /// 鐢熸垚PP灏忓嵎鍑哄簱浠诲姟 + /// </summary> + /// <param name="keys">鍑哄簱鍗曟槑缁嗕富閿�</param> + /// <returns></returns> + //public WebResponseContent PPCutOutGenerateOutboundTasks(int[] keys) + //{ + // try + // { + // List<Dt_Task> tasks = new List<Dt_Task>(); + // List<StockSelectViewDTO> stockSelectViews = new List<StockSelectViewDTO>(); + // List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>(); + // List<Dt_MesPPCutOutboundOrderDetail> outboundOrderDetails = new List<Dt_MesPPCutOutboundOrderDetail>(); + // List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); + // List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); + + // (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = PPCutOutboundTaskDataHandle(keys); + // if (result.Item2 != null && result.Item2.Count > 0) + // { + // stockInfos.AddRange(result.Item2); + // } + // if (result.Item3 != null && result.Item3.Count > 0) + // { + // outboundOrderDetails.AddRange(result.Item3); + // } + // if (result.Item4 != null && result.Item4.Count > 0) + // { + // outStockLockInfos.AddRange(result.Item4); + // } + // if (result.Item5 != null && result.Item5.Count > 0) + // { + // locationInfos.AddRange(result.Item5); + // } + // if (result.Item1 != null && result.Item1.Count > 0) + // { + // tasks.AddRange(result.Item1); + // } + + // WebResponseContent content = PPCutOutGenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos); + // return content; + // } + // catch (Exception ex) + // { + // _unitOfWorkManage.RollbackTran(); + // return WebResponseContent.Instance.Error(ex.Message); + // } + //} + + ///// <summary> + ///// PP灏忓嵎鍑哄簱浠诲姟鏁版嵁澶勭悊 + ///// </summary> + ///// <param name="orderDetailId"></param> + ///// <param name="stockSelectViews"></param> + ///// <returns></returns> + ///// <exception cref="Exception"></exception> + //public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) PPCutOutboundTaskDataHandle(int[] keys) + //{ + // List<Dt_Task> tasks = new List<Dt_Task>(); + // List<Dt_MesPPCutOutboundOrderDetail> outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).ToList(); + // 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_StockInfo>? stockInfos = null; + // List<Dt_MesPPCutOutboundOrderDetail>? orderDetails = null; + // List<Dt_OutStockLockInfo>? outStockLockInfos = null; + // List<Dt_LocationInfo>? locationInfos = null; + // if (outboundOrderDetails.FirstOrDefault().OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt()) + // { + // (List<Dt_StockInfo>, List<Dt_MesPPCutOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPCutOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); + // if (result.Item1 != null && result.Item1.Count > 0) + // { + // Dt_MesPPCutOutboundOrder outboundOrder = _outboundService.MesPPCutOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId); + // //TaskTypeEnum typeEnum = outboundOrder.OrderType switch + // //{ + // // (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound, + // // (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate, + // // (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality, + // // _ => new TaskTypeEnum() + // //}; + // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); + // result.Item2.ForEach(x => + // { + // x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); + // }); + // result.Item3.ForEach(x => + // { + // x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt(); + // }); + + // stockInfos = result.Item1; + // orderDetails = result.Item2; + // outStockLockInfos = result.Item3; + // locationInfos = result.Item4; + // } + // else + // { + // throw new Exception("鏃犲簱瀛�"); + // } + // } + // //else + // //{ + // // List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetails.OrderId, OutLockStockStatusEnum.宸插垎閰�); + // // if (stockLockInfos != null && stockLockInfos.Count > 0) + // // { + // // List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList()); + // // tasks = GetTasks(stocks); + // // } + // //} + + // return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos); + //} + + ///// <summary> + ///// 鐢熸垚PP灏忓嵎鍑哄簱浠诲姟鍚庢暟鎹洿鏂板埌鏁版嵁搴� + ///// </summary> + ///// <param name="tasks"></param> + ///// <param name="stockInfos"></param> + ///// <param name="outboundOrderDetails"></param> + ///// <param name="outStockLockInfos"></param> + ///// <param name="locationInfos"></param> + ///// <returns></returns> + //public WebResponseContent PPCutOutGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPCutOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null) + //{ + // try + // { + // _unitOfWorkManage.BeginTran(); + + // BaseDal.AddData(tasks); + // if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) + // { + // stockInfos.ForEach(x => + // { + // x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); + // }); + // WebResponseContent content = _outboundService.MesPPCutOutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); + + // if (!content.Status) + // { + // _unitOfWorkManage.RollbackTran(); + // return content; + // } + // } + // else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0) + // { + // outboundOrderDetails.ForEach(x => + // { + // x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); + // }); + + // _outboundService.MesPPCutOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails); + // } + // _unitOfWorkManage.CommitTran(); + // PushTasksToWCS(tasks,"AGV_PP"); + // return WebResponseContent.Instance.OK(); + // } + // catch (Exception ex) + // { + // _unitOfWorkManage.RollbackTran(); + // return WebResponseContent.Instance.Error(ex.Message); + // } + //} + #endregion + /// <summary> + /// 鐢熸垚PP澶у嵎鍑哄簱浠诲姟鍚庢暟鎹洿鏂板埌鏁版嵁搴� + /// </summary> + /// <param name="tasks"></param> + /// <param name="stockInfos"></param> + /// <param name="outboundOrderDetails"></param> + /// <param name="outStockLockInfos"></param> + /// <param name="locationInfos"></param> + /// <returns></returns> + public WebResponseContent MESPPGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null, Dt_MesPPOutboundOrder? mesPPOutboundOrder = null) + { + try + { + _unitOfWorkManage.BeginTran(); + + BaseDal.AddData(tasks); + if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) + { + stockInfos.ForEach(x => + { + x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); + }); + WebResponseContent content = _outboundService.MesPPOutboundOrderDetailService.LockOutboundStockDataUpdate(mesPPOutboundOrder, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); if (!content.Status) { @@ -1152,8 +1483,10 @@ _unitOfWorkManage.RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } - } + + + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" index b53fad2..0c76b61 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" @@ -189,7 +189,7 @@ { CurrentAddress = stationCode, Grade = 0, - NextAddress ="", + NextAddress = "", PalletCode = palletCode, Roadway = warehouse.Remark,//鏌ヨ瀵瑰簲绾胯竟浠撳湴鍧�宸烽亾鍙� SourceAddress = stationCode, @@ -201,7 +201,7 @@ }; _unitOfWorkManage.BeginTran(); BaseDal.AddData(newTask); - PushTasksToWCS(new List<Dt_Task> { newTask}); + PushTasksToWCS(new List<Dt_Task> { newTask }); _unitOfWorkManage.CommitTran(); return WebResponseContent.Instance.OK(); } @@ -431,7 +431,7 @@ List<Dt_OutStockLockInfo> outStockLockInfos = _outboundService.OutboundStockLockInfoService.Repository.QueryData(x => x.TaskNum == taskNum); List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>(); List<Dt_MesOutboundOrder> mesOutboundOrders = new List<Dt_MesOutboundOrder>(); - + List<Dt_MesPPOutboundOrder> mesPPOutboundOrders = new List<Dt_MesPPOutboundOrder>(); if ((outStockLockInfos == null || outStockLockInfos.Count == 0) && warehouse.WarehouseCode != WarehouseEnum.HA64.ToString() && (task.TaskType != TaskTypeEnum.OutEmpty.ObjToInt())) { return WebResponseContent.Instance.Error($"鏈壘鍒板嚭搴撹鎯呬俊鎭�"); @@ -451,6 +451,20 @@ mesOutboundOrder.OrderStatus = OrderDetailStatusEnum.Over.ObjToInt(); } mesOutboundOrders.Add(mesOutboundOrder); + } + } + //PP鍑哄簱浠诲姟瀹屾垚鍒ゆ柇銆傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�� + else if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() && warehouse.WarehouseCode == WarehouseEnum.HA58.ToString()) + { + Dt_MesPPOutboundOrder mesPPOutboundOrder = _outboundService.MesPPOutboundOrderService.Repository.QueryFirst(x => x.OrderNo == item.OrderNo); + if (mesPPOutboundOrder != null) + { + mesPPOutboundOrder.OverOutQuantity = item.AssignQuantity; + if (mesPPOutboundOrder.OverOutQuantity == mesPPOutboundOrder.OrderQuantity) + { + mesPPOutboundOrder.OrderStatus = OrderDetailStatusEnum.Over.ObjToInt(); + } + mesPPOutboundOrders.Add(mesPPOutboundOrder); } } else @@ -506,6 +520,15 @@ _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, (LocationStatusEnum)beforeStatus, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum); _unitOfWorkManage.CommitTran(); + //PP鍑哄簱浠诲姟瀹屾垚鍒ゆ柇銆傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�� + if (warehouse.WarehouseCode == WarehouseEnum.HA58.ToString() && task.TaskType == TaskTypeEnum.Outbound.ObjToInt()) + { + _outboundService.MesPPOutboundOrderService.Repository.UpdateData(mesPPOutboundOrders); + MesMaterialLotaAceptModel model = GetMesMaterialLotaAceptModel(stockInfo, stockInfo.Details.FirstOrDefault(), mesPPOutboundOrders.FirstOrDefault().TaskNo, warehouse.WarehouseCode, stockInfo.Details.Where(x => x.MaterielCode == mesPPOutboundOrders.FirstOrDefault().MaterialCode).Sum(x => x.StockQuantity)); + UploadMesMaterialLotaAcept(model); + _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); + _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(stockInfo.Details, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); + } if (warehouse.WarehouseCode != WarehouseEnum.HA64.ToString() && task.TaskType == TaskTypeEnum.Outbound.ObjToInt()) { _outboundService.OutboundOrderService.TestOutUpload(outboundOrderDetails.FirstOrDefault().OrderId, outStockLockInfos); diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs" index 7082f41..18d085b 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MES/MesController.cs" @@ -12,6 +12,8 @@ using WIDESEA_DTO.ERP; using WIDESEA_DTO.MES; using WIDESEA_Core.Helper; +using Autofac.Core; +using WIDESEA_DTO.Stock; namespace WIDESEA_WMSServer.Controllers.MES { @@ -169,5 +171,51 @@ { return _taskService.BagInfoSync(model.Content); } + /// <summary> + /// 鐢熸垚MESPP浠撳ぇ鍗峰嚭搴撲换鍔� + /// </summary> + /// <param name="keys"></param> + /// <returns></returns> + [HttpPost, HttpGet, Route("MESPPGenerateOutboundTasks"), AllowAnonymous] + public WebResponseContent MESPPGenerateOutboundTasks([FromBody] int[] keys) + { + return _taskService.MESPPGenerateOutboundTasks(keys); + } + + /// <summary> + /// 鐢熸垚MESPP浠撳皬鍗峰嚭搴撲换鍔� + /// </summary> + /// <param name="keys"></param> + /// <returns></returns> + //[HttpPost, HttpGet, Route("PPCutOutGenerateOutboundTasks"), AllowAnonymous] + //public WebResponseContent PPCutOutGenerateOutboundTasks([FromBody] int[] keys) + //{ + // return _taskService.PPCutOutGenerateOutboundTasks(keys); + //} + + /// <summary> + /// 鐢熸垚鍑哄簱浠诲姟 + /// </summary> + /// <param name="orderDetailId"></param> + /// <param name="stockSelectViews"></param> + /// <returns></returns> + [HttpPost, HttpGet, Route("PPCutOutGenerateOutboundTasks"), AllowAnonymous] + public WebResponseContent PPCutOutGenerateOutboundTasks(int orderDetailId, [FromBody] List<PPStockSelectViewDTO> stockSelectViews) + { + return _taskService.PPCutOutGenerateOutboundTasks(orderDetailId, stockSelectViews); + } + + /// <summary> + /// PP骞冲簱鐩存帴鍑哄簱 + /// </summary> + /// <param name="orderDetailId"></param> + /// <param name="stockSelectViews"></param> + /// <returns></returns> + [HttpPost, HttpGet, Route("PPGeneratePKOutboundTask"), AllowAnonymous] + public WebResponseContent PPGeneratePKOutboundTask(int orderDetailId, [FromBody] List<PPStockSelectViewDTO> stockSelectViews) + { + return _taskService.PPGeneratePKOutboundTask(orderDetailId, stockSelectViews); + } + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/MesPPOutboundOrderDetailController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/MesPPOutboundOrderDetailController.cs" index 16d16df..b603c4e 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/MesPPOutboundOrderDetailController.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Outbound/MesPPOutboundOrderDetailController.cs" @@ -1,12 +1,19 @@ -锘縰sing Microsoft.AspNetCore.Mvc; +锘縰sing Autofac.Core; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using WIDESEA_Core; using WIDESEA_Core.BaseController; +using WIDESEA_DTO.Inbound; +using WIDESEA_DTO.MES; +using WIDESEA_DTO.Outbound; using WIDESEA_IOutboundService; using WIDESEA_Model.Models; namespace WIDESEA_WMSServer.Controllers.Outbound { /// <summary> - /// MES鍑哄簱鍗� + /// PP浠撳ぇ鍗稭ES鍑哄簱鍗� /// </summary> [Route("api/mesPPOutboundOrderDetail")] [ApiController] diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs" index a06defd..d4db578 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs" @@ -47,6 +47,29 @@ } /// <summary> + /// 鏌ヨPP绔嬪簱搴撳瓨瑙嗗浘 + /// </summary> + /// <param name="orderId"></param> + /// <param name="materlCode"></param> + /// <returns></returns> + [HttpPost, HttpGet, Route("PPGetStockSelectViews")] + public List<PPStockSelectViewDTO> PPGetStockSelectViews(int orderId, string materielCode) + { + return Service.PPGetStockSelectViews(orderId, materielCode); + } + + /// <summary> + /// 鏌ヨ璁㈠崟PP骞冲簱搴撳瓨瑙嗗浘 + /// </summary> + /// <param name="orderId"></param> + /// <param name="materielCode"></param> + /// <returns></returns> + [HttpPost, HttpGet, Route("PPGetPKStockSelectViews")] + public List<PPStockSelectViewDTO> PPGetPKStockSelectViews(int orderId, string materielCode) + { + return Service.PPGetPKStockSelectViews(orderId, materielCode); + } + /// <summary> /// 鏍规嵁鎵樼洏鍜屽簱鍖烘煡璇㈠簱瀛樹俊鎭� /// </summary> /// <param name="saveModel"></param> diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" index 8116ffe..f814880 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" @@ -176,16 +176,16 @@ { return Service.GenerateOutboundTasks(keys); } - /// <summary> - /// 鐢熸垚MESPP浠撳ぇ鍗峰嚭搴撲换鍔� - /// </summary> - /// <param name="keys"></param> - /// <returns></returns> - [HttpPost, HttpGet, Route("MESPPGenerateOutboundTasks"), AllowAnonymous] - public WebResponseContent MESPPGenerateOutboundTasks([FromBody] int[] keys) - { - return Service.MESPPGenerateOutboundTasks(keys); - } + ///// <summary> + ///// 鐢熸垚MESPP浠撳ぇ鍗峰嚭搴撲换鍔� + ///// </summary> + ///// <param name="keys"></param> + ///// <returns></returns> + //[HttpPost, HttpGet, Route("MESPPGenerateOutboundTasks"), AllowAnonymous] + //public WebResponseContent MESPPGenerateOutboundTasks([FromBody] int[] keys) + //{ + // return Service.MESPPGenerateOutboundTasks(keys); + //} /// <summary> /// 鍑哄簱浠诲姟瀹屾垚 /// </summary> diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\345\271\262\350\206\234\344\273\223\345\240\206\345\236\233\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\345\271\262\350\206\234\344\273\223\345\240\206\345\236\233\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx" index 20cf897..7cb5643 100644 --- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\345\271\262\350\206\234\344\273\223\345\240\206\345\236\233\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx" +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\350\256\276\345\244\207\345\215\217\350\256\256/\345\271\262\350\206\234\344\273\223\345\240\206\345\236\233\346\234\272\351\200\232\344\277\241\345\215\217\350\256\256.xlsx" Binary files differ -- Gitblit v1.9.3