From 553ffd71e38c1fcae9c678dae1106e820bbd5127 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 04 六月 2025 08:10:47 +0800
Subject: [PATCH] 任务执行优化修改

---
 rsf-admin/src/page/work/components/locItemInfoModal.jsx                                           |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java      |   65 +++--
 rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx                                       |   14 
 rsf-admin/src/page/work/stockTransfer/stockTransferList.jsx                                       |   14 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java              |   73 +++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java    |   28 ++
 rsf-admin/src/page/basicInfo/loc/LocList.jsx                                                      |  114 ++++++-----
 rsf-admin/src/page/work/outBound/OutBoundList.jsx                                                 |   26 +-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java         |   60 +++--
 rsf-admin/src/page/locItem/LocItemList.jsx                                                        |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryItemService.java          |    7 
 rsf-admin/src/page/task/TaskList.jsx                                                              |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java |    3 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java        |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java |  172 +++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java                  |   12 
 16 files changed, 451 insertions(+), 147 deletions(-)

diff --git a/rsf-admin/src/page/basicInfo/loc/LocList.jsx b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
index c93cee0..3b945f5 100644
--- a/rsf-admin/src/page/basicInfo/loc/LocList.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
@@ -83,58 +83,7 @@
     },
 }));
 
-const filters = [
-    <SearchInput source="condition" alwaysOn />,
-    <ReferenceInput
-        source="warehouseId"
-        label="table.field.loc.warehouseId"
-        reference="warehouse"
-    >
-        <AutocompleteInput
-            label="table.field.loc.warehouseId"
-            optionText="name"
-            filterToQuery={(val) => ({ name: val })}
-        />
-    </ReferenceInput>,
-    <ReferenceInput
-        source="areaId"
-        label="table.field.loc.areaId"
-        reference="warehouseAreas"
-    >
-        <AutocompleteInput
-            label="table.field.loc.areaId"
-            optionText="name"
-            filterToQuery={(val) => ({ name: val })}
-        />
-    </ReferenceInput>,
-    <TextInput source="code" label="table.field.loc.code" />,
-    <TextInput source="type" label="table.field.loc.type" />,
-    <TextInput source="name" label="table.field.loc.name" />,
-    <NumberInput source="flagLogic" label="table.field.loc.flagLogic" />,
-    <TextInput source="fucAtrrs" label="table.field.loc.fucAtrrs" />,
-    <TextInput source="barcode" label="table.field.loc.barcode" />,
-    <TextInput source="unit" label="table.field.loc.unit" />,
-    <TextInput source="size" label="table.field.loc.size" />,
-    <NumberInput source="row" label="table.field.loc.row" />,
-    <NumberInput source="col" label="table.field.loc.col" />,
-    <NumberInput source="lev" label="table.field.loc.lev" />,
-    <NumberInput source="channel" label="table.field.loc.channel" />,
-    <NumberInput source="maxParts" label="table.field.loc.maxParts" />,
-    <NumberInput source="maxPack" label="table.field.loc.maxPack" />,
-    <NumberInput source="flagLabelMange" label="table.field.loc.flagLabelMange" />,
-    <TextInput source="locAttrs" label="table.field.loc.locAttrs" />,
 
-    <TextInput label="common.field.memo" source="memo" />,
-    <SelectInput
-        label="common.field.status"
-        source="status"
-        choices={[
-            { id: '1', name: 'common.enums.statusTrue' },
-            { id: '0', name: 'common.enums.statusFalse' },
-        ]}
-        resettable
-    />,
-]
 
 const LocList = () => {
     const translate = useTranslate();
@@ -143,6 +92,69 @@
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
     const [initDialog, setInitDialog] = useState(false);
+    const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_loc_use_stas')) || [];
+
+    const filters = [
+        <SearchInput source="condition" alwaysOn />,
+        <ReferenceInput
+            source="warehouseId"
+            label="table.field.loc.warehouseId"
+            reference="warehouse"
+        >
+            <AutocompleteInput
+                label="table.field.loc.warehouseId"
+                optionText="name"
+                filterToQuery={(val) => ({ name: val })}
+            />
+        </ReferenceInput>,
+        <ReferenceInput
+            source="areaId"
+            label="table.field.loc.areaId"
+            reference="warehouseAreas"
+        >
+            <AutocompleteInput
+                label="table.field.loc.areaId"
+                optionText="name"
+                filterToQuery={(val) => ({ name: val })}
+            />
+        </ReferenceInput>,
+        <AutocompleteInput
+            choices={dicts}
+            optionText="label"
+            label="table.field.loc.useStatus"
+            source="useStatus"
+            optionValue="value"
+            parse={v => v}
+            alwaysOn
+        />,
+        <TextInput source="code" label="table.field.loc.code" />,
+        <TextInput source="type" label="table.field.loc.type" />,
+        <TextInput source="name" label="table.field.loc.name" />,
+        <NumberInput source="flagLogic" label="table.field.loc.flagLogic" />,
+        <TextInput source="fucAtrrs" label="table.field.loc.fucAtrrs" />,
+        <TextInput source="barcode" label="table.field.loc.barcode" />,
+        <TextInput source="unit" label="table.field.loc.unit" />,
+        <TextInput source="size" label="table.field.loc.size" />,
+        <NumberInput source="row" label="table.field.loc.row" />,
+        <NumberInput source="col" label="table.field.loc.col" />,
+        <NumberInput source="lev" label="table.field.loc.lev" />,
+        <NumberInput source="channel" label="table.field.loc.channel" />,
+        <NumberInput source="maxParts" label="table.field.loc.maxParts" />,
+        <NumberInput source="maxPack" label="table.field.loc.maxPack" />,
+        <NumberInput source="flagLabelMange" label="table.field.loc.flagLabelMange" />,
+        <TextInput source="locAttrs" label="table.field.loc.locAttrs" />,
+
+        <TextInput label="common.field.memo" source="memo" />,
+        <SelectInput
+            label="common.field.status"
+            source="status"
+            choices={[
+                { id: '1', name: 'common.enums.statusTrue' },
+                { id: '0', name: 'common.enums.statusFalse' },
+            ]}
+            resettable
+        />,
+    ]
 
     return (
         <Box display="flex">
diff --git a/rsf-admin/src/page/locItem/LocItemList.jsx b/rsf-admin/src/page/locItem/LocItemList.jsx
index 5051b92..8cce6c2 100644
--- a/rsf-admin/src/page/locItem/LocItemList.jsx
+++ b/rsf-admin/src/page/locItem/LocItemList.jsx
@@ -165,7 +165,7 @@
                 actions={(
                     <TopToolbar>
                         <FilterButton />
-                        <SelectColumnsButton preferenceKey='loc' />
+                        {/* <SelectColumnsButton preferenceKey='loc' /> */}
                     </TopToolbar>
                 )}
                 perPage={DEFAULT_PAGE_SIZE}
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index 5d40fac..52dd7e2 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -255,7 +255,7 @@
         }
     }
     return (
-        ((record?.taskStatus < 98) || (record?.taskType >= 101 && record?.taskStatus < 198)) ? (<ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>)
+        ((record?.taskStatus < 98) || (record?.taskType >= 101 && record?.taskStatus < 198))  || (record?.taskType == 11 && record?.taskStatus == 101) ? (<ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>)
     )
 }
 
diff --git a/rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx b/rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx
index d48c170..d28751b 100644
--- a/rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx
+++ b/rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx
@@ -222,13 +222,13 @@
             width: 100,
             editable: false,
         },
-        {
-            field: 'workQty',
-            headerName: translate('table.field.locItem.workQty'),
-            width: 100,
-            type: 'number',
-            editable: false,
-        },
+        // {
+        //     field: 'workQty',
+        //     headerName: translate('table.field.locItem.workQty'),
+        //     width: 100,
+        //     type: 'number',
+        //     editable: false,
+        // },
         {
             field: 'matnrCode',
             headerName: translate('table.field.locItem.matnrCode'),
diff --git a/rsf-admin/src/page/work/components/locItemInfoModal.jsx b/rsf-admin/src/page/work/components/locItemInfoModal.jsx
index 3f7d883..9061c88 100644
--- a/rsf-admin/src/page/work/components/locItemInfoModal.jsx
+++ b/rsf-admin/src/page/work/components/locItemInfoModal.jsx
@@ -172,7 +172,7 @@
         { field: 'maktx', headerName: translate('table.field.locItem.maktx'), width: 300 },
         { field: 'batch', headerName: translate('table.field.locItem.batch'), width: 100 },
         { field: 'anfme', headerName: translate('table.field.locItem.anfme'), width: 100 },
-        { field: 'workQty', headerName: translate('table.field.locItem.workQty'), width: 100 },
+        // { field: 'workQty', headerName: translate('table.field.locItem.workQty'), width: 100 },
         { field: 'unit', headerName: translate('table.field.locItem.unit'), width: 100 },
 
     ])
diff --git a/rsf-admin/src/page/work/outBound/OutBoundList.jsx b/rsf-admin/src/page/work/outBound/OutBoundList.jsx
index 391ca1d..2a6494e 100644
--- a/rsf-admin/src/page/work/outBound/OutBoundList.jsx
+++ b/rsf-admin/src/page/work/outBound/OutBoundList.jsx
@@ -183,12 +183,12 @@
     }
     const http = async (sta, items) => {
         console.log(items);
-        const filZores = items.filter(item => item.outQty  <= 0.0);
-        const filter = items.filter(item => (item.outQty + item.workQty) > item.anfme);
-        if (filter.length > 0 || filZores.length > 0) {
-            notify(translate('toolbar.request.error.out_stock_qty'))
-            return
-        }
+        // const filZores = items.filter(item => item.outQty  <= 0.0);
+        // const filter = items.filter(item => (item.outQty + item.workQty) > item.anfme);
+        // if (filter.length > 0 || filZores.length > 0) {
+        //     notify(translate('toolbar.request.error.out_stock_qty'))
+        //     return
+        // }
         const { data: { code, data, msg } } = await request.post(`/locItem/generate/task`, { siteNo: sta, items: items });
         if (code === 200) {
             notify(msg);
@@ -232,13 +232,13 @@
             width: 100,
             editable: false,
         },
-        {
-            field: 'workQty',
-            headerName: translate('table.field.locItem.workQty'),
-            width: 100,
-            type: 'number',
-            editable: false,
-        },
+        // {
+        //     field: 'workQty',
+        //     headerName: translate('table.field.locItem.workQty'),
+        //     width: 100,
+        //     type: 'number',
+        //     editable: false,
+        // },
         {
             field: 'locCode',
             headerName: translate('table.field.locItem.locCode'),
diff --git a/rsf-admin/src/page/work/stockTransfer/stockTransferList.jsx b/rsf-admin/src/page/work/stockTransfer/stockTransferList.jsx
index 66e82eb..5c4bce0 100644
--- a/rsf-admin/src/page/work/stockTransfer/stockTransferList.jsx
+++ b/rsf-admin/src/page/work/stockTransfer/stockTransferList.jsx
@@ -271,13 +271,13 @@
             width: 100,
             editable: false,
         },
-        {
-            field: 'workQty',
-            headerName: translate('table.field.locItem.workQty'),
-            width: 100,
-            type: 'number',
-            editable: false,
-        },
+        // {
+        //     field: 'workQty',
+        //     headerName: translate('table.field.locItem.workQty'),
+        //     width: 100,
+        //     type: 'number',
+        //     editable: false,
+        // },
         {
             field: 'locCode',
             headerName: translate('table.field.locItem.locCode'),
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java
index e4a9178..adf0cba 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java
@@ -1,9 +1,11 @@
 package com.vincent.rsf.server.manager.controller;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.common.annotation.OperationLog;
 import com.vincent.rsf.server.common.domain.BaseParam;
@@ -14,10 +16,12 @@
 import com.vincent.rsf.server.manager.service.CompanysService;
 import com.vincent.rsf.server.manager.service.DeliveryItemService;
 import com.vincent.rsf.server.system.controller.BaseController;
+import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.*;
@@ -115,7 +119,29 @@
     @PreAuthorize("hasAuthority('manager:deliveryItem:list')")
     @PostMapping("/deliveryItem/export")
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
-        ExcelUtil.build(ExcelUtil.create(deliveryItemService.list(), DeliveryItem.class), response);
+        if (!Cools.isEmpty(map) && !Cools.isEmpty(map.get("ids"))) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        List<Long> jsonArray = JSONArray.parseArray(JSONArray.toJSONString(map.get("ids")), Long.class);
+//        if (jsonArray.isEmpty()) {
+//            ExcelUtil.build(ExcelUtil.create(deliveryItemService.getOne(new La), DeliveryItem.class), response);
+//        } else {
+//            ExcelUtil.build(ExcelUtil.create(deliveryItemService.list(), DeliveryItem.class), response);
+//        }
+    }
+
+
+    @PostMapping("/deliveryItem/import")
+    @ApiOperation("DO鍗曞鍏ユ帴鍙�")
+    @PreAuthorize("hasAuthority('manager:asnOrderItem:update')")
+    public R importExcel(@RequestParam(value = "file") MultipartFile file) throws Exception {
+        if (Objects.isNull(file)) {
+            return R.error("鏂囦欢涓嶈兘涓虹┖锛侊紒");
+        }
+        Map<String, Object> hashMap = new HashMap<>();
+
+        return R.ok();
+//        return deliveryItemService.excelImport(file, hashMap, getLoginUserId());
     }
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java
index 86e8297..69ccd27 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java
@@ -19,7 +19,7 @@
     @Excel(name = "*DO鍗曞彿")
     @ApiModelProperty(value= "*PO鍗曞彿")
     @ExcelComment(value = "poCode", example = "PO25413975")
-    private String poCode;
+    private String doCode;
 
     @Excel(name = "*琛屽彿")
     @ApiModelProperty(value= "*琛屽彿")
@@ -85,7 +85,7 @@
     @Excel(name = "鏁伴噺")
     @ApiModelProperty(value= "鏁伴噺")
     @ExcelComment(value = "anfme", example = "75")
-    private Double anfme;
+    private String anfme;
 
     /**
      * 渚涘簲鍟嗙紪鐮�
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index 13b453f..e63a975 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -2,17 +2,24 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.utils.LocUtils;
+import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
+import com.vincent.rsf.server.manager.enums.LocStsType;
 import com.vincent.rsf.server.manager.enums.TaskStsType;
 import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.TaskType;
 import com.vincent.rsf.server.manager.service.*;
+import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
 import com.vincent.rsf.server.system.constant.GlobalConfigCode;
 import com.vincent.rsf.server.system.entity.Config;
 import com.vincent.rsf.server.system.service.ConfigService;
 import com.vincent.rsf.server.system.utils.SystemAuthUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -39,6 +46,13 @@
     private TaskItemLogService taskItemLogService;
     @Autowired
     private ConfigService configService;
+    @Autowired
+    private LocServiceImpl locService;
+
+    @Value("${wcs-slave.doubleLocs}")
+    private List<Integer> rows;
+    @Autowired
+    private LocItemService locItemService;
 
     /**
      * @param
@@ -78,6 +92,65 @@
     }
 
     /**
+     * 浠诲姟鑷姩涓嬪彂
+     * @throws Exception
+     */
+//    @Scheduled(cron = "0/5 * * * * ?  ")
+    @Transactional(rollbackFor = Exception.class)
+    public void taskToWCS() throws Exception {
+        Long loginUserId = SystemAuthUtils.getLoginUserId();
+        List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_IN.type, TaskType.TASK_TYPE_OUT.type);
+        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getTaskType, list).orderByDesc(Task::getSort));
+        for (Task task : tasks) {
+            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, task.getBarcode()));
+            if (Objects.isNull(loc)) {
+                continue;
+            }
+            //鍒ゆ柇鏄惁娣卞簱浣�
+            if (!LocUtils.isShallowLoc(loc.getCode())) {
+                //鑾峰彇娣卞簱浣嶅搴旂殑娴呭簱浣�
+                String shallowLoc = LocUtils.getShallowLoc(loc.getCode());
+                if (StringUtils.isBlank(shallowLoc)) {
+                    continue;
+                }
+                Loc shalloc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
+                if (Objects.isNull(shalloc) || !shalloc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
+                    //濡傛灉娴呭簱浣嶄笉鍦ㄥ簱璺冲嚭寰幆
+                    continue;
+                }
+                LocToTaskParams params = new LocToTaskParams();
+                params.setOrgLoc(shallowLoc).setType(TaskType.TASK_TYPE_LOC_MOVE.type + "");
+                //鐢熸垚绉诲簱浠诲姟
+                locItemService.genMoveTask(params, loginUserId);
+            }
+            //TODO 璋冪敤涓嬪彂浠诲姟鎺ュ彛
+        }
+    }
+
+    /**
+     * 姣忎簲绉掓牎楠屾繁搴撲綅鏄惁涓虹┖锛屽鏋滄祬搴撲綅鏈夎揣锛屽皢娴呭簱浣嶇Щ鑷虫繁搴撲綅
+     */
+    @Scheduled(cron = "0/35 * * * * ?  ")
+    @Transactional(rollbackFor = Exception.class)
+    public void shallocToDeep() throws Exception {
+        List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>()
+                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+                .in(Loc::getRow, rows));
+        if (locs.isEmpty()) {
+            return;
+        }
+        for (Loc loc : locs) {
+            String shallowLoc = LocUtils.getShallowLoc(loc.getCode());
+            Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
+            if (Objects.isNull(one) || !one.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
+                continue;
+            }
+            taskService.moveToDeep(SystemAuthUtils.getLoginUserId(), shallowLoc);
+        }
+    }
+
+
+    /**
      * @param
      * @return
      * @author Ryan
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryItemService.java
index 5c5ec62..1abc71d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryItemService.java
@@ -1,8 +1,15 @@
 package com.vincent.rsf.server.manager.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.server.manager.entity.DeliveryItem;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 
 public interface DeliveryItemService extends IService<DeliveryItem> {
 
+//    R excelImport(MultipartFile file, Map<String, Object> hashMap, Long loginUserId) throws Exception;
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
index 1d20247..ee9b819 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
@@ -12,12 +12,12 @@
 
     R generateTasks(GenerateTaskParams waitPakin, Long loginUserId);
 
-    R generateFlatWarehouseTasks(WaitPakin waitPakins,String locCode, Long loginUserId);
+    R generateFlatWarehouseTasks(WaitPakin waitPakins, String locCode, Long loginUserId);
 
-    R generateAGVTasks(WaitPakin waitPakins,String locCode,String orgSta, Long loginUserId);
+    R generateAGVTasks(WaitPakin waitPakins, String locCode, String orgSta, Long loginUserId);
 
-//    R completeTask(String id);
-     void completeTask(List<Task> task) throws Exception;
+    //    R completeTask(String id);
+    void completeTask(List<Task> task) throws Exception;
 
     R removeTask(Long[] ids, Long loginUserId);
 
@@ -28,4 +28,6 @@
     Task taskToTop(Long id, Long loginUserId) throws Exception;
 
     Task operateComplete(Long id, Long loginUserId);
-}
+
+    void moveToDeep(Long loginUserId, String curLoc) throws Exception;
+}
\ No newline at end of file
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 22ee73d..a24f52f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -96,9 +96,6 @@
     public synchronized R excelImport(MultipartFile file, HashMap<String, Object> hashMap, Long loginUserId) throws Exception {
         ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), AsnOrderTemplate.class, ExcelUtil.getDefaultImportParams());
         if (result.getList().isEmpty()) {
-            throw new CoolException("鐗╂枡瀵煎叆澶辫触锛侊紒");
-        }
-        if (result.getList().isEmpty()) {
             throw new CoolException("琛ㄦ牸鍐呭涓嶈兘涓虹┖锛侊紒");
         }
         List<AsnOrderTemplate> resultList = result.getList();
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java
index 2e4ae68..7e59d53 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java
@@ -1,12 +1,182 @@
 package com.vincent.rsf.server.manager.service.impl;
 
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.common.utils.ExcelUtil;
+import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
+import com.vincent.rsf.server.manager.entity.excel.DeliveryTemplate;
+import com.vincent.rsf.server.manager.enums.CompanysType;
+import com.vincent.rsf.server.manager.enums.OrderType;
+import com.vincent.rsf.server.manager.enums.OrderWorkType;
+import com.vincent.rsf.server.manager.enums.QlyIsptResult;
 import com.vincent.rsf.server.manager.mapper.DeliveryItemMapper;
-import com.vincent.rsf.server.manager.entity.DeliveryItem;
+import com.vincent.rsf.server.manager.service.CompanysService;
 import com.vincent.rsf.server.manager.service.DeliveryItemService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.vincent.rsf.server.manager.service.DeliveryService;
+import com.vincent.rsf.server.manager.service.MatnrService;
+import com.vincent.rsf.server.system.constant.SerialRuleCode;
+import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service("deliveryItemService")
 public class DeliveryItemServiceImpl extends ServiceImpl<DeliveryItemMapper, DeliveryItem> implements DeliveryItemService {
 
+    @Autowired
+    private DeliveryService deliveryService;
+    @Autowired
+    private MatnrService matnrService;
+    @Autowired
+    private CompanysService companysService;
+    @Autowired
+    private DeliveryItemService deliveryItemService;
+
+//    private
+    /**
+     * excel DO鍗曞鍏�
+     *
+     * @param file
+     * @param hashMap
+     * @param loginUserId
+     * @return
+     */
+//    @Override
+//    public R excelImport(MultipartFile file, Map<String, Object> hashMap, Long loginUserId) throws Exception {
+//        ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), DeliveryTemplate.class, ExcelUtil.getDefaultImportParams());
+//        if (result.getList().isEmpty()) {
+//            throw new CoolException("琛ㄦ牸鍐呭涓嶈兘涓虹┖锛侊紒");
+//        }
+//        List<DeliveryTemplate> resultList = result.getList();
+//        Map<String, List<DeliveryTemplate>> listMap = resultList.stream().collect(Collectors.groupingBy(DeliveryTemplate::getDoCode));
+//        StringBuffer sbFaild = new StringBuffer();
+//        for (String key : listMap.keySet()) {
+//            if (StringUtils.isBlank(key)) {
+//                throw new CoolException("鍗曞彿涓嶈兘涓虹┖锛侊紒");
+//            }
+//            DeliveryTemplate template = listMap.get(key).stream().findFirst().get();
+//            Delivery order = deliveryService.getOne(new LambdaQueryWrapper<Delivery>().eq(Delivery::getCode, key));
+//            if (!Objects.isNull(order)) {
+//                sbFaild.append(template.getDoCode()).append(",宸叉坊鍔狅紒锛�");
+//                throw new CoolException(sbFaild.toString());
+//            }
+//            order = new Delivery();
+//            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+//            Date date = dateFormat.parse(template.getArrTime());
+//            if (Objects.isNull(date)) {
+//                throw new CoolException("鏃堕棿鏍煎紡閿欒锛侊紒");
+//            }
+//            if (Objects.isNull((OrderType.getTypeVal(template.getType())))) {
+//                sbFaild.append(template.getDoCode()).append(",鍗曟嵁鐘舵�佷笉瀛樺湪锛侊紒");
+//                throw new CoolException(sbFaild.toString());
+//            }
+//            if (Objects.isNull((OrderWorkType.getWorkType(template.getWkType())))) {
+//                sbFaild.append(template.getDoCode()).append(",涓氬姟鐘舵�佷笉瀛樺湪锛侊紒");
+//                throw new CoolException(sbFaild.toString());
+//            }
+//
+//            order.setCode(template.getDoCode())
+//                    .setPoCode(template.getPoCode())
+//                    .setMemo(template.getMemo())
+//                    .setArrTime(date)
+//                    .setUpdateBy(loginUserId)
+//                    .setLogisNo(template.getLogicNo())
+//                    .setCreateBy(loginUserId)
+//                    .setType(OrderType.getTypeVal(template.getType()))
+//                    .setWkType(OrderWorkType.getWorkType(template.getWkType()));
+//            if (!deliveryService.save(order)) {
+//                throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒");
+//            }
+//            List<DeliveryItem> items = new ArrayList<>();
+//            for (DeliveryTemplate orderTemplate : listMap.get(key)) {
+//                DeliveryItem orderItem = new DeliveryItem();
+//                if (StringUtils.isBlank(orderTemplate.getMatnrCode())) {
+//                    throw new CoolException(orderTemplate.getDoCode() + "锛氱墿鏂欑紪鐮佷笉鑳戒负绌猴紒锛�");
+//                }
+//                if (StringUtils.isBlank(orderTemplate.getAnfme())) {
+//                    throw new CoolException(orderTemplate.getDoCode() + "锛氭暟閲忎笉鑳戒负绌猴紒锛�");
+//                }
+//                if (StringUtils.isBlank(orderTemplate.getType())) {
+//                    throw new CoolException(orderTemplate.getDoCode() + "锛氬崟鎹被鍨嬩笉鑳戒负绌猴紒锛�");
+//                }
+//                if (StringUtils.isBlank(orderTemplate.getWkType())) {
+//                    throw new CoolException(orderTemplate.getDoCode() + "锛氫笟鍔$被鍨嬩笉鑳戒负绌猴紒锛�");
+//                }
+//
+//                Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>()
+//                        .eq(Matnr::getCode, orderTemplate.getMatnrCode()));
+//                if (Objects.isNull(matnr)) {
+//                    sbFaild.append(orderTemplate.getMatnrCode()).append("鐗╂枡涓嶅瓨鍦�");
+//                    throw new CoolException(sbFaild.toString());
+//                }
+//                String trackCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, matnr);
+//                orderItem.setDeliveryId(order.getId())
+//                        .setDeliveryCode(order.getCode())
+//                        .setSplrBatch(orderTemplate.getSplrBatch())
+//                        .setPlatItemId(orderTemplate.getPlatItemId())
+//                        .setAnfme(Double.parseDouble(orderTemplate.getAnfme()))
+//                        .setIsptResult(QlyIsptResult.getDescVal(orderTemplate.getIsptResult()))
+////                        .setTrackCode(trackCode)
+//                        .setBarcode(trackCode)
+//                        .setPlatOrderCode(orderTemplate.getPlatOrderCode())
+//                        .setPlatWorkCode(orderTemplate.getPlatWorkCode())
+//                        .setProjectCode(orderTemplate.getProjectCode())
+//                        .setPoCode(orderTemplate.getDoCode())
+//                        .setPurUnit(matnr.getUnit())
+//                        .setCreateBy(loginUserId)
+//                        .setUpdateBy(loginUserId)
+//                        .setSpec(matnr.getSpec())
+//                        .setModel(matnr.getModel())
+//                        .setMaktx(matnr.getName())
+//                        .setMatnrCode(matnr.getCode())
+//                        .setMatnrId(matnr.getId())
+//                        .setStockUnit(matnr.getUnit());
+//                if (!Objects.isNull(orderTemplate.getSplrCode())) {
+//                    Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>()
+//                            .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val)
+//                            .eq(Companys::getCode, orderTemplate.getSplrCode()));
+//                    if (!Objects.isNull(companys)) {
+//                        orderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName());
+//                    } else {
+//                        sbFaild.append("渚涘簲鍟�:" + orderTemplate.getSplrCode()).append("涓嶅瓨鍦�");
+//                        throw new CoolException(sbFaild.toString());
+//                    }
+//                } else {
+//                    continue;
+//                }
+//                items.add(orderItem);
+//
+//                if (!deliveryItemService.save(orderItem)) {
+//                    throw new CoolException("鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒");
+//                }
+//            }
+//            if (!items.isEmpty()) {
+////                double qty = items.stream().mapToDouble(AsnOrderItem::getQty).sum();
+//                double anfme = items.stream().mapToDouble(DeliveryItem::getAnfme).sum();
+//                if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>()
+////                        .set(AsnOrder::getQty, qty)
+//                        .set(Delivery::getAnfme, anfme)
+//                        .eq(Delivery::getId, order.getId()))) {
+//                    throw new CoolException("鍗曟嵁鏁伴噺淇敼澶辫触锛侊紒");
+//                }
+//            }
+//
+//
+//        }
+//
+//
+//        return null;
+//    }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index 43a083b..5fbaf0b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -77,26 +77,11 @@
             if (!locService.updateById(loc)) {
                 throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐ワ紒锛�");
             }
-
             Task moveTask = new Task();
-            if (!LocUtils.isShallowLoc(loc.getCode())) {
-                //鑾峰彇娣卞簱浣嶅搴旀祬搴撲綅
-                String shallowLoc = LocUtils.getShallowLoc(loc.getCode());
-                Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
-                if (Objects.isNull(one)) {
-                    throw new CoolException("瀵瑰簲搴撲綅涓嶅瓨鍦紒锛�");
-                }
-                map.setOrgLoc(one.getCode());
-                //浼樺厛鐢熸垚绉诲簱浠诲姟
-                if (!one.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
-                    moveTask = genMoveTask(map, loginUserId);
-                }
-            }
 
             String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
             task.setOrgLoc(loc.getCode())
                     .setTaskCode(ruleCode)
-                    .setParentId(moveTask.getId())
                     .setTargSite(siteNo)
                     .setSort(Constants.TASK_SORT_DEFAULT_VALUE)
                     .setUpdateBy(loginUserId)
@@ -133,7 +118,6 @@
                         throw new CoolException("绔欑偣涓嶆敮鎸佹嫞鏂欏嚭搴擄紒锛�");
                     }
                     task.setTaskType(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type).setWarehType(deviceSite.getDevice());
-
                 } else {
                     //鍏ㄦ澘鍑哄簱
                     DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
@@ -162,12 +146,40 @@
                 throw new CoolException("浠诲姟鍒涘缓澶辫触锛侊紒");
             }
 
-            if (!Objects.isNull(moveTask.getId())) {
-                moveTask.setParentId(task.getId());
-                if (!taskService.saveOrUpdate(moveTask)) {
-                    throw new CoolException("浠诲姟淇℃伅淇敼澶辫触锛侊紒");
+            if (!LocUtils.isShallowLoc(loc.getCode())) {
+                //鑾峰彇娣卞簱浣嶅搴旀祬搴撲綅
+                String shallowLoc = LocUtils.getShallowLoc(loc.getCode());
+                Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
+                if (Objects.isNull(one)) {
+                    throw new CoolException("瀵瑰簲搴撲綅涓嶅瓨鍦紒锛�");
+                }
+                Task workTask = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, one.getBarcode()));
+                if (Objects.isNull(workTask)) {
+                    map.setOrgLoc(one.getCode());
+                    //浼樺厛鐢熸垚绉诲簱浠诲姟
+                    if (one.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
+                        moveTask = genMoveTask(map, loginUserId);
+                        task.setParentId(moveTask.getId());
+                        if (!taskService.updateById(task)) {
+                            throw new CoolException("涓讳换鍔″叧鑱斿け璐ワ紒锛�");
+                        }
+                    }
+                } else {
+                    workTask.setSort(task.getSort() + 1).setParentId(task.getId());
+                    if (!taskService.updateById(workTask)) {
+                        throw new CoolException("浼樺厛绾т慨鏀瑰け璐ワ紒锛�");
+                    }
                 }
             }
+
+
+
+//            if (!Objects.isNull(moveTask.getId())) {
+//                moveTask.setParentId(task.getId()).setSort(moveTask.getSort() - 1);
+//                if (!taskService.saveOrUpdate(moveTask)) {
+//                    throw new CoolException("浠诲姟淇℃伅淇敼澶辫触锛侊紒");
+//                }
+//            }
 
             List<TaskItem> taskItems = new ArrayList<>();
             listMap.get(key).forEach(item -> {
@@ -231,25 +243,22 @@
         if (Objects.isNull(map.getOrgLoc()) || StringUtils.isBlank(map.getOrgLoc())) {
             throw new CoolException("婧愬簱浣嶄笉鑳戒负绌猴紒");
         }
-
         Loc orgLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, map.getOrgLoc()));
         if (Objects.isNull(orgLoc)) {
             throw new CoolException("婧愬簱浣嶄笉瀛樺湪锛侊紒");
         }
-
 //        if (orgLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_R.type)
 //                || orgLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_S.type)
 //                || orgLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_X.type ) ) {
 //            throw new CoolException("婧愬簱浣嶆湁浠诲姟姝e湪鎵ц涓�...");
 //        }
-
         orgLoc.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
 
         if (!locService.updateById(orgLoc)) {
             throw new CoolException("鍑哄簱棰勭害澶辫触锛侊紒");
         }
 
-        Loc targetLoc = new Loc();
+        Loc targetLoc;
         if (Objects.isNull(map.getTarLoc()) || StringUtils.isBlank(map.getTarLoc())) {
             //鐩爣搴撲綅涓虹┖锛岃嚜鍔ㄨ幏鍙栨柊搴撲綅
             DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
@@ -264,7 +273,7 @@
                     .setSourceStaNo(Integer.parseInt(deviceSite.getSite()))
                     .setLocType1(Integer.parseInt(orgLoc.getType())
                     );
-            InTaskMsgDto locNo = null;
+            InTaskMsgDto locNo;
             try {
                 locNo = wcsService.getLocNo(param);
             } catch (Exception e) {
@@ -295,7 +304,7 @@
                 .setUpdateBy(loginUserId)
                 .setSort(Constants.TASK_SORT_DEFAULT_VALUE)
                 .setUpdateTime(new Date())
-                .setTaskStatus(TaskStsType.GENERATE_OUT.id)
+                .setTaskStatus(TaskStsType.GENERATE_IN.id)
                 .setBarcode(orgLoc.getBarcode());
 
         if (!taskService.save(task)) {
@@ -316,8 +325,8 @@
                         .setSourceCode(item.getLocCode())
                         .setSource(item.getId())
                         .setUpdateTime(new Date())
-                        .setOrderType(OrderType.ORDER_OUT.type)
-                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_OTHER.type));
+                        .setOrderType(OrderType.ORDER_IN.type)
+                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type));
                 taskItems.add(taskItem);
             }
             if (!taskItemService.saveBatch(taskItems)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 2b3e618..9ad72a4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -455,10 +455,12 @@
         }
 
         modiftyTaskSort(task, loginUserId);
-
         //
-
+//        if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
+//            task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
+//        } else {
         task.setTaskStatus(task.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.COMPLETE_OUT.id);
+//        }
         if (!this.updateById(task)) {
             throw new CoolException("瀹屾垚浠诲姟澶辫触");
         }
@@ -511,26 +513,34 @@
 //
 //                return moveTask;
 //            }
-        } else {
-            //娴呭簱浣嶏紝鍒ゆ柇娣卞搴旀繁搴撲綅鏄惁涓虹┖锛屽鏋滀负绌虹敓鎴愪竴涓Щ搴撲换鍔★紝灏嗘墭鐩橀�佸叆娣卞簱浣�
-            String deepLoc = LocUtils.getDeepLoc(curLoc);
-            if (StringUtils.isBlank(deepLoc)) {
-                throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛橈紒");
-            }
-            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, deepLoc));
-            if (Objects.isNull(loc)) {
-                throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
-            }
-            //鍒ゆ柇娣卞簱浣嶆槸鍚︿负绌�
-            if (loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
-                LocToTaskParams params = new LocToTaskParams();
-                params.setOrgLoc(curLoc).setTarLoc(deepLoc);
-                //鐢熸垚绉绘繁搴撲綅浠诲姟
-                locItemService.genMoveTask(params, loginUserId);
-            }
         }
-
         return task;
+    }
+
+    /**
+     * 浠诲姟瀹屾垚鍚庯紝鍒ゆ柇娣卞簱浣嶆槸鍚︿负绌猴紝濡傛灉涓虹┖鐢熸垚绉诲簱浠诲姟
+     * @param loginUserId
+     * @param curLoc
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void moveToDeep(Long loginUserId, String curLoc) throws Exception {
+        //娴呭簱浣嶏紝鍒ゆ柇娣卞搴旀繁搴撲綅鏄惁涓虹┖锛屽鏋滀负绌虹敓鎴愪竴涓Щ搴撲换鍔★紝灏嗘墭鐩橀�佸叆娣卞簱浣�
+        String deepLoc = LocUtils.getDeepLoc(curLoc);
+        if (StringUtils.isBlank(deepLoc)) {
+            throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛橈紒");
+        }
+        Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, deepLoc));
+        if (Objects.isNull(loc)) {
+            throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
+        }
+        //鍒ゆ柇娣卞簱浣嶆槸鍚︿负绌�
+        if (loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+            LocToTaskParams params = new LocToTaskParams();
+            params.setOrgLoc(curLoc).setTarLoc(deepLoc);
+            //鐢熸垚绉绘繁搴撲綅浠诲姟
+            locItemService.genMoveTask(params, loginUserId);
+        }
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -708,8 +718,8 @@
     @Transactional(rollbackFor = Exception.class)
     public R removeTask(Long[] ids, Long loginUserId) {
         List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
-        List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_IN.type, TaskType.TASK_TYPE_OUT.type,TaskType.TASK_TYPE_PICK_AGAIN_OUT.type,
-                TaskType.TASK_TYPE_CHECK_OUT.type,  TaskType.TASK_TYPE_EMPITY_IN.type, TaskType.TASK_TYPE_LOC_MOVE.type,
+        List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_IN.type, TaskType.TASK_TYPE_OUT.type, TaskType.TASK_TYPE_PICK_AGAIN_OUT.type,
+                TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_EMPITY_IN.type, TaskType.TASK_TYPE_LOC_MOVE.type,
                 TaskType.TASK_TYPE_EMPITY_OUT.type, TaskType.TASK_TYPE_MERGE_OUT.type);
         List<Task> tasks = this.list(new LambdaQueryWrapper<Task>()
                 .in(Task::getTaskType, list)
@@ -719,7 +729,7 @@
         }
         for (Task task : tasks) {
             //鍙栨秷绉诲簱浠诲姟
-            if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type) && task.getTaskStatus().equals(TaskStsType.GENERATE_OUT.id)) {
+            if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type) && task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id)) {
                 if (!locService.update(new LambdaUpdateWrapper<Loc>()
                         .eq(Loc::getCode, task.getOrgLoc())
                         .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type))) {
@@ -742,11 +752,9 @@
                     outTask.setParentId(moveTask.getId());
                     if (!this.updateById(outTask)) {
                         throw new CoolException("浠诲姟淇℃伅淇敼澶辫触锛侊紒");
-
                     }
-
                 } else {
-                    throw new CoolException("鏃犳硶鐢熸垚鏂扮殑绉诲簱浠诲姟锛屽彇娑堝け璐ワ紒锛�");
+//                    throw new CoolException("鏃犳硶鐢熸垚鏂扮殑绉诲簱浠诲姟锛屽彇娑堝け璐ワ紒锛�");
                 }
             }
 

--
Gitblit v1.9.1