22
schangxiang@126.com
2025-05-19 9a8168790e0d6b8601b0f7f5557976358677eeb1
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -31,6 +31,7 @@
using CMS.Plugin.HIAWms.Abstractions;
using Newtonsoft.Json;
using CmsQueryExtensions;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialStocks;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
@@ -49,11 +50,20 @@
    /// <returns></returns>
    public async Task<MesOrderResponse> CommonPick(IServiceProvider _serviceProvider, PickInput input, MyCurrentUser myCurrentUser)
    {
        if (string.IsNullOrEmpty(input.PipeSpecCode))
        {
            throw new UserFriendlyException("请输入管段编码");
        };
        if (string.IsNullOrEmpty(input.ContinerNo))
        {
            throw new UserFriendlyException("请输入托盘号");
        };
        //1、记录分拣记录表
        //2、更新作业计划表的状态 =已分拣
        //3、写入 分拣变量
        //4、写入追溯报表
        //5、物料组盘
        VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>();
        var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>();
@@ -104,8 +114,47 @@
        var firstWorkPlans = await workPlanAppService.GetListByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode);
        var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode);
        var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == firstWorkPlan.DataIdentifier);
        //TODO:这里调用wms的叫料接口
        try
        {
            WmsMaterialStockCreateDto param = new WmsMaterialStockCreateDto()
            {
                ContainerNo = input.ContinerNo,
                MaterialModel = firstWorkPlan.MaterialMode,
                PlaceNo = input.PlaceNo,
                StockNumber = 1,
                MaterialBatch = callMaterialOrder.MaterialBatch,
                RedundantField1 = firstWorkPlan.ProcessRouteNumber //扩展字段显示 工艺流向编号
            };
            string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/";
            string url = baseUrl + "LMesOperate/LMesPick";
            string json = JsonConvert.SerializeObject(param);
            var result = HttpApiRequest.HttpPost(url, json);
            var res = JsonConvert.DeserializeObject<CmsApiResponse<WmsMaterialStockDto>>(result);
            if (res.Code == 200)
            {
                var retData = res.Data;
                //callMaterialOrder.MaterialBatch = retData[0].MaterialBatch;
                //callMaterialOrder.WmsTaskNo = retData[0].TaskNo;
                //callMaterialOrder.WmsRetResult = res.Message;
            }
            else
            {
                throw new UserFriendlyException(res.Message);
            }
        }
        catch (Exception)
        {
            throw;
        }
        var rawPipe_DataIdentifier = await materialProvider.FindByNameAsync("原料管标识");
        var rawPipe_MaterialMode = await materialProvider.FindByNameAsync("原料管型号");
@@ -1013,6 +1062,95 @@
    }
    /// <summary>
    /// 分拣时获取生产计划和分配区域
    /// </summary>
    /// <param name="input"></param>
    /// <param name="_serviceProvider"></param>
    /// <param name="myCurrentUser"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task<CmsApiResponse<PickOutput>> GetPickRetAsync(GetWorkPlanInput input, IServiceProvider _serviceProvider, MyCurrentUser myCurrentUser)
    {
        var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
        var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
        var _workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
        var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
        // 查找数据
        WorkPlanDto workPlanDto = await _workPlanAppService.FindSingleByFilterAsync(input);
        //TODO:这里调用wms的叫料接口
        try
        {
            List<LMesCallMaterialInput> param = new List<LMesCallMaterialInput>() {
             new LMesCallMaterialInput(){
             }
        };
            /*
            string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/";
            string url = baseUrl + "lMesOperate/LMesCallMaterial";
            string json = JsonConvert.SerializeObject(param);
            var result = HttpApiRequest.HttpPost(url, json);
            var res = JsonConvert.DeserializeObject<CmsApiResponse<List<MyCallMaterialOutput>>>(result);
            if (res.Code == 200)
            {
                var retData = res.Data;
                //callMaterialOrder.MaterialBatch = retData[0].MaterialBatch;
                //callMaterialOrder.WmsTaskNo = retData[0].TaskNo;
                //callMaterialOrder.WmsRetResult = res.Message;
                var data = new PickOutput()
                {
                    WorkPlan = workPlanDto,
                    PlaceNo = "",//待赋值
                    ContinerNo = ""//待赋值
                };
                var response = new CmsApiResponse<PickOutput>
                {
                    Code = 200,
                    Data = data,
                    Message = "处理成功",
                };
                return response;
            }
            else
            {
                throw new UserFriendlyException(res.Message);
            }
            //*/
            //模拟
            var data = new PickOutput()
            {
                WorkPlan = workPlanDto,
                PlaceNo = "",//待赋值
                ContinerNo = ""//待赋值
            };
            var response = new CmsApiResponse<PickOutput>
            {
                Code = 200,
                Data = data,
                Message = "处理成功",
            };
            return response;
        }
        catch (Exception)
        {
            throw;
        }
    }
    /// <summary>
    /// 生成随机的WmsTaskNo
    /// </summary>