Admin
2026-01-22 bde09c027eee16a7b05b82e71dea4d3405d6d52d
前端页面优化,日志记录,日志展示
已添加5个文件
已修改34个文件
2839 ■■■■ 文件已修改
项目代码/WMS/WIDESEA_WMSClient/config/buttons.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/public/webconfig.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/api/http.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/router/viewGird.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue 1272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/system/txt_log.vue 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue 123 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 182 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCSTaskService.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_任务恢复/2026-01-21/WMS_任务恢复260121.txt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_任务状态修改/2026-01-22/任务修改260122.txt 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_删除库存/2026-01-22/删除信息260122.txt 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/WMS库位编码/松补料1-4列12层货架.xls 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/config/buttons.js
@@ -109,8 +109,7 @@
    }
},{
    name: "手 åЍ ä¸Š ä¼ ",
    icon: '',
    class: '',
    type: 'success',
    value: 'ManualUploadbutton',
    onClick: function () {
    }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/public/webconfig.js
@@ -1,4 +1,4 @@
window.webConfig = {
    "webApiBaseUrl": "http://172.18.195.201:8889/",
    "webApiBaseUrl": "http://127.0.0.1:9291/",
    "webApiProduction":"http://172.18.195.201:8889/"
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/api/http.js
@@ -12,6 +12,7 @@
let loadingInstance;
let loadingStatus = false;
if (process.env.NODE_ENV == 'development') {
    //axios.defaults.baseURL = window.webConfig.webApiBaseUrl;
    axios.defaults.baseURL = window.webConfig.webApiProduction;
}
else if (process.env.NODE_ENV == 'debug') {
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js
@@ -59,20 +59,20 @@
        }
      }
      this.columns.forEach(x => {
        if (x.field == "palletType") {
          x.render = (h, { row, column, index }) => {
            if ((row.roadway == "1" || row.roadway == "2") && row.palletType=="1") {
              return h('span',"布料");
            }else if((row.roadway == "1" || row.roadway == "2") && row.palletType=="2"){
                  return h('span',"松布料");
            }else{
              return h('span',"成品");
            }
      // this.columns.forEach(x => {
      //   if (x.field == "palletType") {
      //     x.render = (h, { row, column, index }) => {
      //       if ((row.roadway == "1" || row.roadway == "2") && row.palletType == "1") {
      //         return h('span', "布料");
      //       } else if ((row.roadway == "1" || row.roadway == "2") && row.palletType == "2") {
      //         return h('span', "松布料");
      //       } else {
      //         return h('span', "成品");
      //       }
          }
        }
      });
      //     }
      //   }
      // });
      //手动上传按钮
@@ -80,9 +80,8 @@
      if (ManualUploadBtn != null) {
        ManualUploadBtn.onClick = () => {
          let rows = this.$refs.table.getSelected();
          if (rows.length == 0) {
            return this.$error("请选择数据!");
          } else {
          if (rows.length == 0) return this.$error("请选择数据!");
          if (rows.length > 1) return this.$error("请选择一条数据!");
            var ids = rows.map(x => {
              return  x.taskId
            })
@@ -94,7 +93,7 @@
              .post("api/Task/MESManualUpload", param, "数据处理中...")
              .then((x) => {
                if (x.status) {
                  this.$Message.success('成功.');
                this.$Message.success(x.message);
                  this.refresh();
                } else {
                  return this.$error(x.message);
@@ -102,6 +101,32 @@
              });
          }
        }
      //任务恢复按钮
      var TaskRecoveryBtn = this.buttons.find(x => x.value == "TaskRecovery");
      if (TaskRecoveryBtn != null) {
        TaskRecoveryBtn.onClick = () => {
          let rows = this.$refs.table.getSelected();
          if (rows.length == 0) return this.$error("请选择数据!");
          if (rows.length > 1) return this.$error("请选择一条数据!");
          var ids = rows.map(x => {
              return x.taskId
            })
            var param = {
              DelKeys: ids, //taskNo
              Extra: true
            }
            this.http
              .post("api/Task/WMSTaskRecovery", param, "数据处理中...")
              .then((x) => {
                if (x.status) {
                  this.$Message.success(x.message);
                  this.refresh();
                } else {
                  return this.$error(x.message);
                }
              });
        }
      }
    },
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/router/viewGird.js
@@ -6,6 +6,11 @@
    component: () => import('@/views/system/Sys_Log.vue')
  },
  {
    path: '/txt_log',
    name: 'txt_log',
    component: () => import('@/views/system/txt_log.vue')
  },
  {
    path: '/Sys_User',
    name: 'Sys_User',
    component: () => import('@/views/system/Sys_User.vue')
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue
@@ -52,7 +52,7 @@
        { title: "禁用状态", field: "enableStatus" ,type: "select",dataKey: "enableStatusEnum",data: [],},
      ],
      [
        { title: "货位状态", field: "locationStatus" ,type: "selectList",dataKey: "locationStatusEnum",data: [],},
        { title: "货位状态", field: "locationStatus" ,type: "select",dataKey: "locationStatusEnum",data: [],},
        { title: "行", field: "row" ,type: "int"},
        { title: "列", field: "column" ,type: "int"},
        { title: "层", field: "layer" ,type: "int"}
@@ -68,6 +68,13 @@
        readonly: true,
        require: true,
        align: "left",
      },{
        field: "warehouseId",
        title: "仓库编号",
        type: "int",
        width: 80,
        align: "left",
        bind: { key: "warehouseEnum", data: [] },
      },
      // {
      //   field: "areaId",
@@ -87,13 +94,13 @@
        width: 180,
        align: "left",
      },
      {
        field: "locationName",
        title: "货位名称",
        type: "string",
        width: 220,
        align: "left",
      },
      // {
      //   field: "locationName",
      //   title: "货位名称",
      //   type: "string",
      //   width: 220,
      //   align: "left",
      // },
      {
        field: "roadwayNo",
        title: "巷道编号",
@@ -120,14 +127,14 @@
        field: "layer",
        title: "货位层",
        type: "string",
        width: 200,
        width: 120,
        align: "left",
      },
      {
        field: "depth",
        title: "货位深度",
        type: "string",
        width: 180,
        width: 120,
        align: "left",
        bind:{key: "locationDepth", data: []}
      },
@@ -143,7 +150,7 @@
        field: "locationStatus",
        title: "货位状态",
        type: "string",
        width: 200,
        width: 120,
        align: "left",
        bind: { key: "locationStatusEnum", data: [] },
      },
@@ -151,7 +158,7 @@
        field: "enableStatus",
        title: "禁用状态",
        type: "string",
        width: 180,
        width: 120,
        align: "left",
        bind: { key: "enableStatusEnum", data: [] },
      },
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue
@@ -48,8 +48,9 @@
      });
      const searchFormOptions = ref([
        [
          { title: "托盘编号", field: "palletCode" },
          { title: "货位编号", field: "locationCode" },
          { title: "托盘编号", field: "palletCode" ,type:'string'},
          { title: "货位编号", field: "locationCode",type:'string' },
          { title: "巷道编号", field: "roadway",type:'string' },
        ],
      ]);
      const columns = ref([
@@ -62,6 +63,13 @@
          readonly: true,
          require: true,
          align: "left",
        },{
        field: "warehouseId",
        title: "仓库编号",
        type: "int",
        width: 80,
        align: "left",
        bind: { key: "warehouseEnum", data: [] },
        },
        {
          field: "palletCode",
@@ -70,6 +78,13 @@
          width: 90,
          align: "left",
        },{
        field: "roadway",
        title: "巷道号",
        type: "string",
        width: 70,
        align: "left",
      },
        {
          field: "locationCode",
          title: "货位编号",
          type: "string",
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue
@@ -1,392 +1,896 @@
<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/stock/stockView.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const table = ref({
      key: "stockId",
      footer: "Foots",
      cnName: "库存视图",
      name: "stockView",
      url: "/stockView/",
      sortName: "stockId",
    });
    const editFormFields = ref({
      palletCode: "",
      locationCode: "",
      locationName: "",
    });
    const editFormOptions = ref([
  <div class="container">
    <div class="content-wrapper">
      <!-- æŽ§åˆ¶é¢æ¿åŒºåŸŸ -->
      <div class="control-panel">
        <div class="panel-header">
          <h3>控制面板</h3>
        </div>
      
    ]);
    const searchFormFields = ref({
      palletCode: "",
      // locationCode: "",
      materielCode:"",
      batchNo:""
    });
    const searchFormOptions = ref([
      [
        { title: "托盘编号", field: "palletCode",type: "like" },
        // { title: "货位编号", field: "locationCode",type: "like" },
        { title: "货位状态", field: "locationStatus" ,type: "selectList",dataKey: "locationStatusEnum",data: [],},
        { title: "库存状态", field: "stockStatus",type: "selectList",dataKey: "stockStatusEmun",data: [],},
      ],
      [
        { title: "物料编号", field: "materielCode",type: "like"},
        { title: "批次号", field: "batchNo",type: "like"},
        { title: "所属仓库", field: "warehouseId",type: "selectList",dataKey: "warehouses",data: [],},
      ],
    ]);
    const columns = ref([
      {
        field: "stockId",
        title: "Id",
        type: "int",
        width: 90,
        hidden: true,
        readonly: true,
        require: true,
        align: "left",
      },
      {
        field: "palletCode",
        title: "托盘编号",
        type: "string",
        width: 150,
        link: true,
        align: "left",
      },
      {
        field: "locationCode",
        title: "货位编号",
        type: "string",
        width: 200,
        align: "left",
      },
      {
        field: "locationName",
        title: "货位名称",
        type: "string",
        width: 270,
        align: "left",
      },
      {
        field: "warehouseId",
        title: "所属仓库",
        type: "string",
        width: 80,
        align: "left",
        bind: { key: "warehouses", data: [] },
      },
      {
        field: "roadwayNo",
        title: "巷道编号",
        type: "decimal",
        width: 100,
        align: "left",
        hidden:true
      },
      {
        field: "materielCode",
        title: "所含物料编号",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "batchNo",
        title: "所含物料批次",
        type: "string",
        width: 200,
        align: "left"
      },
      {
        field: "materielInfo",
        title: "所含物料最早临期",
        type: "string",
        width: 140,
        align: "left",
      },
      {
        field: "sumStock",
        title: "总库存",
        type: "string",
        width: 140,
        align: "left",
      },
      {
        field: "row",
        title: "货位行",
        type: "string",
        width: 90,
        align: "left",
        hidden: true,
      },
      {
        field: "column",
        title: "货位列",
        type: "int",
        width: 120,
        align: "left",
        hidden: true,
      },
      {
        field: "layer",
        title: "货位层",
        type: "string",
        width: 200,
        align: "left",
        hidden: true,
      },
      {
        field: "depth",
        title: "货位深度",
        type: "string",
        width: 180,
        align: "left",
        hidden: true,
      },
      {
        field: "stockStatus",
        title: "库存状态",
        type: "string",
        width: 200,
        align: "left",
        bind: { key: "stockStatusEmun", data: [] },
      },
      {
        field: "locationType",
        title: "货位类型",
        type: "string",
        width: 100,
        align: "left",
        bind:{key: "locationTypeEnum", data: []}
      },
      {
        field: "locationStatus",
        title: "货位状态",
        type: "string",
        width: 120,
        align: "left",
        bind: { key: "locationStatusEnum", data: [] },
      },
      {
        field: "enalbeStatus",
        title: "禁用状态",
        type: "string",
        width: 80,
        align: "left",
        bind: { key: "enableStatusEnum", data: [] },
      },
      {
        field: "creater",
        title: "创建人",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "createDate",
        title: "创建时间",
        type: "datetime",
        width: 160,
        align: "left",
      },
      {
        field: "modifier",
        title: "修改人",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "modifyDate",
        title: "修改时间",
        type: "datetime",
        width: 160,
        align: "left",
      },
      {
        field: "remark",
        title: "备注",
        type: "string",
        width: 100,
        align: "left",
        hidden:true
      },
    ]);
    const detail = ref({
      cnName: "库存明细信息",
      table: "StockInfoDetail",
      columns: [
        {
          field: "id",
          title: "Id",
          type: "int",
          width: 90,
          hidden: true,
          readonly: true,
          require: true,
          align: "left",
        },
        {
          field: "stockId",
          title: "库存信息主键",
          type: "string",
          width: 90,
          align: "left",
          hidden: true
        },
        {
          field: "materielCode",
          title: "物料编号",
          type: "string",
          width: 110,
          align: "left",
        },
        {
          field: "materielName",
          title: "物料名称",
          type: "string",
          width: 130,
          align: "left",
        },
        {
          field: "orderNo",
          title: "单据编号",
          type: "decimal",
          width: 130,
          align: "left",
        },
        {
          field: "batchNo",
          title: "批次号",
          type: "string",
          width: 180,
          align: "left",
        },
        {
          field: "serialNumber",
          title: "序列号",
          type: "int",
          width: 120,
          align: "left",
          hidden: true,
        },
        {
          field: "stockQuantity",
          title: "库存数量",
          type: "string",
          width: 80,
          align: "left",
        },
        {
          field: "outboundQuantity",
          title: "出库数量",
          type: "string",
          width: 80,
          align: "left",
        },
        {
          field: "unit",
          title: "单位",
          type: "string",
          width: 50,
          align: "left",
        },
        {
          field: "productionDate",
          title: "生产日期",
          type: "string",
          width: 80,
          align: "left",
        },
        {
          field: "effectiveDate",
          title: "有效日期",
          type: "string",
          width: 80,
          align: "left",
        },
        {
          field: "status",
          title: "库存明细状态",
          type: "string",
          width: 120,
          align: "left",
          bind: { key: "stockStatusEmun", data: [] }
        },
        {
          field: "creater",
          title: "创建人",
          type: "string",
          width: 90,
          align: "left",
          hidden: true
        },
        {
          field: "createDate",
          title: "创建时间",
          type: "datetime",
          width: 160,
          align: "left",
          hidden: true
        },
        {
          field: "modifier",
          title: "修改人",
          type: "string",
          width: 100,
          align: "left",
          hidden: true
        },
        {
          field: "modifyDate",
          title: "修改时间",
          type: "datetime",
          width: 160,
          align: "left",
          hidden: true
        },
        {
          field: "remark",
          title: "备注",
          type: "string",
          width: 100,
          align: "left",
          hidden: true
        },
      ],
      sortName: "id",
      key: "id",
    });
        <div class="panel-body">
          <div class="form-group">
            <label class="form-label">仓库:</label>
            <el-select size="mini" filterable v-model="selectedWarehouse" placeholder="请选择仓库" class="full-width"
              @change="handleWarehouseChange">
              <el-option v-for="item in warehouseList" :key="item.warehouseId" :value="item.warehouseId"
                :label="getWarehouseName(item.warehouseId)">
              </el-option>
            </el-select>
          </div>
          <div class="form-group">
            <label class="form-label">巷道:</label>
            <el-select size="mini" clearable filterable v-model="selectedRoadwayNo" placeholder="请选择巷道" class="full-width"
              @change="handleRoadwayNoChange">
              <el-option v-for="item in roadwayNoList" :key="item" :value="item" :label="'巷道 ' + item"></el-option>
            </el-select>
          </div>
          <el-button type="success" class="refresh-btn" @click="fetchLocationStatus" :loading="loading">
            åˆ·æ–°
          </el-button>
          <div class="legend-section">
            <div class="legend-header">
              <h4>图例说明</h4>
            </div>
            <div class="legend-list">
              <div class="legend-item" v-for="(item, index) in infoMsg" :key="index">
                <span class="color-box" :style="{ 'background-color': item.bgcolor }"></span>
                <span class="legend-label">{{ item.msg }}</span>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- è´§ä½å±•示区域 -->
      <div class="main-content">
        <div v-if="loading" class="loading-container">
          <el-skeleton :rows="6" animated />
        </div>
        <div v-else-if="locationData.length > 0" class="location-container">
          <div class="location-header">
            <div class="location-info">
              <span>当前查看:{{ getWarehouseName(selectedWarehouse) }} - å··é“ {{ selectedRoadwayNo }}</span>
              <span class="total-count">共 {{ totalLocations }} ä¸ªè´§ä½</span>
            </div>
          </div>
          <div class="layers-container">
            <div class="layer-row" v-for="layer in sortedLayerData" :key="layer.layer">
              <div class="layer-title-area">
                <h3 class="layer-title">层 {{ layer.layer }}</h3>
                <span class="layer-count">{{ getLayerLocations(layer) }} ä¸ªè´§ä½</span>
              </div>
              <div class="layer-content-wrap">
                <div class="layer-content">
                  <div class="location-column" v-for="column in sortedColumns(layer.columns)" :key="column.column">
                    <div class="column-label">列 {{ column.column }}</div>
                    <div class="locations-wrapper">
                      <div class="location-item" v-for="depth in sortedDepthsByRow(column.depths)" :key="depth.depth"
                        :class="getLocationStatusClass(depth)"
                        @mouseenter="showTooltip(depth, column.column, layer.layer, $event)" @mouseleave="hideTooltip"
                        @click="handleLocationClick(depth)">
                        <div class="location-code">
                          {{ depth.row || '?' }}排-{{ column.column }}列-{{ layer.layer }}层-{{ depth.depth == 1 ? '浅' : 'æ·±' }}
                        </div>
                        <div class="location-status" v-if="depth.enableStatus !== 0">
                          ç¦ç”¨
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
        <!-- æ— æ•°æ®æç¤º -->
        <div v-else class="empty-container">
          <el-empty description="暂无货位数据">
            <template #description>
              <p>请选择仓库和巷道来查看货位信息</p>
            </template>
          </el-empty>
        </div>
        <!-- æ‚¬æµ®æç¤ºæ¡† -->
        <div v-if="showTooltipFlag" class="location-tooltip" :style="{
          left: tooltipPosition.x + 'px',
          top: tooltipPosition.y + 'px',
        }">
          <div class="tooltip-content">
            <div class="tooltip-header">
              <h4>货位详情</h4>
            </div>
            <div class="tooltip-body">
              <div class="tooltip-row">
                <span class="tooltip-label">位置:</span>
                <span class="tooltip-value">{{ getLocationCode(currentLocation) }}</span>
              </div>
              <div class="tooltip-row">
                <span class="tooltip-label">巷道:</span>
                <span class="tooltip-value">{{ selectedRoadwayNo }}</span>
              </div>
              <div class="tooltip-row">
                <span class="tooltip-label">深度:</span>
                <span class="tooltip-value">{{ currentLocation.depth === 1 ? '浅' : 'æ·±' }}</span>
              </div>
              <div class="tooltip-row">
                <span class="tooltip-label">类型:</span>
                <span class="tooltip-value">{{ getLocationTypeText(currentLocation.locationType) }}</span>
              </div>
              <div class="tooltip-row">
                <span class="tooltip-label">状态:</span>
                <span class="tooltip-value" :class="getStatusClass(currentLocation.locationStatus)">
                  {{ getStatusText(currentLocation.locationStatus) }}
                </span>
              </div>
              <div class="tooltip-row">
                <span class="tooltip-label">启用状态:</span>
                <span class="tooltip-value" :class="{ 'status-disabled': currentLocation.enableStatus !== 0 }">
                  {{ getEnableStatusText(currentLocation.enableStatus) }}
                </span>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import { ElButton, ElMessage, ElSelect, ElOption, ElEmpty, ElSkeleton } from "element-plus";
export default {
  data() {
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
      warehouseList: [],
      roadwayNoList: [],
      selectedWarehouse: null,
      selectedRoadwayNo: null,
      infoMsg: [
        { bgcolor: "lightgreen", msg: "空货位" },
        { bgcolor: "orange", msg: "有货" },
        { bgcolor: "#2BB3D5", msg: "锁定" },
        { bgcolor: "#ccc", msg: "禁用" },
        { bgcolor: "#b7ba6b", msg: "其它" },
      ],
      locationData: [],
      showTooltipFlag: false,
      currentLocation: null,
      tooltipPosition: { x: 0, y: 0 },
      currentColumn: null,
      currentLayer: null,
      loading: false
    };
  },
  computed: {
    sortedLayerData() {
      const layerMap = {};
      this.locationData.forEach(layer => {
        if (!layerMap[layer.layer]) {
          layerMap[layer.layer] = {
            layer: layer.layer,
            columns: []
          };
        }
        layer.columns?.forEach(column => {
          layerMap[layer.layer].columns.push({
            column: column.column,
            depths: column.depths || []
});
        });
      });
      return Object.values(layerMap).sort((a, b) => a.layer - b.layer);
    },
    totalLocations() {
      let count = 0;
      this.locationData.forEach(layer => {
        layer.columns?.forEach(column => {
          count += column.depths?.length || 0;
        });
      });
      return count;
    }
  },
  methods: {
    sortedColumns(columns) {
      // æŒ‰åˆ—号排序
      return columns?.sort((a, b) => a.column - b.column) || [];
    },
    sortedDepthsByRow(depths) {
      // é¦–先按行(row)排序,然后按深度(depth)排序
      return depths?.sort((a, b) => {
        // å¦‚果行号相同,按深度排序
        if (a.row === b.row) {
          return a.depth - b.depth;
        }
        // æŒ‰è¡Œå·æŽ’序(这里假设行号是数字或可比较的字符串)
        return this.compareRows(a.row, b.row);
      }) || [];
    },
    // æ¯”较行号的辅助方法
    compareRows(rowA, rowB) {
      // å¦‚果都是数字,按数字比较
      if (!isNaN(rowA) && !isNaN(rowB)) {
        return Number(rowA) - Number(rowB);
      }
      // å¦åˆ™æŒ‰å­—符串比较
      return String(rowA).localeCompare(String(rowB));
    },
    async fetchWarehouseData() {
      try {
        this.loading = true;
        const response = await this.http.get("/api/LocationInfo/GetArea");
        this.warehouseList = response.data || [];
        if (this.warehouseList.length > 0) {
          this.selectedWarehouse = this.warehouseList[0].warehouseId;
          this.roadwayNoList = this.warehouseList[0].roadwayNo || [];
          if (this.roadwayNoList.length > 0) {
            this.selectedRoadwayNo = this.roadwayNoList[0];
            await this.fetchLocationStatus();
          }
        }
      } catch (error) {
        console.error("获取仓库数据失败:", error);
        this.warehouseList = [];
        this.roadwayNoList = [];
        ElMessage.error("获取仓库数据失败,请稍后重试");
      } finally {
        this.loading = false;
      }
    },
    async fetchLocationStatus() {
      if (!this.selectedWarehouse || !this.selectedRoadwayNo) {
        ElMessage.warning("请选择仓库和巷道");
        return;
      }
      try {
        this.loading = true;
        const response = await this.http.get(
          `/api/LocationInfo/GetLocationStatus?WarehouseId=${this.selectedWarehouse}&RoadwayNo=${this.selectedRoadwayNo}`
        );
        if (response.data && response.status) {
          this.locationData = response.data || [];
          // éªŒè¯æ•°æ®ä¸­æ˜¯å¦æœ‰row字段
          console.log("货位数据示例:", this.locationData[0]);
          if (this.locationData.length > 0 && this.locationData[0].columns) {
            console.log("第一个货位的row字段:", this.locationData[0].columns[0]?.depths?.[0]?.row);
          }
          if (this.locationData.length === 0) {
            ElMessage.info("该巷道没有货位数据");
          }
        } else {
          this.locationData = [];
          ElMessage.error(response.data?.message || "获取货位状态失败");
        }
      } catch (error) {
        console.error("获取货位状态失败:", error);
        this.locationData = [];
        ElMessage.error("获取货位状态失败,请稍后重试");
      } finally {
        this.loading = false;
      }
    },
    handleWarehouseChange() {
      const selectedWarehouse = this.warehouseList.find(
        w => w.warehouseId === this.selectedWarehouse
      );
      this.roadwayNoList = selectedWarehouse ? selectedWarehouse.roadwayNo : [];
      this.selectedRoadwayNo = this.roadwayNoList.length > 0 ? this.roadwayNoList[0] : null;
      this.fetchLocationStatus();
    },
    getWarehouseName(warehouseId) {
      const warehouseMap = {
        1: '原材料仓',
        2: '成品仓'
      };
      return warehouseMap[warehouseId] || `仓库 ${warehouseId}`;
    },
    handleRoadwayNoChange() {
      this.fetchLocationStatus();
    },
    getLocationStatusClass(depth) {
      if (depth.enableStatus !== 0) {
        return 'location-disabled';
      }
      switch (depth.locationStatus) {
        case 0: return 'location-empty';    // ç©ºè´§ä½
        case 1: return 'location-locked';   // é”å®š
        case 100: return 'location-occupied'; // æœ‰è´§
        default: return 'location-other';   // å…¶ä»–状态
      }
    },
    getLayerLocations(layer) {
      let count = 0;
      layer.columns?.forEach(column => {
        count += column.depths?.length || 0;
      });
      return count;
    },
    showTooltip(depth, column, layer, event) {
      this.currentLocation = depth;
      this.currentColumn = column;
      this.currentLayer = layer;
      this.showTooltipFlag = true;
      const offsetX = 15;
      const offsetY = 15;
      this.tooltipPosition = {
        x: event.clientX + offsetX,
        y: event.clientY + offsetY,
      };
    },
    hideTooltip() {
      this.showTooltipFlag = false;
      this.currentLocation = null;
      this.currentColumn = null;
      this.currentLayer = null;
    },
    handleLocationClick(depth) {
      console.log('点击货位:', depth);
    },
    getLocationCode(location) {
      if (!location) return '';
      return `${location.row || '?'}排-${this.currentColumn}列-${this.currentLayer}层-${location.depth === 1 ? '浅' : 'æ·±'}`;
    },
    getStatusText(status) {
      const statusMap = {
        0: "空货位",
        1: "锁定",
        100: "有货",
      };
      return statusMap[status] || "未知状态";
    },
    getStatusClass(status) {
      const classMap = {
        0: 'status-empty',
        1: 'status-locked',
        100: 'status-occupied'
      };
      return classMap[status] || '';
    },
    getLocationTypeText(type) {
      const typeMap = {
        1: "布卷",
        2: "松布卷",
        3: "成品货位"
      };
      return typeMap[type] || "未知类型";
    },
    getEnableStatusText(status) {
      return status === 0 ? '启用' : '禁用';
    }
  },
  mounted() {
    this.fetchWarehouseData();
  },
  components: {
    ElButton,
    ElSelect,
    ElOption,
    ElEmpty,
    ElSkeleton
  },
};
</script>
    
<style scoped>
/* æ ·å¼éƒ¨åˆ†ä¿æŒä¸å˜ï¼Œä¸Žä¹‹å‰ç›¸åŒ */
.container {
  display: flex;
  flex-direction: column;
  height: 100vh;
  padding: 16px;
  box-sizing: border-box;
  background-color: #f0f2f5;
}
.header {
  text-align: center;
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid #e8e8e8;
}
.title {
  font-size: 22px;
  font-weight: 600;
  margin: 0;
  color: #1890ff;
}
.content-wrapper {
  display: flex;
  flex: 1;
  min-height: 0;
  gap: 16px;
}
.control-panel {
  width: 260px;
  background-color: white;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  overflow: hidden;
}
.panel-header {
  padding: 16px;
  border-bottom: 1px solid #e8e8e8;
  background-color: #fafafa;
}
.panel-header h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: #333;
}
.panel-body {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.form-group {
  margin-bottom: 0;
}
.form-label {
  display: block;
  margin-bottom: 6px;
  font-size: 14px;
  color: #666;
  font-weight: 500;
}
.full-width {
  width: 100%;
}
.refresh-btn {
  margin-top: 8px;
  width: 100%;
  height: 32px;
}
.legend-section {
  margin-top: 8px;
  padding-top: 16px;
  border-top: 1px solid #e8e8e8;
}
.legend-header h4 {
  margin: 0 0 12px 0;
  font-size: 15px;
  font-weight: 600;
  color: #333;
}
.legend-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.legend-item {
  display: flex;
  align-items: center;
  gap: 10px;
}
.color-box {
  width: 20px;
  height: 20px;
  border-radius: 4px;
  border: 1px solid rgba(0, 0, 0, 0.1);
  flex-shrink: 0;
}
.depth-shallow-legend {
  background-color: rgba(255, 255, 255, 0.7);
  border: 1px solid #2c3e50;
}
.depth-deep-legend {
  background-color: rgba(0, 0, 0, 0.7);
  border: 1px solid #000;
}
.legend-label {
  font-size: 13px;
  color: #666;
}
.main-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.loading-container {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background: white;
  border-radius: 8px;
  padding: 24px;
}
.location-container {
  flex: 1;
  display: flex;
  flex-direction: column;
  background: white;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  overflow: hidden;
  min-height: 0;
}
.location-header {
  padding: 16px 20px;
  background: #fafafa;
  border-bottom: 1px solid #e8e8e8;
  flex-shrink: 0;
}
.location-info {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 14px;
}
.total-count {
  font-weight: 600;
  color: #1890ff;
}
.layers-container {
  width: 100%;
  height: 100%;
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.layer-row {
  background: #f9f9f9;
  border-radius: 8px;
  border: 1px solid #e8e8e8;
  display: flex;
  flex-direction: column;
  min-height: auto;
}
.layer-title-area {
  padding: 12px 16px;
  background: #f0f0f0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-shrink: 0;
}
.layer-title {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: #333;
}
.layer-count {
  font-size: 12px;
  color: #666;
  background: white;
  padding: 4px 10px;
  border-radius: 12px;
  border: 1px solid #ddd;
}
.layer-content-wrap {
  width: 100%;
  overflow: hidden;
  flex: 1;
}
.layer-content {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  padding: 16px;
  min-width: 0;
  box-sizing: border-box;
}
.location-column {
  flex: 0 0 auto;
  width: 140px;
  min-height: 120px;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}
.column-label {
  font-size: 13px;
  font-weight: 600;
  color: #666;
  text-align: center;
  margin-bottom: 8px;
  padding-bottom: 4px;
  border-bottom: 1px dashed #ddd;
  flex-shrink: 0;
}
.locations-wrapper {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
  min-height: 0;
}
.location-item {
  min-height: 40px;
  padding: 6px 4px;
  border-radius: 4px;
  text-align: center;
  cursor: pointer;
  border: 1px solid rgba(0, 0, 0, 0.1);
  transition: all 0.2s;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  flex: 1;
}
.location-item:hover {
  transform: scale(1.05);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
  z-index: 10;
}
.location-code {
  font-size: 11px;
  font-weight: 500;
  line-height: 1.2;
  word-break: break-all;
}
.depth-indicator {
  font-size: 10px;
  padding: 2px 4px;
  border-radius: 3px;
  margin-top: 2px;
  font-weight: bold;
  transition: all 0.2s;
}
.depth-shallow {
  background-color: rgba(255, 255, 255, 0.7);
  color: #2c3e50;
}
.depth-deep {
  background-color: rgba(0, 0, 0, 0.7);
  color: white;
}
.location-item:hover .depth-indicator {
  transform: scale(1.1);
}
.location-status {
  font-size: 10px;
  padding: 1px 4px;
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.1);
}
.location-empty {
  background-color: lightgreen;
  color: #333;
}
.location-occupied {
  background-color: orange;
  color: white;
}
.location-locked {
  background-color: #2BB3D5;
  color: white;
}
.location-disabled {
  background-color: #ccc;
  color: #666;
  cursor: not-allowed;
}
.location-other {
  background-color: #b7ba6b;
  color: white;
}
.empty-container {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background: white;
  border-radius: 8px;
}
.location-tooltip {
  position: fixed;
  z-index: 9999;
  background-color: white;
  border: 1px solid #ddd;
  border-radius: 6px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  pointer-events: none;
  min-width: 220px;
  max-width: 300px;
}
.tooltip-content {
  overflow: hidden;
}
.tooltip-header {
  padding: 12px 16px;
  background-color: #1890ff;
  color: white;
}
.tooltip-header h4 {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
}
.tooltip-body {
  padding: 12px 16px;
}
.tooltip-row {
  display: flex;
  margin-bottom: 8px;
  font-size: 13px;
  line-height: 1.4;
}
.tooltip-row:last-child {
  margin-bottom: 0;
}
.tooltip-label {
  flex: 0 0 80px;
  color: #666;
  font-weight: 500;
}
.tooltip-value {
  flex: 1;
  color: #333;
  word-break: break-all;
}
.status-disabled {
  color: #f5222d;
}
@media (max-width: 1200px) {
  .location-column {
    width: 130px;
  }
}
@media (max-width: 768px) {
  .content-wrapper {
    flex-direction: column;
  }
  .control-panel {
    width: 100%;
  }
  .location-column {
    width: 120px;
  }
  .layer-content {
    gap: 12px;
  }
}
@media (max-width: 480px) {
  .location-column {
    width: 110px;
  }
  .location-code {
    font-size: 10px;
  }
  .layer-content {
    gap: 10px;
    padding: 12px;
  }
  @media (max-width: 380px) {
    .location-column {
      width: 100px;
    }
  }
}
.layers-container::-webkit-scrollbar {
  width: 8px;
}
.layers-container::-webkit-scrollbar-track {
  background: #f1f1f1;
  border-radius: 4px;
}
.layers-container::-webkit-scrollbar-thumb {
  background: #c1c1c1;
  border-radius: 4px;
}
.layers-container::-webkit-scrollbar-thumb:hover {
  background: #a8a8a8;
}
</style>
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/system/txt_log.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,297 @@
<template>
    <div class="mian_log">
        <div class="log_tree">
            <div class="log_search">
                <el-input v-model.lazy="filterText" placeholder="请输入查询关键字" clearable />
                <el-button type="success" @click="ReloadTree()">刷 æ–°</el-button>
            </div>
            <el-tree class="log_el_tree" ref="treeRef" :data="treeData" :props="treeProps" :filter-node-method="treeFilter">
                <template #default="{ node, data }">
                    <div class="treeItem">
                        <div>{{ node.label }}</div>
                        <div style="padding-left: 10px;" v-if="isFile(data)">
                            <a href="javascript:;" @click="GetContent(data)"> æ‰“å¼€ </a>
                            <!-- ||<a href="javascript:;" @click="DonwLog(data)"> ä¸‹è½½ </a> -->
                        </div>
                    </div>
                </template>
            </el-tree>
        </div>
        <div class="log_line"></div>
        <div class="log_content">
            <div>
                <h2>{{ this.fileName }}</h2>
                <div class="log_size">{{ GetSize() }}</div>
                <el-checkbox v-model="keepRead">保持读取</el-checkbox>
            </div>
            <div ref="pre" v-if="content">
                <el-progress :percentage="percentage" @click="ChangePercent($event)" color="#f56c6c" />
            </div>
            <div ref="showdata" @scroll="handleScroll($event)" style="white-space: pre-wrap;word-break: break-all">{{
                content }}</div>
        </div>
    </div>
</template>
<script>
export default ({
    data() {
        return {
            filterText: "",
            treeData: [],
            treeProps: {
                children: 'dirs',
                label: 'dirName',
            },
            keepRead: false,
            percentage: 100,
            topStartPos: 0,
            fileSize: "",
            filePath: "",
            fileName: "",
            content: "",
            isClick: false,
            keepReadTimer: null
        }
    },
    watch: {
        filterText(val) {
            this.$refs.treeRef.filter(val)
        },
        keepRead(val) {
            if (val) {
                this.keepReadTimer = setInterval(() => {
                    if (this.filePath) {
                        var parm = {
                            path: this.filePath,
                            percent: 100,
                            maxsize_KB: 10
                        }
                        this.percentage = 100;
                        this.http.post('/api/Sys_Log/GetLogData', parm).then((res) => {
                            this.content = res.data.content;
                            this.topStartPos = res.data.startIndex;
                            this.$nextTick(function () {
                                this.$refs.showdata.scrollTo(0, this.$refs.showdata.scrollHeight)
                            })
                        })
                    }
                }, 1500);
            } else {
                clearInterval(this.keepReadTimer);
            }
        }
    },
    methods: {
        treeFilter(value, data) {
            if (!value) return true
            return data.dirName.includes(value)
        },
        isFile(data) {
            if (data.dirPath) {
                return data.dirPath.indexOf(".log") != -1 || data.dirPath.indexOf(".txt") != -1;
            }
            return false;
        },
        ChangePercent(event) {
            var bar = window.document.getElementsByClassName('el-progress-bar')[0]
            var res = event.offsetX / bar.offsetWidth * 100;
            var percent = parseFloat(res.toFixed(2));
            if (percent < 1) {
                percent = 0;
            }
            if (percent > 99) {
                percent = 100;
            }
            this.percentage = percent;
            var parm = {
                path: this.filePath,
                percent: this.percentage,
                maxsize_KB: 20
            }
            this.http.post('/api/Sys_Log/GetLogData', parm).then((res) => {
                this.isClick = true;
                this.content = res.data.content;
                this.topStartPos = res.data.startIndex;
                this.$nextTick(function () {
                    if (percent == 100) {
                        this.$refs.showdata.scrollTo(0, this.$refs.showdata.scrollHeight)
                    } else {
                        this.$refs.showdata.scrollTo(0, 1)
                    }
                })
                setTimeout(() => {
                    this.isClick = false;
                }, 1000)
            })
        },
        GetContent(data) {
            var parm = {
                path: data.dirPath,
                percent: 100,
                maxsize_KB: 20
            }
            this.filePath = data.dirPath;
            this.fileName = data.dirName;
            this.percentage = parm.percent;
            this.http.post('/api/Sys_Log/GetLogData', parm).then((res) => {
                this.content = res.data.content;
                this.topStartPos = res.data.startIndex;
                this.fileSize = res.data.len;
                this.$nextTick(function () {
                    this.$refs.showdata.scrollTo(0, this.$refs.showdata.scrollHeight);
                })
            })
        },
        handleScroll() {
            const scrollTop = this.$refs.showdata.scrollTop;
            if (scrollTop == 0 && !this.isClick) {
                if (this.topStartPos == 0) {
                    this.percentage = 0;
                    return;
                }
                var parm = {
                    path: this.filePath,
                    maxsize_KB: 10,
                    topStartPos: this.topStartPos
                }
                this.http.post('/api/Sys_Log/GetLogData', parm).then((res) => {
                    this.topStartPos = res.data.startIndex;
                    var per = res.data.startIndex / res.data.len * 100;
                    this.percentage = parseFloat(per.toFixed(2));
                    if (this.percentage == 0 && res.data.startIndex != 0) {
                        this.percentage = 0.1;
                    }
                    this.content = res.data.content + this.content;
                    this.$nextTick(function () {
                        this.$refs.showdata.scrollTo(0, 1)
                    })
                })
            }
        },
        DonwLog(data) {
            var url = this.http.axios.defaults.baseURL + 'api/Sys_Log/DownLog';
            url += "?filePath=" + data.dirPath;
            window.location.href = encodeURI(url);
        },
        ReloadTree() {
            this.http.post("/api/Sys_Log/GetLogList", {}, "加载目录中……")
                .then(res => {
                    this.treeData = res.data.dirs;
                })
        },
        GetSize(size) {
            var size = this.fileSize;
            if (!size) {
                return ''
            } else if (size < 1024) {
                size = size + "B"
            } else if (size < 1024 * 1024) {
                size = (size / 1024).toFixed(2) + "KB"
            } else {
                size = (size / 1024 / 1024).toFixed(2) + "MB"
            }
            return "文件大小:" + size;
        }
    },
    mounted() {
        this.http.post("/api/Sys_Log/GetLogList", {}, "加载目录中……")
            .then(res => {
                this.treeData = res.data.dirs;
            })
    }
})
</script>
<style scoped>
.mian_log {
    height: calc(100vh - 96px);
    padding: 10px 10px;
    display: flex;
    width: 100%;
}
.log_tree {
    width: 420px;
    height: 100%;
    display: flex;
    flex-direction: column;
}
.log_search {
    display: flex;
}
.log_search :last-child {
    margin-left: 5px;
}
.log_el_tree {
    width: 100%;
    overflow-x: auto;
    flex: 1;
}
.treeItem {
    overflow-x: auto;
    flex: 1;
    display: flex;
    justify-content: space-between;
}
.treeItem::-webkit-scrollbar {
    height: 5px;
}
.treeItem::-webkit-scrollbar-thumb {
    /* å®šä¹‰æ»šåŠ¨æ¡æ»‘å—é¢œè‰² */
    background: #ccc;
}
.treeItem::-webkit-scrollbar-thumb:hover {
    /* å®šä¹‰æ»šåŠ¨æ¡æ»‘å—æ‚¬åœé¢œè‰² */
    background: orange;
}
.log_line {
    margin: 5px 16px;
    border-left: 2px dashed orange;
}
.log_content {
    flex: 1;
    display: flex;
    flex-direction: column;
}
.log_content>div:first-child {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.log_size {
    font-size: 13px;
    color: #bbb;
}
.log_content>div:last-child {
    flex: 1;
    overflow-y: scroll;
    margin-top: 5px;
    padding-top: 5px;
    border-top: 1px solid black;
}
a {
    color: blue;
}
</style>
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue
@@ -26,8 +26,34 @@
      url: "/Task/",
      sortName: "CreateDate",
    });
    const editFormFields = ref({});
    const editFormOptions = ref([]);
    const editFormFields = ref({
      taskNum: "",
      palletCode: "",
      roadway: "",
      taskStatus: "",
      taskType: "",
      sourceAddress: "",
      targetAddress: "",
      currentAddress: "",
      nextAddress: "",
      creater: "",
      createDate: "",
      palletType:"",
      WarehouseId:"",
    });
    const editFormOptions = ref([
      [
        { title: "任务状态",field: "taskStatus",type: "select",dataKey: "taskStatusEnum",data: [],},
      ],
      [
        { title: "起始地址", field: "sourceAddress", type: "string" },
        { title: "目标地址", field: "targetAddress", type: "string" },
      ],
      [
        { title: "当前位置", field: "currentAddress", type: "string" },
        { title: "下一位置", field: "nextAddress", type: "string" },
      ]
    ]);
    const searchFormFields = ref({
      taskNum: "",
      palletCode: "",
@@ -77,14 +103,14 @@
        field: "palletCode",
        title: "托盘编号",
        type: "string",
        width: 160,
        width: 120,
        align: "left",
      },
      {
        field: "palletType",
        title: "托盘类型",
        type: "string",
        width: 120,
        width: 80,
        align: "left",
        bind: { key: "taskpalltype", data: [] },
      },
@@ -92,14 +118,21 @@
        field: "roadway",
        title: "巷道号",
        type: "string",
        width: 120,
        width: 70,
        align: "left",
      },{
        field: "warehouseId",
        title: "仓库编号",
        type: "int",
        width: 80,
        align: "left",
        bind: { key: "warehouseEnum", data: [] },
      },
      {
        field: "taskType",
        title: "任务类型",
        type: "int",
        width: 120,
        width: 90,
        align: "left",
        bind: { key: "taskTypeEnum", data: [] },
      },
@@ -107,7 +140,7 @@
        field: "taskStatus",
        title: "任务状态",
        type: "int",
        width: 150,
        width: 120,
        align: "left",
        bind: { key: "taskStatusEnum", data: [] },
      },
@@ -115,28 +148,35 @@
        field: "sourceAddress",
        title: "起始地址",
        type: "int",
        width: 220,
        width: 150,
        align: "left",
      },
      {
        field: "targetAddress",
        title: "目标地址",
        type: "string",
        width: 220,
        width: 150,
        align: "left",
      },
      {
        field: "currentAddress",
        title: "当前位置",
        type: "string",
        width: 120,
        width: 150,
        align: "left",
      },
      {
        field: "nextAddress",
        title: "下一位置",
        type: "string",
        width: 120,
        width: 150,
        align: "left",
      },
      {
        field: "numberSsuances",
        title: "异常次数",
        type: "string",
        width: 100,
        align: "left",
      },
      {
@@ -145,15 +185,14 @@
        type: "string",
        width: 100,
        align: "left",
        hidden: true,
      },
      {
        field: "grade",
        title: "优先级",
        type: "int",
        width: 80,
        align: "left",
      },
      // {
      //   field: "grade",
      //   title: "优先级",
      //   type: "int",
      //   width: 80,
      //   align: "left",
      // },
      {
        field: "dispatchertime",
        title: "任务下发时间",
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue
@@ -61,12 +61,17 @@
    const columns = ref([
      {
        field: "taskId",
        title: "taskId",
        title: "主键",
        type: "int",
        width: 90,
        align: "left",
        hidden: true,
        readonly: true,
        require: true,
      },
      {
        field: "sourceId",
        title: "任务号",
        type: "int",
        width: 90,
        align: "left",
      },
      {
@@ -80,28 +85,37 @@
        field: "palletCode",
        title: "托盘编号",
        type: "string",
        width: 160,
        width: 120,
        align: "left",
      },{
      },
      {
        field: "palletType",
        title: "托盘类型",
        type: "string",
        width: 120,
        width: 80,
        align: "left",
        bind: { key: "taskhtypalltype", data: [] },
      },
      {
        field: "warehouseId",
        title: "仓库编号",
        type: "int",
        width: 80,
        align: "left",
        bind: { key: "warehouseEnum", data: [] },
      },
      {
        field: "roadway",
        title: "巷道号",
        type: "string",
        width: 120,
        width: 70,
        align: "left",
      },
      {
        field: "taskType",
        title: "任务类型",
        type: "int",
        width: 120,
        width: 90,
        align: "left",
        bind: { key: "taskTypeEnum", data: [] },
      },
@@ -109,7 +123,7 @@
        field: "taskStatus",
        title: "任务状态",
        type: "int",
        width: 150,
        width: 120,
        align: "left",
        bind: { key: "taskStatusEnum", data: [] },
      },
@@ -117,58 +131,58 @@
        field: "sourceAddress",
        title: "起始地址",
        type: "int",
        width: 220,
        width: 150,
        align: "left",
      },
      {
        field: "targetAddress",
        title: "目标地址",
        type: "string",
        width: 220,
        width: 150,
        align: "left",
      },
      {
        field: "currentAddress",
        title: "当前位置",
        type: "string",
        width: 120,
        width: 150,
        align: "left",
      },
      {
        field: "nextAddress",
        title: "下一位置",
        type: "string",
        width: 120,
        width: 150,
        align: "left",
      },
      {
        field: "exceptionMessage",
        title: "异常信息",
        field: "numberSsuances",
        title: "异常次数",
        type: "string",
        width: 90,
        align: "left",
        hidden: true,
      },
      {
        field: "grade",
        title: "优先级",
        type: "int",
        width: 80,
        width: 100,
        align: "left",
      },
      {
        field: "depth",
        title: "深度",
        type: "int",
        width: 80,
        field: "remark",
        title: "备注",
        type: "string",
        width: 100,
        align: "left",
      },
      // {
      //   field: "grade",
      //   title: "优先级",
      //   type: "int",
      //   width: 80,
      //   align: "left",
      // },
      {
        field: "dispatchertime",
        title: "任务下发时间",
        type: "datetime",
        width: 150,
        width: 160,
        align: "left",
        hidden:true,
      },
      {
        field: "wMSId",
@@ -178,13 +192,13 @@
        align: "left",
        hidden: true,
      },
      {
        field: "creater",
        title: "创建人",
        type: "string",
        width: 90,
        align: "left",
      },
      // {
      //   field: "creater",
      //   title: "创建人",
      //   type: "string",
      //   width: 90,
      //   align: "left",
      // },
      {
        field: "createDate",
        title: "创建时间",
@@ -192,28 +206,21 @@
        width: 160,
        align: "left",
      },
      {
        field: "modifier",
        title: "修改人",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "modifyDate",
        title: "修改时间",
        type: "datetime",
        width: 160,
        align: "left",
      },
      {
        field: "remark",
        title: "备注",
        type: "string",
        width: 100,
        align: "left",
        hidden: true,
      },
      // {
      //   field: "modifier",
      //   title: "修改人",
      //   type: "string",
      //   width: 100,
      //   align: "left",
      // },
      // {
      //   field: "modifyDate",
      //   title: "修改时间",
      //   type: "datetime",
      //   width: 160,
      //   align: "left",
      // },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-shm
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/CodeChunks.db-wal
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-shm
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1368.60722/SemanticSymbols.db-wal
Binary files differ
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json
@@ -3,28 +3,36 @@
  "WorkspaceRootPath": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
@@ -38,79 +46,108 @@
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "TaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ViewState": "AgIAAG0BAAAAAAAAAAAiwEsBAAAAAAAAAAAAAA==",
              "DocumentIndex": 4,
              "Title": "ServiceBase.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
              "RelativeToolTip": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
              "ViewState": "AgIAABYCAAAAAAAAAAAkwCUCAAANAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-21T01:17:15.212Z",
              "WhenOpened": "2026-01-22T07:17:23.833Z",
              "IsPinned": true,
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "WCSTaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "ViewState": "AgIAAFAAAAAAAAAAAAAgwFoAAABVAAAAAAAAAA==",
              "Title": "TaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ViewState": "AgIAAGQCAAAAAAAAAADgv4oCAAC4AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-21T01:27:15.484Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "MESTaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs",
              "ViewState": "AgIAAFoAAAAAAAAAAAAUwDgAAAA8AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-20T02:01:01.744Z",
              "WhenOpened": "2026-01-22T06:53:09.745Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "Title": "TaskController.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ViewState": "AgIAAAwAAAAAAAAAAAAmwCMAAAAsAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-20T01:43:30.571Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "Title": "WCSTaskController.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
              "ViewState": "AgIAAAAAAAAAAAAAAADwvxwAAAAiAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-20T01:43:23.989Z"
              "WhenOpened": "2026-01-22T06:53:05.769Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 5,
              "Title": "MesTaskController.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
              "ViewState": "AgIAACMAAAAAAAAAAAAUwDoAAAAeAAAAAAAAAA==",
              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-20T01:28:52.214Z"
              "WhenOpened": "2026-01-22T06:53:03.269Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "Title": "Dt_Task.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "RelativeToolTip": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "ViewState": "AgIAAHcAAAAAAAAAAAAqwJYAAAAmAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-22T06:36:14.643Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "WMSCruJob.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
              "ViewState": "AgIAABsBAAAAAAAAAAAtwDEBAABHAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-22T06:23:38.441Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "WCSTaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "ViewState": "AgIAAAsAAAAAAAAAAAAcwCgAAABpAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-22T03:56:43.195Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "Title": "TaskController.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ViewState": "AgIAABIAAAAAAAAAAAAAABwAAAAjAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-21T09:31:31.363Z",
              "EditorCaption": ""
            }
          ]
        }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json
@@ -3,32 +3,36 @@
  "WorkspaceRootPath": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wmscrujob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\wcstaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\mestaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\baseservices\\servicebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\mestaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\wcstaskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\taskinfo\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|f:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\yingmeiwmsxiangmu\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\taskinfo\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
@@ -38,84 +42,47 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 0,
          "SelectedChildIndex": 1,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "appsettings.json",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAxAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
              "WhenOpened": "2026-01-21T05:38:33.518Z",
              "DocumentIndex": 4,
              "Title": "ServiceBase.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
              "RelativeDocumentMoniker": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\ServiceBase.cs",
              "RelativeToolTip": "WIDESEA_Core\\BaseServices\\ServiceBase.cs",
              "ViewState": "AgIAABYCAAAAAAAAAAAkwCUCAAANAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-22T07:17:23.833Z",
              "IsPinned": true,
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "DocumentIndex": 0,
              "Title": "TaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ViewState": "AgIAAG0BAAAAAAAAAAAiwEsBAAAAAAAAAAAAAA==",
              "ViewState": "AgIAAFoCAAAAAAAAAAAAAIoCAAAuAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-21T01:17:15.212Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "WCSTaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "ViewState": "AgIAAFAAAAAAAAAAAAAgwFoAAABVAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-21T01:27:15.484Z",
              "WhenOpened": "2026-01-22T06:53:09.745Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "Title": "MESTaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\MESTaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\MESTaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\MESTaskService.cs",
              "ViewState": "AgIAAFoAAAAAAAAAAAAUwDgAAAA8AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-20T02:01:01.744Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "Title": "TaskController.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ViewState": "AgIAAAwAAAAAAAAAAAAmwCMAAAAsAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-20T01:43:30.571Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "Title": "WCSTaskController.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\WCSTaskController.cs",
              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
              "ViewState": "AgIAAAAAAAAAAAAAAADwvxwAAAAiAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-20T01:43:23.989Z"
              "WhenOpened": "2026-01-22T06:53:05.769Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
@@ -125,9 +92,62 @@
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\MesTaskController.cs",
              "ViewState": "AgIAACMAAAAAAAAAAAAUwDoAAAAeAAAAAAAAAA==",
              "ViewState": "AgIAAAwAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-20T01:28:52.214Z"
              "WhenOpened": "2026-01-22T06:53:03.269Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "Title": "Dt_Task.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "RelativeToolTip": "WIDESEA_Model\\Models\\TaskInfo\\Dt_Task.cs",
              "ViewState": "AgIAAHcAAAAAAAAAAAAqwJYAAAAmAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-22T06:36:14.643Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "WMSCruJob.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WMSCruJob.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\WMSCruJob.cs",
              "ViewState": "AgIAABsBAAAAAAAAAAAtwDEBAABHAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-22T06:23:38.441Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "WCSTaskService.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\WCSTaskService.cs",
              "ViewState": "AgIAAAsAAAAAAAAAAAAcwCgAAABpAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-22T03:56:43.195Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "Title": "TaskController.cs",
              "DocumentMoniker": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ToolTip": "F:\\1-\u51FA\u5DEE\u9879\u76EE\\\u9E70\u7F8E\\\u9E70\u7F8E\u667A\u80FD\u5DE5\u5382\u7ACB\u4F53\u5E93\u9879\u76EE\\1-13\\YingMeiWMSXiangMu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ViewState": "AgIAABIAAAAAAAAAAAAAABwAAAAjAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-01-21T09:31:31.363Z",
              "EditorCaption": ""
            }
          ]
        }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
@@ -305,5 +305,68 @@
            public DateTime DateTime { get; set; }
        }
        public WebResponseContent GetArea()
        {
            // WarehouseId分组,然后是RoadwayNo
            var result = BaseDal.QueryData()
                .GroupBy(x => x.WarehouseId)
                .Select(g => new {
                    WarehouseId = g.Key,
                    RoadwayNo = g.Select(x => x.RoadwayNo).Distinct().ToList()
                })
                .ToList();
            return WebResponseContent.Instance.OK("成功", result);
        }
        public WebResponseContent GetLocationStatus(int WarehouseId, string RoadwayNo)
        {
            // æ ¼å¼{层,{这一层的列数据}}
            var locations = BaseDal.QueryData(x => x.WarehouseId == WarehouseId && x.RoadwayNo == RoadwayNo)
                .Select(x => new
                {
                    x.RoadwayNo,
                    x.WarehouseId,
                    x.Row,
                    x.Column,
                    x.Layer,
                    x.Depth,
                    x.LocationType,
                    x.LocationStatus,
                    x.EnableStatus
                })
                .ToList();
            // å¦‚果没有找到数据,返回空列表而不是null
            if (locations == null || !locations.Any())
            {
                return WebResponseContent.Instance.OK("未找到对应巷道的货位数据", new List<object>());
            }
            // ä¿®æ”¹ä¸ºå±‚下面放所有列的信息
            var result = locations
                .GroupBy(x => x.Layer)  // æŒ‰å±‚分组
                .Select(layerGroup => new
                {
                    layer = layerGroup.Key,
                    columns = layerGroup.GroupBy(x => x.Column)  // æ¯å±‚中按列分组
                                       .Select(columnGroup => new
                                       {
                                           column = columnGroup.Key,
                                           depths = columnGroup.Select(d => new
                                           {
                                               row = d.Row,
                                               depth = d.Depth,
                                               locationType = d.LocationType,
                                               locationStatus = d.LocationStatus,
                                               enableStatus = d.EnableStatus
                                           }).ToList()
                                       }).ToList()
                }).ToList();
            return WebResponseContent.Instance.OK("成功", result);
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_IBasicService/ILocationInfoService.cs
@@ -74,5 +74,10 @@
        /// </summary>
        /// <returns></returns>
        Dt_LocationInfo? ShallowGetLocation(string roadway, int Locationtype, int row, int Layer, int Column);
        WebResponseContent GetArea();
        WebResponseContent GetLocationStatus(int WarehouseId, string RoadwayNo);
    }
    }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_IStockService/IStockService.cs
@@ -16,5 +16,7 @@
        IStockInfoDetail_HtyService StockInfoDetail_HtyService { get; }
        IStockInfo_HtyService StockInfo_HtyService { get; }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_ISystemService/ISys_LogService.cs
@@ -3,12 +3,234 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_Model.Models;
namespace WIDESEA_ISystemService
{
    #region å®žä½“ç±»
    public class DirInfo
    {
        /// <summary>
        /// å½“前路径
        /// </summary>
        public string dirPath { get; set; }
        /// <summary>
        /// å½“前名称
        /// </summary>
        public string dirName { get; set; }
        /// <summary>
        /// å­æ–‡ä»¶
        /// </summary>
        public List<FileDataInfo> files { get; set; }
        /// <summary>
        /// å­æ–‡ä»¶å¤¹
        /// </summary>
        public List<DirInfo> dirs { get; set; }
    }
    public class FileDataInfo
    {
        public string filePath { get; set; }
        public string fileName { get; set; }
        public long fileSize { get; set; }
    }
    public class GetLogParm
    {
        /// <summary>
        /// æ–‡ä»¶åœ°å€
        /// </summary>
        public string path;
        /// <summary>
        /// è¯»å–进度
        /// </summary>
        public float percent;
        /// <summary>
        /// æœ€å¤§è¯»å–大小
        /// </summary>
        public double maxsize_KB = 20;
        /// <summary>
        /// å½“前起始位置
        /// </summary>
        public long topStartPos = 0;
    }
    #endregion
    public interface ISys_LogService : IService<Sys_Log>
    {
        /// <summary>
        /// é€’归获取文件信息
        /// </summary>
        /// <param name="dirPath"></param>
        /// <returns></returns>
        private DirInfo GetDirInfo(string dirPath)
        {
            //当前文件夹
            var dirInfo = new DirInfo();
            dirInfo.dirName = Path.GetFileName(dirPath);
            //子文件
            List<FileDataInfo> files = new List<FileDataInfo>();
            foreach (var file in Directory.GetFiles(dirPath))
            {
                files.Add(new FileDataInfo()
                {
                    filePath = file,
                    fileName = Path.GetFileName(file)
                });
            }
            //子文件夹
            var dirs = Directory.GetDirectories(dirPath);
            dirInfo.dirs = new List<DirInfo>();
            foreach (var dir in dirs)
            {
                dirInfo.dirs.Add(GetDirInfo(dir));
            }
            //子文件夹,与子目录合并
            foreach (var file in files)
            {
                dirInfo.dirs.Add(new DirInfo() { dirPath = file.filePath, dirName = file.fileName });
            }
            return dirInfo;
        }
        /// <summary>
        /// èŽ·å–æ—¥å¿—æ–‡ä»¶åˆ—è¡¨
        /// </summary>
        /// <returns></returns>
        public WebResponseContent GetLogList()
        {
            WebResponseContent content = new WebResponseContent();
            string path = System.Environment.CurrentDirectory + "/log";
            if (!System.IO.Directory.Exists(path))
            {
                return content.Error("暂无日志文件");
            }
            content.Data = GetDirInfo(path);
            content.OK();
            return content;
        }
        /// <summary>
        /// èŽ·å–æ–‡ä»¶å†…å®¹
        /// </summary>
        /// <param name="parm"></param>
        /// <returns></returns>
        public WebResponseContent GetLogData(GetLogParm parm)
        {
            WebResponseContent content = new WebResponseContent();
            string res = "";
            //是否读取到最后
            bool isEnd = false;
            long startIndex = 0;
            //文件大小
            long len = 0;
            try
            {
                if (!System.IO.File.Exists(parm.path))
                {
                    throw new Exception($"文件{parm.path}不存在!");
                }
                using (FileStream fs = new FileStream(parm.path, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    //最大读取大小
                    int maxsize = (int)(1024 * parm.maxsize_KB);
                    len = fs.Length;
                    long startPos = (long)(len * (parm.percent / 100));//起始位置
                    long readLen = len - startPos;//读取长度
                    //向前加载
                    if (parm.topStartPos != 0)
                    {
                        startPos = parm.topStartPos - maxsize;
                        if (startPos < 0)
                        {
                            //已读到起始位
                            startPos = 0;
                            readLen = parm.topStartPos;
                        }
                        else
                        {
                            readLen = maxsize;
                        }
                    }
                    else
                    {
                        //读取大小是否超出最大长度
                        if (readLen > maxsize)
                        {
                            readLen = maxsize;
                        }
                        else
                        {
                            isEnd = true;
                        }
                    }
                    //加载100%,按最大内容读取
                    if (parm.percent == 100)
                    {
                        if (len < maxsize)
                        {
                            startPos = 0;
                            readLen = len;
                        }
                        else
                        {
                            startPos = len - maxsize;
                            readLen = maxsize;
                        }
                    }
                    fs.Seek(startPos, SeekOrigin.Begin);
                    var buffer = new byte[readLen];
                    fs.Read(buffer, 0, (int)readLen);
                    startIndex = startPos;
                    if (startPos != 0 && (parm.percent != 0 || parm.topStartPos != 0))
                    {
                        //不是从头加载,删除可能不完整的第一行
                        int skipCount = 0;
                        for (int i = 0; i < buffer.Length; i++)
                        {
                            if (buffer[i] == 10)
                            {
                                skipCount = i;
                                break;
                            }
                        }
                        if (skipCount != 0)
                        {
                            //去掉换行
                            skipCount++;
                            //下次读取前延
                            startIndex += skipCount;
                        }
                        res = Encoding.UTF8.GetString(buffer.Skip(skipCount).ToArray());
                    }
                    else
                    {
                        res = Encoding.UTF8.GetString(buffer);
                    }
                }
            }
            catch (Exception ex)
            {
                return content.Error(ex.Message);
            }
            return content.OK(data: new { content = res, isEnd, startIndex, len });
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -48,8 +48,11 @@
        //WCS入库获取
        WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask);
        //上传MES,手动完成
        WebResponseContent MESManualUpload(SaveModel saveModel);
        //恢复任务
        WebResponseContent WMSTaskRecovery(SaveModel saveModel);
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs
@@ -108,7 +108,7 @@
        /// </summary>
        [ImporterHeader(Name = "仓库主键")]
        [ExporterHeader(DisplayName = "仓库主键")]
        [SugarColumn(IsNullable = false, ColumnDescription = "仓库主键")]
        [SugarColumn(IsNullable = true, ColumnDescription = "仓库主键")]
        public int WarehouseId { get; set; }
        /// <summary>
@@ -124,7 +124,7 @@
        /// </summary>
        [ImporterHeader(Name = "优先级")]
        [ExporterHeader(DisplayName = "优先级")]
        [SugarColumn(IsNullable = false, ColumnDescription = "优先级")]
        [SugarColumn(IsNullable = true, ColumnDescription = "优先级")]
        public int Grade { get; set; }
        /// <summary>
@@ -148,7 +148,7 @@
        /// </summary>
        [ImporterHeader(Name = "下发次数")]
        [ExporterHeader(DisplayName = "下发次数")]
        [SugarColumn(IsNullable = false, ColumnDescription = "下发次数")]
        [SugarColumn(IsNullable = true, ColumnDescription = "下发次数")]
        public int NumberSsuances { get; set; }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
@@ -1,8 +1,13 @@
using AutoMapper;
using Org.BouncyCastle.Crypto;
using SqlSugar;
using StackExchange.Profiling.Internal;
using WIDESEA_Common.Log;
using WIDESEA_Common.StockEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Utilities;
using WIDESEA_IStockService;
using WIDESEA_Model.Models;
@@ -39,5 +44,56 @@
                return webResponse.Error($"库存添加错误:原因:{ex.Message}");
            }
        }*/
        public virtual WebResponseContent DeleteData(object[] keys)
        {
            List<Dt_StockInfo> stodata = new List<Dt_StockInfo>();
            try
            {
                if (typeof(Dt_StockInfo).GetNavigatePro() == null)
                    return BaseDal.DeleteDataByIds(keys) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
                else
                {
                    if (keys != null)
                    {
                        Type detailType = typeof(Dt_StockInfo).GetDetailType();
                        string name = typeof(Dt_StockInfo).GetMainIdByDetail();
                        List<object> dynamicDelKeys = new List<object>();
                        for (int i = 0; i < keys.Length; i++)
                        {
                            dynamicDelKeys.Add(keys[i]);
                        }
                        ((SqlSugarClient)BaseDal.Db).BeginTran();
                        foreach (var key in keys)
                        {
                            int idt = int.Parse(key.ToString());
                            stodata.Add(BaseDal.QueryData(x => x.Id == idt).FirstOrDefault());
                        }
                        if (dynamicDelKeys.Count > 0)
                            WriteLog.Write_Log("WMS_删除库存", $"删除信息", "成功", $"参数:{stodata.ToJson()}");
                            BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{name} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange();
                        BaseDal.DeleteDataByIds(keys);
                        ((SqlSugarClient)BaseDal.Db).CommitTran();
                        return WebResponseContent.Instance.OK();
                    }
                    else
                    {
                        return WebResponseContent.Instance.Error("参数错误");
                    }
                }
            }
            catch (Exception ex)
            {
                ((SqlSugarClient)BaseDal.Db).RollbackTran();
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
@@ -4,6 +4,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_IStockService;
using WIDESEA_Model.Models;
namespace WIDESEA_StockService
{
@@ -23,5 +24,7 @@
            StockInfoDetail_HtyService = stockInfoDetail_HtyService;
            StockInfo_HtyService = stockInfo_HtyService;
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_LogService.cs
@@ -15,5 +15,7 @@
        public Sys_LogService(IRepository<Sys_Log> BaseDal) : base(BaseDal)
        {
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MESTaskService.cs
@@ -33,7 +33,7 @@
        //入库,空盘回库
        public ApiResponse AddInStoreDoc(MES_InTask mES_In)
        {
            WriteLog.Write_Log("MES_接收MES入库任务下发", $"任务接收参数", "接收参数", $"参数:{mES_In.ToJson()}");
            WriteLog.Write_Log("MES_接收入库任务下发", $"任务接收参数", "接收参数", $"参数:{mES_In.ToJson()}");
            ApiResponse apiResponse = new ApiResponse();
            try
            {
@@ -120,13 +120,13 @@
                BaseDal.AddData(task);
                //_stockInfoService.Repository.AddData(dt_StockInfo);
                _unitOfWorkManage.CommitTran();
                WriteLog.Write_Log("MES_接收MES入库任务下发", $"反馈信息", "成功", $"任务添加成功,托盘条码:{task.PalletCode}");
                WriteLog.Write_Log("MES_接收入库任务下发", $"反馈信息", "成功", $"任务添加成功,托盘条码:{task.PalletCode}");
                return apiResponse.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                WriteLog.Write_Log("MES_接收MES入库任务下发", $"反馈信息", "失败", $"任务添加失败,托盘条码:{mES_In.containerNo},系统出错原因:{ex.Message}");
                WriteLog.Write_Log("MES_接收入库任务下发", $"反馈信息", "失败", $"任务添加失败,托盘条码:{mES_In.containerNo},系统出错原因:{ex.Message}");
                return apiResponse.Error($"WMS任务添加错误,原因:{ex.Message}");
            }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -38,6 +38,7 @@
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Task;
using WIDESEA_IBasicService;
@@ -99,10 +100,14 @@
            return WebResponseContent.Instance.OK();
        }
        //手动,任务上报
        #region
        public WebResponseContent MESManualUpload(SaveModel saveModel)
        {
            WebResponseContent response = new WebResponseContent();
            List<Dt_Task> stdata=new List<Dt_Task>();
            try
            {
                foreach (var key in saveModel.DelKeys)
@@ -113,14 +118,17 @@
                    WebResponseContent taskResult = ProcessTask(task);
                    if (!taskResult.Status)
                    {
                        WriteLog.Write_Log("WMS_手动上报任务", $"任务上报", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode},", $"原因:{taskResult.Message}");
                        return taskResult;
                    }
                    stdata.Add(task);
                }
                WriteLog.Write_Log("WMS_手动上报任务", $"任务上报", $"成功", $"上报的数据:{stdata.ToJson()}");
                return response.OK("所有任务处理成功");
            }
            catch (Exception ex)
            {
                WriteLog.Write_Log("WMS_手动上报任务", $"任务上报", $"失败", $"WMS任务完成错误:{ex.Message}");
                return response.Error($"WMS任务完成错误:{ex.Message}");
            }
        }
@@ -168,12 +176,15 @@
            return 0;
        }
        #endregion
        /// <summary>
        /// ä»»åŠ¡å®ŒæˆæŽ¥å£
        /// </summary>
        /// <param name="wCSTask"></param>
        /// <returns></returns>
        #region ä»»åŠ¡å®Œæˆ
        public WebResponseContent TaskCompleted(WCSTaskDTO wCSTask)
        {
            WebResponseContent webResponse= new WebResponseContent();
@@ -241,13 +252,22 @@
                                //查找货位,更新任务
                                Dt_LocationInfo dt_Location = _locationInfoService.GetLocation(task.Roadway, loctype);
                                if(dt_Location==null) return content.Error($"未找到该货位信息,托盘编号:{task.PalletCode}");
                                if (dt_Location == null)
                                {
                                    WriteLog.Write_Log("WCS_入库_上报完成", $"输送线完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"未找到该货位信息,托盘编号:{task.PalletCode}");
                                    return content.Error($"未找到该货位信息,托盘编号:{task.PalletCode}");
                                }
                                Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column);
                                if (ShallowCargoHold == null) return content.Error($"未找到该货位信息,货位编号:{dt_Location.LocationCode}的浅货位");
                                if (ShallowCargoHold == null)
                                {
                                    WriteLog.Write_Log("WCS_入库_上报完成", $"输送线完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"未找到该货位信息,货位编号:{dt_Location.LocationCode}的浅货位");
                                    return content.Error($"未找到该货位信息,货位编号:{dt_Location.LocationCode}的浅货位");
                                }
                                if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"任务号:{task.TaskId},托盘编号:{task.PalletCode},查找的货位浅货位有货,货位编号:{ShallowCargoHold.LocationCode}");
                                if (task.PalletCode[0] == 1 && (dt_Location.RoadwayNo == "1" || dt_Location.RoadwayNo == "2") && dt_Location.Column < 4)
                                {
                                    WriteLog.Write_Log("WCS_入库_上报完成", $"输送线完成", $"失败,托盘条码:{task.PalletCode},货位编号:{dt_Location.LocationCode}", $"条码为高托盘,但是查找的货位要入在低托盘下");
                                    return content.Error($"条码为高托盘,但是查找的货位要入在低托盘下,故障,托盘条码:{task.PalletCode},货位编号:{dt_Location.LocationCode}");
                                }
@@ -277,10 +297,13 @@
                                _locationInfoService.UpdateData(dt_Location);
                                BaseDal.UpdateData(task);
                                _unitOfWorkManage.CommitTran();
                                WriteLog.Write_Log("WCS_入库_上报完成", $"输送线完成", $"成功,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"已接收入库输送线完成信息,添加库存信息:{dt_StockInfo.ToJson()},修改货位:{dt_Location.ToJson()}");
                                return content.OK($"已接收入库输送线完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                            }
                            else
                            {
                                WriteLog.Write_Log("WCS_入库_上报完成", $"输送线完成", $"成功,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上报失败,当前任务不是输送线执行中,WCS上报完成失败");
                                return content.Error("上报失败,当前任务不是输送线执行中,WCS上报完成失败");
                            }
@@ -299,22 +322,22 @@
                                    _unitOfWorkManage.BeginTran();
                                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                                    _unitOfWorkManage.CommitTran();
                                    WriteLog.Write_Log("WCS_入库_上报完成", $"输送线点到点完成", $"成功,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"输送线任务已反馈至上游");
                                    return content.OK($"输送线任务已反馈至上游,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                                }
                                else
                                {
                                    task.NumberSsuances = task.NumberSsuances + 1;
                                    if (task.NumberSsuances == 3)
                                    {
                                    task.NumberSsuances = 3;
                                        task.TaskStatus = (int)InTaskStatusEnum.InPLCException;
                                        task.Remark = "输送线入库:上传MES失败,原因:" + mES_PCLParameter.ResultMsg;
                                        BaseDal.UpdateData(task);
                                    }
                                    WriteLog.Write_Log("WCS_入库_上报完成", $"输送线点到点完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"输送线任务已反馈至上游");
                                    return content.Error("上传MES失败,原因:" + mES_PCLParameter.ResultMsg);
                                }
                            }
                            else
                            {
                                WriteLog.Write_Log("WCS_入库_上报完成", $"输送线点到点完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上报失败,当前任务不是输送线执行中,WCS上报完成失败");
                                return content.Error($"上报失败,当前任务不是输送线执行中,WCS上报完成失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                            }
@@ -339,32 +362,35 @@
                                _locationInfoService.UpdateData(dt_LocationInfo);
                                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                                _unitOfWorkManage.CommitTran();
                                WriteLog.Write_Log("WCS_入库_上报完成", $"堆垛机完成", $"成功,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"修改后的库存:{dt_Stockowc.ToJson()},修改后的库位信息:{dt_LocationInfo.ToJson()}");
                                return content.OK($"已接收入库堆垛机完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                            }
                            else
                            {
                                task.NumberSsuances = task.NumberSsuances + 1;
                                if (task.NumberSsuances == 3)
                                {
                                task.NumberSsuances = 3;
                                    task.TaskStatus = (int)InTaskStatusEnum.InSCException;
                                    task.Remark = "堆垛机入库,上传MES失败,原因:" + mES_Parameter.ResultMsg;
                                    BaseDal.UpdateData(task);
                                }
                                WriteLog.Write_Log("WCS_入库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上传MES失败,原因:{mES_Parameter.ResultMsg}");
                                return content.Error("上传MES失败,原因:" + mES_Parameter.ResultMsg);
                            }
                        }
                        else
                        {
                            WriteLog.Write_Log("WCS_入库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上报失败,当前任务不是堆垛机执行中,WCS上报完成失败");
                            return content.Error($"上报失败,当前任务不是堆垛机执行中,WCS上报完成失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                        }
                            
                    default:
                        WriteLog.Write_Log("WCS_入库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"WCS上报类型错误:{wcsTaskType}");
                        return content.Error($"WCS上报类型错误:{wcsTaskType}");
                }
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                WriteLog.Write_Log("WCS_入库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"WCS任务完成接口故障,原因:{ex.Message}");
                return content.Error($"WCS任务完成接口故障,原因:{ex.Message}");
            }
        }
@@ -386,23 +412,24 @@
                            {
                                task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish;
                                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                                WriteLog.Write_Log("WCS_出库_上报完成", $"输送线完成",$"成功,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"已接收出库输送线完成信息");
                                return content.OK($"已接收出库输送线完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                            }
                            else
                            {
                                task.NumberSsuances = task.NumberSsuances + 1;
                                if (task.NumberSsuances == 3)
                                {
                                task.NumberSsuances =3;
                                    task.TaskStatus = (int)OutTaskStatusEnum.OutPLCException;
                                    task.Remark = "出库,输送线上传MES失败,原因:" + mES_Parameter.ResultMsg;
                                    BaseDal.UpdateData(task);
                                }
                                WriteLog.Write_Log("WCS_出库_上报完成", $"输送线完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上传MES失败,原因:{mES_Parameter.ResultMsg}");
                                return content.Error("上传MES失败,原因:" + mES_Parameter.ResultMsg);
                            }
                        }
                        else
                        {
                            WriteLog.Write_Log("WCS_出库_上报完成", $"输送线完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上报失败,WMS当前任务不是输送线执行中,WCS上报完成失败");
                            return content.Error($"上报失败,WMS当前任务不是输送线执行中,WCS上报完成失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                        }
                        
@@ -430,32 +457,35 @@
                                _locationInfoService.UpdateData(dt_LocationInfo);
                                BaseDal.UpdateData(task);
                                _unitOfWorkManage.CommitTran();
                                WriteLog.Write_Log("WCS_出库_上报完成", $"堆垛机完成",$"成功,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"删除的库存:{dt_Stockowc.ToJson()},修改的货位:{dt_LocationInfo.ToJson()}");
                                return content.OK($"已接收出库堆垛机完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                            }
                            else
                            {
                                task.NumberSsuances = task.NumberSsuances + 1;
                                if (task.NumberSsuances == 3)
                                {
                                task.NumberSsuances = 3;
                                    task.TaskStatus = (int)OutTaskStatusEnum.OutSCException;
                                    task.Remark = "堆垛机出库:上传MES失败,原因:" + mES_SCParameter.ResultMsg;
                                    BaseDal.UpdateData(task);
                                }
                                WriteLog.Write_Log("WCS_出库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上传MES失败,原因:{mES_SCParameter.ResultMsg}");
                                return content.Error("上传MES失败,原因:" + mES_SCParameter.ResultMsg);
                            }
                        }
                        else
                        {
                            WriteLog.Write_Log("WCS_出库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上报失败,WMS当前任务不是堆垛机执行中,WCS上报完成失败");
                            return content.Error($"上报失败,WMS当前任务不是堆垛机执行中,WCS上报完成失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                        }
                        
                    default:
                        WriteLog.Write_Log("WCS_出库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"WCS上报类型错误:{wcsTaskType}");
                        return content.Error($"WCS上报类型错误:{wcsTaskType}");
                }
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                WriteLog.Write_Log("WCS_出库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"WCS任务完成接口故障,原因:{ex.Message}");
                return content.Error($"WCS任务完成接口故障,原因:{ex.Message}");
            }
        }
@@ -494,43 +524,149 @@
                            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.自动完成 : OperateTypeEnum.人工完成);
                            _unitOfWorkManage.CommitTran();
                            WriteLog.Write_Log("WCS_移库_上报完成", $"堆垛机完成", $"成功,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"修改的货位:{dt_Locations.ToJson()},修改的库存:{dt_StockInfo.ToJson()}");
                            return responseContent.OK($"已接收移库堆垛机完成信息,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                        }
                        else
                        {
                            task.NumberSsuances = task.NumberSsuances + 1;
                            if (task.NumberSsuances == 3)
                            {
                            task.NumberSsuances = 3;
                                task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationException;
                                task.Remark = "移库,上传MES失败,原因:" + mES_Parameter.ResultMsg;
                                BaseDal.UpdateData(task);
                            }
                            WriteLog.Write_Log("WCS_移库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上传MES失败,原因:{mES_Parameter.ResultMsg}");
                            return responseContent.Error("上传MES失败,原因:" + mES_Parameter.ResultMsg);
                        }
                    }
                    else
                    {
                        WriteLog.Write_Log("WCS_移库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"上报失败,WMS当前任务不是堆垛机执行中,WCS上报完成失败");
                        return responseContent.Error($"上报失败,WMS当前任务不是堆垛机执行中,WCS上报完成失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}");
                    }
                    
                }
                else
                {
                    WriteLog.Write_Log("WCS_移库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"WCS上报类型错误:{wcsTaskType}");
                    return responseContent.Error($"WCS上报类型错误:{wcsTaskType}");
                }
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                WriteLog.Write_Log("WCS_移库_上报完成", $"堆垛机完成", $"失败,任务号:{task.TaskId},托盘编号:{task.PalletCode}", $"WCS任务完成接口故障,原因:{ex.Message}");
                return responseContent.Error($"WMS系统错误,原因:{ex.Message}");
            }
            
        }
        #endregion
        //任务任务恢复
        public WebResponseContent WMSTaskRecovery(SaveModel saveModel)
        {
            WebResponseContent response = new WebResponseContent();
            List<Dt_Task> dt_Task = new List<Dt_Task>();
            try
            {
                foreach (var key in saveModel.DelKeys)
                {
                    int taskId = int.Parse(key.ToString());
                    Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId);
                    if (task == null)
                            return response.Error("未找到任务信息");
                    task.NumberSsuances = 0;
                    task.Remark = "";
                    dt_Task.Add(task);
                }
                bool updatetask= BaseDal.UpdateData(dt_Task);
                if (updatetask)
                {
                    WriteLog.Write_Log("WMS_任务恢复", $"WMS_任务恢复", "修改成功", $"修改的数据:{dt_Task.ToJson()}");
                    return response.OK("所有任务处理成功");
                }
                else
                {
                    WriteLog.Write_Log("WMS_任务恢复", $"WMS_任务恢复", "修改失败", $"修改的数据:{dt_Task.ToJson()}");
                    return response.Error("处理失败,修改任务失败");
                }
        
    }
            catch (Exception ex)
            {
                WriteLog.Write_Log("WMS_任务恢复", $"WMS_任务恢复", "修改失败", $"修改的数据:{dt_Task.ToJson()},失败原因:{ex.Message}");
                return response.Error($"WMS任务恢复错误:{ex.Message}");
            }
        }
        public virtual WebResponseContent UpdateData(SaveModel saveModel)
        {
            try
            {
                List<string>? list = UpdateIgnoreColOnExecute?.Invoke(saveModel);
                if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//判断参数是否传入
                {
                    return WebResponseContent.Instance.Error("传参错误,参数不能为空");
                }
                string validResult = typeof(Dt_Task).ValidateDicInEntity(saveModel.MainData, false, TProperties, list?.ToArray() ?? null);
                if (!string.IsNullOrEmpty(validResult))
                {
                    return WebResponseContent.Instance.Error(validResult);
                }
                PropertyInfo keyPro = typeof(Dt_Task).GetKeyProperty();
                if (keyPro == null)
                {
                    return WebResponseContent.Instance.Error("请先设置主键");
                }
                Dt_Task entity = saveModel.MainData.DicToModel<Dt_Task>();
                Dt_Task Dt_Custask= BaseDal.QueryFirst(x=>x.TaskId==entity.TaskId);
                List<string> listCol = new List<string>();
                foreach (var item in saveModel.MainData)
                {
                    PropertyInfo? propertyInfo = typeof(Dt_Task).GetProperty(item.Key);
                    if (propertyInfo == null)
                    {
                        propertyInfo = typeof(Dt_Task).GetProperty(item.Key.FirstLetterToLower());
                        if (propertyInfo == null)
                        {
                            propertyInfo = typeof(Dt_Task).GetProperty(item.Key.FirstLetterToUpper());
                        }
                    }
                    listCol.Add(propertyInfo?.Name);
                }
                if (saveModel.DetailData == null || saveModel.DetailData.Count == 0)
                {
                    if (list != null)
                        listCol = listCol.Where(x => !list.Contains(x)).ToList();
                    bool result = BaseDal.UpdateData(entity, listCol, list);
                    WriteLog.Write_Log("WMS_任务修改", $"任务修改", $"任务编号:{entity.TaskId},托盘条码:{entity.PalletCode},是否成功:{result}", $"原来数据:{Dt_Custask.ToJson()}======>>>>>>修改后的数据:{entity.ToJson()}");
                    return WebResponseContent.Instance.OK();
                }
                if (typeof(Dt_Task).GetNavigatePro() == null)
                {
                    return WebResponseContent.Instance.Error("未配置导航属性");
                }
                Type detailType = typeof(Dt_Task).GetDetailType();
                MethodInfo? methodInfo = GetType().GetMethod("UpdateDataInculdesDetail");
                methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
                object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData, saveModel.DelKeys });
                return obj as WebResponseContent;
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WCSTaskService.cs
@@ -88,7 +88,7 @@
        public WebResponseContent PalletInboundTask(WCSTaskDTO wCSTask)
        {
            
            WriteLog.Write_Log("输送线请求入库", $"任务信息", "接收参数", $"参数:{wCSTask.ToJson()}");
            WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", "接收参数", $"参数:{wCSTask.ToJson()}");
            WebResponseContent webResponse = new WebResponseContent();
            try
            {
@@ -127,7 +127,7 @@
                        //进行修改数据库
                        BaseDal.UpdateData(task);
                        WriteLog.Write_Log("输送线请求入库", $"任务信息", "返回输送线任务信息", $"返回给输送线的任务信息:{wcstaskinfo.ToJson()}");
                        WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", "返回输送线任务信息", $"返回给输送线的任务信息:{wcstaskinfo.ToJson()}");
                        return webResponse.OK(data: wcstaskinfo);
                    }
                    else
@@ -143,7 +143,7 @@
            }
            catch (Exception ex)
            {
                WriteLog.Write_Log("输送线请求入库", $"任务信息", "失败", $"任务获取失败,wms系统故障,原因:{ex.Message}");
                WriteLog.Write_Log("WCS_输送线请求入库", $"任务信息", "失败", $"任务获取失败,wms系统故障,原因:{ex.Message}");
                return webResponse.Error("任务获取失败,wms系统故障,原因:" + ex.Message);
            }
        }
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs
@@ -303,6 +303,7 @@
                string Locationcodeadd = dt_Task.TaskType == (int)TaskTypeEnum.Inbound ? dt_Task.NextAddress:  dt_Task.CurrentAddress ;
                Dt_LocationInfo dt_Location = _locationInfoService.Repository.QueryData(x => x.LocationCode == Locationcodeadd).FirstOrDefault();
                if(dt_Location == null) { return content.Error("未能查找到库位"); }
                if (dt_Location.Depth == 1 || dt_Location.RoadwayNo == "5") return content.OK();
                int locrow = judgmentRow(dt_Location.RoadwayNo, dt_Location.Row);
                Dt_LocationInfo shallowLocation = _locationInfoService.Repository.QueryData(x => x.RoadwayNo == dt_Location.RoadwayNo && x.Row == locrow && x.Layer == dt_Location.Layer && x.Column == dt_Location.Column).FirstOrDefault();
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs
@@ -25,6 +25,22 @@
        {
        }
        /// <summary>
        /// èŽ·å–å··é“
        /// </summary>
        [HttpGet, Route("GetArea"), AllowAnonymous]
        public WebResponseContent GetArea()
        {
            return Service.GetArea();
        }
        /// <summary>
        /// èŽ·å–è´§ä½ä¿¡æ¯
        /// </summary>
        [HttpGet, Route("GetLocationStatus"), AllowAnonymous]
        public WebResponseContent GetLocationStatus(int WarehouseId, string RoadwayNo)
        {
            return Service.GetLocationStatus(WarehouseId, RoadwayNo);
        }
       
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs
@@ -1,5 +1,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEA_Core;
using WIDESEA_Core.BaseController;
using WIDESEA_ISystemService;
using WIDESEA_Model.Models;
@@ -16,5 +18,17 @@
        public Sys_LogController(ISys_LogService service) : base(service)
        {
        }
        [HttpPost, Route("GetLogList"), AllowAnonymous]
        public WebResponseContent GetLogList()
        {
            return Service.GetLogList();
        }
        [HttpPost, Route("GetLogData"), AllowAnonymous]
        public WebResponseContent GetLogData([FromBody] GetLogParm parm)
        {
            return Service.GetLogData(parm);
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -48,5 +48,11 @@
        {
            return Service.MESManualUpload(saveModel);
        }
        [HttpPost, Route("WMSTaskRecovery"), AllowAnonymous]
        public WebResponseContent WMSTaskRecovery([FromBody] SaveModel saveModel)
        {
            return Service.WMSTaskRecovery(saveModel);
        }
    }
}
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_ÈÎÎñ»Ö¸´/2026-01-21/WMS_ÈÎÎñ»Ö¸´260121.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
2026/1/21 15:29:45.588
修改成功
"修改的数据:[{\"TaskId\":77,\"TaskNum\":\"SD202601210942100001\",\"PalletCode\":\"1010000096\",\"PalletType\":\"1\",\"Roadway\":\"1\",\"TaskType\":200,\"TaskStatus\":999,\"SourceAddress\":\"1103\",\"TargetAddress\":\"YMYL00100401801\",\"CurrentAddress\":\"YMYL00103700220\",\"NextAddress\":\"YMYL00101800401\",\"WarehouseId\":1,\"OrderNo\":\"2026/1/21 9:42:10\",\"Grade\":1,\"Dispatchertime\":null,\"Remark\":\"\",\"NumberSsuances\":0,\"Creater\":\"\",\"CreateDate\":\"2026-01-21T09:42:10\",\"Modifier\":\"admin\",\"ModifyDate\":\"2026-01-21T15:29:45.5205361+08:00\"},{\"TaskId\":76,\"TaskNum\":\"SD202601210939470001\",\"PalletCode\":\"1010000097\",\"PalletType\":\"1\",\"Roadway\":\"1\",\"TaskType\":200,\"TaskStatus\":999,\"SourceAddress\":\"1101\",\"TargetAddress\":\"YMYL00100101801\",\"CurrentAddress\":\"YMYL00103700220\",\"NextAddress\":\"YMYL00101800101\",\"WarehouseId\":1,\"OrderNo\":\"2026/1/21 9:39:47\",\"Grade\":1,\"Dispatchertime\":null,\"Remark\":\"\",\"NumberSsuances\":0,\"Creater\":\"\",\"CreateDate\":\"2026-01-21T09:39:48\",\"Modifier\":\"admin\",\"ModifyDate\":\"2026-01-21T15:29:45.5257376+08:00\"}]"
-------------------------------
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_ÈÎÎñ״̬ÐÞ¸Ä/2026-01-22/ÈÎÎñÐÞ¸Ä260122.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
2026/1/22 15:29:53.403
任务编号:135,托盘条码:1010000054,是否成功:True
"下发的参数:"
-------------------------------
2026/1/22 15:30:08.163
任务编号:135,托盘条码:1010000054,是否成功:True
"下发的参数:"
-------------------------------
2026/1/22 15:34:58.131
任务编号:135,托盘条码:1010000054,是否成功:True
"下发的参数:"
-------------------------------
2026/1/22 15:40:50.429
任务编号:135,托盘条码:1010000054,是否成功:True
"原来数据:{\"TaskId\":135,\"TaskNum\":\"SD202601221416060001\",\"PalletCode\":\"1010000054\",\"PalletType\":\"1\",\"Roadway\":\"2\",\"TaskType\":200,\"TaskStatus\":200,\"SourceAddress\":\"1103\",\"TargetAddress\":null,\"CurrentAddress\":\"1103\",\"NextAddress\":\"1108\",\"WarehouseId\":0,\"OrderNo\":\"2026/1/22 14:16:06\",\"Grade\":1,\"Dispatchertime\":null,\"Remark\":null,\"NumberSsuances\":0,\"Creater\":\"\",\"CreateDate\":\"2026-01-22T14:16:07\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-22T14:16:34\"},,,\n\r修改后的数据:{\"TaskId\":135,\"TaskNum\":\"SD202601221416060001\",\"PalletCode\":\"1010000054\",\"PalletType\":\"1\",\"Roadway\":\"2\",\"TaskType\":200,\"TaskStatus\":200,\"SourceAddress\":\"1103\",\"TargetAddress\":\"222\",\"CurrentAddress\":\"1103\",\"NextAddress\":\"1108\",\"WarehouseId\":0,\"OrderNo\":null,\"Grade\":0,\"Dispatchertime\":null,\"Remark\":null,\"NumberSsuances\":0,\"Creater\":\"\",\"CreateDate\":\"2026-01-22T14:16:07+08:00\",\"Modifier\":\"admin\",\"ModifyDate\":\"2026-01-22T15:40:50.375379+08:00\"}"
-------------------------------
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Log/WMS_ɾ³ý¿â´æ/2026-01-22/ɾ³ýÐÅÏ¢260122.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
2026/1/22 11:49:52.430
成功
"参数:[{\"Id\":70,\"PalletCode\":\"2020000020\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100300301\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:21:24\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:22:15\"}]"
-------------------------------
2026/1/22 11:49:56.456
成功
"参数:[null,{\"Id\":69,\"PalletCode\":\"2020000009\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100200301\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:17:45\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:18:33\"}]"
-------------------------------
2026/1/22 11:52:32.402
成功
"参数:[{\"Id\":69,\"PalletCode\":\"2020000009\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100200301\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:17:45\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:18:33\"}]"
-------------------------------
2026/1/22 11:52:46.417
成功
"参数:[{\"Id\":68,\"PalletCode\":\"2020000003\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100400301\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:13:05\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:14:00\"}]"
-------------------------------
2026/1/22 11:52:53.41
成功
"参数:[{\"Id\":67,\"PalletCode\":\"2020000004\",\"PalletType\":\"2\",\"LocationCode\":\"YMYL00100300201\",\"WarehouseId\":1,\"StockStatus\":2,\"Roadway\":\"1\",\"Creater\":\"\",\"CreateDate\":\"2026-01-21T10:10:56\",\"Modifier\":\"\",\"ModifyDate\":\"2026-01-21T10:11:44\"}]"
-------------------------------
ÏîÄ¿×ÊÁÏ/WMS¿âλ±àÂë/Ëɲ¹ÁÏ1-4ÁÐ12²ã»õ¼Ü.xls
Binary files differ