| | |
| | | using CMS.Plugin.OrderManagement.Abstractions.Models; |
| | | using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.CallMaterialOrder; |
| | | using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; |
| | | using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask; |
| | | using CMS.Plugin.PipeLineLems.Application.Contracts.Services; |
| | | using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder; |
| | | using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrderRecord; |
| | |
| | | using Microsoft.Extensions.DependencyInjection; |
| | | using Newtonsoft.Json; |
| | | using Volo.Abp; |
| | | using Volo.Abp.ObjectMapping; |
| | | using Volo.Abp.Uow; |
| | | |
| | | namespace CMS.Plugin.PipeLineLems.Application.Implements; |
| | |
| | | /// <returns></returns> |
| | | public async Task<MesOrderResponse> CommonPick(IServiceProvider _serviceProvider, PickInput input, MyCurrentUser myCurrentUser) |
| | | { |
| | | if (string.IsNullOrEmpty(input.TaskCode)) |
| | | { |
| | | throw new UserFriendlyException("请输入任务编号"); |
| | | }; |
| | | if (string.IsNullOrEmpty(input.PipeSpecCode)) |
| | | { |
| | | throw new UserFriendlyException("请输入管段编码"); |
| | |
| | | }); |
| | | } |
| | | //物料参数列表 |
| | | var firstWorkPlans = await workPlanAppService.GetListByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode); |
| | | |
| | | var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode); |
| | | var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode); |
| | | var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == firstWorkPlan.DataIdentifier); |
| | | //TODO:这里调用wms的叫料接口 |
| | | try |
| | | { |
| | | //首先判断库存是否存在 |
| | | var dto = await IsExistInWms(input.PipeSpecCode); |
| | | if (dto != null) |
| | | { |
| | | throw new UserFriendlyException($"已经分拣过,库存在库位{dto.PlaceNo},托盘号{dto.ContainerNo}"); |
| | | } |
| | | |
| | | |
| | | WmsMaterialStockCreateDto param = new WmsMaterialStockCreateDto() |
| | | { |
| | | ContainerNo = input.ContinerNo, |
| | |
| | | }; |
| | | return response; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建作业计划 |
| | | /// </summary> |
| | |
| | | /// <param name="workPlanAppService"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="UserFriendlyException"></exception> |
| | | |
| | | public async Task<MesOrderResponse> CommonCreatebyApsAsync(List<WorkPlanInput> input, IServiceProvider _serviceProvider, |
| | | WorkPlanAppService workPlanAppService, |
| | | string userId, string userAccount |
| | |
| | | var orderManager = _serviceProvider.GetRequiredService<IOrderManager>(); |
| | | var productProvider = _serviceProvider.GetRequiredService<IProductProvider>(); |
| | | var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>(); |
| | | |
| | | var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>(); |
| | | |
| | | List<OrderModel> orderModels = new List<OrderModel>(); |
| | | |
| | |
| | | insertObj.CreatorName = userAccount; |
| | | insertObj.Remark = "系统导入"; |
| | | await workPlanAppService.CreateAsync(insertObj); |
| | | |
| | | //增加新增计划任务表数据 【Editby shaocx,2025-05-20】 |
| | | var org_insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj); |
| | | org_insertTaskObj.Son_TaskCode = insertObj.TaskCode; |
| | | await workTaskAppService.CreateAsync(org_insertTaskObj); |
| | | if (insertObj.ProcessName == "切割工序") |
| | | {//新建 分拣工序 |
| | | var insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj); |
| | | insertTaskObj.Son_TaskCode = insertObj.TaskCode + "_1"; |
| | | insertTaskObj.ProcessName = "分拣工序"; |
| | | await workTaskAppService.CreateAsync(insertTaskObj); |
| | | } |
| | | else if (insertObj.ProcessName == "装配工序") |
| | | {//新建 法兰冲码工序(多个) |
| | | //目前暂时搞成一个法兰 |
| | | var insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj); |
| | | insertTaskObj.Son_TaskCode = insertObj.TaskCode + "_1"; |
| | | insertTaskObj.ProcessName = "法兰冲码工序"; |
| | | await workTaskAppService.CreateAsync(insertTaskObj); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | await uow.CompleteAsync(); |
| | | } |
| | | catch (Exception) |
| | | catch (Exception ex) |
| | | { |
| | | await uow.RollbackAsync(); |
| | | throw; |
| | | throw ex; |
| | | } |
| | | finally |
| | | { |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 管段编码是否存在库存中 |
| | | /// </summary> |
| | | /// <param name="pipeSpecCode"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="UserFriendlyException"></exception> |
| | | public async Task<WmsMaterialStockDto> IsExistInWms(string pipeSpecCode) |
| | | { |
| | | //TODO:这里调用wms的库存查询接口 |
| | | try |
| | | { |
| | | GetWmsMaterialStockInput param = new GetWmsMaterialStockInput() |
| | | { |
| | | RedundantField2 = pipeSpecCode, |
| | | RedundantField2_FilterMode = SearchFilterModeEnum.精准查询 |
| | | }; |
| | | |
| | | string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/"; |
| | | string url = baseUrl + "LMesOperate/FindListByFilter"; |
| | | string json = JsonConvert.SerializeObject(param); |
| | | var result = HttpApiRequest.HttpPost(url, json); |
| | | var res = JsonConvert.DeserializeObject<CmsApiResponse<List<WmsMaterialStockDto>>>(result); |
| | | if (res.Code == 200) |
| | | { |
| | | var retData = res.Data as List<WmsMaterialStockDto>; |
| | | if (retData?.Count > 0) |
| | | { |
| | | return retData.First(); |
| | | } |
| | | return null; |
| | | |
| | | } |
| | | else |
| | | { |
| | | throw new UserFriendlyException(res.Message); |
| | | }; |
| | | } |
| | | catch (Exception) |
| | | { |
| | | |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 生成随机的WmsTaskNo |
| | | /// </summary> |
| | | /// <returns>随机生成的任务编号</returns> |