From 426d6cb65cc38c354e5534d4b5106a4499484350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B1=9F=E7=8E=AE?= Date: Mon, 3 Apr 2023 10:59:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A9=B1=E5=8A=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modbus_inspect_site/ItemProtocol.java | 38 +- .../ModbusInspectSiteDefination.java | 9 +- .../ModbusInspectSiteDeviceDriver.java | 378 +----------------- .../acs/device/driver/modbus_inspect_site.vue | 1 - .../java/org/nl/wms/sch/tasks/P2PTask.java | 32 +- 5 files changed, 47 insertions(+), 411 deletions(-) diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ItemProtocol.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ItemProtocol.java index c572e27..f7f01b6 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ItemProtocol.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ItemProtocol.java @@ -12,14 +12,9 @@ import java.util.List; public class ItemProtocol { public static String item_heartbeat = "heartbeat"; - public static String item_mode = "mode"; public static String item_move = "move"; public static String item_action = "action"; - public static String item_error = "error"; - public static String item_task = "task"; public static String item_to_command = "to_command"; - public static String item_to_target = "to_target"; - public static String item_to_task = "to_task"; private ModbusInspectSiteDeviceDriver driver; @@ -31,10 +26,6 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_heartbeat); } - public int getMode() { - return this.getOpcIntegerValue(item_mode); - } - public int getMove() { return this.getOpcIntegerValue(item_move); } @@ -43,26 +34,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_action); } - public int getError() { - return this.getOpcIntegerValue(item_error); - } - - public int getTask() { - return this.getOpcIntegerValue(item_task); - } - public int getToCommand() { return this.getOpcIntegerValue(item_to_command); } - public int getToTarget() { - return this.getOpcIntegerValue(item_to_target); - } - - public int getToTask() { - return this.getOpcIntegerValue(item_to_task); - } - //是否有货 public int hasGoods(int move) { return move; @@ -85,20 +60,15 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList<>(); - list.add(new ItemDto(item_heartbeat, "心跳", "30002")); - list.add(new ItemDto(item_mode, "工作状态", "30004", Boolean.TRUE)); - list.add(new ItemDto(item_move, "光电开关信号", "30006")); - list.add(new ItemDto(item_action, "取放信号", "30008")); - list.add(new ItemDto(item_error, "报警信号", "30010")); - list.add(new ItemDto(item_task, "任务号", "30012")); + list.add(new ItemDto(item_heartbeat, "心跳", "40004")); + list.add(new ItemDto(item_move, "光电开关信号", "40002")); + list.add(new ItemDto(item_action, "取放信号", "40001")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList<>(); - list.add(new ItemDto(item_to_command, "作业命令", "40002", Boolean.TRUE)); - list.add(new ItemDto(item_to_target, "目标站", "40004")); - list.add(new ItemDto(item_to_task, "任务号", "40008")); + list.add(new ItemDto(item_to_command, "作业命令", "40006", Boolean.TRUE)); return list; } diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ModbusInspectSiteDefination.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ModbusInspectSiteDefination.java index f4f67bf..608ea75 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ModbusInspectSiteDefination.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ModbusInspectSiteDefination.java @@ -57,12 +57,9 @@ public class ModbusInspectSiteDefination implements OpcDeviceDriverDefination { public static List getReadableItemDtos2() { ArrayList list = new ArrayList<>(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "30002")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作状态", "30004", Boolean.TRUE)); - list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "30006")); - list.add(new ItemDto(ItemProtocol.item_action, "取放信号", "30008")); - list.add(new ItemDto(ItemProtocol.item_error, "报警信号", "30010")); - list.add(new ItemDto(ItemProtocol.item_task, "任务号", "30014")); + list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "40004")); + list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "40002")); + list.add(new ItemDto(ItemProtocol.item_action, "取放信号", "40001")); return list; } diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ModbusInspectSiteDeviceDriver.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ModbusInspectSiteDeviceDriver.java index d2109e8..e621e99 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ModbusInspectSiteDeviceDriver.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/inspect_site/modbus_inspect_site/ModbusInspectSiteDeviceDriver.java @@ -14,11 +14,8 @@ import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.opc.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.opc.WcsConfig; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; @@ -28,11 +25,9 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.utils.SpringContextHolder; import org.nl.wql.core.bean.WQLObject; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -43,80 +38,23 @@ import java.util.Map; @RequiredArgsConstructor public class ModbusInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver { protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - @Autowired RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - String container; - String container_type_desc; - String last_container_type_desc; - String last_container; - //放货准备锁 - String putReadyLock = null; - //有货标记 - protected boolean has_goods_tag = false; - - int mode = 0; - int error = 0; int move = 0; - int task = 0; - int last_mode = 0; - int last_error = 0; int last_move = 0; - int last_task = 0; + int heartbeat = 0; + int last_heartbeat = 0; + int action = 0; + int last_action = 0; + Boolean isonline = true; - int hasGoods = 0; - String message = null; Boolean iserror = false; - - boolean hasVehicle = false; - boolean isReady = false; - protected int instruction_num = 0; - protected int instruction_num_truth = 0; - boolean isFold = false; - private String assemble_check_tag; - - protected String current_stage_instruction_message; - protected String last_stage_instruction_message; - Integer heartbeat_tag; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - - private int instruction_require_time_out; - boolean requireSucess = false; - - private int instruction_finished_time_out; - - int branchProtocol = 0; - //备注 - String remark; - //数量 - String qty; - //物料 - String material; - //批次 - String batch; - //当前指令 - Instruction inst = null; - //上次指令 - Instruction last_inst = null; - - //触摸屏手动触发任务 - private Boolean is_has_task = false; - - //申请搬运任务 - private Boolean apply_handling = false; - //申请物料 - private Boolean apply_material = false; - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 int flag; @@ -130,79 +68,24 @@ public class ModbusInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imple @Override public void execute() { - String message = null; try { device_code = this.getDeviceCode(); - mode = this.itemProtocol.getMode(); - error = this.itemProtocol.getError(); + + heartbeat = this.itemProtocol.getHeartbeat(); move = this.itemProtocol.getMove(); - task = this.itemProtocol.getTask(); - hasGoods = this.itemProtocol.getMove(); + action = this.itemProtocol.getAction(); - if (mode != last_mode) { - this.setRequireSucess(false); - logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode); + if (heartbeat != last_heartbeat) { + logServer.deviceItemValue(this.device_code, "move", String.valueOf(heartbeat)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_heartbeat + "->" + heartbeat); } if (move != last_move) { - logServer.deviceItemValue(this.device_code,"move" ,String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code,"","","信号move:" + last_move + "->" + move); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code,"error" ,String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code,"","","信号error:" + last_error + "->" + error); - } - if (task != last_task) { - logServer.deviceItemValue(this.device_code,"task",String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code,"","","信号task:" + last_task + "->" + task); + logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); } - - if (this.getApply_handling()) { - String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device link_device = appService.findDeviceByCode(link_device_code); - ModbusInspectSiteDeviceDriver standardInspectSiteDevicedriver; - if (link_device.getDeviceDriver() instanceof ModbusInspectSiteDeviceDriver) { - standardInspectSiteDevicedriver = (ModbusInspectSiteDeviceDriver) link_device.getDeviceDriver(); -// if(standardInspectSiteDevicedriver.getMode() != 2){ -// log.debug("设备未待机"); -// return; -// } -// if(standardInspectSiteDevicedriver.getMove() != 0){ -// log.debug("设备不满足放货条件"); -// return; -// } - - //如果目标设备申请叫料 则允许生成任务 - if (standardInspectSiteDevicedriver.getApply_material()) { - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); -// RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); -// String next_device_codecode = jo.getNext_device_code(); -// if(StrUtil.isEmpty(next_device_codecode)){ -// throw new RuntimeException("该设备未找到对应路由"); -// } - dto.setNext_point_code(this.getDeviceCode()); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); - - wo.insert(json); - standardInspectSiteDevicedriver.setApply_material(false); - } - } - this.setApply_handling(false); + if (action != last_action) { + logServer.deviceItemValue(this.device_code, "move", String.valueOf(action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_action + "->" + action); } } catch (Exception var17) { @@ -212,161 +95,14 @@ public class ModbusInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imple if (!this.itemProtocol.getIsonline()) { this.setIsonline(false); this.setIserror(true); - message = "信号量同步异常"; - //未联机 - } else if (mode == 0) { - this.setIsonline(false); - this.setIserror(true); - message = "未联机"; - //有报警 - } else if (error != 0) { - this.setIsonline(false); - this.setIserror(true); - message = "有报警"; - //无报警 } else { this.setIsonline(true); this.setIserror(false); - message = ""; - Instruction instruction = null; - List toInstructions; - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - return; - case 2: - //申请任务 -// if (this.getApply_handling()) { -// String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString(); -// DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); -// Device link_device = appService.findDeviceByCode(link_device_code); -// StandardInspectSiteDeviceDriver standardInspectSiteDevicedriver; -// if(link_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { -// standardInspectSiteDevicedriver = (StandardInspectSiteDeviceDriver) link_device.getDeviceDriver(); -// if(standardInspectSiteDevicedriver.getMode() != 2){ -// log.debug("设备未待机"); -// return; -// } -// if(standardInspectSiteDevicedriver.getMove() != 0){ -// log.debug("设备不满足放货条件"); -// return; -// } -// -// //如果目标设备申请叫料 则允许生成任务 -// if(standardInspectSiteDevicedriver.getApply_material()){ -// TaskDto dto = new TaskDto(); -// String now = DateUtil.now(); -// dto.setTask_id(IdUtil.simpleUUID()); -// dto.setCreate_by(this.getDevice().getDevice_code()); -// dto.setUpdate_by(this.getDevice().getDevice_code()); -// dto.setStart_point_code(this.getDevice().getDevice_code()); -// -// String taskcode = CodeGenerateUtil.getNewCode("TASK_NO"); -// dto.setTask_code("-"+taskcode); -// dto.setTask_status("0"); -// dto.setPriority("101"); -// RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); -// String next_device_codecode = jo.getNext_device_code(); -// if(StrUtil.isEmpty(next_device_codecode)){ -// throw new RuntimeException("该设备未找到对应路由"); -// } -// dto.setNext_point_code(next_device_codecode); -// dto.setUpdate_time(now); -// dto.setCreate_time(now); -// -// WQLObject wo = WQLObject.getWQLObject("acs_task"); -// JSONObject json = (JSONObject) JSONObject.toJSON(dto); - -// wo.insert(json); -// standardInspectSiteDevicedriver.setApply_material(false); -// } -// } -// this.setApply_handling(false); -// } - - if (material.length() > 0 && qty.length() > 0 && !requireSucess) { - this.instruction_require(container); - } - } - - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - - } - - } - last_mode = mode; - last_error = error; - last_move = move; - last_task = task; - - } - - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - protected void thingToNothing() { - log.debug("从有货到无货 清理数据"); - this.set_last_container(container, container_type_desc); - } - - public void set_last_container(String barcode, String type_desc) { - this.set_last_container(barcode); - this.set_last_container_type_desc(type_desc); - } - - public void set_last_container(String barcode) { - } - - public void set_last_container_type_desc(String type) { - } - - public boolean exe_business() { - return true; - } - - protected void executing(Instruction instruction) { - this.executing(1, instruction, ""); - } - - public void executing(int command, Instruction instruction, String appendMessage) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - if (appendMessage == null) { - appendMessage = ""; - } - if (instruction != null) { - instruction_num = Integer.parseInt(instruction.getInstruction_code()); } - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, 1); - itemMap.put(to_task, instruction_num); - ReadUtil.write(itemMap, server); - } - - public void executing(Server server, Map itemMap) { - ReadUtil.write(itemMap, server); + last_heartbeat = heartbeat; + last_move = move; + last_action = action; } public void writing(int command) { @@ -375,81 +111,9 @@ public class ModbusInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imple String opcservcerid = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); + Map itemMap = new HashMap<>(); itemMap.put(to_command, command); ReadUtil.write(itemMap, server); } - - public void writing(int type, int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - if (type == 1) { - itemMap.put(to_command, command); - } else if (type == 2) { - itemMap.put(to_target, command); - - } else if (type == 3) { - itemMap.put(to_task, command); - } - ReadUtil.write(itemMap, server); - - } - - public boolean instruction_require(String container_code) { - return instruction_require(container_code, WcsConfig.task_container_type_default_desc); - } - - /** - * 请求指令 - * - * @param container_code - * @param container_type - */ - public synchronized boolean instruction_require(String container_code, String container_type) { - Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_require_time = date; - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - dto.setVehicle_code(container_code); - dto.setVehicle_type(container_type); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); - RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); - String next_device_codecode = jo.getNext_device_code(); - if (StrUtil.isEmpty(next_device_codecode)) { - throw new RuntimeException("该设备未找到对应路由"); - } - dto.setNext_point_code(next_device_codecode); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); - - wo.insert(json); - requireSucess = false; - return true; - } - } - - } diff --git a/acs/qd/src/views/acs/device/driver/modbus_inspect_site.vue b/acs/qd/src/views/acs/device/driver/modbus_inspect_site.vue index a6ab788..0fd0997 100644 --- a/acs/qd/src/views/acs/device/driver/modbus_inspect_site.vue +++ b/acs/qd/src/views/acs/device/driver/modbus_inspect_site.vue @@ -346,7 +346,6 @@ export default { finishReadEdit(data) { // 编辑的是code列,并且值包含mode if (data.code.indexOf('mode') !== -1) { - debugger const dbValue = data.db // .之前的字符串 const beforeStr = dbValue.match(/(\S*)\./)[1] diff --git a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/P2PTask.java b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/P2PTask.java index 2280198..9e9150e 100644 --- a/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/P2PTask.java +++ b/lms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/P2PTask.java @@ -10,9 +10,7 @@ import org.nl.utils.SpringContextHolder; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.stream.Collectors; +import org.springframework.transaction.annotation.Transactional; /** * @author zhangjiangwei @@ -38,6 +36,14 @@ public class P2PTask extends AbstractAcsTask { } + /** + * 创建任务 + * + * @param param String start_point_code 起点编码 + * String next_point_code 终点编码 + * @return 任务id + */ + @Transactional(rollbackFor = Exception.class) @Override public String createTask(JSONObject param) { // 起点 @@ -81,16 +87,16 @@ public class P2PTask extends AbstractAcsTask { } // 判断终点是否可以存放起点的物料 - List nextPointMaterial = WQLObject - .getWQLObject("sch_base_point_material") - .query("point_id = " + nextPoint.getString("point_id")) - .getResultJSONArray(0) - .stream() - .map(o -> ((JSONObject) o).getString("material")) - .collect(Collectors.toList()); - if (!nextPointMaterial.contains(startPoint.getString("current_material_type"))) { - throw new BadRequestException("终点不能存放起点的物料"); - } +// List nextPointMaterial = WQLObject +// .getWQLObject("sch_base_point_material") +// .query("point_id = " + nextPoint.getString("point_id")) +// .getResultJSONArray(0) +// .stream() +// .map(o -> ((JSONObject) o).getString("material")) +// .collect(Collectors.toList()); +// if (!nextPointMaterial.contains(startPoint.getString("current_material_type"))) { +// throw new BadRequestException("终点不能存放起点的物料"); +// } return SpringContextHolder.getBean(SendTask.class).createTaskRelated( startPoint,