| | |
| | | using WIDESEA_Common.LocationEnum; |
| | | using MailKit.Search; |
| | | using WIDESEA_External.Model; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | |
| | | namespace WIDESEA_TaskInfoService |
| | | { |
| | |
| | | (List<Dt_StockInfo>, Dt_OutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetail, stockSelectViews); |
| | | if (result.Item1 != null && result.Item1.Count > 0) |
| | | { |
| | | Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.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 => |
| | |
| | | { |
| | | 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_OutboundOrderDetail>? orderDetails = null; |
| | | List<Dt_OutStockLockInfo>? outStockLockInfos = null; |
| | |
| | | (List<Dt_StockInfo>, List<Dt_OutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails); |
| | | if (result.Item1 != null && result.Item1.Count > 0) |
| | | { |
| | | tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound); |
| | | Dt_OutboundOrder outboundOrder =_outboundService.OutboundOrderService.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(); |
| | |
| | | { |
| | | try |
| | | { |
| | | #region MyRegion |
| | | Dt_OutboundOrderDetail OrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == orderDetailId); |
| | | |
| | | if (OrderDetail == null) |
| | |
| | | _stockRepository.StockInfoDetailRepository.UpdateData(upstockDetails); |
| | | _stockRepository.StockInfoDetailRepository.DeleteData(destockDetails); |
| | | _unitOfWorkManage.CommitTran(); |
| | | #endregion |
| | | |
| | | #region 䏿¥ERP |
| | | List<ERPPickModel> eRPPickModels = new List<ERPPickModel>(); |
| | | outStockLockInfos.ForEach(x => |
| | | if (outboundOrder.OrderStatus == OutOrderStatusEnum.åºåºå®æ.ObjToInt() && outboundOrder.OrderType==OutOrderTypeEnum.Issue.ObjToInt()) |
| | | { |
| | | ERPPickItemModel pickItemModel = new ERPPickItemModel() |
| | | { |
| | | Lotno = x.BatchNo, |
| | | Qty = x.AssignQuantity.ToString(), |
| | | Location = warehouse.WarehouseCode |
| | | }; |
| | | ERPPickModel pickModel = new ERPPickModel() |
| | | { |
| | | Rowindex = OrderDetail.RowNo, |
| | | Material = OrderDetail.MaterielCode, |
| | | Qty = pickItemModel.Qty, |
| | | Dataitem = new List<ERPPickItemModel> { pickItemModel } |
| | | }; |
| | | eRPPickModels.Add(pickModel); |
| | | }); |
| | | ERPIssueItemModel issueItemModel = new ERPIssueItemModel() |
| | | { |
| | | Pickcode = outboundOrder.UpperOrderNo, |
| | | PickList = eRPPickModels |
| | | }; |
| | | ERPIssueModel issueModel = new ERPIssueModel() |
| | | { |
| | | UniqueTag = outboundOrder.Id.ToString(), |
| | | Code = outboundOrder.OrderNo, |
| | | WarehouseCode = warehouse.WarehouseCode, |
| | | Docremark = "", |
| | | Deptno = outboundOrder.DepartmentCode, |
| | | Deptname = outboundOrder.DepartmentName, |
| | | Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | Createuser = App.User.UserName, |
| | | Issitem = new List<ERPIssueItemModel>() { issueItemModel } |
| | | }; |
| | | _invokeERPService.InvokeOutStandardsApi(issueModel); |
| | | //List<ERPPickModel> eRPPickModels = new List<ERPPickModel>(); |
| | | //outStockLockInfos.ForEach(x => |
| | | //{ |
| | | // ERPPickItemModel pickItemModel = new ERPPickItemModel() |
| | | // { |
| | | // Lotno = x.BatchNo, |
| | | // Qty = x.AssignQuantity.ToString(), |
| | | // Location = warehouse.WarehouseCode |
| | | // }; |
| | | // ERPPickModel pickModel = new ERPPickModel() |
| | | // { |
| | | // Rowindex = OrderDetail.RowNo, |
| | | // Material = OrderDetail.MaterielCode, |
| | | // Qty = pickItemModel.Qty, |
| | | // Dataitem = new List<ERPPickItemModel> { pickItemModel } |
| | | // }; |
| | | // eRPPickModels.Add(pickModel); |
| | | //}); |
| | | //ERPIssueItemModel issueItemModel = new ERPIssueItemModel() |
| | | //{ |
| | | // Pickcode = outboundOrder.UpperOrderNo, |
| | | // PickList = eRPPickModels |
| | | //}; |
| | | //ERPIssueModel issueModel = new ERPIssueModel() |
| | | //{ |
| | | // UniqueTag = outboundOrder.Id.ToString(), |
| | | // Code = _outboundService.OutboundOrderService.CreateCodeByRule(nameof(RuleCodeEnum.FLCodeRule)), |
| | | // WarehouseCode = warehouse.WarehouseCode, |
| | | // Docremark = "", |
| | | // Deptno = outboundOrder.DepartmentCode, |
| | | // Deptname = outboundOrder.DepartmentName, |
| | | // Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | // Createuser = App.User.UserName, |
| | | // Issitem = new List<ERPIssueItemModel>() { issueItemModel } |
| | | //}; |
| | | _invokeERPService.InvokeOutStandardsApi(_outboundService.OutboundOrderService.GetERPIssueModel(outboundOrder, warehouse.WarehouseCode)); |
| | | } |
| | | #endregion |
| | | |
| | | return WebResponseContent.Instance.OK(); |
| | |
| | | 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.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks); |
| | | |
| | | if (!content.Status) |
| | |
| | | /// </summary> |
| | | /// <param name="keys">åºåºåæç»ä¸»é®</param> |
| | | /// <returns></returns> |
| | | public WebResponseContent GenerateOutboundTask(int[] keys) |
| | | public WebResponseContent GenerateOutboundTasks(int[] keys) |
| | | { |
| | | try |
| | | { |
| | |
| | | { |
| | | List<int> keys = _outboundService.OutboundOrderDetailService.Repository.QueryData(x => x.Id, x => x.OrderId == outboundId); |
| | | |
| | | return GenerateOutboundTask(keys.ToArray()); |
| | | return GenerateOutboundTasks(keys.ToArray()); |
| | | } |
| | | catch (Exception ex) |
| | | { |