diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java
index b0f194e..d17ebec 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java
@@ -3,6 +3,8 @@ package org.nl.wms.pda.ios_manage.service.impl;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import org.nl.common.exception.BadRequestException;
 import org.nl.wms.basedata_manage.service.IStructattrService;
 import org.nl.wms.basedata_manage.service.dao.Structattr;
@@ -160,6 +162,13 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
             attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁"));
             attrDao.setTaskdtl_id(task_id);
             iStructattrService.updateById(attrDao);
+
+            // 更新起点绑定id
+            iSchBasePointService.update(
+                    new UpdateWrapper<SchBasePoint>().lambda()
+                        .set(SchBasePoint::getIos_id, null)
+                        .eq(SchBasePoint::getPoint_code, pointDao.getPoint_code())
+            );
         }
         return PdaResponse.requestOk();
     }
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java
index 903ee9a..c64a5d0 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import org.nl.common.exception.BadRequestException;
+import org.nl.common.utils.CodeUtil;
 import org.nl.common.utils.SecurityUtils;
 import org.nl.config.IdUtil;
 import org.nl.wms.basedata_manage.service.IStructattrService;
@@ -53,7 +54,7 @@ public class BackInTask extends AbstractTask {
     public String create(JSONObject json) {
         SchBaseTask task = new SchBaseTask();
         task.setTask_id(IdUtil.getStringId());
-        task.setTask_code(IdUtil.getStringId());
+        task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
         task.setTask_status(TaskStatus.CREATE.getCode());
         task.setConfig_code(json.getString("config_code"));
         task.setPoint_code1(json.getString("point_code1"));
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MoveTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MoveTask.java
index 17d1300..b6eb4cd 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MoveTask.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MoveTask.java
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.nl.common.exception.BadRequestException;
+import org.nl.common.utils.CodeUtil;
 import org.nl.common.utils.SecurityUtils;
 import org.nl.config.IdUtil;
 import org.nl.wms.sch_manage.enums.TaskStatus;
@@ -51,7 +52,7 @@ public class MoveTask extends AbstractTask {
     public String create(JSONObject json) {
         SchBaseTask task = new SchBaseTask();
         task.setTask_id(IdUtil.getStringId());
-        task.setTask_code(IdUtil.getStringId());
+        task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
         task.setTask_status(TaskStatus.CREATE.getCode());
         task.setConfig_code(json.getString("config_code"));
         task.setPoint_code1(json.getString("point_code1"));
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java
index 4febb84..02889e6 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import org.nl.common.exception.BadRequestException;
+import org.nl.common.utils.CodeUtil;
 import org.nl.common.utils.SecurityUtils;
 import org.nl.config.IdUtil;
 import org.nl.wms.basedata_manage.service.IStructattrService;
@@ -53,7 +54,7 @@ public class PdaPointTask extends AbstractTask {
     public String create(JSONObject json) {
         SchBaseTask task = new SchBaseTask();
         task.setTask_id(IdUtil.getStringId());
-        task.setTask_code(IdUtil.getStringId());
+        task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
         task.setTask_status(TaskStatus.CREATE.getCode());
         task.setConfig_code(json.getString("config_code"));
         task.setPoint_code1(json.getString("point_code1"));
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java
index 0b0e95e..536b14b 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java
@@ -114,7 +114,7 @@ public class StInTask extends AbstractTask {
         }
         rawAssistIStorService.taskFinish(taskObj);
         taskObj.setTask_status(TaskStatus.FINISHED.getCode());
-        taskObj.setRemark("完成");
+        taskObj.setRemark("已完成");
         taskService.updateById(taskObj);
     }
 
@@ -138,10 +138,10 @@ public class StInTask extends AbstractTask {
     @Transactional(rollbackFor = Exception.class)
     public void finishTask(SchBaseTask taskObj) {
         // 任务完成
-        rawAssistIStorService.taskFinish(taskObj);
         taskObj.setTask_status(TaskStatus.FINISHED.getCode());
-        taskObj.setRemark("完成");
+        taskObj.setRemark("已完成");
         taskService.updateById(taskObj);
+        rawAssistIStorService.taskFinish(taskObj);
     }
 
     @Transactional(rollbackFor = Exception.class)
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java
index fb89a39..a868c79 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java
@@ -132,10 +132,10 @@ public class StOutTask extends AbstractTask {
     @Transactional(rollbackFor = Exception.class)
     public void finishTask(SchBaseTask taskObj) {
         // 任务完成
-        outBillService.taskFinish(taskObj);
         taskObj.setTask_status(TaskStatus.FINISHED.getCode());
-        taskObj.setRemark("完成");
+        taskObj.setRemark("已完成");
         taskService.updateById(taskObj);
+        outBillService.taskFinish(taskObj);
     }
 
     @Transactional(rollbackFor = Exception.class)
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java
index 77b8ea0..0ef5d46 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java
@@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -27,6 +28,8 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
 import org.nl.wms.basedata_manage.service.dao.Structattr;
 import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
 import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto;
+import org.nl.wms.sch_manage.enums.TaskStatus;
+import org.nl.wms.sch_manage.service.ISchBaseTaskService;
 import org.nl.wms.sch_manage.service.dao.SchBasePoint;
 import org.nl.wms.sch_manage.service.dao.SchBaseTask;
 import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
@@ -52,6 +55,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author dsh
@@ -78,6 +82,12 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
     @Resource
     private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper;
 
+    /**
+     * 任务服务
+     */
+    @Resource
+    private ISchBaseTaskService iSchBaseTaskService;
+
     @Resource
     private IBsrealStorattrService iBsrealStorattrService;
 
@@ -1058,6 +1068,19 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
                 .eq(IOStorInvDis::getIostorinv_id,whereJson.get("iostorinv_id"))
         );
 
+        // 判断此单据下的所有任务有没有完成的
+        boolean is_finish = iSchBaseTaskService.list(
+                new QueryWrapper<SchBaseTask>().lambda()
+                        .in(SchBaseTask::getTask_id, storInvDisList.stream()
+                                .map(IOStorInvDis::getTask_id)
+                                .collect(Collectors.toList())
+                        )
+        ).stream()
+                .allMatch(row -> row.getTask_status().equals(TaskStatus.FINISHED.getCode()));
+        if (!is_finish) {
+            throw new BadRequestException("当前有未完成的任务不能强制确认!");
+        }
+
         //需要更新的出入库单明细
         Set<String> dtlSet = new HashSet<>();
 
@@ -1162,7 +1185,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
         // 完成当前分配明细
         ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class)
                 .set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成"))
-                .set(IOStorInvDis::getReal_qty,ioStorInvDis.getPlan_qty())
                 .eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id())
         );
 
@@ -1217,7 +1239,6 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
         // 如果分配明细全部完成则更新明细表状态
         if (countDis == 0){
             // 更新明细表状态
-            ioStorInvDtl.setReal_qty(ioStorInvDis.getPlan_qty());
             ioStorInvDtl.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
             ioStorInvDtlMapper.updateById(ioStorInvDtl);
 
diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/wms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
index c807905..d3dacbb 100644
--- a/wms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
+++ b/wms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
@@ -209,6 +209,7 @@
         </el-table-column>
         <el-table-column prop="material_code" label="物料编码" width="150px" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
         <el-table-column prop="material_name" label="物料名称" width="170px" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
+        <el-table-column prop="storagevehicle_code" label="载具号" width="150px" :min-width="flexWidth('storagevehicle_code',crud.data,'载具号')" />
         <el-table-column prop="pcsn" label="批次号" width="150px" :min-width="flexWidth('pcsn',crud.data,'批次号')" />
         <el-table-column show-overflow-tooltip prop="plan_qty" label="出库重量" :formatter="crud.formatNum3" align="center" width="120px" :min-width="flexWidth('plan_qty',crud.data,'出库重量')">
           <template scope="scope">
diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue b/wms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue
index da13961..7503e66 100644
--- a/wms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue
+++ b/wms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue
@@ -155,6 +155,7 @@
       >
         <el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
         <el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
+        <el-table-column prop="storagevehicle_code" label="载具号" width="150px" :min-width="flexWidth('storagevehicle_code',crud.data,'载具号')" />
         <el-table-column prop="pcsn" label="批次号" align="center" show-overflow-tooltip />
         <el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" />
         <el-table-column prop="struct_code" label="仓位" align="center" show-overflow-tooltip />