| | |
| | | using MailKit.Search; |
| | | using Mapster; |
| | | using Masuit.Tools; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using System.Diagnostics; |
| | | using System.Reflection.Emit; |
| | | using System.Text.RegularExpressions; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core.Const; |
| | | using WIDESEA_DTO.WMS; |
| | | using WIDESEA_IServices; |
| | | using WIDESEA_IStoragIntegrationServices; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_StorageBasicRepository; |
| | | using WIDESEAWCS_BasicInfoRepository; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | |
| | | private readonly IDt_WheelsStock_htyRepository _WheelsStock_HtyRepository; |
| | | private readonly IDt_InWheels_mes_htyRepository _InWheels_Mes_HtyRepository; |
| | | private readonly IDt_CacheInfoRepository _CacheInfoRepository; |
| | | private readonly IDt_OutWheels_htyRepository _OutWheels_HtyRepository; |
| | | private readonly IDt_InZdp_mesRepository _InZdp_MesRepository; |
| | | private readonly IDt_InZdp_mes_htyRepository _InZdp_Mes_HtyRepository; |
| | | private readonly IDt_ZdpStockRepository _ZdpStockRepository; |
| | | private readonly IDt_ZdpStock_htyRepository _ZdpStock_HtyRepository; |
| | | |
| | | public Dt_TaskService(IDt_TaskRepository BaseDal, |
| | | IUnitOfWorkManage unitOfWorkManage, |
| | |
| | | IDt_WheelsStockRepository wheelsStockRepository, |
| | | IDt_WheelsStock_htyRepository wheelsStock_HtyRepository, |
| | | IDt_InWheels_mes_htyRepository inWheels_Mes_HtyRepository, |
| | | IDt_CacheInfoRepository cacheInfoRepository) : base(BaseDal) |
| | | IDt_OutWheels_htyRepository dt_OutWheels_HtyRepository, |
| | | IDt_CacheInfoRepository cacheInfoRepository, |
| | | IDt_InZdp_mesRepository inZdp_MesRepository, |
| | | IDt_InZdp_mes_htyRepository inZdp_Mes_HtyRepository, |
| | | IDt_ZdpStockRepository zdpStockRepository, |
| | | IDt_ZdpStock_htyRepository dt_ZdpStock_HtyRepository) : base(BaseDal) |
| | | |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | |
| | | _WheelsStockRepository = wheelsStockRepository; |
| | | _WheelsStock_HtyRepository = wheelsStock_HtyRepository; |
| | | _InWheels_Mes_HtyRepository = inWheels_Mes_HtyRepository; |
| | | _OutWheels_HtyRepository = dt_OutWheels_HtyRepository; |
| | | _CacheInfoRepository = cacheInfoRepository; |
| | | _InZdp_MesRepository = inZdp_MesRepository; |
| | | _InZdp_Mes_HtyRepository = inZdp_Mes_HtyRepository; |
| | | _ZdpStockRepository = zdpStockRepository; |
| | | _ZdpStock_HtyRepository = dt_ZdpStock_HtyRepository; |
| | | } |
| | | |
| | | #region å¤é¨æ¥å£æ¹æ³ |
| | |
| | | |
| | | #endregion ç§»åºä»»å¡å®æ |
| | | |
| | | #region å¶å¨çç§»åºä»»å¡å®æ |
| | | |
| | | /// <summary> |
| | | /// ç§»åºä»»å¡å®æ |
| | | /// </summary> |
| | | /// <param name="saveModel">任塿°æ®åé</param> |
| | | /// <returns>è¿åç»æé</returns> |
| | | public async Task<WebResponseContent> CompleteZdpTaskAsync(Dt_Task task, Dt_ZdpStock stock) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | // æ´æ°è´§ä½ååºåä¿¡æ¯ |
| | | (Dt_ZdpStock updateStock, DtLocationInfo locationInForm, DtLocationInfo locationInfoTo) = UpdateZdpStockLocation(stock,task); |
| | | var taskHty = CreateHistoricalTask(task); |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "ç§»åºä»»å¡å®æ", $"è´§ä½å°åï¼{task.TargetAddress},ä¿®æ¹ååºåæ°æ®ï¼{JsonConvert.SerializeObject(updateStock)}ï¼åå
è´§ä½æ°æ®ï¼{locationInForm}"); |
| | | |
| | | // æ§è¡æ°æ®åºäºå¡ |
| | | bool isResult = await ZdpExecuteTransaction(updateStock, taskHty, locationInForm, locationInfoTo, task.TaskId); |
| | | if (isResult) |
| | | content.OK("ç§»åºä»»å¡å®ææå"); |
| | | else |
| | | content.Error("ç§»åºä»»å¡å®æå¤±è´¥"); |
| | | } |
| | | catch (Exception err) |
| | | { |
| | | Console.WriteLine(err.Message.ToString()); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | #endregion ç§»åºä»»å¡å®æ |
| | | |
| | | #region å
¥åºä»»å¡å®æ |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | |
| | | // è·åMESä¿¡æ¯åç®æ ä½ç½®ä¿¡æ¯ |
| | | var mes_Wheels = await _InWheels_MesRepository.QueryFirstNavAsync(x => x.Wheels_Num == task.PalletCode); |
| | | Dt_InWheels_mes mes_Wheels = null; |
| | | Dt_InZdp_mes mes_Zdp = null; |
| | | Dt_WheelsStock wheelsStock = null; |
| | | Dt_ZdpStock zdpStock = null; |
| | | |
| | | if (task.TaskType== (int)TaskInboundTypeEnum.InBrake) |
| | | mes_Zdp = await _InZdp_MesRepository.QueryFirstNavAsync(x => x.Zdp_code == task.PalletCode); |
| | | else |
| | | mes_Wheels = await _InWheels_MesRepository.QueryFirstNavAsync(x => x.Wheels_Num == task.PalletCode); |
| | | |
| | | |
| | | var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress && x.RoadwayNo == task.Roadway); |
| | | |
| | | int lastStatus = locationInf.LocationStatus; |
| | |
| | | // å建åå²ä»»å¡å®ä¾æ¨¡å |
| | | var taskHty = CreateHistoricalTask(task); |
| | | |
| | | // æ ¹æ®å建åºåå®ä¾æ¨¡å |
| | | Dt_WheelsStock wheelsStock = new Dt_WheelsStock |
| | | if(task.TaskType == (int)TaskInboundTypeEnum.InBrake) |
| | | { |
| | | Wheels_ldtm = mes_Wheels.Wheels_ldtm, |
| | | CreateDate = DateTime.Now, |
| | | Creater = task.Creater, |
| | | Wheels_Type = mes_Wheels.Wheels_Type, |
| | | Wheels_gkcc = mes_Wheels.Wheels_gkcc, |
| | | WheelsProps = mes_Wheels.WheelsProps, |
| | | Wheels_CarNo = mes_Wheels.Wheels_CarNo, |
| | | Wheels_CarType = mes_Wheels.Wheels_CarType, |
| | | Wheels_ldxh = mes_Wheels.Wheels_ldxh, |
| | | Wheels_code = mes_Wheels.Wheels_code, |
| | | Wheels_InDate = mes_Wheels.Wheels_InDate, |
| | | Wheels_level = mes_Wheels.Wheels_level, |
| | | Wheels_Location = task.TargetAddress, |
| | | Wheels_NewOrOld = mes_Wheels.Wheels_NewOrOld, |
| | | Wheels_Num = mes_Wheels.Wheels_Num, |
| | | Wheels_psj = mes_Wheels.Wheels_psj, |
| | | Wheels_CurrentStatue = 1, |
| | | Wheels_mttype = mes_Wheels.Wheels_mttype, |
| | | Wheels_ljz = mes_Wheels.Wheels_ljz, |
| | | Wheels_ldh = mes_Wheels.Wheels_ldh, |
| | | //Wheels_SequenceNum = mes_Wheels.Wheels_SequenceNum, |
| | | Wheels_ygljz = mes_Wheels.Wheels_ygljz, |
| | | Wheels_gkzja = mes_Wheels.Wheels_gkzja, |
| | | Wheels_gkzjb = mes_Wheels.Wheels_gkzjb, |
| | | Wheels_gkzjc = mes_Wheels.Wheels_gkzjc, |
| | | // æ ¹æ®å建åºåå®ä¾æ¨¡å |
| | | zdpStock = new Dt_ZdpStock |
| | | { |
| | | Zdp_code= mes_Zdp.Zdp_code, |
| | | Zdp_ZPH = mes_Zdp.Zdp_ZPH, |
| | | Zdp_CurrentStatue = 1, |
| | | Zdp_Location = task.TargetAddress, |
| | | Zdp_chexing= mes_Zdp.Zdp_chexing, |
| | | Zdp_neworold = mes_Zdp.Zdp_neworold, |
| | | Zdp_POS = mes_Zdp.Zdp_POS, |
| | | Zdp_LSXH = mes_Zdp.Zdp_LSXH, |
| | | Zdp_MAT = mes_Zdp.Zdp_MAT, |
| | | Zdp_SITE = mes_Zdp.Zdp_SITE, |
| | | Zdp_GKA1 = mes_Zdp.Zdp_GKA1, |
| | | Zdp_GKA2 = mes_Zdp.Zdp_GKA2, |
| | | Zdp_GKA3 = mes_Zdp.Zdp_GKA3, |
| | | Zdp_GKA = mes_Zdp.Zdp_GKA, |
| | | Zdp_GKB1 = mes_Zdp.Zdp_GKB1, |
| | | Zdp_GKB2 = mes_Zdp.Zdp_GKB2, |
| | | Zdp_GKB3 = mes_Zdp.Zdp_GKB3, |
| | | Zdp_GKB = mes_Zdp.Zdp_GKB, |
| | | Zdp_GKC1 = mes_Zdp.Zdp_GKC1, |
| | | Zdp_GKC2 = mes_Zdp.Zdp_GKC2, |
| | | Zdp_GKC3 = mes_Zdp.Zdp_GKC3, |
| | | Zdp_GKC = mes_Zdp.Zdp_GKC, |
| | | Zdp_GKJZ = mes_Zdp.Zdp_GKJZ, |
| | | Zdp_LSCSYMH = mes_Zdp.Zdp_LSCSYMH, |
| | | Zdp_LMCSYMH = mes_Zdp.Zdp_LMCSYMH, |
| | | Zdp_rksj = mes_Zdp.Zdp_rksj, |
| | | CreateDate = DateTime.Now, |
| | | Creater = task.Creater, |
| | | }; |
| | | } |
| | | else |
| | | { |
| | | // æ ¹æ®å建åºåå®ä¾æ¨¡å |
| | | wheelsStock = new Dt_WheelsStock |
| | | { |
| | | Wheels_ldtm = mes_Wheels.Wheels_ldtm, |
| | | CreateDate = DateTime.Now, |
| | | Creater = task.Creater, |
| | | Wheels_Type = mes_Wheels.Wheels_Type, |
| | | Wheels_gkcc = mes_Wheels.Wheels_gkcc, |
| | | WheelsProps = mes_Wheels.WheelsProps, |
| | | Wheels_CarNo = mes_Wheels.Wheels_CarNo, |
| | | Wheels_CarType = mes_Wheels.Wheels_CarType, |
| | | Wheels_ldxh = mes_Wheels.Wheels_ldxh, |
| | | Wheels_code = mes_Wheels.Wheels_code, |
| | | Wheels_InDate = mes_Wheels.Wheels_InDate, |
| | | Wheels_level = mes_Wheels.Wheels_level, |
| | | Wheels_Location = task.TargetAddress, |
| | | Wheels_NewOrOld = mes_Wheels.Wheels_NewOrOld, |
| | | Wheels_Num = mes_Wheels.Wheels_Num, |
| | | Wheels_psj = mes_Wheels.Wheels_psj, |
| | | Wheels_CurrentStatue = 1, |
| | | Wheels_mttype = mes_Wheels.Wheels_mttype, |
| | | Wheels_ljz = mes_Wheels.Wheels_ljz, |
| | | Wheels_ldh = mes_Wheels.Wheels_ldh, |
| | | //Wheels_SequenceNum = mes_Wheels.Wheels_SequenceNum, |
| | | Wheels_ygljz = mes_Wheels.Wheels_ygljz, |
| | | Wheels_gkzja = mes_Wheels.Wheels_gkzja, |
| | | Wheels_gkzjb = mes_Wheels.Wheels_gkzjb, |
| | | Wheels_gkzjc = mes_Wheels.Wheels_gkzjc, |
| | | }; |
| | | } |
| | | |
| | | }; |
| | | |
| | | // æ§è¡æ°æ®åºäºå¡ |
| | | bool isResult = await ExecuteTransaction(wheelsStock, taskHty, locationInf, task.TaskId, mes_Wheels); |
| | | // æ§è¡æ°æ®åºäºå¡ZDPExecuteTransaction |
| | | bool isResult = false; |
| | | if (task.TaskType == (int)TaskInboundTypeEnum.InBrake) |
| | | { |
| | | isResult = await ZDPExecuteTransaction(zdpStock, taskHty, locationInf, task.TaskId, mes_Zdp); |
| | | } |
| | | else |
| | | { |
| | | isResult=await ExecuteTransaction(wheelsStock, taskHty, locationInf, task.TaskId, mes_Wheels); |
| | | } |
| | | |
| | | if (isResult) |
| | | { |
| | | _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInf, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum); |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if(stock ==null) return content.Error("ä»»å¡å®æå¤±è´¥ï¼æªæ¾å°å½ååºåä¿¡æ¯ï¼å é¤å¤±è´¥"); |
| | | |
| | | // æ´æ°åºä½ç¶æä¸ä»»å¡ç¶æ |
| | | (var loc, var tas) = UpdateStockAndTaskStatus(stock, task); |
| | | var taskHty = task.Adapt<Dt_Task_Hty>(); |
| | |
| | | stockInfo_Hty.FinishWheelDate = DateTime.Now; |
| | | stockInfo_Hty.OperateType = (int)OperateTypeEnum.èªå¨å®æ; |
| | | |
| | | Dt_OutWheels_hty Outwheels_hty = new Dt_OutWheels_hty |
| | | { |
| | | Wheels_code = stock.Wheels_code, |
| | | Wheels_Type = stock.Wheels_Type == "1"?"è½®":"ç", |
| | | Wheels_Num = stock.Wheels_Num, |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName == null ? "admin" : App.User.UserName, |
| | | WheelsProps = stock.WheelsProps, |
| | | Wheels_CarNo = stock.Wheels_CarNo, |
| | | Wheels_CarType = stock.Wheels_CarType, |
| | | Wheels_ldxh = stock.Wheels_ldxh, |
| | | Wheels_ldtm = stock.Wheels_ldtm, |
| | | Wheels_InDate = stock.Wheels_InDate, |
| | | Wheels_level = stock.Wheels_level, |
| | | Wheels_NewOrOld = stock.Wheels_NewOrOld, |
| | | Wheels_psj = stock.Wheels_psj, |
| | | Wheels_gkcc = stock.Wheels_gkcc, |
| | | Wheels_gkzja = stock.Wheels_gkzja, |
| | | Wheels_gkzjb = stock.Wheels_gkzjb, |
| | | Wheels_gkzjc = stock.Wheels_gkzjc, |
| | | Wheels_ldh = stock.Wheels_ldh, |
| | | Wheels_ljz = stock.Wheels_ljz, |
| | | Wheels_mttype = stock.Wheels_mttype, |
| | | //Wheels_SequenceNum = "", |
| | | Wheels_ygljz = stock.Wheels_ygljz, |
| | | }; |
| | | |
| | | |
| | | |
| | | // äºå¡å¤ç |
| | | await _unitOfWorkManage.UseTranAsync(async () => |
| | | { |
| | |
| | | //var isTaskUpdated = await BaseDal.DeleteDataByIdAsync(task.TaskId); //å é¤ä»»å¡ |
| | | var isTaskAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0; //å å
¥åå²ä»»å¡ |
| | | var isStockHtyAdd = await _WheelsStock_HtyRepository.AddDataAsync(stockInfo_Hty); //å å
¥åå²åºå |
| | | |
| | | var isoutWheelsHtyAdd = await _OutWheels_HtyRepository.AddDataAsync(Outwheels_hty); //æ·»å 车轮åºåºä¿¡æ¯ |
| | | }); |
| | | |
| | | return content.OK("ä»»å¡å®ææå", task.Remark); |
| | | } |
| | | catch (Exception err) |
| | | { |
| | | LogFactory.GetLog("ä»»å¡å®æ").Error(true, $"ç³»ç»å¼å¸¸ï¼å¼å¸¸ä¿¡æ¯ï¼{err.Message}"); |
| | | return content.Error(err.Message); |
| | | } |
| | | } |
| | | |
| | | private (DtLocationInfo, Dt_Task) UpdateStockAndTaskStatus( Dt_Task task) |
| | | { |
| | | var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway); |
| | | int lastStatus = location.LocationStatus; |
| | | location.LocationStatus = (int)LocationEnum.Free; |
| | | task.TaskState = (int)TaskOutStatusEnum.OutFinish; |
| | | //task.CurrentAddress = task.NextAddress; |
| | | //task.NextAddress = task.TargetAddress; |
| | | |
| | | _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum); |
| | | |
| | | LogFactory.GetLog("ä»»å¡å®æ").Info(true, "æ´æ°åºä½ç¶æä¸ä»»å¡ç¶æ"); |
| | | return (location, task); |
| | | } |
| | | #endregion |
| | | |
| | | #region å¶å¨çåºåºä»»å¡å®æ |
| | | public async Task<WebResponseContent> CompleteOutZdpTaskAsync(Dt_Task task, Dt_ZdpStock stock) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (stock == null) return content.Error("ä»»å¡å®æå¤±è´¥ï¼æªæ¾å°å½ååºåä¿¡æ¯ï¼å é¤å¤±è´¥"); |
| | | |
| | | // æ´æ°åºä½ç¶æä¸ä»»å¡ç¶æ |
| | | (var loc, var tas) = UpdateStockAndTaskStatus(task); |
| | | var taskHty = task.Adapt<Dt_Task_Hty>(); |
| | | taskHty.FinishTime = DateTime.Now; |
| | | taskHty.OperateType = (int)OperateTypeEnum.èªå¨å®æ; |
| | | |
| | | Dt_ZdpStock_hty stockInfo_Hty = stock.Adapt<Dt_ZdpStock_hty>(); |
| | | stockInfo_Hty.FinishDate = DateTime.Now; |
| | | stockInfo_Hty.OperateType = (int)OperateTypeEnum.èªå¨å®æ; |
| | | |
| | | Dt_OutZdp_hty Outwheels_hty = new Dt_OutZdp_hty |
| | | { |
| | | Zdp_code = stock.Zdp_code, |
| | | Zdp_ZPH = stock.Zdp_ZPH, |
| | | Zdp_Location = stock.Zdp_Location, |
| | | Zdp_chexing = stock.Zdp_chexing, |
| | | Zdp_neworold = stock.Zdp_neworold, |
| | | Zdp_POS = stock.Zdp_POS, |
| | | Zdp_LSXH = stock.Zdp_LSXH, |
| | | Zdp_MAT = stock.Zdp_MAT, |
| | | Zdp_SITE = stock.Zdp_SITE, |
| | | Zdp_GKA1 = stock.Zdp_GKA1, |
| | | Zdp_GKA2 = stock.Zdp_GKA2, |
| | | Zdp_GKA3 = stock.Zdp_GKA3, |
| | | Zdp_GKA = stock.Zdp_GKA, |
| | | Zdp_GKB1 = stock.Zdp_GKB1, |
| | | Zdp_GKB2 = stock.Zdp_GKB2, |
| | | Zdp_GKB3 = stock.Zdp_GKB3, |
| | | Zdp_GKB = stock.Zdp_GKB, |
| | | Zdp_GKC1 = stock.Zdp_GKC1, |
| | | Zdp_GKC2 = stock.Zdp_GKC2, |
| | | Zdp_GKC3 = stock.Zdp_GKC3, |
| | | Zdp_GKC = stock.Zdp_GKC, |
| | | Zdp_GKJZ = stock.Zdp_GKJZ, |
| | | Zdp_LSCSYMH = stock.Zdp_LSCSYMH, |
| | | Zdp_rksj = stock.Zdp_rksj, |
| | | }; |
| | | |
| | | // äºå¡å¤ç |
| | | await _unitOfWorkManage.UseTranAsync(async () => |
| | | { |
| | | var isStockUpdated = await _ZdpStockRepository.DeleteDataByIdAsync(stock.Zdp_ID); //å é¤åºå |
| | | var isLocationUpdate = await _locationRepository.UpdateDataAsync(loc); //æ´æ°åºä½ |
| | | //var isTaskUpdated = await BaseDal.DeleteDataByIdAsync(task.TaskId); //å é¤ä»»å¡ |
| | | var isTaskAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0; //å å
¥åå²ä»»å¡ |
| | | var isStockHtyAdd = await _ZdpStock_HtyRepository.AddDataAsync(stockInfo_Hty); //å å
¥åå²åºå |
| | | }); |
| | | |
| | | return content.OK("ä»»å¡å®ææå", task.Remark); |
| | |
| | | |
| | | |
| | | // éªè¯åºåæ¯å¦åå¨ |
| | | var stock = await _WheelsStockRepository.QueryFirstNavAsync(x => x.Wheels_Num == task.PalletCode); |
| | | var stock = await _WheelsStockRepository.QueryFirstNavAsync(x => x.Wheels_Num.Contains(task.PalletCode) && x.Wheels_Location==task.SourceAddress); |
| | | var ZdpStock = await _ZdpStockRepository.QueryFirstNavAsync(x => x.Zdp_code == task.PalletCode && x.Zdp_Location == task.SourceAddress); |
| | | |
| | | |
| | | // æ ¹æ®ä»»å¡ç±»åè°ç¨ç¸åºç宿任塿¹æ³ |
| | | switch (task.TaskType) |
| | |
| | | return await CompleteInboundTaskAsync(task); |
| | | |
| | | case (int)TaskOutboundTypeEnum.Outbound: |
| | | case (int)TaskOutboundTypeEnum.OutBrake: |
| | | case (int)TaskOutboundTypeEnum.OutWheels: |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "åºåºä»»å¡", ""); |
| | | return await CompleteStackTaskAsync(task, stock); |
| | | |
| | | case (int)TaskOutboundTypeEnum.OutBrake: |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "å¶å¨çåºåºä»»å¡", ""); |
| | | return await CompleteOutZdpTaskAsync(task, ZdpStock); |
| | | |
| | | case (int)TaskRelocationTypeEnum.Relocation: |
| | | return await CompleteTransferTaskAsync(task, stock); |
| | | if (stock != null) |
| | | return await CompleteTransferTaskAsync(task, stock); |
| | | else |
| | | return await CompleteZdpTaskAsync(task, ZdpStock); |
| | | |
| | | default: |
| | | return content.Error("ä»»å¡ç±»åä¸åå¨"); |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_WheelsStock> WheelList = new List<Dt_WheelsStock>(); |
| | | List<Dt_ZdpStock> ZdpStockList = new List<Dt_ZdpStock>(); |
| | | List<Dt_Task> TaskList = new List<Dt_Task>(); |
| | | List<DtLocationInfo> Locationslist = new List<DtLocationInfo>(); |
| | | List<WMSTaskDTO> WMSTaskDTOdata = new List<WMSTaskDTO>(); |
| | | |
| | | |
| | | string palletCode = saveModel.MainData["palletCode"].ToString(); |
| | | string station = saveModel.MainData["station"].ToString(); |
| | | string outtype = saveModel.MainData["outtype"].ToString(); //1为æå®è½¦è½®åºåºï¼2为æå®å¶å¨çåºåº |
| | | |
| | | // æ¥è¯¢åºåä¿¡æ¯ |
| | | var stockInfo = _WheelsStockRepository.QueryFirst(x => x.Wheels_code == palletCode); |
| | | if (stockInfo == null) |
| | | List<string> palletCodes = JsonConvert.DeserializeObject<List<string>>(palletCode); //ææçæ¡ç æ¾ç¤º |
| | | |
| | | List<DtLocationInfo> locationinfoData = _locationRepository.QueryData(x => x.LocationStatus == 2); //æ¥æ¾å
¨é¨åºä½ |
| | | if (outtype == "2") |
| | | { |
| | | return content.Error("æªæ¥è¯¢å°å¯¹åºçåºåä¿¡æ¯"); |
| | | List<Dt_ZdpStock> stocktData = _ZdpStockRepository.QueryData(x => x.Zdp_CurrentStatue == 1); //æ¥æ¾å
¨é¨å¨åºçåºå |
| | | foreach (var item in palletCodes) |
| | | { |
| | | Dt_ZdpStock zdpInfo = _ZdpStockRepository.QueryFirst(x => x.Zdp_code == item); |
| | | if (zdpInfo == null) return content.Error("æªæ¥è¯¢å°å¯¹åºçåºåä¿¡æ¯"); |
| | | zdpInfo.Zdp_CurrentStatue = 4; |
| | | string Location = zdpInfo.Zdp_Location; |
| | | |
| | | var locationst = locationinfoData.FirstOrDefault(x => x.LocationCode == Location); |
| | | if (locationst.LocationStatus != (int)LocationEnum.InStock && locationst.EnalbeStatus != 1) return content.Error($"åºä½å¼å¸¸,è¯·æ£æ¥ä¸ä¸åºä½,åºåæ¡ç ï¼{item}ï¼åºä½å·ï¼{Location}"); |
| | | |
| | | locationst.LocationStatus = (int)LocationEnum.InStockDisable; |
| | | |
| | | var task = BaseDal.QueryFirst(x => x.PalletCode == item); |
| | | if (task != null) |
| | | { |
| | | return content.Error($"ã{item}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | |
| | | |
| | | CheckInfo checkInfo = new CheckInfo() |
| | | { |
| | | CarType = zdpInfo.Zdp_chexing , |
| | | MTType ="0" , //å¶å¨ç没æå¨æå±æ§ |
| | | |
| | | //CheckType = stockInfo.Wheels_Type == "1" ? "1" : "2", |
| | | CheckType = outtype, |
| | | |
| | | HubLevel = "0" , |
| | | CLTM =zdpInfo.Zdp_code, |
| | | IsCheck = true, |
| | | Standards = zdpInfo.Zdp_neworold |
| | | }; |
| | | |
| | | task = new Dt_Task |
| | | { |
| | | CarType = zdpInfo.Zdp_chexing, |
| | | wheels_gkcc = zdpInfo.Zdp_GKJZ, |
| | | WheelsNewOrOld = zdpInfo.Zdp_neworold, |
| | | WheelsLX = "", |
| | | Grade = 1, |
| | | Roadway = "SC1", |
| | | TargetAddress = station, |
| | | Dispatchertime = DateTime.Now, |
| | | MaterialNo = "", |
| | | NextAddress = "2010", |
| | | OrderNo = null, |
| | | PalletCode = zdpInfo.Zdp_code, |
| | | wheels_mttype = "" , |
| | | SourceAddress = zdpInfo.Zdp_Location, |
| | | CurrentAddress =zdpInfo.Zdp_Location, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | TaskType = outtype == "2" ? (int)TaskOutboundTypeEnum.OutBrake : (int)TaskOutboundTypeEnum.OutWheels, |
| | | TaskNum = BaseDal.GetTaskNo().Result, |
| | | Creater = "System", |
| | | CreateDate = DateTime.Now, |
| | | TaskId = 0, |
| | | task_bak1 = JsonConvert.SerializeObject(checkInfo), |
| | | Towhereabouts = station, |
| | | }; |
| | | |
| | | // å建任å¡ä¼ è¾ç¨çDTO对象 |
| | | var taskDTO = CreateTaskDTO(task); |
| | | |
| | | WMSTaskDTOdata.Add(taskDTO); |
| | | Locationslist.Add(locationst); |
| | | TaskList.Add(task); |
| | | ZdpStockList.Add(zdpInfo); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | List<Dt_WheelsStock> stocktData = _WheelsStockRepository.QueryData(x => x.Wheels_CurrentStatue == 1); //æ¥æ¾å
¨é¨å¨åºçåºå |
| | | foreach (var item in palletCodes) |
| | | { |
| | | Dt_WheelsStock stockInfo = _WheelsStockRepository.QueryFirst(x => x.Wheels_code == item); |
| | | if (stockInfo == null) return content.Error("æªæ¥è¯¢å°å¯¹åºçåºåä¿¡æ¯"); |
| | | stockInfo.Wheels_CurrentStatue = 4; |
| | | string Location = stockInfo.Wheels_Location; |
| | | var locationst = locationinfoData.Where(x => x.LocationCode== stockInfo.Wheels_Location).FirstOrDefault(); |
| | | if (locationst.LocationStatus == (int)LocationEnum.Lock) return content.Error("åºä½éå®,请å
è§£éååæå®åºåº"); |
| | | |
| | | locationst.LocationStatus = (int)LocationEnum.InStockDisable; |
| | | |
| | | var task = BaseDal.QueryFirst(x => x.PalletCode == item); |
| | | if (task != null) |
| | | { |
| | | return content.Error($"ã{item}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | |
| | | CheckInfo checkInfo = new CheckInfo() |
| | | { |
| | | CarType = stockInfo.Wheels_CarType, |
| | | MTType = stockInfo.Wheels_mttype, //å¶å¨ç没æå¨æå±æ§ |
| | | |
| | | //CheckType = stockInfo.Wheels_Type == "1" ? "1" : "2", |
| | | CheckType = outtype, |
| | | |
| | | HubLevel = stockInfo.Wheels_level.Contains("ç级") ? stockInfo.Wheels_level.Replace("ç级", "") : "0", |
| | | CLTM = stockInfo.Wheels_Num, |
| | | IsCheck = true, |
| | | Standards = stockInfo.Wheels_NewOrOld |
| | | }; |
| | | |
| | | |
| | | task = new Dt_Task |
| | | { |
| | | CarType = stockInfo.Wheels_CarType, |
| | | wheels_gkcc = stockInfo.Wheels_gkcc, |
| | | WheelsNewOrOld = stockInfo.Wheels_NewOrOld, |
| | | WheelsLX = outtype == "2" ? "" : stockInfo.Wheels_ldxh, |
| | | Grade = 1, |
| | | Roadway = "SC1", |
| | | TargetAddress = station, |
| | | Dispatchertime = DateTime.Now, |
| | | MaterialNo = "", |
| | | NextAddress = "2010", |
| | | OrderNo = null, |
| | | PalletCode = stockInfo.Wheels_Num, |
| | | wheels_mttype = stockInfo.Wheels_mttype, |
| | | SourceAddress =stockInfo.Wheels_Location, |
| | | CurrentAddress = stockInfo.Wheels_Location, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | TaskType = outtype == "2" ? (int)TaskOutboundTypeEnum.OutBrake : (int)TaskOutboundTypeEnum.OutWheels, |
| | | TaskNum = BaseDal.GetTaskNo().Result, |
| | | Creater = "System", |
| | | CreateDate = DateTime.Now, |
| | | TaskId = 0, |
| | | task_bak1 = JsonConvert.SerializeObject(checkInfo), |
| | | Towhereabouts = station, |
| | | }; |
| | | |
| | | // å建任å¡ä¼ è¾ç¨çDTO对象 |
| | | var taskDTO = CreateTaskDTO(task); |
| | | |
| | | WMSTaskDTOdata.Add(taskDTO); |
| | | Locationslist.Add(locationst); |
| | | TaskList.Add(task); |
| | | WheelList.Add(stockInfo); |
| | | } |
| | | } |
| | | |
| | | if (stockInfo.Wheels_CurrentStatue != 1) return content.Error("æå®å¤±è´¥ï¼å½åç¶æä¸å
许æå®åºåº"); |
| | | |
| | | stockInfo.Wheels_CurrentStatue = 4; |
| | | |
| | | //æ¥è¯¢åºä½æ¯å¦éå®ï¼ |
| | | var location = _locationRepository.QueryFirst(x => x.LocationCode == stockInfo.Wheels_Location); |
| | | |
| | | if (location.LocationStatus == (int)LocationEnum.Lock) return content.Error("åºä½éå®,请å
è§£éååæå®åºåº"); |
| | | |
| | | location.LocationStatus = (int)LocationEnum.InStockDisable; |
| | | |
| | | var task = BaseDal.QueryFirst(x => x.PalletCode == palletCode); |
| | | if (task != null) |
| | | { |
| | | return content.Error($"ã{palletCode}ãå·²åå¨ä»»å¡"); |
| | | } |
| | | |
| | | CheckInfo checkInfo = new CheckInfo() |
| | | { |
| | | CarType = stockInfo.Wheels_CarType, |
| | | MTType = stockInfo.Wheels_mttype, |
| | | CheckType = stockInfo.Wheels_Type == "1" ? "1" : "2", |
| | | HubLevel = stockInfo.Wheels_level.Contains("ç级") ? stockInfo.Wheels_level.Replace("ç级", "") : "0", |
| | | CLTM = stockInfo.Wheels_Num, |
| | | IsCheck = true, |
| | | Standards = stockInfo.Wheels_NewOrOld |
| | | }; |
| | | |
| | | // var stationInfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode == station); |
| | | |
| | | // å建并添å ä»»å¡å°æ°æ®åº |
| | | task = new Dt_Task |
| | | { |
| | | CarType = stockInfo.Wheels_CarType, |
| | | wheels_gkcc = stockInfo.Wheels_gkcc, |
| | | WheelsNewOrOld = stockInfo.Wheels_NewOrOld, |
| | | WheelsLX = stockInfo.Wheels_ldxh, |
| | | Grade = 1, |
| | | Roadway = "SC1", |
| | | TargetAddress = station, |
| | | Dispatchertime = DateTime.Now, |
| | | MaterialNo = "", |
| | | NextAddress = "2010", |
| | | OrderNo = null, |
| | | PalletCode = stockInfo.Wheels_Num, |
| | | wheels_mttype = stockInfo.Wheels_mttype, |
| | | SourceAddress = stockInfo.Wheels_Location, |
| | | CurrentAddress = stockInfo.Wheels_Location, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | TaskType = (int)TaskOutboundTypeEnum.OutWheels, |
| | | TaskNum = BaseDal.GetTaskNo().Result, |
| | | Creater = "System", |
| | | CreateDate = DateTime.Now, |
| | | TaskId = 0, |
| | | task_bak1 = JsonConvert.SerializeObject(checkInfo) |
| | | }; |
| | | |
| | | // å建任å¡ä¼ è¾ç¨çDTO对象 |
| | | var taskDTO = CreateTaskDTO(task); |
| | | |
| | | // è·åWMS IPå°åç¨äºåéä»»å¡è¯·æ± |
| | | var wmsIpAddress = GetWCSIpReceiveTask(); |
| | |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | |
| | | var tasks = new List<WMSTaskDTO>() { taskDTO }; |
| | | // åéä»»å¡è¯·æ±å°WMS |
| | | var result = HttpHelper.Post(wmsIpAddress, tasks.ToJsonString()); |
| | | var result = HttpHelper.Post(wmsIpAddress, WMSTaskDTOdata.ToJsonString()); |
| | | content = JsonConvert.DeserializeObject<WebResponseContent>(result); |
| | | if (content.Status) |
| | | { |
| | | // æ·»å ä»»å¡å°æ°æ®åº |
| | | BaseDal.AddData(task); |
| | | BaseDal.AddData(TaskList); |
| | | // æ´æ°åºä½ä½ç½®ç¶æä¸ºä¸å¯ç¨ |
| | | _locationRepository.UpdateData(location); |
| | | _WheelsStockRepository.UpdateData(stockInfo); |
| | | _locationRepository.UpdateData(Locationslist); |
| | | if (outtype == "2") |
| | | { |
| | | _ZdpStockRepository.UpdateData(ZdpStockList); |
| | | } |
| | | else |
| | | { |
| | | _WheelsStockRepository.UpdateData(WheelList); |
| | | } |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | return (stock, fromLocation, toLocation); |
| | | } |
| | | |
| | | #region æ§è¡æ°æ®åºäºå¡ |
| | | /// <summary> |
| | | /// æ§è¡æ°æ®åºäºå¡ |
| | | /// å¶å¨çæ´æ°åºåä½ç½® |
| | | /// </summary> |
| | | /// <param name="stock"></param> |
| | | /// <param name="task"></param> |
| | | /// <returns></returns> |
| | | private (Dt_ZdpStock, DtLocationInfo, DtLocationInfo) UpdateZdpStockLocation(Dt_ZdpStock stock, Dt_Task task) |
| | | { |
| | | //ä¿®æ¹æ¥æºåºä½å ç®æ åºä½ç¶æ |
| | | var fromLocation = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway); |
| | | fromLocation.LocationStatus = (int)LocationEnum.Free; |
| | | var toLocation = _locationRepository.QueryFirst(x => x.LocationCode == task.TargetAddress && x.RoadwayNo == task.Roadway); |
| | | toLocation.LocationStatus = (int)LocationEnum.InStock; |
| | | |
| | | // å°åºåä½ç½®è®¾ç½®ä¸ºç®æ ä½ç½® |
| | | stock.Zdp_Location = task.TargetAddress; |
| | | |
| | | // è¿åæ´æ°åçåºååä½ç½®ä¿¡æ¯ |
| | | return (stock, fromLocation, toLocation); |
| | | } |
| | | |
| | | |
| | | |
| | | #region 车轮æ§è¡æ°æ®åºäºå¡ |
| | | /// <summary> |
| | | /// 车轮æ§è¡æ°æ®åºäºå¡ |
| | | /// </summary> |
| | | /// <param name="stock">åºå对象</param> |
| | | /// <param name="taskHty">åå²ä»»å¡å¯¹è±¡</param> |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region å¶å¨çæ§è¡æ°æ®åºäºå¡ |
| | | /// <summary> |
| | | /// å¶å¨çæ§è¡æ°æ®åºäºå¡ |
| | | /// </summary> |
| | | /// <param name="stock">åºå对象</param> |
| | | /// <param name="taskHty">åå²ä»»å¡å¯¹è±¡</param> |
| | | /// <param name="taskId">ä»»å¡ID</param> |
| | | /// <returns></returns> |
| | | private async Task<bool> ZDPExecuteTransaction(Dt_ZdpStock stock, Dt_Task_Hty taskHty, DtLocationInfo locationInfo, int taskId, Dt_InZdp_mes inZdp_Mes = null) |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | try |
| | | { |
| | | var isUpdateStock = false; |
| | | var isDeleteWheelsMes = false; |
| | | |
| | | |
| | | // æ·»å åºå |
| | | isUpdateStock = _ZdpStockRepository.AddData(stock) > 0; |
| | | if (inZdp_Mes != null) |
| | | { |
| | | isDeleteWheelsMes = _InZdp_MesRepository.DeleteData(inZdp_Mes); |
| | | |
| | | var InZdp_mes_hty = inZdp_Mes.Adapt<Dt_InZdp_mes_hty>(); |
| | | |
| | | InZdp_mes_hty.Zdp_CurrentStatue = "2"; |
| | | InZdp_mes_hty.FinishDate = DateTime.Now; |
| | | InZdp_mes_hty.OperateType = (int)OperateTypeEnum.èªå¨å®æ; |
| | | |
| | | _InZdp_Mes_HtyRepository.AddData(InZdp_mes_hty); |
| | | } |
| | | |
| | | |
| | | // æ·»å åå²ä»»å¡ |
| | | var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0; |
| | | |
| | | // ä¿®æ¹ç§»åºåè´§ä½ç¶æ |
| | | var isUpdateLoc = _locationRepository.UpdateData(locationInfo); |
| | | |
| | | // å é¤ä»»å¡æ°æ® |
| | | var isTaskDelete = await Delete(taskId); |
| | | |
| | | // æäº¤æåæ»äºå¡ |
| | | if (isUpdateStock && isTaskHtyAdd && isTaskDelete && isUpdateLoc && isDeleteWheelsMes) |
| | | { |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "ä»»å¡å®æ", $"äºå¡å¤ç宿,æäº¤äºå¡ãæ·»å åå²ä»»å¡ï¼{isTaskHtyAdd},å é¤ä»»å¡æ°æ®ï¼{isTaskDelete},æ´æ°ææ·»å åºåï¼{isUpdateStock},ä¿®æ¹å
¥åºåè´§ä½ç¶æï¼{isUpdateLoc}"); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "ä»»å¡å®æ", $"æ°æ®å¤ç失败,è¯·æ£æ¥æ°æ®æ¯å¦æ£ç¡®,æ°æ®åæ»ãæ·»å åå²ä»»å¡ï¼{isTaskHtyAdd},å é¤ä»»å¡æ°æ®ï¼{isTaskDelete},æ´æ°åºåï¼{isUpdateStock},ä¿®æ¹å
¥åºåè´§ä½ç¶æï¼{isUpdateLoc}"); |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return false; |
| | | } |
| | | } |
| | | catch (Exception err) |
| | | { |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, $"ä»»å¡å®æ,ç³»ç»å¼å¸¸ï¼å¼å¸¸ä¿¡æ¯ï¼{err.Message}", "æ åæ°"); |
| | | _unitOfWorkManage.RollbackTran(); |
| | | throw; // æåºå¼å¸¸ä»¥ä¾¿å¤é¨æè· |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region ç§»åºä»»å¡äºå¡ |
| | | |
| | | private async Task<bool> ExecuteTransaction(Dt_WheelsStock stock, Dt_Task_Hty taskHty, DtLocationInfo fromLocation, DtLocationInfo toLocation, int taskId) |
| | |
| | | |
| | | #endregion MyRegion |
| | | |
| | | #region å¶å¨çç§»åºä»»å¡äºå¡ |
| | | |
| | | private async Task<bool> ZdpExecuteTransaction(Dt_ZdpStock stock, Dt_Task_Hty taskHty, DtLocationInfo fromLocation, DtLocationInfo toLocation, int taskId) |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | try |
| | | { |
| | | var isUpdateStock = _ZdpStockRepository.UpdateData(stock); |
| | | |
| | | // æ·»å åå²ä»»å¡ |
| | | var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0; |
| | | |
| | | // ä¿®æ¹ç§»åºåè´§ä½ç¶æ |
| | | var isUpdateLocF = _locationRepository.UpdateData(fromLocation); |
| | | var isUpdateLocT = _locationRepository.UpdateData(toLocation); |
| | | |
| | | // å é¤ä»»å¡æ°æ® |
| | | var isTaskDelete = await Delete(taskId); |
| | | |
| | | // æäº¤æåæ»äºå¡ |
| | | if (isUpdateStock && isTaskHtyAdd && isTaskDelete && isUpdateLocF && isUpdateLocT) |
| | | { |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "ä»»å¡å®æ", $"äºå¡å¤ç宿,æäº¤äºå¡ãæ·»å åå²ä»»å¡ï¼{isTaskHtyAdd},å é¤ä»»å¡æ°æ®ï¼{isTaskDelete},æ´æ°ææ·»å åºåï¼{isUpdateStock},ä¿®æ¹ç§»åºåè´§ä½ç¶æï¼{isUpdateLocF}"); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "ä»»å¡å®æ", $"æ°æ®å¤ç失败,è¯·æ£æ¥æ°æ®æ¯å¦æ£ç¡®,æ°æ®åæ»ãæ·»å åå²ä»»å¡ï¼{isTaskHtyAdd},å é¤ä»»å¡æ°æ®ï¼{isTaskDelete},æ´æ°åºåï¼{isUpdateStock},ä¿®æ¹ç§»åºåè´§ä½ç¶æï¼{isUpdateLocF}"); |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return false; |
| | | } |
| | | } |
| | | catch (Exception err) |
| | | { |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, $"ä»»å¡å®æ,ç³»ç»å¼å¸¸ï¼å¼å¸¸ä¿¡æ¯ï¼{err.Message}", "æ åæ°"); |
| | | _unitOfWorkManage.RollbackTran(); |
| | | throw new Exception(err.Message); // æåºå¼å¸¸ä»¥ä¾¿å¤é¨æè· |
| | | } |
| | | } |
| | | |
| | | #endregion MyRegion |
| | | |
| | | #region ä»»å¡è¯·æ±æ¹æ³ |
| | | |
| | | |