xxyy
2025-03-07 a610ca9e97f456a7e87cb407bf6e353672472ec5
修复组件属性并更新路由配置

在 `VolTable.vue` 中修复了组件属性赋值方式,确保 `@change` 事件处理函数格式正确。更新了多个路由的 `meta` 属性,将 `keepAlive` 设置为 `true`,以保持组件状态。新增了 `/Message` 路由并配置相应组件。

注释掉了异常处理中的错误记录,简化了任务处理逻辑,并在 `TaskController` 中移除了节流过滤器的应用。修改了请求频率过快时的返回结果,新增了 `MOMErrorMessageController.cs` 的引用。

最后,在 `Message.vue` 中新增了一个 Vue 组件,用于展示 MOM 消息的相关信息。
已修改10个文件
已添加1个文件
323 ■■■■■ 文件已修改
Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/router/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/router/viewGird.js 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ErrorMessage/Message.vue 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue
@@ -22,8 +22,7 @@
      <!-- 2020.10.10移除table第一行强制排序 -->
      <el-table-column v-for="(column, cindex) in filterColumns" :prop="column.field" :label="column.title"
        :min-width="column.width" :formatter="formatter" :fixed="column.fixed" :key="column.field + cindex"
        :align="column.align" :sortable="column.sort ? 'custom' : false"
        :show-overflow-tooltip="column.showOverflowTooltip">
        :align="column.align" :sortable="column.sort ? 'custom' : false" :show-overflow-tooltip=true>
        <template #header>
          <span v-if="(column.require || column.required) && column.edit" class="column-required">*</span>{{
            column.title }}
@@ -103,7 +102,7 @@
                    column.onChange &&
                      column.onChange(scope.row, column, val);
                  }
                    " :type="column.edit.type" :placeholder="column.placeholder || column.title"
                  " :type="column.edit.type" :placeholder="column.placeholder || column.title"
                  :disabledDate="(val) => getDateOptions(val, column)" :value-format="getDateFormat(column)"
                  :disabled="initColumnDisabled(scope.row, column)">
                </el-date-picker>
@@ -112,7 +111,7 @@
                    column.onChange &&
                      column.onChange(scope.row, column, val);
                  }
                    " :placeholder="column.placeholder || column.title" :value-format="column.format || 'HH:mm:ss'"
                  " :placeholder="column.placeholder || column.title" :value-format="column.format || 'HH:mm:ss'"
                  :disabled="initColumnDisabled(scope.row, column)">
                </el-time-picker>
                <el-switch v-else-if="column.edit.type == 'switch'" v-model="scope.row[column.field]"
@@ -120,17 +119,17 @@
                  inline-prompt @change="(val) => {
                    switchChange(val, scope.row, column);
                  }
                    " :active-value="typeof scope.row[column.field] == 'boolean'
                  " :active-value="typeof scope.row[column.field] == 'boolean'
                      ? true
                      : typeof scope.row[column.field] == 'string'
                        ? '1'
                        : 1
                      " :inactive-value="typeof scope.row[column.field] == 'boolean'
                      ? false
                      : typeof scope.row[column.field] == 'string'
                        ? '0'
                        : 0
                      " :disabled="initColumnDisabled(scope.row, column)">
                        ? false
                        : typeof scope.row[column.field] == 'string'
                          ? '0'
                          : 0
                        " :disabled="initColumnDisabled(scope.row, column)">
                </el-switch>
                <template v-else-if="
                  ['select', 'selectList'].indexOf(column.edit.type) != -1
@@ -234,7 +233,7 @@
            <div @click="() => {
              column.click && formatterClick(scope.row, column);
            }
              " v-else-if="column.bind">
            " v-else-if="column.bind">
              <el-tag v-if="useTag" class="cell-tag" :class="[isEmptyTag(scope.row, column)]"
                :type="getColor(scope.row, column)" :effect="column.effect">{{ formatter(scope.row, column, true)
                }}</el-tag>
Code Management/WMS/WIDESEA_WMSClient/src/router/index.js
@@ -22,7 +22,7 @@
        name: 'UserInfo',
        component: () => import('@/views/system/UserInfo.vue'),
        meta: {
          keepAlive: false
        }
      },
      {
@@ -30,7 +30,7 @@
        name: 'sysMenu',
        component: () => import('@/views/system/Sys_Menu.vue'),
        meta: {
          keepAlive: false
        }
      },
      {
@@ -38,7 +38,6 @@
        name: 'signalR',
        component: () => import('@/views/signalR/Index.vue'),
        meta:{
          keepAlive:false
        }
      },
    ]
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js
@@ -4,23 +4,20 @@
    name: 'Dt_AreaInfo',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_AreaInfo.vue'),
    meta: {
      keepAlive: true
    }
  },
  {
    path: '/Dt_BillGroupStock',
    name: 'Dt_BillGroupStock',
    component: () => import('@/views/widesea_wms/stock/Dt_BillGroupStock.vue'),
    meta: {
      keepAlive: true
    }
  },
  // {
  //   path: '/Dt_BillGroupStockDetail',
  //   name: 'Dt_BillGroupStockDetail',
  //   component: () => import('@/views/widesea_wms/stock/Dt_BillGroupStockDetail.vue'),
  //   meta: {
  //     keepAlive: true
  //
  //   }
  // },
  {
@@ -28,7 +25,7 @@
    name: 'Dt_InboundOrder',
    component: () => import('@/views/widesea_wms/invoices/Dt_InboundOrder.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -36,7 +33,7 @@
    name: 'Dt_InboundOrderDetail',
    component: () => import('@/views/widesea_wms/invoices/Dt_InboundOrderDetail.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -44,7 +41,7 @@
    name: 'Dt_LocationInfo',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_LocationInfo.vue'),
    meta: {
      keepAlive: true
    }
  },
  {
@@ -52,7 +49,7 @@
    name: 'Dt_MaterielAttribute',
    component: () => import('@/views/widesea_wms/material/Dt_MaterielAttribute.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -60,7 +57,7 @@
    name: 'Dt_MaterielInfo',
    component: () => import('@/views/widesea_wms/material/Dt_MaterielInfo.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -68,7 +65,7 @@
    name: 'Dt_OutOrder',
    component: () => import('@/views/widesea_wms/invoices/Dt_OutOrder.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -76,7 +73,7 @@
    name: 'Dt_OutOrderAndStock',
    component: () => import('@/views/widesea_wms/invoices/Dt_OutOrderAndStock.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -84,7 +81,7 @@
    name: 'Dt_OutOrderDetail',
    component: () => import('@/views/widesea_wms/invoices/Dt_OutOrderDetail.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -92,7 +89,7 @@
    name: 'Dt_OutOrderProduction',
    component: () => import('@/views/widesea_wms/invoices/Dt_OutOrderProduction.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -100,7 +97,7 @@
    name: 'Dt_OutOrderProductionDetail',
    component: () => import('@/views/widesea_wms/invoices/Dt_OutOrderProductionDetail.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -108,7 +105,7 @@
    name: 'Dt_OutOrderTransfer',
    component: () => import('@/views/widesea_wms/invoices/Dt_OutOrderTransfer.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -116,7 +113,7 @@
    name: 'Dt_OutOrderTransferDetail',
    component: () => import('@/views/widesea_wms/invoices/Dt_OutOrderTransferDetail.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -124,7 +121,7 @@
    name: 'Dt_RoadWayInfo',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_RoadWayInfo.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -132,7 +129,7 @@
    name: 'Dt_Strategy',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_Strategy.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -140,14 +137,14 @@
    name: 'Dt_Task',
    component: () => import('@/views/widesea_wms/taskinfo/Dt_Task.vue'),
    meta: {
      keepAlive: true
    }
  },{
    path: '/Dt_Task_Hty',
    name: 'Dt_Task_Hty',
    component: () => import('@/views/widesea_wms/taskinfo/Dt_Task_Hty.vue'),
    meta: {
      keepAlive: true
    }
  },
  // {
@@ -155,7 +152,7 @@
  //   name: 'Dt_TaskOut',
  //   component: () => import('@/views/widesea_wms/taskinfo/Dt_TaskOut.vue'),
  //   meta: {
  //     keepAlive: false
  //
  //   }
  // },
  // {
@@ -163,7 +160,7 @@
  //   name: 'Dt_TaskExecuteDetail',
  //   component: () => import('@/views/widesea_wms/taskinfo/Dt_TaskExecuteDetail.vue'),
  //   meta: {
  //     keepAlive: false
  //
  //   }
  // },
  {
@@ -171,7 +168,7 @@
    name: 'Dt_UnitInfo',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_UnitInfo.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -179,7 +176,7 @@
    name: 'Dt_WareAreaInfo',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_WareAreaInfo.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -187,7 +184,7 @@
    name: 'Dt_OutOrderSorting',
    component: () => import('@/views/widesea_wms/invoices/Dt_OutOrderSorting.vue'),
    meta: {
      keepAlive: false
    }
  },
  // {
@@ -200,7 +197,7 @@
    name: 'PointStackerRelation',
    component: () => import('@/views/widesea_wms/basicinfo/PointStackerRelation.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -208,7 +205,7 @@
    name: 'LocationStatusChange',
    component: () => import('@/views/widesea_wms/basicinfo/LocationStatusChange.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -216,7 +213,7 @@
    name: 'DtBoxing',
    component: () => import('@/views/widesea_wms/stock/DtBoxingInfo.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -224,7 +221,7 @@
    name: 'momTest',
    component: () => import('@/views/widesea_wms/MOM/momTest.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -232,7 +229,7 @@
    name: 'ProductionModel',
    component: () => import('@/views/widesea_wms/MOM/ProductionModel.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -240,14 +237,21 @@
    name: 'Dt_StationManager',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_StationManager.vue'),
    meta: {
      keepAlive: false
    }
  },{
    path: '/Dt_needBarcode',
    name: 'Dt_needBarcode',
    component: () => import('@/views/widesea_wms/basicinfo/Dt_needBarcode.vue'),
    meta: {
      keepAlive: false
    }
  },{
    path: '/Message',
    name: 'Message',
    component: () => import('@/views/widesea_wms/MOM/ErrorMessage/Message.vue'),
    meta: {
    }
  },
]
Code Management/WMS/WIDESEA_WMSClient/src/router/viewGird.js
@@ -4,7 +4,7 @@
    name: 'sys_Log',
    component: () => import('@/views/system/Sys_Log.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -12,7 +12,7 @@
    name: 'Sys_User',
    component: () => import('@/views/system/Sys_User.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -20,7 +20,7 @@
    name: 'permission',
    component: () => import('@/views/system/Permission.vue'),
    meta: {
      keepAlive: false
    }
  },
@@ -29,7 +29,7 @@
    name: 'Sys_Dictionary',
    component: () => import('@/views/system/Sys_Dictionary.vue'),
    meta: {
      keepAlive: false
    }
  },
  {
@@ -37,77 +37,22 @@
    name: 'Sys_Role',
    component: () => import('@/views/system/Sys_Role.vue'),
    meta: {
      keepAlive: false
    }
  },
  //  {
  //   path: '/Sys_Role1',
  //   name: 'Sys_Role1',
  //   component: () => import('@/views/system/Sys_Role1.vue')
  // }
  // ,
  {
    path: '/Sys_DictionaryList',
    name: 'Sys_DictionaryList',
    component: () => import('@/views/system/Sys_DictionaryList.vue'),
    meta: {
      keepAlive: false
    }
  },
  // {
  //   path: '/FormDesignOptions',
  //   name: 'FormDesignOptions',
  //   component: () => import('@/views/system/form/FormDesignOptions.vue'),
  //   meta: {
  //     keepAlive: false
  //   }
  // },
  // {
  //   path: '/FormCollectionObject',
  //   name: 'FormCollectionObject',
  //   component: () => import('@/views/system/form/FormCollectionObject.vue'),
  //   meta: {
  //     keepAlive: false
  //   }
  // },
  // {
  //   path: '/Sys_WorkFlow',
  //   name: 'Sys_WorkFlow',
  //   component: () => import('@/views/system/flow/Sys_WorkFlow.vue'),
  //   meta: {
  //     keepAlive: false
  //   }
  // },
  // {
  //   path: '/Sys_WorkFlowTable',
  //   name: 'Sys_WorkFlowTable',
  //   component: () => import('@/views/system/flow/Sys_WorkFlowTable.vue'),
  //   meta: {
  //     keepAlive: false
  //   }
  // },
  // {
  //   path: '/Sys_QuartzOptions',
  //   name: 'Sys_QuartzOptions',
  //   component: () => import('@/views/system/quartz/Sys_QuartzOptions.vue'),
  //   meta: {
  //     keepAlive: false
  //   }
  // },
  // {
  //   path: '/Sys_QuartzLog',
  //   name: 'Sys_QuartzLog',
  //   component: () => import('@/views/system/quartz/Sys_QuartzLog.vue'),
  //   meta: {
  //     keepAlive: false
  //   }
  // },
  {
  },{
    path: '/Sys_Department',
    name: 'Sys_Department',
    component: () => import('@/views/system/system/Sys_Department.vue'),
    meta: {
      keepAlive: false
    }
  }
]
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/MOM/ErrorMessage/Message.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
<!--
*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/MOM/MOMMessage.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
        const table = ref({
            key: 'id',
            footer: "Foots",
            cnName: 'MOM消息',
            name: 'MOM/MOMErrorMessage',
            url: "/MOMErrorMessage/",
            sortName: "CreateTime"
        });
        const editFormFields = ref({});
        const editFormOptions = ref([]);
        const searchFormFields = ref({});
        const searchFormOptions = ref([
            [
                { "title": "托盘号", "field": "palletCode", type: "text" },
                { "title": "任务号", "field": "taskNum", type: "text" , hidden: true},
                { "title": "异常消息", "field": "errorMessage", type: "text" },
            ],
            [
                { "title": "api名称", "field": "apiName", type: "text" },
                { "title": "创建时间", "field": "createTime", type: "text" },
            ]
        ]);
        const columns = ref([{ field: 'id', title: '主键', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' },
        { field: 'taskNum', title: '任务号', type: 'string', sort: true, width: 110, require: true, align: 'left', sort: true , hidden: true},
        { field: 'palletCode', title: '托盘号', type: 'string', sort: true, width: 110, align: 'left' },
        { field: 'errorMessage', title: '异常消息', type: 'string', sort: true, width: 200, align: 'left' },
        { field: 'apiName', title: 'api名称', type: 'string', sort: true, width: 110, align: 'left'  },
        { field: 'createTime', title: '创建时间', type: 'string', sort: true, width: 110, align: 'left' },]);
        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_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
@@ -64,7 +64,7 @@
        }
        catch (Exception err)
        {
            MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, err.Message, SysConfigConst.AgingInput);
            //MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, err.Message, SysConfigConst.AgingInput);
            Console.WriteLine(err.Message.ToString());
            LogFactory.GetLog("静置陈化入库(整托盘)").Error(true, $"\r\r--------------------------------------");
            LogFactory.GetLog("静置陈化入库(整托盘)").Error(true, err.StackTrace);
@@ -114,7 +114,7 @@
        }
        catch (Exception err)
        {
            MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, err.Message, SysConfigConst.AgingOutput);
            //MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, err.Message, SysConfigConst.AgingOutput);
            Console.WriteLine(err.Message.ToString());
            LogFactory.GetLog("静置陈化出库(整托盘)").Error(true, $"\r\r--------------------------------------");
            LogFactory.GetLog("静置陈化出库(整托盘)").Error(true, err.StackTrace);
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs
@@ -111,7 +111,7 @@
        }
        catch (Exception err)
        {
            MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, err.Message, SysConfigConst.TrayCellsStatus);
            //MoMErrorMsg.AddMoMErrorMsg(0, input.TrayBarcode, err.Message, SysConfigConst.TrayCellsStatus);
            Console.WriteLine(err.Message.ToString());
            LogFactory.GetLog("整盘电芯属性获取").Error(true, $"\r\r--------------------------------------");
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -81,86 +81,6 @@
        {
            if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
            {
                #region è€ç‰ˆæœ¬
                //var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
                //    .FirstAsync(x => x.EquipmentName == task.Roadway);
                //var info = JsonConvert.DeserializeObject<ResponseEqptRunDto>(process.ProcessValue);
                //if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB")  //非分容库区与当前工序是OCVB均上报MOM出入站
                //{
                //    var agingOutputDto = MapToAgingOutputDto(stock);
                //    content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
                //    //ValidateResponse(content);
                //    var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
                //    if (!result.Success || !agingOutputDto.SerialNos[0].SerialNoResult)
                //    {
                //        if (result.MessageCode == "E10001")
                //        {
                //            var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == stock.AreaCode);
                //            if (area == null)
                //            {
                //                throw new Exception("未找到对应的库区信息");
                //            }
                //            var trayCells = new TrayCellsStatusDto()
                //            {
                //                Software = area.Spare3,
                //                TrayBarcode = task.PalletCode,
                //                EquipmentCode = area.Spare2,
                //                SceneType = area.Spare4
                //            };
                //            content = await _cellStateService.GetTrayCellStatusAsync(trayCells);
                //            if (!content.Status) return content;
                //            var ResultTray = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
                //            if (ResultTray.SerialNos.Count > 0)
                //            {
                //                var parameterInfo = JsonConvert.DeserializeObject<List<ParameterInfo>>(stock.ParameterInfos).FirstOrDefault(y => y.Description.Contains("时间"));
                //                if (parameterInfo == null) throw new Exception("");
                //                var outHours = (DateTime.Now - (stock.LinedProcessFeedbackTime == null ? stock.CreateDate : stock.LinedProcessFeedbackTime.ToDateTime())).TotalHours;
                //                var isNG = outHours > parameterInfo.LowerSpecificationsLimit.ToDouble() && outHours < parameterInfo.UpperSpecificationsLimit.ToDouble();
                //                var defectCode = string.Empty;
                //                if (!isNG) defectCode = "TQCK";
                //                var outputDto = new AgingOutputDto
                //                {
                //                    OpFlag = 1,
                //                    Software = area.Spare3,
                //                    EquipmentCode = area.Spare2,
                //                    TrayBarcode = stock.PalletCode,
                //                    SerialNos = ResultTray.SerialNos.Select(x => new SerialNoOutDto
                //                    {
                //                        SlotNo = x.PositionNo,
                //                        SerialNo = x.SerialNo,
                //                        SerialNoResult = true, //isNG,
                //                        ParameterInfo = new List<ParameterInfoOutput> {
                //                            new ParameterInfoOutput() {
                //                                Value = outHours.ToString(),
                //                                ParameterCode =parameterInfo.ParameterCode,
                //                                ParameterDesc = parameterInfo.Description,
                //                                ParameterResult  = "OK", //isNG.ToString(),
                //                                TargetValue = parameterInfo.TargetValue,
                //                                LowerLomit = parameterInfo.LowerSpecificationsLimit,
                //                                UpperLimit = parameterInfo.UpperSpecificationsLimit,
                //                                DefectCode = defectCode,
                //                                UOMCode = parameterInfo.UOMCode,
                //                            }
                //                        }
                //                    }).ToList()
                //                };
                //                content = await _agingInOrOutInputService.GetOCVOutputAsync(outputDto);
                //                result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
                //                if (!result.Success)
                //                    task.Remark = "NG";
                //            }
                //        }
                //        else
                //            task.Remark = "NG";
                //    }
                //}
                #endregion è€ç‰ˆæœ¬
                if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                {
                    if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB")
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
@@ -28,7 +28,7 @@
    /// <param name="saveModel">任务号</param>
    /// <returns>成功或失败</returns>
    [HttpGet, Route("CompleteTaskAsync"), AllowAnonymous]
    [TypeFilter(typeof(ThrottleFilter), Arguments = new object[] { 5 })] // 5秒节流
    //[TypeFilter(typeof(ThrottleFilter), Arguments = new object[] { 5 })] // 5秒节流
    public async Task<WebResponseContent> CompleteTaskAsync(int taskNum)
    {
        return await _taskService.CompleteAsync(taskNum);
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs
@@ -19,7 +19,7 @@
            var elapsedTime = DateTime.Now - lastExecutionTime;
            if (elapsedTime.TotalSeconds < _intervalInSeconds)
            {
                context.Result = new Microsoft.AspNetCore.Mvc.StatusCodeResult(429);
                context.Result = new OkObjectResult(new WebResponseContent().Error("请求过于频繁,请稍后再试"));
                return;
            }
        }
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj
@@ -20,6 +20,7 @@
  </ItemGroup>
    <ItemGroup>
        <None Include="Controllers\Basic\MOMErrorMessageController.cs" />
        <None Include="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Tenant.tsv" />
        <None Include="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_User.tsv" />
    </ItemGroup>