| | |
| | | using static WIDESEA_ITaskInfoService.ITaskService; |
| | | using MailKit.Search; |
| | | using WIDESEA_Common.Log; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; |
| | | |
| | | namespace WIDESEA_TaskInfoService |
| | | { |
| | |
| | | Creater = "WMS", |
| | | CreateDate = DateTime.Now, |
| | | TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | MaterialType = dt_StockInfo.MaterialType |
| | | }; |
| | | _unitOfWorkManage.BeginTran(); |
| | | if (locationInfos.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | |
| | | { |
| | | RoadwayNo = "2"; |
| | | } |
| | | Dt_LocationInfo locationInfos = _basicService.LocationInfoService.Repository.QueryFirst(x => x.RoadwayNo == RoadwayNo && x.LocationStatus == LocationStatusEnum.Pallet.ObjToInt()); |
| | | Dt_LocationInfo locationInfos = _basicService.LocationInfoService.Repository.QueryFirst(x => x.RoadwayNo == RoadwayNo && x.EnableStatus != (int)EnableStatusEnum.Disable && x.Depth==1 && x.LocationStatus == LocationStatusEnum.Pallet.ObjToInt()); |
| | | if(locationInfos == null) |
| | | { |
| | | locationInfos = _basicService.LocationInfoService.Repository.QueryFirst(x => x.RoadwayNo == RoadwayNo && x.Depth == 2 && x.EnableStatus != (int)EnableStatusEnum.Disable && x.LocationStatus == LocationStatusEnum.Pallet.ObjToInt()); |
| | | } |
| | | |
| | | if (locationInfos != null) |
| | | { |
| | | Dt_StockInfo dt_StockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == locationInfos.LocationCode); |
| | |
| | | Depth = locationInfos.Depth, |
| | | CreateDate = DateTime.Now, |
| | | PalletCodequantity = (int)dt_StockInfo.Materialweight, |
| | | MaterialType = dt_StockInfo.MaterialType |
| | | }; |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | |
| | | CreateDate = DateTime.Now, |
| | | PalletCodequantity = (int)dt_StockInfo[i].Materialweight, |
| | | PLCTo = generate.TargetAddress == "R01-002-041-011-01" ? 1 : 2, |
| | | MaterialType = dt_StockInfo[i].MaterialType |
| | | }; |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | |
| | | public WebResponseContent ManualOutbound(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | |
| | | try |
| | | { |
| | | List<Dt_StockInfo> dtstockt = new List<Dt_StockInfo>(); |
| | |
| | | for (int i = 0; i < saveModel.DelKeys.Count; i++) |
| | | { |
| | | Dt_StockInfo stockt = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == saveModel.DelKeys[i].ToString()); |
| | | if (stockt.StockStatus == (int)StockStatusEmun.å·²å
¥åº) |
| | | if (stockt.StockStatus == (int)StockStatusEmun.å·²å
¥åº && (stockt.Wlstatus == (int)InventoryMaterialStatus.åæ ¼ || stockt.Wlstatus == (int)InventoryMaterialStatus.è¿å·¥)) |
| | | { |
| | | Dt_StockInfoDetail stocktdetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockt.Id); |
| | | stockt.StockStatus = (int)StockStatusEmun.åºåºéå®; |
| | | if (stockt.MaterialType != (int)InventoryMaterialType.空æ) |
| | | if(stockt.MaterialType != (int)InventoryMaterialType.åææ) |
| | | { |
| | | stocktdetail.Status = (int)StockStatusEmun.åºåºéå®; |
| | | } |
| | | Dt_LocationInfo locationinfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockt.LocationCode); |
| | | if (locationinfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | { |
| | | locationinfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); |
| | | } |
| | | else if (locationinfo.LocationStatus == LocationStatusEnum.Pallet.ObjToInt()) |
| | | { |
| | | locationinfo.LocationStatus = LocationStatusEnum.PalletLock.ObjToInt(); |
| | | } |
| | | string LocationName = "R01-002-044-001-01"; |
| | | if (stockt.MaterialType == (int)InventoryMaterialType.åææ) |
| | | { |
| | | Dt_StockInfoDetail stocktdetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockt.Id); |
| | | stockt.StockStatus = (int)StockStatusEmun.åºåºéå®; |
| | | if (stockt.MaterialType != (int)InventoryMaterialType.空æ) |
| | | { |
| | | stocktdetail.Status = (int)StockStatusEmun.åºåºéå®; |
| | | } |
| | | Dt_LocationInfo locationinfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockt.LocationCode); |
| | | if (locationinfo.RoadwayNo == "1") |
| | | { |
| | | LocationName = "R01-002-041-011-01"; |
| | | if (locationinfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | { |
| | | locationinfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); |
| | | } |
| | | else if (locationinfo.LocationStatus == LocationStatusEnum.Pallet.ObjToInt()) |
| | | { |
| | | locationinfo.LocationStatus = LocationStatusEnum.PalletLock.ObjToInt(); |
| | | } |
| | | string LocationName = "R01-002-044-001-01"; |
| | | if (stockt.MaterialType == (int)InventoryMaterialType.空æ) |
| | | { |
| | | LocationName = "R01-002-043-001-01"; |
| | | } |
| | | Dt_LocationInfo newTargetAddress; |
| | | newTargetAddress = _basicService.LocationInfoService.GetLocationplatform(LocationName); |
| | | Dt_Task dt_Task = new() |
| | | { |
| | | PalletCode = stockt.PalletCode, |
| | | TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | Roadway = newTargetAddress.RoadwayNo, |
| | | TaskType = TaskTypeEnum.Outbound.ObjToInt(), |
| | | TaskStatus = InTaskStatusEnum.InNew.ObjToInt(), |
| | | SourceAddress = locationinfo.LocationCode, |
| | | TargetAddress = newTargetAddress.LocationCode, |
| | | CurrentAddress = locationinfo.LocationCode, |
| | | NextAddress = newTargetAddress.LocationCode, |
| | | Grade = 1, |
| | | Creater = "WMS", |
| | | Depth = locationinfo.Depth, |
| | | CreateDate = DateTime.Now, |
| | | MaterialType= stockt.MaterialType |
| | | }; |
| | | dtstockt.Add(stockt); |
| | | locations.Add(locationinfo); |
| | | taskdt.Add(dt_Task); |
| | | if (stockt.MaterialType != (int)InventoryMaterialType.空æ) |
| | | { |
| | | dtstocktdetail.Add(stocktdetail); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LocationName = "R02-002-027-011-01"; |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼åªå¯åºåº1å··éçæçåæåï¼åºåºæ¡ç ï¼{saveModel.DelKeys[i].ToString()}"); |
| | | } |
| | | } |
| | | Dt_LocationInfo newTargetAddress; |
| | | newTargetAddress = _basicService.LocationInfoService.GetLocationplatform(LocationName); |
| | | Dt_Task dt_Task = new() |
| | | else |
| | | { |
| | | PalletCode = stockt.PalletCode, |
| | | TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | Roadway = newTargetAddress.RoadwayNo, |
| | | TaskType = TaskTypeEnum.Outbound.ObjToInt(), |
| | | TaskStatus = InTaskStatusEnum.InNew.ObjToInt(), |
| | | SourceAddress = locationinfo.LocationCode, |
| | | TargetAddress = newTargetAddress.LocationCode, |
| | | CurrentAddress = locationinfo.LocationCode, |
| | | NextAddress = newTargetAddress.LocationCode, |
| | | Grade = 1, |
| | | Creater = "WMS", |
| | | Depth = locationinfo.Depth, |
| | | CreateDate = DateTime.Now, |
| | | }; |
| | | dtstockt.Add(stockt); |
| | | locations.Add(locationinfo); |
| | | taskdt.Add(dt_Task); |
| | | if (stockt.MaterialType != (int)InventoryMaterialType.空æ) |
| | | { |
| | | dtstocktdetail.Add(stocktdetail); |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼è¯·ä¸è¦éæ©åææåºåºï¼åºåºæ¡ç ï¼{saveModel.DelKeys[i].ToString()}"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼è¯¥åºåä¿¡æ¯ä¸å¯è¿è¡åºåº"); |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼è¯·éæ©å·²å
¥åºä¸åæ ¼çç©æåºåºï¼ï¼ï¼ï¼åºåºæ¡ç ï¼{saveModel.DelKeys[i].ToString()}"); |
| | | } |
| | | |
| | | } |
| | | var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSTask, taskdt, "ä¸åä»»å¡å
¥åº"); |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockService.StockInfoService.Repository.UpdateData(dtstockt); |
| | | _stockService.StockInfoDetailService.Repository.UpdateData(dtstocktdetail); |
| | | _basicService.LocationInfoService.Repository.UpdateData(locations); |
| | | BaseDal.AddData(taskdt); |
| | | |
| | | if (dtstockt.Count > 0) |
| | | { |
| | | _stockService.StockInfoService.Repository.UpdateData(dtstockt); |
| | | _stockService.StockInfoDetailService.Repository.UpdateData(dtstocktdetail); |
| | | _basicService.LocationInfoService.Repository.UpdateData(locations); |
| | | BaseDal.AddData(taskdt); |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | content = WebResponseContent.Instance.OK(); |
| | | return content; |
| | |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | |
| | | public WebResponseContent ManualOutbound2(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_StockInfo> dtstockt = new List<Dt_StockInfo>(); |
| | | List<Dt_LocationInfo> locations = new List<Dt_LocationInfo>(); |
| | | List<Dt_Task> taskdt = new List<Dt_Task>(); |
| | | List<Dt_StockInfoDetail> dtstocktdetail = new List<Dt_StockInfoDetail>(); |
| | | |
| | | |
| | | List<Dt_StockInfo> stocktData= _stockService.StockInfoService.Repository.QueryData(x=>x.StockStatus== (int)StockStatusEmun.å·²å
¥åº && x.MaterialType == (int)InventoryMaterialType.åææ); |
| | | List<Dt_LocationInfo> locationinfoData = _basicService.LocationInfoService.Repository.QueryData(x =>x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()); |
| | | List<Dt_StockInfoDetail> StockInfoDetailData = _stockService.StockInfoDetailService.Repository.QueryData(x => x.Status == (int)StockStatusEmun.å·²å
¥åº); |
| | | |
| | | |
| | | string json = saveModel.DelKeys[0].ToString(); |
| | | List<string> palletCodes = JsonConvert.DeserializeObject<List<string>>(json); |
| | | |
| | | foreach (var palletCode in palletCodes) |
| | | { |
| | | Dt_StockInfo stockt = stocktData.FirstOrDefault(x => x.PalletCode == palletCode); |
| | | if (stockt !=null) |
| | | { |
| | | if (stockt.StockStatus == (int)StockStatusEmun.å·²å
¥åº && (stockt.Wlstatus == (int)InventoryMaterialStatus.åæ ¼ || stockt.Wlstatus == (int)InventoryMaterialStatus.éè´§ || stockt.Wlstatus == (int)InventoryMaterialStatus.ç¹é)) |
| | | { |
| | | Dt_StockInfoDetail stocktdetail = StockInfoDetailData.FirstOrDefault(x => x.StockId == stockt.Id); |
| | | if(stocktdetail != null) |
| | | { |
| | | Dt_LocationInfo locationinfo = locationinfoData.FirstOrDefault(x => x.LocationCode == stockt.LocationCode); |
| | | if(locationinfo != null) |
| | | { |
| | | stockt.StockStatus = (int)StockStatusEmun.åºåºéå®; |
| | | if (locationinfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | { |
| | | locationinfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); |
| | | } |
| | | |
| | | string TargetAdd = ""; |
| | | if (saveModel.DelKeys[1].ToString()=="20") |
| | | { |
| | | TargetAdd = "R02-001-010-001-02"; |
| | | }else if(saveModel.DelKeys[1].ToString() == "30") |
| | | { |
| | | TargetAdd = "R02-001-011-001-02"; |
| | | } |
| | | else |
| | | { |
| | | TargetAdd = locationinfo.RoadwayNo == "2" ? "R02-002-027-011-01" : "R01-002-041-011-01"; |
| | | } |
| | | |
| | | |
| | | Dt_Task dt_Task = new() |
| | | { |
| | | PalletCode = stockt.PalletCode, |
| | | TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), |
| | | Roadway = locationinfo.RoadwayNo, |
| | | TaskType = TaskTypeEnum.Outbound.ObjToInt(), |
| | | TaskStatus = InTaskStatusEnum.InNew.ObjToInt(), |
| | | SourceAddress = locationinfo.LocationCode, |
| | | TargetAddress = TargetAdd, |
| | | CurrentAddress = locationinfo.LocationCode, |
| | | NextAddress = TargetAdd, |
| | | Grade = 1, |
| | | Creater = "WMS", |
| | | Depth = locationinfo.Depth, |
| | | CreateDate = DateTime.Now, |
| | | PLCTo = int.Parse(saveModel.DelKeys[1].ToString()), |
| | | MaterialType=stockt.MaterialType |
| | | }; |
| | | dtstockt.Add(stockt); |
| | | locations.Add(locationinfo); |
| | | taskdt.Add(dt_Task); |
| | | dtstocktdetail.Add(stocktdetail); |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼æªæ¾å°å¯¹åºçåºä½ä¿¡æ¯ï¼è¯·æ ¸å¯¹ï¼ï¼ï¼ï¼åºåºæ¡ç ï¼{palletCode}"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼æªæ¾å°å¯¹åºçåºå详æ
ä¿¡æ¯ï¼è¯·æ ¸å¯¹ï¼ï¼ï¼ï¼åºåºæ¡ç ï¼{palletCode}"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼è¯·éæ©å·²å
¥åºä¸ï¼åæ ¼ï¼ç¹éï¼éè´§ï¼çç©æåºåºï¼ï¼ï¼ï¼åºåºæ¡ç ï¼{palletCode}"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼æªæ¾å°å¯¹åºæ¡ç çåºåä¿¡æ¯ï¼åºåºæ¡ç ï¼{palletCode}"); |
| | | |
| | | } |
| | | } |
| | | //var responses = HttpHelper.Post<WebResponseContent>(ReceiveWMSTask, taskdt, "ä¸åä»»å¡å
¥åº"); |
| | | _unitOfWorkManage.BeginTran(); |
| | | if(dtstockt.Count > 0) |
| | | { |
| | | _stockService.StockInfoService.Repository.UpdateData(dtstockt); |
| | | _stockService.StockInfoDetailService.Repository.UpdateData(dtstocktdetail); |
| | | _basicService.LocationInfoService.Repository.UpdateData(locations); |
| | | BaseDal.AddData(taskdt); |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | content = WebResponseContent.Instance.OK($"åºåºæåï¼åºåºæ»æ°ï¼{palletCodes.Count}ï¼æåæ°éï¼{dtstockt.Count}"); |
| | | return content; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼æ¥éä¿¡æ¯ï¼{ex.Message}"); |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent ManualOutbound3(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_StockInfo> dtstockt = new List<Dt_StockInfo>(); |
| | | |
| | | |
| | | List<Dt_StockInfo> stocktData = _stockService.StockInfoService.Repository.QueryData(x => x.StockStatus == (int)StockStatusEmun.å·²å
¥åº); |
| | | string json = saveModel.DelKeys[0].ToString(); |
| | | List<int> palletCodes = JsonConvert.DeserializeObject<List<int>>(json); |
| | | |
| | | foreach (int pallid in palletCodes) |
| | | { |
| | | Dt_StockInfo stockt = stocktData.FirstOrDefault(x => x.Id == pallid); |
| | | if (stockt != null) |
| | | { |
| | | |
| | | stockt.Wlstatus = int.Parse(saveModel.DelKeys[1].ToString()); |
| | | dtstockt.Add(stockt); |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼æªæ¾å°å¯¹åºçåºåä¿¡æ¯ï¼åºåç¼å·ï¼{pallid}"); |
| | | |
| | | } |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | if (dtstockt.Count > 0) |
| | | { |
| | | _stockService.StockInfoService.Repository.UpdateData(dtstockt); |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | content = WebResponseContent.Instance.OK($"ä¿®æ¹æå"); |
| | | return content; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content = WebResponseContent.Instance.Error($"åºåºå¤±è´¥ï¼æ¥éä¿¡æ¯ï¼{ex.Message}"); |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | public class PalletCodeList |
| | | { |
| | | public string PalletCode { get; set; } |
| | | } |
| | | |
| | | |
| | | public (Dt_Task?, Dt_LocationInfo?) AddRelocationTask(Dt_LocationInfo location, Dt_StockInfo stockInfo, Dt_Task task) |
| | | { |
| | |
| | | else if(task.TaskType == (int)TaskTypeEnum.Inbound || task.TaskType == (int)TaskTypeEnum.PalletInbound) |
| | | { |
| | | //å¤çåºåºçé»è¾ |
| | | Dt_LocationInfo locationinfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress); |
| | | Dt_LocationInfo locationinfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); |
| | | if (locationinfo.LocationStatus == LocationStatusEnum.Lock.ObjToInt() || locationinfo.LocationStatus == LocationStatusEnum.PalletLock.ObjToInt()) |
| | | { |
| | | locationinfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); |