From d5338d3fa5bc412c591a11cec978df48ce7c8a27 Mon Sep 17 00:00:00 2001 From: ls <1793460677@qq.com> Date: Tue, 11 Feb 2025 11:00:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=88=86=E5=88=87=E4=B8=8B=E6=96=99?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CutpointivtTypeSiteDefination.java | 62 +++++ .../CutpointivtTypeSiteDeviceDriver.java | 252 ++++++++++++++++++ .../cutpointivt_type_site/ItemProtocol.java | 88 ++++++ .../acs/ext/wms/rest/WmsToAcsController.java | 8 + .../acs/ext/wms/service/WmsToAcsService.java | 2 + .../wms/service/impl/WmsToAcsServiceImpl.java | 51 +++- .../wms/ext/acs/service/WmsToAcsService.java | 6 + .../acs/service/impl/WmsToAcsServiceImpl.java | 5 + .../tasks/nbj/PdaSendShaftAGVTask.java | 18 ++ .../tasks/slitter/SlitterDownAGVTask.java | 33 ++- 10 files changed, 521 insertions(+), 4 deletions(-) create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/CutpointivtTypeSiteDefination.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/CutpointivtTypeSiteDeviceDriver.java create mode 100644 acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/ItemProtocol.java diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/CutpointivtTypeSiteDefination.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/CutpointivtTypeSiteDefination.java new file mode 100644 index 000000000..83b30c134 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/CutpointivtTypeSiteDefination.java @@ -0,0 +1,62 @@ +package org.nl.acs.device_driver.two_conveyor.cutpointivt_type_site; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.enums.DeviceType; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * 检测站点驱动定义 + * 说明:该站点为普通带光电检测站点 + */ +@Service +public class CutpointivtTypeSiteDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "cutpointivt_type_site"; + } + + @Override + public String getDriverName() { + return "分切下料-检测站点"; + } + + @Override + public String getDriverDescription() { + return "分切下料-检测站点"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new CutpointivtTypeSiteDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return CutpointivtTypeSiteDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/CutpointivtTypeSiteDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/CutpointivtTypeSiteDeviceDriver.java new file mode 100644 index 000000000..1391e3844 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/CutpointivtTypeSiteDeviceDriver.java @@ -0,0 +1,252 @@ +package org.nl.acs.device_driver.two_conveyor.cutpointivt_type_site; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; +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.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.opc.WcsConfig; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.route.service.dto.RouteLineDto; +import org.nl.acs.task.domain.Task; +import org.nl.acs.task.enums.TaskStatusEnum; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.acs.task.service.mapper.TaskMapper; +import org.nl.acs.utils.ConvertUtil; +import org.nl.common.utils.CodeUtil; +import org.nl.config.SpringContextHolder; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Date; + +/** + * 检测站点驱动 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class CutpointivtTypeSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); + + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + + TaskMapper taskMapper; + + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); + @Autowired + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); + + + String container; + String container_type_desc; + String last_container_type_desc; + String last_container; + /** + * 放货准备锁 + */ + String putReadyLock = null; + /** + * 有货标记 + */ + protected boolean has_goods_tag = false; + + private Date time = new Date(); + + + int move1 = 0; + int move2 = 0; + int move3 = 0; + int move4 = 0; + + Boolean isonline = true; + int hasGoods = 0; + String message = null; + Boolean iserror = false; + + + int option = 0; + + + 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; + + /** + * 满盅入库请求标记 + */ + boolean Sucess = false; + + /** + * 暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + */ + int flag; + + String devicecode; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + String message = null; + + devicecode = this.getDeviceCode(); + + move1 = this.itemProtocol.getMove1(); + move2 = this.itemProtocol.getMove2(); + move3 = this.itemProtocol.getMove3(); + move4 = this.itemProtocol.getMove4(); + + + + + + + } + + + 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(TaskStatusEnum.READY.getIndex()); + 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); + + Task entity = ConvertUtil.convert(dto, Task.class); + taskMapper.insert(entity); + requireSucess = false; + return true; + } + } + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + String mode = ""; + String action = ""; + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("move1", move1); + + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + /** + * lms申请任务 + * + * @param + */ + public synchronized boolean apply(Integer type) { + return false; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/ItemProtocol.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/ItemProtocol.java new file mode 100644 index 000000000..1e02f9ec6 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/cutpointivt_type_site/ItemProtocol.java @@ -0,0 +1,88 @@ +package org.nl.acs.device_driver.two_conveyor.cutpointivt_type_site; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Data +public class ItemProtocol { + + public static String item_heartbeat = "heartbeat"; + public static String item_move1 = "move1"; + public static String item_move2 = "move2"; + public static String item_move3 = "move3"; + public static String item_move4 = "move4"; + + + + private CutpointivtTypeSiteDeviceDriver driver; + + public ItemProtocol(CutpointivtTypeSiteDeviceDriver driver) { + this.driver = driver; + } + + public int getHeartbeat() { + return this.getOpcIntegerValue(item_heartbeat); + } + + + + public int getMove1() { + return this.getOpcIntegerValue(item_move1); + } + + public int getMove2() { + return this.getOpcIntegerValue(item_move2); + } + + public int getMove3() { + return this.getOpcIntegerValue(item_move3); + } + public int getMove4() { + return this.getOpcIntegerValue(item_move4); + } + + + /** + *是否有货 + */ + public int hasGoods(int move) { + return move; + } + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); + list.add(new ItemDto(item_move1, "光电开关信号1", "DB600.B3")); + list.add(new ItemDto(item_move2, "光电开关信号2", "DB600.B3")); + list.add(new ItemDto(item_move3, "光电开关信号3", "DB600.B3")); + list.add(new ItemDto(item_move4, "光电开关信号4", "DB600.B3")); + + return list; + } + + public static List getWriteableItemDtos() { + return null; + } + +} + diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index 4018df073..6e942c196 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -118,4 +118,12 @@ public class WmsToAcsController { } + @PostMapping("/getCutpointivtType") + @Log("分切下料缓存信息") + @SaIgnore + public ResponseEntity getCutpointivtType(@RequestBody String whereJson) throws Exception { + return new ResponseEntity<>(wmstoacsService.getCutpointivtType(whereJson), HttpStatus.OK); + } + + } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java index 44f38d9ec..e166edb83 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java @@ -118,4 +118,6 @@ public interface WmsToAcsService { Map putWeightAction(String jsonObject) throws Exception; Map getTubeMes(String whereJson) throws Exception; + + Map getCutpointivtType(String whereJson)throws Exception; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 4c14e0c42..dc3fa1573 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.acs.ext.wms.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -27,6 +28,7 @@ import org.nl.acs.device_driver.conveyor.box_palletizing_manipulator.BoxPalletiz import org.nl.acs.device_driver.paper_tube_device2.PaperTubeConveyor2DeviceDriver; import org.nl.acs.device_driver.paper_tube_pick_site.PaperTubePickSiteDeviceDriver; import org.nl.acs.device_driver.two_conveyor.blank_manipulator.BlankManipulatorDeviceDriver; +import org.nl.acs.device_driver.two_conveyor.cutpointivt_type_site.CutpointivtTypeSiteDeviceDriver; import org.nl.acs.device_driver.two_conveyor.hongxiang_conveyor.HongXiangStationDeviceDriver; import org.nl.acs.device_driver.two_conveyor.hongxiang_device.HongXiangConveyorDeviceDriver; import org.nl.acs.device_driver.two_conveyor.inflatable_shaft_library.InflatableShaftLibraryDeviceDriver; @@ -757,6 +759,53 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return null; } + + @Override + public Map getCutpointivtType(String jsonObject) throws Exception { + log.info("分切下料缓存信息--------------:输入参数" + jsonObject); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code("分切下料缓存信息") + .content("分切下料缓存信息-----输入参数:" + jsonObject) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + + HashMap cutpointivtTypeMap = new HashMap<>(); + Device device = deviceAppService.findDeviceByCode("GVL_UA"); + if (ObjectUtil.isEmpty(device)) { + throw new Exception("未找到对应设备:" + "GVL_UA"); + } + CutpointivtTypeSiteDeviceDriver linkDeviceDriver; + if (device.getDeviceDriver() instanceof CutpointivtTypeSiteDeviceDriver) { + linkDeviceDriver = (CutpointivtTypeSiteDeviceDriver) device.getDeviceDriver(); + int move1 = linkDeviceDriver.getMove1(); + int move2 = linkDeviceDriver.getMove2(); + int move3 = linkDeviceDriver.getMove3(); + int move4 = linkDeviceDriver.getMove4(); + //value 1、长轴 2、短轴 + if (move1 == 1) { + cutpointivtTypeMap.put("A1_TZZC03", "1"); + } + if (move2 == 1) { + cutpointivtTypeMap.put("A1_TZZC03", "2"); + } + if (move3 == 1) { + cutpointivtTypeMap.put("A1_TZZC04", "1"); + } + if (move4 == 1) { + cutpointivtTypeMap.put("A1_TZZC04", "2"); + } + + } + + JSONObject resultJson = new JSONObject(); + resultJson.put("status", HttpStatus.OK.value()); + resultJson.put("message", cutpointivtTypeMap); + return resultJson; + + + } + @Override public Map queryDevice(String jsonObject) throws Exception { try { @@ -833,7 +882,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("countdown_min", hongXiangConveyorDeviceDriver.getCountdown_min()); jo.put("countdown_sec", hongXiangConveyorDeviceDriver.getCountdown_sec()); //温度需要除以10 - jo.put("temperature", Math.round(hongXiangConveyorDeviceDriver.getTo_temperature() / 10)); + jo.put("temperature", Math.round(hongXiangConveyorDeviceDriver.getTo_temperature() / 10)); jo.put("now_temperature", Math.round(hongXiangConveyorDeviceDriver.getTemperature() / 10)); jo.put("door", hongXiangConveyorDeviceDriver.getDoor()); jo.put("finish", hongXiangConveyorDeviceDriver.getFinish()); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index b5f8be6d2..74e83d9b8 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -43,4 +43,10 @@ public interface WmsToAcsService { * @return / */ JSONObject toAcsGxInStorage(JSONArray param); + + /** + * 获取分切下料缓存架类型 + */ + JSONObject getCutpointivtType(JSONArray param); + } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index e42a1184a..a09502ac7 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -58,4 +58,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return AcsUtil.notifyAcs4("api/wms/getTubeMsg", param); } + @Override + public JSONObject getCutpointivtType(JSONArray param) { + return AcsUtil.notifyAcs4("api/wms/getCutpointivtType", param); + } + } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/nbj/PdaSendShaftAGVTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/nbj/PdaSendShaftAGVTask.java index 4006c29fe..b5aa2e793 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/nbj/PdaSendShaftAGVTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/nbj/PdaSendShaftAGVTask.java @@ -15,6 +15,7 @@ import org.nl.wms.pdm.ivt.bcut.service.IBstIvtCutpointivtService; import org.nl.wms.pdm.ivt.bcut.service.dao.BstIvtCutpointivt; import org.nl.wms.pdm.ivt.cut.service.IstIvtCutpointivtService; import org.nl.wms.pdm.ivt.cut.service.dao.StIvtCutpointivt; +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; import org.nl.wms.sch.task.service.dao.SchBaseTask; @@ -32,6 +33,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.nl.wms.util.PointUtils.clearPoint; import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; import static org.nl.wms.util.TaskUtils.updateOptMessageBySlitterPlan; @@ -52,6 +54,10 @@ public class PdaSendShaftAGVTask extends AbstractTask { private IstIvtCutpointivtService stIvtCutpointivtService; @Autowired private IpdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private ISchBasePointService pointService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; @Override public void create() throws BadRequestException { @@ -84,7 +90,19 @@ public class PdaSendShaftAGVTask extends AbstractTask { public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { checkTaskOptionStatus(taskObj); String endPointCode = taskObj.getPoint_code2(); + String startPointCode = taskObj.getPoint_code1(); StIvtCutpointivt endPoint = stIvtCutpointivtService.getOneByCode(endPointCode); + BstIvtCutpointivt startPoint = bcutpointivtService.getPintByAgvCode(startPointCode, false); + //起点点位清空 + startPoint.setQzz_no1(""); + startPoint.setQzz_no2(""); + startPoint.setUp_gx1(""); + startPoint.setUp_gx2(""); + startPoint.setDown_gx1(""); + startPoint.setDown_gx2(""); + startPoint.setPoint_status("1"); + PointUtils.setBCutUpdateByType(startPoint, taskFinishedType); + bcutpointivtService.updateById(startPoint); List collect = Stream.of(taskObj.getVehicle_code(), taskObj.getVehicle_code2()).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList()); // 有工单,则需要将工单设置入站完成:05 if (collect.size() > 0) { diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterDownAGVTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterDownAGVTask.java index 27860df39..34a634b50 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterDownAGVTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterDownAGVTask.java @@ -10,6 +10,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.pdm.bi.dao.PdmBiSlittingproductionplan; import org.nl.wms.pdm.bi.service.IpdmBiSlittingproductionplanService; import org.nl.wms.pdm.ivt.bcut.service.IBstIvtCutpointivtService; @@ -24,12 +25,15 @@ import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.tasks.nbj.SendShaftAGVTask; import org.nl.wms.util.PointUtils; +import org.nl.wms.util.URLEnum; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -57,6 +61,9 @@ public class SlitterDownAGVTask extends AbstractTask { private SendShaftAGVTask sendShaftAGVTask; @Autowired private IstIvtCutpointivtService stIvtCutpointivtService; + + @Autowired + private WmsToAcsService wmsToAcsService; @Override public void create() throws BadRequestException { @@ -90,16 +97,36 @@ public class SlitterDownAGVTask extends AbstractTask { .orElse(null); task.setPoint_code1(requestObj.getString("device_code")); // 查找终点,在内包间的区域找个空位. - // 校验acs点位信息与终点点位信息是否匹配 + // 光电信号校验acs点位信息与终点点位信息是否匹配 List areaEmptyNotTaskPoint = bstIvtCutpointivtService.getAreaNotTaskPointByStatus("1", "1", "0", "1"); if (areaEmptyNotTaskPoint.size() == 0) { throw new BadRequestException("请求搬运失败,内包间没有可存放位置!"); } BstIvtCutpointivt endPoint = null; - + JSONArray acsArray = new JSONArray(); + JSONObject acs = new JSONObject(); + acs.put("device_code", requestObj.getString("device_code")); + acs.put("product_area", URLEnum.ACS_URL_A1.getProduct_area()); + acsArray.add(acs); + //acs查询缓存架类型 + log.info("获取缓存架类型 - {}", acsArray); + JSONObject jsonObject = wmsToAcsService.getCutpointivtType(acsArray); + log.info("获取缓存架类型返回 - {}", jsonObject); + JSONObject message = (JSONObject)jsonObject.get("message"); + if (message == null){ + throw new BadRequestException("获取缓存架类型失败!"); + } for (BstIvtCutpointivt bstIvtCutpointivt : areaEmptyNotTaskPoint) { - + if (message.containsKey(bstIvtCutpointivt.getPoint_code())){ + if ( bstIvtCutpointivt.getPlan().equals(message.get(bstIvtCutpointivt.getPoint_code()))) { + endPoint = bstIvtCutpointivt; + } else { + throw new BadRequestException("请求搬运失败,缓存架光电信息不满足!"); + } + } else { + endPoint = bstIvtCutpointivt; + } } if (endPoint == null) { throw new BadRequestException("请求搬运失败,缓存架没有匹配的位置!");