ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj
@@ -7,7 +7,7 @@ </PropertyGroup> <ItemGroup> <PackageReference Include="WIDESEAWCS_QuartzJob" Version="3.0.5" /> <PackageReference Include="WIDESEAWCS_QuartzJob" Version="3.0.9" /> </ItemGroup> <ItemGroup> ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -67,10 +67,11 @@ WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string materielBoxCode = ""); /// <summary> /// åWMSç³è¯·ä»»å¡ /// 请æ±å ¥åºä»»å¡ /// </summary> /// <param name="palletCode">æçå·</param> /// <param name="sourceAddress">èµ·å§å°å</param> /// /// <param name="roadWay">å··é</param> /// <returns></returns> WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, string roadWay="", int taskType = 630); ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj
@@ -8,7 +8,7 @@ <ItemGroup> <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" /> <PackageReference Include="WIDESEAWCS_Core" Version="1.0.13" /> <PackageReference Include="WIDESEAWCS_Core" Version="1.0.26" /> </ItemGroup> <ItemGroup> ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs
@@ -12,6 +12,7 @@ using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_Tasks; using static Dm.net.buffer.ByteArrayBuffer; namespace WIDESEAWCS_Server.Controllers { ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
@@ -108,8 +108,12 @@ return Service.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); } /// <summary> /// æµè¯å åæºå ¥åº /// 请æ±å ¥åºä»»å¡ /// </summary> /// <param name="palletCode">æçå·</param> /// <param name="sourceAddress">èµ·å§å°å</param> /// <param name="roadWay">å··é</param> /// <returns></returns> [HttpPost, HttpGet, Route("SCIN"), AllowAnonymous] public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, string roadWay, int taskType = 0) { ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json
@@ -10,6 +10,7 @@ "AllowedHosts": "*", "ConnectionStringsEncryption": false, "MainDB": "DB_WIDESEA", //å½å项ç®ç主åºï¼æå¯¹åºçè¿æ¥å符串çEnabledå¿ é¡»ä¸ºtrue "DBType": "SqlServer", //è¿æ¥å符串 //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -324,11 +324,12 @@ return content; } /// <summary> /// // <summary> /// 请æ±å ¥åºä»»å¡ /// </summary> /// <param name="palletCode"></param> /// <param name="sourceAddress"></param> /// <param name="palletCode">æçå·</param> /// <param name="sourceAddress">èµ·å§å°å</param> /// /// <param name="roadWay">å··é</param> /// <returns></returns> public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, string roadWay="", int taskType=630) { ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs
@@ -76,6 +76,49 @@ [DataLength(10)] public string PalletCode { get; set; } } public class R_CLineCPHInfo : DeviceCommand { /// <summary> /// å·¥ä½å· /// </summary> public short R_ReadID { get; set; } /// <summary> /// å·¥ä½ç¶æ /// 0:è±æº<br/> /// 1:æå¨<br/> /// 2:èªå¨<br/> /// 3:èªå¨è¿è¡<br/> /// 4:æ é<br/> /// </summary> public short R_State { get; set; } /// <summary> /// ä»»å¡å· /// </summary> public int R_TaskNo { get; set; } /// <summary> /// ç®çå°å /// </summary> public short R_TargetAddress { get; set; } /// <summary> /// 请æ±ä¿¡å· /// 0:æ <br/> /// 1:ä»»å¡è¯·æ±<br/> /// 2:请æ±ç»æ<br/> /// 3:任塿¸ é¤<br/> /// 4:æ¸ é¤ç»æ<br/> /// </summary> public short R_Request { get; set; } private string _barcode; /// <summary> /// ç®±ç /// </summary> [DataLength(30)] public string R_BoxCode { get { return _barcode; } set { _barcode = value.Replace("\0", "").Replace("\\0", ""); } } } public class R_RGVCPInfo : DeviceCommand { /// <summary> ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_CLineCPHDBName.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_Tasks.ConveyorLineJob { /// <summary> /// æåç¯çº¿è¯»åå½ä»¤ /// </summary> public enum R_CLineCPHDB { /// <summary> /// å·¥ä½å· /// </summary> R_ReadID, /// <summary> /// å·¥ä½ç¶æ /// 0:è±æº<br/> /// 1:æå¨<br/> /// 2:èªå¨<br/> /// 3:èªå¨è¿è¡<br/> /// 4:æ é<br/> /// </summary> R_State, /// <summary> /// ä»»å¡å· /// </summary> R_TaskNo, /// <summary> /// ç®çå°å /// </summary> R_TargetAddress, /// <summary> /// 请æ±ä¿¡å· /// 0:æ <br/> /// 1:ä»»å¡è¯·æ±<br/> /// 2:请æ±ç»æ<br/> /// 3:任塿¸ é¤<br/> /// 4:æ¸ é¤ç»æ<br/> /// </summary> R_Request, /// <summary> /// ç®±ç /// </summary> R_BoxCode } } ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_CLineCPHDBName.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEAWCS_Tasks.ConveyorLineJob { /// <summary> /// ç¯çº¿åå ¥å½ä»¤ /// </summary> public enum W_CLineCPHDB { /// <summary> /// ä»»å¡å· /// </summary> W_TaskNo, /// <summary> /// æ ¼å£å· /// </summary> W_Channel, /// <summary> /// 请æ±ç¡®è®¤<br/> /// 1:ä»»å¡ä¸å<br/> /// 2:æ¸ é¤ç¡®è®¤<br/> /// </summary> W_Request } } ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj
@@ -13,7 +13,8 @@ </ItemGroup> <ItemGroup> <PackageReference Include="WIDESEAWCS_QuartzJob" Version="3.0.5" /> <PackageReference Include="WIDESEAWCS_Communicator" Version="2.2.13" /> <PackageReference Include="WIDESEAWCS_QuartzJob" Version="3.0.9" /> </ItemGroup> <ItemGroup> ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPH.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,118 @@ using Microsoft.AspNetCore.Components.Routing; using Newtonsoft.Json; using Quartz; using SqlSugar.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Communicator; using WIDESEAWCS_Core; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Repository; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_Tasks.ConveyorLineJob; using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] public class ConveyorLineJob_CPH : JobBase, IJob { private readonly ICacheService _cacheService; private readonly ITaskService _taskService; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly ITaskRepository _taskRepository; private readonly IStationMangerRepository _stationMangerRepository; private readonly IRouterRepository _routerRepository; private readonly IRouterService _routerService; private readonly IRouterExtension _routerExtension; private readonly List<Dt_WarehouseDevice> warehouseDevices; public ConveyorLineJob_CPH(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension) { _cacheService = cacheService; _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; _taskRepository = taskRepository; _stationMangerRepository = stationMangerRepository; _routerRepository = routerRepository; _routerService = routerService; _routerExtension = routerExtension; string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice)); if (!string.IsNullOrEmpty(warehouseDevicesStr)) { warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>(); } else { warehouseDevices = new List<Dt_WarehouseDevice>(); } } public Task Execute(IJobExecutionContext context) { bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); if (flag && value != null) { //è·åå½åè®¾å¤ OtherDevice device = (OtherDevice)value; List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList(); List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) { DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && deviceProRead != null && deviceProWrite != null) { R_CLineCPHInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHInfo>(deviceProRead.DeviceProAddress); //ç åç¯çº¿è¯·æ±ä»»å¡ if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.R_BoxCode) && conveyorLineInfoRead.R_Request==1) { WebResponseContent content = _taskService.RequestWMSTaskSimple(conveyorLineInfoRead.R_BoxCode, item.StationCode); //åWMS请æ±ä»»å¡ if (true) { } } } else if(item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() && deviceProRead != null) { R_CLineCPHInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHInfo>(deviceProRead.DeviceProAddress); //è·åç åå£ä»»å¡æ´æ°ä»»å¡ç¶æ if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo > 0) { } } else if (item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && deviceProRead != null) { R_CLineCPHInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHInfo>(deviceProRead.DeviceProAddress); //ç åç¯çº¿æåºå£è¯·æ±åæ¶ä»»å¡ if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo > 0 && conveyorLineInfoRead.R_Request == 2) { } } else { WriteError(item.StationName, $"æªæ¾å°è®¾å¤åç¼å·{item.StationCode}çå议信æ¯"); } } } return Task.CompletedTask; } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_DTO/Stock/PPStockSelectViewDTO.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_External/AGVService/InvokeAGVService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_External/IAGVService/IInvokeAGVService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_External/Model/AgvSecureApplyModel.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_External/Model/AgvSecureReplyModel.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_External/Model/AgvTaskModel.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_External/Model/AgvUpdateModel.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IInboundRepository/IMesPPBackInboundOrderDetailRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IInboundRepository/IMesPPBackInboundOrderRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IInboundService/IMesPPBackInboundOrderDetailService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IInboundService/IMesPPBackInboundOrderService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundRepository/IMesPPCutOutboundOrderDetailRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundRepository/IMesPPCutOutboundOrderRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundRepository/IMesPPOutboundOrderDetailRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundRepository/IMesPPOutboundOrderRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundRepository/IOutboundRepository.cs
@@ -14,8 +14,6 @@ IOutboundOrderRepository OutboundOrderRepository { get; } IOutStockLockInfoRepository OutboundStockLockInfoRepository { get; } IMesPPCutOutboundOrderRepository MesPPCutOutboundOrderRepository { get; } IProOutOrderRepository ProOutOrderRepository { get; } IProOutOrderDetailRepository ProOutOrderDetailRepository { get; } IMesRworkOutboundOrderRepository RworkOutboundOrderRepository { get; } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundService/IMesPPCutOutboundOrderDetailService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundService/IMesPPCutOutboundOrderService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundService/IMesPPOutboundOrderDetailService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundService/IMesPPOutboundOrderService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundService/IOutStockLockInfoService.cs
@@ -51,26 +51,6 @@ Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesOutboundOrder mesOutboundOrder, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null); /// <summary> /// PPå°å·åºåº /// </summary> /// <param name="mesOutboundOrder"></param> /// <param name="outStock"></param> /// <param name="assignQuantity"></param> /// <param name="taskNum"></param> /// <returns></returns> List<Dt_OutStockLockInfo> GetOutStockLockInfos(Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder,Dt_MesPPCutOutboundOrderDetail mesPPCutOutboundOrderDetail, List<Dt_StockInfo> outStock, int? taskNum = null); /// <summary> /// /// </summary> /// <param name="mesOutboundOrder"></param> /// <param name="outStock"></param> /// <param name="assignQuantity"></param> /// <param name="taskNum"></param> /// <returns></returns> Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesPPOutboundOrder mesPPOutboundOrder, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null); /// <summary> /// /// </summary> /// <param name="orderDetailId"></param> ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IOutboundService/IOutboundService.cs
@@ -16,14 +16,6 @@ IOutboundOrderService OutboundOrderService { get; } IOutStockLockInfoService OutboundStockLockInfoService { get; } IMesPPOutboundOrderService MesPPOutboundOrderService { get; } IMesPPOutboundOrderDetailService MesPPOutboundOrderDetailService { get; } IMesPPCutOutboundOrderService MesPPCutOutboundOrderService { get; } IMesPPCutOutboundOrderDetailService MesPPCutOutboundOrderDetailService { get; } IProOutOrderService ProOutOrderService { get; } IProOutOrderDetailService ProOutOrderDetailService { get; } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IStockRepository/ISolderMaskStockRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IStockRepository/ISolderMaskStock_HtyRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IStockService/ISolderMaskStockService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IStockService/ISolderMaskStock_HtyService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_IStockService/IStockInfoService.cs
@@ -26,8 +26,5 @@ 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); } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -226,33 +226,6 @@ MesResponseContent SubstrateBack(SubstrateBackModel model); /// <summary> /// PP大å·åºåº-è¿è¡åå· /// </summary> /// <param name="model"></param> /// <returns></returns> MesResponseContent PPSubsectionOut(PPSubsectionOutModel model); /// <summary> /// PPå°å·åºåº /// </summary> /// <param name="model"></param> /// <returns></returns> MesResponseContent PPCutOut(PPCutOutModle model); /// <summary> /// PPå ¥åº(大å·ãå°å·ãå¼ æ) /// </summary> /// <param name="model"></param> /// <returns></returns> MesResponseContent PPBack(PPBackModel model); /// <summary> /// PPåºåæ¥è¯¢ /// </summary> /// <param name="model"></param> /// <returns></returns> MesResponseContent QueryPpByWidth(QueryPpByWidthModel model); /// <summary> /// æåè¿å·¥æåº /// </summary> /// <param name="model"></param> @@ -331,23 +304,6 @@ /// </summary> /// <returns></returns> WebResponseContent ShipmentOrderSync(MesShipmentOrderSync model); /// <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); /// <summary> /// çææååºåºä»»å¡ /// </summary> ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_InboundRepository/MesPPBackInboundOrderDetailRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_InboundRepository/MesPPBackInboundOrderRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_InboundService/MesPPBackInboundOrderDetailService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_InboundService/MesPPBackInboundOrderService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_MesPPBackInboundOrder.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Inbound/Dt_MesPPBackInboundOrderDetail.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_MesPPCutOutboundOrder.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_MesPPCutOutboundOrderDetail.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_MesPPOutboundOrder.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_MesPPOutboundOrderDetail.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_ProSpecifyVerOrder.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Stock/Dt_SolderMaskStock.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/Stock/Dt_SolderMaskStock_Hty.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundRepository/MesPPCutOutboundOrderDetailRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundRepository/MesPPCutOutboundOrderRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundRepository/MesPPOutboundOrderDetailRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundRepository/MesPPOutboundOrderRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundRepository/OutboundRepository.cs
@@ -15,17 +15,15 @@ public IOutStockLockInfoRepository OutboundStockLockInfoRepository { get; } public IMesPPCutOutboundOrderRepository MesPPCutOutboundOrderRepository { get; } public IProOutOrderRepository ProOutOrderRepository { get; } public IProOutOrderDetailRepository ProOutOrderDetailRepository { get; } public IMesRworkOutboundOrderRepository RworkOutboundOrderRepository { get; } public OutboundRepository(IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IOutStockLockInfoRepository outboundStockLockInfoRepository,IMesPPCutOutboundOrderRepository mesPPCutOutboundOrderRepository, IProOutOrderRepository proOutOrderRepository, IProOutOrderDetailRepository proOutOrderDetailRepository, IMesRworkOutboundOrderRepository rworkOutboundOrderRepository) public OutboundRepository(IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IOutStockLockInfoRepository outboundStockLockInfoRepository, IProOutOrderRepository proOutOrderRepository, IProOutOrderDetailRepository proOutOrderDetailRepository, IMesRworkOutboundOrderRepository rworkOutboundOrderRepository) { OutboundOrderDetailRepository = outboundOrderDetailRepository; OutboundOrderRepository = outboundOrderRepository; OutboundStockLockInfoRepository = outboundStockLockInfoRepository; MesPPCutOutboundOrderRepository = mesPPCutOutboundOrderRepository; ProOutOrderRepository = proOutOrderRepository; ProOutOrderDetailRepository = proOutOrderDetailRepository; RworkOutboundOrderRepository = rworkOutboundOrderRepository; ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/MesPPCutOutboundOrderDetailService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/MesPPCutOutboundOrderService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/MesPPOutboundOrderDetailService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/MesPPOutboundOrderService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/OutStockLockInfoService.cs
@@ -124,73 +124,6 @@ return outStockLockInfo; } /// <summary> /// PPå°å·åºåº /// </summary> /// <param name="mesPPCutOutboundOrderDetail"></param> /// <param name="outStock"></param> /// <param name="assignQuantity"></param> /// <param name="taskNum"></param> /// <returns></returns> 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>(); foreach (var item in outStock) { 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, ProductionDate = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).FirstOrDefault()?.ProductionDate, EffectiveDate = item.Details.Where(x => x.MaterielCode == mesPPCutOutboundOrderDetail.MaterielCode).FirstOrDefault()?.EffectiveDate }; outStockLockInfos.Add(outStockLockInfo); } return outStockLockInfos; } public Dt_OutStockLockInfo GetOutStockLockInfo(Dt_MesPPOutboundOrder mesPPOutboundOrder, Dt_StockInfo outStock, float assignQuantity, int? taskNum = null) { Dt_OutStockLockInfo outStockLockInfo = new Dt_OutStockLockInfo() { PalletCode = outStock.PalletCode, AssignQuantity = assignQuantity, MaterielCode = mesPPOutboundOrder.MaterialCode, BatchNo = outStock.Details.FirstOrDefault()?.BatchNo ?? "", LocationCode = outStock.LocationCode, MaterielName = mesPPOutboundOrder.MaterialName, OrderDetailId = mesPPOutboundOrder.Id, OrderNo = mesPPOutboundOrder.OrderNo, OrderType = mesPPOutboundOrder.OrderType, OriginalQuantity = outStock.Details.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).Sum(x => x.StockQuantity), Status = taskNum == null ? OutLockStockStatusEnum.å·²åé .ObjToInt() : OutLockStockStatusEnum.åºåºä¸.ObjToInt(), StockId = outStock.Id, TaskNum = taskNum, OrderQuantity = mesPPOutboundOrder.OrderQuantity, Unit = mesPPOutboundOrder.Unit, ProductionDate = outStock.Details.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).FirstOrDefault()?.ProductionDate, EffectiveDate = outStock.Details.Where(x => x.MaterielCode == mesPPOutboundOrder.MaterialCode).FirstOrDefault()?.EffectiveDate }; return outStockLockInfo; } public List<Dt_OutStockLockInfo> OutStockLockInfos(string OrderNo) { return BaseDal.QueryData(x => x.OrderNo == OrderNo); ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/OutboundService.cs
@@ -16,14 +16,6 @@ public IOutboundOrderService OutboundOrderService { get; } public IOutStockLockInfoService OutboundStockLockInfoService { get; } public IMesPPOutboundOrderService MesPPOutboundOrderService { get; } public IMesPPOutboundOrderDetailService MesPPOutboundOrderDetailService { get; } public IMesPPCutOutboundOrderService MesPPCutOutboundOrderService { get; } public IMesPPCutOutboundOrderDetailService MesPPCutOutboundOrderDetailService { get; } public IProOutOrderService ProOutOrderService { get; } public IProOutOrderDetailService ProOutOrderDetailService { get; } @@ -31,16 +23,12 @@ public IErpProTransferOrderService ErpProTransferOrderService { get; } public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IMesRworkOutboundOrderService rworkOutboundOrderService,IMesPPOutboundOrderDetailService mesPPOutboundOrderDetailService, IMesPPCutOutboundOrderDetailService mesPPCutOutboundOrderDetailService, IMesPPCutOutboundOrderService mesPPCutOutboundOrderService, IMesPPOutboundOrderService mesPPOutboundOrderService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService, IMesOutboundOrderService mesOutboundOrderService,IProOutOrderService proOutOrderService, IProOutOrderDetailService proOutOrderDetailService,IErpProTransferOrderService erpProTransferOrderService) public OutboundService(IOutboundOrderDetailService outboundOrderDetailService, IMesRworkOutboundOrderService rworkOutboundOrderService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService, IMesOutboundOrderService mesOutboundOrderService,IProOutOrderService proOutOrderService, IProOutOrderDetailService proOutOrderDetailService,IErpProTransferOrderService erpProTransferOrderService) { OutboundOrderDetailService = outboundOrderDetailService; OutboundOrderService = outboundOrderService; OutboundStockLockInfoService = outboundStockLockInfoService; MesOutboundOrderService = mesOutboundOrderService; MesPPOutboundOrderService = mesPPOutboundOrderService; MesPPCutOutboundOrderService = mesPPCutOutboundOrderService; MesPPCutOutboundOrderDetailService = mesPPCutOutboundOrderDetailService; MesPPOutboundOrderDetailService = mesPPOutboundOrderDetailService; ProOutOrderService = proOutOrderService; ProOutOrderDetailService = proOutOrderDetailService; RworkOutboundOrderService = rworkOutboundOrderService; ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_StockRepository/SolderMaskStockRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_StockRepository/SolderMaskStock_HtyRepository.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_StockService/SolderMaskStockService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_StockService/SolderMaskStock_HtyService.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs
@@ -115,90 +115,6 @@ 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; } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs
@@ -508,922 +508,5 @@ return MesResponseContent.Instance.Error(ex.Message); } } /// <summary> /// PP大å·åºåº-è¿è¡åå· /// </summary> /// <param name="model"></param> /// <returns></returns> public MesResponseContent PPSubsectionOut(PPSubsectionOutModel model) { MesResponseContent modelCount = new MesResponseContent(); try { Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString()); if (warehouse == null) { return MesResponseContent.Instance.Error("ä»åºä¿¡æ¯æªé ç½®"); } Dt_MesPPOutboundOrder mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.TaskNo == model.TaskNo).Includes(x => x.Details).First(); if (mesPPOutboundOrder != null) { return MesResponseContent.Instance.Error("å·²å卿¤ä»»å¡åå·"); } List<Dt_MesPPOutboundOrderDetail> mesPPOutboundOrderDetail = new List<Dt_MesPPOutboundOrderDetail>(); foreach (var item in model.Carriers) { //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() { CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), MaterialCode = model.MaterialCode, MaterialName = model.MaterialName, OrderQuantity = model.RequiredQuantity, TaskNo = model.TaskNo, Unit = model.Unit,//PPéè¦è½¬æ¢æç±³(鿱平æ¹(PNLæ°*é¢ç§¯)/宽度) Width = model.Width, TargetAddressCode = model.TargetAddressCode, OrderStatus = OutOrderStatusEnum.æªå¼å§.ObjToInt(), OrderType = OutOrderTypeEnum.Issue.ObjToInt(), WarehouseId = warehouse.WarehouseId, Details = mesPPOutboundOrderDetail }; #region //Db.InsertNav(mesOutboundOrder).Include(x=>x.Details).ExecuteCommand(); // List<Dt_Task> tasks = new List<Dt_Task>(); // List<Dt_StockInfo>? stockInfos = null; // 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); // if (result.Item1 != null && result.Item1.Count > 0) // { // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); // result.Item2.OrderStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // result.Item3.ForEach(x => // { // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); // }); // stockInfos = result.Item1; // mesOutboundOrder = result.Item2; // outStockLockInfos = result.Item3; // locationInfos = result.Item4; // mesPPOutboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // } // else // { // throw new Exception("æ åºå"); // } // } // tasks.ForEach(x => // { // x.TargetAddress = model.TargetAddressCode; // }); // _unitOfWorkManage.BeginTran(); // int id = BaseDal.AddData(tasks); // outStockLockInfos.ForEach(x => // { // x.OrderNo = mesOutboundOrder.TaskNo; // x.OrderDetailId = id; // }); // //_outboundService.MesPPOutboundOrderService.Repository.AddData(mesOutboundOrder); // Db.InsertNav(mesOutboundOrder).Include(x => x.Details).ExecuteCommand(); // if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) // { // WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks); // if (!content.Status) // { // _unitOfWorkManage.RollbackTran(); // return MesResponseContent.Instance.Error(content.Message); // } // } // _unitOfWorkManage.CommitTran(); // PushTasksToWCS(tasks); //} #endregion _unitOfWorkManage.BeginTran(); Db.InsertNav(mesOutboundOrder).Include(x => x.Details).ExecuteCommand(); _unitOfWorkManage.CommitTran(); return MesResponseContent.Instance.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return MesResponseContent.Instance.Error(ex.Message); } } /// <summary> /// PPå°å·åºåº /// </summary> /// <param name="model"></param> /// <returns></returns> public MesResponseContent PPCutOut(PPCutOutModle model) { try { Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString()); if (warehouse == null) { return MesResponseContent.Instance.Error("ä»åºåºç¡ä¿¡æ¯æªé ç½®"); } Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x => x.TaskNo == model.TaskNo).Includes(x => x.Details).First(); if (mesPPCutOutboundOrder != null) { return MesResponseContent.Instance.Error("å·²å卿¤ä»»å¡åå·"); } List<Dt_MesPPCutOutboundOrderDetail> mesPPCutOutboundOrderDetail = new List<Dt_MesPPCutOutboundOrderDetail>(); foreach (var item in model.MaterialDetails) { mesPPCutOutboundOrderDetail.Add(_mapper.Map<Dt_MesPPCutOutboundOrderDetail>(item)); } Dt_MesPPCutOutboundOrder mesPPOutboundOrder = new Dt_MesPPCutOutboundOrder() { CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), TaskNo = model.TaskNo, 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>(); //List<Dt_StockInfo>? stockInfos = null; //List<Dt_OutStockLockInfo>? outStockLockInfos = null; //List<Dt_LocationInfo>? locationInfos = null; //{ //(List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesPPOutboundOrder, mesPPCutOutboundOrderDetail); // if (result.Item1 != null && result.Item1.Count > 0) // { // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound); // result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); // result.Item3.ForEach(x => // { // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); // }); // stockInfos = result.Item1; // mesPPCutOutboundOrderDetail = result.Item2; // outStockLockInfos = result.Item3; // locationInfos = result.Item4; // } // else // { // throw new Exception("æ åºå"); // } //} //tasks.ForEach(x => //{ // x.TargetAddress = mesPPCutOutboundOrderDetail.TargetAddressCode; //}); //_unitOfWorkManage.BeginTran(); //int id = BaseDal.AddData(tasks); //outStockLockInfos.ForEach(x => //{ // x.OrderNo = mesPPOutboundOrder.TaskNo; // x.OrderDetailId = id; //}); ////_outboundService.MesPPOutboundOrderService.Repository.AddData(mesOutboundOrder); //Db.InsertNav(mesPPOutboundOrder).Include(x => x.Details).ExecuteCommand(); //if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0) //{ // WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks); // if (!content.Status) // { // _unitOfWorkManage.RollbackTran(); // return MesResponseContent.Instance.Error(content.Message); // } //} //_unitOfWorkManage.CommitTran(); //PushTasksToWCS(tasks, "AGV_PP"); #endregion return MesResponseContent.Instance.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return MesResponseContent.Instance.Error(ex.Message); } } /// <summary> /// PPå ¥åº(大å·ãå°å·ãå¼ æ) /// </summary> /// <param name="model"></param> /// <returns></returns> public MesResponseContent PPBack(PPBackModel model) { try { //䏿¬¡åªåä¸å·ç©æå ¥åºæç» foreach (var item in model.MaterialLotInfo) { //è·åç©æä¿¡æ¯ Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterialCode); if (materielInfo == null) { return MesResponseContent.Instance.Error($"ç©æ{item.MaterialCode}ä¸åå¨!"); } Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString()); if (warehouse == null) { return MesResponseContent.Instance.Error($"æªæ¾å°ä»åºä¿¡æ¯"); } Dt_MesPPBackInboundOrderDetail mesPPBackInboundOrderDetail = new Dt_MesPPBackInboundOrderDetail() { MaterialLot = item.MaterialLot, MaterielCode = item.MaterialCode, OrderQuantity = item.Quantity, CutedWidth = item.CutedWidth, MaterialLotOld = item.MaterialLotOld, Unit = item.Unit, ProductionDate = item.ProductionDate, EffectiveDate = item.ExpirationDate, OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(), }; Dt_MesPPBackInboundOrder mesPPBackInboundOrder = new Dt_MesPPBackInboundOrder() { WarehouseId = warehouse.WarehouseId, SourceAddressCode = model.SourceAddressCode, CarrierCode = model.CarrierCode, OrderStatus = InOrderStatusEnum.æªå¼å§.ObjToInt(), CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(), Details = new List<Dt_MesPPBackInboundOrderDetail> { mesPPBackInboundOrderDetail } }; Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail() { BatchNo = mesPPBackInboundOrderDetail.MaterialLot, MaterielCode = mesPPBackInboundOrderDetail.MaterielCode, MaterielName = materielInfo.MaterielName, OrderNo = "", SerialNumber = "", StockQuantity = mesPPBackInboundOrderDetail.OrderQuantity, OutboundQuantity = 0, Unit = materielInfo.MaterielUnit, Status = StockStatusEmun.ç»çæå.ObjToInt(), ProductionDate = mesPPBackInboundOrderDetail.ProductionDate, EffectiveDate = mesPPBackInboundOrderDetail.EffectiveDate, InboundOrderRowNo = mesPPBackInboundOrderDetail.RowNo, }; Dt_StockInfo stockInfo = new Dt_StockInfo() { PalletCode = model.CarrierCode, StockStatus = StockStatusEmun.ç»çæå.ObjToInt(), WarehouseId = mesPPBackInboundOrder.WarehouseId, Details = new List<Dt_StockInfoDetail> { stockInfoDetail } }; _unitOfWorkManage.BeginTran(); Db.InsertNav(mesPPBackInboundOrder).Include(x => x.Details).ExecuteCommand(); Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand(); WebResponseContent content = DeviceRequestInboundTask(mesPPBackInboundOrder, stockInfo); if (!content.Status) { _unitOfWorkManage.RollbackTran(); return MesResponseContent.Instance.Error(content.Message); } _unitOfWorkManage.CommitTran(); } return MesResponseContent.Instance.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return MesResponseContent.Instance.Error(ex.Message); } } public WebResponseContent DeviceRequestInboundTask(Dt_MesPPBackInboundOrder mesPPBackInboundOrder, Dt_StockInfo stockInfo) { try { Dt_Task task = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); if (task != null) { PushTasksToWCS(new List<Dt_Task> { task }); return WebResponseContent.Instance.Error($"该æçå·²çæä»»å¡"); } if (Repository.QueryFirst(x => x.SourceAddress == stockInfo.PalletCode && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null) { return WebResponseContent.Instance.Error($"该ç«ç¹å·²ææªæ§è¡çä»»å¡"); } //Dt_StockInfo stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First(); //if (stockInfos == null) //{ // return WebResponseContent.Instance.Error($"æªæ¾å°ç»çä¿¡æ¯"); //} //if (stockInfo.StockStatus != StockStatusEmun.ç»çæå.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.æå¨ç»çæå.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.åºåºå®æ.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.æ£é宿.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.éåº.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.MESéåº.ObjToInt()) //{ // return WebResponseContent.Instance.Error($"该æçç¶æä¸æ£ç¡®,ä¸å¯ç³è¯·å ¥åº"); //} //if (!string.IsNullOrEmpty(stockInfo.LocationCode)) //{ // return WebResponseContent.Instance.Error($"该æçå·²ç»å®è´§ä½"); //} //åªå ¥å¹³åº,é夿平åºå®ä¹è´§ä½ç±»åãããããããããããã Dt_LocationInfo? locationInfos = _basicRepository.LocationInfoRepository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId && x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt()); Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(locationInfos.RoadwayNo, stockInfo.PalletType, stockInfo.WarehouseId); if (locationInfo == null) { return WebResponseContent.Instance.Error($"è´§ä½åé 失败,æªæ¾å°å¯åé è´§ä½"); } Dt_Task newTask = new Dt_Task() { CurrentAddress = mesPPBackInboundOrder.SourceAddressCode, Grade = 0, NextAddress = locationInfo.LocationCode, PalletCode = stockInfo.PalletCode, Roadway = locationInfo.RoadwayNo,//å··éå·å å«AGV SourceAddress = mesPPBackInboundOrder.SourceAddressCode, TargetAddress = locationInfo.LocationCode, TaskType = TaskTypeEnum.Inbound.ObjToInt(), TaskStatus = TaskStatusEnum.New.ObjToInt(), WarehouseId = stockInfo.WarehouseId, PalletType = stockInfo.PalletType, MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode, Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity, }; LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus; _unitOfWorkManage.BeginTran(); _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation); _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, newTask.PalletType, LocationStatusEnum.Lock, newTask.WarehouseId); BaseDal.AddData(newTask); _stockRepository.StockInfoRepository.UpdateData(stockInfo); _unitOfWorkManage.CommitTran(); PushTasksToWCS(new List<Dt_Task> { newTask }); return WebResponseContent.Instance.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } } /// <summary> /// PPåºåæ¥è¯¢ /// </summary> /// <param name="model"></param> /// <returns></returns> public MesResponseContent QueryPpByWidth(QueryPpByWidthModel model) { MesResponseContent content = new MesResponseContent(); try { //é夿æ¥è¯¢ç«åº,å¹³åº Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString()); List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.StockStatus == (int)StockStatusEmun.å ¥åºå®æ).Includes(x => x.Details).ToList(); Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.MaterielCode == model.MaterialCode && x.CutedWidth == model.CutedWidth)); if (stockInfo == null) { return content.Error($"PPä»ç«åº/å¹³åºï¼ç©æç¼å·:{model.MaterialCode},è£å宽:{model.CutedWidth},æªæ¾å°æ¤ç©æåºåä¿¡æ¯"); } var stock = stockInfo.Details.FirstOrDefault(); if (stock != null) { content.Content = new { MaterialCode = stock.MaterielCode, Quantity = stock.StockQuantity, Unit = stock.Unit, Warehouse = warehouse.WarehouseCode, WarehouseName = warehouse.WarehouseName, CutedWidth = stock.CutedWidth, CarrierCode = stockInfo.PalletCode, MaterialLot = stock.BatchNo, }; } return content.OK(); } catch (Exception ex) { return MesResponseContent.Instance.Error(ex.Message); } } /// <summary> /// çæPP大å·åºåºä»»å¡ /// </summary> /// <param name="keys">åºåºåæç»ä¸»é®</param> /// <returns></returns> public WebResponseContent MESPPGenerateOutboundTasks(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_MesPPOutboundOrderDetail> outboundOrderDetails = new List<Dt_MesPPOutboundOrderDetail>(); 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>?, Dt_MesPPOutboundOrder mesPPOutboundOrder) result = MESPPOutboundTaskDataHandle(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); } if (result.mesPPOutboundOrder != null) { } 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); } } /// <summary> /// åºåºä»»å¡æ°æ®å¤ç /// </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>?) PPOutboundTaskDataHandle(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews) { List<Dt_Task> tasks = new List<Dt_Task>(); Dt_MesPPCutOutboundOrderDetail outboundOrderDetail = _outboundService.MesPPCutOutboundOrderDetailService.Repository.QueryFirst(x => x.Id == orderDetailId); if (outboundOrderDetail == null) { throw new Exception("æªæ¾å°åºåºåæç»ä¿¡æ¯"); } if (stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrderDetail.OrderQuantity - outboundOrderDetail.LockQuantity) { throw new Exception("éæ©æ°éè¶ åºåæ®æ°é"); } List<Dt_StockInfo>? stockInfos = null; Dt_MesPPCutOutboundOrderDetail? orderDetail = null; List<Dt_OutStockLockInfo>? outStockLockInfos = null; List<Dt_LocationInfo>? locationInfos = null; if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.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; 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, TaskTypeEnum.Outbound); } } return (tasks, stockInfos, orderDetail == null ? null : new List<Dt_MesPPCutOutboundOrderDetail> { orderDetail }, outStockLockInfos, locationInfos); } 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 { _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); 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) { _unitOfWorkManage.RollbackTran(); return content; } } else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0) { outboundOrderDetails.ForEach(x => { x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt(); }); _outboundService.MesPPOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails); } _unitOfWorkManage.CommitTran(); PushTasksToWCS(tasks); return WebResponseContent.Instance.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs
@@ -621,7 +621,6 @@ 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($"æªæ¾å°åºåºè¯¦æ ä¿¡æ¯"); @@ -641,20 +640,6 @@ 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 @@ -719,15 +704,6 @@ _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); ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/MesPPBackInboundOrderController.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Inbound/MesPPBackInboundOrderDetailController.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/MES/MesController.cs
@@ -99,49 +99,6 @@ return _taskService.SubstrateBack(model.Content); } /// <summary> /// PP大å·åºåº-è¿è¡åå· /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost, Route("PPSubsectionOut"), AllowAnonymous] public MesResponseContent PPSubsectionOut([FromBody] Root<PPSubsectionOutModel> model) { return _taskService.PPSubsectionOut(model.Content); } /// <summary> /// PPå°å·åºåº /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost, Route("PPCutOut"), AllowAnonymous] public MesResponseContent PPCutOut([FromBody] Root<PPCutOutModle> model) { return _taskService.PPCutOut(model.Content); } /// <summary> /// PPå ¥åº(大å·ãå°å·ãå¼ æ) /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost, Route("PPBack"), AllowAnonymous] public MesResponseContent PPBack([FromBody] Root<PPBackModel> model) { return _taskService.PPBack(model.Content); } /// <summary> /// PPåºåæ¥è¯¢ /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost, Route("QueryPpByWidth"), AllowAnonymous] public MesResponseContent QueryPpByWidth([FromBody] Root<QueryPpByWidthModel> model) { return _taskService.QueryPpByWidth(model.Content); } /// <summary> /// ç©æåºåºï¼WMS忥åºåºç©ææ¹æ¬¡è³MES /// </summary> /// <param name="model"></param> @@ -200,51 +157,5 @@ { return _outboundService.RworkOutboundOrderService.ProductOutBoundSync(model); } /// <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); } } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Outbound/MesPPCutOutboundOrderController.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Outbound/MesPPCutOutboundOrderDetailController.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Outbound/MesPPOutboundOrderController.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Outbound/MesPPOutboundOrderDetailController.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Stock/SolderMaskStockController.cs
ÎļþÒÑɾ³ý ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Stock/StockInfoController.cs
@@ -47,29 +47,6 @@ } /// <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> ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <!-- https://go.microsoft.com/fwlink/?LinkID=208121. --> <Project> <PropertyGroup> <DeleteExistingFiles>false</DeleteExistingFiles> <ExcludeApp_Data>false</ExcludeApp_Data> <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedPlatform>Any CPU</LastUsedPlatform> <PublishProvider>FileSystem</PublishProvider> <PublishUrl>bin\Release\net6.0\publish\</PublishUrl> <WebPublishMethod>FileSystem</WebPublishMethod> <_TargetId>Folder</_TargetId> </PropertyGroup> </Project> ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/ÎïÁ϶þάÂë¹æÔò.xlsxBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/ÎïÁϱàÂë¹æÔò20250618.xlsxBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/ÁúÀûµÃ»úÆ÷ÈËIOͨѶ±í20250712.xlsxBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/ÁúÀûµÃÉ豸ͨѶÐÒé.xlsBinary files differ
ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/ÁúÀûµÃÈí¼þ¼Æ»®±í.xlsxBinary files differ