刘磊
2024-12-17 f7f1f176f931f5ad54056df7b8e8a9f028eea100
合并
已修改38个文件
已添加2个文件
已重命名1个文件
1187 ■■■■■ 文件已修改
Code Management/WCS/WIDESEAWCS_Client/src/router/viewGird.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/views/taskinfo/task_Hty.vue 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/api/buttons.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_AreaInfo.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_LocationInfo.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_RoadWayInfo.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_Strategy.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_UnitInfo.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_WareAreaInfo.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/LocationStatusChange.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/PointStackerRelation.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_InboundOrder.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_InboundOrderDetail.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrder.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderAndStock.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderDetail.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderProduction.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderProductionDetail.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderSorting.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderTransfer.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderTransferDetail.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/material/Dt_MaterielAttribute.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/material/Dt_MaterielInfo.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStock.jsx 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStockDetail.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task.jsx 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_TaskExecuteDetail.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task_Hty.jsx 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_LocationInfo.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/DtBoxing.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_BillGroupStock.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task_Hty.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs 494 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code Management/WCS/WIDESEAWCS_Client/src/router/viewGird.js
@@ -53,7 +53,11 @@
    path: '/task',
    name: 'task',
    component: () => import('@/views/taskinfo/task.vue')
  }, {
  },  {
    path: '/task_Hty',
    name: 'task_Hty',
    component: () => import('@/views/taskinfo/task_Hty.vue')
  },{
    path: '/router',
    name: 'router',
    component: () => import('@/views/basicinfo/router.vue')
Code Management/WCS/WIDESEAWCS_Client/src/views/taskinfo/task_Hty.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,236 @@
<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/taskinfo/task_Hty.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const table = ref({
      key: "taskId",
      footer: "Foots",
      cnName: "任务信息",
      name: "task_Hty",
      url: "/Task_Hty/",
      sortName: "CreateDate",
    });
    const editFormFields = ref({});
    const editFormOptions = ref([]);
    const searchFormFields = ref({
      taskNum: "",
      palletCode: "",
      roadway: "",
      sourceAddress: "",
      targetAddress: "",
      currentAddress: "",
      nextAddress: "",
      creater: "",
      createDate: "",
    });
    const searchFormOptions = ref([
      [
        { title: "任务号", field: "taskNum", type: "int" },
        { title: "托盘编号", field: "palletCode", type: "like" },
        {
          title: "任务类型",
          field: "taskType",
          type: "selectList",
          dataKey: "taskType",
          data: [],
        },
        {
          title: "任务状态",
          field: "taskState",
          type: "selectList",
          dataKey: "taskState",
          data: [],
        },
      ],
      [
        { title: "起始地址", field: "sourceAddress", type: "like" },
        { title: "目标地址", field: "targetAddress", type: "like" },
        { title: "当前位置", field: "currentAddress", type: "like" },
        { title: "下一位置", field: "nextAddress", type: "like" },
      ],
      [
        { title: "巷道号", field: "roadway", type: "like" },
        { title: "创建人", field: "creater", type: "like" },
        { title: "创建时间", field: "createDate", type: "datetime" },
      ],
    ]);
    const columns = ref([
      {
        field: "taskId",
        title: "TaskId",
        type: "int",
        width: 90,
        hidden: true,
        readonly: true,
        require: true,
        align: "left",
      },
      {
        field: "taskNum",
        title: "任务号",
        type: "int",
        width: 90,
        align: "left",
      },
      {
        field: "palletCode",
        title: "托盘编号",
        type: "string",
        width: 200,
        align: "left",
      },
      {
        field: "roadway",
        title: "巷道号",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "taskType",
        title: "任务类型",
        type: "int",
        width: 90,
        align: "left",
        bind: { key: "taskType", data: [] },
      },
      {
        field: "taskState",
        title: "任务状态",
        type: "int",
        width: 150,
        align: "left",
        bind: { key: "taskState", data: [] },
      },
      {
        field: "sourceAddress",
        title: "起始地址",
        type: "int",
        width: 120,
        align: "left",
      },
      {
        field: "targetAddress",
        title: "目标地址",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "currentAddress",
        title: "当前位置",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "nextAddress",
        title: "下一位置",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "exceptionMessage",
        title: "异常信息",
        type: "string",
        width: 90,
        align: "left",
        hidden: true,
      },
      {
        field: "grade",
        title: "优先级",
        type: "int",
        width: 80,
        align: "left",
      },
      {
        field: "dispatchertime",
        title: "任务下发时间",
        type: "datetime",
        width: 150,
        align: "left",
      },
      {
        field: "wMSId",
        title: "WMS任务主键",
        type: "int",
        width: 120,
        align: "left",
        hidden: true,
      },
      {
        field: "creater",
        title: "创建人",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "createDate",
        title: "创建时间",
        type: "datetime",
        width: 150,
        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: "",
      columns: [],
      sortName: "",
      key: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs
@@ -63,6 +63,12 @@
        /// å¸¸æ¸©è¡¥ç©ºæ‰˜ç›˜è‡³åˆ†å®¹
        /// </summary>
        public const string GetFROutTrayToCW = "GetFROutTrayToCW";
        /// <summary>
        /// å¸¸æ¸©3 å‡ºåº“至包装
        /// </summary>
        public const string RequestOutTaskToBZ = "RequestOutTaskToBZ";
    }
}
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -79,6 +79,12 @@
        /// <returns></returns>
        Task<WebResponseContent> RequestWMSTask(string palletCode, string sourceAddress);
        /// <summary>
        /// è¯·æ±‚出库至包装
        /// </summary>
        /// <param name="stationManager"></param>
        /// <returns></returns>
        Task<WebResponseContent> RequestOutTaskToBZAsync(Dt_StationManager stationManager);
        /// <summary>
        /// æ ¹æ®æ‰˜ç›˜å·ã€èµ·å§‹åœ°å€å‘WMS请求任务
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/Partial/TaskService.cs
@@ -96,8 +96,20 @@
                if (!content.Status)
                {
                    // wms失败返回去NG口任务
                    //if (stationManager.stationChildCode != stationManager.stationNGChildCode)
                    //{
                    //    WMSTaskDTO taskDTO = new WMSTaskDTO()
                    //    {
                    //        Grade = 8,
                    //        PalletCode = palletCode,
                    //        SourceAddress = stationManager.stationLocation,
                    //        TargetAddress = stationManager.stationNGLocation,
                    //        RoadWay = stationManager.Roadway,
                    //        TaskNum = 1000,
                    //        TaskState = (int)TaskOutStatusEnum.OutNew,
                    //        TaskType = (int)TaskOutboundTypeEnum.InToOut
                    //    };
                    //}
                    return content;
                }
@@ -111,6 +123,45 @@
            }
        }
        public async Task<WebResponseContent> RequestOutTaskToBZAsync(Dt_StationManager stationManager)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
                var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestOutTaskToBZ)?.ConfigValue;
                if (wmsBase == null || requestTask == null)
                {
                    throw new InvalidOperationException("WMS IP æœªé…ç½®");
                }
                var wmsIpAddrss = wmsBase + requestTask;
                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { }.ToJsonString());
                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
                if (!content.Status)
                {
                    //无满足条件可出库至包装的库存
                    return content;
                }
                var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
                ConsoleHelper.WriteSuccessLine(content.Data.ToString());
                content = ReceiveByWMSTask(task);
                //if (content.Status)
                //{
                //    //相应的在途数据+1
                //   // _taskNeedBarcodeRepository.UpdateData();
                //}
                return content;
            }
            catch (Exception ex)
            {
                return content.Error(ex.Message);
            }
        }
        /// <summary>
        /// æŽ¥æ”¶WMS任务信息
        /// </summary>
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -40,6 +40,7 @@
        private readonly IDt_StationManagerRepository _stationManagerRepository;
        private readonly IRouterRepository _routerRepository;
        private readonly ITask_HtyRepository _taskHtyRepository;
        private readonly IDt_needBarcodeRepository _taskNeedBarcodeRepository;
        private Dictionary<string, OrderByType> _taskOrderBy = new()
        {
@@ -54,7 +55,7 @@
        public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository, IDt_needBarcodeRepository taskNeedBarcodeRepository) : base(BaseDal)
        {
            _routerService = routerService;
            _taskExecuteDetailService = taskExecuteDetailService;
@@ -65,6 +66,7 @@
            _stationManagerRepository = stationManagerRepository;
            _routerRepository = routerRepository;
            _taskHtyRepository = htyRepository;
            _taskNeedBarcodeRepository = taskNeedBarcodeRepository;
        }
        /// <summary>
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs
@@ -165,6 +165,9 @@
        public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, Dt_StationManager stationInfo)
        {
            ConsoleHelper.WriteSuccessLine($"【{conveyorLine.DeviceName}】,托盘号:【{command.ConveyorLineBarcode}】,站台:【{stationInfo.remark}】请求任务");
            //if()
            var taskNew = _taskService.QueryTaskByPalletCode(command.ConveyorLineBarcode, stationInfo.Roadway);
            if (taskNew == null)
            {
@@ -183,6 +186,15 @@
                        //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
                    }
                }
                else   //如果任务请求失败
                {
                    //如果请求位置与NG位置一直 åˆ™å†™å½“前位置让线体退回
                    if (stationInfo.stationChildCode == stationInfo.stationNGChildCode)
                    {
                        conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, 1, stationInfo.stationChildCode);
                        conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, stationInfo.stationChildCode, stationInfo.stationChildCode);
                    }
                }
            }
        }
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_GW/CommonConveyorLine_GWJob.cs
@@ -171,7 +171,7 @@
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine(nameof(CommonConveyorLine_AfterJob) + ":" + ex.ToString());
                Console.Out.WriteLine(nameof(CommonConveyorLine_GWJob) + ":" + ex.ToString());
            }
            finally
            {
Code Management/WMS/WIDESEA_WMSClient/src/api/buttons.js
@@ -103,6 +103,26 @@
    onClick: function () {
      this.printClick()
    }
  },{
    name: '任务完成',
    // icon: 'el-icon-printer',
    type: 'primary',
    // plain: true,
    color: '#529b2e',
    value: 'TaskHandComplete',
    onClick: function () {
    }
  },{
    name: '直接出库',
    // icon: 'el-icon-printer',
    type: 'primary',
    // plain: true,
    color: '#529b2e',
    value: 'OutBound',
    onClick: function () {
    }
  }
]
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_AreaInfo.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_LocationInfo.jsx
@@ -135,7 +135,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_RoadWayInfo.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_Strategy.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_UnitInfo.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_WareAreaInfo.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/LocationStatusChange.js
@@ -61,7 +61,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/PointStackerRelation.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_InboundOrder.js
@@ -64,7 +64,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_InboundOrderDetail.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrder.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderAndStock.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderDetail.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderProduction.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderProductionDetail.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderSorting.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderTransfer.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/invoices/Dt_OutOrderTransferDetail.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/material/Dt_MaterielAttribute.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/material/Dt_MaterielInfo.js
@@ -60,7 +60,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStock.jsx
@@ -26,13 +26,9 @@
    //下面这些方法可以保留也可以删除
    onInit() {
      //框架初始化配置前,
      //示例:在按钮的最前面添加一个按钮
      this.buttons.unshift({
        //也可以用push或者splice方法来修改buttons数组
        name: '直接出库', //按钮名称
        icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
        type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
        onClick: function () {
      let OutBoundBtn=this.buttons.find(x=>x.value=='OutBound');
      if(OutBoundBtn){
        OutBoundBtn.onClick=function(){
          this.$Message.success('点击了按钮')
          let row = this.$refs.table.getSelected() //获取选中的行
          if (row <= 0) {
@@ -51,7 +47,33 @@
            }
          })
        }
      })
      }
      //示例:在按钮的最前面添加一个按钮
      // this.buttons.unshift({
      //   //也可以用push或者splice方法来修改buttons数组
      //   name: '直接出库', //按钮名称
      //   icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
      //   type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
      //   onClick: function () {
      //     this.$Message.success('点击了按钮')
      //     let row = this.$refs.table.getSelected() //获取选中的行
      //     if (row <= 0) {
      //       //如果没有选中行
      //       this.$Message.error('请选择一行数据')
      //       return
      //     }
      //     let locationCode = row[0].locationCode
      //     let palletCode = row[0].palletCode
      //     this.http.get(`/api/Task/CreateAndSendOutboundTask?locationCode=${locationCode}&palletCode=${palletCode}`, {}, "正在创建任务").then((res) => {
      //       //示例:调用后台接口
      //       if (res.status) {
      //         this.$Message.success('创建任务成功')
      //       } else {
      //         this.$Message.error(res.message) //错误提示
      //       }
      //     })
      //   }
      // })
      //示例:设置修改新建、编辑弹出框字段标签的长度
      this.boxOptions.labelWidth = 150
@@ -103,7 +125,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/stock/Dt_BillGroupStockDetail.js
@@ -67,7 +67,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task.jsx
@@ -24,32 +24,51 @@
    //下面这些方法可以保留也可以删除
    onInit() {
      //框架初始化配置前,
      //示例:在按钮的最前面添加一个按钮
      this.buttons.unshift({
        //也可以用push或者splice方法来修改buttons数组
        name: '任务完成', //按钮名称
        icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
        type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
        onClick: function () {
          // this.$Message.success('点击了按钮');
      let TaskHandCompleteBtn=this.buttons.find(x=>x.value=='TaskHandComplete');
      if(TaskHandCompleteBtn){
        TaskHandCompleteBtn.onClick=function(){
          let row = this.$refs.table.getSelected() //获取选中的行
          if (row <= 0) {
            //如果没有选中行
            this.$Message.error('请选择一行数据')
            return
          }
          debugger;
          let taskNum = row[0].taskNum
          this.http.get(`/api/Task/CompleteTaskAsync?taskNum=${taskNum}`, {}, "正在完成任务").then((res) => {
            //示例:调用后台接口
            if (res.data.code === 200) {
            if (res.status) {
              this.$Message.success('任务完成')
            } else {
              this.$Message.error(res.message) //错误提示
            }
          })
        }
      })
      }
      //示例:在按钮的最前面添加一个按钮
      // this.buttons.unshift({
      //   //也可以用push或者splice方法来修改buttons数组
      //   name: '任务完成', //按钮名称
      //   icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
      //   type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
      //   onClick: function () {
      //     // this.$Message.success('点击了按钮');
      //     let row = this.$refs.table.getSelected() //获取选中的行
      //     if (row <= 0) {
      //       //如果没有选中行
      //       this.$Message.error('请选择一行数据')
      //       return
      //     }
      //     let taskNum = row[0].taskNum
      //     this.http.get(`/api/Task/CompleteTaskAsync?taskNum=${taskNum}`, {}, "正在完成任务").then((res) => {
      //       //示例:调用后台接口
      //       if (res.status) {
      //         this.$Message.success('任务完成')
      //       } else {
      //         this.$Message.error(res.message) //错误提示
      //       }
      //     })
      //   }
      // })
      //示例:设置修改新建、编辑弹出框字段标签的长度
      this.boxOptions.labelWidth = 150
@@ -114,7 +133,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_TaskExecuteDetail.js
@@ -92,7 +92,7 @@
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
      // this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/taskinfo/Dt_Task_Hty.jsx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,148 @@
/*****************************************************************************************
 **  Author:jxx 2022
 **  QQ:283591387
 **完整文档见:http://v2.volcore.xyz/document/api ã€ä»£ç ç”Ÿæˆé¡µé¢ViewGrid】
 **常用示例见:http://v2.volcore.xyz/document/vueDev
 **后台操作见:http://v2.volcore.xyz/document/netCoreDev
 *****************************************************************************************/
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
import gridHeader from './demo_Product/Dt_TaskExecuteDetail.vue'
let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: gridHeader,
    gridBody: '',
    gridFooter: '',
    //新建、编辑弹出框扩展组件
    modelHeader: '',
    modelBody: '',
    modelFooter: ''
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
    //下面这些方法可以保留也可以删除
    onInit() {
      //框架初始化配置前,
      // let TaskHandCompleteBtn=this.buttons.find(x=>x.value=='TaskHandComplete');
      // if(TaskHandCompleteBtn){
      //   TaskHandCompleteBtn.onClick=function(){
      //     let row = this.$refs.table.getSelected() //获取选中的行
      //     if (row <= 0) {
      //       //如果没有选中行
      //       this.$Message.error('请选择一行数据')
      //       return
      //     }
      //     let taskNum = row[0].taskNum
      //     this.http.get(`/api/Task/CompleteTaskAsync?taskNum=${taskNum}`, {}, "正在完成任务").then((res) => {
      //       //示例:调用后台接口
      //       if (res.status) {
      //         this.$Message.success('任务完成')
      //       } else {
      //         this.$Message.error(res.message) //错误提示
      //       }
      //     })
      //   }
      // }
      //示例:在按钮的最前面添加一个按钮
      // this.buttons.unshift({
      //   //也可以用push或者splice方法来修改buttons数组
      //   name: '任务完成', //按钮名称
      //   icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
      //   type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
      //   onClick: function () {
      //     // this.$Message.success('点击了按钮');
      //     let row = this.$refs.table.getSelected() //获取选中的行
      //     if (row <= 0) {
      //       //如果没有选中行
      //       this.$Message.error('请选择一行数据')
      //       return
      //     }
      //     let taskNum = row[0].taskNum
      //     this.http.get(`/api/Task/CompleteTaskAsync?taskNum=${taskNum}`, {}, "正在完成任务").then((res) => {
      //       //示例:调用后台接口
      //       if (res.status) {
      //         this.$Message.success('任务完成')
      //       } else {
      //         this.$Message.error(res.message) //错误提示
      //       }
      //     })
      //   }
      // })
      //示例:设置修改新建、编辑弹出框字段标签的长度
      this.boxOptions.labelWidth = 150
      //显示提示
      this.columns.forEach((col) => {
        col.showOverflowTooltip = true
      })
      //示例:自定义表格列
      //表格上添加自定义按钮
      this.columns.push({
        title: '操作',
        field: '操作',
        width: 150,
        align: 'left', // 'center',
        render: (h, { row, column, index }) => {
          return (
            <div>
              <el-button
                onClick={($e) => {
                  // this.$refs.table.load();
                  // console.log(this.$refs.table);
                  this.$refs.gridHeader.openModel1(row)
                }}
                type="primary"
                plain
                style="height:26px; padding: 10px !important;"
              >
                æŸ¥çœ‹æ‰§è¡Œä¿¡æ¯
              </el-button>
            </div>
          )
        }
      })
    },
    btn1Click(row, column, index, $e) {
      $e.stopPropagation()
      this.$refs.gridHeader.openModel1(row)
    },
    onInited() {
      //框架初始化配置后
      //如果要配置明细表,在此方法操作
      //this.detailOptions.columns.forEach(column=>{ });
    },
    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false,则不会执行查询
      return true
    },
    searchAfter(result) {
      //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
      return true
    },
    addBefore(formData) {
      //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
      return true
    },
    updateBefore(formData) {
      //编辑保存前formData为对象,包括明细表、删除行的Id
      return true
    },
    rowClick({ row, column, event }) {
      //查询界面点击行事件
      // this.$refs.table.$refs.table.toggleRowSelection(row) //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
      //(1)判断是编辑还是新建操作: this.currentAction=='Add';
      //(2)给弹出框设置默认值
      //(3)this.editFormFields.字段='xxx';
      //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看:console.log(this.editFormOptions)
    }
  }
}
export default extension
Code Management/WMS/WIDESEA_WMSClient/src/router/tables.js
@@ -142,16 +142,23 @@
    meta: {
      keepAlive: false
    }
  },
  {
    path: '/Dt_TaskOut',
    name: 'Dt_TaskOut',
    component: () => import('@/views/widesea_wms/taskinfo/Dt_TaskOut.vue'),
  },{
    path: '/Dt_Task_Hty',
    name: 'Dt_Task_Hty',
    component: () => import('@/views/widesea_wms/taskinfo/Dt_Task_Hty.vue'),
    meta: {
      keepAlive: false
    }
  },
  // {
  //   path: '/Dt_TaskOut',
  //   name: 'Dt_TaskOut',
  //   component: () => import('@/views/widesea_wms/taskinfo/Dt_TaskOut.vue'),
  //   meta: {
  //     keepAlive: false
  //   }
  // },
  // {
  //   path: '/Dt_TaskExecuteDetail',
  //   name: 'Dt_TaskExecuteDetail',
  //   component: () => import('@/views/widesea_wms/taskinfo/Dt_TaskExecuteDetail.vue'),
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/basicinfo/Dt_LocationInfo.vue
@@ -27,6 +27,7 @@
        const editFormOptions = ref([
            [
                { "title": "货位状态", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] }, 
                { "title": "是否禁用", "field": "enalbeStatus", "type": "select", dataKey: "EnalbeStatus", data: [] },
            ]
        ]);
        const searchFormFields = ref({ "LocationID": "",roadWayNO:"" });
@@ -34,7 +35,7 @@
            [
                { "title": "货位编号", "field": "locationCode", type: "text" },
                { "title": "货位状态", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] },
                { "title": "对应堆垛机号", "field": "sCNo", type: "text" },
                // { "title": "对应堆垛机号", "field": "sCNo", type: "text" },
                { "title": "巷道编号", "field": "roadWayNO", type: "text" },
            ]
        ]);
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/DtBoxing.vue
@@ -62,15 +62,15 @@
    },
    methods: {
        onInit() {
            this.dropdownItems.unshift({
                name: '按钮', //按钮名称
                icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
                type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
                value: '321', //按钮值
                onClick: function () {
                    this.$Message.success('点击了按钮');
                }
            });
            // this.dropdownItems.unshift({
            //     name: '按钮', //按钮名称
            //     icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
            //     type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
            //     value: '321', //按钮值
            //     onClick: function () {
            //         this.$Message.success('点击了按钮');
            //     }
            // });
        },
    },
    created() {
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/stock/Dt_BillGroupStock.vue
@@ -51,17 +51,17 @@
        ]);
        const columns = ref(
            [{ field: 'id', title: '库存ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
            { field: 'locationCode', title: '库位', type: 'string', width: 110, align: 'left', sort: true },
            { field: 'palletCode', title: '托盘条码', type: 'string', width: 110, align: 'left', sort: true },
            { field: 'isFull', title: '库存类型', type: 'bool', width: 110, align: 'left', bind: { key: "isFull", data: [] }, sort: true},
            { field: 'linedProcessFeedbackTime', title: '工艺开始时间', type: 'string', width: 110, align: 'left', sort: true },
            { field: 'locationCode', title: '库位', type: 'string', width: 110, align: 'left',  },
            { field: 'palletCode', title: '托盘条码', type: 'string', width: 110, align: 'left', },
            { field: 'isFull', title: '库存类型', type: 'bool', width: 110, align: 'left', bind: { key: "isFull", data: [] }, },
            { field: 'linedProcessFeedbackTime', title: '工艺开始时间', type: 'string', width: 110, align: 'left',},
            { field: 'specialParameterDuration', title: '工艺时长', type: 'string', width: 110, align: 'left', sort: true },
            { field: 'outboundTime', title: '应出库时间', type: 'string', width: 110, align: 'left', sort: true },
            { field: 'productionLine', title: '生产产线', type: 'string', width: 110, align: 'left', sort: true },
            { field: 'areaCode', title: '库区', type: 'string', width: 110, align: 'left', sort: true, bind: { key: "AreaType", data: [] } },
            { field: 'remark', title: '电芯数量', type: 'string', width: 120, align: 'left', sort: true },
            { field: 'outboundTime', title: '应出库时间', type: 'string', width: 110, align: 'left',  },
            { field: 'productionLine', title: '生产产线', type: 'string', width: 110, align: 'left',  },
            { field: 'areaCode', title: '库区', type: 'string', width: 110, align: 'left', bind: { key: "AreaType", data: [] } },
            { field: 'remark', title: '电芯数量', type: 'string', width: 120, align: 'left',  },
            { field: 'creater', title: '创建人', type: 'string', sort: true, width: 110, align: 'left', hidden: true },
            { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
            { field: 'createDate', title: '创建时间', type: 'datetime', sort: true, width: 150, align: 'left',  },
            { field: 'modifier', title: '最后修改人', type: 'string', sort: true, width: 100, hidden: true, align: 'left' },
                // { field: 'modifyDate', title: '最后修改时间', type: 'datetime', sort: true, width: 150, align: 'left', sort: true },
            ]
Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_Task_Hty.vue
ÎļþÃû´Ó Code Management/WMS/WIDESEA_WMSClient/src/views/widesea_wms/taskinfo/Dt_TaskOut.vue ÐÞ¸Ä
@@ -10,7 +10,7 @@
        :table="table" :extend="extend" />
</template>
<script>
import extend from "@/extension/widesea_wms/taskinfo/Dt_Task.jsx";
import extend from "@/extension/widesea_wms/taskinfo/Dt_Task_Hty.jsx";
import { ref, defineComponent } from "vue";
export default defineComponent({
    setup() {
@@ -18,8 +18,8 @@
            key: 'taskId',
            footer: "Foots",
            cnName: '任务信息',
            name: 'taskinfo/Dt_Task',
            url: "/Task/",
            name: 'taskinfo/Dt_Task_Hty',
            url: "/Task_Hty/",
            sortName: "TaskId"
        });
        const editFormFields = ref({
@@ -30,7 +30,7 @@
            [
                { "title": "任务号", "field": "taskNum", "type": "text" },
                { "title": "托盘号", "field": "palletCode", "type": "text" },
                { "title": "任务类型", "field": "taskType", "type": "select", dataKey: "TaskType", data: []},
                { "title": "任务类型", "field": "taskType", "type": "select", dataKey: "TaskType", data: [] },
                { "title": "任务状态", "field": "taskState", "type": "select", dataKey: "TaskStatus", data: [] },
            ],
@@ -42,13 +42,12 @@
            ],
        ]);
        const searchFormFields = ref({
            taskType: 100,
        });
        const searchFormOptions = ref([
            [
                { "title": "任务号", "field": "taskNum", "type": "text" },
                { "title": "托盘号", "field": "palletCode", "type": "text" },
                { "title": "任务类型", "field": "taskType", "type": "select", dataKey: "TaskType", data: [], hidden: true  },
                { "title": "任务类型", "field": "taskType", "type": "select", dataKey: "TaskType", data: [] },
                { "title": "任务状态", "field": "taskState", "type": "select", dataKey: "TaskStatus", data: [] },
            ],
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationInfo.cs
@@ -61,7 +61,7 @@
    public int Depth { get; set; }
    /// <summary>
    /// è´§ä½ç±»åž‹
    /// è´§ä½ç±»åž‹  ï¼ˆ1-普通货架库位  2-检测柜库位)
    /// </summary>
    [SugarColumn(IsNullable = false, ColumnDescription = "货位类型")]
    public int LocationType { get; set; }
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -23,339 +23,6 @@
public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
{
    #region å‡ºåº“任务完成
    //public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
    //{
    //    WebResponseContent content = new WebResponseContent();
    //    try
    //    {
    //        if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
    //        {
    //            var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
    //                .FirstAsync(x => x.EquipmentName == task.Roadway);
    //            var info = JsonConvert.DeserializeObject<ResponseEqptRunDto>(process.ProcessValue);
    //            var agingOutputDto = MapToAgingOutputDto(stock, info);
    //            content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
    //            ValidateResponse(content);
    //        }
    //        // æ›´æ–°åº“存状态和任务状态
    //        (var loc, var tas) = UpdateStockAndTaskStatus(stock, task);
    //        // äº‹åŠ¡å¤„ç†
    //        await _unitOfWorkManage.UseTranAsync(async () =>
    //        {
    //            await UpdateLocationAsync(loc);
    //            await DeleteStockInfoAsync(stock.Id);
    //            await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
    //            //await DeleteTaskAsync(task.TaskId);
    //        });
    //        return content.OK("任务完成成功");
    //    }
    //    catch (Exception err)
    //    {
    //        LogFactory.GetLog("任务完成").Error(true, $"系统异常,异常信息:{err.Message}");
    //        return content.Error(err.Message);
    //    }
    //}
    //private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, ResponseEqptRunDto info)
    //{
    //    // TODO Value值根据MOM下发的静置时间到当前时间的分钟数
    //    return new AgingOutputDto
    //    {
    //        OpFlag = 1,
    //        Software = "WMS",
    //        EquipmentCode = "24MEJQ08-1091",
    //        TrayBarcode = stock.PalletCode,
    //        SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto
    //        {
    //            SlotNo = x.OrderNo.ToInt32(),
    //            SerialNo = x.SerialNumber,
    //            SerialNoResult = true,
    //            ParameterInfo = info.ParameterInfo.Select(y => new ParameterInfo()
    //            {
    //                LowerLomit = y.LowerControlLimit,
    //                UpperLimit = y.UpperControlLimit,
    //                ParameterResult = y.EquipmentAvailabilityFlag,
    //                ParameterCode = y.ParameterCode,
    //                ParameterDesc = y.Description,
    //                TargetValue = y.TargetValue,
    //                Value = (DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(),
    //                DefectCode = y.UOMCode
    //            }).ToList()
    //        }).ToList()
    //    };
    //}
    //private void ValidateResponse(WebResponseContent content)
    //{
    //    var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
    //    if (!result.Success)
    //    {
    //        throw new Exception(result.MOMMessage);
    //    }
    //}
    //private (DtLocationInfo, Dt_Task) UpdateStockAndTaskStatus(DtStockInfo stock, Dt_Task task)
    //{
    //    var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
    //    var details = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id);
    //    location.LocationStatus = (int)LocationEnum.Free;
    //    task.TaskState = (int)TaskOutStatusEnum.OutFinish;
    //    //task.CurrentAddress = task.NextAddress;
    //    //task.NextAddress = task.TargetAddress;
    //    LogFactory.GetLog("任务完成").Info(true, "更新库存状态与任务状态");
    //    return (location, task);
    //}
    //private async Task DeleteStockInfoAsync(int stockId)
    //{
    //    var isStockUpdated = await _stockInfoRepository.DeleteDataByIdAsync(stockId);
    //    if (!isStockUpdated)
    //    {
    //        throw new Exception("库存信息更新失败");
    //    }
    //}
    //private async Task UpdateLocationAsync(DtLocationInfo info)
    //{
    //    var isStockUpdated = await _locationRepository.UpdateDataAsync(info);
    //    if (!isStockUpdated)
    //    {
    //        throw new Exception("库存信息更新失败");
    //    }
    //}
    //private async Task DeleteStockInfoDetailsAsync(IEnumerable<DtStockInfoDetail> details)
    //{
    //    var ids = details.Select(x => (object)x.Id).ToArray();
    //    var isStockDetailUpdated = await _stockInfoDetailRepository.DeleteDataByIdsAsync(ids);
    //    if (!isStockDetailUpdated)
    //    {
    //        throw new Exception("库存详情信息更新失败");
    //    }
    //}
    //private async Task DeleteTaskAsync(int taskId)
    //{
    //    var isTaskUpdated = await BaseDal.DeleteDataByIdAsync(taskId);
    //    if (!isTaskUpdated)
    //    {
    //        throw new Exception("任务信息更新失败");
    //    }
    //}
    #endregion å‡ºåº“任务完成
    #region ç§»åº“任务完成
    /// <summary>
    /// ç§»åº“任务完成
    /// </summary>
    /// <param name="saveModel">任务数据合集</param>
    /// <returns>返回结果集</returns>
    //public async Task<WebResponseContent> CompleteTransferTaskAsync(Dt_Task task, DtStockInfo stock)
    //{
    //    WebResponseContent content = new WebResponseContent();
    //    try
    //    {
    //        // æ›´æ–°è´§ä½å’Œåº“存信息
    //        (DtStockInfo updateStock, DtLocationInfo locationInf) = UpdateStockLocation(stock, task.NextAddress);
    //        var taskHty = CreateHistoricalTask(task);
    //        LogFactory.GetLog("任务完成").InfoFormat(true, "移库任务完成", $"货位地址:{task.TargetAddress},修改后库存数据:{JsonConvert.SerializeObject(updateStock)},原先货位数据:{locationInf}");
    //        // æ‰§è¡Œæ•°æ®åº“事务
    //        bool isResult = await ExecuteTransaction(updateStock, taskHty, locationInf, task.TaskId);
    //        if (isResult)
    //            content.OK("移库任务完成成功");
    //        else
    //            content.Error("移库任务完成失败");
    //    }
    //    catch (Exception err)
    //    {
    //        Console.WriteLine(err.Message.ToString());
    //    }
    //    return content;
    //}
    #endregion ç§»åº“任务完成
    #region å…¥åº“任务完成
    /// <summary>
    /// å®Œæˆå…¥åº“任务
    /// </summary>
    /// <param name="task">任务数据合集</param>
    /// <returns>返回结果集</returns>
    //public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task)
    //{
    //    // åˆå§‹åŒ–响应内容
    //    WebResponseContent content = new WebResponseContent();
    //    try
    //    {
    //        // èŽ·å–è£…ç®±ä¿¡æ¯å’Œç›®æ ‡ä½ç½®ä¿¡æ¯
    //        var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
    //        var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
    //        // æ›´æ–°ç›®æ ‡ä½ç½®çŠ¶æ€ä¸ºåº“å­˜ä¸­
    //        locationInf.LocationStatus = (int)LocationEnum.InStock;
    //        // åˆ›å»ºåŽ†å²ä»»åŠ¡å®žä¾‹æ¨¡åž‹
    //        var taskHty = CreateHistoricalTask(task);
    //        // æ ¹æ®æ˜¯å¦æœ‰ç»„盘信息创建库存实例模型
    //        DtStockInfo stock = boxing == null ? CreateEmptyPalletStock(task, locationInf) : CreateFullPalletStock(task, locationInf, boxing);
    //        // æ‰§è¡Œæ•°æ®åº“事务
    //        bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId);
    //        if (isResult)
    //        {
    //            content.OK("入库任务完成成功");
    //        }
    //        else
    //        {
    //            content.Error("入库任务完成失败");
    //        }
    //    }
    //    catch (Exception err)
    //    {
    //        // è®°å½•异常信息到控制台和日志
    //        Console.WriteLine(err.Message.ToString());
    //        LogFactory.GetLog("任务完成").Error(true, err);
    //    }
    //    return content;
    //}
    /// <summary>
    /// åˆ›å»ºç©ºæ‰˜ç›˜çš„库存实例模型
    /// </summary>
    //private DtStockInfo CreateEmptyPalletStock(Dt_Task task, DtLocationInfo locationInf)
    //{
    //    var loation = _locationRepository.QueryFirst(x => x.RoadwayNo == task.Roadway && x.LocationCode == task.TargetAddress);
    //    var area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId);
    //    return new DtStockInfo()
    //    {
    //        PalletCode = task.PalletCode,
    //        LocationCode = task.TargetAddress,
    //        CreateDate = DateTime.Now,
    //        Creater = "system",
    //        IsFull = false,
    //        AreaCode = area.AreaCode,
    //        LocationId = loation.Id,
    //        StockInfoDetails = new List<DtStockInfoDetail>()
    //        {
    //            new DtStockInfoDetail()
    //            {
    //                MaterielCode = "空托盘",
    //                Id = 0,
    //                Status = (int)StockStateEmun.已入库
    //            }
    //        }
    //    };
    //}
    /// <summary>
    /// åˆ›å»ºå®žç›˜çš„库存实例模型并调用MOM入库
    /// </summary>
    //private DtStockInfo CreateFullPalletStock(Dt_Task task, DtLocationInfo locationInf, DtBoxingInfo boxing)
    //{
    //    var loation = _locationRepository.QueryFirst(x => x.RoadwayNo == task.Roadway && x.LocationCode == task.TargetAddress);
    //    var area = _areaInfoRepository.QueryFirst(x => x.AreaID == loation.AreaId);
    //    var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
    //    boxDetail.ForEach(x => { x.Status = (int)StockStateEmun.已入库; });
    //    var stock = new DtStockInfo()
    //    {
    //        PalletCode = task.PalletCode,
    //        LocationCode = task.TargetAddress,
    //        CreateDate = DateTime.Now,
    //        Creater = "system",
    //        IsFull = boxing.IsFull,
    //        AreaCode = area.AreaCode,
    //        LocationId = loation.Id,
    //        StockInfoDetails = boxDetail,
    //    };
    //    // å¤„理请求参数
    //    AgingInputDto agingInputDto = new AgingInputDto()
    //    {
    //        SerialNos = boxing.BoxingInfoDetails
    //            .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
    //            .ToList(),
    //        TrayBarcode = task.PalletCode,
    //        OpFlag = 1,
    //        EquipmentCode = "24MEJQ08-1091",
    //        Software = "WMS"
    //    };
    //    var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result;
    //    var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString());
    //    stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime;
    //    stock.SpecialParameterDuration = respone.SpecialParameterDuration;
    //    //2024å¹´11月16日:新增字段计算应出库时间
    //    stock.OutboundTime = Convert.ToDateTime(respone.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(respone.SpecialParameterDuration));
    //    stock.ProductionLine = respone.ProductionLine;
    //    // è®°å½•日志
    //    LogFactory.GetLog("任务完成").InfoFormat(true, "入库任务完成", $"货位地址:{task.TargetAddress},修改后货位数据:{locationInf}");
    //    return stock;
    //}
    #endregion å…¥åº“任务完成
    #region ä»»åŠ¡å®Œæˆ
    /// <summary>
    /// å®Œæˆä»»åŠ¡
    /// </summary>
    /// <param name="taskNum">任务编号</param>
    /// <returns>返回结果集</returns>
    //public async Task<WebResponseContent> CompleteAsync(int taskNum)
    //{
    //    // åˆå§‹åŒ–响应内容
    //    WebResponseContent content = new WebResponseContent();
    //    // æå–任务数据
    //    LogFactory.GetLog("任务完成").InfoFormat(true, "提取任务数据", $"任务号:{taskNum}");
    //    // éªŒè¯ä»»åŠ¡æ˜¯å¦å­˜åœ¨
    //    var task = await GetByTaskNum(taskNum);
    //    if (task == null)
    //    {
    //        return content.Error("任务不存在");
    //    }
    //    LogFactory.GetLog("任务完成").InfoFormat(true, "验证任务是否存在", JsonConvert.SerializeObject(task));
    //    // éªŒè¯åº“存是否存在
    //    var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
    //    // æ ¹æ®ä»»åŠ¡ç±»åž‹è°ƒç”¨ç›¸åº”çš„å®Œæˆä»»åŠ¡æ–¹æ³•
    //    switch (task.TaskType)
    //    {
    //        case (int)TaskInboundTypeEnum.Inbound:
    //        case (int)TaskInboundTypeEnum.InTray:
    //            LogFactory.GetLog("任务完成").InfoFormat(true, "入库任务", "");
    //            return await CompleteInboundTaskAsync(task);
    //        case (int)TaskOutboundTypeEnum.OutTray:
    //        case (int)TaskOutboundTypeEnum.Outbound:
    //            LogFactory.GetLog("任务完成").InfoFormat(true, "出库任务", "");
    //            return await CompleteStackTaskAsync(task, stock);
    //        default:
    //            return content.Error("任务类型不存在");
    //    }
    //}
    #endregion ä»»åŠ¡å®Œæˆ
    #region è¯·æ±‚任务入库
    /// <summary>
    /// è¯·æ±‚入库
@@ -391,7 +58,7 @@
                }
            }
            // è°ƒç”¨CreateNewTask方法,创建新任务
            content = await CreateNewTask(input);
        }
@@ -431,7 +98,7 @@
        var task = await CreateNewTaskByStation(input, stationinfo);
        // å°è¯•添加新任务
        if (task == null) return content.Error() ;
        if (task == null) return content.Error();
        var taskId = await BaseDal.AddDataAsync(task);
        bool isResult = taskId > 0;
        if (isResult)
@@ -451,7 +118,7 @@
            };
            content.OK(data: taskDTO);
        }
        else
            content.Error("添加任务失败");
@@ -480,6 +147,8 @@
                task = await CreateInToOutTaskAsync(input, stationManager); break;
            case 7:
                task = await CreateEmptyOutTaskAsync(input, stationManager); break;
            case 15:
                task = await CheckAbnormalTaskAsync(input, stationManager); break;
            default:
                throw new Exception("未知站台类型");
        }
@@ -711,6 +380,7 @@
    /// 
    /// </summary>
    /// <param name="requestTask">请求参数</param>
    /// <param name="isCheckRequest">是否未检测库位类型</param>
    /// <returns></returns>
    private async Task<DtLocationInfo> RequestLocation(RequestTaskDto requestTask, bool isCheckRequest = false)
    {
@@ -761,6 +431,7 @@
    #endregion è¯·æ±‚空框出库
    #region åˆ›å»ºç©ºæ¡†å‡ºåº“任务
    public async Task<Dt_Task> CreateEmptyOutTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
    {
        try
@@ -802,6 +473,7 @@
            throw new Exception(ex.Message);
        }
    }
    #endregion
    #region ç›´æŽ¥å‡ºåº“任务完成
    public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task)
@@ -824,14 +496,112 @@
    }
    #endregion
    #region å¼‚常口任务检测
    public async Task<Dt_Task> CheckAbnormalTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
    {
        try
        {
            // åˆ›å»ºä¸€ä¸ªTrayCellsStatusDto对象,并赋值
            TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
            {
                Software = "WMS",
                TrayBarcode = input.PalletCode,
                //EquipmentCode = "EQ_CWJZ01"
                EquipmentCode = input.EquiCodeMOM
            };
    #region MyRegion
    private async Task<bool> ExecuteTransaction(DtStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo fromLocation,DtLocationInfo toLocation, int taskId)
            // è°ƒç”¨GetTrayCellStatusAsync方法,获取整盘电芯
            WebResponseContent content = await GetTrayCellStatusAsync(trayCells);
            // å¦‚果状态为false,则返回content
            if (!content.Status) throw new Exception(content.Message);
            // æ·»åŠ ç»„ç›˜ä¿¡æ¯
            // å°†content.Data转换为ResultTrayCellsStatus对象
            var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
            if (result.SerialNos.Count <= 0)
            {
                ConsoleHelper.WriteErrorLine(result.MOMMessage);
                var taskNG = new Dt_Task
                {
                    CurrentAddress = input.Position,
                    Grade = 1,
                    Roadway = input.Roadways,
                    TargetAddress = stationManager.stationNGLocation,
                    Dispatchertime = DateTime.Now,
                    MaterialNo = "",
                    NextAddress = stationManager.stationNGChildCode,
                    OrderNo = null,
                    PalletCode = input.PalletCode,
                    SourceAddress = stationManager.stationLocation,
                    TaskState = (int)TaskInStatusEnum.Line_InFinish,
                    TaskType = (int)TaskOutboundTypeEnum.InToOut,
                    TaskNum = await BaseDal.GetTaskNo(),
                    Creater = "Systeam"
                };
                return taskNG;
            }
            //Console.WriteLine(result);
            //// TODO èŽ·å–æœ¬åœ°æ–™æ¡†å±žæ€§ä¸Žæ•´ç›˜ç”µèŠ¯å±žæ€§èŽ·å–çš„å€¼è¿›è¡Œå¯¹æ¯”ï¼Œå¦‚æžœä¸€è‡´åˆ™ç»§ç»­ï¼Œå¦åˆ™è¿”å›žé”™è¯¯ä¿¡æ¯
            ////var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
            ////if (productions.Count <= 0)
            ////    return content.Error("料框属性不存在");
            //// è°ƒç”¨CreateBoxingInfo方法,创建组盘信息
            var boxing = CreateBoxingInfo(result, input.PalletCode);
            if (boxing == null) throw new Exception("组盘失败");
            //// è°ƒç”¨GetProcessApplyAsync方法,获取工艺路线
            //ProcessApplyDto process = await GetProcessApplyAsync(input, result);
            //// å¦‚æžœprocess为null,则返回content
            //if (process == null) return content;
            //// è°ƒç”¨_processApplyService.GetProcessApplyAsync方法,获取工艺申请
            //content = await _processApplyService.GetProcessApplyAsync(process);
            //// å¦‚果状态为false,则返回null
            //if (!content.Status) return content.Error("工艺申请失败");
            ////// è°ƒç”¨GetProcessResponseAsync方法,获取工艺响应
            ////var processResponse = await GetProcessResponseAsync(process, input.Position);
            var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
            var task = new Dt_Task
            {
                CurrentAddress = input.Position,
                Grade = 1,
                Roadway = input.Roadways,
                TargetAddress = stationManager.stationLocation,
                Dispatchertime = DateTime.Now,
                MaterialNo = "",
                NextAddress = input.Roadways,
                OrderNo = null,
                //PalletCode = stockinfo.PalletCode,
                //SourceAddress = stockinfo.LocationCode,
                TaskState = (int)TaskOutStatusEnum.OutNew,
                TaskType = (int)TaskOutboundTypeEnum.OutTray,
                TaskNum = await BaseDal.GetTaskNo(),
                Creater = "Systeam"
            };
            return task;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
    #endregion
    #region ç§»åº“任务事务
    private async Task<bool> ExecuteTransaction(DtStockInfo stock, Dt_Task_Hty taskHty, DtLocationInfo fromLocation, DtLocationInfo toLocation, int taskId)
    {
        _unitOfWorkManage.BeginTran();
        try
        {
            var isUpdateStock = true;
            var isUpdateStock = _stockInfoRepository.UpdateData(stock);
            // æ·»åŠ åŽ†å²ä»»åŠ¡
            var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
@@ -867,7 +637,6 @@
    #endregion
    #region æ£€æµ‹é«˜æ¸©åº“是否有可出库库存
    public WebResponseContent StockCheckingAsync()
    {
@@ -952,7 +721,6 @@
    #endregion
    #region å¸¸æ¸©è¡¥ç©ºæ‰˜ç›˜è‡³åˆ†å®¹
    public async Task<WebResponseContent> GetFROutTrayToCW(RequestTaskDto taskDTO)
    {
        WebResponseContent content = new WebResponseContent();
@@ -1002,4 +770,46 @@
    #endregion
}
    public async Task<WebResponseContent> RequestOutTaskToBZAsync(RequestTaskDto json)
    {
        WebResponseContent content = new WebResponseContent();
        try
        {
            Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position);
            DtStockInfo stockInfo = _stockInfoRepository.QueryFirst(X => X.IsFull && X.AreaCode == "CWSC3" && X.ProductionLine == "ZJ-7");
            if (stockInfo == null) throw new Exception("库内无满足条件的库存可出库");
            Dt_StationManager OutStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == "1016" && x.stationType == 10);
            // åˆ›å»ºæ–°ä»»åŠ¡å®žä¾‹
            var task = new Dt_Task
            {
                CurrentAddress = stockInfo.LocationInfo.RoadwayNo,
                Grade = 1,
                Roadway = stockInfo.LocationInfo.RoadwayNo,
                TargetAddress = json.Position,
                Dispatchertime = DateTime.Now,
                MaterialNo = "",
                NextAddress = OutStation.stationChildCode,
                OrderNo = null,
                PalletCode = stockInfo.PalletCode,
                SourceAddress = stockInfo.LocationCode,
                TaskState = (int)TaskOutStatusEnum.OutNew,
                TaskType = (int)TaskOutboundTypeEnum.Outbound,
                TaskNum = await BaseDal.GetTaskNo(),
                Creater = "Systeam"
            };
            WMSTaskDTO taskDTO = CreateTaskDTO(task);
            return content.OK(data: taskDTO);
        }
        catch (Exception ex)
        {
            return content.Error($"失败:{ex.Message}");
        }
    }
}