33
schangxiang@126.com
2025-05-18 daf2a4075e8ce949cda132de6a03b7ea86597b37
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs
@@ -22,6 +22,8 @@
using System.Collections.Generic;
using CMS.Framework.AspNetCore.Users;
using NPOI.SS.Formula.Functions;
using CMS.Plugin.PipeLineLems.Application.Implements;
using CmsQueryExtensions.Entitys;
namespace CMS.Plugin.PipeLineLems.ProjectService
{
@@ -90,6 +92,8 @@
                { "请求生成打码产品码信号", "请求生成打码产品码信号(描述)" },
                { "请求生成切割产品码信号", "请求生成切割产品码信号(描述)" },
                { "切割进站信号", "切割进站信号(描述)" },
                { "装配完工信号", "装配完工信号(描述)" },
            };
            // 创建通道监听
@@ -256,6 +260,25 @@
                        });
                    }
                }
                if (changed.Name == "装配完工信号")
                {
                    if (changed.New?.Value.SafeString().ToBool() == true)
                    {
                        _ = Task.Run(async () =>
                        {
                            await HanlderFor装配完工信号Async();
                        });
                    }
                    else
                    {
                        _ = Task.Run(async () =>
                        {
                            await HanlderFor完工信号WhenFalseAsync("装配");
                        });
                    }
                }
            }
        }
@@ -326,13 +349,13 @@
                try
                {
                    //根据wms任务号寻找 叫料工单
                    callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo);
                    callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo);
                    if (callMaterialOrder == null) return;//结束
                    //根据原料标识寻找 作业计划
                    var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workPlanList?.Count == 0) return;//结束
                    ////TODO:暂时生成产品ID
@@ -377,6 +400,7 @@
                            pipeSpecCode3 = new_workPlanList[i].PipeSpecCode;
                        }
                    }
                    Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?>
                    {
                        { "打码工件1",code1},
@@ -388,7 +412,8 @@
                        { "打码管段编码", new_workPlanList.First().PipeSpecCode },
                        { "打码管段名称", new_workPlanList.First().PipeSectionName },
                        { "打码原料管型号", new_workPlanList.First().MaterialMode },
                        { "打码原料标识", new_workPlanList.First().DataIdentifier }
                        { "打码原料标识", new_workPlanList.First().DataIdentifier },
                        { "打码原料管批次", callMaterialOrder.MaterialBatch },//批次
                    };
                    _variableService.WriteValueAsync(keyValuePairs);
@@ -444,13 +469,13 @@
                try
                {
                    //根据wms任务号寻找 叫料工单
                    callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo);
                    callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo);
                    if (callMaterialOrder == null) return;//结束
                    //根据原料标识寻找 作业计划
                    var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workPlanList?.Count == 0) return;//结束
                    //TODO:暂时生成产品ID
@@ -597,13 +622,13 @@
                try
                {
                    //根据wms任务号寻找 叫料工单
                    callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo);
                    callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo);
                    if (callMaterialOrder == null) return;//结束
                    //根据原料标识寻找 作业计划
                    var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workPlanList?.Count == 0) return;//结束
                    ////TODO:暂时生成产品ID
@@ -659,7 +684,8 @@
                        { "切割管段编码", new_workPlanList.First().PipeSpecCode },
                        { "切割管段名称", new_workPlanList.First().PipeSectionName },
                        { "切割原料管型号", new_workPlanList.First().MaterialMode },
                        { "切割原料标识", new_workPlanList.First().DataIdentifier }
                        { "切割原料标识", new_workPlanList.First().DataIdentifier },
                        { "切割原料管批次", callMaterialOrder.MaterialBatch },//批次
                    };
                    _variableService.WriteValueAsync(keyValuePairs);
@@ -715,13 +741,13 @@
                try
                {
                    //根据wms任务号寻找 叫料工单
                    callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo);
                    callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo);
                    if (callMaterialOrder == null) return;//结束
                    //根据原料标识寻找 作业计划
                    var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
                    var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
                    if (workPlanList?.Count == 0) return;//结束
                    //TODO:暂时生成产品ID
@@ -775,5 +801,67 @@
                    };
            var ret = _variableService.WriteValueAsync(keyValuePairs_productID);
        }
        /// <summary>
        /// 装配完工信号=true时
        /// </summary>
        /// <returns></returns>
        private async Task HanlderFor装配完工信号Async()
        {
            var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
            var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
            var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
            var pipeSpecCode = await _variableService.ReadValueAsync("装配管段编码");
            if (string.IsNullOrEmpty(pipeSpecCode?.Content?.Value.SafeString().ToString()))
            {
            }
            else
            {
                var myPipeSpecCode = pipeSpecCode.Content.Value.SafeString().ToString();
                CallMaterialOrder callMaterialOrder = null;
                try
                {
                    var sharedService = _serviceProvider.GetRequiredService<SharedService>();
                    var userName = await _variableService.ReadValueAsync("装配人");
                    MyCurrentUser myCurrentUser = new MyCurrentUser()
                    {
                        UserAccount = userName.Content.Value.SafeString().ToString()
                    };
                    sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName="装配工序" }, myCurrentUser);
                }
                catch (Exception)
                {
                }
            }
        }
        /// <summary>
        /// 完工信号=false时
        /// </summary>
        /// <returns></returns>
        private async Task HanlderFor完工信号WhenFalseAsync(string processName)
        {
            try
            {
                var sharedService = _serviceProvider.GetRequiredService<SharedService>();
                await sharedService.CompleteHandleOutStoreFinish(_serviceProvider, processName, false);
            }
            catch (Exception)
            {
            }
        }
    }
}