huangxiaoqiang
2025-05-10 a982b8c9f5922684216cbc307a8507a627dde8d0
优化
已修改6个文件
已添加1个文件
375 ■■■■■ 文件已修改
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Changeovers.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/GWTask/RequestInbound.cs
@@ -334,7 +334,7 @@
                    //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, task.NextAddress, childDeviceCode);
                    //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineBarcode, command.ConveyorLineBarcode, childDeviceCode);
                    var GWTask = _taskRepository.QueryData(x => x.Roadway.Contains("GWSC2") && x.SourceAddress == "1039" && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskInStatusEnum.Line_InFinish)).ToList();
                    if (GWTask.Count >= 2 && childDeviceCode == "1039"&&task.Roadway.Contains("GWSC2"))
                    if (GWTask.Count >= 2 && childDeviceCode == "1039" && task.Roadway.Contains("GWSC2"))
                    {
                        ConsoleHelper.WriteErrorLine($"托盘号:【{command.ConveyorLineBarcode}】高温二已存在【{GWTask.Count}】个任务大于2个任务不可下发");
                        return;
@@ -342,18 +342,20 @@
                    ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task);
                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
                    conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, 1, childDeviceCode);
                    _taskService.UpdateTaskStatusToNext(task);
                }
            }
            else
            {
                WriteInfo(conveyorLine.DeviceName, content.Message);
                conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, stationManager.stationNGChildCode, childDeviceCode);
                conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, 1, childDeviceCode);
                ConsoleHelper.WriteErrorLine($"【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】请求点位:【{childDeviceCode}】异常信息【{content.Message}】");
                WriteInfo(conveyorLine.DeviceName, $"【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】请求点位:【{childDeviceCode}】异常信息【{content.Message}】");
                //_taskRepository.AddData(taskGW);
                if (content.Message != "请求过于频繁,请稍后再试")
                {
                    WriteInfo(conveyorLine.DeviceName, content.Message);
                    conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, stationManager.stationNGChildCode, childDeviceCode);
                    conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, 1, childDeviceCode);
                    ConsoleHelper.WriteErrorLine($"【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】请求点位:【{childDeviceCode}】异常信息【{content.Message}】");
                    WriteInfo(conveyorLine.DeviceName, $"【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】请求点位:【{childDeviceCode}】异常信息【{content.Message}】");
                }
            }
        }
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js
@@ -253,6 +253,13 @@
    meta: {
      keepAlive: false
    }
  },{
    path: '/Dt_Changeovers',
    name: 'Dt_Changeovers',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_Changeovers.vue'),
    meta: {
      keepAlive: false
    }
  },
]
export default tables
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_Changeovers.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
<!--
*Author:jxx
 *Contact:283591387@qq.com
 *代码由框架生成,任何更改都可能导致被代码生成器覆盖
 *业务请在@/extension/widesea_wms/basicinfo/Dt_AreaInfo.js此处编写
 -->
<template>
    <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
        :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
        :table="table" :extend="extend">
    </view-grid>
</template>
<script>
import extend from "@/extension/widesea_wms/basicinfo/Dt_Changeovers.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
        const table = ref({
            key: 'id',
            footer: "Foots",
            cnName: '换型信息',
            name: 'basicinfo/Dt_Changeovers',
            url: "/Dt_Changeovers/",
            sortName: "createDate"
        });
        const editFormFields = ref({
            "materielCode": "",
            "productionLine": "",
            "processCode": "",
            "status": "",
            "areaDesc": ""
        });
        const editFormOptions = ref([
        [
                { "title": "物料编号", "field": "materielCode", type: "text" },
                { "title": "生产产线", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
            ],
            [
                { "title": "工序", "field": "processCode",  type: "select", dataKey: "AreaType", data: [] },
                { "title": "状态", "field": "status", "type": "select", dataKey: "EnalbeStatus", data: [] },
            ]
        ]);
        const searchFormFields = ref({});
        const searchFormOptions = ref([
            [
                { "title": "物料编号", "field": "materielCode", type: "text" },
                { "title": "生产产线", "field": "productionLine", type: "select", dataKey: "ProductionLine", data: [] },
            ],
            [
                { "title": "工序", "field": "processCode",  type: "select", dataKey: "AreaType", data: []},
                { "title": "状态", "field": "status", type: "text" },
            ]
        ]);
        const columns = ref([{ field: 'id', title: 'id', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
        { field: 'materielCode', title: '物料编号', type: 'string', sort: true, width: 110, require: true, align: 'left', sort: true },
        { field: 'productionLine', title: '产线', type: 'string', width: 70, align: 'left', bind: { key: "ProductionLine", data: [] }  },
        { field: 'processCode', title: '工序', type: 'string', sort: true, width: 110, align: 'left' ,bind: { key: "AreaType", data: [] }},
        { field: 'status', title: '状态', type: 'int', sort: true, width: 110, align: 'left', bind: { key: "EnalbeStatus", data: [] }  },
        { field: 'creater', title: '创建人', type: 'string', sort: true, width: 110, align: 'left' },
        { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
        { field: 'modifier', title: '修改人', type: 'string', sort: true, width: 100,  align: 'left' },
        { field: 'modifyDate', title: '修改时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },]);
        const detail = ref({
            cnName: "#detailCnName",
            table: "#detailTable",
            columns: [],
            sortName: "",
            key: ""
        });
        return {
            table,
            extend,
            editFormFields,
            editFormOptions,
            searchFormFields,
            searchFormOptions,
            columns,
            detail,
        };
    },
});
</script>
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj
@@ -7,6 +7,10 @@
  </PropertyGroup>
  <ItemGroup>
    <None Include="Dt_ChangeoversService.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\WIDESEA_BusinessesRepository\WIDESEA_BusinessesRepository.csproj" />
    <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
    <ProjectReference Include="..\WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj" />
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs
@@ -47,64 +47,82 @@
    // å°è£…一个用HttpClient发送Post请求的方法有参数
    public static async Task<string> PostAsync(string url, Dictionary<string, object> parameters)
    {
        // åˆ›å»ºä¸€ä¸ªæ–°çš„字典,排除 RequestTime å’Œ SessionId
        var filteredParameters = parameters.Where(p => p.Key != "RequestTime"&& p.Key != "SessionId").ToDictionary(p => p.Key, p => p.Value);
        string requestKey = $"{url}:{JsonConvert.SerializeObject(filteredParameters)}";
        // æ£€æŸ¥è¯·æ±‚次数和时间限制
        if (requestTracker.TryGetValue(requestKey, out var requestInfo))
        try
        {
            if (requestInfo.Count >= 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(3))
            // åˆ›å»ºä¸€ä¸ªæ–°çš„字典,排除 RequestTime å’Œ SessionId
            var filteredParameters = parameters.Where(p => p.Key != "RequestTime" && p.Key != "SessionId").ToDictionary(p => p.Key, p => p.Value);
            string requestKey = $"{url}:{JsonConvert.SerializeObject(filteredParameters)}";
            // æ£€æŸ¥è¯·æ±‚次数和时间限制
            if (requestTracker.TryGetValue(requestKey, out var requestInfo))
            {
                // å¦‚果请求次数超过限制且未超过10分钟,抛出异常
                throw new InvalidOperationException("请求次数已达到限制,请稍后再试。");
                if (requestInfo.Count >= 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(3))
                {
                    // å¦‚果请求次数超过限制且未超过10分钟,抛出异常
                    throw new InvalidOperationException("请求次数已达到限制,请稍后再试。");
                }
            }
            // æ›´æ–°è¯·æ±‚跟踪信息
            if (requestTracker.ContainsKey(requestKey))
            {
                requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now);
            }
            else
            {
                requestTracker[requestKey] = (1, DateTime.Now);
            }
            // è®°å½•请求参数
            LogRequestParameters(parameters, url);
            // åˆ›å»ºHttpClient实例
            using (HttpClient client = new HttpClient())
            {
                // å°†å‚数转换为FormUrlEncodedContent
                string content = JsonConvert.SerializeObject(parameters);
                //client.Timeout = TimeSpan.from;
                var request = new HttpRequestMessage(HttpMethod.Post, url);
                request.Content = new StringContent(content, Encoding.UTF8, "application/json");
                //var content = new FormUrlEncodedContent(ConvertToKeyValuePairs(parameters));
                //// å‘送POST请求并获取响应
                //HttpResponseMessage response = await client.PostAsync(url, content);
                HttpResponseMessage response = await client.SendAsync(request);
                // ç¡®ä¿å“åº”成功
                response.EnsureSuccessStatusCode();
                // è¯»å–响应内容
                string responseBody = await response.Content.ReadAsStringAsync();
                // è®°å½•响应参数
                LogResponseParameters(responseBody, url);
                // è¿”回响应内容
                return responseBody;
            }
        }
        // æ›´æ–°è¯·æ±‚跟踪信息
        if (requestTracker.ContainsKey(requestKey))
        catch (Exception ex)
        {
            requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now);
            LogErrorParameters(ex.StackTrace,ex.Message, url);
            return ex.Message;
        }
        else
        {
            requestTracker[requestKey] = (1, DateTime.Now);
        }
        // è®°å½•请求参数
        LogRequestParameters(parameters, url);
        // åˆ›å»ºHttpClient实例
        using (HttpClient client = new HttpClient())
        {
            // å°†å‚数转换为FormUrlEncodedContent
            string content = JsonConvert.SerializeObject(parameters);
            //client.Timeout = TimeSpan.from;
            var request = new HttpRequestMessage(HttpMethod.Post, url);
            request.Content = new StringContent(content, Encoding.UTF8, "application/json");
            //var content = new FormUrlEncodedContent(ConvertToKeyValuePairs(parameters));
            //// å‘送POST请求并获取响应
            //HttpResponseMessage response = await client.PostAsync(url, content);
            HttpResponseMessage response = await client.SendAsync(request);
            // ç¡®ä¿å“åº”成功
            response.EnsureSuccessStatusCode();
            // è¯»å–响应内容
            string responseBody = await response.Content.ReadAsStringAsync();
            // è®°å½•响应参数
            LogResponseParameters(responseBody, url);
            // è¿”回响应内容
            return responseBody;
        }
    }
    private static void LogErrorParameters(string errordetail, string error, string url = "")
    {
        StringBuilder builder = new StringBuilder();
        builder.Append(Environment.NewLine);
        builder.Append("---------------------------------------------");
        builder.Append(Environment.NewLine);
        builder.Append("url:" + url + "异常详细信息: " + JsonConvert.SerializeObject(error));
        builder.Append("url:" + url + "异常信息: " + JsonConvert.SerializeObject(error));
        LogFactory.GetLog("API接口异常").Error(true, builder);
    }
    private static void LogRequestParameters(Dictionary<string, object> parameters, string url = "")
    {
        StringBuilder builder = new StringBuilder();
@@ -126,6 +144,8 @@
        LogFactory.GetLog("API接口").Info(true, builder);
    }
    private static IEnumerable<KeyValuePair<string, string>> ConvertToKeyValuePairs(Dictionary<string, object> parameters)
    {
        foreach (var kvp in parameters)
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -32,6 +32,7 @@
    private readonly IAgingInOrOutInputService _agingInOrOutInputService; //静置\陈化
    private readonly IDt_StationManagerRepository _stationManagerRepository;
    private readonly ISys_ConfigService _configService;
    private readonly IDt_ChangeoversRepository _dt_ChangeoversRepository;
    private readonly ISimpleCacheService _simpleCacheService;
    public Dt_TaskService(IDt_TaskRepository BaseDal,
@@ -51,7 +52,8 @@
                                IStockInfoDetailRepository stockInfoDetailRepository,
                                IDt_StationManagerRepository stationManagerRepository,
                                ISys_ConfigService configService,
                                ISimpleCacheService simpleCacheService) : base(BaseDal)
                                ISimpleCacheService simpleCacheService,
                                IDt_ChangeoversRepository dt_ChangeoversRepository) : base(BaseDal)
    {
        _unitOfWorkManage = unitOfWorkManage;
        _stockInfoRepository = stockInfoRepository;
@@ -69,6 +71,7 @@
        _stationManagerRepository = stationManagerRepository;
        _configService = configService;
        _simpleCacheService = simpleCacheService;
        _dt_ChangeoversRepository = dt_ChangeoversRepository;
    }
    #region å¤–部接口方法
@@ -754,12 +757,13 @@
            else
            {
                // å¤„理异常电芯情况
                var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
                if (serialNosError.Count > 0)
                {
                    return await HandleErrorCells(input, area, serialNosError);
                }
                #region ç”µèŠ¯åˆ†ç»“æžœå¼‚å¸¸ä¸éœ€è¦æˆ‘ä»¬å¤„ç†
                //var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
                //if (serialNosError.Count > 0)
                //{
                //    return await HandleErrorCells(input, area, serialNosError);
                //}
                #endregion
                var boxing = CreateBoxingInfo(result, input.PalletCode);
                if (boxing == null) return content.Error("组盘失败");
@@ -1013,7 +1017,9 @@
                return null;
            }
            var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
            //var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
            var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList();
            List<string>? materielCodes = outBoundMateriel.Count != 0
                ? outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == area.AreaCode)
                                  .Select(x => x.MaterielCode)
@@ -1066,7 +1072,8 @@
            //    materielCodes = outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == areaCodes[0]).Select(x => x.MaterielCode).ToList();
            //}
            var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
            //var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
            var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList();
            List<string>? materielCodes = outBoundMateriel.Count != 0
                ? outBoundMateriel.Where(x => x.ProductionLine == productionLine && x.ProcessCode == areaCodes[0])
                                  .Select(x => x.MaterielCode)
@@ -1914,32 +1921,32 @@
            }
            #region æ›´æ–°åº“存信息(暂时不需要)
            //if (stock.IsFull)
            //{
            //    // æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„库存信息
            //    var stocks = _stockInfoRepository.QueryData(x => x.AreaCode == stock.AreaCode && x.ProductionLine == stock.ProductionLine && x.SpecialParameterDuration != stock.SpecialParameterDuration);
            if (stock.IsFull)
            {
                // æŸ¥è¯¢ç¬¦åˆæ¡ä»¶çš„库存信息
                var stocks = _stockInfoRepository.QueryData(x => x.AreaCode == stock.AreaCode && x.ProductionLine == stock.ProductionLine && x.SpecialParameterDuration != stock.SpecialParameterDuration);
            //    // æŸ¥è¯¢ä»»åŠ¡ä¿¡æ¯
            //    var tasks = BaseDal.QueryData(x => x.PalletCode != stock.PalletCode && x.ProductionLine == stock.ProductionLine).Select(x => x.PalletCode).ToList();
                // æŸ¥è¯¢ä»»åŠ¡ä¿¡æ¯
                var tasks = BaseDal.QueryData(x => x.PalletCode != stock.PalletCode && x.ProductionLine == stock.ProductionLine).Select(x => x.PalletCode).ToList();
            //    if (stocks != null && stocks.Count > 0)
            //    {
            //        // è¿‡æ»¤å‡ºéœ€è¦æ›´æ–°çš„库存信息
            //        var stocksToUpdate = stocks.Where(item => !tasks.Contains(item.PalletCode)).ToList();
            //        foreach (var item in stocksToUpdate)
            //        {
            //            // æ›´æ–°åº“存信息的特定参数
            //            item.SpecialParameterDuration = stock.SpecialParameterDuration;
            //            item.ParameterInfos = stock.ParameterInfos;
            //            item.OutboundTime = Convert.ToDateTime(item.LinedProcessFeedbackTime == null ? item.CreateDate : item.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(stock.SpecialParameterDuration));
            //        }
            //        if (stocksToUpdate.Count > 0)
            //        {
            //            // å¼‚步更新库存信息
            //            var isUpdates = await _stockInfoRepository.UpdateDataAsync(stocksToUpdate);
            //        }
            //    }
            //}
                if (stocks != null && stocks.Count > 0)
                {
                    // è¿‡æ»¤å‡ºéœ€è¦æ›´æ–°çš„库存信息
                    var stocksToUpdate = stocks.Where(item => !tasks.Contains(item.PalletCode)).ToList();
                    foreach (var item in stocksToUpdate)
                    {
                        // æ›´æ–°åº“存信息的特定参数
                        item.SpecialParameterDuration = stock.SpecialParameterDuration;
                        item.ParameterInfos = stock.ParameterInfos;
                        item.OutboundTime = Convert.ToDateTime(item.LinedProcessFeedbackTime == null ? item.CreateDate : item.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(stock.SpecialParameterDuration));
                    }
                    if (stocksToUpdate.Count > 0)
                    {
                        // å¼‚步更新库存信息
                        var isUpdates = await _stockInfoRepository.UpdateDataAsync(stocksToUpdate);
                    }
                }
            }
            #endregion
            // æ·»åŠ åŽ†å²ä»»åŠ¡
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -237,38 +237,38 @@
            }
            // å¤„理异常电芯情况
            var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
            if (serialNosError.Count > 0)
            {
                if (stationManager.stationType != 3)
                {
                    var taskNG = new Dt_Task
                    {
                        CurrentAddress = input.Position,
                        Grade = 1,
                        Roadway = input.Roadways,
                        TargetAddress = stationManager.stationNGLocation,
                        Dispatchertime = DateTime.Now,
                        MaterialNo = "",
                        NextAddress = stationManager.stationNGChildCode,
                        OrderNo = null,
                        PalletCode = input.PalletCode,
                        SourceAddress = stationManager.stationLocation,
                        TaskState = (int)TaskInStatusEnum.Line_InFinish,
                        TaskType = (int)TaskOutboundTypeEnum.InToOut,
                        TaskNum = await BaseDal.GetTaskNo(),
                        Creater = "System",
                        ProductionLine = result.ProductionLine,
                        ProcessCode = result.ProcessCode,
                    };
                    return taskNG;
                }
                else
                {
                    Console.WriteLine($"站台{stationManager.stationChildCode}MOM返回电芯异常:{result.MOMMessage}");
                    return null;
                }
            }
            //var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
            //if (serialNosError.Count > 0)
            //{
            //    if (stationManager.stationType != 3)
            //    {
            //        var taskNG = new Dt_Task
            //        {
            //            CurrentAddress = input.Position,
            //            Grade = 1,
            //            Roadway = input.Roadways,
            //            TargetAddress = stationManager.stationNGLocation,
            //            Dispatchertime = DateTime.Now,
            //            MaterialNo = "",
            //            NextAddress = stationManager.stationNGChildCode,
            //            OrderNo = null,
            //            PalletCode = input.PalletCode,
            //            SourceAddress = stationManager.stationLocation,
            //            TaskState = (int)TaskInStatusEnum.Line_InFinish,
            //            TaskType = (int)TaskOutboundTypeEnum.InToOut,
            //            TaskNum = await BaseDal.GetTaskNo(),
            //            Creater = "System",
            //            ProductionLine = result.ProductionLine,
            //            ProcessCode = result.ProcessCode,
            //        };
            //        return taskNG;
            //    }
            //    else
            //    {
            //        Console.WriteLine($"站台{stationManager.stationChildCode}MOM返回电芯异常:{result.MOMMessage}");
            //        return null;
            //    }
            //}
            //else
            //{
            //    throw new Exception($"站台{stationManager.stationChildCode}MOM返回电芯异常:{result.MOMMessage}");
@@ -1043,7 +1043,8 @@
                .Where(x => x.DeviceCode.Contains("CWSC")) // è¿‡æ»¤æ¡ä»¶
                .ToList().Select(x => x.DeviceCode).ToList();
            var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
            //var outBoundMateriel = AppSettings.app<OutBoundMateriel>("OutBoundMateriel");
            var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList();
            List<string>? materielCodes = outBoundMateriel.Count != 0
                ? outBoundMateriel.Where(x => x.ProductionLine == station.productLine && x.ProcessCode == "CWSC3")
                                  .Select(x => x.MaterielCode)