From f78bb7c1f022e6e6d42d8dc1e7bb84a692e27950 Mon Sep 17 00:00:00 2001
From: songxiaopeng <1393756821@qq.com>
Date: Tue, 19 Mar 2024 17:55:05 +0800
Subject: [PATCH] =?UTF-8?q?add:=E5=A4=96=E9=83=A8=E7=B3=BB=E7=BB=9F?=
 =?UTF-8?q?=E3=80=81=E6=89=8B=E6=8C=81=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0?=
 =?UTF-8?q?=E3=80=81=E4=BB=BB=E5=8A=A1=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ext/controller/IotToWmsController.java    |  55 +++++++
 .../nl/wms/ext/service/IotToWmsService.java   |  20 +++
 .../ext/service/dto/to/iot/AgvStateParam.java |  20 +++
 .../ext/service/dto/to/iot/IotOrdersReq.java  |  20 +++
 .../ext/service/dto/to/iot/IotPartsReq.java   |  24 +++
 .../ext/service/impl/AcsToWmsServiceImpl.java |   7 -
 .../ext/service/impl/IotToWmsServiceImpl.java |  38 +++++
 .../nl/wms/pda/controller/PdaController.java  |  48 ++++++
 .../org/nl/wms/pda/service/PdaService.java    |  16 ++
 .../wms/pda/service/dao/mapper/PdaMapper.java |   2 +
 .../wms/pda/service/dao/mapper/PdaMapper.xml  |   6 +
 .../wms/pda/service/impl/PdaServiceImpl.java  |  58 ++++++++
 .../task/tasks/{ => cy}/CYJKTask.java         |   6 +-
 .../task/tasks/{ => cy}/CYXLTask.java         |  72 +++++++--
 .../task/tasks/{ => fj}/FJSLTask.java         |  26 +++-
 .../task/tasks/{ => fj}/FJXLTask.java         |  17 +--
 .../tasks/{KJRKTask.java => lk/LKZYTask.java} | 117 +++++++--------
 .../task/tasks/{ => qg}/QGJKTask.java         |   2 +-
 .../task/tasks/{ => qg}/QGXLTask.java         |   2 +-
 .../tasks/{LKZYTask.java => qt/QTSLTask.java} | 139 ++++++++++++------
 .../task/tasks/{ => zw}/ZWJKTask.java         |   8 +-
 .../task/tasks/{ => zw}/ZWSLTask.java         |  15 +-
 .../task/tasks/{ => zw}/ZWXLTask.java         |   4 +-
 23 files changed, 550 insertions(+), 172 deletions(-)
 create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java
 create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java
 create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/AgvStateParam.java
 create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotOrdersReq.java
 create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotPartsReq.java
 create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => cy}/CYJKTask.java (97%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => cy}/CYXLTask.java (79%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => fj}/FJSLTask.java (82%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => fj}/FJXLTask.java (93%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{KJRKTask.java => lk/LKZYTask.java} (68%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => qg}/QGJKTask.java (99%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => qg}/QGXLTask.java (99%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{LKZYTask.java => qt/QTSLTask.java} (51%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => zw}/ZWJKTask.java (97%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => zw}/ZWSLTask.java (94%)
 rename lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/{ => zw}/ZWXLTask.java (98%)

diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java
new file mode 100644
index 0000000..a164b5f
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/IotToWmsController.java
@@ -0,0 +1,55 @@
+package org.nl.wms.ext.controller;
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.nl.common.logging.annotation.Log;
+import org.nl.wms.ext.service.AcsToWmsService;
+import org.nl.wms.ext.service.IotToWmsService;
+import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
+import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author sxp
+ */
+@RestController
+@Api(tags = "iot请求lms")
+@RequestMapping("/api/wms")
+@Slf4j
+@SaIgnore
+public class IotToWmsController {
+
+    @Autowired
+    private IotToWmsService iotToWmsService;
+
+    @PostMapping("/task")
+    @Log("iot请求lms新增任务")
+    @ApiOperation("iot请求lms新增任务")
+    public ResponseEntity<Object> apply(@RequestBody JSONObject param) {
+        return new ResponseEntity<>(iotToWmsService.acsApply(param), HttpStatus.OK);
+    }
+
+    @PostMapping("/parts")
+    @Log("叉车离开后数据接口")
+    @ApiOperation("叉车离开后数据接口")
+    public ResponseEntity<Object> parts(@RequestBody IotPartsReq iotPartsReq) {
+        return new ResponseEntity<>(iotToWmsService.parts(iotPartsReq), HttpStatus.OK);
+    }
+
+    @PostMapping("/orders")
+    @Log("叉车离开后数据接口")
+    @ApiOperation("叉车离开后数据接口")
+    public ResponseEntity<Object> orders(@RequestBody IotOrdersReq iotOrdersReq) {
+        return new ResponseEntity<>(iotToWmsService.orders(iotOrdersReq), HttpStatus.OK);
+    }
+
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java
new file mode 100644
index 0000000..51512af
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/IotToWmsService.java
@@ -0,0 +1,20 @@
+package org.nl.wms.ext.service;
+
+import com.alibaba.fastjson.JSONObject;
+import org.nl.wms.ext.service.dto.to.BaseResponse;
+import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
+import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
+
+/**
+ * @Author: sxp
+ * @Description: iot请求wms
+ */
+public interface IotToWmsService {
+    /** ACS请求接口 */
+    BaseResponse acsApply(JSONObject param);
+
+    BaseResponse parts(IotPartsReq iotPartsReq);
+
+    BaseResponse orders(IotOrdersReq iotOrdersReq);
+
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/AgvStateParam.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/AgvStateParam.java
new file mode 100644
index 0000000..ea2f453
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/AgvStateParam.java
@@ -0,0 +1,20 @@
+package org.nl.wms.ext.service.dto.to.iot;
+
+import lombok.Data;
+
+/**
+ * 叉车到位和离开
+ *
+ * @author sxp
+ */
+@Data
+public class AgvStateParam {
+    /*任务号*/
+    private String task_code;
+    /*1 (表示请求取货) 2 (表示取货完成) */
+    private String status;
+    /*设备号*/
+    private String device_code;
+    /*托盘号*/
+    private String vehicle_code;
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotOrdersReq.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotOrdersReq.java
new file mode 100644
index 0000000..388ac23
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotOrdersReq.java
@@ -0,0 +1,20 @@
+package org.nl.wms.ext.service.dto.to.iot;
+
+import lombok.Data;
+
+/**
+ * @author sxp
+ * @Description 叉车离开后发送数据接口请求参数
+ */
+@Data
+public class IotOrdersReq {
+    private String ID;
+    private String Jobname;
+    private String Salesorder;
+    private String Palletid;
+    private String ProductID;
+    private String Angle;
+    private String Thickness;
+    private String PositionX;
+    private String PositionY;
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotPartsReq.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotPartsReq.java
new file mode 100644
index 0000000..29a4496
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/dto/to/iot/IotPartsReq.java
@@ -0,0 +1,24 @@
+package org.nl.wms.ext.service.dto.to.iot;
+
+import lombok.Data;
+
+/**
+ * @author sxp
+ * @Description 叉车离开后发送数据接口请求参数
+ */
+@Data
+public class IotPartsReq {
+    private String ID;
+    private String Jobname;
+    private String PalletID;
+    private String Pallet_Split;
+    private String ProductID;
+    private String Currentqty;
+    private String SizeX;
+    private String SizeY;
+    private String Angle;
+    private String Thickness;
+    private String PositionX;
+    private String PositionY;
+    private String vehicle_code;
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java
index a6418d6..3cd2fa6 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/AcsToWmsServiceImpl.java
@@ -195,7 +195,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
 
     /**
      * 任务阶段反馈最新点位
-     * todo
      */
 
     @Override
@@ -215,12 +214,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
             // 执行创建任务
             task.feedbackState(param, schBaseTask, result);
             taskService.update(schBaseTask);
-            Map<String, String> map = new HashMap<>();
-            map.put("start_point", schBaseTask.getPoint_code1());
-            map.put("next_point", schBaseTask.getPoint_code2());
-            map.put("start_height", schBaseTask.getPoint_code1_height());
-            map.put("next_height", schBaseTask.getPoint_code2_height());
-            result.setParameters(map);
         } catch (Exception e) {
             String message = e.getMessage();
             log.error("ACS请求LMS出现错误: {}{}", e.getMessage(), e);
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java
new file mode 100644
index 0000000..f10449a
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/IotToWmsServiceImpl.java
@@ -0,0 +1,38 @@
+package org.nl.wms.ext.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.nl.wms.ext.service.AcsToWmsService;
+import org.nl.wms.ext.service.IotToWmsService;
+import org.nl.wms.ext.service.dto.to.BaseResponse;
+import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
+import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+@Lazy
+public class IotToWmsServiceImpl implements IotToWmsService {
+    @Autowired
+    private AcsToWmsService acsToWmsService;
+
+    @Override
+    public BaseResponse acsApply(JSONObject param) {
+        return acsToWmsService.acsApply(param);
+    }
+
+
+    @Override
+    public BaseResponse parts(IotPartsReq iotPartsReq) {
+        return null;
+    }
+
+    @Override
+    public BaseResponse orders(IotOrdersReq iotOrdersReq) {
+
+        return null;
+    }
+
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java
index 21a0080..a8f553f 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/controller/PdaController.java
@@ -71,4 +71,52 @@ public class PdaController {
         return new ResponseEntity<>(pdaService.zpjb(param), HttpStatus.OK);
     }
 
+    @PostMapping("/yclrk")
+    @Log("待折弯件出库")
+    @ApiOperation("待折弯件出库")
+    public ResponseEntity<Object> dzwck(@RequestBody JSONObject param){
+        return new ResponseEntity<>(pdaService.dzwck(param), HttpStatus.OK);
+    }
+
+    @PostMapping("/zwjk")
+    @Log("折弯空载具呼叫")
+    @ApiOperation("折弯空载具呼叫")
+    public ResponseEntity<Object> zwjk(@RequestBody JSONObject param){
+        return new ResponseEntity<>(pdaService.zwjk(param), HttpStatus.OK);
+    }
+
+    @PostMapping("/zwzz")
+    @Log("折弯件(成品)周转")
+    @ApiOperation("折弯件(成品)周转")
+    public ResponseEntity<Object> zwzz(@RequestBody JSONObject param){
+        return new ResponseEntity<>(pdaService.zwzz(param), HttpStatus.OK);
+    }
+
+    @PostMapping("/lkzy")
+    @Log("成叠笼框转运")
+    @ApiOperation("成叠笼框转运")
+    public ResponseEntity<Object> lkzy(@RequestBody JSONObject param){
+        return new ResponseEntity<>(pdaService.lkzy(param), HttpStatus.OK);
+    }
+
+    @PostMapping("/qtjgsl")
+    @Log("其它加工送料")
+    @ApiOperation("其它加工送料")
+    public ResponseEntity<Object> qtjgsl(@RequestBody JSONObject param){
+        return new ResponseEntity<>(pdaService.qtjgsl(param), HttpStatus.OK);
+    }
+
+    @PostMapping("/qgxl")
+    @Log("激光切割下料")
+    @ApiOperation("激光切割下料")
+    public ResponseEntity<Object> qgxl(@RequestBody JSONObject param){
+        return new ResponseEntity<>(pdaService.qgxl(param), HttpStatus.OK);
+    }
+
+    @PostMapping("/getVehicleType")
+    @Log("获取载具类型")
+    @ApiOperation("获取载具类型")
+    public ResponseEntity<Object> getVehicleType(){
+        return new ResponseEntity<>(pdaService.getVehicleType(), HttpStatus.OK);
+    }
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java
index 40e3a89..ef6166b 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/PdaService.java
@@ -1,8 +1,11 @@
 package org.nl.wms.pda.service;
 
 import com.alibaba.fastjson.JSONObject;
+import org.nl.wms.pda.service.dao.vo.DropdownListVo;
 import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
 
+import java.util.List;
+
 /**
  * @Author: lyd
  * @Description:
@@ -19,4 +22,17 @@ public interface PdaService {
 
     PdaResponseVo zpjb(JSONObject param);
 
+    PdaResponseVo dzwck(JSONObject param);
+
+    PdaResponseVo zwjk(JSONObject param);
+
+    PdaResponseVo zwzz(JSONObject param);
+
+    PdaResponseVo lkzy(JSONObject param);
+
+    PdaResponseVo qtjgsl(JSONObject param);
+
+    PdaResponseVo qgxl(JSONObject param);
+
+    List<DropdownListVo> getVehicleType();
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java
index e3271dd..aae4739 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.java
@@ -1,6 +1,7 @@
 package org.nl.wms.pda.service.dao.mapper;
 
 import org.nl.wms.pda.service.dao.dto.CommonQueryDto;
+import org.nl.wms.pda.service.dao.vo.DropdownListVo;
 import org.nl.wms.sch.point.service.dao.SchBasePoint;
 
 import java.util.List;
@@ -12,4 +13,5 @@ import java.util.List;
  */
 public interface PdaMapper {
 
+    List<DropdownListVo> getDictByCode(String vehicleType);
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml
index 0ea35f1..eb5aa00 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/mapper/PdaMapper.xml
@@ -2,4 +2,10 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.nl.wms.pda.service.dao.mapper.PdaMapper">
 
+    <select id="getDictByCode" resultType="org.nl.wms.pda.service.dao.vo.DropdownListVo">
+        SELECT `value`,
+               label AS text
+        FROM `sys_dict`
+        WHERE `code` = #{code}
+    </select>
 </mapper>
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java
index 073b926..f4269d3 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java
@@ -1,6 +1,7 @@
 package org.nl.wms.pda.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -11,6 +12,7 @@ import org.nl.wms.database.material.service.IMdBaseMaterialService;
 import org.nl.wms.ext.service.AcsToWmsService;
 import org.nl.wms.pda.service.PdaService;
 import org.nl.wms.pda.service.dao.mapper.PdaMapper;
+import org.nl.wms.pda.service.dao.vo.DropdownListVo;
 import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
 import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
 import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
@@ -135,4 +137,60 @@ public class PdaServiceImpl implements PdaService {
         }
         return PdaResponseVo.pdaResultOk("组盘解绑成功");
     }
+
+    @Override
+    public PdaResponseVo dzwck(JSONObject param) {
+        param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
+        param.put("taskType", "ZWSLTask");
+//        param.put("start_device_code",param.getString("start_device_code"));
+        acsToWmsService.acsApply(param);
+        return PdaResponseVo.pdaResultOk("待折弯件出库成功");
+    }
+
+    @Override
+    public PdaResponseVo zwjk(JSONObject param) {
+        param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
+        param.put("taskType", "ZWJKTask");
+//        param.put("vehicleCode", param.getString("vehicleCode"));
+//        param.put("next_device_code",param.getString("next_device_code"));
+        acsToWmsService.acsApply(param);
+        return PdaResponseVo.pdaResultOk("呼叫空载具成功");
+    }
+
+    @Override
+    public PdaResponseVo zwzz(JSONObject param) {
+        param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
+        param.put("taskType", "ZWXLTask");
+        acsToWmsService.acsApply(param);
+        return PdaResponseVo.pdaResultOk("成品周转任务下发成功");
+    }
+
+    @Override
+    public PdaResponseVo lkzy(JSONObject param) {
+        param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
+        param.put("taskType", "LKZYTask");
+        acsToWmsService.acsApply(param);
+        return PdaResponseVo.pdaResultOk("成叠笼框转运任务下发成功");
+    }
+
+    @Override
+    public PdaResponseVo qtjgsl(JSONObject param) {
+        param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
+        param.put("taskType", "QTSLTask");
+        acsToWmsService.acsApply(param);
+        return PdaResponseVo.pdaResultOk("其它加工送料任务下发成功");
+    }
+
+    @Override
+    public PdaResponseVo qgxl(JSONObject param) {
+        param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
+        param.put("taskType", "QGXLTask");
+        acsToWmsService.acsApply(param);
+        return PdaResponseVo.pdaResultOk("激光切割下料任务下发成功");
+    }
+
+    @Override
+    public List<DropdownListVo> getVehicleType() {
+        return pdaMapper.getDictByCode("vehicle_type");
+    }
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYJKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java
similarity index 97%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYJKTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java
index 9716fbc..fc1fc7b 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYJKTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYJKTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.cy;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -96,8 +97,9 @@ public class CYJKTask extends AbstractTask {
 
     //查找空托盘
     private SchBasePoint findStartPoint(String startRegionStr) {
+        String[] reginList = startRegionStr.split(",");
         LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
-        lam.in(SchBasePoint::getRegion_code, startRegionStr)
+        lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
                 .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
                 .and(la -> la.isNull(SchBasePoint::getIng_task_code)
                         .or()
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java
similarity index 79%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYXLTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java
index 38d5597..4c55af6 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/CYXLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cy/CYXLTask.java
@@ -1,18 +1,19 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.cy;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import freemarker.template.utility.StringUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang.StringUtils;
 import org.nl.common.exception.BadRequestException;
-import org.nl.wms.ext.service.AcsToWmsService;
+import org.nl.config.SpringContextHolder;
+import org.nl.system.service.param.impl.SysParamServiceImpl;
 import org.nl.wms.ext.service.dto.to.BaseResponse;
+import org.nl.wms.ext.service.dto.to.iot.AgvStateParam;
 import org.nl.wms.pdm.service.IPdmBdWorkorderService;
-import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
 import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
 import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
 import org.nl.wms.sch.point.service.ISchBasePointService;
@@ -27,14 +28,12 @@ import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
 import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
 import org.nl.wms.sch.task_manage.task.TaskType;
 import org.nl.wms.sch.task_manage.task.core.TaskStatus;
-import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
 import org.nl.wms.util.PointUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
 
@@ -94,7 +93,7 @@ public class CYXLTask extends AbstractTask {
      * @return
      */
     private SchBasePoint findNextPoint(String nextReginStr) {
-        //todo 区域优先级
+        //todo 区域优先级,暂时按照创建任务配置时,区域选择顺序
         String[] reginList = nextReginStr.split(",");
         LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
         lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
@@ -161,7 +160,7 @@ public class CYXLTask extends AbstractTask {
             endPointObj.setVehicle_qty(1);
             pointService.update(endPointObj);
             // 要把数据存到组盘表 -> 改造公共方法,返回id
-
+            //todo 涉及一对多、设置物料类型为待分拣冲压件、载具类型
             SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
             groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
             groupEntity.setCreate_id("2");
@@ -186,6 +185,7 @@ public class CYXLTask extends AbstractTask {
             groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
             groupEntity.setInstorage_time(DateUtil.now());
             groupEntity.setTask_code(taskObj.getTask_code());
+            groupEntity.setMove_way(startPoint);
             groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
             groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
             groupEntity.setIs_delete(false);
@@ -195,11 +195,6 @@ public class CYXLTask extends AbstractTask {
             taskObj.setTask_status(TaskStatus.FINISHED.getCode());
             taskObj.setGroup_id(groupEntity.getGroup_id());
             taskObj.setRemark("任务完成");
-            try {
-                //todo 入库成功后上报mes
-            } catch (Exception e) {
-                log.error("原材料入库上报MES失败{}", e.getMessage(), e);
-            }
         }
         if (status.equals(TaskStatus.CANCELED)) { // 取消
             // 终点解锁
@@ -226,6 +221,51 @@ public class CYXLTask extends AbstractTask {
 
     @Override
     protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
-        //该场景无需重算等待点
+        // 反馈上位系统 反馈上位系统成功后,返回200给acs
+        AgvStateParam agvStateParam = new AgvStateParam();
+        agvStateParam.setTask_code(schBaseTask.getTask_code());
+        agvStateParam.setDevice_code(schBaseTask.getPoint_code1());
+        agvStateParam.setVehicle_code(schBaseTask.getVehicle_code());
+        String phase = param.getString("phase");
+        String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue();
+        if ("3".equals(phase)) {
+            agvStateParam.setStatus("1");
+            //叉车到位 请求取货
+            String url = iotUrl + "iot/agvarrive";
+            applyIot(url, agvStateParam, result);
+        }
+        if ("5".equals(phase)) {
+            agvStateParam.setStatus("2");
+            //取货完成,请求离开
+            String url = iotUrl + "iot/agvfinish";
+            applyIot(url, agvStateParam, result);
+        }
+    }
+
+    private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
+        String jsonParam = JSON.toJSONString(agvStateParam);
+        log.info("请求iot参数为:{}", jsonParam);
+        try {
+            String resultMsg = HttpRequest.post(url)
+                    .body(jsonParam)
+                    .execute().body();
+            JSONObject res = JSONObject.parseObject(resultMsg);
+            if ("200".equals(res.getString("code"))) {
+                log.info("请求iot成功,返回结果为:{}", res);
+                result.setCode(HttpStatus.OK.value());
+                result.setMessage("请求iot成功!");
+            } else {
+                log.error("请求iot失败:{}", res);
+                result.setCode(HttpStatus.BAD_REQUEST.value());
+                result.setMessage("请求iot失败!");
+            }
+        } catch (Exception e) {
+            String msg = e.getMessage();
+            //请求iot失败
+            log.error("请求iot失败:{}", msg);
+            result.setCode(HttpStatus.BAD_REQUEST.value());
+            result.setMessage("请求iot失败!");
+        }
+
     }
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java
similarity index 82%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJSLTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java
index dc1773d..d1e4880 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJSLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.fj;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -20,14 +20,17 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
 import org.nl.wms.sch.task_manage.AbstractTask;
 import org.nl.wms.sch.task_manage.GeneralDefinition;
 import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
+import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
 import org.nl.wms.sch.task_manage.task.TaskType;
 import org.nl.wms.sch.task_manage.task.core.TaskStatus;
 import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
 import org.nl.wms.util.PointUtils;
+import org.nl.wms.util.TaskUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -74,7 +77,7 @@ public class FJSLTask extends AbstractTask {
                 task.setRemark("未找到所需点位!");
                 taskService.update(task);
                 // 消息通知
-                log.info("冲压机叫空盘未找到所需点位!");
+                log.info("分拣上料未找到所需点位!");
                 continue;
             }
             // 设置起点并修改创建成功状态
@@ -95,9 +98,11 @@ public class FJSLTask extends AbstractTask {
 
     //查找待分拣物料
     private SchBasePoint findStartPoint(String startRegionStr) {
-        //从待分拣货架查找
+        //从待分拣货架查找 物料类型是待分拣物料,物料类型字段尚未确定
+        String[] reginList = startRegionStr.split(",");
         LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
-        lam.in(SchBasePoint::getRegion_code, startRegionStr)
+        lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
+                .eq(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode())
                 .and(la -> la.isNull(SchBasePoint::getIng_task_code)
                         .or()
                         .eq(SchBasePoint::getIng_task_code, ""))
@@ -108,7 +113,7 @@ public class FJSLTask extends AbstractTask {
 
 
     /**
-     * todo 任务完成设置完成时间为开始固化时间
+     *
      */
     @Override
 //    @Transactional(rollbackFor = Exception.class)
@@ -144,6 +149,17 @@ public class FJSLTask extends AbstractTask {
             startPointObj.setIng_task_code("");
             startPointObj.setUpdate_time(DateUtil.now());
             pointService.updateById(startPointObj);
+            //todo 分拣上料完成后 组盘信息解绑
+            SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id());
+            vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
+            vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code());
+            vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name());
+            vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code());
+            vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code());
+            vehicleMaterialGroupObj.setUpdate_id(GeneralDefinition.ACS_ID);
+            vehicleMaterialGroupObj.setUpdate_name(GeneralDefinition.ACS_NAME);
+            vehicleMaterialGroupObj.setUpdate_time(DateUtil.now());
+            vehiclematerialgroupService.updateById(vehicleMaterialGroupObj);
             // 任务完成
             taskObj.setTask_status(TaskStatus.FINISHED.getCode());
             taskObj.setRemark("任务完成");
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java
similarity index 93%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJXLTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java
index fe8326f..c38c1ac 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/FJXLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJXLTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.fj;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
@@ -68,7 +68,7 @@ public class FJXLTask extends AbstractTask {
             if (ObjectUtil.isEmpty(point)) {
                 task.setRemark("未找到所需点位!");
                 taskService.update(task);
-                log.info("冲压下料入库未找到当前符合条件的点位!");
+                log.info("分拣下料未找到当前符合条件的点位!");
                 continue;
             }
             task.setPoint_code2(point.getPoint_code());
@@ -88,7 +88,6 @@ public class FJXLTask extends AbstractTask {
      * @return
      */
     private SchBasePoint findNextPoint(String nextReginStr) {
-
         String[] reginList = nextReginStr.split(",");
         LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
         lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
@@ -100,13 +99,7 @@ public class FJXLTask extends AbstractTask {
                 .orderByAsc(SchBasePoint::getIn_order_seq)
                 .orderByAsc(SchBasePoint::getPoint_code);
         List<SchBasePoint> schBasePoints = pointService.list(lam);
-        for (SchBasePoint schBasePoint : schBasePoints) {
-            if (StringUtils.isEmpty(schBasePoint.getIng_task_code()) && schBasePoint.getVehicle_qty() == 0) {
-                log.info("冲压下料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code());
-                return schBasePoint;
-            }
-        }
-        return null;
+        return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
     }
 
     @Override
@@ -154,8 +147,8 @@ public class FJXLTask extends AbstractTask {
             endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
             endPointObj.setVehicle_qty(1);
             pointService.update(endPointObj);
-            // 要把数据存到组盘表 -> 改造公共方法,返回id
-            //todo 组盘表需要关联外部mes晶棒数据,一对多
+            // 要把数据存到组盘表
+            //todo  组盘一对一还是一对多、设置物料类型为待折弯冲压件、载具类型
             SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
             groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
             groupEntity.setCreate_id("2");
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KJRKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/lk/LKZYTask.java
similarity index 68%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KJRKTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/lk/LKZYTask.java
index e262d1c..a018fdb 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KJRKTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/lk/LKZYTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.lk;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
@@ -6,11 +6,10 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.nl.common.exception.BadRequestException;
-import org.nl.wms.ext.service.AcsToWmsService;
 import org.nl.wms.ext.service.dto.to.BaseResponse;
 import org.nl.wms.pdm.service.IPdmBdWorkorderService;
-import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
 import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
 import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
 import org.nl.wms.sch.point.service.ISchBasePointService;
@@ -22,28 +21,28 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
 import org.nl.wms.sch.task_manage.AbstractTask;
 import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
 import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
+import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
 import org.nl.wms.sch.task_manage.task.TaskType;
 import org.nl.wms.sch.task_manage.task.core.TaskStatus;
-import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
 import org.nl.wms.util.PointUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
-import java.math.BigDecimal;
+import java.util.Arrays;
 import java.util.List;
 
 /**
- * @Author: psh
- * @Description: 空架入库
- * @Date: 2024/1/24
+ * @Author: sxp
+ * @Description: 成叠笼框转运
+ * @Date: 2024/3/11
  */
 @Slf4j
 @Component
-@TaskType("KJRKTask")
+@TaskType("LKZYTask")
 @Lazy
-public class KJRKTask extends AbstractTask {
-    private static String TASK_CONFIG_CODE = "KJRKTask";
+public class LKZYTask extends AbstractTask {
+    private static String TASK_CONFIG_CODE = "LKZYTask";
     /**
      * 入口
      */
@@ -58,46 +57,27 @@ public class KJRKTask extends AbstractTask {
     private IPdmBdWorkorderService workorderService;
     @Autowired
     private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
-    @Autowired
-    private PointMapper pointMapper;
-    @Autowired
-    private AcsToWmsService acsToWmsService;
 
     @Override
-//    @Transactional(rollbackFor = Exception.class)
     protected void create() throws BadRequestException {
-        // 获取任务
         List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
-        // 配置信息
         SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
                 .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
         for (SchBaseTask task : tasks) {
-            // 找终点
-            SchBasePoint startPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
-                    .eq(SchBasePoint::getPoint_code, task.getPoint_code1()));
-            String extGroupData = task.getExt_group_data();
-            JSONObject jsonObject = JSONObject.parseObject(extGroupData);
-//            String materialType = jsonObject.getString("material_type");
-            SchBasePoint point = findNextPoint();
+            SchBasePoint point = findNextPoint(taskConfig.getNext_region_str());
             if (ObjectUtil.isEmpty(point)) {
                 task.setRemark("未找到所需点位!");
                 taskService.update(task);
-                // 消息通知
-                log.info("原材料入库未找到当前符合条件的点位!");
+                log.info("成叠笼框暂存点未找到当前符合条件的点位!");
                 continue;
             }
-            // 设置终点并修改创建成功状态
             task.setPoint_code2(point.getPoint_code());
             task.setTask_status(TaskStatus.CREATED.getCode());
             task.setRemark("");
             taskService.update(task);
-
             //发起任务时先把点位占用,防止发起重复任务
             point.setIng_task_code(task.getTask_code());
-//            point.setVehicle_type(materialType);
             pointService.update(point);
-
-            //下发
             this.renotifyAcs(task);
         }
     }
@@ -107,17 +87,20 @@ public class KJRKTask extends AbstractTask {
      *
      * @return
      */
-    private SchBasePoint findNextPoint() {
-        String regionCode = "YL";
-        List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion(regionCode, "2");
-        for (SchBasePoint schBasePoint : schBasePointList) {
-            if ("2".equals(schBasePoint.getPoint_status())
-                    && schBasePoint.getVehicle_qty() ==0) {
-                log.info("原材料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code());
-                return schBasePoint;
-            }
-        }
-        return null;
+    private SchBasePoint findNextPoint(String nextReginStr) {
+
+        String[] reginList = nextReginStr.split(",");
+        LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
+        lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
+                .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
+                .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
+                        .or()
+                        .eq(SchBasePoint::getIng_task_code, ""))
+                .eq(SchBasePoint::getIs_used, true)
+                .orderByAsc(SchBasePoint::getIn_order_seq)
+                .orderByAsc(SchBasePoint::getPoint_code);
+        List<SchBasePoint> schBasePoints = pointService.list(lam);
+        return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
     }
 
     @Override
@@ -139,15 +122,15 @@ public class KJRKTask extends AbstractTask {
         String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
                 ? taskObj.getVehicle_code()
                 : IdUtil.getSnowflake(1, 1).nextIdStr();
-        PdmBdWorkorder workorderCode = null;
-        if (extGroupData != null) {
-            workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
-                    ? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
-                    .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
-                    : null;
-        }
+//        PdmBdWorkorder workorderCode = null;
+//        if (extGroupData != null) {
+//            workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
+//                    ? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
+//                    .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
+//                    : null;
+//        }
         String startPoint = taskObj.getPoint_code1(); // 获取起点
-        String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2())?taskObj.getPoint_code2().substring(0,taskObj.getPoint_code2().length()-2):"0"; // 获取终点
+        String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2()) ? taskObj.getPoint_code2().substring(0, taskObj.getPoint_code2().length() - 2) : "0"; // 获取终点
         SchBasePoint startPointObj = pointService.getById(startPoint);
         SchBasePoint endPointObj = pointService.getById(endPoint);
         // 根据传来的类型去对任务进行操作
@@ -165,25 +148,25 @@ public class KJRKTask extends AbstractTask {
             endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
             endPointObj.setVehicle_qty(1);
             pointService.update(endPointObj);
-            // 要把数据存到组盘表 -> 改造公共方法,返回id
-            //todo 组盘表需要关联外部mes晶棒数据,一对多
+            // 要把数据存到组盘表
+            //todo  组盘信息
             SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
             groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
             groupEntity.setCreate_id("2");
             groupEntity.setCreate_name("ACS");
             groupEntity.setCreate_time(DateUtil.now());
-            groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
-                    ? workorderCode.getMaterial_id()
-                    : "");
-            groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
-                    ? workorderCode.getStanding_time()
-                    : 0);
-            groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
-                    ? extGroupData.getBigDecimal("material_qty")
-                    : BigDecimal.valueOf(0));
-            groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
-                    ? workorderCode.getWorkorder_code()
-                    : "");
+//            groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
+//                    ? workorderCode.getMaterial_id()
+//                    : "");
+//            groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
+//                    ? workorderCode.getStanding_time()
+//                    : 0);
+//            groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
+//                    ? extGroupData.getBigDecimal("material_qty")
+//                    : BigDecimal.valueOf(0));
+//            groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
+//                    ? workorderCode.getWorkorder_code()
+//                    : "");
             groupEntity.setVehicle_code(vehicle_code);
             groupEntity.setVehicle_type(taskObj.getVehicle_type());
             groupEntity.setPoint_code(startPoint);
@@ -202,8 +185,8 @@ public class KJRKTask extends AbstractTask {
             taskObj.setRemark("任务完成");
             try {
                 //todo 入库成功后上报mes
-            }catch (Exception e){
-                log.error("原材料入库上报MES失败{}",e.getMessage(),e);
+            } catch (Exception e) {
+                log.error("原材料入库上报MES失败{}", e.getMessage(), e);
             }
         }
         if (status.equals(TaskStatus.CANCELED)) { // 取消
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGJKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGJKTask.java
similarity index 99%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGJKTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGJKTask.java
index fdf2c58..61326ec 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGJKTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGJKTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.qg;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGXLTask.java
similarity index 99%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGXLTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGXLTask.java
index 7a81c89..10e8cee 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/QGXLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qg/QGXLTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.qg;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/LKZYTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qt/QTSLTask.java
similarity index 51%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/LKZYTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qt/QTSLTask.java
index 827da99..20dead2 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/LKZYTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/qt/QTSLTask.java
@@ -1,15 +1,17 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.qt;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.nl.common.exception.BadRequestException;
-import org.nl.wms.ext.service.WmsToAcsService;
 import org.nl.wms.ext.service.dto.to.BaseResponse;
 import org.nl.wms.pdm.service.IPdmBdWorkorderService;
 import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
+import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
 import org.nl.wms.sch.point.service.ISchBasePointService;
 import org.nl.wms.sch.point.service.dao.SchBasePoint;
 import org.nl.wms.sch.task.service.ISchBaseTaskService;
@@ -17,27 +19,30 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
 import org.nl.wms.sch.task.service.dao.SchBaseTask;
 import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
 import org.nl.wms.sch.task_manage.AbstractTask;
-import org.nl.wms.sch.task_manage.GeneralDefinition;
+import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
+import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
+import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
 import org.nl.wms.sch.task_manage.task.TaskType;
 import org.nl.wms.sch.task_manage.task.core.TaskStatus;
-import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
+import org.nl.wms.util.PointUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
  * @Author: sxp
- * @Description: 成叠笼框转运
- * @Date: 2023/1/24
+ * @Description: 其他加工送料
+ * @Date: 2024/3/11
  */
 @Slf4j
 @Component
-@TaskType("LKZYTask")
+@TaskType("QTSLTask")
 @Lazy
-public class LKZYTask extends AbstractTask {
-    private static String TASK_CONFIG_CODE = "LKZYTask";
+public class QTSLTask extends AbstractTask {
+    private static String TASK_CONFIG_CODE = "QTSLTask";
     /**
      * 入口
      */
@@ -52,60 +57,52 @@ public class LKZYTask extends AbstractTask {
     private IPdmBdWorkorderService workorderService;
     @Autowired
     private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
-    @Autowired
-    private PointMapper pointMapper;
-    @Autowired
-    private WmsToAcsService wmsToAcsService;
 
     @Override
-//    @Transactional(rollbackFor = Exception.class)
     protected void create() throws BadRequestException {
-        // 获取任务
         List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
-        // 配置信息
         SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
                 .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
         for (SchBaseTask task : tasks) {
-            SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
+            SchBasePoint point = findNextPoint(taskConfig.getNext_region_str());
             if (ObjectUtil.isEmpty(point)) {
                 task.setRemark("未找到所需点位!");
                 taskService.update(task);
-                // 消息通知
-                log.info("冲压机叫空盘未找到所需点位!");
+                log.info("成叠笼框暂存点未找到当前符合条件的点位!");
                 continue;
             }
-            // 设置起点并修改创建成功状态
-            task.setPoint_code1(point.getPoint_code());
+            task.setPoint_code2(point.getPoint_code());
             task.setTask_status(TaskStatus.CREATED.getCode());
             task.setRemark("");
             taskService.update(task);
             //发起任务时先把点位占用,防止发起重复任务
             point.setIng_task_code(task.getTask_code());
-            point.setUpdate_id(GeneralDefinition.ACS_ID);
-            point.setUpdate_name(GeneralDefinition.ACS_NAME);
-            point.setUpdate_time(DateUtil.now());
             pointService.update(point);
-            //下发
             this.renotifyAcs(task);
         }
     }
 
-    //查找待分拣物料
-    private SchBasePoint findStartPoint(String startRegionStr) {
+    /**
+     * 判断目标点位
+     *
+     * @return
+     */
+    private SchBasePoint findNextPoint(String nextReginStr) {
+        //分配空库位
+        String[] reginList = nextReginStr.split(",");
         LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
-        lam.in(SchBasePoint::getRegion_code, startRegionStr)
-                .and(la -> la.isNull(SchBasePoint::getIng_task_code)
+        lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
+                .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
+                .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
                         .or()
                         .eq(SchBasePoint::getIng_task_code, ""))
-                .eq(SchBasePoint::getIs_used, true);
+                .eq(SchBasePoint::getIs_used, true)
+                .orderByAsc(SchBasePoint::getIn_order_seq)
+                .orderByAsc(SchBasePoint::getPoint_code);
         List<SchBasePoint> schBasePoints = pointService.list(lam);
         return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
     }
 
-
-    /**
-     * todo 任务完成设置完成时间为开始固化时间
-     */
     @Override
 //    @Transactional(rollbackFor = Exception.class)
     protected void updateStatus(String task_code, TaskStatus status) {
@@ -117,8 +114,23 @@ public class LKZYTask extends AbstractTask {
         if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
             throw new BadRequestException("该任务已取消!");
         }
+        // 获取参数
+        JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
+                ? JSONObject.parseObject(taskObj.getExt_group_data())
+                : null;
+        // 载具编码:没有就创建一个
+        String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
+                ? taskObj.getVehicle_code()
+                : IdUtil.getSnowflake(1, 1).nextIdStr();
+//        PdmBdWorkorder workorderCode = null;
+//        if (extGroupData != null) {
+//            workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
+//                    ? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
+//                    .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
+//                    : null;
+//        }
         String startPoint = taskObj.getPoint_code1(); // 获取起点
-        String endPoint = taskObj.getPoint_code2(); // 获取终点
+        String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2()) ? taskObj.getPoint_code2().substring(0, taskObj.getPoint_code2().length() - 2) : "0"; // 获取终点
         SchBasePoint startPointObj = pointService.getById(startPoint);
         SchBasePoint endPointObj = pointService.getById(endPoint);
         // 根据传来的类型去对任务进行操作
@@ -127,34 +139,63 @@ public class LKZYTask extends AbstractTask {
             taskObj.setRemark("执行中");
         }
         if (status.equals(TaskStatus.FINISHED)) { // 完成
+            // 起点清空
+            if (ObjectUtil.isNotEmpty(startPointObj)) {
+                PointUtils.clearPoint(startPointObj);
+            }
             // 终点解锁
             endPointObj.setIng_task_code("");
-            endPointObj.setVehicle_code(taskObj.getVehicle_code());
-            endPointObj.setVehicle_code2(taskObj.getVehicle_code2());
+            endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
             endPointObj.setVehicle_qty(1);
-            endPointObj.setUpdate_time(DateUtil.now());
             pointService.update(endPointObj);
-            // 起点清空
-            startPointObj.setVehicle_code("");
-            startPointObj.setVehicle_code2("");
-            startPointObj.setIng_task_code("");
-            startPointObj.setUpdate_time(DateUtil.now());
-            pointService.updateById(startPointObj);
+            // 要把数据存到组盘表
+            //todo  组盘信息
+            SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
+            groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
+            groupEntity.setCreate_id("2");
+            groupEntity.setCreate_name("ACS");
+            groupEntity.setCreate_time(DateUtil.now());
+//            groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
+//                    ? workorderCode.getMaterial_id()
+//                    : "");
+//            groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
+//                    ? workorderCode.getStanding_time()
+//                    : 0);
+//            groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
+//                    ? extGroupData.getBigDecimal("material_qty")
+//                    : BigDecimal.valueOf(0));
+//            groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
+//                    ? workorderCode.getWorkorder_code()
+//                    : "");
+            groupEntity.setVehicle_code(vehicle_code);
+            groupEntity.setVehicle_type(taskObj.getVehicle_type());
+            groupEntity.setPoint_code(startPoint);
+            groupEntity.setPoint_name(startPointObj.getPoint_name());
+            groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
+            groupEntity.setInstorage_time(DateUtil.now());
+            groupEntity.setTask_code(taskObj.getTask_code());
+            groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
+            groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
+            groupEntity.setIs_delete(false);
+            groupEntity.setMove_way(startPoint);
+            vehiclematerialgroupService.save(groupEntity);
             // 任务完成
             taskObj.setTask_status(TaskStatus.FINISHED.getCode());
+            taskObj.setGroup_id(groupEntity.getGroup_id());
             taskObj.setRemark("任务完成");
+            try {
+                //todo 入库成功后上报mes
+            } catch (Exception e) {
+                log.error("原材料入库上报MES失败{}", e.getMessage(), e);
+            }
         }
         if (status.equals(TaskStatus.CANCELED)) { // 取消
             // 终点解锁
             if (ObjectUtil.isNotEmpty(endPointObj)) {
                 endPointObj.setIng_task_code("");
+                //任务取消把原先占用的位置释放
                 pointService.update(endPointObj);
             }
-            // 起点解锁
-            if (ObjectUtil.isNotEmpty(startPointObj)) {
-                startPointObj.setIng_task_code("");
-                pointService.update(startPointObj);
-            }
             taskObj.setRemark("任务取消");
             taskObj.setTask_status(TaskStatus.CANCELED.getCode());
         }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWJKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWJKTask.java
similarity index 97%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWJKTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWJKTask.java
index 9687ace..7e51b17 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWJKTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWJKTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.zw;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
@@ -74,7 +74,7 @@ public class ZWJKTask extends AbstractTask {
             if (ObjectUtil.isEmpty(point)) {
                 task.setRemark("未找到所需点位!");
                 taskService.update(task);
-                log.info("冲压下料入库未找到当前符合条件的点位!");
+                log.info("折弯叫空未找到当前符合条件的点位!");
                 continue;
             }
             task.setPoint_code2(point.getPoint_code());
@@ -94,7 +94,7 @@ public class ZWJKTask extends AbstractTask {
      * @return
      */
     private SchBasePoint findNextPoint(String nextReginStr) {
-
+        //todo 判断所需载具类型
         String[] reginList = nextReginStr.split(",");
         LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
         lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
@@ -108,7 +108,7 @@ public class ZWJKTask extends AbstractTask {
         List<SchBasePoint> schBasePoints = pointService.list(lam);
         for (SchBasePoint schBasePoint : schBasePoints) {
             if (StringUtils.isEmpty(schBasePoint.getIng_task_code()) && schBasePoint.getVehicle_qty() == 0) {
-                log.info("冲压下料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code());
+                log.info("折弯叫空找到当前符合条件的点位{}", schBasePoint.getPoint_code());
                 return schBasePoint;
             }
         }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWSLTask.java
similarity index 94%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWSLTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWSLTask.java
index 3cd0a98..75a9311 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWSLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWSLTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.zw;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -64,11 +65,10 @@ public class ZWSLTask extends AbstractTask {
         // 配置信息
         SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
                 .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
-        //todo task根据请求参数指定终点
         for (SchBaseTask task : tasks) {
             SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
             if (ObjectUtil.isEmpty(point)) {
-                task.setRemark("未找到所需点位!");
+                task.setRemark("折弯上料未找到所需点位!");
                 taskService.update(task);
                 // 消息通知
                 log.info("折弯上料未找到所需点位!");
@@ -90,10 +90,12 @@ public class ZWSLTask extends AbstractTask {
         }
     }
 
-    //查找待分拣物料 todo
+    //todo 根据组盘信息去查找待折弯物料
     private SchBasePoint findStartPoint(String startRegionStr) {
+        String[] reginList = startRegionStr.split(",");
+        List<String> regions = Arrays.asList(reginList);
         LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
-        lam.in(SchBasePoint::getRegion_code, startRegionStr)
+        lam.in(SchBasePoint::getRegion_code, regions)
                 .and(la -> la.isNull(SchBasePoint::getIng_task_code)
                         .or()
                         .eq(SchBasePoint::getIng_task_code, ""))
@@ -104,7 +106,7 @@ public class ZWSLTask extends AbstractTask {
 
 
     /**
-     * todo 任务完成设置完成时间为开始固化时间
+     *
      */
     @Override
 //    @Transactional(rollbackFor = Exception.class)
@@ -140,6 +142,7 @@ public class ZWSLTask extends AbstractTask {
             startPointObj.setIng_task_code("");
             startPointObj.setUpdate_time(DateUtil.now());
             pointService.updateById(startPointObj);
+            //todo 是否需要组盘信息解绑
             // 任务完成
             taskObj.setTask_status(TaskStatus.FINISHED.getCode());
             taskObj.setRemark("任务完成");
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWXLTask.java
similarity index 98%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWXLTask.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWXLTask.java
index d474907..a316fa3 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZWXLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/zw/ZWXLTask.java
@@ -1,4 +1,4 @@
-package org.nl.wms.sch.task_manage.task.tasks;
+package org.nl.wms.sch.task_manage.task.tasks.zw;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
@@ -155,7 +155,7 @@ public class ZWXLTask extends AbstractTask {
             endPointObj.setVehicle_qty(1);
             pointService.update(endPointObj);
             // 要把数据存到组盘表 -> 改造公共方法,返回id
-            //todo 组盘表需要关联外部mes晶棒数据,一对多
+            //todo 组盘信息修改
             SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
             groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
             groupEntity.setCreate_id("2");