diff --git a/nladmin-system/nlsso-server/pom.xml b/nladmin-system/nlsso-server/pom.xml index ecfd722..c9d8fa1 100644 --- a/nladmin-system/nlsso-server/pom.xml +++ b/nladmin-system/nlsso-server/pom.xml @@ -451,6 +451,17 @@ xercesImpl 2.12.0 --> + + net.java.dev.jna + jna + 5.14.0 + + + com.digitalpetri.modbus + modbus-master-tcp + 1.2.0 + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/AcsConfig.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/AcsConfig.java index 680f15f..c70ec97 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/AcsConfig.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/AcsConfig.java @@ -160,4 +160,8 @@ public interface AcsConfig { String IS_ATUO_ELECTRIC ="is_atuo_electric"; String IS_ATUO_CAR ="is_atuo_car"; + + String HAS_HK = "has_hk"; + + String HK_URL = "hk_url"; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvUtil.java deleted file mode 100644 index c659fdd..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvUtil.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.nl.acs.agv; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.TimeZone; - -/** - * @author 20220102CG\noblelift - */ -public class AgvUtil { - /** - * 获得之后num个天的时间 - * - * @param num - * @return - */ - public static String getNextDay(int num) { - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DAY_OF_MONTH, num); - Date date = calendar.getTime(); - TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - df.setTimeZone(tz); - String nowAsISO = df.format(date); - return nowAsISO; - } - - /** - * 获得之后num个天的时间 - * - * @return - */ - public static String getDate() { - Calendar calendar = Calendar.getInstance(); - Date date = calendar.getTime(); - TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - df.setTimeZone(tz); - String nowAsISO = df.format(date); - return nowAsISO; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvWaitUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvWaitUtil.java deleted file mode 100644 index aeafc12..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/AgvWaitUtil.java +++ /dev/null @@ -1,129 +0,0 @@ -package org.nl.acs.agv; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device.domain.Device; -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.opc.DeviceAppService; -import org.nl.acs.task.enums.ActionTypeEnum; -import org.nl.common.exception.BadRequestException; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.system.service.param.ISysParamService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; - -/** - * @author zhangjiangwei - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class AgvWaitUtil { - - @Lazy - @Autowired - AcsToWmsService acsToWmsService; - - @Autowired - @Lazy - InstructionService instructionService; - - @Autowired - private DeviceAppService deviceAppService; - - @Autowired - private LuceneExecuteLogService luceneExecuteLogService; - @Autowired - ISysParamService paramService; - - //取货前等待 - public JSONObject waitInGet(String startDeviceCode, Instruction inst) { - log.info("仙工AGV请求取货,设备号 - {}", startDeviceCode); - JSONObject map = new JSONObject(); - map.put("status", 200); - map.put("message", "允许取货!"); - log.info("允许仙工AGV取货,设备号 - {}", startDeviceCode); - return map; - } - - //取货完成等待 - public JSONObject waitOutGet(String startDeviceCode, Instruction inst) { - log.info("仙工AGV取货完成后请求离开,设备号 - {}", startDeviceCode); - inst.setExecute_status("2"); - instructionService.update(inst); - JSONObject map = new JSONObject(); - map.put("status", 200); - map.put("message", "允许离开!"); - log.info("允许仙工AGV取货完成后请求离开,返回参数 - {}", map); - log.info("允许仙工AGV取货完成后请求离开,设备号 - {}", startDeviceCode); - return map; - } - - private void applyLmsGetOut(Instruction inst) { - JSONObject param = new JSONObject(); - param.put("taskCode", inst.getTask_code()); - param.put("actionType", ActionTypeEnum.IN_FINISHING.getCode().toString()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(inst.getCarno()) - .content("诺宝取货完成请求lms:" + inst.getTask_code() + "--" + ActionTypeEnum.IN_FINISHING.getStatus()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.secondaryAllocationPoint(param); - JSONObject jo = JSON.parseObject(response); - if (jo.getInteger("status") == 200) { - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(inst.getCarno()) - .content("诺宝取货完成请求lms,参数,接口返回:" + jo) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); - } else { - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(inst.getCarno()) - .content("请求lms追加动诺宝作块失败,返回参数:" + jo) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); - throw new BadRequestException("追加动诺宝作块返回失败"); - } - } - - //放货前等待 - public JSONObject waitInPut(String endDeviceCode, Instruction inst) { - log.info("仙工AGV请求放货,设备号 - {}", endDeviceCode); - Device endDevice = deviceAppService.findDeviceByCode(endDeviceCode); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(inst.getCarno()) - .content("允许放货" + "点位" + endDeviceCode) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - JSONObject map = new JSONObject(); - map.put("status", 200); - map.put("message", "允许放货!"); - log.info("允许仙工AGV放货,设备号 - {}", endDeviceCode); - return map; - } - - - //放货完成等待 - public JSONObject waitOutPut(String endDeviceCode, Instruction inst) { - Device nextDevice = deviceAppService.findDeviceByCode(endDeviceCode); - log.info("仙工AGV放货完成后请求离开,设备号 - {}", endDeviceCode); - inst.setExecute_status("2"); - instructionService.update(inst); - JSONObject map = new JSONObject(); - map.put("status", 200); - map.put("message", "允许离开!"); - log.info("允许仙工AGV放货完成后请求离开,设备号 - {}", endDeviceCode); - return map; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java deleted file mode 100644 index 366b286..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java +++ /dev/null @@ -1,117 +0,0 @@ -package org.nl.acs.agv; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device_driver.agv.xg_agv_car.XgAgvCarDeviceDriver; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.task.domain.Task; -import org.nl.acs.task.enums.AgvActionTypeEnum; -import org.nl.acs.task.enums.AgvSystemTypeEnum; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.config.SpringContextHolder; -import org.nl.system.service.param.ISysParamService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * 定时查询AGV状态 - */ -@Slf4j -@Component("queryAGVStatus") -public class QueryAGVStatus { - - - @Autowired - private DeviceAppService deviceAppService; - - public void run() { - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - TaskService taskService = SpringContextHolder.getBean(TaskService.class); - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - List allInstFromCache = instructionService.findAllInstFromCache(); - List agvInstruction = allInstFromCache.stream().filter(item -> AgvSystemTypeEnum.One_NDC_System_Type.getIndex().equals(item.getAgv_system_type()) || AgvSystemTypeEnum.XG_System_Type.getIndex().equals(item.getAgv_system_type())).collect(Collectors.toList()); - if (CollUtil.isEmpty(agvInstruction) || agvInstruction.size() < 1) { - return; - } - for (Instruction instruction : agvInstruction) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - JSONObject param = new JSONObject(); - agvurl = agvurl + ":" + agvport + "/orderDetails/" + instruction.getInstruction_code(); - log.info("根据运单号查询运单状态的请求:{}", agvurl); - HttpResponse result = HttpRequest.get(agvurl) - .timeout(20000)//超时,毫秒 - .execute(); - log.info("根据运单号查询运单状态的请求反馈:{}", result); - String body = result.body(); - JSONObject json = JSONObject.parseObject(body); - if (result.getStatus() == 200 && json.getString("id").equals(instruction.getInstruction_code())) { - // 已创建=CREATED, - // 待分配=TOBEDISPATCHED, - // 正在执行=RUNNING, - // 完成=FINISHED, - // 失败=FAILED(主动失败), - // 终止=STOPPED(被人为终止), - // 无法执行=Error(参数错误), - // 等待=WAITING - //执行中 - String state = json.getString("state"); - String carNo = json.getString("vehicle"); - String instructionCode = json.getString("id"); - if ("RUNNING".equals(state) || "TOBEDISPATCHED".equals(state) || "WAITING".equals(state)) { - if ("1".equals(instruction.getInstruction_status())) { - instruction.setCarno(carNo); - TaskDto task = new TaskDto(); - instructionService.update(instruction); - task.setCarno(carNo); - task.setTask_id(instruction.getTask_id()); - instructionService.update(instruction); - taskService.update(task); - if (StrUtil.isNotEmpty(instructionCode)) { - Device carCode = deviceAppService.findDeviceByCode(instructionCode); - XgAgvCarDeviceDriver xgAgvCarDeviceDriver; - if (null != carCode) { - if (carCode.getDeviceDriver() instanceof XgAgvCarDeviceDriver) { - xgAgvCarDeviceDriver = (XgAgvCarDeviceDriver) carCode.getDeviceDriver(); - xgAgvCarDeviceDriver.setTaskType(AgvActionTypeEnum.getStatus(instruction.getAgv_action_type())); - } - } - } - } - - } else if ("FINISHED".equals(state)) { - if (!"2".equals(instruction.getInstruction_status())) { - instruction.setInstruction_status("2"); - try { - instructionService.finish(instruction); - } catch (Exception e) { - log.error("执行完成,但无法更新状态,可能由于参数错误导致的异常"); - e.printStackTrace(); - } - } - } else if ("STOPPED".equals(state) || "FAILED".equals(state) || "Error".equals(state)) { - if (!"1".equals(instruction.getInstruction_status())) { - instruction.setInstruction_status("1"); - instructionService.update(instruction); - } - } - } - } - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/agv说明 b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/agv说明 deleted file mode 100644 index 5e92bca..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/agv说明 +++ /dev/null @@ -1 +0,0 @@ -1=magic 2=NDC 3=XZ 4=ZHEDA \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/MagicAgvController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/MagicAgvController.java deleted file mode 100644 index c8ebdb7..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/MagicAgvController.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.nl.acs.agv.rest; - - - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.MagicAgvService; -import org.nl.common.logging.annotation.Log; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author 20220102CG\noblelift - */ -@RestController -@RequiredArgsConstructor - -@RequestMapping("/api/magic") -@Slf4j -public class MagicAgvController { - private final MagicAgvService magicAgvService; - - /** - * 设备请求离开 - * @PreAuthorize("@el.check('routePlan:list')") - * @param device - * @return - */ - @PostMapping("/agvack/{device}") - @Log("AGV请求离开") - public ResponseEntity requestAck(@PathVariable String device) { - return new ResponseEntity<>(magicAgvService.requestAck(device), HttpStatus.OK); - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/NDCAgvController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/NDCAgvController.java deleted file mode 100644 index a972608..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/NDCAgvController.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.acs.agv.rest; - -/** - * @author 20220102CG\noblelift - */ -public class NDCAgvController { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/XianGongAgvController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/XianGongAgvController.java deleted file mode 100644 index b1b9980..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/XianGongAgvController.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.nl.acs.agv.rest; - -import cn.dev33.satoken.annotation.SaIgnore; -import com.alibaba.fastjson.JSONObject; -import groovy.lang.Lazy; -import org.nl.acs.agv.server.XianGongAgvService; -import org.nl.common.logging.annotation.Log; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Configurable; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - -/** - * @author 20220102CG\noblelift - */ - -@Controller -public class XianGongAgvController { - @Lazy - @Autowired - private XianGongAgvService xianGongAgentService; - - @PostMapping("/api/agv/xg/waitPointRequest") - @Log("仙工AGV请求取放货") - @SaIgnore - public ResponseEntity xgAGVWaitPointRequest(@RequestBody JSONObject requestParam) { - return new ResponseEntity<>(xianGongAgentService.xgAGVWaitPointRequest(requestParam), HttpStatus.OK); - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/ZheDaAgvController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/ZheDaAgvController.java deleted file mode 100644 index 2a53630..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/rest/ZheDaAgvController.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.acs.agv.rest; - -/** - * @author 20220102CG\noblelift - */ -public class ZheDaAgvController { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/AgvService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/AgvService.java deleted file mode 100644 index f45fa6c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/AgvService.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.nl.acs.agv.server; - -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.instruction.domain.InstructionMybatis; - -import java.util.Map; - - -/** - * 所有agv公用接口 - * @author 20220102CG\noblelift - */ -public interface AgvService { - /** - * 公用 - * @return - */ - Map findAllAgvFromCache(); - - /** - * 公用 - * @param dto - */ - void updateAgvFromCache(AgvDto dto); - - /** - * 请求开门、关门 - * @param device - * @param param - * @return - */ - public String requestOpenOrCloseDoor(String device, String param); - - - /** - * 查询所有门的状态 - * - * @return - */ - public String queryAllDoorStatus(); - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/MagicAgvService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/MagicAgvService.java deleted file mode 100644 index 1c7439f..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/MagicAgvService.java +++ /dev/null @@ -1,125 +0,0 @@ -package org.nl.acs.agv.server; - -import cn.hutool.http.HttpResponse; -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.instruction.domain.Instruction; - -import java.util.Map; - -/** - * @Author: lyd - * @Description: - * @Date: 2022-08-15 - */ -public interface MagicAgvService { - - /** - * 查询所有AGV - * - * @return - */ - Map findAllAgvFromCache(); - - /** - * 查询自动门状态 - * - * @param device - * @return - */ - public String queryDoorStatus(String device); - - /** - * 根据指令号查询AGV指令状态 - * - * @param instCode - * @return - */ - public HttpResponse queryAgvInstStatus(String instCode); - - /** - * 下发agv任务 - * @param inst - * @return - * @throws Exception - */ - public HttpResponse sendAgvInstToMagic(Instruction inst) throws Exception; - - - /** - * 根据code下发agv任务 - * @param code - * @return - * @throws Exception - */ - public HttpResponse sendAgvInstToMagic(String code) throws Exception; - - - /** - * 查询AGV状态,故障、充电等 - * @return - */ - public HttpResponse queryMagicAgvDeviceStatus(); - - /** - * 删除magic任务 - * - * @param instCode - * @return - */ - public HttpResponse deleteAgvInst(String instCode); - - - /** - * 查询Magic AGV任务状态调用 - * - * @param jobno - * @param type - * @param address - * @param action - * @param processingVehicle - * @return - */ - public String process(String jobno, String type, String address, String action, String processingVehicle); - - - /** - * Magic AGV 请求离开调用 - * - * @param device - * @return - */ - public String requestAck(String device); - - - /** - * magic 全部暂停车辆 - * @return - * @throws Exception - */ - public HttpResponse pause() throws Exception; - - /** - * magic 暂停指定车辆 - * @param device_code - * @return - * @throws Exception - */ - public HttpResponse pause(String device_code) throws Exception; - - /** - * magic 全部恢复车辆 - * @return - * @throws Exception - */ - public HttpResponse resume() throws Exception; - - /** - * magic 恢复指定车辆 - * @param device_code - * @return - * @throws Exception - */ - public HttpResponse resume(String device_code) throws Exception; - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java deleted file mode 100644 index 9821fed..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.nl.acs.agv.server; - -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.instruction.domain.Instruction; - -import java.util.Map; - -/** - * @Author: lyd - * @Description: - * @Date: 2022-08-15 - */ -public interface NDCAgvService { - /** - * 全部agv - * @return - */ - Map findAllAgvFromCache(); - - /** - * 删除NDC任务 - * - * @param inst - * @throws Exception - */ - public void deleteAgvInstToNDC(Instruction inst) throws Exception; - - /** - * 下发任务 - * @param agv_system_type - * @param inst - * @throws Exception - */ - public void sendAgvInstToNDC(String agv_system_type, Instruction inst) throws Exception; - - /** - * 一号agv指令 - * @param phase - * @param index - * @param result - * @param startPoint - * @param nextPoint - * @param startHigh - * @param nextHigh - * @return - */ - public byte[] sendAgvOneModeInst(int phase, int index, int result, int startPoint, int nextPoint, int startHigh, int nextHigh); - - /** - * 下发二号agv指令 - * @param phase - * @param index - * @param result - * @return - */ - public byte[] sendAgvTwoModeInst(int phase, int index, int result); - - /** - * 下发agv偏移指令 - * @param phase - * @param index - * @param result - * @return - */ - public byte[] sendAgvTwoModeInst(int phase, int index, int result,int offset,int quantity); - - public byte[] sendAgvTwoModeInst(); - - - /** - * 下发一号agv指令 - * @param phase - * @param index - * @param result - * @return - */ - public byte[] sendAgvOneModeInst(int phase, int index, int result); - - - /** - * 下发充电任务 - * - * @param carno - * @return - */ - public boolean createChargingTaskToNDC(String carno); - - public void charge(String carno); - - public void charge(String carno,String station); -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java deleted file mode 100644 index fcd194c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java +++ /dev/null @@ -1,129 +0,0 @@ -package org.nl.acs.agv.server; - -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSONObject; -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.dto.InteractionJsonDTO; - -import java.util.Map; - -/** - * @Author: lyd - * @Description: - * @Date: 2022-08-15 - */ -public interface XianGongAgvService { - /** - * 查询所有AGV - * @return - */ - Map findAllAgvFromCache(); - - /** - * 查询自动门状态 - * - * @param device - * @return - */ - public String queryDoorStatus(String device); - - /** - * 先工agv 等待点请求 - * AGV->ACS - * @param param - * @return - */ - public String waitPointRequest(String param); - - /** - * acs->agv - * 关闭运单系列 - * - * @param code - * @return - * @throws Exception - */ - public HttpResponse markComplete(String code) throws Exception; - - /** - * 查询AGV状态 - * - * @return - */ - public HttpResponse queryXZAgvDeviceStatus(); - - /** - * 查询AGV任务状态 - * @param instCode - * @return - */ - public HttpResponse queryXZAgvInstStatus(String instCode); - - /** - * 删除先知任务 - * - * @param instCode - * @return - */ - public HttpResponse deleteXZAgvInst(String instCode); - - - /** - * 下发运单序列 - * - * @param inst - * @return - * @throws Exception - */ - public HttpResponse sendOrderSequencesToXZ(Instruction inst) throws Exception; - - /** - * 追加运单 - * @param inst - * @return - * @throws Exception - */ - public HttpResponse addOrderSequences(Instruction inst) throws Exception; - - /** - * 组织json数据 - * @param inst - * @return - * @throws Exception - */ - public String sendOrderSequencesParam(Instruction inst) throws Exception; - - - /** - * 创建 - * @param inst - * @param type - * @return - */ - public JSONObject createOrederData(Instruction inst, String type); - - /** - * 请求取货放货 - * @param requestParam - * @return - */ - JSONObject xgAGVWaitPointRequest(JSONObject requestParam); - - - /** - * 查询场景中指定机器人信息 - */ - HttpResponse getRobotInfo(String robotCode); - - /** - * 下发叉车运单 - * - * @param dto - * @param interactionJsonDTO - * @return - */ - HttpResponse sendOrderSequencesToForklift(Instruction dto, InteractionJsonDTO interactionJsonDTO); - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/ZheDaAgvService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/ZheDaAgvService.java deleted file mode 100644 index 7e43c63..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/ZheDaAgvService.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.nl.acs.agv.server; - - -import cn.hutool.http.HttpResponse; -import org.nl.acs.instruction.domain.Instruction; - -/** - * 浙大AGV服务 - * @author 20220102CG\noblelift - */ -public interface ZheDaAgvService { - - /** - * 下发指令 - * - * @param inst 指令对象 - * @return - * @throws Exception - */ - public HttpResponse sendAgvInstToAgv(Instruction inst) throws Exception; - - /** - * 查询AGV状态 - * 永裕家居项目:共两楼 - * - * @param floor 1、二楼AGV系统;2、一楼AGV系统 - * @return - */ - public HttpResponse queryAgvInstStatus(String floor); - - /** - * AGV任务处理 - * @param jobno - * @param type - * @param address - * @param action - * @param processingVehicle - * @return - */ - String process(String jobno, String type, String address, String action, String processingVehicle); - - /** - * 标记完成 - * - * @param code - * @return - */ - public HttpResponse markComplete(String code); - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/dto/AgvDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/dto/AgvDto.java deleted file mode 100644 index 97f7cf2..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/dto/AgvDto.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.nl.acs.agv.server.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author wangsong - */ -@Data -public class AgvDto implements Serializable { - - /** - * 名称 - */ - private String name; - - /** - * 机器人当前的自身状态 - *

- * UNKNOWN:未知状态 - * UNAVAILABLE:通信超时或者已断开连接 - * ERROR:错误状态 - * IDLE:空闲状态 - * EXECUTING:正在执行运单 - * CHARGING:正在充电 - */ - private String state; - - /** - * 机器人的剩余电量值(单位:整数百分比) - */ - private String energyLevel; - - /** - * - */ - private String energyLevelGood; - - /** - * 机器人在 SRD 系统中的在线状态 - *

- * TO_BE_IGNORED:机器人处于离线状态,SRD 不会标识出机器人位置。 - * TO_BE_NOTICED:机器人处于离线状态,SRD 标识出机器人的位置。 - * TO_BE_RESPECTED:机器人处于在线状态,但不能接受新的运单。 - * TO_BE_UTILIZED:机器人处于在线状态,可以接受并执行新的运单。 - */ - private String integrationLevel; - - /** - * 机器人当前的运单执行状态 - *

- * UNAVAILABLE:无法执行任何运单和任务 - * IDLE:空闲状态 - * AWAITING_ORDER:机器人在等待运单中新的子任务 - * PROCESSING_ORDER:机器人正在执行运单 - */ - private String procState; - - /** - * 角度 - */ - private String positionAngle; - - /** - * X坐标 - */ - private String positionX; - - /** - * Y坐标 - */ - private String positionY; - - /** - * 当前任务号 - */ - private String transportOrder; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java deleted file mode 100644 index 8786b5b..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.nl.acs.agv.server.impl; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.device.domain.Device; -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.opc.DeviceAppService; -import org.nl.acs.device.enums.DeviceType; -import org.nl.acs.task.service.TaskService; -import org.nl.common.exception.BadRequestException; -import org.nl.system.service.param.ISysParamService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author 20220102CG\noblelift - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class AgvServiceImpl implements AgvService { - - @Autowired - DeviceAppService deviceAppService; - @Autowired - TaskService taskService; - @Autowired - InstructionService instructionService; - - @Autowired - ISysParamService paramService; - @Autowired - AcsToWmsService acsToWmsService; - - Map AGVDeviceStatus = new HashMap(); - - - @Override - public Map findAllAgvFromCache() { - return AGVDeviceStatus; - } - - @Override - public void updateAgvFromCache(AgvDto dto) { - if (AGVDeviceStatus.containsKey(dto.getName())) { - AGVDeviceStatus.remove(dto.getName()); - } - AGVDeviceStatus.put(dto.getName(), dto); - } - - - @Override - public String requestOpenOrCloseDoor(String device_code, String param) { - log.info("AGV请求开关门参数,设备:{},参数:{}", device_code, param); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); - switch (type) { - case 4: - acsToWmsService.applyOpenOrCloseDoor(device_code, param); - break; - default: - break; - - } - return null; - } - - - @Override - public String queryAllDoorStatus() { - log.info("AGV查询全部自动门状态"); - List list = deviceAppService.findDevice(DeviceType.autodoor); - JSONArray ja = new JSONArray(); - for (int i = 0; i < list.size(); i++) { - Device doordevice = deviceAppService.findDeviceByCode(list.get(i).getDevice_code()); - if (ObjectUtil.isEmpty(doordevice)) { - throw new BadRequestException("未找到对应设备"); - } - String mes = null; - JSONObject jo = JSONObject.parseObject(mes); - ja.add(jo); - } - log.info("AGV查询全部自动门状态,反馈:{}", ja.toString()); - return ja.toString(); - } - - - /*public static void main(String[] args) { - String address = "L1-01-01"; - if (address.indexOf(my_separator) > 0) { - String str = address.substring(address.indexOf("-"), address.length()); - address = address.substring(0, address.indexOf("-")); - } - }*/ -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java deleted file mode 100644 index b5025ee..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java +++ /dev/null @@ -1,804 +0,0 @@ -package org.nl.acs.agv.server.impl; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.AgvUtil; -import org.nl.acs.agv.server.MagicAgvService; -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device_driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; -import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; -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.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.device.enums.DeviceType; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; -import org.springframework.stereotype.Service; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author 20220102CG\noblelift - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class MagicAgvServiceImpl implements MagicAgvService { - - private final DeviceAppService deviceAppService; - private final ISysParamService paramService; - private final AcsToWmsService acsToWmsService; - - - - Map AGVDeviceStatus = new HashMap(); - /** - * 进入离开等待 - */ - private static final String ONE = "1"; - /** - * 进入等待 离开不等待 - */ - private static final String TWO = "2"; - /** - * 进入不等待 离开等待 - */ - private static final String THREE = "3"; - /** - * 不等待 - */ - private static final String FOUR = "4"; - private static final String FIVE = "5"; - - /** - * 1请求取货 - */ - private static final String INST_ONE = "1"; - /** - * 2取货完成离开 - */ - private static final String INST_TWO = "2"; - /** - * 3请求放货 - */ - private static final String INST_THREE = "3"; - /** - * 4放货完成离开 - */ - private static final String INST_FOUR = "4"; - - /** - * 请求进入 - */ - private static final String ON_ENTRY = "onEntry"; - /** - * 请求取货 - */ - private static final String LOAD = "load"; - /** - * 请求放货 - */ - private static final String UNLOAD = "Unload"; - /** - * 取货放货完成 - */ - private static final String ON_STATION = "onStation"; - /** - * 取货完成离开 - */ - private static final int PICKUP_COMPLETE_TWO = 2; - /** - * 放货完成离开 - */ - private static final int DELIVERY_COMPLETE_FOUR = 4; - - - - - @Override - public HttpResponse sendAgvInstToMagic(String instcode) throws Exception { - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - Instruction inst = instructionService.findByCodeFromCache(instcode); - HttpResponse result = this.sendAgvInstToMagic(inst); - return result; - } - - - @Override - public HttpResponse queryAgvInstStatus(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instCode; - - HttpResponse result = HttpRequest.get(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("查询agv指令数据:" + result.body()); - return result; - } else { - return null; - } - - } - - - @Override - public HttpResponse sendAgvInstToMagic(Instruction inst) throws Exception { - - JSONArray ja = new JSONArray(); - JSONObject orderjo = new JSONObject(); - String instno = inst.getInstruction_code(); - String compound_inst_data = inst.getCompound_inst_data(); - String[] str = null; - List pathlist = null; - - if (StrUtil.equals(CommonFinalParam.TWO, inst.getInstruction_type()) && !StrUtil.isEmpty(compound_inst_data)) { - str = compound_inst_data.split("->"); - pathlist = Arrays.asList(str); - - for (int i = 0; i < pathlist.size(); i++) { - String device_code = pathlist.get(i); - Device device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device)) { - throw new BadRequestException(LangProcess.msg("device_checkNull", device_code)); - } - if (i == 0) { - ja.add(destination(device_code, "Load", CommonFinalParam.ONE, CommonFinalParam.ONE)); - } else if (i == pathlist.size() - 1) { - ja.add(destination(device_code, "Unload", CommonFinalParam.ONE, CommonFinalParam.ONE)); - } else { - ja.add(destination(device_code, "NOP", CommonFinalParam.ONE, "5")); - } - - } - - //指定agv车号 暂时不用 设置任务最终时间 - //orderjo.put("intendedVehicle", ""); - orderjo.put("deadline", AgvUtil.getNextDay(1)); - - orderjo.put("destinations", ja); - - JSONObject prijo = new JSONObject(); - prijo.put("key", "priority"); - prijo.put("value", inst.getPriority()); - - JSONArray prija = new JSONArray(); - prija.add(prijo); - orderjo.put("properties", prija); - - - } else { - - String startAddress = inst.getStart_point_code(); - String nextAddress = inst.getNext_point_code(); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device nextdevice = appService.findDeviceByCode(nextAddress); - Device startdevice = appService.findDeviceByCode(startAddress); - //指定agv车号 暂时不用 - //orderjo.put("intendedVehicle", ""); - //设置任务最终时间 - orderjo.put("deadline", AgvUtil.getNextDay(1)); - //拼接起点子任务动作,待完善,动作码需要从数据库取值 - ja.add(destination(startAddress, "Load", CommonFinalParam.ONE, CommonFinalParam.ONE)); - //拼接终点子任务动作,待完善,动作码需要从数据库取值 - ja.add(destination(nextAddress, "Unload", CommonFinalParam.ONE, CommonFinalParam.ONE)); - - orderjo.put("destinations", ja); - - JSONObject prijo = new JSONObject(); - prijo.put("key", "priority"); - prijo.put("value", inst.getPriority()); - - JSONArray prija = new JSONArray(); - prija.add(prijo); - orderjo.put("properties", prija); - - } - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instno; - - log.info("下发agv指令参数:{}", orderjo.toString()); - - HttpResponse result = null; - try { - result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(orderjo)) - //超时,毫秒 - .timeout(20000) - .execute(); - } catch (Exception e) { - throw new RuntimeException("下发agv失败!"); - } - return result; - } else { - return null; - } - - } - - /** - * 返回一个点位操作子任务 - * - * @param locationName 点位 - * @param operation 点位操作 - * @param propertiesType 子任务类型 - * @param pro 子任务参数 - * 调用demo:destination("sh15p", "Spin", CommonFinalParam.TWO, "3.14") - * demo:destination("cz14", "JackUnload", CommonFinalParam.THREE, "") - * @return - */ - public static JSONObject destination(String locationName, String operation, String propertiesType, String pro) { - //新增业务订单 - JSONObject destinationOrder = new JSONObject(); - //目标工作站 - destinationOrder.put("locationName", locationName); - //机器人在工作站要执行的操作 - destinationOrder.put("operation", operation); - //取货前等待、取货后等待 - if (CommonFinalParam.ONE.equals(propertiesType)) { - - //pro 1 进入离开等待 - if (ONE.equals(pro)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "EntryRequired"); - pro1.put("value", "True"); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "True"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //进入等待 离开不等待 - } else if (TWO.equals(pro)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "EntryRequired"); - pro1.put("value", "True"); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "False"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //进入不等待 离开等待 - } else if (THREE.equals(pro)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "EntryRequired"); - pro1.put("value", "False"); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "True"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //不等待 - } else if (FOUR.equals(pro)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "EntryRequired"); - pro1.put("value", "False"); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "False"); - properties.add(pro2); - destinationOrder.put("properties", properties); - } else if (FIVE.equals(pro)) { - JSONArray properties = new JSONArray(); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "True"); - properties.add(pro2); - destinationOrder.put("properties", properties); - } - //Spin转动 - } else if (CommonFinalParam.TWO.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //坐标系类型,global_spin_angle为全局坐标系 - pro1.put("key", "global_spin_angle"); - //弧度值,如3.14 - pro1.put("value", pro); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - //固定值 - pro2.put("key", "spin_direction"); - //弧度值,如0 - pro2.put("value", "0"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //JackUnload,Jackload不操作 - } else if (CommonFinalParam.THREE.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //固定值 - pro1.put("key", "recognize"); - //固定值 - pro1.put("value", "false"); - properties.add(pro1); - destinationOrder.put("properties", properties); - } else if (CommonFinalParam.FOUR.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //坐标系类型,robot_spin_angle为机器人坐标系 - pro1.put("key", "robot_spin_angle"); - //弧度值,如3.14 - pro1.put("value", pro); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - //固定值 - pro2.put("key", "spin_direction"); - //弧度值,如0 - pro2.put("value", "0"); - properties.add(pro2); - destinationOrder.put("properties", properties); - } - return destinationOrder; - } - - - @Override - public HttpResponse queryMagicAgvDeviceStatus() { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/vehicles"; - HttpResponse result = HttpRequest.get(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("查询agv状态数据:{}", result.body()); - if (result.getStatus() == CommonFinalParam.STATUS_OPEN) { - JSONArray ja = (JSONArray) JSONArray.parse(result.body()); - for (int i = 0; i < ja.size(); i++) { - JSONObject jo = (JSONObject) ja.get(i); - String name = jo.getString("name"); - String state = jo.getString("state"); - String energyLevel = jo.getString("energyLevel"); - String transportOrder = jo.getString("transportOrder"); - String positionAngle = jo.getString("positionAngle"); - String positionX = jo.getString("positionX"); - String positionY = jo.getString("positionY"); - AgvDto dto = new AgvDto(); - dto.setName(name); - dto.setEnergyLevel(energyLevel); - dto.setState(state); - dto.setPositionAngle(positionAngle); - dto.setPositionX(positionX); - dto.setPositionY(positionY); - dto.setTransportOrder(transportOrder); - - if (AGVDeviceStatus.containsKey(name)) { - AGVDeviceStatus.remove(name); - AGVDeviceStatus.put(name, dto); - } else { - AGVDeviceStatus.put(name, dto); - } - } - } - return result; - } else { - return null; - } - - - } - - - @Override - public HttpResponse deleteAgvInst(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instCode + "/withdrawal"; - log.info("删除agv指令请求agvurl:{}", agvurl); - - HttpResponse result = null; - try { - result = HttpRequest.post(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("删除agv指令请求反馈:{}", result); - } catch (Exception e) { - throw new RuntimeException("下发agv失败!"); - } - return result; - } else { - return null; - } - - } - - /** - * 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - * @param jobno - * @param type - * @param address - * @param action - * @param processingVehicle - * @return - */ - - @Override - public synchronized String process(String jobno, String type, String address, String action, String processingVehicle) { - log.info("查询到AGV请求参数,jobno:{},address:{}", jobno + ",address:" + address + ",type:" + type + ",action:" + action); - boolean is_feedback = false; - String str = ""; - String backaddress = address; - if (address.indexOf(CommonFinalParam.DOT) > 0) { - str = address.substring(address.indexOf(CommonFinalParam.DOT), address.length()); - address = address.substring(0, address.indexOf(CommonFinalParam.DOT)); - } else if (address.indexOf(CommonFinalParam.HYPHEN_) > 0) { - address = address.substring(0, address.indexOf("-")); - } - InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - Instruction inst = instructionService.findByCodeFromCache(jobno); - - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device addressdevice = appService.findDeviceByCode(address); - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - //请求进入 - if (ON_ENTRY.equals(type)) { - - if (addressdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) addressdevice.getDeviceDriver(); - //请求取货 - if (LOAD.equals(action)) { - if (standardInspectSiteDeviceDriver.getMode() == CommonFinalParam.DEVICE_MODE_TWO && standardInspectSiteDeviceDriver.getMove() > CommonFinalParam.DEVICE_MOVE_ZERO) { - inst.setExecute_status(INST_ONE); - is_feedback = true; - } - //请求放货 - } else if (UNLOAD.equals(action)) { - if (standardInspectSiteDeviceDriver.getMode() == CommonFinalParam.DEVICE_MODE_TWO && standardInspectSiteDeviceDriver.getMove() == CommonFinalParam.DEVICE_MOVE_ZERO) { - inst.setExecute_status(INST_THREE); - is_feedback = true; - } - } - } - - - if (addressdevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) addressdevice.getDeviceDriver(); - //请求取货 - if (LOAD.equals(action)) { - if (addressdevice.getHas_goods() > 0) { - inst.setExecute_status(INST_ONE); - is_feedback = true; - } - //请求放货 - } else if (UNLOAD.equals(action)) { - if (addressdevice.getHas_goods() == 0) { - inst.setExecute_status(INST_THREE); - is_feedback = true; - } - } - } - - - //取放货完成 - } else if (ON_STATION.equals(type)) { - System.out.println("取放货完成"); - if (addressdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) addressdevice.getDeviceDriver(); - //取货完成 - if (LOAD.equals(action)) { - if (standardInspectSiteDeviceDriver.getMode() == CommonFinalParam.DEVICE_MODE_TWO && standardInspectSiteDeviceDriver.getMove() == CommonFinalParam.DEVICE_MOVE_ZERO) { - inst.setExecute_device_code(processingVehicle); - inst.setExecute_status(INST_TWO); - is_feedback = true; - } - //放货完成 - } else if (UNLOAD.equals(action)) { - if (standardInspectSiteDeviceDriver.getMode() == CommonFinalParam.DEVICE_MODE_TWO && standardInspectSiteDeviceDriver.getMove() > CommonFinalParam.DEVICE_MOVE_ZERO) { - inst.setExecute_device_code(address); - inst.setExecute_status(INST_FOUR); - is_feedback = true; - } - } - } - - - if (addressdevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) addressdevice.getDeviceDriver(); - //取货完成 - if (LOAD.equals(action)) { - inst.setExecute_device_code(processingVehicle); - inst.setExecute_status(CommonFinalParam.TWO); - is_feedback = true; - //放货完成 - } else if (UNLOAD.equals(action)) { - inst.setExecute_device_code(address); - inst.setExecute_status(INST_FOUR); - is_feedback = true; - } - - } - } - - JSONObject requestjo = new JSONObject(); - JSONArray ja = new JSONArray(); - if (is_feedback) { - String param = ""; - JSONObject jo = new JSONObject(); - if (str.length() > 0) { - backaddress = backaddress + str; - } - if (ON_STATION.equals(type)) { - param = "EntryPermitted-" + backaddress + action; - } else if (ON_STATION.equals(type)) { - param = "ContinueOnStation-" + backaddress + action; - } - - jo.put("key", param); - jo.put("value", "False"); - ja.add(jo); - requestjo.put("properties", ja); - log.info("反馈AGV请求数据:{}", requestjo); - System.out.println("back agv:" + requestjo); - - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + jobno + "/interact"; - - HttpResponse result = HttpRequest.post(agvurl) - .body(String.valueOf(requestjo)) - //超时,毫秒 - .timeout(20000) - .execute(); - } - is_feedback = false; - return requestjo.toString(); - - } - - - @Override - public String requestAck(String address) { - log.info("AGV请求离开参数:{}", address); - boolean flag = false; - - if (address.indexOf(CommonFinalParam.DOT) > 0) { - address = address.substring(0, address.indexOf(".")); - } - if (address.indexOf(CommonFinalParam.HYPHEN_) > 0) { - address = address.substring(0, address.indexOf("-")); - } - InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device addressdevice = appService.findDeviceByCode(address); - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - - if (addressdevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) addressdevice.getDeviceDriver(); - flag = true; - log.info("agvstatus:" + standardInspectSiteDeviceDriver.getFlag() + ""); - //取货完成离开 - if (standardInspectSiteDeviceDriver.getFlag() == PICKUP_COMPLETE_TWO) { - if (standardInspectSiteDeviceDriver.getMove() == 0) { - flag = true; - standardInspectSiteDeviceDriver.setFlag(5); - } - } - //放货完成离开 - if (standardInspectSiteDeviceDriver.getFlag() == DELIVERY_COMPLETE_FOUR) { - if (standardInspectSiteDeviceDriver.getMove() == 1) { - flag = true; - standardInspectSiteDeviceDriver.setFlag(6); - } - } - } - - - if (addressdevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) addressdevice.getDeviceDriver(); - flag = true; - log.info("agvstatus:" + standardOrdinarySiteDeviceDriver.getFlag() + ""); - - //取货完成离开 - if (standardOrdinarySiteDeviceDriver.getFlag() == PICKUP_COMPLETE_TWO) { - flag = true; - standardOrdinarySiteDeviceDriver.setFlag(5); - } - //放货完成离开 - if (standardOrdinarySiteDeviceDriver.getFlag() == DELIVERY_COMPLETE_FOUR) { - flag = true; - standardOrdinarySiteDeviceDriver.setFlag(6); - } - } - - if (flag) { - log.info("AGV请求离开,反馈成功:{}", address); - System.out.println("AGV请求离开,反馈成功 " + address); - return "OK"; - } else { - log.info("AGV请求离开,反馈失败{}", address); - System.out.println("AGV请求离开,反馈失败 " + address); - throw new RuntimeException("AGV请求离开,反馈失败 " + address); - } - - } - - - @Override - public HttpResponse pause() throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/vehicles/pause"; - log.info("暂停所有agv请求:{}", agvurl); - - HttpResponse result = HttpRequest.post(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("暂停所有agv请求反馈:{}", result); - String type = ""; - if (result.getStatus() == CommonFinalParam.STATUS_OPEN) { - type = "info"; - } else { - type = "error"; - } - return result; - } else { - return null; - } - } - - - - @Override - public HttpResponse pause(String device_code) throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/vehicles/" + device_code + "/pause"; - log.info("暂停{} agv请求:{}", device_code, agvurl); - - HttpResponse result = HttpRequest.post(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("暂停{} agv请求反馈:{}", device_code, result); - String type = ""; - return result; - } else { - return null; - } - - } - - - - @Override - public HttpResponse resume() throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/vehicles/resume"; - log.info("恢复所有agv请求:{}", agvurl); - - HttpResponse result = HttpRequest.post(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("恢复所有agv请求反馈:{}", result); - String type = ""; - if (result.getStatus() == CommonFinalParam.STATUS_OPEN) { - type = "info"; - } else { - type = "error"; - } - return result; - } else { - return null; - } - - - } - - - @Override - public HttpResponse resume(String device_code) throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/vehicles/" + device_code + "/resume"; - log.info("恢复{} agv请求:{}", device_code, agvurl); - - HttpResponse result = HttpRequest.post(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("恢复{} agv请求反馈:{}", device_code, result); - - return result; - } else { - return null; - } - } - - - @Override - public String queryDoorStatus(String device) { - log.info("AGV查询自动门状态,参数:{}", device); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); - switch (type) { - case 4: - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASOTHERSYSTEM).getValue(), CommonFinalParam.ONE)) { - String result = acsToWmsService.queryDoorsStatus().body(); - JSONArray ja = JSONArray.parseArray(result); - log.info("AGV查询自动门状态,反馈:{}", ja.toString()); - return ja.toString(); - } - return null; - default: - if (StrUtil.equals(CommonFinalParam.DOORS, device)) { - List list = deviceAppService.findDevice(DeviceType.autodoor); - JSONArray ja = new JSONArray(); - for (int i = 0; i < list.size(); i++) { - Device doordevice = deviceAppService.findDeviceByCode(list.get(i).getDevice_code()); - if (ObjectUtil.isEmpty(doordevice)) { - throw new BadRequestException(LangProcess.msg("device_checkNull", list.get(i).getDevice_code())); - } - String mes = null; - - } - log.info("AGV查询自动门状态,反馈:{}", ja.toString()); - return ja.toString(); - - } else { - Device doordevice = deviceAppService.findDeviceByCode(device); - if (ObjectUtil.isEmpty(doordevice)) { - throw new BadRequestException(LangProcess.msg("device_checkNull", device)); - } - String mes = null; - JSONObject jo = JSONObject.parseObject(mes); - log.info("AGV查询自动门状态,反馈:{}", jo.toString()); - return jo.toString(); - } - } - } - - @Override - public Map findAllAgvFromCache() { - return AGVDeviceStatus; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java deleted file mode 100644 index fb299fe..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ /dev/null @@ -1,644 +0,0 @@ -package org.nl.acs.agv.server.impl; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.auto.run.OneNDCSocketConnectionAutoRun; -import org.nl.acs.auto.run.TwoNDCSocketConnectionAutoRun; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device.service.impl.DeviceServiceImpl; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.common.exception.BadRequestException; -import org.nl.system.service.dict.ISysDictService; -import org.nl.system.service.dict.dao.Dict; -import org.nl.system.service.param.ISysParamService; -import org.nl.common.utils.CodeUtil; -import org.nl.config.SpringContextHolder; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author 20220102CG\noblelift - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class NDCAgvServiceImpl implements NDCAgvService { - - private final DeviceAppService deviceAppService; - private final ISysParamService paramService; -// private final AcsToWmsService acsToWmsService; - private final ISysDictService dictService; - private final DeviceExecuteLogService logServer; - - Map AGVDeviceStatus = new HashMap(); - - - @Override - public void deleteAgvInstToNDC(Instruction inst) throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - int index = Integer.parseInt(inst.getAgv_jobno()); - - byte indexhigh = (byte) IntToHexHigh(index); - byte indexlow = (byte) IntToHexLow(index); - - String str = "十进制下发:"; - String str1 = "十六进制下发:"; - str += "index:" + index; - str1 += "ikey:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF); - System.out.println(str); - System.out.println(str1); - - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X06, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X6E, - (byte) 0X00, (byte) 0X02, - (byte) indexhigh, (byte) indexlow, - }; - log.info("下发删除AGV指令--{}", Bytes2HexString(b)); - - // NDCSocketConnectionAutoRun.write(b); - TwoNDCSocketConnectionAutoRun.write(b); - System.out.println("下发删除agv指令数据:" + Bytes2HexString(b)); - } - - } - - - @Override - public void sendAgvInstToNDC(String agv_system_type, Instruction inst) { - log.info("sendAgvInstToNDC 指令下发NDC:" + "inst_code:" + inst.getInstruction_code() + ",agv_system_type:" + agv_system_type + ",agv_inst_type:" + inst.getAgv_inst_type() + - ",priority:" + inst.getPriority() + ",startAddress:" + inst.getStart_point_code() + - ",nextAddress:" + inst.getNext_point_code()); - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - if (!StrUtil.equals(agv_system_type, "1")) { - String instcode = inst.getInstruction_code(); - int type = Integer.parseInt(inst.getAgv_inst_type()); - int priority = Integer.parseInt(inst.getPriority()) + 128; - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); - int startAddress = deviceService.queryAddressBydeviceCode(inst.getStart_point_code()); - int nextAddress = deviceService.queryAddressBydeviceCode(inst.getNext_point_code()); - int startAddress2 = deviceService.queryAddressBydeviceCode(inst.getStart_point_code2()); - int nextAddress2 = deviceService.queryAddressBydeviceCode(inst.getNext_point_code2()); - byte ikeyhigh = (byte) IntToHexHigh(Integer.parseInt(instcode)); - byte ikeylow = (byte) IntToHexLow(Integer.parseInt(instcode)); - byte typehigh = (byte) IntToHexHigh(type); - byte typelow = (byte) IntToHexLow(type); - byte qhdhigh = (byte) IntToHexHigh(startAddress); - byte qhdlow = (byte) IntToHexLow(startAddress); - byte qhdhigh2 = (byte) IntToHexHigh(startAddress2); - byte qhdlow2 = (byte) IntToHexLow(startAddress2); - byte fhdhigh = (byte) IntToHexHigh(nextAddress); - byte fhdlow = (byte) IntToHexLow(nextAddress); - byte fhdhigh2 = (byte) IntToHexHigh(nextAddress2); - byte fhdlow2 = (byte) IntToHexLow(nextAddress2); - byte prioritylow = (byte) IntToHexLow(priority); - String str = "十进制下发:"; - String str1 = "十六进制下发:"; - str += "任务号 ikey:" + (Integer.parseInt(instcode)); - str1 += "任务号 ikey:" + hexToString(ikeyhigh & 0xFF) + hexToString(ikeylow & 0xFF); - - str += "指令类型 /type:" + (type); - str1 += "指令类型 /type:" + hexToString(typehigh & 0xFF) + hexToString(typelow & 0xFF); - - str += "取货点 /qhd:" + (startAddress); - str1 += "取货点 /qhd:" + hexToString(qhdhigh & 0xFF) + hexToString(qhdlow & 0xFF); - str += "放货点 /fhd:" + (nextAddress); - str1 += "放货点 /fhd:" + hexToString(fhdhigh & 0xFF) + hexToString(fhdlow & 0xFF); - - str += "取货点2 /qhd2:" + (startAddress2); - str1 += "取货点2 /qhd2:" + hexToString(qhdhigh2 & 0xFF) + hexToString(qhdlow2 & 0xFF); - str += "放货点2 /fhd2:" + (nextAddress2); - str1 += "放货点2 /fhd2:" + hexToString(fhdhigh2 & 0xFF) + hexToString(fhdlow2 & 0xFF); - - str += "优先级 /priority:" + (priority); - str1 += "优先级 /priority:" + hexToString(prioritylow & 0xFF); - - byte[] b = new byte[]{}; - if (type == 1) { - b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X16, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X71, - (byte) 0X00, (byte) 0X12, - (byte) 0X01, prioritylow, - (byte) 0X00, (byte) 0X01, - (byte) ikeyhigh, (byte) ikeylow, - (byte) ikeyhigh, (byte) ikeylow, - (byte) typehigh, (byte) typelow, - (byte) qhdhigh, (byte) qhdlow, - (byte) qhdhigh2, (byte) qhdlow2, - (byte) fhdhigh, (byte) fhdlow, - (byte) fhdhigh2, (byte) fhdlow2 - }; - } else if (type == 2) { - b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X16, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X71, - (byte) 0X00, (byte) 0X12, - (byte) 0X01, prioritylow, - (byte) 0X00, (byte) 0X01, - (byte) ikeyhigh, (byte) ikeylow, - (byte) ikeyhigh, (byte) ikeylow, - (byte) typehigh, (byte) typelow, - (byte) qhdhigh, (byte) qhdlow, - (byte) 0X00, (byte) 0X00, - (byte) fhdhigh, (byte) fhdlow, - (byte) 0X00, (byte) 0X00 - }; - } else if (type == 3) { - b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X16, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X71, - (byte) 0X00, (byte) 0X12, - (byte) 0X01, prioritylow, - (byte) 0X00, (byte) 0X01, - (byte) ikeyhigh, (byte) ikeylow, - (byte) ikeyhigh, (byte) ikeylow, - (byte) typehigh, (byte) typelow, - (byte) qhdhigh, (byte) qhdlow, - (byte) qhdhigh2, (byte) qhdlow2, - (byte) fhdhigh, (byte) fhdlow, - (byte) fhdhigh2, (byte) fhdlow2 - }; - } - log.info("下发AGV作业指令 --{}", str1); - log.info("下发AGV作业指令--{}", str); - log.info("下发agv指令数据--{}", Bytes2HexString(b)); - - if (StrUtil.equals(agv_system_type, "2")) { - TwoNDCSocketConnectionAutoRun.write(b); - } - } else { - - String instcode = inst.getInstruction_code(); - int startHeight = Integer.parseInt(StrUtil.isEmpty(inst.getStart_height()) ? "0" : inst.getStart_height()); - int nextHeight = Integer.parseInt(StrUtil.isEmpty(inst.getNext_height()) ? "0" : inst.getNext_height()); - //默认取货放货高度都为0 - //int type = Integer.parseInt(inst.getInstruction_type()); - int type = 4; - if (startHeight != 0 && nextHeight != 0) { - //取货放货高度都不为0 - type = 1; - } else if (startHeight != 0 && nextHeight == 0) { - //取货高度不为0 放货高度为0 - type = 2; - } else if (startHeight == 0 && nextHeight != 0) { - //取货高度为0 放货高度不为0 - type = 3; - } - int priority = Integer.parseInt(inst.getPriority()) + 128; - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); - int startAddress = deviceService.queryAddressBydeviceCode(inst.getStart_point_code()); - int nextAddress = deviceService.queryAddressBydeviceCode(inst.getNext_point_code()); - - byte ikeyhigh = (byte) IntToHexHigh(Integer.parseInt(instcode)); - byte ikeylow = (byte) IntToHexLow(Integer.parseInt(instcode)); - byte typehigh = (byte) IntToHexHigh(type); - byte typelow = (byte) IntToHexLow(type); - byte qhdhigh = (byte) IntToHexHigh(startAddress); - byte qhdlow = (byte) IntToHexLow(startAddress); - byte fhdhigh = (byte) IntToHexHigh(nextAddress); - byte fhdlow = (byte) IntToHexLow(nextAddress); - byte prioritylow = (byte) IntToHexLow(priority); - - byte shhigh = (byte) IntToHexHigh(startHeight); - byte shlow = (byte) IntToHexLow(startHeight); - - byte nhhigh = (byte) IntToHexHigh(nextHeight); - byte nhlow = (byte) IntToHexLow(nextHeight); - - String str = "十进制下发:"; - String str1 = "十六进制下发:"; - str += "ikey:" + (Integer.parseInt(instcode)); - str1 += "ikey:" + hexToString(ikeyhigh & 0xFF) + hexToString(ikeylow & 0xFF); - - str += "/type:" + (type); - str1 += "/type:" + hexToString(typehigh & 0xFF) + hexToString(typelow & 0xFF); - - str += "/qhd:" + (startAddress); - str1 += "/qhd:" + hexToString(qhdhigh & 0xFF) + hexToString(qhdlow & 0xFF); - str += "/fhd:" + (nextAddress); - str1 += "/fhd:" + hexToString(fhdhigh & 0xFF) + hexToString(fhdlow & 0xFF); - - str += "/priority:" + (priority); - str1 += "/priority:" + hexToString(prioritylow & 0xFF); - - System.out.println(str); - System.out.println(str1); - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X16, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X71, - (byte) 0X00, (byte) 0X12, - (byte) 0X01, prioritylow, - (byte) 0X00, (byte) 0X01, - (byte) ikeyhigh, (byte) ikeylow, - (byte) ikeyhigh, (byte) ikeylow, - (byte) typehigh, (byte) typelow, - (byte) qhdhigh, (byte) qhdlow, - (byte) fhdhigh, (byte) fhdlow, - (byte) shhigh, (byte) shlow, - (byte) nhhigh, (byte) nhlow - }; - log.info("下发AGV作业指令 --{}", str1); - log.info("下发AGV作业指令--{}", str); - log.info("下发agv指令数据--{}", Bytes2HexString(b)); - OneNDCSocketConnectionAutoRun.write(b); - } - } - } - - @Override - public byte[] sendAgvOneModeInst(int phase, int index, int result, int startPoint, int nextPoint, int startHigh, int nextHigh) { - if (phase < 0 || index < 0) { - return null; - } - byte indexhigh = (byte) IntToHexHigh(index); - byte indexlow = (byte) IntToHexLow(index); - byte phasehigh = (byte) IntToHexHigh(phase); - byte phaselow = (byte) IntToHexLow(phase); - byte startPointHigh = (byte) IntToHexHigh(startPoint); - byte startPointLow = (byte) IntToHexLow(startPoint); - byte nextPointHigh = (byte) IntToHexHigh(nextPoint); - byte nextPointLow = (byte) IntToHexLow(nextPoint); - byte startHighHigh = (byte) IntToHexHigh(startHigh); - byte startHighLow = (byte) IntToHexLow(startHigh); - byte nextHighHigh = (byte) IntToHexHigh(nextHigh); - byte nextHighLow = (byte) IntToHexLow(nextHigh); - - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X12, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X6D, - (byte) 0X00, (byte) 0X0E, - (byte) indexhigh, (byte) indexlow, - (byte) 0X01, (byte) 0X14, - (byte) phasehigh, (byte) phaselow, - (byte) startPointHigh, (byte) startPointLow, - (byte) nextPointHigh, (byte) nextPointLow, - (byte) startHighHigh, (byte) startHighLow, - (byte) nextHighHigh, (byte) nextHighLow - }; - - log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF)); - - System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); - return b; - - } - - @Override - public byte[] sendAgvTwoModeInst(int phase, int index, int result) { - if (phase < 0 || index < 0) - return null; - byte indexhigh = (byte) IntToHexHigh(index); - byte indexlow = (byte) IntToHexLow(index); - byte phasehigh = (byte) IntToHexHigh(phase); - byte phaselow = (byte) IntToHexLow(phase); - - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X0A, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X6D, - (byte) 0X00, (byte) 0X06, - (byte) indexhigh, (byte) indexlow, - (byte) 0X01, (byte) 0X12, - (byte) phasehigh, (byte) phaselow - }; - - - log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF)); - - System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); - return b; - } - - @Override - public byte[] sendAgvTwoModeInst(int phase, int index, int result, int offset, int quantity) { - if (phase < 0 || index < 0) - return null; - byte indexhigh = (byte) IntToHexHigh(index); - byte indexlow = (byte) IntToHexLow(index); - byte phasehigh = (byte) IntToHexHigh(phase); - byte phaselow = (byte) IntToHexLow(phase); - byte offsethigh = (byte) IntToHexHigh(offset); - byte offsetlow = (byte) IntToHexLow(offset); - byte quantityhigh = (byte) IntToHexHigh(quantity); - byte quantitylow = (byte) IntToHexLow(quantity); - - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X0E, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X6D, - (byte) 0X00, (byte) 0X0A, - (byte) indexhigh, (byte) indexlow, - (byte) 0X01, (byte) 0X12, - (byte) phasehigh, (byte) phaselow, - (byte) offsethigh, (byte) offsetlow, - (byte) quantityhigh, (byte) quantitylow - }; - - - log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" - + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF) + ",是否侧移: " + (offset == 1 ? "侧移" : "不测移") + ",偏离量: " + quantity); - - System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); - return b; - } - - @Override - public byte[] sendAgvTwoModeInst() { - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X00, - (byte) 0X00, (byte) 0X04, - }; - return b; - } - - - @Override - public byte[] sendAgvOneModeInst(int phase, int index, int result) { - if (phase < 0 || index < 0) { - return null; - } - byte indexhigh = (byte) IntToHexHigh(index); - byte indexlow = (byte) IntToHexLow(index); - byte phasehigh = (byte) IntToHexHigh(phase); - byte phaselow = (byte) IntToHexLow(phase); - - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X0A, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X6D, - (byte) 0X00, (byte) 0X06, - (byte) indexhigh, (byte) indexlow, - (byte) 0X01, (byte) 0X10, - (byte) phasehigh, (byte) phaselow - }; - - - log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF)); - - System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); - return b; - } - - - /* @Override - public byte[] sendAgvTwoModeInst(int phase, int index, int result) { - - if (phase < 0 || index < 0) - return null; - byte indexhigh = (byte) IntToHexHigh(index); - byte indexlow = (byte) IntToHexLow(index); - byte phasehigh = (byte) IntToHexHigh(phase); - byte phaselow = (byte) IntToHexLow(phase); - - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X0A, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X6D, - (byte) 0X00, (byte) 0X06, - (byte) indexhigh, (byte) indexlow, - (byte) 0X01, (byte) 0X12, - (byte) phasehigh, (byte) phaselow - }; - - - log.info("反馈agv动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF)); - - System.out.println("反馈agv动作数据:" + Bytes2HexString(b)); - return b; - }*/ - - /*@Override - public byte[] sendAgvOneModeInst(int phase, int index, int result) { - return new byte[0]; - }*/ - - @Override - @Transactional(rollbackFor = Exception.class) - public void charge(String carno) { - //检查数据字典station为0的参数 - //分配车辆 - Dict dict = dictService.getDictByName3("station",carno,null); - int satation=0; - if(ObjectUtil.isNotEmpty(dict)){ - log.info("当前车辆{}已分配充电桩{},退出后续判断",carno,dict.getPara1()); - return; - } - Dict temp = dictService.getDictByName2("station"); - if(ObjectUtil.isNotEmpty(temp)){ - satation = Integer.parseInt(temp.getPara1()); - } - if(satation!=0){ - String instcode =CodeUtil.getNewCode("INSTRUCT_NO"); - byte ikeyhigh = (byte) IntToHexHigh(Integer.parseInt(instcode)); - byte ikeylow = (byte) IntToHexLow(Integer.parseInt(instcode)); - byte carhigh = (byte) IntToHexHigh(Integer.parseInt(carno)); - byte carlow = (byte) IntToHexLow(Integer.parseInt(carno)); - byte satationhigh = (byte) IntToHexHigh(satation); - byte satationlow = (byte) IntToHexLow(satation); - String str = "十进制下发:"; - String str1 = "十六进制下发:"; - str += "ikey:" + (Integer.parseInt(instcode)); - str1 += "ikey:" + hexToString(ikeyhigh & 0xFF) + hexToString(ikeylow & 0xFF); - str += "carno:" + (Integer.parseInt(carno)); - str1 += "carno:" + hexToString(carhigh & 0xFF) + hexToString(carlow & 0xFF); - str += "/satation:" + (satation); - str1 += "/satation:" + hexToString(satationhigh & 0xFF) + hexToString(satationlow & 0xFF); - - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X0E, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X71, - (byte) 0X00, (byte) 0X0A, - (byte) 0X64, (byte) 0X80, - (byte) 0X00, (byte) 0X01, - (byte) ikeyhigh, (byte) ikeylow, - (byte) carhigh, (byte) carlow, - (byte) satationhigh, (byte) satationlow - - }; - log.info("下发AGV充电任务--{}", str1); - - try{ - OneNDCSocketConnectionAutoRun.write(b); - } catch (Exception e){ - log.error("下发充电任务失败{}{}",e,e.getMessage()); - } - - temp.setValue("1"); - temp.setPara2(carno); - temp.setPara3("下发充电"); - dictService.updateDetail(temp); - - }else{ - log.error("目前暂无可使用充电桩充电桩,暂不分配{}充电任务",carno); - } - } - - @Override - public boolean createChargingTaskToNDC(String carno) { - byte carhigh = (byte) IntToHexHigh(Integer.parseInt(carno)); - byte carlow = (byte) IntToHexLow(Integer.parseInt(carno)); - - String instcode = CodeUtil.getNewCode("INSTRUCT_NO"); - byte instcodehigh = (byte) IntToHexHigh(Integer.parseInt(instcode)); - byte instcodelow = (byte) IntToHexLow(Integer.parseInt(instcode)); - - String str = "十进制下发:"; - String str1 = "十六进制下发:"; - str += "carno:" + (Integer.parseInt(carno)); - str1 += "carno:" + hexToString(carhigh & 0xFF) + hexToString(carlow & 0xFF); - - str += "/instcode:" + (instcode); - str1 += "/instcode:" + hexToString(instcodehigh & 0xFF) + hexToString(instcodelow & 0xFF); - - System.out.println(str); - System.out.println(str1); - - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X0C, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X71, - (byte) 0X00, (byte) 0X08, - (byte) 0X64, (byte) 0X80, - (byte) 0X00, (byte) 0X01, - (byte) instcodehigh, (byte) instcodelow, - (byte) carhigh, (byte) carlow - }; - log.info("下发AGV充电任务--{}", str1); - - try { -// OneNDCSocketConnectionAutoRun.write(b); - TwoNDCSocketConnectionAutoRun.write(b); - } catch (Exception e) { - e.getMessage(); - return false; - } - System.out.println("下发agv充电任务数据:" + Bytes2HexString(b)); - return true; - } - - String hexToString(int i) { - return (i < 16 ? "0" + Integer.toHexString(i) : Integer.toHexString(i)).toUpperCase(); - } - - - public static int IntToHexHigh(int b) { - int big = (b & 0xFF00) >> 8; - return big; - } - - public static int IntToHexLow(int b) { - int little = b & 0xFF; - return little; - } - - - public static String Bytes2HexString(byte[] b) { - String ret = ""; - for (int i = 0; i < b.length; i++) { - String hex = Integer.toHexString(b[i] & 0xFF); - if (hex.length() == 1) { - hex = '0' + hex; - } - ret += hex.toUpperCase(); - } - return ret; - } - - - @Override - public Map findAllAgvFromCache() { - return AGVDeviceStatus; - } - - @Override - public void charge(String carno, String station) { - //判断当前充电桩是否已下发充电任务 - Dict temp = dictService.getDictByName2("station", station); - if (ObjectUtil.isNotEmpty(temp)) { - int satation = 0; - if(ObjectUtil.isNotEmpty(temp)){ - satation = Integer.parseInt(temp.getPara1()); - } - String instcode =CodeUtil.getNewCode("INSTRUCT_NO"); - byte ikeyhigh = (byte) IntToHexHigh(Integer.parseInt(instcode)); - byte ikeylow = (byte) IntToHexLow(Integer.parseInt(instcode)); - byte carhigh = (byte) IntToHexHigh(Integer.parseInt(carno)); - byte carlow = (byte) IntToHexLow(Integer.parseInt(carno)); - byte satationhigh = (byte) IntToHexHigh(satation); - byte satationlow = (byte) IntToHexLow(satation); - String str = "十进制下发:"; - String str1 = "十六进制下发:"; - str += "ikey:" + (Integer.parseInt(instcode)); - str1 += "ikey:" + hexToString(ikeyhigh & 0xFF) + hexToString(ikeylow & 0xFF); - str += "carno:" + (Integer.parseInt(carno)); - str1 += "carno:" + hexToString(carhigh & 0xFF) + hexToString(carlow & 0xFF); - str += "/satation:" + (satation); - str1 += "/satation:" + hexToString(satationhigh & 0xFF) + hexToString(satationlow & 0xFF); - //todo 核对NDC协议 - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, - (byte) 0X00, (byte) 0X08, - (byte) 0X00, (byte) 0X0E, - (byte) 0X00, (byte) 0X01, - (byte) 0X00, (byte) 0X71, - (byte) 0X00, (byte) 0X0A, - (byte) 0X64, (byte) 0X80, - (byte) 0X00, (byte) 0X01, - (byte) ikeyhigh, (byte) ikeylow, - (byte) carhigh, (byte) carlow, - (byte) satationhigh, (byte) satationlow - - }; - log.info("下发AGV充电任务--{}", str1); - - try{ - OneNDCSocketConnectionAutoRun.write(b); - temp.setValue("1"); - temp.setPara2(String.valueOf(carno)); - dictService.updateDetail(temp); - } catch (Exception e){ - log.error("下发充电任务失败{}{}",e,e.getMessage()); - } - - } else { - log.info("当前充电桩{}已被使用!请检查充电桩状态再操作!", station); - throw new BadRequestException("当前充电桩已被使用或者车号不为空,请检查充电桩状态再操作!"); - } - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java deleted file mode 100644 index eccdd07..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java +++ /dev/null @@ -1,1547 +0,0 @@ -package org.nl.acs.agv.server.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import jodd.util.StringUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.AgvUtil; -import org.nl.acs.agv.AgvWaitUtil; -import org.nl.acs.agv.server.XianGongAgvService; -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; -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.instruction.service.dto.InteractionJsonDTO; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.device.enums.DeviceType; -import org.nl.acs.task.enums.ActionTypeEnum; -import org.nl.acs.task.enums.AgvActionTypeEnum; -import org.nl.acs.task.enums.AgvSystemTypeEnum; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.system.service.param.ISysParamService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; - -import java.util.*; - -/** - * @author 20220102CG\noblelift - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class XianGongAgvServiceImpl implements XianGongAgvService { - private final DeviceAppService deviceAppService; - private final ISysParamService paramService; - @Autowired - @Lazy - private AcsToWmsService acsToWmsService; - - @Autowired - private InstructionService instructionService; - - @Autowired - private TaskService taskserver; - - @Autowired - private LuceneExecuteLogService luceneExecuteLogService; - @Autowired - private DeviceAppService deviceAppservice; - - - @Autowired - private AgvWaitUtil agvWaitUtil; - - Map AGVDeviceStatus = new HashMap(); - - private static final String JACKLOAD_THREE = "3"; - private static final String FOUR = "4"; - private static final String WAIT_FIVE = "5"; - - @Value("${agvToAcs.addr}") - private String addr; - - - @Override - public String waitPointRequest(String param) { - log.info("收到AGV请求参数:{}", param); - String[] strs = param.split("-"); - String address = strs[0]; - String inst_code = strs[1]; - String type = strs[2]; - String newaddress = null; - // 前置点会加上p - if (address.endsWith("IN")) { - newaddress = address.substring(0, address.length() - 2); - } else if (address.endsWith("OUT")) { - newaddress = address.substring(0, address.length() - 3); - } else if (address.endsWith("P") || address.endsWith("L") || address.endsWith("R")) { - newaddress = address.substring(0, address.length() - 1); - } else if (address.endsWith("CZ")) { - newaddress = address.substring(0, address.length() - 2); - } else if (address.endsWith("IQ") || address.endsWith("OQ")) { - newaddress = address.substring(0, address.length() - 2); - } else { - newaddress = address; - } - boolean is_feedback = false; - - Device device = deviceAppService.findDeviceByCode(newaddress); - JSONObject jo = new JSONObject(); - if (is_feedback) { - jo.put("name", param); - jo.put("lastAction", "wait"); - jo.put("lastActionStatus", "DONE"); - jo.put("status", "IDLE"); - } else { - jo.put("name", param); - jo.put("lastAction", "wait"); - jo.put("lastActionStatus", "FAILED"); - jo.put("status", "IDLE"); - } - is_feedback = false; - log.info("反馈AGV请求参数:{}", jo.toString()); - - return jo.toString(); - - } - - - @Override - public HttpResponse markComplete(String code) throws Exception { - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/api/route/orderSequences/" + code + "/markComplete"; - log.info("关闭agv运单序列请求:{}", agvurl); - - HttpResponse result = HttpRequest.post(agvurl) - //.body(String.valueOf(orderjo))//表单内容 - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("关闭agv运单序列请求反馈:{}", result); - - return result; - } else { - return null; - } - - - } - - - @Override - public HttpResponse queryXZAgvDeviceStatus() { - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - String agvurl1 = agvurl + ":" + agvport + "/api/route/vehicles"; - String agvurl2 = agvurl + ":" + agvport + "/api/route/vehicleDetails"; - - HttpResponse result = HttpRequest.get(agvurl1) - //超时,毫秒 - .timeout(20000) - .execute(); - - - HttpResponse result2 = HttpRequest.get(agvurl2) - //超时,毫秒 - .timeout(20000) - .execute(); - - System.out.println("查询agv状态数据:" + result.body()); - if (result.getStatus() == CommonFinalParam.STATUS_OPEN) { - JSONArray ja = (JSONArray) JSONArray.parse(result.body()); - - for (int i = 0; i < ja.size(); i++) { - JSONObject jo = (JSONObject) ja.get(i); - String name = jo.getString("name"); - String state = jo.getString("state"); - String energyLevel = jo.getString("energyLevel"); - String transportOrder = jo.getString("transportOrder"); - JSONObject detailjo = (JSONObject) JSONObject.parse(result2.body()); - JSONObject item = (JSONObject) detailjo.get(name); - String x = item.getString("x"); - String y = item.getString("y"); - String angle = item.getString("angle"); - AgvDto dto = new AgvDto(); - dto.setName(name); - dto.setEnergyLevel(energyLevel); - dto.setState(state); - dto.setTransportOrder(transportOrder); - dto.setPositionAngle(angle); - dto.setPositionX(x); - dto.setPositionY(y); - if (AGVDeviceStatus.containsKey(name)) { - AGVDeviceStatus.remove(name); - AGVDeviceStatus.put(name, dto); - } else { - AGVDeviceStatus.put(name, dto); - } - } - } - return result; - } else { - return null; - } - - - } - - - @Override - public HttpResponse queryXZAgvInstStatus(String instCode) { - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/api/route/transportOrders/" + instCode; - - HttpResponse result = HttpRequest.get(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - System.out.println("查询agv指令数据:" + result.body()); - - return result; - } else { - - return null; - } - } - - - @Override - public HttpResponse deleteXZAgvInst(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/terminate"; - JSONObject jsonObject = new JSONObject(); - jsonObject.put("id", instCode); - jsonObject.put("disableVehicle", false); - log.info("删除agv指令请求agvurl:{}", agvurl); - HttpResponse result = HttpRequest.post(agvurl) - .body(jsonObject.toJSONString()) - .timeout(20000) - .execute(); - log.info("删除agv指令请求反馈:{}", result); - return result; - } else { - return null; - } - } - - - @Override - public HttpResponse sendOrderSequencesToXZ(Instruction inst) throws Exception { - com.alibaba.fastjson.JSONObject jo = new com.alibaba.fastjson.JSONObject(); - jo.put("id", inst.getInstruction_code()); - //运单封口,true=创建运单之后不可添加动作块;false=创建运单可以添加动作块 - if (AgvActionTypeEnum.ORDINARY.getCode().equals(inst.getAgv_action_type())) { - jo.put("complete", true); - } else { - jo.put("complete", false); - } - //动作块 - jo.put("blocks", createBlocksData(inst)); - //运单优先级 - jo.put("priority", inst.getPriority()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("下发诺宝运单") - .content("任务号:" + inst.getTask_code() + ",指令号:" + inst.getInstruction_code() + ",下发agv订单序列参数:" + jo) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - log.info("任务号:{},指令号{},下发诺宝运单序列参数:{}", inst.getTask_code(), inst.getInstruction_code(), jo); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/setOrder"; - - log.info(agvurl); - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(jo)) - //超时,毫秒 - .timeout(20000) - .execute(); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("诺宝运单响应") - .content("任务号:" + inst.getTask_code() + ",指令号:" + inst.getInstruction_code() + ",下发诺宝订单序列反馈参数:" + jo) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - log.info("任务号:{},指令号{},状态{},下发agv订单序列反馈:{}", inst.getTask_code(), inst.getInstruction_code(), result.getStatus(), result.body()); - - return result; - } else { - return null; - } - } - - /** - * 下发动作块信号 - * - * @param inst - * @return - */ - public JSONArray createBlocksData(Instruction inst) { - JSONArray ja = new JSONArray(); - String instruction_code = inst.getInstruction_code(); - String start_device_code = inst.getStart_device_code(); - String start_point_code = inst.getStart_point_code(); - String next_device_code = inst.getNext_device_code(); - String next_point_code = inst.getNext_point_code(); - Integer agv_action_type = inst.getAgv_action_type(); - - - //起点1 - sendStartDeviceOrder(ja, start_device_code, start_point_code, instruction_code, agv_action_type); - //终点1 - sendEndDeviceOrder(ja, start_device_code, instruction_code, next_point_code, next_device_code, agv_action_type); - - return ja; - } - - /** - * 下发取货信号 - * - * @param ja - * @param pointCode 起始点位 - * @param device_code 起始设备 - * @param instCode 指令号 - * @param agv_action_type - */ - public void sendStartDeviceOrder(JSONArray ja, String pointCode, String device_code, String instCode, Integer agv_action_type) { - Device startDevice = deviceAppService.findDeviceByCode(device_code); - //取货前等待 - JSONObject jo = new JSONObject(); - //动作块id - jo.put("blockId", IdUtil.simpleUUID()); - //目的地名称 - if (AgvActionTypeEnum.IN_STOCK.getCode().equals(agv_action_type) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(agv_action_type)) { - jo.put("location", pointCode + "WAIT"); - } else { - jo.put("location", pointCode + "INGET"); - } - //执行脚本 - jo.put("operation", "script"); - if (AgvActionTypeEnum.IN_STOCK.getCode().equals(agv_action_type) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(agv_action_type)) { - jo.put("id", pointCode + "WAIT"); - } else { - jo.put("id", pointCode + "INGET"); - } - //通信脚本,动作前后与现场设备交互的场景 - jo.put("script_name", "userpy/interact.py"); - JSONObject script_args = new JSONObject(); - //更改为现场设备IP及PORT - script_args.put("addr", addr); - JSONObject data = new JSONObject(); - JSONObject reach = new JSONObject(); - reach.put("task_code", instCode); - if (AgvActionTypeEnum.IN_STOCK.getCode().equals(agv_action_type) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(agv_action_type)) { - reach.put("address", pointCode + "WAIT"); - } else { - reach.put("address", pointCode + "INGET"); - } - data.put("reach", reach); - script_args.put("data", data); - script_args.put("protocol", "HTTP"); - jo.put("script_args", script_args); - ja.add(jo); - - if (AgvActionTypeEnum.ORDINARY.getCode().equals(agv_action_type) || AgvActionTypeEnum.OUT_STOCK.getCode().equals(agv_action_type)) { - //将货物顶起来,机器识别提升高度 - JSONObject jo1 = new JSONObject(); - jo1.put("blockId", IdUtil.simpleUUID()); - jo1.put("location", pointCode); - jo1.put("operation", "JackLoad"); - inspectInStocckSet(pointCode, jo1); - ja.add(jo1); - JSONObject jo2 = new JSONObject(); - jo2.put("blockId", IdUtil.simpleUUID()); - jo2.put("location", pointCode + "OUTGET"); - jo2.put("operation", "script"); - jo2.put("id", pointCode + "OUTGET"); - jo2.put("script_name", "userpy/interact.py"); - JSONObject script_args2 = new JSONObject(); - script_args2.put("addr", addr); - JSONObject data2 = new JSONObject(); - JSONObject reach2 = new JSONObject(); - reach2.put("task_code", instCode); - reach2.put("address", pointCode + "OUTGET"); - data2.put("reach", reach2); - script_args2.put("data", data2); - script_args2.put("protocol", "HTTP"); - jo2.put("script_args", script_args2); - ja.add(jo2); - } - } - - private void inspectInStocckSet(String pointCode, JSONObject jo1) { - Device device = deviceAppservice.findDeviceByCode(pointCode); - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - String inspectInStocck = (String) device.getExtraValue().get("inspect_in_stocck"); - if (StrUtil.isNotEmpty(inspectInStocck) && inspectInStocck.equals("true")) { - jo1.put("operationArgs", new JSONObject() {{ - put("recognize", false); - }}); - } else { - jo1.put("operationArgs", new JSONObject() {{ - put("recognize", true); - }}); - } - } else { - jo1.put("operationArgs", new JSONObject() {{ - put("recognize", true); - }}); - } - } - - /** - * 下发放货信号 - * - * @param ja - * @param device_code 起始设备 - * @param instCode 指令号 - * @param pointCode 终点点位 - * @param nextDeviceCode 终点设备 - * @param agv_action_type - */ - public void sendEndDeviceOrder(JSONArray ja, String device_code, String instCode, String pointCode, String nextDeviceCode, Integer agv_action_type) { - Device nextDevice = deviceAppService.findDeviceByCode(nextDeviceCode); - if (!AgvActionTypeEnum.IN_STOCK.getCode().equals(agv_action_type)) { - //放货前等待 - JSONObject jo3 = new JSONObject(); - jo3.put("blockId", IdUtil.simpleUUID()); - if (AgvActionTypeEnum.OUT_STOCK.getCode().equals(agv_action_type) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(agv_action_type)) { - jo3.put("location", pointCode + "WAIT"); - } else { - jo3.put("location", pointCode + "INPUT"); - } - jo3.put("operation", "script"); - if (AgvActionTypeEnum.OUT_STOCK.getCode().equals(agv_action_type) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(agv_action_type)) { - jo3.put("id", pointCode + "WAIT"); - } else { - jo3.put("id", pointCode + "INPUT"); - } - jo3.put("script_name", "userpy/interact.py"); - JSONObject script_args3 = new JSONObject(); - script_args3.put("addr", addr); - JSONObject data3 = new JSONObject(); - JSONObject reach3 = new JSONObject(); - reach3.put("task_code", instCode); - if (AgvActionTypeEnum.OUT_STOCK.getCode().equals(agv_action_type) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(agv_action_type)) { - reach3.put("address", pointCode + "WAIT"); - } else { - reach3.put("address", pointCode + "INPUT"); - } - data3.put("reach", reach3); - script_args3.put("data", data3); - script_args3.put("protocol", "HTTP"); - jo3.put("script_args", script_args3); - ja.add(jo3); - - if (AgvActionTypeEnum.ORDINARY.getCode().equals(agv_action_type)) { - //将货物放下 - com.alibaba.fastjson.JSONObject jo4 = new com.alibaba.fastjson.JSONObject(); - jo4.put("blockId", IdUtil.simpleUUID()); - jo4.put("location", pointCode); - jo4.put("operation", "JackUnload"); - ja.add(jo4); - - - //放货完成等待 - com.alibaba.fastjson.JSONObject jo5 = new com.alibaba.fastjson.JSONObject(); - jo5.put("blockId", IdUtil.simpleUUID()); - jo5.put("location", pointCode + "OUTPUT"); - jo5.put("operation", "script"); - jo5.put("id", pointCode + "OUTPUT"); - jo5.put("script_name", "userpy/interact.py"); - com.alibaba.fastjson.JSONObject script_args5 = new com.alibaba.fastjson.JSONObject(); - script_args5.put("addr", addr); - com.alibaba.fastjson.JSONObject data5 = new com.alibaba.fastjson.JSONObject(); - com.alibaba.fastjson.JSONObject reach5 = new com.alibaba.fastjson.JSONObject(); - reach5.put("task_code", instCode); - reach5.put("address", pointCode + "OUTPUT"); - data5.put("reach", reach5); - script_args5.put("data", data5); - script_args5.put("protocol", "HTTP"); - jo5.put("script_args", script_args5); - ja.add(jo5); - } - } - - } - - - @Override - public HttpResponse addOrderSequences(Instruction inst) throws Exception { - JSONObject orderjo = createOrederData(inst, CommonFinalParam.ONE); - log.info("指令号:{},追加agv订单序列参数:{}", inst.getInstruction_code(), orderjo.toString()); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/api/route/transportOrders/" + inst.getInstruction_code(); - - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(orderjo)) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info(agvurl); - log.info("任务号:{},指令号{},状态{},追加agv订单序列参数:{}", inst.getTask_code(), inst.getInstruction_code(), result.getStatus(), result.body()); - - return result; - } else { - return null; - } - } - - - @Override - public String sendOrderSequencesParam(Instruction inst) throws Exception { - JSONObject jo = new JSONObject(); - jo.put("intendedVehicle", ""); - jo.put("category", "Park"); - jo.put("failureFatal", true); - jo.put("complete", false); - JSONArray transports = new JSONArray(); - JSONObject orderjo = createOrederData(inst, "0"); - JSONObject order = new JSONObject(); - orderjo.put("order", order); - orderjo.put("name", inst.getInstruction_code()); - transports.add(orderjo); - jo.put("transports", transports); - return jo.toString(); - } - - - @Override - public JSONObject createOrederData(Instruction inst, String inst_type) { - String inst_code = inst.getInstruction_code(); - String task_code = inst.getTask_code(); - String compound_inst_data = inst.getCompound_inst_data(); - String[] str = null; - List pathlist = null; - if (!StrUtil.isEmpty(compound_inst_data)) { - str = compound_inst_data.split("->"); - pathlist = Arrays.asList(str); - } - JSONArray ja = new JSONArray(); - JSONObject orderjo = new JSONObject(); - - //1表示追加任务,需将task_code赋值给wrappingSequence - if (StrUtil.equals(CommonFinalParam.ONE, inst_type)) { - orderjo.put("wrappingSequence", task_code); - } - String instno = inst.getInstruction_code(); - //指定agv车号 暂时不用 - //orderjo.put("intendedVehicle", ""); - //设置任务最终时间 - orderjo.put("deadline", AgvUtil.getNextDay(1)); - orderjo.put("category", ""); - //拼接起点子任务动作,待完善,动作码需要从数据库取值 - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); - - switch (type) { - case 3: - break; - case 4: - break; - case 6: - String startAddress = inst.getStart_device_code(); - String nextAddress = inst.getNext_device_code(); - Device startdevice = deviceAppService.findDeviceByCode(startAddress); - Device nextdevice = deviceAppService.findDeviceByCode(nextAddress); - break; - default: - break; - } - - orderjo.put("destinations", ja); - JSONObject prijo = new JSONObject(); - prijo.put("key", "duration"); - prijo.put("value", "101"); - - JSONArray prija = new JSONArray(); - prija.add(prijo); - orderjo.put("properties", prija); - - return orderjo; - } - - - /** - * 返回一个点位操作子任务 先知使用 - * - * @param locationName 点位 - * @param operation 点位操作 - * @param propertiesType 子任务类型 - * @param pro 子任务参数 - * 调用demo:destination("sh15p", "Spin", CommonFinalParam.TWO, "3.14") - * demo:destination("cz14", "JackUnload", "3", "") - * @return - */ - - public static JSONObject destination2(String locationName, String operation, String propertiesType, String pro) { - - //新增业务订单 - JSONObject destinationOrder = new JSONObject(); - //目标工作站 - destinationOrder.put("locationName", locationName); - //机器人在工作站要执行的操作 - destinationOrder.put("operation", operation); - //Wait请求是否继续 - if (CommonFinalParam.ONE.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro2 = new JSONObject(); - //固定值 - pro2.put("key", "device:queryAtExecuted"); - //pro为wait请求的标识,一般用点位拼接的字符串 - pro2.put("value", pro + ":wait"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //Spin转动 - } else if (CommonFinalParam.TWO.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //坐标系类型,global_spin_angle为全局坐标系 - pro1.put("key", "global_spin_angle"); - //弧度值,如3.14 - pro1.put("value", pro); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - //固定值 - pro2.put("key", "spin_direction"); - //弧度值,如0 - pro2.put("value", "0"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //JackUnload,Jackload不操作 - } else if (JACKLOAD_THREE.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //固定值 - pro1.put("key", "recognize"); - //固定值 - pro1.put("value", "false"); - properties.add(pro1); - destinationOrder.put("properties", properties); - } else if (FOUR.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //坐标系类型,robot_spin_angle为机器人坐标系 - pro1.put("key", "robot_spin_angle"); - //弧度值,如3.14 - pro1.put("value", pro); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - //固定值 - pro2.put("key", "spin_direction"); - //弧度值,如0 - pro2.put("value", "0"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //Wait请求是否继续 - } else if (WAIT_FIVE.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro2 = new JSONObject(); - - destinationOrder.put("properties", "[]"); - } - return destinationOrder; - } - - - @Override - public String queryDoorStatus(String device) { - log.info("AGV查询自动门状态,参数:{}", device); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); - switch (type) { - case 4: - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASOTHERSYSTEM).getValue(), CommonFinalParam.ONE)) { - String result = acsToWmsService.queryDoorsStatus().body(); - JSONArray ja = JSONArray.parseArray(result); - log.info("AGV查询自动门状态,反馈:{}", ja.toString()); - return ja.toString(); - } - return null; - default: - if (StrUtil.equals(CommonFinalParam.DOORS, device)) { - List list = deviceAppService.findDevice(DeviceType.autodoor); - JSONArray ja = new JSONArray(); - for (int i = 0; i < list.size(); i++) { - Device doordevice = deviceAppService.findDeviceByCode(list.get(i).getDevice_code()); - if (ObjectUtil.isEmpty(doordevice)) { - throw new BadRequestException(LangProcess.msg("device_checkNull", list.get(i).getDevice_code())); - } - String mes = null; - JSONObject jo = JSONObject.parseObject(mes); - ja.add(jo); - } - log.info("AGV查询自动门状态,反馈:{}", ja.toString()); - return ja.toString(); - - } else { - Device doordevice = deviceAppService.findDeviceByCode(device); - if (ObjectUtil.isEmpty(doordevice)) { - throw new BadRequestException(LangProcess.msg("device_checkNull", device)); - } - String mes = null; - JSONObject jo = JSONObject.parseObject(mes); - log.info("AGV查询自动门状态,反馈:{}", jo.toString()); - return jo.toString(); - } - } - - } - - @Override - public Map findAllAgvFromCache() { - return AGVDeviceStatus; - } - - - @Override - public JSONObject xgAGVWaitPointRequest(JSONObject requestParam) { - log.info("仙工AGV请求取放货,请求参数 - {}", requestParam); - String inst_code = requestParam.getString("task_code"); - Instruction instructionDto = instructionService.findByCodeFromCache(inst_code); - if (ObjectUtil.isEmpty(instructionDto)) { - LuceneLogDto logDto = LuceneLogDto.builder() - .content("请求失败,未找到指令!" + inst_code) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - throw new BadRequestException("请求失败,未找到指令!"); - } - String address = requestParam.getString("address"); - if (StrUtil.isBlank(address)) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("请求失败,地址为空!" ) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - throw new BadRequestException("请求失败,地址为空!"); - } - if (address.contains("IN") || address.contains("WAIT")) { - String task_code = instructionDto.getTask_code(); - String deviceCodeNow; - if (address.contains("WAIT")) { - deviceCodeNow = address.substring(0, address.length() - 4); - } else { - deviceCodeNow = address.substring(0, address.length() - 5); - } - if (ObjectUtil.isEmpty(deviceAppService.findDeviceByCode(deviceCodeNow))) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("设备号 " + deviceCodeNow + " 不存在!") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - throw new BadRequestException("设备号 " + deviceCodeNow + " 不存在!"); - } - //一楼诺宝agv - if (instructionDto.getAgv_system_type().equals(AgvSystemTypeEnum.One_NDC_System_Type.getIndex())) { - - if (address.contains("GET")) { - return agvWaitUtil.waitInGet(deviceCodeNow, instructionDto); - } else if (address.contains("PUT")) { - return agvWaitUtil.waitInPut(deviceCodeNow, instructionDto); - } - //如果是取货二次分配,取放货二次分配需要重新追加动作块 - if (AgvActionTypeEnum.IN_STOCK.getCode().equals(instructionDto.getAgv_action_type()) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(instructionDto.getAgv_action_type())) { - Integer actionType = ActionTypeEnum.IN_STOCK.getCode(); - String newPointCode = applyXGAgvTask(task_code, actionType, instructionDto); - log.info("取货二次分配追加诺宝成功,新点位 - {}", newPointCode); - JSONObject map = new JSONObject(); - map.put("status", 200); - map.put("message", "取货二次分配追加诺宝成功!"); - return map; - } - //如果是放货二次分配,取放货二次分配需要重新追加动作块 - if (AgvActionTypeEnum.OUT_STOCK.getCode().equals(instructionDto.getAgv_action_type()) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(instructionDto.getAgv_action_type())) { - Integer actionType = ActionTypeEnum.OUT_STOCK.getCode(); - String newPointCode = applyXGAgvTask(task_code, actionType, instructionDto); -// sendAddSequencesToNBAgv(instructionDto.getInstruction_code(), deviceCodeNow, instructionDto); - log.info("放货二次分配追加诺宝成功,新点位 - {}", newPointCode); - JSONObject map = new JSONObject(); - map.put("status", 200); - map.put("message", "放货二次分配追加诺宝成功!"); - return map; - } - } - //一楼叉车 - if (instructionDto.getAgv_system_type().equals(AgvSystemTypeEnum.XG_System_Type.getIndex())) { - if (address.contains("GET")) { - //取货前等待 - return agvWaitUtil.waitInGet(deviceCodeNow, instructionDto); - } else { - //放货前二次分配 - if (address.contains("WAIT")) { - String newPointCode = applyCCAgvTask(task_code, instructionDto); - - JSONObject map = new JSONObject(); - map.put("status", 200); - map.put("message", "允许叉车放货!" + "点位" + newPointCode); - log.info("允许仙工AGV放货,设备号 - {}", newPointCode); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("叉车允许放货" + "新点位:" + newPointCode + map ) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return map; - } - //放货前等待 - if (address.contains("PUT")) { - return agvWaitUtil.waitInPut(deviceCodeNow, instructionDto); - } - } - } - } - if (address.contains("OUT")) { - String deviceCodeNow = address.substring(0, address.length() - 6); - if (ObjectUtil.isEmpty(deviceAppService.findDeviceByCode(deviceCodeNow))) { - throw new BadRequestException("设备号 " + deviceCodeNow + " 不存在!"); - } - - if (address.contains("GET")) { - //取货完成 - JSONObject jsonObject = agvWaitUtil.waitOutGet(deviceCodeNow, instructionDto); - if (StringUtil.equals("200", jsonObject.getString("status"))) { - log.info("仙工AGV取货完成后离开,设备号 - {}", deviceCodeNow); - return jsonObject; - } - } else if (address.contains("PUT")) { - //放货完成 - JSONObject jsonObject = agvWaitUtil.waitOutPut(deviceCodeNow, instructionDto); - if (StringUtil.equals("200", jsonObject.getString("status"))) { - log.info("仙工AGV放货完成后离开,设备号 - {}", deviceCodeNow); - return jsonObject; - } - - } - } - - throw new BadRequestException("请求失败,IN OUT 站点错误!"); - } - - private String applyCCAgvTask(String task_code, Instruction instructionDto) { - JSONObject param = new JSONObject(); - param.put("task_code", task_code); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("叉车二次分配请求lms,参数:" + task_code) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.applySendOutTwo(param); - JSONObject jo = JSON.parseObject(response); - if (jo.getInteger("status") == 200) { - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("叉车二次分配请求lms,参数,接口返回:" + jo) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); - //二次分配更新点位 - updataTask(instructionDto, jo.getString("data")); - //请求成功调用叉车追加动作块 - sendAddSequencesToCCAgv(instructionDto.getInstruction_code(), jo.getString("data"), instructionDto); - return jo.getString("data"); - - } else { - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("叉车二次分配请求lms失败,返回参数:" + jo.getString("message")) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); - throw new BadRequestException("叉车二次分配请求lms返回失败"); - } - } - - private void sendAddSequencesToCCAgv(String instructionCode, String nextPoint, Instruction instructionDto) { - com.alibaba.fastjson.JSONObject jo = new com.alibaba.fastjson.JSONObject(); - jo.put("id", instructionCode); - //动作块 - jo.put("blocks", createBlocksDataTowCCStart(nextPoint)); - //追加订单封口 - jo.put("complete", true); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("指令号:" + instructionCode + ",追加叉车运单参数:" + jo) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - log.info("任务号:{},指令号{},追加诺宝叉车运单:{}", instructionCode, instructionCode, jo); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/addBlocks"; - - log.info(agvurl); - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(jo)) - //超时,毫秒 - .timeout(20000) - .execute(); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("指令号:" + instructionCode + ",下发追加诺宝叉车运单反馈参数:" + result) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - log.info("指令号{},状态{},下发追加叉车运单序列反馈:{}", instructionCode, result.getStatus(), result.body()); - - } - - } - - private Object createBlocksDataTowCCStart(String nextPoint) { - JSONArray ja = new JSONArray(); - JSONObject jo9 = new JSONObject(); - jo9.put("blockId", IdUtil.simpleUUID()); - jo9.put("location", nextPoint); - jo9.put("binTask", "ForkUnload"); - ja.add(jo9); - - JSONObject jo10 = new JSONObject(); - jo10.put("blockId", IdUtil.simpleUUID()); - jo10.put("location", nextPoint + "OUTPUT"); - jo10.put("binTask", "OutForkHeight"); - ja.add(jo10); - return ja; - } - - @Override - public HttpResponse getRobotInfo(String robotCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/" + "robotsStatus?vehicles=" + robotCode; - log.info("根据指定机器人查询状态的请求:{}", agvurl); - HttpResponse result = HttpRequest.get(agvurl) - .timeout(20000)//超时,毫秒 - .execute(); - log.info("根据指定机器人查询状态的请求反馈:{}", result); - return result; - } else { - return null; - } - } - - private String applyXGAgvTask(String task_code, Integer actionType, Instruction instructionDto) { - - JSONObject param = new JSONObject(); - param.put("taskCode", task_code); - param.put("actionType", actionType.toString()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("二次分配请求lms,参数:" + task_code + "--" + ActionTypeEnum.getStatus(actionType)) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - String response = acsToWmsService.secondaryAllocationPoint(param); - JSONObject jo = JSON.parseObject(response); - if (jo.getInteger("status") == 200) { - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("二次分配请求lms,参数,接口返回:" + jo) - .build(); - logDto2.setLog_level(4); - //二次分配更新点位 - updataTask(instructionDto, jo.getString("data")); - luceneExecuteLogService.deviceExecuteLog(logDto2); - if (!ActionTypeEnum.IN_FINISHING.getCode().equals(actionType)) { - //请求成功调用诺宝追加动作块 - sendAddSequencesToNBAgv(instructionDto.getInstruction_code(), jo.getString("data"), instructionDto); - } - return jo.getString("data"); - - } else { - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(instructionDto.getCarno()) - .content("二次分配请求lms,返回参数:" + jo) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); - throw new BadRequestException("二次分配请求lms返回失败"); - } - - - } - - private void updataTask(Instruction instructionDto, String newPoint) { - - TaskDto taskUpdate = new TaskDto(); - if (AgvActionTypeEnum.IN_STOCK.getCode().equals(instructionDto.getAgv_action_type())) { - instructionDto.setStart_point_code(newPoint); - taskUpdate.setStart_point_code(newPoint); - instructionDto.setStart_device_code(newPoint); - taskUpdate.setStart_device_code(newPoint); - } - if (AgvActionTypeEnum.OUT_STOCK.getCode().equals(instructionDto.getAgv_action_type())) { - instructionDto.setNext_point_code(newPoint); - taskUpdate.setNext_point_code(newPoint); - instructionDto.setNext_device_code(newPoint); - taskUpdate.setNext_device_code(newPoint); - } - taskUpdate.setTask_id(instructionDto.getTask_id()); - instructionService.update(instructionDto); - taskserver.update(taskUpdate); - } - - - @Override - public HttpResponse sendOrderSequencesToForklift(Instruction inst, InteractionJsonDTO interactionJsonDTO) { - com.alibaba.fastjson.JSONObject jo = new com.alibaba.fastjson.JSONObject(); - jo.put("id", inst.getInstruction_code()); - //运单封口,true=创建运单之后不可添加动作块;false=创建运单可以添加动作块 - if (AgvActionTypeEnum.ORDINARY.getCode().equals(inst.getAgv_action_type())) { - jo.put("complete", true); - } else { - jo.put("complete", false); - } //动作块 - jo.put("blocks", createBlocksForklift(inst, interactionJsonDTO)); - //运单优先级 - jo.put("priority", inst.getPriority()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("下发叉车运单") - .content("任务号:" + inst.getTask_code() + ",指令号:" + inst.getInstruction_code() + ",下发叉车订单序列参数:" + jo) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - log.info("任务号:{},指令号{},下发agv订单序列参数:{}", inst.getTask_code(), inst.getInstruction_code(), jo); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/setOrder"; - - log.info(agvurl); - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(jo)) - //超时,毫秒 - .timeout(20000) - .execute(); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("叉车运单响应") - .content("任务号:" + inst.getTask_code() + ",指令号:" + inst.getInstruction_code() + ",下发叉车订单序列反馈参数:" + jo) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - log.info("任务号:{},指令号{},状态{},下发agv叉车订单序列反馈:{}", inst.getTask_code(), inst.getInstruction_code(), result.getStatus(), result.body()); - - return result; - } else { - return null; - } - } - - - - /** - * 追加动作块 - * - * @param - * @param instructionCode - * @param instructionDto - * @return - */ - private void sendAddSequencesToNBAgv(String instructionCode, String point, Instruction instructionDto) { - com.alibaba.fastjson.JSONObject jo = new com.alibaba.fastjson.JSONObject(); - jo.put("id", instructionCode); - //动作块 - if (AgvActionTypeEnum.IN_STOCK.getCode().equals(instructionDto.getAgv_action_type()) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(instructionDto.getAgv_action_type())) { - jo.put("blocks", createBlocksDataTowStart(instructionCode, point, instructionDto)); - } - if (AgvActionTypeEnum.OUT_STOCK.getCode().equals(instructionDto.getAgv_action_type()) || AgvActionTypeEnum.IN_OUT_STOCK.getCode().equals(instructionDto.getAgv_action_type())) { - jo.put("blocks", createBlocksDataTowEnd(instructionCode, point, instructionDto)); - } - //追加订单封口 - jo.put("complete", true); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("追加诺宝运单") - .content("指令号:" + instructionCode + ",追加诺宝运单参数:" + jo) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - log.info("任务号:{},指令号{},追加诺宝运单:{}", instructionCode, point, jo); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/addBlocks"; - - log.info(agvurl); - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(jo)) - //超时,毫秒 - .timeout(20000) - .execute(); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("追加诺宝运单参数") - .content("指令号:" + instructionCode + ",下发追加诺宝运单反馈参数:" + jo) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - log.info("指令号{},状态{},下发追加诺宝运单序列反馈:{}", instructionCode, result.getStatus(), result.body()); - - } - } - - private Object createBlocksDataTowEnd(String instructionCode, String point, Instruction instructionDto) { - JSONArray ja = new JSONArray(); - //终点2 - sendEndDeviceOrder3(ja, point, instructionCode, instructionDto); - return ja; - - } - - private void sendEndDeviceOrder3(JSONArray ja, String nextDeviceCode, String instructionCode, Instruction instructionDto) { - JSONObject jo3 = new JSONObject(); - jo3.put("blockId", IdUtil.simpleUUID()); - jo3.put("location", nextDeviceCode + "INPUT"); - jo3.put("operation", "script"); - jo3.put("id", nextDeviceCode + "INPUT"); - jo3.put("script_name", "userpy/interact.py"); - JSONObject script_args3 = new JSONObject(); - script_args3.put("addr", addr); - JSONObject data3 = new JSONObject(); - JSONObject reach3 = new JSONObject(); - reach3.put("task_code", instructionCode); - reach3.put("address", nextDeviceCode + "INPUT"); - data3.put("reach", reach3); - script_args3.put("data", data3); - script_args3.put("protocol", "HTTP"); - jo3.put("script_args", script_args3); - ja.add(jo3); - - - //将货物放下 - com.alibaba.fastjson.JSONObject jo4 = new com.alibaba.fastjson.JSONObject(); - jo4.put("blockId", IdUtil.simpleUUID()); - jo4.put("location", nextDeviceCode); - jo4.put("operation", "JackUnload"); - ja.add(jo4); - //放货完成等待 - com.alibaba.fastjson.JSONObject jo5 = new com.alibaba.fastjson.JSONObject(); - jo5.put("blockId", IdUtil.simpleUUID()); - jo5.put("location", nextDeviceCode + "OUTPUT"); - jo5.put("operation", "script"); - jo5.put("id", nextDeviceCode + "OUTPUT"); - jo5.put("script_name", "userpy/interact.py"); - com.alibaba.fastjson.JSONObject script_args5 = new com.alibaba.fastjson.JSONObject(); - script_args5.put("addr", addr); - com.alibaba.fastjson.JSONObject data5 = new com.alibaba.fastjson.JSONObject(); - com.alibaba.fastjson.JSONObject reach5 = new com.alibaba.fastjson.JSONObject(); - reach5.put("task_code", instructionCode); - reach5.put("address", nextDeviceCode + "OUTPUT"); - data5.put("reach", reach5); - script_args5.put("data", data5); - script_args5.put("protocol", "HTTP"); - jo5.put("script_args", script_args5); - ja.add(jo5); - - } - - - private Object createBlocksDataTowStart(String instructionCode, String startPoint, Instruction instructionDto) { - JSONArray ja = new JSONArray(); - String nextDeviceCode = instructionDto.getNext_device_code(); - //起点2 - sendStartDeviceOrder2(ja, startPoint, instructionCode, instructionDto); - //终点2 - sendEndDeviceOrder2(ja, nextDeviceCode, instructionCode, instructionDto); - return ja; - - } - - private void sendEndDeviceOrder2(JSONArray ja, String nextDeviceCode, String instructionCode, Instruction instructionDto) { - if (AgvActionTypeEnum.IN_STOCK.getCode().equals(instructionDto.getAgv_action_type())) { - //放货前等待 - JSONObject jo3 = new JSONObject(); - jo3.put("blockId", IdUtil.simpleUUID()); - jo3.put("location", nextDeviceCode + "INPUT"); - jo3.put("operation", "script"); - jo3.put("id", nextDeviceCode + "INPUT"); - jo3.put("script_name", "userpy/interact.py"); - JSONObject script_args3 = new JSONObject(); - script_args3.put("addr", addr); - JSONObject data3 = new JSONObject(); - JSONObject reach3 = new JSONObject(); - reach3.put("task_code", instructionCode); - reach3.put("address", nextDeviceCode + "INPUT"); - data3.put("reach", reach3); - script_args3.put("data", data3); - script_args3.put("protocol", "HTTP"); - jo3.put("script_args", script_args3); - ja.add(jo3); - //将货物放下 - com.alibaba.fastjson.JSONObject jo4 = new com.alibaba.fastjson.JSONObject(); - jo4.put("blockId", IdUtil.simpleUUID()); - jo4.put("location", nextDeviceCode); - jo4.put("operation", "JackUnload"); - ja.add(jo4); - //放货完成等待 - com.alibaba.fastjson.JSONObject jo5 = new com.alibaba.fastjson.JSONObject(); - jo5.put("blockId", IdUtil.simpleUUID()); - jo5.put("location", nextDeviceCode + "OUTPUT"); - jo5.put("operation", "script"); - jo5.put("id", nextDeviceCode + "OUTPUT"); - jo5.put("script_name", "userpy/interact.py"); - com.alibaba.fastjson.JSONObject script_args5 = new com.alibaba.fastjson.JSONObject(); - script_args5.put("addr", addr); - com.alibaba.fastjson.JSONObject data5 = new com.alibaba.fastjson.JSONObject(); - com.alibaba.fastjson.JSONObject reach5 = new com.alibaba.fastjson.JSONObject(); - reach5.put("task_code", instructionCode); - reach5.put("address", nextDeviceCode + "OUTPUT"); - data5.put("reach", reach5); - script_args5.put("data", data5); - script_args5.put("protocol", "HTTP"); - jo5.put("script_args", script_args5); - ja.add(jo5); - } - } - - private void sendStartDeviceOrder2(JSONArray ja, String startPoint, String instructionCode, Instruction instructionDto) { - //取货前等待 - JSONObject jo = new JSONObject(); - //动作块id - jo.put("blockId", IdUtil.simpleUUID()); - //目的地名称 - jo.put("location", startPoint + "INGET"); - //执行脚本 - jo.put("operation", "script"); - jo.put("id", startPoint + "INGET"); - //通信脚本,动作前后与现场设备交互的场景 - jo.put("script_name", "userpy/interact.py"); - JSONObject script_args = new JSONObject(); - //更改为现场设备IP及PORT - script_args.put("addr", addr); - JSONObject data = new JSONObject(); - JSONObject reach = new JSONObject(); - reach.put("task_code", instructionCode); - reach.put("address", startPoint + "INGET"); - data.put("reach", reach); - script_args.put("data", data); - script_args.put("protocol", "HTTP"); - jo.put("script_args", script_args); - ja.add(jo); - - - //将货物顶起来,机器识别提升高度 - JSONObject jo1 = new JSONObject(); - jo1.put("blockId", IdUtil.simpleUUID()); - jo1.put("location", startPoint); - jo1.put("operation", "JackLoad"); - inspectInStocckSet(startPoint, jo1); - ja.add(jo1); - JSONObject jo2 = new JSONObject(); - jo2.put("blockId", IdUtil.simpleUUID()); - jo2.put("location", startPoint + "OUTGET"); - jo2.put("operation", "script"); - jo2.put("id", startPoint + "OUTGET"); - jo2.put("script_name", "userpy/interact.py"); - JSONObject script_args2 = new JSONObject(); - script_args2.put("addr", addr); - JSONObject data2 = new JSONObject(); - JSONObject reach2 = new JSONObject(); - reach2.put("task_code", instructionCode); - reach2.put("address", startPoint + "OUTGET"); - data2.put("reach", reach2); - script_args2.put("data", data2); - script_args2.put("protocol", "HTTP"); - jo2.put("script_args", script_args2); - ja.add(jo2); - } - - /** - * 叉车运单动作块 - * - * @param inst - * @param interactionJsonDTO - * @return - */ - private JSONArray createBlocksForklift(Instruction inst, InteractionJsonDTO interactionJsonDTO) { - JSONArray ja = new JSONArray(); - //起点 - Device startDevice = deviceAppService.findDeviceByCode(inst.getStart_device_code()); - String pointCode = inst.getStart_point_code(); - - - //取货前等待 - JSONObject jo = new JSONObject(); - //动作块id - jo.put("blockId", IdUtil.simpleUUID()); - //目的地名称 - jo.put("location", pointCode + "INGET"); - //执行脚本 - jo.put("operation", "script"); - jo.put("id", pointCode + "INGET"); - //通信脚本,动作前后与现场设备交互的场景 - jo.put("script_name", "userpy/interact.py"); - JSONObject script_args = new JSONObject(); - //更改为现场设备IP及PORT - script_args.put("addr", addr); - JSONObject data = new JSONObject(); - JSONObject reach = new JSONObject(); - reach.put("task_code", inst.getInstruction_code()); - reach.put("address", pointCode + "INGET"); - data.put("reach", reach); - script_args.put("data", data); - script_args.put("protocol", "HTTP"); - jo.put("script_args", script_args); - ja.add(jo); - - if (AgvActionTypeEnum.ORDINARY.getCode().equals(inst.getAgv_action_type())) { - // to do - JSONObject jo1 = new JSONObject(); - jo1.put("blockId", IdUtil.simpleUUID()); - jo1.put("location", inst.getStart_point_code() + "INGET"); - jo1.put("binTask", "InForkHeight"); - ja.add(jo1); - - JSONObject jo3 = new JSONObject(); - //动作块id - jo3.put("blockId", IdUtil.simpleUUID()); - //目的地名称 - jo3.put("location", pointCode + "INGET"); - jo3.put("id", pointCode + "INGET"); - //执行脚本 - jo3.put("operation", "expand"); - //通信脚本,动作前后与现场设备交互的场景 - jo3.put("script_name", "Fork-expand.py"); - JSONObject script_args2 = new JSONObject(); - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getExpandWidthLength())) { - script_args2.put("expandWidth", interactionJsonDTO.getExpandWidthLength()); - } - script_args2.put("operation", "expand"); - jo3.put("script_args", script_args2); - ja.add(jo3); - - JSONObject jo4 = new JSONObject(); - //动作块id - jo4.put("blockId", IdUtil.simpleUUID()); - //目的地名称 - jo4.put("location", pointCode + "INGET"); - jo4.put("id", pointCode + "INGET"); - //执行脚本 - jo4.put("operation", "stretch"); - //通信脚本,动作前后与现场设备交互的场景 - jo4.put("script_name", "Fork-expand.py"); - JSONObject script_args1 = new JSONObject(); - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getExpandWidthLength())) { - script_args1.put("stretchLength", interactionJsonDTO.getExpandWidthLength()); - } - script_args1.put("operation", "stretch"); - jo4.put("script_args", script_args1); - ja.add(jo4); - - JSONObject jo6 = new JSONObject(); - jo6.put("blockId", IdUtil.simpleUUID()); - jo6.put("location", inst.getStart_point_code()); - jo6.put("binTask", "Script"); - ja.add(jo6); - - JSONObject jo7 = new JSONObject(); - jo7.put("blockId", IdUtil.simpleUUID()); - jo7.put("location", inst.getStart_point_code()); - jo7.put("binTask", "ForkLoad"); - ja.add(jo7); - - //取货完成 - JSONObject jo2 = new JSONObject(); - jo2.put("blockId", IdUtil.simpleUUID()); - jo2.put("location", pointCode + "OUTGET"); - jo2.put("operation", "script"); - jo2.put("id", pointCode + "OUTGET"); - jo2.put("script_name", "userpy/interact.py"); - JSONObject script_args4 = new JSONObject(); - script_args4.put("addr", addr); - JSONObject data2 = new JSONObject(); - JSONObject reach2 = new JSONObject(); - reach2.put("task_code", inst.getInstruction_code()); - reach2.put("address", pointCode + "OUTGET"); - data2.put("reach", reach2); - script_args4.put("data", data2); - script_args4.put("protocol", "HTTP"); - jo2.put("script_args", script_args4); - ja.add(jo2); - - - //ForkUnload(货叉卸载货物,会将叉车的状态变成非载货中) - JSONObject jo8 = new JSONObject(); - jo8.put("blockId", IdUtil.simpleUUID()); - jo8.put("location", inst.getStart_point_code() + "OUTGET"); - jo8.put("binTask", "OutForkHeight"); - ja.add(jo8); - - JSONObject jo9 = new JSONObject(); - jo9.put("blockId", IdUtil.simpleUUID()); - jo9.put("location", inst.getNext_point_code()); - jo9.put("binTask", "ForkUnload"); - ja.add(jo9); - - JSONObject jo10 = new JSONObject(); - jo10.put("blockId", IdUtil.simpleUUID()); - jo10.put("location", inst.getNext_point_code() + "OUTPUT"); - jo10.put("binTask", "OutForkHeight"); - ja.add(jo10); - - } else if (AgvActionTypeEnum.IN_STOCK.getCode().equals(inst.getAgv_action_type())) { - - } else if (AgvActionTypeEnum.OUT_STOCK.getCode().equals(inst.getAgv_action_type())) { - // to do - JSONObject jo1 = new JSONObject(); - jo1.put("blockId", IdUtil.simpleUUID()); - jo1.put("location", inst.getStart_point_code() + "INGET"); - jo1.put("binTask", "InForkHeight"); - ja.add(jo1); - - JSONObject jo3 = new JSONObject(); - //动作块id - jo3.put("blockId", IdUtil.simpleUUID()); - //目的地名称 - jo3.put("location", pointCode + "INGET"); - jo3.put("id", pointCode + "INGET"); - //执行脚本 - jo3.put("operation", "expand"); - //通信脚本,动作前后与现场设备交互的场景 - jo3.put("script_name", "Fork-expand.py"); - JSONObject script_args2 = new JSONObject(); - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getExpandWidthLength())) { - script_args2.put("expandWidth", interactionJsonDTO.getExpandWidthLength()); - } - script_args2.put("operation", "expand"); - jo3.put("script_args", script_args2); - ja.add(jo3); - - JSONObject jo4 = new JSONObject(); - //动作块id - jo4.put("blockId", IdUtil.simpleUUID()); - //目的地名称 - jo4.put("location", pointCode + "INGET"); - jo4.put("id", pointCode + "INGET"); - //执行脚本 - jo4.put("operation", "stretch"); - //通信脚本,动作前后与现场设备交互的场景 - jo4.put("script_name", "Fork-expand.py"); - JSONObject script_args1 = new JSONObject(); - if (ObjectUtil.isNotEmpty(interactionJsonDTO.getExpandWidthLength())) { - script_args1.put("stretchLength", interactionJsonDTO.getExpandWidthLength()); - } - script_args1.put("operation", "stretch"); - jo4.put("script_args", script_args1); - ja.add(jo4); - - JSONObject jo6 = new JSONObject(); - jo6.put("blockId", IdUtil.simpleUUID()); - jo6.put("location", inst.getStart_point_code()); - jo6.put("binTask", "Script"); - ja.add(jo6); - - JSONObject jo7 = new JSONObject(); - jo7.put("blockId", IdUtil.simpleUUID()); - jo7.put("location", inst.getStart_point_code()); - jo7.put("binTask", "ForkLoad"); - ja.add(jo7); - - //取货完成 - JSONObject jo2 = new JSONObject(); - jo2.put("blockId", IdUtil.simpleUUID()); - jo2.put("location", pointCode + "OUTGET"); - jo2.put("operation", "script"); - jo2.put("id", pointCode + "OUTGET"); - jo2.put("script_name", "userpy/interact.py"); - JSONObject script_args4 = new JSONObject(); - script_args4.put("addr", addr); - JSONObject data2 = new JSONObject(); - JSONObject reach2 = new JSONObject(); - reach2.put("task_code", inst.getInstruction_code()); - reach2.put("address", pointCode + "OUTGET"); - data2.put("reach", reach2); - script_args4.put("data", data2); - script_args4.put("protocol", "HTTP"); - jo2.put("script_args", script_args4); - ja.add(jo2); - - - //ForkUnload(货叉卸载货物,会将叉车的状态变成非载货中) - JSONObject jo8 = new JSONObject(); - jo8.put("blockId", IdUtil.simpleUUID()); - jo8.put("location", inst.getStart_point_code() + "OUTGET"); - jo8.put("binTask", "OutForkHeight"); - ja.add(jo8); - - JSONObject jo9 = new JSONObject(); - jo9.put("blockId", IdUtil.simpleUUID()); - jo9.put("location", inst.getNext_device_code() + "WAIT"); - jo9.put("operation", "script"); - jo9.put("id", inst.getNext_device_code() + "WAIT"); - jo9.put("script_name", "userpy/interact.py"); - JSONObject script_args5 = new JSONObject(); - script_args5.put("addr", addr); - JSONObject data3 = new JSONObject(); - JSONObject reach3 = new JSONObject(); - reach3.put("task_code", inst.getInstruction_code()); - reach3.put("address", inst.getNext_device_code() + "WAIT"); - data3.put("reach", reach3); - script_args5.put("data", data3); - script_args5.put("protocol", "HTTP"); - jo9.put("script_args", script_args5); - ja.add(jo9); - - } else if (AgvActionTypeEnum.IN_STOCK.getCode().equals(inst.getAgv_action_type())) { - - } - - - return ja; - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java deleted file mode 100644 index 499e813..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java +++ /dev/null @@ -1,442 +0,0 @@ -package org.nl.acs.agv.server.impl; - -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.AgvUtil; -import org.nl.acs.agv.server.ZheDaAgvService; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; - -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.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; -import org.springframework.stereotype.Service; - -/** - * @author 20220102CG\noblelift - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class ZheDaAgvServiceImpl implements ZheDaAgvService { - private final ISysParamService paramService; - - /** - * 判断是否追加任务 - */ - private static final String THREE = "3"; - private static final String FOUR = "4"; - private static final String FIVE = "5"; - /** - * 取货的进入前等待和离开等待 - */ - private static final String LOAD = "load"; - /** - * 取货的进入前等待和离开等待 - */ - private static final String ENTRY_REQUIRED = "EntryRequired"; - private static final String ENTRYREQUIRED = "entryRequired"; - private static final String PAUSE_ON_STATION = "PauseOnStation"; - /** - * 等待点等待 - */ - private static final String WAIT = "Wait"; - /** - * 放货的进入前等待和离开等待 - */ - private static final String UNLOAD = "Unload"; - - - @Override - public HttpResponse sendAgvInstToAgv(Instruction inst) throws Exception { - JSONObject jo = new JSONObject(); - String start_point_code = inst.getStart_point_code(); - String next_point_code = inst.getNext_point_code(); - //1楼AGV普通任务 - //2楼AGV普通任务 - //2楼AGV起点追加任务 - //2楼AGV终点追加任务 - String task_type = inst.getInstruction_type(); - jo.put("deadline", AgvUtil.getNextDay(1)); - //判断是否追加任务 - if (THREE.equals(task_type) || FOUR.equals(task_type)) { - jo.put("complete", "false"); - } else { - jo.put("complete", "true"); - } - jo.put("task_code", inst.getInstruction_code()); - //根据任务,下发指令类型 - JSONArray destinations = new JSONArray(); - if (THREE.equals(task_type)) { - destinations.add(destination(start_point_code, "Wait", "5", CommonFinalParam.ONE)); - } else if (FOUR.equals(task_type)) { - destinations.add(destination(start_point_code, "Load", CommonFinalParam.ONE, CommonFinalParam.ONE)); - destinations.add(destination(next_point_code, "Wait", "5", CommonFinalParam.ONE)); - } else { - destinations.add(destination(start_point_code, "Load", CommonFinalParam.ONE, CommonFinalParam.ONE)); - destinations.add(destination(next_point_code, "Unload", CommonFinalParam.ONE, CommonFinalParam.ONE)); - } - - jo.put("destinations", destinations); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvurl2 = paramService.findByCode(AcsConfig.AGVURL2).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - String agvport2 = paramService.findByCode(AcsConfig.AGVPORT2).getValue(); - - - //不同楼层下发不同的agv系统 - if (CommonFinalParam.ONE.equals(task_type)) { - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + inst.getInstruction_code(); - } else { - agvurl = agvurl2 + ":" + agvport2 + "/v1/transportOrders/" + inst.getInstruction_code(); - } - log.info("下发agv任务请求:{}", agvurl); - - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(jo)) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("下发agv任务请求反馈:{}", result); - return result; - } else { - return null; - } - } - - /** - * ZDAGV - * @param type - * @return - */ - - @Override - public HttpResponse queryAgvInstStatus(String type) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = ""; - String agvport = ""; - if (CommonFinalParam.ONE.equals(type)) { - agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - } - if (CommonFinalParam.TWO.equals(type)) { - agvurl = paramService.findByCode(AcsConfig.AGVURL2).getValue(); - agvport = paramService.findByCode(AcsConfig.AGVPORT2).getValue(); - } - - agvurl = agvurl + ":" + agvport + "/v1/transportOrders"; - HttpResponse result = HttpRequest.get(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - System.out.println("查询agv指令数据:" + result.body()); - - return result; - } else { - return null; - } - } - - /** - * 处理AGV指令 ZDAGV - * - * @param jobno - * @param type - * @param address - * @param action - * @param processingVehicle - * @return - */ - - @Override - public synchronized String process(String jobno, String type, String address, String action, String processingVehicle) { - log.info("查询到AGV请求参数,jobno:{},address:{}", jobno + ",address:" + address + ",type:" + type + ",action:" + action); - //释放AGV资源,继续后续动作 - boolean is_feedback = false; - String str = ""; - String backaddress = address; - if (address.indexOf(CommonFinalParam.DOT) > 0) { - str = address.substring(address.indexOf(".") + 1, address.length()); - address = address.substring(0, address.indexOf(".")); - } else if (address.indexOf(CommonFinalParam.HYPHEN_) > 0) { - address = address.substring(0, address.indexOf("-")); - } - InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); - AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); - - Instruction inst = instructionService.findByCodeFromCache(jobno); - TaskDto task = taskService.findByCode(inst.getTask_code()); - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device addressdevice = appService.findDeviceByCode(address); - - //等待点等待 - if (WAIT.equals(action)) { - if (WAIT.equals(type)) { - JSONObject jo = new JSONObject(); - jo.put("task_code", inst.getInstruction_code()); - JSONArray destinations = new JSONArray(); - String inst_type = inst.getInstruction_type(); - //如果任务类型为1,在点位进行等待,则查询当前叠盘位的数量,取当前数量的层数进行追加任务 -// if (CommonFinalParam.ONE.equals(inst_type)) { -// emptyVehicleStackingPositionDeviceDriver = (EmptyVehicleStackingPositionDeviceDriver) addressdevice.getDeviceDriver(); -// int current_num = emptyVehicleStackingPositionDeviceDriver.getNumber(); -// if (current_num > 12) { -// log.info("当前叠盘架:" + jobno + "已放满!"); -// return null; -// } -// String start_point_code = inst.getStart_point_code(); -// String next_point_code = inst.getNext_point_code(); -// start_point_code = start_point_code + "." + (current_num + 1); -// destinations.add(destination(start_point_code, "Load", CommonFinalParam.ONE, CommonFinalParam.ONE)); -// destinations.add(destination(next_point_code, "Unload", CommonFinalParam.ONE, CommonFinalParam.ONE)); -// -// } - - String resp = acsToWmsService.requestTaskAgain(address, task.getExt_task_id(), inst.getVehicle_code()); - JSONObject respjson = JSONObject.parseObject(resp); - - if (StrUtil.equals(inst.getInstruction_type(), THREE)) { - //2楼AGV起点追加任务 - String start_device_code = respjson.getString("device_code"); - String next_device_code = inst.getNext_device_code(); - destinations.add(destination(start_device_code, "load", CommonFinalParam.ONE, CommonFinalParam.ONE)); - destinations.add(destination(next_device_code, "Unload", CommonFinalParam.ONE, CommonFinalParam.ONE)); - - } else if (StrUtil.equals(inst.getInstruction_type(), FOUR)) { - //2楼AGV终点追加任务 - String next_device_code = respjson.getString("device_code"); - destinations.add(destination(next_device_code, "Unload", CommonFinalParam.ONE, CommonFinalParam.ONE)); - } - - jo.put("destinations", destinations); - - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - String url = agvurl + ":" + agvport + "/addDestinations"; - log.info("下发agv任务请求:{}", url); - - HttpResponse result = HttpRequest.post(url) - //表单内容 - .body(String.valueOf(jo)) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("下发agv任务请求反馈:{}", result); - - //对任务进行封口 - JSONObject complete = new JSONObject(); - complete.put("task_code", inst.getInstruction_code()); - - String url2 = agvurl + ":" + agvport + "markComplete"; - log.info("下发agv任务请求:{}", url2); - - HttpResponse result2 = HttpRequest.post(url2) - //表单内容 - .body(String.valueOf(complete)) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("下发agv任务请求反馈:{}", result2); - } - } - - JSONObject requestjo = new JSONObject(); - if (is_feedback) { - requestjo.put("task_code", jobno); - requestjo.put("operation", action); - if (ENTRYREQUIRED.equals(type) || ENTRY_REQUIRED.equals(type)) { - requestjo.put("entryRequired", "true"); - } else { - requestjo.put("pauseOnStation", "true"); - } - log.info("反馈AGV请求数据:{}", requestjo); - System.out.println("back agv:" + requestjo); - - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - if (FOUR.equals(inst.getInstruction_type())) { - agvurl = paramService.findByCode(AcsConfig.AGVURL2).getValue(); - } - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + jobno + "/interact"; - - HttpResponse result = HttpRequest.post(agvurl) - .body(String.valueOf(requestjo)) - //超时,毫秒 - .timeout(20000) - .execute(); - } - return requestjo.toString(); - - } - - - @Override - public HttpResponse markComplete(String code) { - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/v1/" + code + "/markComplete"; - log.info("关闭agv运单序列请求:{}", agvurl); - - HttpResponse result = HttpRequest.post(agvurl) - //.body(String.valueOf(orderjo))//表单内容 - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("关闭agv运单序列请求反馈:{}", result); - - return result; - } else { - return null; - } - - } - - - /** - * 返回一个点位操作子任务 ZDAGV - * - * @param locationName 点位 - * @param operation 点位操作 - * @param propertiesType 子任务类型 - * @param pro 子任务参数 - * 调用demo:destination("sh15p", "Spin", CommonFinalParam.TWO, "3.14") - * demo:destination("cz14", "JackUnload", "3", "") - * @return - */ - - public static JSONObject destination(String locationName, String operation, String propertiesType, String pro) { - //新增业务订单 - JSONObject destinationOrder = new JSONObject(); - //目标工作站 - destinationOrder.put("locationName", locationName); - //机器人在工作站要执行的操作 - destinationOrder.put("operation", operation); - //取货前等待、取货后等待 - if (CommonFinalParam.ONE.equals(propertiesType)) { - - //pro 1 进入离开等待 - if (CommonFinalParam.ONE.equals(pro)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "EntryRequired"); - pro1.put("value", "True"); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "True"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //进入等待 离开不等待 - } else if (CommonFinalParam.TWO.equals(pro)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "EntryRequired"); - pro1.put("value", "True"); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "False"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //进入不等待 离开等待 - } else if (THREE.equals(pro)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "EntryRequired"); - pro1.put("value", "False"); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "True"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //不等待 - } else { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "EntryRequired"); - pro1.put("value", "False"); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - pro2.put("key", "PauseOnStation"); - pro2.put("value", "False"); - properties.add(pro2); - destinationOrder.put("properties", properties); - } - //Spin转动 - } else if (CommonFinalParam.TWO.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //坐标系类型,global_spin_angle为全局坐标系 - pro1.put("key", "global_spin_angle"); - //弧度值,如3.14 - pro1.put("value", pro); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - //固定值 - pro2.put("key", "spin_direction"); - //弧度值,如0 - pro2.put("value", "0"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //JackUnload,Jackload不操作 - } else if (THREE.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //固定值 - pro1.put("key", "recognize"); - //固定值 - pro1.put("value", "false"); - properties.add(pro1); - destinationOrder.put("properties", properties); - } else if (FOUR.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - //坐标系类型,robot_spin_angle为机器人坐标系 - pro1.put("key", "robot_spin_angle"); - //弧度值,如3.14 - pro1.put("value", pro); - properties.add(pro1); - JSONObject pro2 = new JSONObject(); - //固定值 - pro2.put("key", "spin_direction"); - //弧度值,如0 - pro2.put("value", "0"); - properties.add(pro2); - destinationOrder.put("properties", properties); - //在该点进行等待 - } else if (FIVE.equals(propertiesType)) { - JSONArray properties = new JSONArray(); - JSONObject pro1 = new JSONObject(); - pro1.put("key", "Wait"); - pro1.put("value", "True"); - properties.add(pro1); - destinationOrder.put("properties", properties); - } - return destinationOrder; - } - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java deleted file mode 100644 index 3cd3a01..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ /dev/null @@ -1,302 +0,0 @@ -package org.nl.acs.auto.run; - -import cn.hutool.core.util.ObjectUtil; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.agv.ndcone.AgvNdcOneDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.enums.InstructionStatusEnum; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.instruction.service.impl.InstructionServiceImpl; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.opc.DeviceAppService; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.system.service.dict.ISysDictService; -import org.nl.system.service.dict.dao.Dict; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; -import org.nl.system.service.param.impl.SysParamServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.net.Socket; -import java.util.Date; -import java.util.List; - -import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString; -/** - * Demo class - * - * @author zhoujj - * @date 2023/12/06 - */ -@Slf4j -@Component -public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { - - Socket s; - String ip = "192.168.46.225"; - int port = 1234; - static DataOutputStream dos; - static DataInputStream dis; - private int recordTimeOut = 10000; - private Date recordTime; - String[] ERROR = new String[]{ - "货叉尖部传感器触发", "S300传感器触发", "载货状态改变", "急停按钮触发", "触边开关出发", "需要复位", - "停在充电位", "取货失败", "放货失败", "轮子打滑", "没有动作码不能进入站点", "取货时有货", "丢失定位", - "抬叉停止"}; - boolean bConnected = true; - - boolean isReConnect = false; - - @Autowired - ISysParamService paramService; - @Autowired - AutoRunService autoRunService; - @Autowired - LuceneExecuteLogService luceneExecuteLogService; - @Autowired - ISysDictService dictService; - - - public OneNDCSocketConnectionAutoRun() { - this.recordTime = new Date((new Date()).getTime() - (long) this.recordTimeOut); - } - @Override - public String getCode() { - return OneNDCSocketConnectionAutoRun.class.getSimpleName(); - } - @Override - public String getName() { - return "NDC在线连接"; - } - - @Override - public void autoRun() throws IOException { - System.out.println("NDCAgv链接开始"); - ISysParamService ISysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); - InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - NDCAgvService NDCAgvService = SpringContextHolder.getBean(NDCAgvService.class); - DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); - DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - ip = paramService.findByCode(AcsConfig.AGVURL2).getValue(); - port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT2).getValue()); - - - try { - byte[] b = new byte[1024]; - s = new Socket(ip, port); - dos = new DataOutputStream(s.getOutputStream()); - dis = new DataInputStream(s.getInputStream()); - System.out.println("NDCAgv链接成功"); - log.info("NDCAgv链接成功"); - while (bConnected) { - int count = dis.read(b); - - if (count == -1) { - break; - } - - int[] arr = new int[count]; - StringBuffer bs = new StringBuffer(); - - for (int i = 0; i < count; i++) { - int temp = b[i]; - if (temp < 0) { - temp += 256; - } - arr[i] = temp; - StringBuffer bs1 = new StringBuffer("0"); - bs.append(temp < 16 ? bs1.append(Integer.toHexString(temp)) : Integer.toHexString(temp)); - } - - boolean flag = false; - if (arr[8] * 256 + arr[9] == 0x73) { - byte[] data = null; - System.out.println("接收agv上报信息:" + bs); - //执行阶段 - int phase = arr[16] * 256 + arr[17]; - // agv任务号 - int index = arr[12] * 256 + arr[13]; - /** - * 任务号 - */ - int ikey = arr[26] * 256 + arr[27]; - //站点号 - int agvaddr = arr[18] * 256 + arr[19]; - //车号 - int carno = arr[20]; - //充电桩站点号 - int station = arr[25]; - Instruction link_inst = null; - Instruction inst = null; - List insts = null; - boolean link_flag = false; - Device agv_device = null; - if (carno != 0) { - agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno)); - } - if (ikey != 0) { - inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); - if (ObjectUtil.isEmpty(inst)) { - inst = instructionService.findByCode(String.valueOf(ikey)); - } - } - if (!ObjectUtil.isEmpty(link_inst)) { - link_flag = true; - } - log.info("接收agv上报信息:" + bs); - log.info("接收agv上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " Car--" + carno); - Device device = null; - String device_code = null; - - - // - AgvNdcOneDeviceDriver agvNdcOneDeviceDriver; - - //开始任务/上报订单号 - if (phase == 0x01) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - inst.setAgv_jobno(String.valueOf(index)); - inst.setSend_status(CommonFinalParam.ONE); - instructionService.update(inst); - } - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x0A) { - if (!ObjectUtil.isEmpty(inst)) { - instructionService.finish(inst.getInstruction_id()); - } else { - log.warn("指令号:{},未反馈wms任务完成,因为agv上报指令号查询指令为空!"); - } - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); - log.info("指令号:{},已反馈agv任务完成!"); - } - //请求删除任务 - //(需要WCS反馈) - else if (phase == 0x30) { - data = NDCAgvService.sendAgvOneModeInst(0x8F, index, 0, 0, 0, 0, 0); - } - //任务删除确认 - //(需要WCS反馈) - else if (phase == 0xFF) { - - if (!ObjectUtil.isEmpty(inst)) { - if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancelNOSendAgv(inst.getInstruction_id()); - } - } - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); - - }else if (phase == 0x64){ - log.info("AGV车号{}反馈充电任务下发成功,锁定充电桩{}",agvaddr,station); - Dict dict = dictService.getDictByName3("station",String.valueOf(agvaddr),null); - if (ObjectUtil.isNotEmpty(dict)){ - dict.setValue("1"); - dict.setPara2(String.valueOf(agvaddr)); - dict.setPara3("下发成功"); - dictService.updateDetail(dict); - } - //充电成功 - }else if (phase == 0x65){ - log.info("AGV车号{}反馈充电中,充电桩{}",agvaddr,station); - //充电取消上报 - }else if (phase == 0x66){ - log.info("AGV车号{}反馈充电任务已取消,释放充电桩{}",agvaddr,station); - Dict dict = dictService.getDictByName3("station",String.valueOf(agvaddr),null); - if (ObjectUtil.isNotEmpty(dict)){ - dict.setValue("0"); - dict.setPara2(""); - dict.setPara3("充电桩空闲"); - dictService.updateDetail(dict); - } - } else { - //上报异常信息 - //(不需要WCS反馈) - if (phase == 0x67) { - device = deviceAppService.findDeviceByCode(Integer.toString(arr[27])); - } else { - device = deviceAppService.findDeviceByCode(Integer.toString(arr[20])); - } - if (ObjectUtil.isNotEmpty(device)) { - if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { - agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); - agvNdcOneDeviceDriver.processSocket(arr); - } - } - - } - if (!ObjectUtil.isEmpty(data)) { - write(data); - } - - } else { - System.out.println("agv上报不是0073类型动作,不处理"); - } - } - - } catch (Exception e) { - System.out.println("Agv链接异常"); - log.info("Agv链接异常"); - log.error("agv连接出现异常:{}", e); - if (ObjectUtil.isNotEmpty(s)) { - s.close(); - } - System.out.println(e.getMessage()); - e.printStackTrace(); - - } finally { - - - } - - } - - - @Override - public void stop() { - super.after(); - try { - s.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public static void write(byte[] b) { - try { - log.info("下发agv数据:" + Bytes2HexString(b)); - System.out.println("下发agv数据:" + Bytes2HexString(b)); - dos.write(b); - dos.flush(); - } catch (IOException e) { - // TODO Auto-generated catch block - try { - Thread.sleep(5000L); - log.info("再次下发agv数据:" + Bytes2HexString(b)); - System.out.println("再次下发agv数据:" + Bytes2HexString(b)); - dos.write(b); - dos.flush(); - } catch (Exception e1) { - e1.printStackTrace(); - } - - } - } -} - diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java deleted file mode 100644 index fe8c323..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java +++ /dev/null @@ -1,413 +0,0 @@ -package org.nl.acs.auto.run; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.agv.ndcone.AgvNdcOneDeviceDriver; -import org.nl.acs.device_driver.agv.ndctwo.AgvNdcTwoDeviceDriver; -import org.nl.acs.device_driver.autodoor.standard_autodoor.StandardAutodoorDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.instruction.service.impl.InstructionServiceImpl; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.opc.DeviceAppService; -import org.nl.config.SpringContextHolder; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.system.service.dict.ISysDictService; -import org.nl.system.service.dict.dao.Dict; -import org.nl.system.service.param.ISysParamService; -import org.nl.system.service.param.impl.SysParamServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.Map; - -import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString; - - -@Slf4j -@Component -public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { - - Socket socket; - String ip = "192.168.46.225"; - int port = 1234; - static DataOutputStream dos; - static DataInputStream dis; - private int recordTimeOut = 10000; - private Date recordTime; - String[] ERROR = new String[]{ - "货叉尖部传感器触发", "S300传感器触发", "载货状态改变", "急停按钮触发", "触边开关出发", "需要复位", - "停在充电位", "取货失败", "放货失败", "轮子打滑", "没有动作码不能进入站点", "取货时有货", "丢失定位", - "抬叉停止"}; - boolean bConnected = true; - - boolean isReConnect = false; - int i = 1; - boolean requireSucessRegion = false; - boolean requireSucessTake = false; - boolean requireSucessPut = false; - - - @Autowired - ISysParamService paramService; - @Autowired - AutoRunService autoRunService; - @Autowired - LuceneExecuteLogService luceneExecuteLogService; - @Autowired - ISysDictService dictService; - - public TwoNDCSocketConnectionAutoRun() { - this.recordTime = new Date((new Date()).getTime() - (long) this.recordTimeOut); - } - - @Override - public String getCode() { - return TwoNDCSocketConnectionAutoRun.class.getSimpleName(); - } - - @Override - public String getName() { - return "2楼1区域AGV系统"; - } - - @Override - public void autoRun() throws IOException { - ISysParamService paramService = SpringContextHolder.getBean(SysParamServiceImpl.class); - InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); - DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); - DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - - try { - log.info("2楼1区域AGV系统链接开始"); - ip = paramService.findByCode(AcsConfig.AGVURL).getValue(); - port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT).getValue()); -// byte[] b = new byte[1024]; -// s = new Socket(ip, port); -// System.out.println("2楼1区域Agv链接成功"); -// dos = new DataOutputStream(s.getOutputStream()); -// dis = new DataInputStream(s.getInputStream()); - - InetSocketAddress socketAddress = new InetSocketAddress(ip, port); - - byte[] b = new byte[1024]; - socket = new Socket(); - socket.connect(socketAddress, 5 * 1000); - socket.setKeepAlive(true);//长链接 - socket.setSoTimeout(30000);//读取超时时间 - dos = new DataOutputStream(socket.getOutputStream()); - dis = new DataInputStream(socket.getInputStream()); - - while (socket.isConnected()) { - System.out.println("当前socket状态:"+socket.isConnected()); - int count = dis.read(b); -// System.out.println("当前count值:"+count); - if (count == -1) { - log.error("agv连接出现异常:服务端被关闭"); - if (ObjectUtil.isNotEmpty(socket)) { - socket.close(); - } - break; - } - - int[] arr = new int[count]; - StringBuffer bs = new StringBuffer(); - - for (int i = 0; i < count; i++) { - int temp = b[i]; - if (temp < 0) - temp += 256; - arr[i] = temp; - StringBuffer bs1 = new StringBuffer("0"); - bs.append(temp < 16 ? bs1.append(Integer.toHexString(temp)) : Integer.toHexString(temp)); - } - - System.out.println("收到请求参数:" + bs); - - boolean flag = false; - if (arr.length < 10) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("ndc") - .content("接收agv上报信息:" + bs) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - log.info("接收agv上报信息:" + bs); - } else { - if (arr[8] * 256 + arr[9] == 0x73) { - byte[] data = null; - System.out.println("接收agv上报信息:" + bs); - //执行阶段 - int phase = arr[16] * 256 + arr[17]; - // agv任务号 - int index = arr[12] * 256 + arr[13]; - //任务号 - int ikey = arr[26] * 256 + arr[27]; - //站点号 - int agvaddr = arr[18] * 256 + arr[19]; - //车号 - int carno = arr[20]; - //充电桩站点号 - int station = arr[25]; - Instruction inst = null; - if (ikey != 0) { - inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); - } - log.info("接收agv上报信息:" + bs); - log.info("接收agv上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " Car--" + carno); - Device device = null; - String device_code = null; - String old_device_code = null; - String emptyNum = null; - //自动门 - StandardAutodoorDeviceDriver standardAutodoorDeviceDriver; - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, "-")) { - String[] point = old_device_code.split("-"); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, ".")) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - device = deviceAppService.findDeviceByCode(device_code); - } - - AgvNdcTwoDeviceDriver agvNdcTwoDeviceDriver; - AgvNdcOneDeviceDriver agvNdcOneDeviceDriver; - //开始任务 - if (phase == 0x01) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("1"); - inst.setAgv_jobno(String.valueOf(index)); - inst.setSend_status("1"); - instructionService.update(inst); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - } - flag = true; - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x14) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - } else { - String agvcar = inst.getCarno(); - Device agvDevice = deviceAppService.findDeviceByCode(agvcar); - if (agvDevice != null) { - if (agvDevice.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { - agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) agvDevice.getDeviceDriver(); - agvNdcTwoDeviceDriver.setInstruction(null); - } else if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { - agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); - agvNdcOneDeviceDriver.setInstruction(null); - } - } - inst.setInstruction_status("2"); - try { - instructionService.finish(inst); - } catch (Exception e) { - e.printStackTrace(); - } - } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0, 0, 0); - } - //请求删除任务 - //(需要WCS反馈) - else if (phase == 0x30) { -// data = ndcAgvService.sendAgvTwoModeInst(0x8F, index, 0); - data = ndcAgvService.sendAgvTwoModeInst(0x8F, index, 0, 0, 0); - } - //任务删除确认 - //(需要WCS反馈) - else if (phase == 0xFF) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - } else { - instructionService.cancelNOSendAgv(inst.getInstruction_id()); - } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - } else if (phase == 0x50) { - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isNotEmpty(device)) { - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - try { - standardAutodoorDeviceDriver.writing("to_open", "1"); - standardAutodoorDeviceDriver.writing("to_close", "0"); - } catch (Exception e) { - log.info("下发电气信号失败:" + e.getMessage()); - e.printStackTrace(); - } - if (standardAutodoorDeviceDriver.getOpen() == 1 && standardAutodoorDeviceDriver.getToOpen() == 1) { - log.info("下发开门信号值为:{},读取开门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getOpen()); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - } else { - log.info("未下发NDC信号原因: 下发开门信号值为:{},读取开门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getToClose()); - } - } - } else { - log.info(agvaddr + "对应设备号为空!"); - } - - } else if (phase == 0x51) { - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isNotEmpty(device)) { - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - try { - standardAutodoorDeviceDriver.writing("to_close", "1"); - standardAutodoorDeviceDriver.writing("to_open", "0"); - } catch (Exception e) { - log.info("下发电气信号失败:" + e.getMessage()); - e.printStackTrace(); - } - if (standardAutodoorDeviceDriver.getClose() == 1) { - log.info("读取关门信号值为:{}", standardAutodoorDeviceDriver.getClose()); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - } else { - log.info("未下发NDC信号原因: 读取自动门信号值为:{}", standardAutodoorDeviceDriver.getClose()); - } - } - } else { - log.info(device_code + "对应设备号为空!"); - } - } else if (phase == 0x64){ - log.info("AGV车号{}反馈充电任务下发成功,锁定充电桩{}",agvaddr,station); - Dict dict = dictService.getDictByName3("station",String.valueOf(agvaddr),null); - if (ObjectUtil.isNotEmpty(dict)){ - dict.setValue("1"); - dict.setPara2(String.valueOf(agvaddr)); - dict.setPara3("下发成功"); - dictService.updateDetail(dict); - } - //充电成功 - }else if (phase == 0x65){ - log.info("AGV车号{}反馈充电中,充电桩{}",agvaddr,station); - //充电取消上报 - }else if (phase == 0x66){ - log.info("AGV车号{}反馈充电任务已取消,释放充电桩{}",agvaddr,station); - Dict dict = dictService.getDictByName3("station",String.valueOf(agvaddr),null); - if (ObjectUtil.isNotEmpty(dict)){ - dict.setValue("0"); - dict.setPara2(""); - dict.setPara3("充电桩空闲"); - dictService.updateDetail(dict); - } - } - else { - //上报异常信息 - //(不需要WCS反馈) - if (phase == 0x67 || phase == 0x70 || phase == 0x71 || phase == 0x72 || phase == 0x73 || phase == 0x74) { - device = deviceAppService.findDeviceByCode(Integer.toString(arr[18] * 256 + arr[19])); - } else { - device = deviceAppService.findDeviceByCode(Integer.toString(arr[20])); - } - try { - if (ObjectUtil.isNotEmpty(device)) { - if (device.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { - agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) device.getDeviceDriver(); - agvNdcTwoDeviceDriver.processSocket(arr); - } else if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { - agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); - agvNdcOneDeviceDriver.processSocket(arr); - } - } else { - log.info("当前phase:" + phase + "未找到对应设备"); - } - } catch (Exception e) { - log.info("processSocket出错:{},{}", e, e.getMessage()); - e.printStackTrace(); - } - } - if (!ObjectUtil.isEmpty(data)) { - write(data); - } - } else { - System.out.println("agv上报不是0073类型动作,不处理"); - } - } - } - } catch (Exception e) { - System.out.println("TwoAgv链接异常"); - log.info("TwoAgv链接异常"); - log.error("agv连接出现异常:{}", e); - logServer.deviceExecuteLog("NDC2", "", "", "agv异常" + e.getMessage()); - logServer.deviceExecuteLog("NDC2", "", "", "agv异常" + e); - if (ObjectUtil.isNotEmpty(socket)) { - socket.close(); - } - System.out.println(e.getMessage()); - } finally { - closeResources(); - } - - } - - - @Override - public void stop() { - super.after(); - closeResources(); - } - - - private void closeResources() { - try { - if (dis != null) dis.close(); - if (dos != null) dos.close(); - if (socket != null && !socket.isClosed()) socket.close(); - } catch (IOException e) { - log.error("关闭资源时发生错误: {}", e.getMessage(), e); - } - } - - - public static void write(byte[] b) { - try { - log.info("下发agv数据:" + Bytes2HexString(b)); - System.out.println("下发agv数据:" + Bytes2HexString(b)); - dos.write(b); - dos.flush(); - } catch (Exception e) { - // TODO Auto-generated catch block - try { - Thread.sleep(1000); - log.info("再次下发agv数据:" + Bytes2HexString(b)); - System.out.println("再次下发agv数据:" + Bytes2HexString(b)); - dos.write(b); - dos.flush(); - } catch (Exception e1) { - e1.printStackTrace(); - } - - } - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/StandardOrdinarySiteDevice.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/StandardOrdinarySiteDevice.java index fddd360..3f0aabf 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/StandardOrdinarySiteDevice.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/common/StandardOrdinarySiteDevice.java @@ -16,18 +16,6 @@ public class StandardOrdinarySiteDevice extends AbstractDriverService { public JSONObject getDeviceInfo(Device device) { StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); JSONObject jo = new JSONObject(); - jo.put("container", standardOrdinarySiteDeviceDriver.getContainer()); - jo.put("hasGoods", standardOrdinarySiteDeviceDriver.getHasGoods()); - jo.put("isOnline", true); - //点击弹出 - jo.put("is_click", true); - jo.put("device_type", device.getDevice_type()); - jo.put("error", standardOrdinarySiteDeviceDriver.getError()); - jo.put("isError", standardOrdinarySiteDeviceDriver.getIserror()); - jo.put("container", standardOrdinarySiteDeviceDriver.getContainer()); - jo.put("message", standardOrdinarySiteDeviceDriver.getMessage()); - jo.put("material", standardOrdinarySiteDeviceDriver.getMaterial()); - jo.put("batch", standardOrdinarySiteDeviceDriver.getBatch()); return jo; } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java index 9fc61f9..df78e91 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java @@ -26,7 +26,6 @@ import org.nl.acs.device.enums.DeviceType; import org.nl.acs.device.service.mapper.DeviceExtraMapper; import org.nl.acs.device.domain.DeviceRunpoint; import org.nl.acs.device.service.mapper.DeviceRunpointMapper; -import org.nl.acs.device_driver.conveyor.belt_conveyor.BeltConveyorDeviceDriver; import org.nl.acs.route.domain.RouteLine; import org.nl.acs.route.service.mapper.RouteLineMapper; import org.nl.acs.storage_cell.domain.StorageCell; @@ -574,17 +573,6 @@ public class DeviceServiceImpl extends CommonServiceImpl i Device device = appService.findDeviceByCode(device_code); if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - int branchProtocol = standardOrdinarySiteDeviceDriver.getBranchProtocol(); - if (branchProtocol == 2) { - devicejo.put("device_code", device_code); - devicejo.put("branchProtocol", branchProtocol); - devicejo.put("region", region); - devicejo.put("qty", standardOrdinarySiteDeviceDriver.getQty()); - devicejo.put("remark", standardOrdinarySiteDeviceDriver.getRemark()); - devicejo.put("material", standardOrdinarySiteDeviceDriver.getMaterial()); - devicejo.put("status", standardOrdinarySiteDeviceDriver.isRequireSucess()); - deviceInfo.add(devicejo); - } } } } else if (status.equals("3")) { @@ -596,17 +584,6 @@ public class DeviceServiceImpl extends CommonServiceImpl i Device device = appService.findDeviceByCode(device_code); if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - int branchProtocol = standardOrdinarySiteDeviceDriver.getBranchProtocol(); - if (branchProtocol == 3) { - devicejo.put("device_code", device_code); - devicejo.put("branchProtocol", branchProtocol); - devicejo.put("region", region); - devicejo.put("qty", standardOrdinarySiteDeviceDriver.getQty()); - devicejo.put("material", standardOrdinarySiteDeviceDriver.getMaterial()); - devicejo.put("remark", standardOrdinarySiteDeviceDriver.getRemark()); - devicejo.put("status", standardOrdinarySiteDeviceDriver.isRequireSucess()); - deviceInfo.add(devicejo); - } } } } else { @@ -617,16 +594,7 @@ public class DeviceServiceImpl extends CommonServiceImpl i String device_code = obj.getString("device_code"); Device device = appService.findDeviceByCode(device_code); if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - int branchProtocol = standardOrdinarySiteDeviceDriver.getBranchProtocol(); - devicejo.put("device_code", device_code); - devicejo.put("branchProtocol", branchProtocol); - devicejo.put("region", region); - devicejo.put("qty", standardOrdinarySiteDeviceDriver.getQty()); - devicejo.put("material", standardOrdinarySiteDeviceDriver.getMaterial()); - devicejo.put("remark", standardOrdinarySiteDeviceDriver.getRemark()); - devicejo.put("status", standardOrdinarySiteDeviceDriver.isRequireSucess()); - deviceInfo.add(devicejo); + } } } @@ -925,38 +893,7 @@ public class DeviceServiceImpl extends CommonServiceImpl i StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - if (!StrUtil.isEmpty(hasGoodStatus)) { - standardOrdinarySiteDeviceDriver.setHasGoods(Integer.parseInt(hasGoodStatus)); - device.setHas_goods(Integer.parseInt(hasGoodStatus)); - } - if (StrUtil.isNotEmpty(material_type)) { - standardOrdinarySiteDeviceDriver.setMaterial(material_type); - device.setMaterial_type(material_type); - } else { - standardOrdinarySiteDeviceDriver.setMaterial(""); - device.setMaterial_type(""); - } - if (StrUtil.isNotEmpty(quantity)) { - standardOrdinarySiteDeviceDriver.setQty(quantity); - device.setQuantity(quantity); - } else { - standardOrdinarySiteDeviceDriver.setQty(""); - device.setQuantity(""); - } - if (StrUtil.isNotEmpty(remark)) { - standardOrdinarySiteDeviceDriver.setRemark(remark); - device.setRemark(remark); - } else { - standardOrdinarySiteDeviceDriver.setRemark(""); - device.setRemark(""); - } - if (StrUtil.isNotEmpty(batch)) { - standardOrdinarySiteDeviceDriver.setBatch(batch); - device.setBatch(batch); - } else { - standardOrdinarySiteDeviceDriver.setBatch(""); - device.setBatch(""); - } + // WQLObject runpointwo = WQLObject.getWQLObject("acs_device_runpoint"); // JSONObject json = runpointwo.query("device_code ='" + device_code + "'").uniqueResult(0); DeviceRunpoint deviceRunpoint = new LambdaQueryChainWrapper<>(deviceRunpointMapper) @@ -985,9 +922,6 @@ public class DeviceServiceImpl extends CommonServiceImpl i standardInspectSiteDeviceDriver.setBatch(batch); device.setMaterial_type(material_type); device.setBatch(batch); - }else if (device.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { - BeltConveyorDeviceDriver beltConveyorDeviceDriver = (BeltConveyorDeviceDriver) device.getDeviceDriver(); - beltConveyorDeviceDriver.setDeviceStatus(form); } } @@ -1009,9 +943,6 @@ public class DeviceServiceImpl extends CommonServiceImpl i StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; if (startDevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) startDevice.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setBranchProtocol(4); - standardOrdinarySiteDeviceDriver.setMaterial(material_type); - standardOrdinarySiteDeviceDriver.setBatch(batch); } } @@ -1032,7 +963,6 @@ public class DeviceServiceImpl extends CommonServiceImpl i StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; if (startDevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) startDevice.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setHasGoods(0); JSONObject jsonjo = new JSONObject(); jsonjo.put("device_code", start_device_code); jsonjo.put("hasGoodStatus", "0"); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/magic_agv/MagicAgvDefination.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/magic_agv/MagicAgvDefination.java deleted file mode 100644 index 5c2a2c3..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/magic_agv/MagicAgvDefination.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.nl.acs.device_driver.agv.magic_agv; - -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.DeviceDriverDefination; -import org.springframework.stereotype.Service; - -import java.util.LinkedList; -import java.util.List; - -/** - * 普通站点定义 - */ -@Service -public class MagicAgvDefination implements DeviceDriverDefination { - @Override - public String getDriverCode() { - return "magic_agv"; - } - - @Override - public String getDriverName() { - return "标准版-MagicAgv"; - } - - @Override - public String getDriverDescription() { - return "标准版-MagicAgv"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new MagicAgvDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return MagicAgvDeviceDriver.class; - } - - @Override - public List getFitDeviceTypes() { - List types = new LinkedList(); - types.add(DeviceType.agv); - return types; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/magic_agv/MagicAgvDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/magic_agv/MagicAgvDeviceDriver.java deleted file mode 100644 index 2ccc733..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/magic_agv/MagicAgvDeviceDriver.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.nl.acs.device_driver.agv.magic_agv; - -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.DeviceDriverDefination; -import org.nl.acs.device_driver.driver.AbstractDeviceDriver; -import org.springframework.stereotype.Service; - -/** - * 普通站点 - */ -@Slf4j -@Service -public class MagicAgvDeviceDriver extends AbstractDeviceDriver implements DeviceDriver { - @Override - public Device getDevice() { - return null; - } - - @Override - public DeviceDriverDefination getDriverDefination() { - return null; - } - - @Override - public DeviceDriver setDriverDefination(DeviceDriverDefination var1) { - return null; - } - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndcone/AgvNdcOneDefination.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndcone/AgvNdcOneDefination.java deleted file mode 100644 index 68913dc..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndcone/AgvNdcOneDefination.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.nl.acs.device_driver.agv.ndcone; - -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.DeviceDriverDefination; -import org.springframework.stereotype.Service; - -import java.util.LinkedList; -import java.util.List; - -/** - * NDC单工位AGV - */ -@Service -public class AgvNdcOneDefination implements DeviceDriverDefination { - @Override - public String getDriverCode() { - return "agv_ndc_one"; - } - - @Override - public String getDriverName() { - return "NDC1楼AGV"; - } - - @Override - public String getDriverDescription() { - return "NDC1楼AGV"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new AgvNdcOneDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return AgvNdcOneDeviceDriver.class; - } - - @Override - public List getFitDeviceTypes() { - List types = new LinkedList(); - types.add(DeviceType.agv); - return types; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndcone/AgvNdcOneDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndcone/AgvNdcOneDeviceDriver.java deleted file mode 100644 index 5d392a5..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ /dev/null @@ -1,498 +0,0 @@ -package org.nl.acs.device_driver.agv.ndcone; - -import cn.hutool.core.util.ObjectUtil; -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.agv.server.NDCAgvService; -import org.nl.acs.auto.run.OneNDCSocketConnectionAutoRun; -import org.nl.acs.common.base.CommonFinalParam; -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.FeedLmsRealFailed; -import org.nl.acs.device_driver.agv.utils.OneAgvPhase; -import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.instruction.service.impl.InstructionServiceImpl; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; - - -import java.util.List; - -/** - * NDC单工位AGV - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - NDCAgvService NDCAgvService = SpringContextHolder.getBean(NDCAgvService.class); - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); - DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); -// DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); - - OneAgvPhase oneAgvPhase = new OneAgvPhase(); - - int agvaddr = 0; - int agvaddr_copy = 0; - int weight = 0; - String device_code = ""; - - String message = null; - - int phase = 0; - String error_type = "agv_error_type"; - String error_code = "0"; - /** - * x坐标 - */ - int x = 0; - /** - * y坐标 - */ - int y = 0; - /** - * 角度 - */ - int angle = 0; - /** - * 电量 - */ - int electric_qty = 0; - /** - * 三色灯状态 - */ - int status = 0; - /** - * 三色灯状态 - */ - int last_status = 0; - int error = 0; - int last_error = 0; - String error_message = ""; - - private synchronized void setErrorInfo(int error, String error_code, String error_message) { - this.error = error; - this.error_code = error_code; - this.error_message = error_message; - } - - private Instruction instruction; - - int mode = 2; - - public synchronized void processSocket(int[] arr) throws Exception { - device_code = this.getDeviceCode(); - byte[] data = null; - phase = arr[16] * 256 + arr[17]; - // agv任务号 - int index = arr[12] * 256 + arr[13]; - /** - * 任务号 - */ - int ikey = arr[26] * 256 + arr[27]; - //站点号 - agvaddr = arr[18] * 256 + arr[19]; - //车号 - int carno = arr[20]; - log.info(this.device_code, "", "", "接收agv上报信息:" + "phase--" + phase + " index--" + index + " 指令号--" + ikey + " 站点号--" + agvaddr + " 车号--" + carno); - Instruction link_inst = null; - List insts = null; - Instruction inst = null; - boolean link_flag = false; - Device agv_device = null; - if (carno != 0) { - agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno)); - } - if (ikey != 0) { - if (phase != 0x67 && phase != 0x71 && phase != 0x72 && phase != 0x73 && phase != 0x74 && phase != 0x75) { - inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); - this.instruction = inst; - } -// if (ObjectUtil.isEmpty(inst)){ -// inst = instructionService.findByCode(String.valueOf(ikey)); -// } - } - if (!ObjectUtil.isEmpty(link_inst)) { - link_flag = true; - } - - Device device = null; - String old_device_code = null; - String emptyNum = null; - String device_code = null; - -// if (phase == 0x67) { -// //故障信息 -// if (arr[18] * 256 + arr[19] == 0) { -// -// } -// data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); -// } - - //普通站点 - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - - //分配 车id - //(不需要WCS反馈) - if (phase == 0x02) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈车号:" + carno + ",指令号:" + ikey); - - //到达取货点 - //(需要WCS反馈) - } else if (phase == 0x03) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - logServer.deviceExecuteLog(this.device_code, "", "", "agv地址参数有误,phase:" + phase); - return; - } - CommonFinalParam commonFinalParam = new CommonFinalParam(); - device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - logServer.deviceExecuteLog(this.device_code, "", "", agvaddr + "对应设备号为空"); - return; - } - //校验agv上报站点编号与指令起始点相同 - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到编号{}对应的指令", ikey); - logServer.deviceExecuteLog(this.device_code, "", "", "未找到关联编号对应的指令" + ikey); - return; - } - - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); - } - - - - //取货完毕 - //(需要WCS反馈) - } else if (phase == 0x05) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - logServer.deviceExecuteLog(this.device_code, "", "", "agv地址参数有误,phase:" + phase); - return; - } - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - CommonFinalParam commonFinalParam = new CommonFinalParam(); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - device = deviceAppService.findDeviceByCode(device_code); - - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - logServer.deviceExecuteLog(this.device_code, "", "", "对应设备号为空" + device_code); - return; - } - //校验agv上报站点编号与指令起始点相同 - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到关联编号{}对应的指令", ikey); - logServer.deviceExecuteLog(this.device_code, "", "", "未找到关联编号对应的指令" + ikey); - return; - } - - if (StrUtil.equals(inst.getStart_device_code(), device_code)) { - - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); - } - - - - } - if (ObjectUtil.isNotEmpty(data)) { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + Bytes2HexString(data)); - } - //到达放货点 - //(需要WCS反馈) - } else if (phase == 0x07) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - logServer.deviceExecuteLog(this.device_code, "", "", "agv地址参数有误,phase:" + phase); - return; - } - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - CommonFinalParam commonFinalParam = new CommonFinalParam(); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - //校验agv上报站点编号与指令起始点相同 - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到关联编号{}对应的指令", ikey); - return; - } - if (StrUtil.equals(inst.getNext_device_code(), device_code)) { - - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - } - - } - //放货完毕 - //(需要WCS反馈) - } else if (phase == 0x09) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - logServer.deviceExecuteLog(this.device_code, "", "", "agv地址参数有误,phase:" + phase); - return; - } - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - CommonFinalParam commonFinalParam = new CommonFinalParam(); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - //校验agv上报站点编号与指令起始点相同 - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到编号{}对应的指令", ikey); - return; - } - if (StrUtil.equals(inst.getNext_device_code(), device_code)) { - - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - } - - } - } - //到达位置点 - //(需要WCS反馈) - //param,agv货位id待定 - else if (phase == 0x64) { - //1、根据货位id找到对应三工位设备,赋给agv属性地址对应的满料位设备 - agvaddr = arr[18] * 256 + arr[19]; - agvaddr_copy = agvaddr; - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - //进入交通灯区域 - } else if (phase == 0x50) { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - //离开交通灯区域 - } else if (phase == 0x51) { - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - //agv异常 - } else if (phase == 0x67) { -// if (ikey == 0) { -// this.setErrorInfo(ikey, "0", "正常"); -// } else { -// Map error = ErrorUtil.getAgvErrorMsg(ikey); -// String code = error.get("code"); -// String info = error.get("info"); -// this.setErrorInfo(ikey, code, info); -// } - - if (error != last_error) { -// DeviceErrorLogDto dto = new DeviceErrorLogDto(); -// dto.setDevice_code(this.getDevice().getDevice_code()); -// dto.setError_code(String.valueOf(error_code)); -// dto.setError_info(error_message); -// deviceErrorLogService.create(dto); - - JSONObject param = new JSONObject(); - param.put("device_code", this.device_code); - param.put("error", error); - param.put("error_msg", error == 0 ? "" : this.getError_message()); - param.put("device_name", this.getDevice().getDevice_name()); - param.put("device_type", "4"); - param.put("product_area", paramService.findByCode("productArea").getValue()); -// acsToWmsService.sendDeviceStatus(param); - } - data = NDCAgvService.sendAgvOneModeInst(phase, index, 0); - last_error = error; - } else if (phase == 0x70) { - //x坐标 - x = ikey; - } else if (phase == 0x71) { - //y坐标 - y = ikey; - } else if (phase == 0x72) { - //车辆角度 - angle = ikey; - } else if (phase == 0x73) { - //agv电量 - electric_qty = ikey; - } else if (phase == 0x74) { - //三色灯状态 - status = ikey; - - if (status != last_status && status != 6 && status != 7) { - boolean flag = true; - JSONObject param = new JSONObject(); - param.put("device_code", this.device_code); - if (status == 1) { - param.put("mode", 0); - } else if (status == 2) { - param.put("mode", 3); - } else if ("345".contains(String.valueOf(status))) { - param.put("mode", 2); - } else { - flag = false; - } - - if (flag) { -// param.put("device_name", this.getDevice().getDevice_name()); -// param.put("device_type", "4"); -// param.put("product_area", paramService.findByCode("productArea").getValue()); -// acsToWmsService.sendDeviceStatus(param); - } - } - - last_status = status; - } - if (!ObjectUtil.isEmpty(data)) { - phase = 0; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + Bytes2HexString(data)); - OneNDCSocketConnectionAutoRun.write(data); - } - - } - - public static String Bytes2HexString(byte[] b) { - String ret = ""; - for (int i = 0; i < b.length; i++) { - String hex = Integer.toHexString(b[i] & 0xFF); - if (hex.length() == 1) { - hex = '0' + hex; - } - ret += hex.toUpperCase(); - } - return ret; - } - - - @Override - public JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - //agv编码 - jo.put("car_no", this.getDevice().getDevice_code()); - //agv名称 - jo.put("device_name", this.getDevice().getDevice_name()); - //x坐标 - jo.put("x", this.getX()); - //y坐标 - jo.put("y", this.getY()); - //角度 - jo.put("angle", this.getAngle()); - jo.put("phase", phase); - jo.put("phase_name", oneAgvPhase.getPhaseName(phase)); - //电量 - jo.put("electricity", this.getElectric_qty()); - String status_name = this.status == 1 ? "关机" : this.status == 2 ? "工作中" : this.status == 3 ? "交通管制" : this.status == 4 ? "任务等待" : this.status == 5 ? "充电中" : this.status == 6 ? "故障中" : this.status == 7 ? "电量低" : "正常"; - //agv状态 - jo.put("status_name", status_name); - /** - * 任务号 - */ - jo.put("task_code", ObjectUtil.isEmpty(instruction) ? "0" : instruction.getTask_code()); - //异常 - jo.put("fault", this.getError_message()); - jo.put("message",message); - return jo; - } - - - - - @Override - public void setDeviceStatus(JSONObject data) { - - } - - @Override - public JSONObject feedLmsRealFailedInfo() { - JSONObject jo = new JSONObject(); - jo.put("device_code", this.getDevice().getDevice_code()); - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("fault_code", error_code); - jo.put("fault_info", error_message); - jo.put("fault_type", error_type); - return jo; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java deleted file mode 100644 index 494b51b..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ /dev/null @@ -1,679 +0,0 @@ -package org.nl.acs.device_driver.agv.ndctwo; - - -import cn.hutool.core.util.ObjectUtil; -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.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.auto.run.TwoNDCSocketConnectionAutoRun; -import org.nl.acs.common.base.CommonFinalParam; -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.FeedLmsRealFailed; -import org.nl.acs.device_driver.agv.utils.TwoAgvPhase; -import org.nl.acs.device_driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; -import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.history.ErrorUtil; -import org.nl.acs.history.service.DeviceErrorLogService; -import org.nl.acs.history.service.dto.DeviceErrorLogDto; -import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.instruction.service.impl.InstructionServiceImpl; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.acs.task.service.impl.TaskServiceImpl; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.config.thread.ThreadPoolExecutorUtil; -import org.nl.system.service.dict.ISysDictService; -import org.nl.system.service.dict.dao.Dict; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; - -import java.time.LocalTime; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.concurrent.ThreadPoolExecutor; - - -/** - * NDC双工位AGV - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - - ISysParamService ISysParamService = SpringContextHolder.getBean(ISysParamService.class); - InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); - TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); - DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); - DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); - LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - TwoAgvPhase twoAgvPhase = new TwoAgvPhase(); - ISysDictService dictService = SpringContextHolder.getBean(ISysDictService.class); - - String error_code = "0"; - int agvaddr = 0; - int agvaddr_copy = 0; - int weight = 0; - int agv_power = 0; - String device_code = ""; - int phase = 0; - int region = 0; - int error = 0; - int last_error = 0; - private Instruction instruction; - String message = null; - int x = 0; //x坐标 - int y = 0; //y坐标 - int angle = 0; //角度 - int electric_qty = 0; //电量 - int status = 0; //三色灯状态 - int last_status = 0; //三色灯状态 - String error_message = ""; - String error_type = "agv_error_type"; - Boolean isonline = true; - Boolean iserror = false; - boolean isCharge = false; - - private synchronized void setErrorInfo(int error, String error_code, String error_message) { - this.error = error; - this.error_code = error_code; - this.error_message = error_message; - } - - public synchronized void processSocket(int[] arr) throws Exception { - device_code = this.getDeviceCode(); - byte[] data = null; - phase = arr[16] * 256 + arr[17]; - // agv任务号 - int index = arr[12] * 256 + arr[13]; - /** - * 任务号 - */ - int ikey = arr[26] * 256 + arr[27]; - //站点号 - agvaddr = arr[18] * 256 + arr[19]; - //车号 - int carno = arr[20]; - Instruction inst = null; - Device agv_device = null; - if (carno != 0) { - agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno)); - } - TaskDto task = null; - if (ikey != 0) { - if (phase != 0x67 && phase != 0x71 && phase != 0x72 && phase != 0x73 && phase != 0x74 && phase != 0x75) { - inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); - this.instruction = inst; - } - if (ObjectUtil.isNotEmpty(inst)) { -// log.info("该指令号未找到对应指令:" + ikey); -// message = "该指令号未找到对应指令:" + ikey; -// logServer.deviceExecuteLog(this.device_code, "", "", "该指令号未找到对应指令:" + ikey); -// return; - task = taskService.findByTaskCode(inst.getTask_code()); - } else { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("指令号为空!") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - - - Device device = null; - String old_device_code = null; - String emptyNum = null; - String device_code = null; - - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - CommonFinalParam commonFinalParam = new CommonFinalParam(); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - device = deviceAppService.findDeviceByCode(device_code); - - //普通站点 - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - //标准-光电检测 - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - - - if (phase == 0x02) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - //到达取货点 - //(Itype=1/2/3,需要WCS反馈Phase) - else if (phase == 0x03) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - logServer.deviceExecuteLog(this.device_code, "", "", "agv地址参数有误,phase:" + phase); - return; - } - device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - CommonFinalParam commonFinalParam = new CommonFinalParam(); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content(agvaddr + "对应设备号为空") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - if (ObjectUtil.isEmpty(inst.getCarno())) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - standardOrdinarySiteDeviceDriver.setOption(0); - } else { - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - - // 取货完毕 - //(Itype=1/2/3,需要WCS反馈Phase) - else if (phase == 0x05) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agv地址参数有误,phase:" + phase) - .build(); - logDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - CommonFinalParam commonFinalParam = new CommonFinalParam(); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - device = deviceAppService.findDeviceByCode(device_code); - - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("对应设备号为空" + device_code) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - if (ObjectUtil.isEmpty(inst.getCarno())) { - inst.setCarno(String.valueOf(carno)); - instructionService.update(inst); - } - - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); - } else { - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - - // 到达放货点 - //(Itype=1/2/3,需要WCS反馈) - else if (phase == 0x07) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agv地址参数有误,phase:" + phase) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (agvaddr != 0) { - CommonFinalParam commonFinalParam = new CommonFinalParam(); - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - standardOrdinarySiteDeviceDriver.setOption(0); - - } else { - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - - - //放货完成 - //(Itype=1/2/3,需要WCS反馈) - else if (phase == 0x09) { - if (agvaddr == 0) { - agvaddr = agvaddr_copy; - } - if (agvaddr < 1) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agv地址参数有误,phase:" + phase) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - return; - } - if (agvaddr != 0) { - CommonFinalParam commonFinalParam = new CommonFinalParam(); - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, commonFinalParam.getBARRE())) { - String[] point = old_device_code.split(commonFinalParam.getBARRE()); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, commonFinalParam.getPOINT())) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - } - - device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); - return; - } - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - return; - } - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - standardOrdinarySiteDeviceDriver.setAgvphase(phase); - standardOrdinarySiteDeviceDriver.setIndex(index); - standardOrdinarySiteDeviceDriver.setInst(inst); - } else { - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - } - //上传AGV电量 - else if (phase == 0x70) { - //x坐标 - x = ikey; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "x坐标:" + x) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (phase == 0x71) { - //y坐标 - y = ikey; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "y坐标:" + y) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (phase == 0x72) { - //车辆角度 - angle = ikey; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "车辆角度:" + angle) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else if (phase == 0x73) { - log.info("接收agv上报信息,phase == 0x73:" + phase); - //agv电量 - electric_qty = ikey; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "agv电量:" + electric_qty) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - //自动充电的车号 - String is_atuo_car = ISysParamService.findByCode(AcsConfig.IS_ATUO_CAR).getValue(); - //当前上报的车号 - String now_car = String.valueOf(this.agvaddr); - //如果配置的车号是诺宝车号 - if(now_car.equals(is_atuo_car)){ - //是否开启自动充电 - String is_atuo_electric = ISysParamService.findByCode(AcsConfig.IS_ATUO_ELECTRIC).getValue(); - log.info("接收agv上报信息,is_atuo_electric:" + is_atuo_electric); - if("1".equals(is_atuo_electric)){ - String electric_begin = ISysParamService.findByCode(AcsConfig.ELECTRIC_BEGIN).getValue(); - String[] begins = electric_begin.split(":"); - String electric_end = ISysParamService.findByCode(AcsConfig.ELECTRIC_END).getValue(); - String[] ends = electric_end.split(":"); - // 定义时间段 - LocalTime startTime = LocalTime.of(Integer.parseInt(begins[0]), Integer.parseInt(begins[1])); // 上午8点 - LocalTime endTime = LocalTime.of(Integer.parseInt(ends[0]), Integer.parseInt(ends[1])); // 晚上22点 - // 获取当前时间 - LocalTime now = LocalTime.now(); - // 判断当前时间是否在时间段内 - boolean isInRange = !now.isBefore(startTime) && !now.isAfter(endTime); - int electric = 0 ; - //早上8-22点 - if(isInRange){ - electric = Integer.parseInt(ISysParamService.findByCode(AcsConfig.ELECTRIC).getValue()); - }else{ - electric = Integer.parseInt(ISysParamService.findByCode(AcsConfig.ELECTRIC2).getValue()); - } - if (electric_qty>0 && electric_qty < electric) { - log.info("当前车辆{}电量为{}低于{},开始判断是否需要充电!", this.agvaddr, electric_qty,electric); - //判断是否已下发充电任务 - Dict dict1 = dictService.getDictByName3("station",String.valueOf(this.agvaddr),null); - if(ObjectUtil.isNotEmpty(dict1)){ - log.info("当前车辆{}已分配充电桩{},退出后续判断",this.agvaddr,dict1.getPara1()); - }else{ - //未下发,判断是否有空闲充电桩 - Dict dict = dictService.getDictByName2("station"); - if(ObjectUtil.isNotEmpty(dict)){ - ndcAgvService.charge(String.valueOf(this.agvaddr)); - isCharge =true; - }else{ - log.info("当前车辆{}电量为{}低于{},但无空闲充电桩!", this.agvaddr, electric_qty,electric); - } - } - } - } - } - } else if (phase == 0x74) { - //三色灯状态 - status = ikey; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(this.getDeviceCode()) - .content("agvphase:" + phase + "三色灯状态:" + status) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - - if (status != last_status && status != 6 && status != 7) { - boolean flag = true; - JSONObject param = new JSONObject(); - param.put("device_code", this.device_code); - if (status == 1) { - param.put("mode", 0); - } else if (status == 2) { - param.put("mode", 3); - } else if ("345".contains(String.valueOf(status))) { - param.put("mode", 2); - } else { - flag = false; - } - - if (flag) { - param.put("device_name", this.getDevice().getDevice_name()); - param.put("device_type", "4"); - param.put("product_area", ISysParamService.findByCode("productArea").getValue()); - acsToWmsService.sendDeviceStatus(param); - } - } - - last_status = status; - } //进入区域(phase值) - else if (phase == 0x50) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "自动门开门") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - //离开区域(phase值) - else if (phase == 0x51) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "自动门关门") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - //上报异常信息 - //(不需要WCS反馈) - else if (phase == 0x67) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "异常信息:" + error) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - //故障信息 - if (ikey == 0) { - this.setErrorInfo(ikey, "0", "正常"); - } else { - Map error = ErrorUtil.getAgvErrorMsg(ikey); - String code = error.get("code"); - String info = error.get("info"); - this.setErrorInfo(ikey, code, info); - } - if (error != last_error) { - DeviceErrorLogDto dto = new DeviceErrorLogDto(); - dto.setDevice_code(this.getDevice().getDevice_code()); - dto.setError_code(String.valueOf(error_code)); - dto.setError_info(error_message); - deviceErrorLogService.create(dto); - - JSONObject param = new JSONObject(); - param.put("device_code", this.device_code); - param.put("error", error); - param.put("error_msg", error == 0 ? "" : this.getError_message()); - param.put("device_name", this.getDevice().getDevice_name()); - param.put("device_type", "4"); - param.put("product_area", ISysParamService.findByCode("productArea").getValue()); - acsToWmsService.sendDeviceStatus(param); - } - last_error = error; - } - if (!ObjectUtil.isEmpty(data)) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("agvphase:" + phase + "反馈:" + data) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); -// if (StrUtil.equals(inst.getAgv_system_type(), "2")) { -// TwoNDCSocketConnectionAutoRun.write(data); -// } -// else if (StrUtil.equals(inst.getAgv_system_type(), "3")) { -// TwoNDC2SocketConnectionAutoRun.write(data); -// } - if (StrUtil.equals(inst.getAgv_system_type(), "2")) { - TwoNDCSocketConnectionAutoRun.write(data); - } - } - - } - - @Override - public JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - //agv编码 - jo.put("car_no", this.getDevice().getDevice_code()); - //agv名称 - jo.put("device_name", this.getDevice().getDevice_name()); - //x坐标 - jo.put("x", this.getX()); - //y坐标 - jo.put("y", this.getY()); - //角度 - jo.put("angle", this.getAngle()); - jo.put("phase", phase); - jo.put("phase_name", twoAgvPhase.getPhaseName(phase)); - //电量 - jo.put("electricity", this.getElectric_qty()); - String status_name = this.status == 1 ? "关机" : this.status == 2 ? "工作中" : this.status == 3 ? "交通管制" : this.status == 4 ? "任务等待" : this.status == 5 ? "充电中" : this.status == 6 ? "故障中" : this.status == 7 ? "电量低" : "正常"; - //agv状态 - jo.put("status_name", status_name); - //任务号 - jo.put("task_code", ObjectUtil.isEmpty(instruction) ? "0" : instruction.getTask_code()); - //异常 - jo.put("fault", this.getError_message()); - jo.put("message", message); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - - } - - @Override - public JSONObject feedLmsRealFailedInfo() { - JSONObject jo = new JSONObject(); - jo.put("device_code", this.getDevice().getDevice_code()); - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("fault_code", String.valueOf(error)); - jo.put("fault_info", error == 0 ? "正常" : error_message); - jo.put("fault_type", error_type); - return jo; - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/IAgv.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/IAgv.java deleted file mode 100644 index 87efc38..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/IAgv.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.nl.acs.device_driver.agv.utils; - -public interface IAgv { - /** - * 获取phase名称 - * @param phase - * @return - */ - String getPhaseName(Integer phase); -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/OneAgvPhase.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/OneAgvPhase.java deleted file mode 100644 index d611d3f..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/OneAgvPhase.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.nl.acs.device_driver.agv.utils; - -import org.springframework.stereotype.Service; - -@Service -public class OneAgvPhase implements IAgv { - @Override - public String getPhaseName(Integer phase) { - if (phase == 0x01) { - return "开始任务/上报订单号"; - } else if (phase == 0x02) { - return "分配车id"; - } else if (phase == 0x03) { - return "到达取货点"; - } else if (phase == 0x05) { - return "取货完毕"; - } else if (phase == 0x07) { - return "到达放货点"; - } else if (phase == 0x09) { - return "放货完毕"; - } else if (phase == 0x0A) { - return "任务完毕"; - } else if (phase == 0x30) { - return "请求删除任务"; - } else if (phase == 0xFF) { - return "任务删除确认"; - } else if (phase == 0x64) { - return "到达位置点"; - } else if (phase == 0x65) { - return "称重就绪"; - } - return null; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/TwoAgvPhase.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/TwoAgvPhase.java deleted file mode 100644 index 0050427..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/utils/TwoAgvPhase.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.nl.acs.device_driver.agv.utils; - -import org.springframework.stereotype.Service; - -@Service -public class TwoAgvPhase implements IAgv { - @Override - public String getPhaseName(Integer phase) { - if (phase == 0x01) { - return "开始任务/上报订单号"; - } else if (phase == 0x02) { - return "分配车id"; - } else if (phase == 0x03) { - return "到达取货点1"; - } else if (phase == 0x05) { - return "取货点1取货完毕"; - } else if (phase == 0x07) { - return "到达取货点2"; - } else if (phase == 0x09) { - return "取货点2取货完毕"; - } else if (phase == 0x0A) { - return "自动缓存线--到达送满框1"; - } else if (phase == 0x0B) { - return "到达倒料点1"; - } else if (phase == 0x0C) { - return "自动缓存线--送满框完毕1"; - } else if (phase == 0x0D) { - return "倒料点1倒料完毕"; - } else if (phase == 0x0E) { - return "自动缓存线--到达取空框1"; - } else if (phase == 0x0F) { - return "到达倒料点2"; - } else if (phase == 0x11) { - return "倒料点2倒料完毕"; - } else if (phase == 0x13) { - return "到达送箱点1"; - } else if (phase == 0x15) { - return "送箱点1送箱完毕"; - } else if (phase == 0x17) { - return "到达送箱点2"; - } else if (phase == 0x19) { - return "送箱完毕/送空框完毕2"; - } else if (phase == 0x30) { - return "请求删除任务"; - } else if (phase == 0xFF) { - return "任务删除确认"; - } else if (phase == 0x64) { - return "取货完毕/取满框完毕1/点对点取货完毕"; - } else if (phase == 0x65) { - return "称重就绪"; - } else if (phase == 0x1A) { - return "任务完毕"; - } - return null; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/ItemProtocol.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/ItemProtocol.java deleted file mode 100644 index 18fe2fc..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/ItemProtocol.java +++ /dev/null @@ -1,391 +0,0 @@ -package org.nl.acs.device_driver.agv.xg_agv; - -import cn.hutool.core.util.ObjectUtil; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device.device_driver.standard_inspect.ItemDto; - -import java.util.ArrayList; -import java.util.List; - -@Slf4j -public class ItemProtocol { - public static String is_charging = "is_charging"; - public static String stop = "stop"; - public static String DI0 = "DI0"; - public static String DI1 = "DI1"; - public static String DI2 = "DI2"; - public static String DI3 = "DI3"; - public static String DI4 = "DI4"; - public static String DI11 = "DI12"; - public static String DI12 = "DI12"; - public static String DO0 = "DO0"; - public static String DO1 = "DO1"; - public static String DO2 = "DO2"; - public static String x = "x"; - public static String y = "y"; - public static String angle = "angle"; - /** - * 站点的 id 号, 0 表示无导航站点 - */ - public static String navigation_address = "navigation_address"; - /** - * 0 = 定位失败, 1 = 定位正确, 2 = 正在重定位, 3 = 定位完成;机器人刚启动后,定位状态为 2, - * 当定位状态变为 3 时,可以用 [0x]00003 地址位确认定位正确,确认后定位状态将变为 1 - */ - public static String positioning_status = "positioning_status"; - - - /** - * 0 = 无, 1 = 等待执行导航, 2 = 正在执行导航, 3 = 导航暂停, 4 = 到达, 5 = 失败, 6 = 取消, 7 = 超时 - */ - public static String navigation_status = "navigation_status"; - - - /** - * 0 = 没有导航, 1 = 自由导航到任意点, 2 = 自由导航到站点, 3 = 路径导航到站点, 7 = 平动转动, 100 = 其他 - */ - public static String navigation_type = "navigation_type"; - /** - * 范围为 0 ~ 1 - */ - public static String electricity = "electricity"; - public static String address = "address"; - public static String next_address = "next_address"; - public static String home_relocation = "home_relocation"; - /** - * 确认定位正确 - */ - public static String locate_correct = "locate_correct"; - public static String pause_navigation = "pause_navigation"; - public static String continue_navigation = "continue_navigation"; - public static String cancle_navigation = "cancle_navigation"; - /** - * 滚筒运行状态 - */ - public static String drum_run_status = "drum_run_status"; - - - public static String to_home_relocation = "to_home_relocation"; - /** - * 确认定位正确 - */ - public static String to_locate_correct = "to_locate_correct"; - public static String to_pause_navigation = "to_pause_navigation"; - public static String to_continue_navigation = "to_continue_navigation"; - public static String to_cancle_navigation = "to_cancle_navigation"; - public static String to_DO0_height = "to_DO0_height"; - public static String to_DO0_low = "to_DO0_low"; - public static String to_DO1_height = "to_DO1_height"; - public static String to_DO1_low = "to_DO1_low"; - public static String to_DO2_low = "to_DO2_low"; - public static String to_DO8_low = "to_DO8_low"; - public static String to_DO9_low = "to_DO9_low"; - - public static String to_address = "to_address"; - public static String to_clear_error = "to_clear_error"; - /** - * 虚拟高电平写 - */ - public static String to_di_height = "to_di_height"; - /** - * 虚拟低电平写 - */ - public static String to_di_low = "to_di_low"; - /** - * 下发任务链 - */ - public static String to_line = "to_line"; - - - public int getIs_charging() { - return this.getOpcIntegerValue(is_charging); - } - - public int getStop() { - return this.getOpcIntegerValue(stop); - } - - public int getDI0() { - return this.getOpcIntegerValue(DI0); - } - - public int getDI1() { - return this.getOpcIntegerValue(DI1); - } - - public int getDI2() { - return this.getOpcIntegerValue(DI2); - } - - public int getDI3() { - return this.getOpcIntegerValue(DI3); - } - - public int getDI4() { - return this.getOpcIntegerValue(DI4); - - } - - public int getDI11() { - return this.getOpcIntegerValue(DI11); - - } - - public int getDI12() { - return this.getOpcIntegerValue(DI12); - - } - - public int getDO0() { - return this.getOpcIntegerValue(DO0); - - } - - public int getDO1() { - return this.getOpcIntegerValue(DO1); - - } - - public int getDO2() { - return this.getOpcIntegerValue(DO2); - - } - - public Float getX() { - return this.getOpcFloatValue(x); - - } - - public Float getY() { - return this.getOpcFloatValue(y); - - } - - public Float getAngle() { - return this.getOpcFloatValue(angle); - - } - - public short getNavigation_address() { - return this.getOpcShortValue(navigation_address); - - } - - public short getPositioning_status() { - return this.getOpcShortValue(positioning_status); - } - - public short getNavigation_status() { - return this.getOpcShortValue(navigation_status); - } - - public short getNavigation_type() { - return this.getOpcShortValue(navigation_type); - - } - - public int getElectricity() { - return this.getOpcIntegerValue(electricity); - - } - - public int getAddress() { - return this.getOpcIntegerValue(address); - - } - - public short getNext_address() { - return this.getOpcShortValue(next_address); - } - - public int getHome_relocation() { - return this.getOpcIntegerValue(home_relocation); - - } - - public int getLocate_correct() { - return this.getOpcIntegerValue(locate_correct); - - } - - public int getPause_navigation() { - return this.getOpcIntegerValue(pause_navigation); - - } - - public int getContinue_navigation() { - return this.getOpcIntegerValue(continue_navigation); - - } - - public int getCancle_navigation() { - return this.getOpcIntegerValue(cancle_navigation); - } - - public short getDrum_run_status() { - return this.getOpcShortValue(drum_run_status); - } - - public static void setTo_home_relocation(String to_home_relocation) { - ItemProtocol.to_home_relocation = to_home_relocation; - } - - public static void setTo_locate_correct(String to_locate_correct) { - ItemProtocol.to_locate_correct = to_locate_correct; - } - - public static void setTo_pause_navigation(String to_pause_navigation) { - ItemProtocol.to_pause_navigation = to_pause_navigation; - } - - public static void setTo_continue_navigation(String to_continue_navigation) { - ItemProtocol.to_continue_navigation = to_continue_navigation; - } - - public static void setTo_cancle_navigation(String to_cancle_navigation) { - ItemProtocol.to_cancle_navigation = to_cancle_navigation; - } - - public static void setTo_DO0_height(String to_DO0_height) { - ItemProtocol.to_DO0_height = to_DO0_height; - } - - public static void setTo_DO0_low(String to_DO0_low) { - ItemProtocol.to_DO0_low = to_DO0_low; - } - - public static void setTo_DO1_height(String to_DO1_height) { - ItemProtocol.to_DO1_height = to_DO1_height; - } - - public static void setTo_DO1_low(String to_DO1_low) { - ItemProtocol.to_DO1_low = to_DO1_low; - } - - public static void setTo_DO8_low(String to_DO8_low) { - ItemProtocol.to_DO8_low = to_DO8_low; - } - - public static void setTo_DO9_low(String to_DO9_low) { - ItemProtocol.to_DO9_low = to_DO9_low; - } - - - public static void setTo_address(String to_address) { - ItemProtocol.to_address = to_address; - } - - public static void setTo_clear_error(String to_clear_error) { - ItemProtocol.to_clear_error = to_clear_error; - } - - public static void setTo_di_height(String to_di_height) { - ItemProtocol.to_di_height = to_di_height; - } - - public static void setTo_di_low(String to_di_low) { - ItemProtocol.to_di_low = to_di_low; - } - - private XgagvDeviceDriver driver; - - public ItemProtocol(XgagvDeviceDriver driver) { - this.driver = driver; - } - - public ItemProtocol() { - - } - - - public Float getOpcFloatValue(String protocol) { - Float value = this.driver.getFloatValue(protocol); - if (ObjectUtil.isEmpty(value)) { - - } else { - return value; - } - return 0.0f; - } - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegerValue(protocol); - if (value == null) { - - } else { - return value; - } - return 0; - - } - - public short getOpcShortValue(String protocol) { - Short value = this.driver.getShortValue(protocol); - if (value == null) { - - } else { - return value; - } - return 0; - - } - - public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(is_charging, "是否充电", "10003")); - list.add(new ItemDto(DI0, "DI0", "10020")); - list.add(new ItemDto(DI1, "DI1", "10021")); - list.add(new ItemDto(DI2, "DI2", "10022")); - list.add(new ItemDto(DI3, "DI3", "10023")); - list.add(new ItemDto(DI4, "DI4", "10024")); - list.add(new ItemDto(DO1, "DO1", "10061")); - list.add(new ItemDto(DO2, "DO2", "10062")); - list.add(new ItemDto(DI11, "DI11", "10031")); - list.add(new ItemDto(DI12, "DI12", "10032")); - list.add(new ItemDto(x, "x", "30001")); - list.add(new ItemDto(y, "y", "30003")); - list.add(new ItemDto(angle, "angle", "30005")); - list.add(new ItemDto(navigation_address, "当前导航站点", "30007")); - list.add(new ItemDto(positioning_status, "定位状态", "30008")); - list.add(new ItemDto(navigation_status, "当前导航状态", "30009")); - list.add(new ItemDto(navigation_type, "当前导航类型", "30010")); - list.add(new ItemDto(electricity, "电量", "30013")); - list.add(new ItemDto(address, "当前所在站点", "30034")); - list.add(new ItemDto(next_address, "下一个要经过的站点", "30036")); - list.add(new ItemDto(home_relocation, "在Home点重定位", "00002")); - list.add(new ItemDto(locate_correct, "确认定位正确", "00003")); - list.add(new ItemDto(pause_navigation, "暂停导航", "00004")); - list.add(new ItemDto(continue_navigation, "继续导航", "00005")); - list.add(new ItemDto(cancle_navigation, "取消导航", "00006")); - list.add(new ItemDto(drum_run_status, "滚筒运行状态", "30062")); - list.add(new ItemDto(stop, "车子停止", "10019")); - - - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(to_home_relocation, "to_在Home点重定位", "00002")); - list.add(new ItemDto(to_locate_correct, "to_确认定位正确", "00003")); - list.add(new ItemDto(to_pause_navigation, "to_暂停导航", "00004")); - list.add(new ItemDto(to_continue_navigation, "to_继续导航", "00005")); - list.add(new ItemDto(to_cancle_navigation, "to_取消导航", "00006")); - list.add(new ItemDto(to_DO0_height, "to_DO0置为高电平", "00061")); - list.add(new ItemDto(to_DO0_low, "to_DO0置为低电平", "00020")); - list.add(new ItemDto(to_DO1_height, "to_DO1置为高电平", "00062")); - list.add(new ItemDto(to_DO1_low, "to_DO1置为低电平", "00021")); - list.add(new ItemDto(to_DO2_low, "to_DO2置为低电平", "00022")); - list.add(new ItemDto(to_DO8_low, "to_DO8置为低电平", "00028")); - list.add(new ItemDto(to_DO9_low, "to_DO9置为低电平", "00029")); - list.add(new ItemDto(to_address, "to_address", "40001")); - list.add(new ItemDto(to_clear_error, "to_clear_error", "40090")); - list.add(new ItemDto(to_di_height, "虚拟高电平写", "40063")); - list.add(new ItemDto(to_di_low, "虚拟低电平写", "40064")); - list.add(new ItemDto(to_line, "to_line", "40043")); - - return list; - } - -} - diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/XgagvDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/XgagvDeviceDriver.java deleted file mode 100644 index ff626a4..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/XgagvDeviceDriver.java +++ /dev/null @@ -1,667 +0,0 @@ -package org.nl.acs.device_driver.agv.xg_agv; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.enums.InstructionStatusEnum; -import org.nl.acs.utils.ReadUtil; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; -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.service.InstructionService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.config.SpringContextHolder; -import org.nl.config.language.LangProcess; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -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; - - -/** - * 仙工agv - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, DeviceStageMonitor { - @Autowired - RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - @Autowired - TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired - DeviceAppService deviceAppService = SpringContextHolder.getBean("deviceAppServiceImpl"); - @Autowired - LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); - ; - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); - /** - * 车辆ip 0-未知;1-需充电;2-可执行任务;3-充满电 - */ - String agv_mode = "0"; - - String last_mode = "0"; - private Date instruction_require_time = new Date(); - private int instruction_require_time_out = 3000; - int is_charging = 0; - int stop = 0; - int DI0 = 0; - int DI1 = 0; - int DI2 = 0; - int DI3 = 0; - int DI4 = 0; - int DI11 = 0; - int DI12 = 0; - int DO0 = 0; - int DO1 = 0; - int DO2 = 0; - Float x = 0f; - Float y = 0f; - Float angle = 0f; - int navigation_address = 0; - int positioning_status = 0; - int navigation_status = 0; - int navigation_type = 0; - int electricity = 0; - int address = 0; - int next_address = 0; - int home_relocation = 0; - int locate_correct = 0; - int pause_navigation = 0; - int continue_navigation = 0; - int cancle_navigation = 0; - int drum_run_status = 0; - - int last_is_charging = 0; - int last_stop = 0; - int last_DI0 = 0; - int last_DI1 = 0; - int last_DI2 = 0; - int last_DI3 = 0; - int last_DI4 = 0; - int last_DI11 = 0; - int last_DI12 = 0; - int last_DO0 = 0; - int last_DO1 = 0; - int last_DO2 = 0; - Float last_x = 0f; - Float last_y = 0f; - Float last_angle = 0f; - int last_navigation_address = 0; - int last_positioning_status = 0; - int last_navigation_status = 0; - int last_navigation_type = 0; - int last_electricity = 0; - int last_address = 0; - int last_next_address = 0; - int last_home_relocation = 0; - int last_locate_correct = 0; - int last_pause_navigation = 0; - int last_continue_navigation = 0; - int last_cancle_navigation = 0; - int last_drum_run_status = 0; - String message = null; - String device_code; - Instruction inst = null; - protected ItemProtocol itemProtocol = new ItemProtocol(this); - - /** - * 最小电量 - */ - double min_electric = 0.0; - /** - * 最大电量 - */ - double cancle_electric = 0.0; - /** - * 执行任务电量 - */ - double task_electric = 0.0; - /** - * 休息点 - */ - int relax_point = 0; - /** - * 充电点 - */ - int charge_point = 0; - - @Override - public Device getDevice() { - return this.device; - } - - @Override - public void execute() throws Exception { - - device_code = this.getDeviceCode(); - is_charging = this.itemProtocol.getIs_charging(); - DI0 = this.itemProtocol.getDI0(); - DI1 = this.itemProtocol.getDI1(); - DI2 = this.itemProtocol.getDI2(); - DI3 = this.itemProtocol.getDI3(); - DI4 = this.itemProtocol.getDI4(); - DI11 = this.itemProtocol.getDI11(); - DI12 = this.itemProtocol.getDI12(); - DO0 = this.itemProtocol.getDO0(); - DO1 = this.itemProtocol.getDO1(); - DO2 = this.itemProtocol.getDO2(); - x = this.itemProtocol.getX(); - y = this.itemProtocol.getY(); - navigation_address = this.itemProtocol.getNavigation_address(); - positioning_status = this.itemProtocol.getPositioning_status(); - navigation_status = this.itemProtocol.getNavigation_status(); - navigation_type = this.itemProtocol.getNavigation_type(); - electricity = this.itemProtocol.getElectricity(); - address = this.itemProtocol.getAddress(); - next_address = this.itemProtocol.getNext_address(); - home_relocation = this.itemProtocol.getHome_relocation(); - locate_correct = this.itemProtocol.getLocate_correct(); - pause_navigation = this.itemProtocol.getPause_navigation(); - continue_navigation = this.itemProtocol.getContinue_navigation(); - cancle_navigation = this.itemProtocol.getCancle_navigation(); - drum_run_status = this.itemProtocol.getDrum_run_status(); - stop = this.itemProtocol.getStop(); - if (home_relocation != last_home_relocation) { -// luceneExecuteLogService.deviceExecuteLog( -// new LuceneLogDto(this.getDevice().getOpc_server_code(), this.getDevice().getOpc_plc_code(), this.device_code, ItemProtocol.to_home_relocation, this.last_home_relocation, this.home_relocation)); - } - - if (stop != last_stop) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("信号" + this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.device_code + "." + ItemProtocol.stop + "变更从" + this.last_stop + "->" + this.stop) - .build(); - logDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - - if (address != last_address) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("信号" + this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.device_code + "." + ItemProtocol.address + this.last_address + "->" + this.address) - .build(); - logDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - - if (electricity != last_electricity) { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("信号" + this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.device_code + "." + ItemProtocol.electricity + this.last_electricity + "->" + this.electricity) - .build(); - logDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - - //获取最小电量 - if (ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("min_electric"))) { - message = "未配置最小电量"; - return; - } - min_electric = Double.parseDouble((String) this.getDevice().getExtraValue().get("min_electric")); - //获取最大电量 - if (ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("cancle_electric"))) { - message = "未配置最大电量"; - return; - } - cancle_electric = Double.parseDouble((String) this.getDevice().getExtraValue().get("cancle_electric")); - //可执行任务电量 - if (ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("task_electric"))) { - message = "未配置可执行任务电量"; - return; - } - task_electric = Double.parseDouble((String) this.getDevice().getExtraValue().get("task_electric")); - //休息点 - if (ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("relax_point"))) { - message = "未配置休息点"; - return; - } - Device relax_point_device = deviceAppService.findDeviceByCode((String) this.getDevice().getExtraValue().get("relax_point")); - relax_point = Integer.parseInt(relax_point_device.getAddress()); - //充电点 - if (ObjectUtil.isEmpty(this.getDevice().getExtraValue().get("charge_point"))) { - message = "未配置充电点"; - return; - } - Device charge_point_device = deviceAppService.findDeviceByCode((String) this.getDevice().getExtraValue().get("charge_point")); - charge_point = Integer.parseInt(charge_point_device.getAddress()); - List instList = instructionService.findAllInstFromCache(); - - if (instList.size() > 0) { - for (int i = 0; i < instList.size(); i++) { - inst = instList.get(i); - if (ObjectUtil.equal(inst.getInstruction_type(), CommonFinalParam.ONE)) { - continue; - } - } - if (ObjectUtil.isEmpty(inst)) { - message = "未找到对应指令"; - return; - } - } - //先判断当前有无指令 - if (ObjectUtil.isEmpty(inst)) { - if (electricity != 0 && electricity < min_electric && address != charge_point && (navigation_status == 0 || navigation_status == 4)) { - log.info("下发充电:{}", charge_point); - feedAgvTaskStatus(inst, "5"); - } - if (electricity != 0 && electricity > cancle_electric && address == charge_point && (navigation_status == 0 || navigation_status == 4)) { - log.info("下发回休息点:{}", relax_point); - - } - } else { - TaskDto task = taskserver.findByCodeFromCache(inst.getTask_code()); - Device start_device = deviceAppService.findDeviceByCode(inst.getStart_device_code()); - Device next_device = deviceAppService.findDeviceByCode(inst.getNext_device_code()); - int start_device_code = Integer.parseInt(start_device.getAddress()); - int next_device_code = Integer.parseInt(next_device.getAddress()); - - - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - //指令状态就绪 - if (StrUtil.equals(InstructionStatusEnum.READY.getIndex(), inst.getInstruction_status())) { - log.info("下发指令号{},起点{}", inst.getInstruction_code(), start_device); - //判断指令起点与任务起点是否相同 - feedAgvTaskStatus(inst, CommonFinalParam.ONE); - } - - //取货完成请求离开 - if (StrUtil.equals(InstructionStatusEnum.BUSY.getIndex(), inst.getInstruction_status()) && address == 5 && stop == 1 && StrUtil.equals(inst.getExecute_status(), CommonFinalParam.ONE)) { - //请求wms是否允许从取货点离开 - feedAgvTaskStatus(inst, "2"); - } - - //请求放货 - if (StrUtil.equals(InstructionStatusEnum.BUSY.getIndex(), inst.getInstruction_status()) && address == 2 && stop == 1 && StrUtil.equals(inst.getExecute_status(), "2")) { - //请求wms是否允许进入放货 - feedAgvTaskStatus(inst, "3"); - - } - //放货完成 完成任务回休息点 - if (StrUtil.equals(InstructionStatusEnum.BUSY.getIndex(), inst.getInstruction_status()) && address == 1 && stop == 1 && StrUtil.equals(inst.getExecute_status(), "3")) { - feedAgvTaskStatus(inst, "4"); - } - - } - - //请求开门 - if ((address == 3 || address == 11) && stop == 1) { - feedAgvAction("5"); - } - - //请求关门 - if ((address == 9 || address == 10) && stop == 1) { - feedAgvAction("6"); - } - - //请求充电 - if (address == 4 && stop == 1) { - feedAgvAction("7"); - } - last_home_relocation = home_relocation; - last_address = address; - last_next_address = next_address; - last_electricity = electricity; - last_stop = stop; - } - - - public void writing(String key, int value) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + key; - String opcservcerid = this.getDevice().getOpc_server_id(); - Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, value); - LuceneLogDto resplogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("下发信号" + this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.device_code + "." + key + "value:" + value) - .build(); - - ReadUtil.write(itemMap, server); - } - - @Override - public JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("message", message); - jo.put("is_click", true); - jo.put("address", address); - jo.put("stop", stop); - jo.put("electricity", electricity); - jo.put("is_charging", is_charging); - - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - - - } - - /** - * 反馈wms动作状态 - * - * @param type - * @return - */ - public boolean feedAgvTaskStatus(Instruction inst, String type) throws Exception { - 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 { - - //请求WMS允许取货 - if (StrUtil.equals(type, CommonFinalParam.ONE)) { - Device start_device = deviceAppService.findDeviceByCode(inst.getStart_device_code()); - Device next_device = deviceAppService.findDeviceByCode(inst.getNext_device_code()); - int start_device_code = Integer.parseInt(start_device.getAddress()); - int next_device_code = Integer.parseInt(next_device.getAddress()); - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("vehicle_code", inst.getVehicle_code()); - jo.put("status", CommonFinalParam.ONE); - jo.put("device_code", this.device_code); - jo.put("task_code", inst.getTask_code()); - ja.add(jo); - LuceneLogDto reqlogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("请求参数:" + jo) - .requestparam("请求参数:" + jo) - .method("feedAgvTaskStatus") - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(reqlogDto); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - LuceneLogDto resplogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("返回参数:" + resp.body()) - .responseparam("返回参数:" + resp.body()) - .method("feedAgvTaskStatus") - .status_code(String.valueOf(resp.getStatus())) - .build(); - resplogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(resplogDto); - - if (resp.getStatus() == 200) { - - inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - inst.setExecute_status(CommonFinalParam.ONE); - instructionService.update(inst); - writing("to_line", 1); - - } else { - writing("to_line", 1); - - } - //取货完成请求离开 - } else if (StrUtil.equals(type, "2")) { - Device start_device = deviceAppService.findDeviceByCode(inst.getStart_device_code()); - Device next_device = deviceAppService.findDeviceByCode(inst.getNext_device_code()); - int start_device_code = Integer.parseInt(start_device.getAddress()); - int next_device_code = Integer.parseInt(next_device.getAddress()); - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("vehicle_code", inst.getVehicle_code()); - jo.put("status", "2"); - jo.put("device_code", this.device_code); - jo.put("task_code", inst.getTask_code()); - ja.add(jo); - LuceneLogDto reqlogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("请求参数:" + jo) - .requestparam("请求参数:" + jo) - .method("feedAgvTaskStatus") - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(reqlogDto); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - LuceneLogDto resplogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("返回参数:" + resp.body()) - .responseparam("返回参数:" + resp.body()) - .method("feedAgvTaskStatus") - .status_code(String.valueOf(resp.getStatus())) - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(resplogDto); - if (resp.getStatus() == 200) { - - inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - inst.setExecute_status("2"); - instructionService.update(inst); - } else { - - } - //请求放货 - } else if (StrUtil.equals(type, "3")) { - Device start_device = deviceAppService.findDeviceByCode(inst.getStart_device_code()); - Device next_device = deviceAppService.findDeviceByCode(inst.getNext_device_code()); - int start_device_code = Integer.parseInt(start_device.getAddress()); - int next_device_code = Integer.parseInt(next_device.getAddress()); - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("vehicle_code", inst.getVehicle_code()); - jo.put("status", "3"); - jo.put("device_code", this.device_code); - jo.put("task_code", inst.getTask_code()); - ja.add(jo); - LuceneLogDto reqlogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("请求参数:" + jo) - .requestparam("请求参数:" + jo) - .method("feedAgvTaskStatus") - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(reqlogDto); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - LuceneLogDto resplogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("返回参数:" + resp.body()) - .responseparam("返回参数:" + resp.body()) - .method("feedAgvTaskStatus") - .status_code(String.valueOf(resp.getStatus())) - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(resplogDto); - if (resp.getStatus() == 200) { - inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - inst.setExecute_status("3"); - instructionService.update(inst); - } else { - - } - } else if (StrUtil.equals(type, "4")) { - Device start_device = deviceAppService.findDeviceByCode(inst.getStart_device_code()); - Device next_device = deviceAppService.findDeviceByCode(inst.getNext_device_code()); - int start_device_code = Integer.parseInt(start_device.getAddress()); - int next_device_code = Integer.parseInt(next_device.getAddress()); - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("vehicle_code", inst.getVehicle_code()); - jo.put("status", "4"); - jo.put("device_code", this.device_code); - jo.put("task_code", inst.getTask_code()); - ja.add(jo); - LuceneLogDto reqlogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("请求参数:" + jo) - .requestparam("请求参数:" + jo) - .method("feedAgvTaskStatus") - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(reqlogDto); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - LuceneLogDto resplogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("返回参数:" + resp.body()) - .responseparam("返回参数:" + resp.body()) - .method("feedAgvTaskStatus") - .status_code(String.valueOf(resp.getStatus())) - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(resplogDto); - if (resp.getStatus() == 200) { - writing("to_line", 2); - inst.setInstruction_status(InstructionStatusEnum.FINISHED.getIndex()); - inst.setExecute_status("4"); - instructionService.finish(inst); - } else { - - } - } else if (StrUtil.equals(type, "5")) { - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("status", "5"); - jo.put("device_code", this.address); - ja.add(jo); - LuceneLogDto reqlogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("请求参数:" + jo) - .requestparam("请求参数:" + jo) - .method("feedAgvTaskStatus") - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(reqlogDto); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - LuceneLogDto resplogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("返回参数:" + resp.body()) - .responseparam("返回参数:" + resp.body()) - .method("feedAgvTaskStatus") - .status_code(String.valueOf(resp.getStatus())) - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(resplogDto); - if (resp.getStatus() == 200) { - writing("to_di_low", 0); - writing("to_di_height", 0); - } else { - - } - } else if (StrUtil.equals(type, "6")) { - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("status", "6"); - jo.put("device_code", this.device_code); - ja.add(jo); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - if (resp.getStatus() == 200) { - writing("to_di_height", 0); - writing("to_di_low", 0); - } else { - - } - } else if (StrUtil.equals(type, "7")) { - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("status", "7"); - jo.put("device_code", this.device_code); - ja.add(jo); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - if (resp.getStatus() == 200) { - writing("to_di_low", 0); - } else { - - } - } - } - return true; - } - - public boolean feedAgvAction(String type) throws Exception { - 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 { - if (StrUtil.equals(type, "5")) { - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("status", "5"); - jo.put("device_code", "A4"); - ja.add(jo); - LuceneLogDto reqlogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("请求参数:" + jo) - .requestparam("请求参数:" + jo) - .method("feedAgvTaskStatus") - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(reqlogDto); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - LuceneLogDto resplogDto = LuceneLogDto.builder() - .device_code(device_code) - .content("返回参数:" + resp.body()) - .responseparam("返回参数:" + resp.body()) - .method("feedAgvTaskStatus") - .status_code(String.valueOf(resp.getStatus())) - .build(); - reqlogDto.setLog_level(2); - luceneExecuteLogService.deviceExecuteLog(resplogDto); - if (resp.getStatus() == 200) { - writing("to_di_low", 0); - writing("to_di_height", 0); - } else { - writing("to_di_low", 0); - writing("to_di_height", 0); - } - } else if (StrUtil.equals(type, "6")) { - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("status", "6"); - jo.put("device_code", "A4"); - ja.add(jo); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - if (resp.getStatus() == 200) { - writing("to_di_height", 0); - writing("to_di_low", 0); - } else { - writing("to_di_height", 0); - writing("to_di_low", 0); - } - } else if (StrUtil.equals(type, "7")) { - JSONArray ja = new JSONArray(); - JSONObject jo = new JSONObject(); - jo.put("status", "7"); - jo.put("device_code", "A4"); - ja.add(jo); - HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja); - if (resp.getStatus() == 200) { - writing("to_di_height", 0); - } else { - writing("to_di_height", 0); - } - } - } - return true; - } -} - diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDefination.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDefination.java deleted file mode 100644 index e07d85d..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDefination.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.nl.acs.device_driver.agv.xg_agv_car; - -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.DeviceDriverDefination; -import org.springframework.stereotype.Service; - -import java.util.LinkedList; -import java.util.List; - -/** - * 仙工AGV - */ -@Service -public class XgAgvCarDefination implements DeviceDriverDefination { - @Override - public String getDriverCode() { - return "xg_agv_car"; - } - - @Override - public String getDriverName() { - return "仙工AGV车"; - } - - @Override - public String getDriverDescription() { - return "仙工AGV车"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new XgAgvCarDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return XgAgvCarDeviceDriver.class; - } - - @Override - public List getFitDeviceTypes() { - List types = new LinkedList(); - types.add(DeviceType.agv); - return types; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java deleted file mode 100644 index 6c70564..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java +++ /dev/null @@ -1,313 +0,0 @@ -package org.nl.acs.device_driver.agv.xg_agv_car; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.agv.server.XianGongAgvService; -import org.nl.acs.common.base.CommonFinalParam; -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.AbstractDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.config.SpringContextHolder; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.Map; - - -/** - * 仙工AGV - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class XgAgvCarDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @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 - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); - @Autowired - XianGongAgvService xianGongAgvService = SpringContextHolder.getBean(XianGongAgvService.class); - - Integer hasGoods = 0; - int error = 0; - Boolean iserror = false; - Boolean islock = false; - - int branchProtocol = 0; - int last_branchProtocol = 0; - /** - * 是否需要输入物料 - */ - String input_material = "0"; - /** - * 备注 - */ - String remark = ""; - /** - * 数量 - */ - String qty = ""; - /** - * 批次 - */ - String batch = ""; - /** - * 物料 - */ - String material = ""; - /** - * 目标点位 - */ - String purpose = ""; - /** - * 当前指令 - */ - Instruction inst = null; - /** - * 上次指令 - */ - Instruction last_inst = null; - - boolean requireSucess = false; - - /** - * 触摸屏手动触发任务 - */ - private Boolean is_has_task = false; - - /** - * 申请搬运任务 - */ - private Boolean apply_handling = false; - /** - * 申请物料 - */ - private Boolean apply_material = false; - - /** - * 1取货完成 2放货完成 3进入区域 4离开区域 - */ - private int flag; - - /** - * 人工确认信号 默认0 agv到达后请求置1 等人工确认后变为2 反馈agv后继续为0 - */ - private int manua_confirm = 0; - - /** - * 是否推送场景的状态 0=可推送 1=正在更新场景 2=正在执行运单 - */ - private String upload_scene_status = ""; - /** - * 机器人当前运单 - */ - private String current_order = ""; - /** - * 机器人连接状态 0表示断连 1表示连接上 - */ - private String connection_status = ""; - /** - * 机器人可接单状态 true=可接单 false=不可接单 - */ - private boolean dispatchable = false; - /** - * core出错标识 - */ - private boolean is_error = false; - /** - * 是否正在执行用户下发的运单 - */ - private boolean procBusiness = false; - /** - * 机器人当前地图不在场景中 - */ - private boolean current_map_invalid = false; - /** - * 机器人是否断连 - */ - private boolean disconnect = false; - /** - * 1 = api 设置可接单,2 = api 设置不可接单(小车占用资源), 3 = api 设置不可接单(小车不占用资源) - */ - private int dispatchable_status = 0; - /** - * 低电量 - */ - private boolean low_battery = false; - /** - * 暂停运单 - */ - private boolean suspended = false; - /** - * 未确认定位 - */ - private boolean unconfirmed_reloc = false; - /** - * 0: 控制权在core手上 1; 控制权被其他人抢走; 2: 控制权没有被抢占 - */ - private int unlock = 0; - - /** - * agv二次分配类型(1、普通任务 2、取货二次分配 3、防货二次分配 4、取放货二次分配) - */ - private String taskType = ""; - - - String device_code = null; - String container; - String container_type_desc; - String last_container_type_desc; - String last_container; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - - private int instruction_require_time_out; - - String message; - - // 1 上位系统允许进入 2 上位系统允许离开 - int status = 0; - - int agvphase = 0; - int index = 0; - - int mode = 2; - - int move; - - @Override - public void execute() { - try { -// getAgvStatus(); - } catch (Exception e) { - message = "获取机器人状态报错"; - } - } - - @Override - public JSONObject getDeviceStatusName() { - Map map = new LinkedHashMap<>(); -// try { -// getAgvStatus(); -// } catch (Exception e) { -// message = "获取机器人状态报错"; -// } - String isError; - if (is_error) { - isError = "出错,不执行任何运单"; - } else { - isError = "正常"; - } - if (CommonFinalParam.ONE.equals(upload_scene_status)) { - upload_scene_status = "正在更新场景"; - } else if (CommonFinalParam.TWO.equals(upload_scene_status)) { - upload_scene_status = "正在执行运单"; - } else if (CommonFinalParam.DELETE.equals(upload_scene_status)) { - upload_scene_status = "可推送"; - } - map.put("errors", isError); - map.put("upload_scene_status", upload_scene_status); - map.put("procBusiness", procBusiness ? "是": "否"); - // map.put("current_order", current_order); - map.put("connection_status", "1".equals(connection_status) ? "连接上" : "断连"); - map.put("dispatchable", dispatchable ? "可接单" : "不可接单"); - map.put("dispatchable_status", dispatchable_status == 1?"设置可接单" : dispatchable_status == 2?"设置不可接单(小车占用资源)" : dispatchable_status == 3?"设置不可接单(小车不占用资源)" : "未知"); - map.put("current_map_invalid", current_map_invalid ? "机器人不在地图场景中": "机器人在地图场景中"); - map.put("disconnect", disconnect ? "机器人断连" : "机器人连接上"); - map.put("low_battery", low_battery ? "低电量": "正常"); - map.put("suspended", suspended ? "订单被暂停,需要人工手动恢复": "正常"); - map.put("message", message); - map.put("agv_task_type", taskType); - map.put("unconfirmed_reloc", unconfirmed_reloc ? "未确认定位" : "正常"); - map.put("unlock", unlock == 0 ? "控制权在core手上" : unlock == 1 ? "控制权被其他人抢走" : unlock == 2 ? "控制权没有被抢占" : "未知"); - map.put("move_2","有货"); - JSONObject jo = new JSONObject(map); - return jo; - } - - - @Override - public void setDeviceStatus(JSONObject data) { - - } - - - /** - * 获取机器人信息 - */ - private void getAgvStatus() { - HttpResponse robotInfo = xianGongAgvService.getRobotInfo(this.getDevice().getDevice_name()); - if (ObjectUtil.isNotEmpty(robotInfo) && robotInfo.getStatus() == 200) { - JSONObject jsonObject = JSONObject.parseObject(robotInfo.body()); - String report = jsonObject.getString("report"); - //core出错标识 - is_error = jsonObject.getBooleanValue("is_error"); - //是否推送场景的状态 0=可推送 1=正在更新场景 2=正在执行运单 - upload_scene_status = jsonObject.getString("upload_scene_status"); - JSONArray objects = JSONObject.parseArray(report); - for (Object object : objects) { - JSONObject json = (JSONObject) object; - //是否正在执行用户下发的运单 - procBusiness = json.getBooleanValue("procBusiness"); - //机器人当前运单 - current_order = json.getString("current_order"); - //机器人连接状态 0表示断连 1表示连接上 - connection_status = json.getString("connection_status"); - //机器人可接单状态 true=可接单 false=不可接单 - dispatchable = json.getBooleanValue("dispatchable"); - //机器人不可接单原因 - JSONObject undispatchableReason = json.getJSONObject("undispatchable_reason"); - //机器人当前地图不在场景中 - current_map_invalid = undispatchableReason.getBooleanValue("current_map_invalid"); - //网络断连 - disconnect = undispatchableReason.getBooleanValue("disconnect"); - //可接单状态: 0 = api 设置可接单, 1 = api 设置不可接单 - dispatchable_status = undispatchableReason.getIntValue("dispatchable_status"); - //低电量 - low_battery = undispatchableReason.getBooleanValue("low_battery"); - //当前车子的订单被暂停了,需要人为手动恢复 - suspended = undispatchableReason.getBooleanValue("suspended"); - //未确认定位 - unconfirmed_reloc = undispatchableReason.getBooleanValue("unconfirmed_reloc"); - //0: 控制权在core手上 , 1:控制权被其他人抢走 - unlock = undispatchableReason.getIntValue("unlock"); - } - } else { - message = "请求机器人状态失败"; - log.info("请求{}机器人状态失败", this.getDevice().getDevice_name()); - } - } -} - diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/camera/HikvisionDualSnapshot.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/camera/HikvisionDualSnapshot.java new file mode 100644 index 0000000..dec0a51 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/camera/HikvisionDualSnapshot.java @@ -0,0 +1,178 @@ +package org.nl.acs.device_driver.camera; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Structure; +import org.apache.hc.client5.http.auth.AuthScope; +import org.apache.hc.client5.http.auth.Credentials; +import org.apache.hc.client5.http.auth.UsernamePasswordCredentials; +import org.apache.hc.client5.http.classic.methods.HttpGet; +import org.apache.hc.client5.http.impl.auth.DigestScheme; +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider; +import org.apache.hc.client5.http.protocol.HttpClientContext; +import org.apache.hc.client5.http.auth.AuthCache; +import org.apache.hc.client5.http.impl.auth.BasicAuthCache; +import org.apache.hc.core5.http.HttpHost; + +import java.io.FileOutputStream; +import java.io.InputStream; + +/** + * @Description 海康摄像机抓图 + * @Author Gengby + * @Date 2025/8/18 + */ +public class HikvisionDualSnapshot { + + // HCNetSDK 接口映射 + public interface HCNetSDK extends Library { + HCNetSDK INSTANCE = Native.load("HCNetSDK", HCNetSDK.class); + + //初始化 SDK 库 + boolean NET_DVR_Init(); + + //登录设备(传入设备 IP、端口、用户名、密码),返回一个用户 ID(后续调用都要用) + int NET_DVR_Login_V30(String sDVRIP, short wDVRPort, String sUserName, String sPassword, NET_DVR_DEVICEINFO_V30 lpDeviceInfo); + + //抓拍一张 JPEG 图片保存到本地。 + boolean NET_DVR_CaptureJPEGPicture(int lUserID, int lChannel, NET_DVR_JPEGPARA lpJpegPara, String sPicFileName); + + //注销登录。 + boolean NET_DVR_Logout(int lUserID); + + ////清理 SDK 库 + boolean NET_DVR_Cleanup(); + } + + @Structure.FieldOrder({"sSerialNumber", "byAlarmInPortNum", "byAlarmOutPortNum", "byDiskNum", + "byDVRType", "byChanNum", "byStartChan", "byAudioChanNum", "byIPChanNum"}) + public static class NET_DVR_DEVICEINFO_V30 extends Structure { + //序列号 + public byte[] sSerialNumber = new byte[48]; + //报警输入口个数 + public byte byAlarmInPortNum; + //报警输出口个数 + public byte byAlarmOutPortNum; + //硬盘个数 + public byte byDiskNum; + //DVR 类型 + public byte byDVRType; + //模拟通道数 + public byte byChanNum; + //起始通道号 + public byte byStartChan; + //音频通道数 + public byte byAudioChanNum; + //IP 通道数 + public byte byIPChanNum; + } + + @Structure.FieldOrder({"wPicSize", "wPicQuality"}) + public static class NET_DVR_JPEGPARA extends Structure { + // 0: QCIF, 1: CIF, 2: D1, 3: UXGA... + public short wPicSize; + // 0: 最差, 1: 较差, 2: 一般, 3: 较好, 4:最好 + public short wPicQuality; + } + + public static boolean snapshotHttp(String ip, int port, String username, String password, String channel) { + String url = String.format("http://%s:%d/ISAPI/Streaming/channels/%s/picture", ip, port, channel); + + // 1. 设置 Digest 认证信息 + BasicCredentialsProvider credsProvider = new BasicCredentialsProvider(); + Credentials credentials = new UsernamePasswordCredentials(username, password.toCharArray()); + credsProvider.setCredentials(new AuthScope(ip, port), credentials); + + // 2. 构造 HttpClient + try (CloseableHttpClient httpClient = HttpClients.custom() + .setDefaultCredentialsProvider(credsProvider) + .build()) { + + HttpGet request = new HttpGet(url); + + // 3. 设置认证缓存,指定 Digest 认证 + HttpHost targetHost = new HttpHost("http", ip, port); + AuthCache authCache = new BasicAuthCache(); + DigestScheme digestAuth = new DigestScheme(); + authCache.put(targetHost, digestAuth); + + HttpClientContext localContext = HttpClientContext.create(); + localContext.setAuthCache(authCache); + + return httpClient.execute(request, localContext, response -> { + if (response.getCode() == 200) { + try (InputStream inputStream = response.getEntity().getContent(); + //命名规则:任务号+载具号+时间.jpg + FileOutputStream fos = new FileOutputStream("snapshot_http.jpg")) { + byte[] buffer = new byte[4096]; + int len; + while ((len = inputStream.read(buffer)) != -1) { + fos.write(buffer, 0, len); + } + return true; + } + } else { + return false; + } + }); + + } catch (Exception e) { + return false; + } + } + + //HCNetSDK 抓图 + public static boolean snapshotSdk(String ip, short port, String username, String password, int channel) { + if (!HCNetSDK.INSTANCE.NET_DVR_Init()) { + System.err.println("[SDK] 初始化失败"); + return false; + } + NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30(); + int userId = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo); + if (userId < 0) { + System.err.println("[SDK] 登录失败"); + HCNetSDK.INSTANCE.NET_DVR_Cleanup(); + return false; + } + + NET_DVR_JPEGPARA jpegPara = new NET_DVR_JPEGPARA(); + // D1 + jpegPara.wPicSize = 2; + // 一般质量 + jpegPara.wPicQuality = 2; + //命名规则:任务号+载具号+时间.jpg + boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, "snapshot_sdk.jpg"); + if (result) { + System.out.println("[SDK] 抓图成功,保存为 snapshot_sdk.jpg"); + } else { + System.err.println("[SDK] 抓图失败"); + } + + HCNetSDK.INSTANCE.NET_DVR_Logout(userId); + HCNetSDK.INSTANCE.NET_DVR_Cleanup(); + return result; + } + + public static void main(String[] args) { + // IP + String ip = "192.168.1.64"; + // 端口号 + int port = 80; + // 账号 + String username = "admin"; + // 密码 + String password = "12345"; + // HTTP 通道号 + String channelHttp = "101"; + // SDK 通道号(一般是 1) + int channelSdk = 1; + + boolean ok = snapshotHttp(ip, port, username, password, channelHttp); + if (!ok) { + System.out.println("[系统] HTTP 抓图失败,尝试 SDK 模式..."); + snapshotSdk(ip, (short) port, username, password, channelSdk); + } + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java deleted file mode 100644 index 75db7af..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java +++ /dev/null @@ -1,632 +0,0 @@ -package org.nl.acs.device_driver.conveyor.belt_conveyor; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.common.base.CommonFinalParam; -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.enums.StorageTypeEnum; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.history.ErrorUtil; -import org.nl.acs.history.service.DeviceErrorLogService; -import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.enums.InstructionStatusEnum; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.utils.DeviceErrorUtil; -import org.nl.config.SpringContextHolder; -import org.nl.config.language.LangProcess; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.system.service.param.ISysParamService; -import org.springframework.beans.factory.annotation.Autowired; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.*; -import java.util.concurrent.CompletableFuture; - -/** - * 输送线 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - @Autowired - DeviceService deviceservice = SpringContextHolder.getBean(DeviceService.class); - @Autowired - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - AgvService agvService = SpringContextHolder.getBean(AgvService.class); - @Autowired - DeviceErrorLogService errorLogServer = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); - - LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); - - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - - private Date instruction_update_time = new Date(); - private Date require_apply_strangulation_time = new Date(); - private int instruction_update_time_out = 500; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - private Date instruction_apply_time = new Date(); - private int instruction_require_time_out = 3000; - private int require_apply_strangulation_time_out = 4000; - - String notCreateInstMessage = ""; - - - /** - * 心跳 - */ - int heartbeat = 0; - int last_heartbeat = 0; - /** - * 工作模式 - */ - int mode = 0; - int last_mode = 0; - /** - * 光电信号 - */ - int move = 0; - int last_move = 0; - /** - * 托盘方向 - */ - int container_direction = 0; - int last_container_direction = 0; - /** - * 报警 - */ - int error = 0; - int last_error = 0; - /** - * 动作信号 - */ - int action = 0; - int last_action = 0; - /** - * 任务号 - */ - int task = 0; - int last_task = 0; - /** - * 托盘类型 - */ - int container_type = 0; - int last_container_type = 0; - /** - * 纯数字托盘号 - */ - int container_no = 0; - int last_container_no = 0; - - int inventory_qty = 0; - int out_finish = 0; - /** - * 下发命令 - */ - String to_command = null; - String last_to_command = null; - /** - * 下发目标站 - */ - String to_target = null; - String last_to_target = null; - /** - * 下发任务号 - */ - String to_task = null; - String last_to_task = null; - /** - * 下发接纯数字托盘号 - */ - int to_container_no = 0; - int last_to_container_no = 0; - /** - * 下发托盘类型 - */ - int to_container_type = 0; - int last_to_container_type = 0; - - int to_height_level = 0; - int last_to_height_level = 0; - - - //子卷条码 - String material_barcode = null; - String last_material_barcode = null; - /** - * 当前指令 - */ - Instruction inst = null; - - String material = null; - String vehicle_code2; - - Boolean isonline = true; - - Boolean iserror = false; - - /** - * 1-执行任务;2-取货完成;3-放货完成; - */ - int flag; - - - int last_inventory_qty = 0; - int last_out_finish = 0; - - String last_material = null; - String message = null; - String device_code; - String task_code = null; - String vehicle_code; - String inst_message; - - String hand_barcode = null; - - Boolean ignore_pickup_check = false; - - List getDeviceCodeList = null; - - List putDeviceCodeList = null; - - /** - * led点阵屏信息 - */ - JSONObject led_message = null; - - - @Override - public Device getDevice() { - return this.device; - } - - /** - * 请求成功标记 - */ - Boolean requireSucess = false; - - @Override - public void execute() { - try { - device_code = this.getDeviceCode(); - heartbeat = this.itemProtocol.getHeartbeat(); - mode = this.itemProtocol.getMode(); - move = this.itemProtocol.getMove(); - action = this.itemProtocol.getAction(); - container_direction = this.itemProtocol.getContainer_direction(); - container_type = this.itemProtocol.getContainer_type(); - error = this.itemProtocol.getError(); - task = this.itemProtocol.getTask(); - to_command = this.itemProtocol.getTo_command(); - to_target = this.itemProtocol.getTotarget(); - to_task = this.itemProtocol.getTo_task(); - to_container_no = this.itemProtocol.getContainer_direction(); - - - if (move != last_move && last_move == 1 && mode > 0) { - requireSucess = false; - } - - if (mode != last_mode) { - requireSucess = false; - } - - if (move != 0 && task > 0) { - CompletableFuture.runAsync(() -> { - // 异步更新指令状态 - try { - update_instruction_status(); - } catch (Exception e) { - e.printStackTrace(); - log.error("更新指令失败原因:{}", e.getMessage()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("设备号" + device_code + "报错原因:" + e.getMessage()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - }); - if (null != inst) { - inst_message = "指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code(); - vehicle_code2 = inst.getVehicle_code2(); - } - } - - - if (mode == 0) { - this.setIsonline(false); - message = "脱机"; - } else if (error != 0) { - this.setIserror(true); - message = "有报警"; - - } else { - this.setIsonline(true); - this.setIserror(false); - message = ""; - Instruction instruction = null; - List toInstructions; - - switch (mode) { - case 1: - log.debug("弃用(留作兼容)"); - break; - case 2: - //申请任务 - if (move == 1 && !requireSucess) { - instruction_require(); - } else { - String remark = ""; - ; - if (mode != 2) { - remark = "universal_remark2"; - } - if (move != 0) { - remark = "universal_remark3"; - } - if (task != 0) { - remark = "universal_remark4"; - if (ObjectUtil.isNotEmpty(this.inst)) { - this.inst = null; - } - } - if (requireSucess) { - remark = "universal_remark5"; - } - this.setNotCreateInstMessage(remark); - //} - } - break; - case 3: - log.info(this.device_code + ",运行中"); - break; - default: - break; - } - } - - } catch (Exception var17) { - this.iserror = true; - message = "读取信号值时出现异常"; - String extracted = DeviceErrorUtil.extracted(var17); - if (var17 instanceof NullPointerException) { - message += " - 空指针异常"; - // 记录详细的堆栈跟踪信息 - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - var17.printStackTrace(pw); - String stackTrace = sw.toString(); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content(this.device_code + extracted + ",报错信息:" + var17.getMessage() + ",堆栈跟踪:" + stackTrace) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } else { - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content(this.device_code + extracted + ",报错信息:" + var17.getMessage()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - var17.printStackTrace(); - } - } - - last_heartbeat = heartbeat; - last_mode = mode; - last_move = move; - last_error = error; - last_container_direction = container_direction; - last_container_no = container_no; - last_container_type = container_type; - last_action = action; - last_task = task; - last_to_command = to_command; - last_to_target = to_target; - last_to_task = to_task; - last_to_container_no = to_container_no; - last_to_container_type = to_container_type; - } - - - public void writing(int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + org.nl.acs.device_driver.conveyor.belt_conveyor.ItemProtocol.item_to_command; - Map itemMap = new HashMap(); - itemMap.put(to_command, command); - this.control(itemMap); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("下发多个电气信号" + itemMap) - .build(); - logDto.setLog_level(3); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - - private void applyEmptyTask(String type, int mode) { - Date date = new Date(); - if (date.getTime() - this.require_apply_strangulation_time.getTime() - < (long) this.require_apply_strangulation_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return; - } else { - this.require_apply_strangulation_time = date; - try { - JSONObject param = new JSONObject(); - param.put("device_code", device_code); - param.put("container_type", container_type); - param.put("type", type); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("申请空托盘出入库,参数:" + param) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - HttpResponse httpResponse = acsToWmsService.applyTwo(param); - JSONObject jsonObject = null; - if(ObjectUtil.isNotEmpty(httpResponse)){ - String body = httpResponse.body(); - jsonObject = JSONObject.parseObject(body); - } - message = "申请空托盘出入库,返回参数:" + jsonObject; - if (ObjectUtil.isNotNull(jsonObject) && jsonObject.getInteger("status") == 200) { - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(device_code) - .content("申请空托盘出入库,参数,接口返回:" + jsonObject) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); - List list1 = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_command"); - map.put("value", mode); - list1.add(map); - this.writing(list1); - this.requireSucess = true; - } else { - this.iserror = true; - message = "申请空托盘出入库出错,返回参数:" + jsonObject; - LuceneLogDto logDto2 = LuceneLogDto.builder() - .device_code(device_code) - .content("申请空托盘出入库,返回参数:" + jsonObject) - .build(); - logDto2.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto2); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - - /** - * 申请任务 - */ - public synchronized Boolean - instruction_require() { - return true; - } - - public void writing(List list) { - - Map itemMap = new HashMap(); - for (int i = 0; i < list.size(); i++) { - Object ob = list.get(i); - JSONObject json = (JSONObject) JSONObject.toJSON(ob); - if (!StrUtil.isEmpty(json.getString("value"))) { - String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + json.getString("code"); - itemMap.put(to_param, json.getString("value")); - } - } - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("下发多个电气信号" + itemMap) - .build(); - logDto.setLog_level(3); - luceneExecuteLogService.deviceExecuteLog(logDto); - logServer.deviceExecuteLog(device_code, "", "", "下发电气信号:" + itemMap); - try { - this.checkcontrol(itemMap); - } catch (Exception e) { - e.printStackTrace(); - } - - } - - public void writing(String key, String param) { - - String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + key; - //String opcservcerid = this.getDevice().getOpc_server_id(); - //Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - - itemMap.put(to_param, Integer.parseInt(param)); - //itemMap.put(to_param, Integer.parseInt(value)); - this.control(itemMap); - logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + param); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("下发多个电气信号" + itemMap) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - } - - public synchronized boolean finish_instruction() throws Exception { - instructionService.finish(inst); - return true; - } - - @Override - public JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - String move = ""; - String requireSucess = "0"; - if (this.requireSucess) { - requireSucess = "1"; - } - if (this.getMode() == 0) { - mode = LangProcess.msg("universal_off-line"); - } else if (this.getMode() == 1) { - mode = LangProcess.msg("universal_stand-alone"); - } else if (this.getMode() == 2) { - mode = LangProcess.msg("universal_standby"); - } else if (this.getMode() == 3) { - mode = LangProcess.msg("universal_operation"); - } else if (this.getMode() == 5) { - mode = LangProcess.msg("one_mode3"); - } - - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode); - jo.put("message", message); - jo.put("error", ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(this.getError()))); - if (this.getMove() == 0) { - move = LangProcess.msg("universal_no"); - jo.put("hasGoods", false); - } else if (this.getMove() == 1) { - move = LangProcess.msg("universal_yes"); - jo.put("hasGoods", true); - } else if (this.getMove() == 2) { - move = LangProcess.msg("universal_two_yes"); - jo.put("hasGoods", true); - } - String container_type = ""; - if (this.container_type == 1) { - container_type = LangProcess.msg("universal_small_pallets"); - } else if (this.container_type == 2) { - container_type = LangProcess.msg("universal_large_pallets"); - } - jo.put("move", move); - jo.put("task", task); - jo.put("type", container_type); - jo.put("is_click", true); - jo.put("isOnline", this.getIsonline()); - jo.put("requireSucess", requireSucess); - jo.put("hand_barcode", hand_barcode); - jo.put("materiel", material_barcode); - jo.put("inst_message", this.inst_message); - jo.put("notCreateInstMessage", LangProcess.msg(notCreateInstMessage)); - jo.put("vehicle_code2", this.vehicle_code2); - return jo; - } - - - /** - * 更新指令状态 - */ - public synchronized void update_instruction_status() throws Exception { - Date date = new Date(); - if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); - } else { - this.instruction_update_time = date; - inst = checkInst(); - if (inst != null) { - //a点到b点,给状态说允许取货 - if (StrUtil.equals(inst.getInstruction_status(), InstructionStatusEnum.READY.getIndex()) && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { - inst.setInstruction_status(CommonFinalParam.ONE); - inst.setExecute_device_code(this.device_code); - instructionService.update(inst); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task); - } - //当货物到达b点,实现完成指令 - - if (StrUtil.equals(inst.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex()) || StrUtil.equals(inst.getInstruction_status(), InstructionStatusEnum.READY.getIndex())) { - if (StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { - inst.setExecute_device_code(this.device_code); - finish_instruction(); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task); - } - } - } - } - } - - public Instruction checkInst() { - if (ObjectUtil.isNotEmpty(this.inst)) { - if (this.task > 0) { - if (this.inst.getInstruction_code().equals(String.valueOf(this.task))) { - return this.inst; - } else { - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - return inst; - } - } - } else { - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - return inst; - } - return null; - } - - - @Override - public void setDeviceStatus(JSONObject data) { - String requestSucess = data.getString("requireSucess"); - if (StrUtil.equals(requestSucess, "0")) { - this.requireSucess = false; - } else if (StrUtil.equals(requestSucess, "1")) { - this.requireSucess = true; - } - String hand_barcode = data.getString("hand_barcode"); - this.setHand_barcode(hand_barcode); - } - - public static boolean arrayEquals(int[] a, int[] b) { - // 判断两个数组长度是否相等 - if (a.length != b.length) { - return false; - } - // 判断两个数组对应位置上的元素是否相同 - for (int i = 0; i < a.length; i++) { - if (a[i] != b[i]) { - return false; - } - } - return true; - } - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/ItemProtocol.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/ItemProtocol.java deleted file mode 100644 index 3dac73a..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/ItemProtocol.java +++ /dev/null @@ -1,197 +0,0 @@ -package org.nl.acs.device_driver.conveyor.belt_conveyor; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -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_mode = "mode"; - /** - * 光电信号 - */ - public static String item_move = "move"; - /** - * 动作信号 - */ - public static String item_action = "action"; - /** - * 报警 - */ - public static String item_error = "error"; - /** - * 托盘方向 - */ - public static String item_container_direction = "container_direction"; - /** - * 托盘类型 - */ - public static String item_container_type = "container_type"; - /** - * 任务号 - */ - public static String item_task = "task"; - - /** - * 下发命令 - */ - public static String item_to_command = "to_command"; - /** - * 下发托盘类型 - */ - public static String item_to_container_type = "to_container_type"; - /** - * 下发任务号 - */ - public static String item_to_task = "to_task"; - /** - * 下发目标站 - */ - public static String item_to_target = "to_target"; - - - - - - - - - private BeltConveyorDeviceDriver driver; - - public ItemProtocol(BeltConveyorDeviceDriver driver) { - this.driver = driver; - } - - - public int getHeartbeat() { - return this.getOpcIntegerValue(item_heartbeat); - } - - public int getMode() { - return this.getOpcIntegerValue(item_mode); - } - - public int getMove() { - return this.getOpcIntegerValue(item_move); - } - - public int getContainer_direction() { - return this.getOpcIntegerValue(item_container_direction); - } - - public int getContainer_type() { - return this.getOpcIntegerValue(item_container_type); - } - - public int getAction() { - return this.getOpcIntegerValue(item_action); - } - - - public int getError() { - return this.getOpcIntegerValue(item_error); - } - - public int getTask() { - return this.getOpcIntegerValue(item_task); - } - - public String getTo_task() { - return this.getOpcStringValue(item_to_task); - } - - - - - public String getTotarget() { - return this.getOpcStringValue(item_to_target); - } - - public String getTo_command() { - return this.getOpcStringValue(item_to_command); - } - - public int getTo_container_type() { - return this.getOpcIntegerValue(item_to_container_type); - } - - Boolean isonline; - - public int getOpcIntegerValue(String protocol) { - Integer value = this.driver.getIntegeregerValue(protocol); - if (value == null) { - setIsonline(false); - } else { - setIsonline(true); - return value; - } - return 0; - } - - - public String getOpcStringValue(String protocol) { - String value = this.driver.getStringValue(protocol); - if (StrUtil.isBlank(value)) { - //throw new BusinessException("{} : {}", new Object[]{protocol, DeviceErrorProtocol.getMessage(10000)}); - - } else { - return value; - } - return ""; - } - - public int[] getOpcArrayValue(String protocol) { - int[] arrayValue = this.driver.getIntegeregerArrayValue(protocol); - if (ObjectUtil.isNull(arrayValue)) { - - } else { - return arrayValue; - } - return new int[3]; - } - - - public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "DB101.B0")); - list.add(new ItemDto(item_mode, "工作模式", "DB101.B2")); - list.add(new ItemDto(item_move, "光电信号", "DB101.B3")); - list.add(new ItemDto(item_container_direction, "托盘方向", "DB101.B4")); - list.add(new ItemDto(item_container_type, "托盘类型", "DB101.B5")); - list.add(new ItemDto(item_action, "动作类型", "DB101.B6")); - list.add(new ItemDto(item_error, "报警", "DB101.B58")); - list.add(new ItemDto(item_task, "任务号", "DB101.D68")); - return list; - } - - public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_target, "下发仓位号", "DB102.W2")); - list.add(new ItemDto(item_to_command, "下发命令", "DB102.W4")); - list.add(new ItemDto(item_to_task, "下发任务号", "DB102.D1")); - list.add(new ItemDto(item_to_container_type, "下发托盘类型", "DB102.B5")); - - return list; - } - - @Override - public String toString() { - return ""; - } - -} - diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/Paper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/Paper.java deleted file mode 100644 index d98844d..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/Paper.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.nl.acs.device_driver.conveyor.belt_conveyor; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class Paper implements Serializable { - /** - * 设备号 - */ - private String device_code; - - private String material_code; - private String qty; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_inspect_site/StandardInspectSiteDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_inspect_site/StandardInspectSiteDeviceDriver.java index 2fc71f1..c695b29 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_inspect_site/StandardInspectSiteDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_inspect_site/StandardInspectSiteDeviceDriver.java @@ -257,12 +257,6 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp } catch (Exception e) { e.printStackTrace(); } - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(devicecode) - .content("下发多个电气信号" + itemMap) - .build(); - logDto.setLog_level(3); - luceneExecuteLogService.deviceExecuteLog(logDto); } public void writing(int type, int command) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index 41870a3..7473b29 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -1,35 +1,18 @@ package org.nl.acs.device_driver.conveyor.standard_ordinary_site; -import cn.hutool.core.util.ObjectUtil; -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.agv.server.NDCAgvService; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device.service.dto.DeviceDto; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.driver.AbstractDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.history.ErrorUtil; -import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.ext.hk.service.AcsToHkService; import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.config.SpringContextHolder; -import org.nl.config.language.LangProcess; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Date; /** @@ -39,190 +22,32 @@ import java.util.Date; @Data @RequiredArgsConstructor public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { - @Autowired - DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); - @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 - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - @Autowired - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - @Autowired - NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); + private final InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); + private final TaskService taskService = SpringContextHolder.getBean(TaskService.class); + private final AcsToHkService acsToHkService = SpringContextHolder.getBean(AcsToHkService.class); - Integer hasGoods = 0; - int error = 0; - Boolean iserror = false; - Boolean islock = false; - - // 1 上位系统允许进入 2 上位系统允许离开 - int option = 0; - - int branchProtocol = 0; - int last_branchProtocol = 0; - /** - * 是否需要输入物料 - */ - String input_material = "0"; - /** - * 备注 - */ - String remark = ""; - /** - * 数量 - */ - String qty = ""; - /** - * 批次 - */ - String batch = ""; - /** - * 物料 - */ - String material = ""; - /** - * 目标点位 - */ - String purpose = ""; - /** - * 当前指令 - */ - Instruction inst = null; - /** - * 上次指令 - */ - Instruction last_inst = null; - - boolean requireSucess = false; - - /** - * 触摸屏手动触发任务 - */ - private Boolean is_has_task = false; - - /** - * 申请搬运任务 - */ - private Boolean apply_handling = false; - - /** - * 忽略校验 - */ - private Boolean standard_ordinary_site = false; - /** - * 申请物料 - */ - private Boolean apply_material = false; - - /** - * 1取货完成 2放货完成 3进入区域 4离开区域 - */ - private int flag; - - //任务号 - String task_code; - - /** - * 人工确认信号 默认0 agv到达后请求置1 等人工确认后变为2 反馈agv后继续为0 - */ - private int manua_confirm = 0; String device_code = null; - String container; - String container_type_desc; - String last_container_type_desc; - String last_container; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - - private int instruction_require_time_out; String message; - // 1 上位系统允许进入 2 上位系统允许离开 - int status = 0; - - int agvphase = 0; - int index = 0; - - int mode = 2; - - int move; @Override public void execute() { - hasGoods = this.getDevice().getHas_goods(); - batch = this.getDevice().getBatch(); - device_code = this.getDeviceCode(); + device_code = this.getDevice().getDevice_code(); } @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); - String mode = ""; -// String action = ""; - String move = ""; - String option = ""; - if (this.getOption() == 0) { - option = LangProcess.msg("universal_actionMessage1"); - } else if (this.getOption() == 1) { - option = LangProcess.msg("universal_actionMessage2"); - } else if (this.getOption() == 2) { - option = LangProcess.msg("universal_actionMessage3"); - } - if (this.getMode() == 0) { - mode = LangProcess.msg("universal_off-line"); - } else if (this.getMode() == 1) { - mode = LangProcess.msg("universal_stand-alone"); - } else if (this.getMode() == 2) { - mode = LangProcess.msg("universal_standby"); - } else if (this.getMode() == 3) { - mode = LangProcess.msg("universal_operation"); - } - - - if (this.getMove() == 0) { - move = LangProcess.msg("universal_no"); - jo.put("hasGoods", false); - } else if (this.getMove() == 1) { - move = LangProcess.msg("universal_yes"); - jo.put("hasGoods", true); - } else if (this.getMove() == 2) { - move = LangProcess.msg("universal_two_yes"); - jo.put("hasGoods", true); - } - jo.put("device_name", this.getDevice().getDevice_name()); - DeviceDto dto = deviceservice.findByCode(this.getDevice().getDevice_code()); - jo.put("zh_device_name",dto.getZh_device_name()); - jo.put("en_device_name",dto.getEn_device_name()); - jo.put("in_device_name",dto.getIn_device_name()); - jo.put("mode", mode); - jo.put("move", move); -// jo.put("action", action); - jo.put("isOnline", true); -// jo.put("error", ErrorUtil.getDictDetail("error_type", String.valueOf(this.getError()))); - jo.put("isError", this.getIserror()); - jo.put("option", option); - jo.put("is_click", true); return jo; } @Override public void setDeviceStatus(JSONObject data) { - String flag = data.getString("option"); - if(StrUtil.isNotEmpty(flag)){ - option = Integer.parseInt(flag); - } + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/ItemProtocol.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/ItemProtocol.java new file mode 100644 index 0000000..33e4ce2 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/ItemProtocol.java @@ -0,0 +1,64 @@ +package org.nl.acs.device_driver.conveyor.standard_weight; + +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_weight = "weight"; + + private StandardWeightSiteDeviceDriver driver; + + public ItemProtocol(StandardWeightSiteDeviceDriver driver) { + this.driver = driver; + } + + public Float getWeight() { + return this.getOpcFloatValue(item_weight); + } + + Boolean isonline; + + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public Float getOpcFloatValue(String protocol) { + Float value = this.driver.getFloatValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0.0f; + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_weight, "重量", "40001")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + return list; + } + +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/XgagvDefination.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/StandardWeightSiteDefination.java similarity index 67% rename from nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/XgagvDefination.java rename to nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/StandardWeightSiteDefination.java index 1ce3a1a..19f4c03 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/xg_agv/XgagvDefination.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/StandardWeightSiteDefination.java @@ -1,4 +1,4 @@ -package org.nl.acs.device_driver.agv.xg_agv; +package org.nl.acs.device_driver.conveyor.standard_weight; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; import org.nl.acs.device.domain.Device; @@ -11,40 +11,41 @@ import java.util.LinkedList; import java.util.List; /** - * magic3.0 + * 检测站点驱动定义 + * 说明:该站点为普通带光电检测站点 */ @Service -public class XgagvDefination implements OpcDeviceDriverDefination { +public class StandardWeightSiteDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "xg_agv"; + return "standard_weight"; } @Override public String getDriverName() { - return "仙工AGV"; + return "标准版-称重站点"; } @Override public String getDriverDescription() { - return "仙工AGV"; + return "标准版-称重站点"; } @Override public DeviceDriver getDriverInstance(Device device) { - return (new XgagvDeviceDriver()).setDevice(device).setDriverDefination(this); + return (new StandardWeightSiteDeviceDriver()).setDevice(device).setDriverDefination(this); } @Override public Class getDeviceDriverType() { - return XgagvDeviceDriver.class; + return StandardWeightSiteDeviceDriver.class; } @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.agv); + types.add(DeviceType.conveyor); return types; } @@ -57,4 +58,5 @@ public class XgagvDefination implements OpcDeviceDriverDefination { public List getWriteableItemDtos() { return ItemProtocol.getWriteableItemDtos(); } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/StandardWeightSiteDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/StandardWeightSiteDeviceDriver.java new file mode 100644 index 0000000..c9c1968 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/standard_weight/StandardWeightSiteDeviceDriver.java @@ -0,0 +1,194 @@ +package org.nl.acs.device_driver.conveyor.standard_weight; + +import cn.hutool.core.util.ObjectUtil; +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_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.enums.ApplyPassEnum; +import org.nl.acs.ext.hk.UnifiedResponse; +import org.nl.acs.ext.hk.service.AcsToHkService; +import org.nl.acs.ext.hk.service.data.BoxApplyPassReq; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.enums.InstTypeEnum; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.task.service.TaskService; +import org.nl.config.SpringContextHolder; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; + +import java.util.Optional; + + +/** + * 称重站点驱动 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class StandardWeightSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { + + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + private final InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); + private final AcsToHkService acsToHkService = SpringContextHolder.getBean(AcsToHkService.class); + private final LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); + private final AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsService.class); + private final TaskService taskService = SpringContextHolder.getBean(TaskService.class); + + private Float weight = 0.0f; + private Float last_weight = 0.0f; + + String deviceCode; + + /** + * CTU请求取货标记和任务号 + */ + private volatile String reqTakeInstCode = null; + private volatile Boolean reqTakeRequireSuccess = false; + + /** + * 请求时间 + */ + private long requireTime = System.currentTimeMillis(); + + /** + * 请求间隔时间 + */ + private long requireTimeOut = 5000L; + + /** + * 反馈WMS重量执行次数 + */ + private int executeTimes = 0; + + + @Override + public Device getDevice() { + return this.device; + } + + private boolean isTimeValid(long currentTimeMillis) { + return currentTimeMillis - this.requireTime >= this.requireTimeOut; + } + + @Override + public void execute() { + this.deviceCode = this.getDevice().getDevice_code(); + this.weight = this.itemProtocol.getWeight(); + + if (!this.weight.equals(this.last_weight)) { + luceneExecuteLogService.deviceExecuteLog(new LuceneLogDto(this.deviceCode, "自动线程读取信号: weight,由" + this.last_weight + "->" + this.weight)); + } + + if (this.reqTakeRequireSuccess && ObjectUtil.isNotEmpty(this.reqTakeInstCode)) { + Instruction instruction = instructionService.findByCodeFromCache(this.reqTakeInstCode); + //取货申请 + if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getStart_device_code(), this.deviceCode)) { + if (StrUtil.equals(InstTypeEnum.CTU_IN_TASK.getCode(), instruction.getInstruction_type())) { + boolean feedFlag = Optional.ofNullable(this.getDevice().getExtraValue().get("isFeedWeight")).map(Object::toString).map(Boolean::parseBoolean).orElse(false); + if (feedFlag) { + this.feedWeight(instruction); + } else { + this.boxApplyPass(ApplyPassEnum.GET_PASS.getCode()); + } + } else { + this.boxApplyPass(ApplyPassEnum.GET_PASS.getCode()); + } + } + //放货申请 + else if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getNext_device_code(), this.deviceCode)) { + boolean putFlag = Optional.ofNullable(this.getDevice().getExtraValue().get("ignore_release_check")).map(Object::toString).map(Boolean::parseBoolean).orElse(false); + if (putFlag) { + this.applyPass(instruction); + } else { + this.boxApplyPass(ApplyPassEnum.PUT_PASS.getCode()); + } + } + } + this.last_weight = this.weight; + } + + + private void feedWeight(Instruction instruction) { + long currentTimeMillis = System.currentTimeMillis(); + if (!isTimeValid(currentTimeMillis)) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.requireTimeOut); + } else { + this.requireTime = currentTimeMillis; + JSONObject reqParam = new JSONObject(); + reqParam.put("task_code", instruction.getTask_code()); + reqParam.put("weigh_qty", this.weight); + UnifiedResponse wmsUnifiedResponse = acsToWmsService.feedWeight(reqParam, JSONObject.class); + if (wmsUnifiedResponse.isSuccess()) { + JSONObject data = wmsUnifiedResponse.getData(); + if (data != null && "1".equals(data.getString("is_weigh"))) { + this.boxApplyPass(ApplyPassEnum.GET_PASS.getCode()); + } else { + try { + instructionService.cancel(instruction.getInstruction_id()); + taskService.cancelNoSendWms(instruction.getTask_id()); + } catch (Exception e) { + luceneExecuteLogService.deviceExecuteLog(new LuceneLogDto(this.deviceCode, "反馈重量后,取消指令出现异常, 异常原因:" + e.getMessage())); + } + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + } + } + } + } + + private void applyPass(Instruction instruction) { + long currentTimeMillis = System.currentTimeMillis(); + if (!isTimeValid(currentTimeMillis)) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.requireTimeOut); + } else { + this.requireTime = currentTimeMillis; + JSONObject reqParam = new JSONObject(); + reqParam.put("task_code", instruction.getTask_code()); + reqParam.put("point_code", instruction.getNext_point_code()); + UnifiedResponse wmsUnifiedResponse = acsToWmsService.applyPass(reqParam, JSONObject.class); + if (wmsUnifiedResponse.isSuccess() && wmsUnifiedResponse.getData() != null) { + JSONObject data = wmsUnifiedResponse.getData(); + if (data != null && "1".equals(data.getString("is_confirm"))) { + this.boxApplyPass(ApplyPassEnum.PUT_PASS.getCode()); + this.reqTakeRequireSuccess = true; + this.reqTakeInstCode = null; + } + } + } + } + + private void boxApplyPass(String type) { + BoxApplyPassReq bapReq = BoxApplyPassReq.builder() + .taskCode(this.reqTakeInstCode) + .type(type) + .build(); + UnifiedResponse unifiedResponse = acsToHkService.boxApplyPass(bapReq, String.class); + if (unifiedResponse.isSuccess()) { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + } + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/OpcDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/OpcDeviceDriver.java index dec0681..2015e8f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/OpcDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/OpcDeviceDriver.java @@ -60,6 +60,8 @@ public interface OpcDeviceDriver extends DeviceDriver { dto.setItem_code(json.getString("extra_code")); dto.setItem_value(json.getString("extra_value")); + dto.setItem_value_type(json.getString("value_type")); + dto.setItem_name(json.getString("extra_name")); returns.add(dto); } return returns; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/standard_manipulator/StandardManipulatoDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/standard_manipulator/StandardManipulatoDeviceDriver.java index 871a173..255b32e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/standard_manipulator/StandardManipulatoDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/standard_manipulator/StandardManipulatoDeviceDriver.java @@ -14,8 +14,6 @@ import org.nl.acs.device_driver.FeedLmsRealFailed; 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.data.ApplyManipulatorActionRequest; -import org.nl.acs.ext.wms.data.ApplyManipulatorActionResponse; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.history.ErrorUtil; @@ -184,12 +182,6 @@ public class StandardManipulatoDeviceDriver extends AbstractOpcDeviceDriver impl } catch (Exception var17) { this.iserror = true; - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content(this.device_code + "读取信号值时出现异常:" + var17.getMessage() + ",this.itemProtocol is null") - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); var17.printStackTrace(); } @@ -206,48 +198,6 @@ public class StandardManipulatoDeviceDriver extends AbstractOpcDeviceDriver impl } - /** - * // * 申请任务 - * // * - * // * @param - * // - */ - public synchronized void applyTask() { - ApplyManipulatorActionRequest applyManipulatorActionRequest = new ApplyManipulatorActionRequest(); - ApplyManipulatorActionResponse applyManipulatorActionResponse; - String direction = (String) this.getDevice().getExtraValue().get("direction"); - applyManipulatorActionRequest.setDevice_code(device_code); - applyManipulatorActionRequest.setDirection(direction);//rgv申请位置 - applyManipulatorActionRequest.setQzz_no(String.valueOf(barcode));//气涨轴编码 - applyManipulatorActionResponse = acsToWmsService.applyManipulatorActionRequest(applyManipulatorActionRequest); - Map map = new LinkedHashMap<>(); - if (applyManipulatorActionResponse.getstatus() == 200) { - Map data = applyManipulatorActionResponse.getData(); - String point_code2 = data.get("point_code2");//目标站点 - Device deviceByCode = deviceAppService.findDeviceByCode(point_code2); - String address = deviceByCode.getExtraValue().get("address").toString(); - String material_code = data.get("material_code");//子卷号 - String to_is_labeling = data.get("to_is_labeling");//是否贴标 - map.put("to_target", address); - map.put("to_sub_volume_no", material_code); - map.put("to_command", "1"); - if (StrUtil.equals("1",to_is_labeling)){ - map.put("to_is_labeling","1"); - }else { - map.put("to_is_labeling","0"); - } - this.writing(map); - logServer.deviceExecuteLog(this.device_code, "", "", "申请行架任务,返回参数:" + applyManipulatorActionResponse); - message = "universal_message12"; - requireSucess = true; - } else { - map.put("to_command", 99); - this.writing(map); - requireSucess = true; - message = "universal_message13"; - logServer.deviceExecuteLog(this.device_code, "", "", "申请行架任务反馈失败,返回参数:" + applyManipulatorActionResponse); - } - } public void writing(Map map) { DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); @@ -259,13 +209,6 @@ public class StandardManipulatoDeviceDriver extends AbstractOpcDeviceDriver impl }); if (ObjectUtil.isNotEmpty(itemMap)) { this.control(itemMap); - logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(device_code) - .content("下发多个电气信号" + itemMap) - .build(); - logDto.setLog_level(3); - luceneExecuteLogService.deviceExecuteLog(logDto); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDefination.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/storage/standard_storage/StandardStorageDefination.java similarity index 64% rename from nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDefination.java rename to nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/storage/standard_storage/StandardStorageDefination.java index 2fc507b..31ff435 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDefination.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/storage/standard_storage/StandardStorageDefination.java @@ -1,4 +1,4 @@ -package org.nl.acs.device_driver.agv.ndctwo; +package org.nl.acs.device_driver.storage.standard_storage; import org.nl.acs.device.domain.Device; import org.nl.acs.device.enums.DeviceType; @@ -10,40 +10,40 @@ import java.util.LinkedList; import java.util.List; /** - * NDC双工位AGV + * 货架 */ @Service -public class AgvNdcTwoDefination implements DeviceDriverDefination { +public class StandardStorageDefination implements DeviceDriverDefination { @Override public String getDriverCode() { - return "agv_ndc_two"; + return "standard_storage"; } @Override public String getDriverName() { - return "NDC双工位AGV"; + return "标准版-货架"; } @Override public String getDriverDescription() { - return "NDC双工位AGV"; + return "标准版-货架"; } @Override public DeviceDriver getDriverInstance(Device device) { - return (new AgvNdcTwoDeviceDriver()).setDevice(device).setDriverDefination(this); + return (new StandardStorageDeviceDriver()).setDevice(device).setDriverDefination(this); } @Override public Class getDeviceDriverType() { - return AgvNdcTwoDeviceDriver.class; + return StandardStorageDeviceDriver.class; } @Override public List getFitDeviceTypes() { List types = new LinkedList(); - types.add(DeviceType.agv); + types.add(DeviceType.storage); return types; } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/storage/standard_storage/StandardStorageDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/storage/standard_storage/StandardStorageDeviceDriver.java new file mode 100644 index 0000000..0b572f2 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/storage/standard_storage/StandardStorageDeviceDriver.java @@ -0,0 +1,21 @@ +package org.nl.acs.device_driver.storage.standard_storage; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.StorageDeviceDriver; +import org.nl.acs.device_driver.driver.AbstractDeviceDriver; + + +/** + * 标准版货架 + */ +@Slf4j +@Data +public class StandardStorageDeviceDriver extends AbstractDeviceDriver implements RouteableDeviceDriver, StorageDeviceDriver, DeviceDriver { + public StandardStorageDeviceDriver() { + + } +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/ItemProtocol.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/ItemProtocol.java new file mode 100644 index 0000000..16decc5 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/ItemProtocol.java @@ -0,0 +1,65 @@ +package org.nl.acs.device_driver.temperature_humidity_sensor; + +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_temperature = "temperature"; + + /** + * 湿度 + */ + public static String item_humidity = "humidity"; + + + + private TemperatureHumidityDeviceDriver driver; + + + + public ItemProtocol(TemperatureHumidityDeviceDriver driver) { + this.driver = driver; + } + + + public Float getTemperature() { + return this.getOpcFloatValue(item_temperature); + } + + + public Float getHumidity() { + return this.getOpcFloatValue(item_humidity); + } + + + public Float getOpcFloatValue(String protocol) { + Float value = this.driver.getFloatValue(protocol); + if (value == null) { + return 0.0f; + } else { + return value; + } + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_temperature, "温度", "31009")); + list.add(new ItemDto(item_humidity, "湿度", "31011")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList<>(); + return list; + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDefination.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/TemperatureHumidityDefination.java similarity index 73% rename from nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDefination.java rename to nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/TemperatureHumidityDefination.java index 947ad84..3fa523f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDefination.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/TemperatureHumidityDefination.java @@ -1,4 +1,4 @@ -package org.nl.acs.device_driver.conveyor.belt_conveyor; +package org.nl.acs.device_driver.temperature_humidity_sensor; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; import org.nl.acs.device.domain.Device; @@ -10,35 +10,31 @@ import org.springframework.stereotype.Service; import java.util.LinkedList; import java.util.List; -/** - * 标准版-输送机 - */ @Service -public class BeltConveyorDefination implements OpcDeviceDriverDefination { +public class TemperatureHumidityDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "belt_conveyor"; + return "temperature_humidity_driver"; } @Override public String getDriverName() { - return "标准版-输送线"; + return "温湿度-传感器"; } @Override public String getDriverDescription() { - return "标准版-输送线"; + return "温湿度-传感器"; } @Override public DeviceDriver getDriverInstance(Device device) { - return (new BeltConveyorDeviceDriver()).setDevice(device).setDriverDefination(this); - + return (new TemperatureHumidityDeviceDriver()).setDevice(device).setDriverDefination(this); } @Override public Class getDeviceDriverType() { - return BeltConveyorDeviceDriver.class; + return TemperatureHumidityDeviceDriver.class; } @Override @@ -57,5 +53,4 @@ public class BeltConveyorDefination implements OpcDeviceDriverDefination { public List getWriteableItemDtos() { return ItemProtocol.getWriteableItemDtos(); } - } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/TemperatureHumidityDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/TemperatureHumidityDeviceDriver.java new file mode 100644 index 0000000..8fee7b2 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/temperature_humidity_sensor/TemperatureHumidityDeviceDriver.java @@ -0,0 +1,83 @@ +package org.nl.acs.device_driver.temperature_humidity_sensor; + +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_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.monitor.DeviceStageMonitor; +import org.nl.config.SpringContextHolder; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; + + +/** + * RGV + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class TemperatureHumidityDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { + + protected ItemProtocol itemProtocol = new ItemProtocol(this); + private final LuceneExecuteLogService logService = SpringContextHolder.getBean(LuceneExecuteLogService.class); + + /** + * 当前设备号 + */ + private String device_code; + + /** + * 温度 + */ + private float temperature = 0.0f; + private float last_temperature = 0.0f; + + /** + * 湿度 + */ + private float humidity = 0.0f; + private float last_humidity = 0.0f; + + + @Override + public Device getDevice() { + return this.device; + } + + @Override + public void execute() { + + this.device_code = this.getDevice().getDevice_code(); + this.temperature = this.itemProtocol.getTemperature(); + this.humidity = this.itemProtocol.getHumidity(); + + if (this.temperature != this.last_temperature) { + logService.deviceExecuteLog(new LuceneLogDto(this.device_code, "自动线程读取信号: 温度—temperature,由" + this.last_temperature + "->" + this.temperature)); + } + + if (this.humidity != this.last_humidity) { + logService.deviceExecuteLog(new LuceneLogDto(this.device_code, "自动线程读取信号: 湿度—humidity,由" + this.last_humidity + "->" + this.humidity)); + } + + this.last_temperature = this.temperature; + this.last_humidity = this.humidity; + } + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/enums/ApplyPassEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/enums/ApplyPassEnum.java new file mode 100644 index 0000000..3cd2a88 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/enums/ApplyPassEnum.java @@ -0,0 +1,39 @@ +package org.nl.acs.ext.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Description TODO + * @Author Gengby + * @Date 2025/9/9 + */ +@Getter +@AllArgsConstructor +public enum ApplyPassEnum { + + GET_PASS("1", "取货申请通过"), + PUT_PASS( "2", "放货申请通过"); + + + /** + * 编码 + */ + private String code; + /** + * 名字 + */ + private String name; + + /** + * 构造方法 + * + * @param index + * @param code + * @param name + */ + ApplyPassEnum(String index, String code, String name) { + this.code = code; + this.name = name; + } +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/enums/ConfirmEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/enums/ConfirmEnum.java new file mode 100644 index 0000000..338f335 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/enums/ConfirmEnum.java @@ -0,0 +1,39 @@ +package org.nl.acs.ext.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Description TODO + * @Author Gengby + * @Date 2025/9/9 + */ +@Getter +@AllArgsConstructor +public enum ConfirmEnum { + + GET_CONFIRM("1", "确认取货"), + PUT_CONFIRM("2", "确认放货"); + + + /** + * 编码 + */ + private String code; + /** + * 名字 + */ + private String name; + + /** + * 构造方法 + * + * @param index + * @param code + * @param name + */ + ConfirmEnum(String index, String code, String name) { + this.code = code; + this.name = name; + } +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkHttpUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkHttpUtil.java new file mode 100644 index 0000000..c39b388 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkHttpUtil.java @@ -0,0 +1,131 @@ +package org.nl.acs.ext.hk; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import org.nl.acs.AcsConfig; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.ext.hk.log.ToOthersInterfaceLog; +import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +@Component +public class HkHttpUtil { + + private static final RequestAdapter REQUEST_ADAPTER = new HkRequestAdapter(); + private static final ResponseAdapter RESPONSE_ADAPTER = new HkResponseAdapter(); + + @Autowired + private ISysParamService paramService; + + @ToOthersInterfaceLog("ACS->HK") + public UnifiedResponse sendPostRequest(String path, W requestParam, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HK).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HK") + public UnifiedResponse sendPostRequest(String path, W requestParam) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HK).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HK") + public UnifiedResponse sendPostRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HK).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HK") + public UnifiedResponse sendPostRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HK).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HK") + public UnifiedResponse sendGetRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HK).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HK") + public UnifiedResponse sendGetRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HK).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkRequestAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkRequestAdapter.java new file mode 100644 index 0000000..87421c8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkRequestAdapter.java @@ -0,0 +1,20 @@ +package org.nl.acs.ext.hk; + +import org.nl.acs.AcsConfig; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; + + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +public class HkRequestAdapter implements RequestAdapter { + @Override + public String getUrl() { + ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); + return paramService.findByCode(AcsConfig.HK_URL).getValue(); + } + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkResponseAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkResponseAdapter.java new file mode 100644 index 0000000..b95d679 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/HkResponseAdapter.java @@ -0,0 +1,39 @@ +package org.nl.acs.ext.hk; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.util.Collection; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +public class HkResponseAdapter implements ResponseAdapter { + + @Override + public UnifiedResponse adapt(String responseBody, Class type) { + JSONObject resp = JSON.parseObject(responseBody); + boolean isSuccess = resp.getInteger("code") == 0; + String message = resp.getString("message"); + String reqCode = resp.getString("reqCode"); + if (type != null) { + Object dataObject = resp.get("data"); + T data; + if (type == String.class) { + data = type.cast(dataObject.toString()); + } else if (type == Object.class) { + data = type.cast(dataObject); + } else if (type.isArray() || Collection.class.isAssignableFrom(type)) { + data = JSON.parseObject(dataObject.toString(), type); + } else { + data = JSON.parseObject(resp.getString("data"), type); + } + return new UnifiedResponse<>(isSuccess, message, reqCode, data); + } + return new UnifiedResponse<>(isSuccess, message, reqCode); + } + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/RequestAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/RequestAdapter.java new file mode 100644 index 0000000..59de74b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/RequestAdapter.java @@ -0,0 +1,10 @@ +package org.nl.acs.ext.hk; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +public interface RequestAdapter { + String getUrl(); +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/ResponseAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/ResponseAdapter.java new file mode 100644 index 0000000..7f8be2a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/ResponseAdapter.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.hk; + + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +public interface ResponseAdapter { + public UnifiedResponse adapt(String responseBody, Class type); +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/UnifiedResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/UnifiedResponse.java new file mode 100644 index 0000000..501eda1 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/UnifiedResponse.java @@ -0,0 +1,55 @@ +package org.nl.acs.ext.hk; + + +public class UnifiedResponse { + private boolean success; + private String message; + private String reqCode; + private T data; + + public UnifiedResponse(boolean success, String message, T data) { + this.success = success; + this.message = message; + this.data = data; + } + + public UnifiedResponse(boolean success, String message, String reqCode, T data) { + this.success = success; + this.message = message; + this.reqCode = reqCode; + this.data = data; + } + + + public UnifiedResponse(boolean success, String message) { + this.success = success; + this.message = message; + } + + public UnifiedResponse(boolean success, String message, String reqCode) { + this.success = success; + this.message = message; + this.reqCode = reqCode; + } + + public boolean isSuccess() { + return this.success; + } + + public String getMessage() { + return this.message; + } + + public String getReqCode() { + return this.reqCode; + } + + public T getData() { + return this.data; + } + + public void setData(T data) { + this.data = data; + } +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/OtherToInterfaceLogAspect.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/OtherToInterfaceLogAspect.java new file mode 100644 index 0000000..6761503 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/OtherToInterfaceLogAspect.java @@ -0,0 +1,109 @@ +package org.nl.acs.ext.hk.log; + +import com.alibaba.fastjson.JSON; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.nl.acs.ext.hk.utils.IpUtil; +import org.nl.common.exception.BadRequestException; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.*; + +import java.lang.reflect.Method; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/7/8 + */ +@Aspect +@Component +public class OtherToInterfaceLogAspect { + + @Autowired + private LuceneExecuteLogService logService; + + @Around("@annotation(org.nl.acs.ext.hk.log.OthersToInterfaceLog)") + public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { + long startTime = System.currentTimeMillis(); + + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + + Class targetClass = joinPoint.getTarget().getClass(); + RequestMapping classRequestMapping = targetClass.getAnnotation(RequestMapping.class); + String classUrlValue = classRequestMapping != null ? String.join(",", classRequestMapping.value()) : "No Class Annotation"; + + String methodUrlValue = ""; + if (method.isAnnotationPresent(GetMapping.class)) { + GetMapping getMapping = method.getAnnotation(GetMapping.class); + methodUrlValue = String.join(",", getMapping.value()); + } else if (method.isAnnotationPresent(PostMapping.class)) { + PostMapping postMapping = method.getAnnotation(PostMapping.class); + methodUrlValue = String.join(",", postMapping.value()); + } else if (method.isAnnotationPresent(PutMapping.class)) { + PutMapping putMapping = method.getAnnotation(PutMapping.class); + methodUrlValue = String.join(",", putMapping.value()); + } else if (method.isAnnotationPresent(DeleteMapping.class)) { + DeleteMapping deleteMapping = method.getAnnotation(DeleteMapping.class); + methodUrlValue = String.join(",", deleteMapping.value()); + } else if (method.isAnnotationPresent(RequestMapping.class)) { + RequestMapping methodRequestMapping = method.getAnnotation(RequestMapping.class); + methodUrlValue = String.join(",", methodRequestMapping.value()); + } + String request_direction = ""; + if (method.isAnnotationPresent(OthersToInterfaceLog.class)) { + OthersToInterfaceLog interfaceLog = method.getAnnotation(OthersToInterfaceLog.class); + request_direction = interfaceLog.value(); + } + + String methodName = joinPoint.getSignature().getName(); + Object[] args = joinPoint.getArgs(); + + LuceneLogDto logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(IpUtil.localIP() + classUrlValue + methodUrlValue) + .request_direction(request_direction) + .request_param(JSON.toJSONString(args)) + .method(methodName) + .content("开始请求") + .build(); + logService.interfaceExecuteLog(logDto); + Object result = null; + try { + result = joinPoint.proceed(); + } catch (Exception e) { + logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(IpUtil.localIP() + classUrlValue + methodUrlValue) + .request_direction(request_direction) + .request_param(JSON.toJSONString(args)) + .method(methodName) + .response_param(e.getMessage()) + .executeTime(System.currentTimeMillis() - startTime) + .content("响应请求") + .build(); + logService.interfaceExecuteLog(logDto); + throw new BadRequestException(e.getMessage()); + } + logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(IpUtil.localIP() + classUrlValue + methodUrlValue) + .request_direction(request_direction) + .request_param(JSON.toJSONString(args)) + .method(methodName) + .response_param(JSON.toJSONString(result)) + .executeTime(System.currentTimeMillis() - startTime) + .content("响应请求") + .build(); + logService.interfaceExecuteLog(logDto); + return result; + } +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/OthersToInterfaceLog.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/OthersToInterfaceLog.java new file mode 100644 index 0000000..9a99667 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/OthersToInterfaceLog.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.hk.log; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface OthersToInterfaceLog { + String value() default ""; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/ToOtherInterfaceLogAspect.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/ToOtherInterfaceLogAspect.java new file mode 100644 index 0000000..f1a1974 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/ToOtherInterfaceLogAspect.java @@ -0,0 +1,139 @@ +package org.nl.acs.ext.hk.log; + +import com.alibaba.fastjson.JSON; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.nl.common.exception.BadRequestException; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.ReflectionUtils; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/7/8 + */ +@Aspect +@Component +public class ToOtherInterfaceLogAspect { + + private static final ConcurrentMap, Field> fieldCache = new ConcurrentHashMap<>(); + private static final ConcurrentMap, Method> methodCache = new ConcurrentHashMap<>(); + + @Autowired + private LuceneExecuteLogService logService; + + @Around("@annotation(org.nl.acs.ext.hk.log.ToOthersInterfaceLog)") + public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { + long startTime = System.currentTimeMillis(); + + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + + + String request_direction = ""; + if (method.isAnnotationPresent(ToOthersInterfaceLog.class)) { + ToOthersInterfaceLog interfaceLog = method.getAnnotation(ToOthersInterfaceLog.class); + request_direction = interfaceLog.value(); + } + String methodName = joinPoint.getSignature().getName(); + Object[] args = joinPoint.getArgs(); + Object url = ""; + Object requesr_param = ""; + if (args.length > 1) { + url = args[0]; + requesr_param = args[1]; + } + + Class targetClass = joinPoint.getTarget().getClass(); + + Object ipPort = ""; + try { + Field requestAdapterField = fieldCache.computeIfAbsent(targetClass, clazz -> { + try { + Field field = clazz.getDeclaredField("REQUEST_ADAPTER"); + ReflectionUtils.makeAccessible(field); + return field; + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } + }); + + Object requestAdapterObject = requestAdapterField.get(null); + + Method getUrlMethod = methodCache.computeIfAbsent(requestAdapterObject.getClass(), clazz -> { + try { + Method m = clazz.getDeclaredMethod("getUrl"); + ReflectionUtils.makeAccessible(m); + return m; + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + }); + + ipPort = getUrlMethod.invoke(requestAdapterObject); + } catch (Exception e) { + LuceneLogDto logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(ipPort + String.valueOf(url)) + .request_direction(request_direction) + .request_param(JSON.toJSONString(requesr_param)) + .method(methodName) + .content("开始请求,获取url失败," + e.getMessage()) + .build(); + logService.interfaceExecuteLog(logDto); + } + + LuceneLogDto logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(ipPort + String.valueOf(url)) + .request_direction(request_direction) + .request_param(JSON.toJSONString(requesr_param)) + .method(methodName) + .content("开始请求") + .build(); + logService.interfaceExecuteLog(logDto); + Object result = null; + try { + result = joinPoint.proceed(); + } catch (Exception e) { + logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(ipPort + String.valueOf(url)) + .request_direction(request_direction) + .request_param(JSON.toJSONString(requesr_param)) + .method(methodName) + .response_param(e.getMessage()) + .executeTime(System.currentTimeMillis() - startTime) + .content("响应请求") + .build(); + logService.interfaceExecuteLog(logDto); + throw new BadRequestException(e.getMessage()); + } + logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(ipPort + String.valueOf(url)) + .request_direction(request_direction) + .request_param(JSON.toJSONString(requesr_param)) + .method(methodName) + .response_param(JSON.toJSONString(result)) + .executeTime(System.currentTimeMillis() - startTime) + .content("响应请求") + .build(); + logService.interfaceExecuteLog(logDto); + return result; + } +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/ToOthersInterfaceLog.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/ToOthersInterfaceLog.java new file mode 100644 index 0000000..2e08b02 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/log/ToOthersInterfaceLog.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.hk.log; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface ToOthersInterfaceLog { + String value() default ""; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/rest/AcsToHkController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/rest/AcsToHkController.java new file mode 100644 index 0000000..2ed9e8e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/rest/AcsToHkController.java @@ -0,0 +1,64 @@ +package org.nl.acs.ext.hk.rest; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.hk.service.AcsToHkService; +import org.nl.acs.ext.hk.service.data.BindPodAndBerthReq; +import org.nl.acs.ext.hk.service.data.QueryTaskStatusReq; +import org.nl.acs.ext.hk.service.data.ResumeRobotReq; +import org.nl.acs.ext.hk.service.data.StopRobotReq; +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; + +import java.util.List; + +/** + * @author ludj + * @date 2021-07-21 + **/ +@RestController +@RequiredArgsConstructor +@RequestMapping("/acsToHk") +@Slf4j +public class AcsToHkController { + + @Autowired + private AcsToHkService acsToHkService; + + @SaIgnore + @PostMapping("/queryTaskStatus") + public ResponseEntity agvCallback(@RequestBody JSONObject requestParam) { + QueryTaskStatusReq queryTaskStatusReq = JSONObject.toJavaObject(requestParam, QueryTaskStatusReq.class); + QueryTaskStatusReq req = QueryTaskStatusReq.builder().taskCodes(requestParam.getJSONArray("taskCodes").toJavaList(String.class)).build(); + return new ResponseEntity<>(acsToHkService.queryTaskStatus(queryTaskStatusReq, List.class), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/stopRobot") + public ResponseEntity stopRobot(@RequestBody JSONObject requestParam) { + StopRobotReq req = StopRobotReq.builder().robotCount(requestParam.getString("robotCount")).robots(requestParam.getJSONArray("robots").toJavaList(String.class)).build(); + return new ResponseEntity<>(acsToHkService.stopRobot(req), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/resumeRobot") + public ResponseEntity resumeRobot(@RequestBody JSONObject requestParam) { + ResumeRobotReq req = ResumeRobotReq.builder().robotCount(requestParam.getString("robotCount")).robots(requestParam.getJSONArray("robots").toJavaList(String.class)).build(); + return new ResponseEntity<>(acsToHkService.resumeRobot(req), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/bindPodAndBerth") + public ResponseEntity bindPodAndBerth(@RequestBody JSONObject requestParam) { + BindPodAndBerthReq req = BindPodAndBerthReq.builder().podCode(requestParam.getString("podCode")).positionCode(requestParam.getString("positionCode")).indBind(requestParam.getString("indBind")).build(); + return new ResponseEntity<>(acsToHkService.bindPodAndBerth(req), HttpStatus.OK); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/rest/HkToACSController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/rest/HkToACSController.java new file mode 100644 index 0000000..b77a2c5 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/rest/HkToACSController.java @@ -0,0 +1,41 @@ +package org.nl.acs.ext.hk.rest; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.hk.log.OthersToInterfaceLog; +import org.nl.acs.ext.hk.service.HkToAcsService; +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 wangs + * @date 2021-07-21 + **/ +@RestController +@RequiredArgsConstructor +@RequestMapping("/hkToAcs") +@Slf4j +public class HkToACSController { + + private final HkToAcsService hkToAcsService; + + @SaIgnore + @PostMapping("/agv/agvCallbackService/agvCallback") + @OthersToInterfaceLog("HK->ACS") + public ResponseEntity agvCallback(@RequestBody JSONObject requestParam) { + return new ResponseEntity<>(hkToAcsService.agvCallback(requestParam), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/agvCallbackService/warnCallback") + @OthersToInterfaceLog("HK->ACS") + public ResponseEntity warnCallback(@RequestBody JSONObject requestParam) { + return new ResponseEntity<>(hkToAcsService.warnCallback(requestParam), HttpStatus.OK); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/AcsToHkService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/AcsToHkService.java new file mode 100644 index 0000000..6b85743 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/AcsToHkService.java @@ -0,0 +1,110 @@ +package org.nl.acs.ext.hk.service; + +import org.nl.acs.ext.hk.UnifiedResponse; +import org.nl.acs.ext.hk.service.data.BaseReq; + +/** + * @author onepiece + */ +public interface AcsToHkService { + + /** + * 生成任务单 + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse genAgvSchedulingTask(BaseReq requestParam, Class type); + + /** + * 继续执行任务 + * + * @param requestParam + * @return + */ + public UnifiedResponse continueTask(BaseReq requestParam); + + /** + * 取消任务 + * + * @param requestParam + * @return + */ + public UnifiedResponse cancelTask(BaseReq requestParam); + + /** + * 查询任务状态 + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse queryTaskStatus(BaseReq requestParam, Class type); + + + /** + * 查询AGV状态 + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse queryAgvStatus(BaseReq requestParam, Class type); + + + /** + * 停止AGV + * + * @param requestParam + * @return + */ + public UnifiedResponse stopRobot(BaseReq requestParam); + + /** + * 恢复AGV + * + * @param requestParam + * @return + */ + public UnifiedResponse resumeRobot(BaseReq requestParam); + + + /** + * 区域清空或释放 + * + * @param requestParam + * @return + */ + public UnifiedResponse blockArea(BaseReq requestParam); + + + /** + * 预调度对外接口 + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse genPreScheduleTask(BaseReq requestParam, Class type); + + /** + * 料箱取放回调 + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse boxApplyPass(BaseReq requestParam, Class type); + + + /** + * 货架与位置绑定、解绑 + * + * @param requestParam + * @return + */ + public UnifiedResponse bindPodAndBerth(BaseReq requestParam); + +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/HkToAcsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/HkToAcsService.java new file mode 100644 index 0000000..98a27d6 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/HkToAcsService.java @@ -0,0 +1,27 @@ +package org.nl.acs.ext.hk.service; + +import com.alibaba.fastjson.JSONObject; + + +/** + * @author onepiece + */ +public interface HkToAcsService { + + /** + * CTU回调接口处理逻辑 + * + * @param requestParam + * @return + */ + JSONObject agvCallback(JSONObject requestParam); + + + /** + * CTU报警接口处理逻辑 + * + * @param requestParam + * @return + */ + JSONObject warnCallback(JSONObject requestParam); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BaseReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BaseReq.java new file mode 100644 index 0000000..a034a25 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BaseReq.java @@ -0,0 +1,27 @@ +package org.nl.acs.ext.hk.service.data; + +import cn.hutool.core.date.DateUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.nl.config.IdUtil; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class BaseReq { + @Builder.Default + private String reqCode = IdUtil.getStringId(); + @Builder.Default + private String reqTime = DateUtil.now(); + private String clientCode; + private String tokenCode; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BaseResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BaseResp.java new file mode 100644 index 0000000..69bb329 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BaseResp.java @@ -0,0 +1,15 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class BaseResp { + private String reqCode; + private String code; + private String message; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BindPodAndBerthReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BindPodAndBerthReq.java new file mode 100644 index 0000000..08334ef --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BindPodAndBerthReq.java @@ -0,0 +1,24 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class BindPodAndBerthReq extends BaseReq { + private String podCode; + private String positionCode; + private String podDir; + private String characterValue; + private String indBind; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BindPodAndBerthResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BindPodAndBerthResp.java new file mode 100644 index 0000000..97d1412 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BindPodAndBerthResp.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class BindPodAndBerthResp extends BaseResp { + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BlockAreaReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BlockAreaReq.java new file mode 100644 index 0000000..9127abe --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BlockAreaReq.java @@ -0,0 +1,30 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@SuperBuilder +public class BlockAreaReq extends BaseReq { + /** + * 被封锁或解封的区域编号 + */ + private String matterArea; + + /** + * "1":封锁, + * "0":解封 + */ + private String indBind; + + + private String pause; + private String controlMod; + private String targetArea; + private String noticeThird; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BlockAreaResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BlockAreaResp.java new file mode 100644 index 0000000..9670a29 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BlockAreaResp.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class BlockAreaResp extends BaseResp { + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BoxApplyPassReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BoxApplyPassReq.java new file mode 100644 index 0000000..9cc44c1 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BoxApplyPassReq.java @@ -0,0 +1,24 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@SuperBuilder +public class BoxApplyPassReq extends BaseReq { + /** + * 指令号 + */ + private String taskCode; + /** + * 1-取申请通过 + *

+ * 2-放申请通过 + */ + private String type; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BoxApplyPassResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BoxApplyPassResp.java new file mode 100644 index 0000000..1569aa8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/BoxApplyPassResp.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class BoxApplyPassResp extends BaseResp { + private String data; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/CancelTaskReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/CancelTaskReq.java new file mode 100644 index 0000000..66834a7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/CancelTaskReq.java @@ -0,0 +1,18 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@SuperBuilder +public class CancelTaskReq extends BaseReq{ + private String forceCancel; + private String matterArea; + private String agvCode; + private String taskCode; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/CanncelTaskResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/CanncelTaskResp.java new file mode 100644 index 0000000..5813219 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/CanncelTaskResp.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class CanncelTaskResp extends BaseResp { +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ContinueTaskReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ContinueTaskReq.java new file mode 100644 index 0000000..13d60b4 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ContinueTaskReq.java @@ -0,0 +1,20 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@SuperBuilder +public class ContinueTaskReq extends BaseReq{ + private String wbCode; + private String podCode; + private String agvCode; + private String taskCode; + private String taskSeq; + private Object nextPositionCode; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ContinueTaskResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ContinueTaskResp.java new file mode 100644 index 0000000..e79b891 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ContinueTaskResp.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class ContinueTaskResp extends BaseResp { +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenAgvSchedulingTaskReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenAgvSchedulingTaskReq.java new file mode 100644 index 0000000..b92664f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenAgvSchedulingTaskReq.java @@ -0,0 +1,36 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +import java.util.List; +import java.util.Map; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@SuperBuilder +public class GenAgvSchedulingTaskReq extends BaseReq{ + private String taskTyp; + private String ctnrTyp; + private String ctnrCode; + private String ctnrNum; + private String taskMode; + private String wbCode; + private List> positionCodePath; + private String podCode; + private String podDir; + private String podTyp; + private String materialLot; + private String materialType; + private String priority; + private String taskCode; + private String agvCode; + private String groupId; + private String agvTyp; + private String positionSelStrategy; + private String data; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenAgvSchedulingTaskResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenAgvSchedulingTaskResp.java new file mode 100644 index 0000000..569ba2d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenAgvSchedulingTaskResp.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class GenAgvSchedulingTaskResp extends BaseResp { + private String data; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenPreScheduleTaskReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenPreScheduleTaskReq.java new file mode 100644 index 0000000..213a703 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenPreScheduleTaskReq.java @@ -0,0 +1,47 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@SuperBuilder +public class GenPreScheduleTaskReq extends BaseReq { + /** + * 任务点位呼叫号 + */ + private String positionCode; + /** + * 预调度时间(s) + * 表示真实任务预计多久后生成,传-1 + * 清空点位全部的预调度任务 + */ + private String nextTask; + /** + * AGV 类型,预调度需要指定车型 + */ + private String agvTyp; + /** + * 优先级 + */ + private String priority; + /** + * 需求空仓位数 + */ + private String useableLayers; + /** + * 缓存料箱数 + */ + private String cacheCount; + /** + * 是否更新,默认为 0 + */ + private BigDecimal update; + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenPreScheduleTaskResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenPreScheduleTaskResp.java new file mode 100644 index 0000000..46c5d3f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/GenPreScheduleTaskResp.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class GenPreScheduleTaskResp extends BaseResp { + private String data; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryAgvStatusReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryAgvStatusReq.java new file mode 100644 index 0000000..2c2ae4e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryAgvStatusReq.java @@ -0,0 +1,18 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@SuperBuilder +public class QueryAgvStatusReq extends BaseReq { + /** + * 地图编号 + */ + private String mapCode; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryAgvStatusResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryAgvStatusResp.java new file mode 100644 index 0000000..760d923 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryAgvStatusResp.java @@ -0,0 +1,16 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import org.nl.acs.ext.hk.service.data.dto.QueryAgvStatusDto; + +import java.util.List; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class QueryAgvStatusResp extends BaseResp { + private List data; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryTaskStatusReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryTaskStatusReq.java new file mode 100644 index 0000000..f84e881 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryTaskStatusReq.java @@ -0,0 +1,22 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class QueryTaskStatusReq extends BaseReq{ + private List taskCodes; + private String agvCode; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryTaskStatusResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryTaskStatusResp.java new file mode 100644 index 0000000..ab8934b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/QueryTaskStatusResp.java @@ -0,0 +1,16 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; +import org.nl.acs.ext.hk.service.data.dto.QueryTaskStatusDto; + +import java.util.List; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class QueryTaskStatusResp extends BaseResp { + private List data; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ResumeRobotReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ResumeRobotReq.java new file mode 100644 index 0000000..4b35f8c --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ResumeRobotReq.java @@ -0,0 +1,23 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class ResumeRobotReq extends BaseReq { + private String robotCount; + private String mapShortName; + private List robots; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ResumeRobotResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ResumeRobotResp.java new file mode 100644 index 0000000..7963b4e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/ResumeRobotResp.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class ResumeRobotResp extends BaseResp { + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/StopRobotReq.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/StopRobotReq.java new file mode 100644 index 0000000..18ab1ec --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/StopRobotReq.java @@ -0,0 +1,23 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder +public class StopRobotReq extends BaseReq { + private String robotCount; + private String mapShortName; + private List robots; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/StopRobotResp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/StopRobotResp.java new file mode 100644 index 0000000..d5a55bd --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/StopRobotResp.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.hk.service.data; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/12/28 + */ +@Data +public class StopRobotResp extends BaseResp { + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/dto/QueryAgvStatusDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/dto/QueryAgvStatusDto.java new file mode 100644 index 0000000..25aa93d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/dto/QueryAgvStatusDto.java @@ -0,0 +1,28 @@ +package org.nl.acs.ext.hk.service.data.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Description TODO + * @Author Gengby + * @Date 2025/1/3 + */ +@Data +public class QueryAgvStatusDto { + private String robotCode; + private String robotDir; + private String robotIp; + private String battery; + private String posX; + private String posY; + private String mapCode; + private String speed; + private String status; + private String exclType; + private String stop; + private String podCode; + private String podDir; + private List path; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/dto/QueryTaskStatusDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/dto/QueryTaskStatusDto.java new file mode 100644 index 0000000..aa9c6af --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/data/dto/QueryTaskStatusDto.java @@ -0,0 +1,16 @@ +package org.nl.acs.ext.hk.service.data.dto; + +import lombok.Data; + +/** + * @Description TODO + * @Author Gengby + * @Date 2025/1/3 + */ +@Data +public class QueryTaskStatusDto { + private String taskCode; + private String taskTyp; + private String taskStatus; + private String agvCode; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/impl/AcsToHkServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/impl/AcsToHkServiceImpl.java new file mode 100644 index 0000000..1255492 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/impl/AcsToHkServiceImpl.java @@ -0,0 +1,94 @@ +package org.nl.acs.ext.hk.service.impl; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.address.service.AddressService; +import org.nl.acs.address.service.dto.AddressDto; +import org.nl.acs.ext.hk.HkHttpUtil; +import org.nl.acs.ext.hk.UnifiedResponse; +import org.nl.acs.ext.hk.service.AcsToHkService; +import org.nl.acs.ext.hk.service.data.BaseReq; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +/** + * @author onepiece + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class AcsToHkServiceImpl implements AcsToHkService { + + @Autowired + private AddressService addressService; + @Autowired + private HkHttpUtil hkHttpUtil; + + @Override + public UnifiedResponse genAgvSchedulingTask(BaseReq requestParam, Class type) { + AddressDto addressDto = addressService.findByCode("genAgvSchedulingTask"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse continueTask(BaseReq requestParam) { + AddressDto addressDto = addressService.findByCode("continueTask"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam); + } + + @Override + public UnifiedResponse cancelTask(BaseReq requestParam) { + AddressDto addressDto = addressService.findByCode("cancelTask"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam); + } + + @Override + public UnifiedResponse queryTaskStatus(BaseReq requestParam, Class type) { + AddressDto addressDto = addressService.findByCode("queryTaskStatus"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse queryAgvStatus(BaseReq requestParam, Class type) { + AddressDto addressDto = addressService.findByCode("queryAgvStatus"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse stopRobot(BaseReq requestParam) { + AddressDto addressDto = addressService.findByCode("stopRobot"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam); + } + + @Override + public UnifiedResponse resumeRobot(BaseReq requestParam) { + AddressDto addressDto = addressService.findByCode("resumeRobot"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam); + } + + @Override + public UnifiedResponse blockArea(BaseReq requestParam) { + AddressDto addressDto = addressService.findByCode("blockArea"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam); + } + + @Override + public UnifiedResponse genPreScheduleTask(BaseReq requestParam, Class type) { + AddressDto addressDto = addressService.findByCode("genPreScheduleTask"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse boxApplyPass(BaseReq requestParam, Class type) { + AddressDto addressDto = addressService.findByCode("boxApplyPass"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse bindPodAndBerth(BaseReq requestParam) { + AddressDto addressDto = addressService.findByCode("bindPodAndBerth"); + return hkHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/impl/HkToAcsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/impl/HkToAcsServiceImpl.java new file mode 100644 index 0000000..d033e7a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/service/impl/HkToAcsServiceImpl.java @@ -0,0 +1,181 @@ +package org.nl.acs.ext.hk.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device_driver.conveyor.standard_weight.StandardWeightSiteDeviceDriver; +import org.nl.acs.ext.hk.service.AcsToHkService; +import org.nl.acs.ext.hk.service.HkToAcsService; +import org.nl.acs.ext.hk.service.data.GenPreScheduleTaskReq; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.enums.InstTypeEnum; +import org.nl.acs.instruction.enums.InstructionStatusEnum; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.storage_cell.service.StorageCellService; +import org.nl.acs.storage_cell.service.dto.StorageCellDto; +import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; + + +/** + * 海康AGV接口 + * + * @author: gengby + * @createDate: 2024/12/28 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class HkToAcsServiceImpl implements HkToAcsService { + + @Autowired + private InstructionService instructionService; + @Autowired + private DeviceAppService deviceAppService; + @Autowired + private AcsToHkService acsToHkService; + @Autowired + private ISysParamService sysParamService; + @Autowired + private StorageCellService storageCellService; + @Autowired + private AcsToWmsService acsToWmsService; + + @Override + public JSONObject agvCallback(JSONObject requestParam) { + JSONObject resp = new JSONObject(); + String reqCode = requestParam.getString("reqCode"); + String stgBinCode = requestParam.getString("stgBinCode"); + String robotCode = requestParam.getString("robotCode"); + String taskCode = requestParam.getString("taskCode"); + String method = requestParam.getString("method"); + Instruction instruction = instructionService.findByCodeFromCache(taskCode); + if (ObjectUtil.isEmpty(instruction)) { + resp.put("code", "1"); + resp.put("message", "请求失败,任务信息不存在,指令号:" + taskCode); + resp.put("reqCode", reqCode); + return resp; + } + StorageCellDto storageCellDto = storageCellService.getByParentCode(stgBinCode); + if (ObjectUtil.isEmpty(storageCellDto)) { + resp.put("code", "1"); + resp.put("message", "请求失败,外部系统编码不存在,外部系编码:" + stgBinCode); + resp.put("reqCode", reqCode); + return resp; + } + String now = DateUtil.now(); + //method 回调1、任务开始start + if (StrUtil.equals(method, "start")) { + //修改指令状态执行中并修改CTU车号 + instruction.setCarno(robotCode); + instruction.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); + instruction.setExecute_device_code(storageCellDto.getStorage_code()); + instruction.setUpdate_time(now); + instructionService.update(instruction); + + JSONObject reqParam = new JSONObject(); + reqParam.put("task_id", instruction.getTask_id()); + reqParam.put("task_code", instruction.getTask_code()); + reqParam.put("car_no", reqCode); + acsToWmsService.feedCarNo(reqParam); + } + //method 回调2、任务完成/结束end + else if (StrUtil.equals(method, "end")) { + //修改指令状态完成 + instruction.setInstruction_status(InstructionStatusEnum.FINISHED.getIndex()); + instruction.setExecute_device_code(storageCellDto.getStorage_code()); + instruction.setUpdate_time(now); + instructionService.finish(instruction); + if (StrUtil.equals(instruction.getIs_wait(), "1") && StrUtil.equals(instruction.getInstruction_type(), InstTypeEnum.CTU_OUT_TASK.getCode())) { + String ctuWaitTime = Optional.ofNullable(sysParamService.findByCode("ctuWaitTime").getValue()).map(Object::toString).orElse("600"); + GenPreScheduleTaskReq gpsReq = GenPreScheduleTaskReq.builder() + .positionCode(instruction.getStart_device_code()) + .nextTask(ctuWaitTime) + .agvTyp("10") + .build(); + acsToHkService.genPreScheduleTask(gpsReq, null); + } + } + //method 回调3、任务取消cancel + else if (StrUtil.equals(method, "cancel")) { + //修改指令状态取消 + instruction.setInstruction_status(InstructionStatusEnum.CANCEL.getIndex()); + instruction.setUpdate_time(now); + instructionService.update(instruction); + } + //method 回调4、取料箱申请inApply + else if (StrUtil.equals(method, "inApply")) { + Device device = deviceAppService.findDeviceByCode(storageCellDto.getStorage_code()); + if (ObjectUtil.isEmpty(device)) { + resp.put("code", "1"); + resp.put("message", "请求失败,请求位置编号不存在!"); + resp.put("reqCode", reqCode); + return resp; + } + StandardWeightSiteDeviceDriver standardWeightSiteDeviceDriver; + //CTU取货申请 + //如果请求位置编号与指令起点一致并且是输送线则是取货申请 + if (device.getDeviceDriver() instanceof StandardWeightSiteDeviceDriver) { + standardWeightSiteDeviceDriver = (StandardWeightSiteDeviceDriver) device.getDeviceDriver(); + standardWeightSiteDeviceDriver.setReqTakeRequireSuccess(true); + standardWeightSiteDeviceDriver.setReqTakeInstCode(taskCode); + } + } + //method 回调5、取料箱申请inApply + else if (StrUtil.equals(method, "inApplyOk")) { +// Device device = deviceAppService.findDeviceByCode(storageCellDto.getStorage_code()); +// if (ObjectUtil.isEmpty(device)) { +// resp.put("code", "1"); +// resp.put("message", "请求失败,请求位置编号不存在!"); +// resp.put("reqCode", reqCode); +// return resp; +// } + } + //method 回调6、放料箱申请outApply + else if (StrUtil.equals(method, "outApply")) { + Device device = deviceAppService.findDeviceByCode(storageCellDto.getStorage_code()); + if (ObjectUtil.isEmpty(device)) { + resp.put("code", "1"); + resp.put("message", "请求失败,请求位置编号不存在!"); + resp.put("reqCode", reqCode); + return resp; + } + StandardWeightSiteDeviceDriver standardWeightSiteDeviceDriver; + //CTU取货申请 + //如果请求位置编号与指令起点一致并且是输送线则是取货申请 + if (device.getDeviceDriver() instanceof StandardWeightSiteDeviceDriver) { + standardWeightSiteDeviceDriver = (StandardWeightSiteDeviceDriver) device.getDeviceDriver(); + standardWeightSiteDeviceDriver.setReqTakeRequireSuccess(true); + standardWeightSiteDeviceDriver.setReqTakeInstCode(taskCode); + } + } + resp.put("code", "0"); + resp.put("message", "成功"); + resp.put("reqCode", reqCode); + return resp; + } + + @Override + public JSONObject warnCallback(JSONObject requestParam) { + String reqCode = requestParam.getString("reqCode"); + String reqTime = requestParam.getString("reqTime"); + JSONArray data = requestParam.getJSONArray("data"); + JSONObject resp = new JSONObject(); + resp.put("code", "0"); + resp.put("message", "成功"); + resp.put("reqCode", reqCode); + return resp; + } +} + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/utils/IpUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/utils/IpUtil.java new file mode 100644 index 0000000..73f5e1d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/utils/IpUtil.java @@ -0,0 +1,35 @@ +package org.nl.acs.ext.hk.utils; + +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/6/25 + */ +public class IpUtil { + + public static final String LOCAL_IP = localIP(); + + public static String localIP() { + try { + Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); + while (networkInterfaces.hasMoreElements()) { + NetworkInterface networkInterface = networkInterfaces.nextElement(); + Enumeration inetAddresses = networkInterface.getInetAddresses(); + while (inetAddresses.hasMoreElements()) { + InetAddress inetAddress = inetAddresses.nextElement(); + if (!inetAddress.isLoopbackAddress() && inetAddress instanceof java.net.Inet4Address) { + return inetAddress.getHostAddress(); + } + } + } + } catch (SocketException e) { + e.printStackTrace(); + } + return ""; + } +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/utils/TypeCastingUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/utils/TypeCastingUtil.java new file mode 100644 index 0000000..5498e14 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hk/utils/TypeCastingUtil.java @@ -0,0 +1,26 @@ +package org.nl.acs.ext.hk.utils; + +import com.alibaba.fastjson.JSONObject; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Description TODO + * @Author Gengby + * @Date 2025/1/3 + */ +public class TypeCastingUtil { + + + public static List convertToList(List rawList, Class clazz) { + return rawList.stream() + .filter(item -> item instanceof JSONObject) + .map(item -> { + JSONObject jsonObject = (JSONObject) item; + return clazz.cast(jsonObject.toJavaObject(clazz)); + }) + .collect(Collectors.toList()); + } + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsHttpUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsHttpUtil.java new file mode 100644 index 0000000..f89271d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsHttpUtil.java @@ -0,0 +1,134 @@ +package org.nl.acs.ext.wms; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import org.nl.acs.AcsConfig; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.ext.hk.RequestAdapter; +import org.nl.acs.ext.hk.ResponseAdapter; +import org.nl.acs.ext.hk.UnifiedResponse; +import org.nl.acs.ext.hk.log.ToOthersInterfaceLog; +import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +@Component +public class LmsHttpUtil { + + private static final RequestAdapter REQUEST_ADAPTER = new LmsRequestAdapter(); + private static final ResponseAdapter RESPONSE_ADAPTER = new LmsResponseAdapter(); + + @Autowired + private ISysParamService paramService; + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendPostRequest(String path, W requestParam, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendPostRequest(String path, W requestParam) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendPostRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendPostRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendGetRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendGetRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsRequestAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsRequestAdapter.java new file mode 100644 index 0000000..36ff2d6 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsRequestAdapter.java @@ -0,0 +1,20 @@ +package org.nl.acs.ext.wms; + + +import org.nl.acs.AcsConfig; +import org.nl.acs.ext.hk.RequestAdapter; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +public class LmsRequestAdapter implements RequestAdapter { + @Override + public String getUrl() { + ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); + return paramService.findByCode(AcsConfig.WMSURL).getValue(); + } +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsResponseAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsResponseAdapter.java new file mode 100644 index 0000000..45c1db8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsResponseAdapter.java @@ -0,0 +1,31 @@ +package org.nl.acs.ext.wms; + +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.ext.hk.ResponseAdapter; +import org.nl.acs.ext.hk.UnifiedResponse; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +public class LmsResponseAdapter implements ResponseAdapter { + + @Override + public UnifiedResponse adapt(String responseBody, Class type) { + JSONObject jsonResponse = JSONObject.parseObject(responseBody); + boolean isSuccess = jsonResponse.getInteger("status") == 200; + String message = jsonResponse.getString("message"); + if (type != null) { + if (type.isArray()) { + T data = JSONObject.toJavaObject(jsonResponse.getJSONArray("data"), type); + return new UnifiedResponse<>(isSuccess, message, data); + } else { + T data = JSONObject.toJavaObject(jsonResponse.getJSONObject("data"), type); + return new UnifiedResponse<>(isSuccess, message, data); + } + } + return new UnifiedResponse<>(isSuccess, message); + } + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/RespUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/RespUtil.java deleted file mode 100644 index 354547f..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/RespUtil.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.nl.acs.ext.wms; - -import com.alibaba.fastjson.JSONObject; -import org.nl.acs.ext.wms.liKuData.Resp; - -/** - * @author: geng by - * @createDate: 2022/11/24 - */ -public class RespUtil { - public static Resp getResp(String result, T t) { - JSONObject jsonObject = JSONObject.parseObject(result); - Resp resp = new Resp<>(); - resp.setData(t); - resp = JSONObject.toJavaObject(jsonObject, Resp.class); - return resp; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusRequest.java deleted file mode 100644 index 1474925..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.applySignalStaus; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; - -@Data -public class ApplySignalStatusRequest extends BaseRequest { - - /** - * 光电信号 0无货 1有货 - */ - private String move; - - /** - * 载具类型 - */ - private String vehicle_type; - - /** - * 是否允许 0不允许 1允许 - */ - private String action; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusResponse.java deleted file mode 100644 index 8cd5ec7..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applySignalStaus/ApplySignalStatusResponse.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.applySignalStaus; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseResponse; - -@Data -public class ApplySignalStatusResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyDeviceDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyDeviceDto.java deleted file mode 100644 index 4547f54..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyDeviceDto.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.applyTask; - -import lombok.Data; - -@Data -public class ApplyDeviceDto { - - /** - * 设备编码 - */ - private String device_code; - - /** - * 数量 - */ - private String qty; - - /** - * 载具号 - */ - private String vehicle_code; - - /** - * 载具类型 - */ - private String vehicle_type; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskRequest.java deleted file mode 100644 index 62f908d..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskRequest.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.applyTask; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; -import org.nl.acs.ext.wms.data.PalletizeDto; - -import java.util.List; - -@Data -public class ApplyTaskRequest extends BaseRequest { - - /** - * 载具号 - */ - private String vehicle_code; - - /** - * 载具类型 - */ - private String vehicle_type; - - /** - * 重量 - */ - private String weight; - - /** - * 碾次 - */ - private String mix_mum; - - /** - * 工单号 - */ - private String order_code; - - /** - * 物料 - */ - private String material_code; - - /** - * 数量 - */ - private String qty; - - /** - * 砖型 - */ - private PalletizeDto palletizeDto; - - /** - * 关联设备属性 - */ - private List list; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java deleted file mode 100644 index b8645c3..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/applyTask/ApplyTaskResponse.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.applyTask; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseResponse; - -@Data -public class ApplyTaskResponse extends BaseResponse { - - /** - * 是否静置完成 1完成 - */ - private String is_standing_finish; - - /** - * 是否优先包装 - */ - private String is_package; - - /** - * 碾次 - */ - private String mix_num; - - private String weight; - - /** - * 贴标新鲜 - */ - private String label_message; - - /** - * 是否码满规定托盘数 - */ - private int is_satisfy; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationRequest.java deleted file mode 100644 index 32e4909..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationRequest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.feedBackSplitPalletStation; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; - -@Data -public class feedBackSplitPalletStationRequest extends BaseRequest { - - /** - * 取货点位 - */ - private String get_station; - - /** - * 放货点位 - */ - private String put_station; - - - /** - * 取货点位载具号 - */ - private String get_station_vehicle_code; - - - /** - * 放货点位载具号 - */ - private String put_station_vehicle_code; - - /** - * 取货点当前数量 - */ - private String get_station_qty; - - /** - * 放货点当前数量 - */ - private String put_station_qty; - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationResponse.java deleted file mode 100644 index 3e6f688..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/feedBackSplitPalletStation/feedBackSplitPalletStationResponse.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.feedBackSplitPalletStation; - -import org.nl.acs.ext.wms.data.BaseResponse; - -public class feedBackSplitPalletStationResponse extends BaseResponse { - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeRequest.java deleted file mode 100644 index 6ab62d3..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeRequest.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.getVehicle; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; - -@Data -public class GetPalletizeRequest extends BaseRequest { - - /** - * 载具号 - */ - private String vehicle_code; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeResponse.java deleted file mode 100644 index c1883c2..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/getVehicle/GetPalletizeResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.getVehicle; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseResponse; -import org.nl.acs.ext.wms.data.PalletizeDto; - -@Data -public class GetPalletizeResponse extends BaseResponse { - - private PalletizeDto palletizeDto; - - /** - * 刚托盘上的砖块数量 - */ - private int material_qty; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabRequest.java deleted file mode 100644 index 927f6d3..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabRequest.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.grab; - - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; - -/** - * 反馈单次抓取 - */ -@Data -public class GrabRequest extends BaseRequest { - - /** - * 抓取位 - */ - private String get_station; - - /** - * 放置位 - */ - private String put_station; - - /** - * 是否合格 - */ - private String is_qualified; - - /** - * 激光标刻码 - */ - private String laser_marking_code; - - - /** - * 碾次 - */ - private String grinding_number; - - /** - * 高度1 - */ - private String height1; - - /** - * 高度2 - */ - private String height2; - - /** - * 高度3 - */ - private String height3; - - /** - * 高度4 - */ - private String height4; - - /** - * 宽度1 - */ - private String width1; - - /** - * 宽度2 - */ - private String width2; - - /** - * 长度 - */ - private String len; - - /** - * 体积 - */ - private String volume; - - /** - * 平面度 - */ - private String flatness; - - /** - * 缺陷个数 - */ - private String unqualified_qty; - - /** - * 重量 - */ - private String weight; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabResponse.java deleted file mode 100644 index 43b9dc7..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab/GrabResponse.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.grab; - -import org.nl.acs.ext.wms.data.BaseResponse; - -public class GrabResponse extends BaseResponse { - - -} - diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationRequest.java deleted file mode 100644 index 604e698..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationRequest.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.grab_place_station; - - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; - -/** - * 当前抓取放置工位切换 - */ -@Data -public class GrabPlaceStationRequest extends BaseRequest { - - /** - * 抓取位 - */ - private String get_station; - - /** - * 放置位 - */ - private String put_station; - - /** - * 取货点位载具号 - */ - private String get_station_vehicle_code; - - - /** - * 放货点位载具号 - */ - private String put_station_vehicle_code; - - /** - * 取货点当前数量 - */ - private String get_station_qty; - - /** - * 放货点当前数量 - */ - private String put_station_qty; - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationResponse.java deleted file mode 100644 index b5c7c24..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/AcsToWmsData/grab_place_station/GrabPlaceStationResponse.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.nl.acs.ext.wms.data.AcsToWmsData.grab_place_station; - -import org.nl.acs.ext.wms.data.BaseResponse; - - -public class GrabPlaceStationResponse extends BaseResponse { - - -} - diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyGreenFoilButtonRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyGreenFoilButtonRequest.java deleted file mode 100644 index 584ca0c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyGreenFoilButtonRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class ApplyGreenFoilButtonRequest extends BaseRequest { - private String vehicle_code; - private String device_code; - /** - * 4-确认下卷(生成AGV取空取满放空放满任务) - * 5-送空收卷棍(生成AGV取空放空的任务) - * 6-末次下卷(取满放满任务) - * 7-允许下卷(允许AGV进入) - * 8-允许离开(允许AGV离开) - * 9-取消任务 - */ - private String type; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyGreenFoilButtonResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyGreenFoilButtonResponse.java deleted file mode 100644 index d5b55a1..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyGreenFoilButtonResponse.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class ApplyGreenFoilButtonResponse extends BaseResponse { - - private Map data = new HashMap(); -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyLabelingAndBindingRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyLabelingAndBindingRequest.java deleted file mode 100644 index 3d90b79..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyLabelingAndBindingRequest.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class ApplyLabelingAndBindingRequest extends BaseRequest { - private String vehicle_code; - private String device_code; - /** - * 1:贴标申请 - * 2:捆扎申请 - * 3:烘箱 - */ - private String type; - - private String weight; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyLabelingAndBindingResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyLabelingAndBindingResponse.java deleted file mode 100644 index d6c0c88..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyLabelingAndBindingResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class ApplyLabelingAndBindingResponse extends BaseResponse { - - private Map data = new HashMap(); - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java deleted file mode 100644 index bb907e3..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class ApplyManipulatorActionRequest extends BaseRequest { - private String vehicle_code; - private String device_code; - - - /** - * 行架任务号 - */ - private String task_code; - - /** - * 任务id - */ - private String task_id; - - /** - * 重量 - */ - private String weight; - - /** - * 位置 1-左 2-右 - */ - private String direction; - - /** - * 气涨轴编号 - */ - private String qzz_no; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java deleted file mode 100644 index 59ed819..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyManipulatorActionResponse.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class ApplyManipulatorActionResponse extends BaseResponse{ - private Map data = new HashMap(); -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java deleted file mode 100644 index 8554c01..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSitResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class ApplyPlugPullSitResponse extends BaseResponse { - private Map data = new HashMap(); - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSiteRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSiteRequest.java deleted file mode 100644 index 0ee36fc..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyPlugPullSiteRequest.java +++ /dev/null @@ -1,62 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class ApplyPlugPullSiteRequest extends BaseRequest { - private String vehicle_code; - private String device_code; - /** - * 1-申请套管 - * 2-套管完成 - * 3-拔轴完成 - * 4-申请拔轴 - * 5-缓存线已满,生成行架任务 - */ - private String type; - - /** - * 行架任务号 - */ - private String task_code; - - /** - * 纸管1重量 - */ - private String weight1; - - /** - * 纸管1规格 - */ - private String material1; - - /** - * 纸管2规格 - */ - private String material2; - - /** - * 纸管2重量 - */ - private String weight2; - - - /** - * 条码 - */ - private String barcode; - - /** - * 尺寸 3,6寸 - */ - private String size; - /** - * 气胀轴条码 - */ - private String qzz_no; - /** - * 子卷号 - */ - private String sub_volume; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyfeedbackSubVolumeWeightRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyfeedbackSubVolumeWeightRequest.java deleted file mode 100644 index b95e2fa..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyfeedbackSubVolumeWeightRequest.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class ApplyfeedbackSubVolumeWeightRequest { - - /** - * 子卷号 - */ - private String sub_volume; - - /** - * 子卷重量 - */ - private double weight1; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyfeedbackSubVolumeWeightResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyfeedbackSubVolumeWeightResponse.java deleted file mode 100644 index c4ea3a9..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ApplyfeedbackSubVolumeWeightResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class ApplyfeedbackSubVolumeWeightResponse extends BaseResponse { - - private Map data = new HashMap(); - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseRequest.java deleted file mode 100644 index c39e0fc..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseRequest.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import cn.hutool.core.util.IdUtil; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.nl.acs.agv.AgvUtil; - -import java.util.HashMap; -import java.util.Map; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class BaseRequest { - - /** - * 请求号:uuid 唯一,LMS需要返回对应值 - */ - private String requestNo = IdUtil.simpleUUID(); - - /** - * 请求时间 - */ - private String requestDate = AgvUtil.getDate(); - - /** - * 请求方法编号 - */ - private String request_medthod_code; - - /** - * 请求方法名称 - */ - private String request_medthod_name; - - /** - * 设备号 - */ - private String device_code; - - - /** - * 系统编号 - */ - private String systemCode; - - /** - * 扩展参数:砖型等 - */ - private Map parameters = new HashMap(); - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java deleted file mode 100644 index a47a209..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BaseResponse.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import com.alibaba.fastjson.JSONArray; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.HashMap; -import java.util.Map; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class BaseResponse { - - /** - * 请求号 - */ - private String requestNo; - - /** - * 响应时间 - */ - private String responseDate; - - /** - * 结果 200成功 - */ - private int code; - - /** - * 信息 - */ - private String message; - - - private Map parameters = new HashMap(); - - private Integer status = 0; - private JSONArray errArr = new JSONArray(); - - - - public Integer getstatus() { - return this.status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public String getMessage() { - return this.message; - } - - public void setMessage(String message) { - this.message = message; - } - - public Map getParameters() { - return this.parameters; - } - - public void setParameters(Map parameters) { - this.parameters = parameters; - } - - public Object getParameter(String key) { - return this.parameters.get(key); - } - - public void putParameter(String key, String object) { - this.parameters.put(key, object); - } - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BlankingButtonRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BlankingButtonRequest.java deleted file mode 100644 index 3582449..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BlankingButtonRequest.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class BlankingButtonRequest extends BaseRequest { - private String vehicle_code; - private String device_code; - /** - * 1-表处下满料请求 - * 2-表处上空轴请求 - * 6-取消任务 - */ - private String type; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BlankingButtonResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BlankingButtonResponse.java deleted file mode 100644 index ed56075..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/BlankingButtonResponse.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import java.util.HashMap; -import java.util.Map; - -public class BlankingButtonResponse extends BaseResponse{ - private Map data = new HashMap(); -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CancelTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CancelTaskRequest.java deleted file mode 100644 index bb53dfb..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CancelTaskRequest.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class CancelTaskRequest extends BaseRequest { - - /** - * 任务编号 - */ - private String task_code; - - /** - * 载具号 - */ - String vehicle_code; - - /** - * 扩展属性 - */ - Map params = new HashMap<>(); - - - - - @Override - public String toString() { - return "CancelTaskRequest{" + - "task_code='" + task_code + '\'' + - ", vehicle_code='" + vehicle_code + '\'' + - ", params=" + params + - '}'; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CancelTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CancelTaskResponse.java deleted file mode 100644 index b217202..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CancelTaskResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data; - -public class CancelTaskResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateHandTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateHandTaskRequest.java deleted file mode 100644 index 1e87c7c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateHandTaskRequest.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -/** - * @Author : TuQiang - * @create 2024/4/2 12:17 - */ -@Data -public class CreateHandTaskRequest extends BaseRequest { - - /** - * 取货点 - */ - String start_device_code; - - /** - * 放货点 - */ - String next_device_code; - - /** - * 任务类型 - */ - String task_type; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateHandTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateHandTaskResponse.java deleted file mode 100644 index 16cafbf..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateHandTaskResponse.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.nl.acs.ext.wms.data; - -/** - * @Author : TuQiang - * @create 2024/4/2 12:19 - */ -public class CreateHandTaskResponse extends BaseResponse { - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java deleted file mode 100644 index c1f04f9..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java +++ /dev/null @@ -1,229 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import org.nl.acs.common.base.CommonFinalParam; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class CreateTaskRequest extends BaseRequest { - - /** - * 任务编号 - */ - private String task_id; - - /** - * 任务编号 - */ - private String task_code; - - - /** - * 取货点1 - */ - String start_device_code; - - /** - * 放货点1 - */ - String next_device_code; - - /** - * 优先级 - */ - String priority = CommonFinalParam.ONE; - - /** - * 载具号 - */ - String vehicle_code; - - /** - * 木箱号 - */ - String vehicle_code2; - - /** - * 载具类型 - */ - String vehicle_type; - - /** - * 扩展属性 - */ - String params2; - - - - - /** - * 备注 - */ - String remark; - - /** - * 扩展属性 - */ - Map params = new HashMap<>(); - - @Override - public String toString() { - return "CreateTaskRequest{" + - "task_code='" + task_code + '\'' + - ", start_device_code='" + start_device_code + '\'' + - ", next_device_code='" + next_device_code + '\'' + - ", priority='" + priority + '\'' + - ", vehicle_code='" + vehicle_code + '\'' + - ", vehicle_type='" + vehicle_type + '\'' + - ", task_type='" + task_type + '\'' + - ", remark='" + remark + '\'' + - ", params=" + params + - '}'; - } - - /** - * 任务标识 - */ - private String ext_task_id; - - - - - - - - - /** - * 取货点2 - */ - String start_device_code2; - - /** - * 放货点2 - */ - String next_device_code2; - - /** - * 烘箱对接位 - */ - String put_device_code; - - - - - /** - * 路由方案 - */ - String route_plan_code; - - /** - * 1、生箔; - * 2、分切 - * 3、普通任务 - * 4、叉车任务 - * 5、输送任务 - * 6、行架 - * 7、立库 - * 任务类型 - */ - String task_type; - - /** - * 立库任务类型 - * - */ - String dtl_type; - - /** - * Agv系统类型 - * 1:1楼叉车系统 - * 2:2楼1区域AGV系统 - * 3:2楼2区域AGV系统 - */ - String agv_system_type; - - - /** - * 烘箱时间 - */ - String oven_time; - - /** - * 烘箱温度 - */ - String temperature; - - /** - * agv取货高度 - */ - private String start_height; - - - /** - * agv放货高度 - */ - private String next_height; - - - /** - * 行架任务类型 - */ - private String truss_type; - - /** - * 气涨轴尺寸 - */ - private String size; - - /** - * 空轴位 - */ - private String empty_site; - - - /** - * 气胀轴代数 - */ - private String version; - - /** - * 是否套管 - */ - private String is_bushing; - - /** - * 套管数量 - */ - private String bushing_num; - - private String paper_array; - - /** - * 任务扩展字段 - */ - private JSONObject interaction_json; - - /** - * 是否拔轴 0/1 - */ - private String is_pulling; - - /** - * agv二次分配类型(1、普通任务 2、取货二次分配 3、防货二次分配 4、取放货二次分配) - */ - private Integer agv_action_type; - - /** - * 任务类型 - * 12 木箱入库行架任务 - * 13 装箱入库行架任务 - * 14 退货入库行架任务 - * 15 RGV输送任务 - * 16 子卷下线行架任务 - * 17 木箱堆叠行架任务 - */ - private String class_type; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskResponse.java deleted file mode 100644 index 40a3918..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data; - -public class CreateTaskResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/GetWasteFoilWeightRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/GetWasteFoilWeightRequest.java deleted file mode 100644 index e76b1b6..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/GetWasteFoilWeightRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class GetWasteFoilWeightRequest extends BaseRequest { - private String device_code; - - /** - * 1-称重完成 - * 2-称重确认完成 - * 3-取消称重 - * 4-申请任务 - */ - private String type; - - - /** - * 当前重量 - */ - private String currentWeight; - - /** - * 上次重量 - */ - private String lastWeight; - - /** - * 重量差 - */ - private String weightGap; - - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/GetWasteFoilWeightResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/GetWasteFoilWeightResponse.java deleted file mode 100644 index 0b124b7..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/GetWasteFoilWeightResponse.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.nl.acs.ext.wms.data; - -public class GetWasteFoilWeightResponse extends BaseResponse{ -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/JsonUtl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/JsonUtl.java deleted file mode 100644 index 241edc3..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/JsonUtl.java +++ /dev/null @@ -1,125 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.databind.type.TypeFactory; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -public class JsonUtl { - private static ObjectMapper objectMapper = null; - private static ObjectMapper objectMapperLog = null; - - private JsonUtl() { - } - - private static ObjectMapper init() { - ObjectMapper objectMapper = new ObjectMapper(); - SimpleModule simpleModule = new SimpleModule(); -// simpleModule.addSerializer(Enum.class, new EnumSerializer()); -// simpleModule.addSerializer(Date.class, new DateSerializer()); -// simpleModule.addDeserializer(Enum.class, new EnumDeserializer()); -// simpleModule.addDeserializer(Date.class, new DateDeserializers.DateDeserializer()); - objectMapper.registerModule(simpleModule); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - return objectMapper; - } - - public static ObjectMapper getInstance() { - if (objectMapper == null) { - Class var0 = JsonUtl.class; - synchronized (JsonUtl.class) { - if (objectMapper == null) { - objectMapper = init(); - } - } - } - - return objectMapper; - } - - public static ObjectMapper getInstanceLog() { - if (objectMapperLog == null) { - Class var0 = JsonUtl.class; - synchronized (JsonUtl.class) { - if (objectMapperLog == null) { - objectMapperLog = init(); - objectMapperLog.setSerializationInclusion(Include.NON_NULL); - } - } - } - - return objectMapperLog; - } - - public static ObjectMapper getObjectMapper() { - return getInstance(); - } - - public static String parse(Object object) throws RuntimeException { - try { - return getObjectMapper().writeValueAsString(object); - } catch (JsonProcessingException var2) { - throw new RuntimeException(var2); - } - } - - public static String parseWithoutException(Object object) { - try { - return parse(object); - } catch (Exception var2) { - return null; - } - } - - public static String parseLog(Object object) { - try { - return getInstanceLog().writeValueAsString(object); - } catch (Exception var2) { - return null; - } - } - - public static T format(String json, Class clazz) throws RuntimeException { - try { - return getObjectMapper().readValue(json, clazz); - } catch (IOException var3) { - throw new RuntimeException(var3); - } - } - - public static List formatList(String json, Class clazz) throws RuntimeException { - try { - JavaType type = getObjectMapper().getTypeFactory().constructParametricType(List.class, new Class[]{clazz}); - return (List) getObjectMapper().readValue(json, type); - } catch (IOException var3) { - throw new RuntimeException(var3); - } - } - - public static Map formatMap(String json, Class clazzKey, Class clazzValue) throws RuntimeException { - try { - JavaType type = getObjectMapper().getTypeFactory().constructParametricType(Map.class, new Class[]{clazzKey, clazzValue}); - return (Map) getObjectMapper().readValue(json, type); - } catch (IOException var4) { - throw new RuntimeException(var4); - } - } - - public static List> formatListTwo(String json, Class clazz) throws RuntimeException { - try { - TypeFactory typeFactory = getObjectMapper().getTypeFactory(); - JavaType type = typeFactory.constructParametrizedType(List.class, List.class, new Class[]{clazz}); - type = typeFactory.constructParametrizedType(List.class, List.class, new JavaType[]{type}); - return (List) getObjectMapper().readValue(json, type); - } catch (IOException var4) { - throw new RuntimeException(var4); - } - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/LiKuApplyTakResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/LiKuApplyTakResponse.java deleted file mode 100644 index 7385548..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/LiKuApplyTakResponse.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class LiKuApplyTakResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/LiKuApplyTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/LiKuApplyTaskRequest.java deleted file mode 100644 index 4ff16f7..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/LiKuApplyTaskRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class LiKuApplyTaskRequest extends BaseRequest { - private String vehicle_code; - private String device_code; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ManipulatorApplyPointRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ManipulatorApplyPointRequest.java deleted file mode 100644 index c35975f..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ManipulatorApplyPointRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class ManipulatorApplyPointRequest extends BaseRequest{ - /** - * 1-申请取货点 - * 2-申请放货点 - */ - private String type; - - /** - * 任务号 - */ - private String task_code; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ManipulatorApplyPointResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ManipulatorApplyPointResponse.java deleted file mode 100644 index 27fe862..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/ManipulatorApplyPointResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class ManipulatorApplyPointResponse extends BaseResponse{ - - private Map data = new HashMap(); - /** - * 取放货点 - */ - private String device_code; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PalletizeDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PalletizeDto.java deleted file mode 100644 index 7e81ac7..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PalletizeDto.java +++ /dev/null @@ -1,228 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 垛型参数 - * @Date: 2023/7/18 - */ -@Data -public class PalletizeDto { - /** - * 产品编号 - */ - private String product_code; - /** - * A长边 - */ - private String AlongSide; - /** - * B短边 - */ - private String BshortSide; - /** - * H梯形高 - */ - private String Htrapezoidal; - /** - * W厚度 - */ - private String Wthickness; - /** - * 当前垛盘数 - */ - private String tray_qty; - /** - * 垛盘高度 - */ - private String tray_high; - /** - * 垛型类别 - */ - private String crib_category; - /** - * 码垛X1行 - */ - private String palletX1_line; - /** - * 码垛Y1列 - */ - private String palletY1_row; - /** - * 码垛A1角度 - */ - private String palletA1_angle; - /** - * 码垛X2行 - */ - private String palletX2_line; - /** - * 码垛Y2列 - */ - private String palletY2_row; - /** - * 码垛A2角度 - */ - private String palletA2_angle; - /** - * 码垛X3行 - */ - private String palletX3_line; - /** - * 码垛Y3列 - */ - private String palletY3_row; - /** - * 码垛A3角度 - */ - private String palletA3_angle; - /** - * 压垛X1行 - */ - private String pressCribX1_line; - /** - * 压垛Y1列 - */ - private String pressCribY1_row; - /** - * 压垛A1角度 - */ - private String pressCribA1_angle; - /** - * 压垛X2行 - */ - private String pressCribX2_line; - /** - * 压垛Y2列 - */ - private String pressCribY2_row; - /** - * 压垛A2角度 - */ - private String pressCribA2_angle; - /** - * 压垛X3行 - */ - private String pressCribX3_line; - /** - * 压垛Y3列 - */ - private String pressCribY3_row; - /** - * 压垛A3角度 - */ - private String pressCribA3_angle; - /** - * Z轴偏移 - */ - private String Zoffset; - /** - * 码垛层数 - */ - private String pallet_layerQty; - /** - * 压垛层数 - */ - private String pressCrib_layerQty; - /** - * 码层X1间隔 - */ - private String codeLayerX1_interval; - /** - * 码层Y1间隔 - */ - private String codeLayerY1_interval; - /** - * 码层X2间隔 - */ - private String codeLayerX2_interval; - /** - * 码层Y2间隔 - */ - private String codeLayerY2_interval; - /** - * 码层X3间隔 - */ - private String codeLayerX3_interval; - /** - * 码层Y3间隔 - */ - private String codeLayerY3_interval; - /** - * 码层X1偏移 - */ - private String codeLayerX1_offset; - /** - * 码层Y1偏移 - */ - private String codeLayerY1_offset; - /** - * 码层X2偏移 - */ - private String codeLayerX2_offset; - /** - * 码层Y2偏移 - */ - private String codeLayerY2_offset; - /** - * 码层X3偏移 - */ - private String codeLayerX3_offset; - /** - * 码层Y3偏移 - */ - private String codeLayerY3_offset; - /** - * 压层X1间隔 - */ - private String pressLayerX1_interval; - /** - * 压层Y1间隔 - */ - private String pressLayerY1_interval; - /** - * 压层X2间隔 - */ - private String pressLayerX2_interval; - /** - * 压层Y2间隔 - */ - private String pressLayerY2_interval; - /** - * 压层X3间隔 - */ - private String pressLayerX3_interval; - /** - * 压层Y3间隔 - */ - private String pressLayerY3_interval; - /** - * 压层X1偏移 - */ - private String pressLayerX1_offset; - /** - * 压层Y1偏移 - */ - private String pressLayerY1_offset; - /** - * 压层X2偏移 - */ - private String pressLayerX2_offset; - /** - * 压层Y2偏移 - */ - private String pressLayerY2_offset; - /** - * 压层X3偏移 - */ - private String pressLayerX3_offset; - /** - * 压层Y3偏移 - */ - private String pressLayerY3_offset; - /** - * 工具坐标 - */ - private String tool_coordinate; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutActionRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutActionRequest.java deleted file mode 100644 index da78c34..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutActionRequest.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.Map; - -@Data -public class PutActionRequest extends BaseRequest { - - /** - * 设备号 - */ - String device_code; - - /** - * - */ - String code; - - /** - * - */ - String value; - - /** - * 扩展属性 - */ - Map params; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutActionResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutActionResponse.java deleted file mode 100644 index 4ade8e8..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutActionResponse.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.nl.acs.ext.wms.data; - -public class PutActionResponse extends BaseResponse { - - /** - * 结果 200成功 - */ - private int status; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutWeightActionRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutWeightActionRequest.java deleted file mode 100644 index adedf77..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutWeightActionRequest.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -import java.util.Map; - -@Data -public class PutWeightActionRequest extends BaseRequest { - /** - * 设备号 - */ - String device_code; - - /** - * - */ - String code; - - /** - * - */ - String value; - - /** - * 扩展属性 - */ - Map params; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutWeightActionResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutWeightActionResponse.java deleted file mode 100644 index 0c6045c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/PutWeightActionResponse.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.nl.acs.ext.wms.data; - -public class PutWeightActionResponse extends BaseResponse{ -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/Resp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/Resp.java deleted file mode 100644 index 5952b82..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/Resp.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -/** - * 调用立库接口统一返回参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class Resp extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/UpdateLKTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/UpdateLKTaskRequest.java deleted file mode 100644 index 971a601..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/UpdateLKTaskRequest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.nl.acs.ext.wms.data; - -import lombok.Data; - -@Data -public class UpdateLKTaskRequest extends BaseRequest { - - /** - * 任务标识 - */ - private String ext_task_id; - - /** - * 任务编号 - */ - private String task_code; - - /** - * 载具号 - */ - String vehicle_code; - - /** - * 立库任务类型 - */ - String dtl_type; - - /** - * 类型 - */ - String type; - - /** - * 原库位 - */ - String srcLocation; - - /** - * 新库位 - */ - String destLocation; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/UpdateLKTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/UpdateLKTaskResponse.java deleted file mode 100644 index f6db1eb..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/UpdateLKTaskResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data; - -public class UpdateLKTaskResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskRequest.java deleted file mode 100644 index 270436c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskRequest.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.cancelTask; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; - -import java.util.Map; - -@Data -public class CancelTaskRequest extends BaseRequest { - - /** - * 任务标识 - */ - private String ext_task_id; - - /** - * 任务编号 - */ - private String task_code; - - /** - * 载具号 - */ - String vehicle_code; - - /** - * 扩展属性 - */ - Map params; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskResponse.java deleted file mode 100644 index 701d747..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/cancelTask/CancelTaskResponse.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.cancelTask; - -import org.nl.acs.ext.wms.data.BaseResponse; - -public class CancelTaskResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderRequest.java deleted file mode 100644 index 609f331..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderRequest.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.createOrder; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; - -import java.util.List; - -@Data -public class CreateOrderRequest extends BaseRequest { - - /** - * 任务数组 - */ - private List list = null; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderResponse.java deleted file mode 100644 index f5f44bf..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/CreateOrderResponse.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.createOrder; - -import com.alibaba.fastjson.JSONArray; -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseResponse; - -@Data -public class CreateOrderResponse extends BaseResponse { - - private JSONArray errArr = new JSONArray(); - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/OrderDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/OrderDto.java deleted file mode 100644 index 4b2ac1d..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createOrder/OrderDto.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.createOrder; - -import lombok.Data; - -@Data -public class OrderDto { - /** - * 工单编码 - */ - private String workorder_code; - /** - * 设备编码 - */ - private String device_code; - /** - * 半成品物料编码 - 工单物料编码 - */ - private String material_code; - /** - * 产品代号 - 数字 - */ - private String product_code; - /** - * 配方-型号 - */ - private String formula; - /** - * 砖型编码- 物料规格 - */ - private String brick_code; - /** - * 计划数量 - */ - private String plan_qty; - /** - * a边 - */ - private String a; - private String b; - private String h; - private String w; - /** - * 尺寸允许误差 - */ - private String size_error; - /** - * 单重允许误差 - */ - private String single_weight; - /** - * 图纸地址 - */ - private String drawing_address; - /** - * 标准尺寸1 - */ - private String standard_size_height1; - /** - * 标准尺寸2 - */ - private String standard_size_height2; - /** - * 标准尺寸3 - */ - private String standard_size_height3; - /** - * 标准尺寸4 - */ - private String standard_size_height4; - /** - * 标准重量 - */ - private String standard_weight; - /** - * 检测误差值 - */ - private String detection_error; - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskRequest.java deleted file mode 100644 index b91d8fa..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.createTask; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; -import org.nl.acs.task.service.dto.TaskDto; - -import java.util.List; - -@Data -public class CreateTaskRequest extends BaseRequest { - - /** - * 任务数组 - */ - private List list = null; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskResponse.java deleted file mode 100644 index f913c57..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/createTask/CreateTaskResponse.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.createTask; - -import com.alibaba.fastjson.JSONArray; -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseResponse; - -@Data -public class CreateTaskResponse extends BaseResponse { - - private JSONArray errArr = new JSONArray(); - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionRequest.java deleted file mode 100644 index c87c14c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.putAction; - -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseRequest; - -import java.util.List; - -@Data -public class PutActionRequest extends BaseRequest { - - private List list; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionResponse.java deleted file mode 100644 index 6de164f..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/PutActionResponse.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.putAction; - -import com.alibaba.fastjson.JSONArray; -import lombok.Data; -import org.nl.acs.ext.wms.data.BaseResponse; - -@Data -public class PutActionResponse extends BaseResponse { - - private JSONArray errArr = new JSONArray(); - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/SignalData.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/SignalData.java deleted file mode 100644 index cb82966..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/WmstoAcsData/putAction/SignalData.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.nl.acs.ext.wms.data.WmstoAcsData.putAction; - -import lombok.Data; - -@Data -public class SignalData { - - private String code; - - private String value; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java deleted file mode 100644 index 8714eb6..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import lombok.Data; - -@Data -public class ApplyLabelingAndBindingRequest extends BaseRequest { - private String vehicle_code; - private String device_code; - private Integer task_code; - /** - * 1:贴标、捆扎申请 - * 2:烘箱 - * 3:开盖 - */ - private String type; - - private String weight; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingResponse.java deleted file mode 100644 index 15d6882..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/ApplyLabelingAndBindingResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class ApplyLabelingAndBindingResponse extends BaseResponse { - - private Map data = new HashMap(); - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseRequest.java deleted file mode 100644 index 985086b..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseRequest.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import cn.hutool.core.util.IdUtil; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.nl.acs.agv.AgvUtil; - -import java.util.HashMap; -import java.util.Map; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class BaseRequest { - - /** - * 请求号:uuid 唯一,LMS需要返回对应值 - */ - private String requestNo = IdUtil.simpleUUID(); - - /** - * 请求时间 - */ - private String requestDate = AgvUtil.getDate(); - - /** - * 请求方法编号 - */ - private String request_medthod_code; - - /** - * 请求方法名称 - */ - private String request_medthod_name; - - /** - * 设备号 - */ - private String device_code; - - - /** - * 系统编号 - */ - private String systemCode; - - /** - * 扩展参数:砖型等 - */ - private Map parameters = new HashMap(); - - - /** - * 任务类型 - */ - private String type; - - /** - * 设备状态 - */ - private String state; - - /** - * 任务号 - */ - private String taskId; - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseResponse.java deleted file mode 100644 index 3580e96..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/BaseResponse.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import com.alibaba.fastjson.JSONArray; -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class BaseResponse { - - private Integer status = 0; - private String message; - private JSONArray errArr = new JSONArray(); - private Map parameters = new HashMap(); - - public BaseResponse() { - } - - public Integer getstatus() { - return this.status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public String getMessage() { - return this.message; - } - - public void setMessage(String message) { - this.message = message; - } - - public Map getParameters() { - return this.parameters; - } - - public void setParameters(Map parameters) { - this.parameters = parameters; - } - - public Object getParameter(String key) { - return this.parameters.get(key); - } - - public void putParameter(String key, String object) { - this.parameters.put(key, object); - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskRequest.java deleted file mode 100644 index c7e677a..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskRequest.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import lombok.Data; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class CancelTaskRequest extends BaseRequest { - - /** - * 任务编号 - */ - private String task_code; - - /** - * 载具号 - */ - String vehicle_code; - - /** - * 扩展属性 - */ - Map params = new HashMap<>(); - - @Override - public String toString() { - return "CancelTaskRequest{" + - "task_code='" + task_code + '\'' + - ", vehicle_code='" + vehicle_code + '\'' + - ", params=" + params + - '}'; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskResponse.java deleted file mode 100644 index 0fb22bd..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CancelTaskResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -public class CancelTaskResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java deleted file mode 100644 index a5d0412..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import lombok.Data; -import org.nl.acs.common.base.CommonFinalParam; - -import java.util.HashMap; -import java.util.Map; - -@Data -public class CreateTaskRequest extends BaseRequest { - - /** - * 任务编号 - */ - private String task_id; - - /** - * 任务编号 - */ - private String task_code; - - - /** - * 取货点1 - */ - String start_device_code; - - /** - * 放货点1 - */ - String next_device_code; - - /** - * 优先级 - */ - String priority = CommonFinalParam.ONE; - - /** - * 载具号 - */ - String vehicle_code; - - /** - * 载具类型 - */ - String vehicle_type; - - - /** - * 任务类型 - */ - String task_type; - - - /** - * 备注 - */ - String remark; - - /** - * 扩展属性 - */ - Map params = new HashMap<>(); - - @Override - public String toString() { - return "CreateTaskRequest{" + - "task_code='" + task_code + '\'' + - ", start_device_code='" + start_device_code + '\'' + - ", next_device_code='" + next_device_code + '\'' + - ", priority='" + priority + '\'' + - ", vehicle_code='" + vehicle_code + '\'' + - ", vehicle_type='" + vehicle_type + '\'' + - ", task_type='" + task_type + '\'' + - ", remark='" + remark + '\'' + - ", params=" + params + - '}'; - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskResponse.java deleted file mode 100644 index 1599e00..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -public class CreateTaskResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/JsonUtl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/JsonUtl.java deleted file mode 100644 index 27ad59a..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/JsonUtl.java +++ /dev/null @@ -1,125 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.databind.type.TypeFactory; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -public class JsonUtl { - private static ObjectMapper objectMapper = null; - private static ObjectMapper objectMapperLog = null; - - private JsonUtl() { - } - - private static ObjectMapper init() { - ObjectMapper objectMapper = new ObjectMapper(); - SimpleModule simpleModule = new SimpleModule(); -// simpleModule.addSerializer(Enum.class, new EnumSerializer()); -// simpleModule.addSerializer(Date.class, new DateSerializer()); -// simpleModule.addDeserializer(Enum.class, new EnumDeserializer()); -// simpleModule.addDeserializer(Date.class, new DateDeserializers.DateDeserializer()); - objectMapper.registerModule(simpleModule); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - return objectMapper; - } - - public static ObjectMapper getInstance() { - if (objectMapper == null) { - Class var0 = JsonUtl.class; - synchronized (JsonUtl.class) { - if (objectMapper == null) { - objectMapper = init(); - } - } - } - - return objectMapper; - } - - public static ObjectMapper getInstanceLog() { - if (objectMapperLog == null) { - Class var0 = JsonUtl.class; - synchronized (JsonUtl.class) { - if (objectMapperLog == null) { - objectMapperLog = init(); - objectMapperLog.setSerializationInclusion(Include.NON_NULL); - } - } - } - - return objectMapperLog; - } - - public static ObjectMapper getObjectMapper() { - return getInstance(); - } - - public static String parse(Object object) throws RuntimeException { - try { - return getObjectMapper().writeValueAsString(object); - } catch (JsonProcessingException var2) { - throw new RuntimeException(var2); - } - } - - public static String parseWithoutException(Object object) { - try { - return parse(object); - } catch (Exception var2) { - return null; - } - } - - public static String parseLog(Object object) { - try { - return getInstanceLog().writeValueAsString(object); - } catch (Exception var2) { - return null; - } - } - - public static T format(String json, Class clazz) throws RuntimeException { - try { - return getObjectMapper().readValue(json, clazz); - } catch (IOException var3) { - throw new RuntimeException(var3); - } - } - - public static List formatList(String json, Class clazz) throws RuntimeException { - try { - JavaType type = getObjectMapper().getTypeFactory().constructParametricType(List.class, new Class[]{clazz}); - return (List) getObjectMapper().readValue(json, type); - } catch (IOException var3) { - throw new RuntimeException(var3); - } - } - - public static Map formatMap(String json, Class clazzKey, Class clazzValue) throws RuntimeException { - try { - JavaType type = getObjectMapper().getTypeFactory().constructParametricType(Map.class, new Class[]{clazzKey, clazzValue}); - return (Map) getObjectMapper().readValue(json, type); - } catch (IOException var4) { - throw new RuntimeException(var4); - } - } - - public static List> formatListTwo(String json, Class clazz) throws RuntimeException { - try { - TypeFactory typeFactory = getObjectMapper().getTypeFactory(); - JavaType type = typeFactory.constructParametrizedType(List.class, List.class, new Class[]{clazz}); - type = typeFactory.constructParametrizedType(List.class, List.class, new JavaType[]{type}); - return (List) getObjectMapper().readValue(json, type); - } catch (IOException var4) { - throw new RuntimeException(var4); - } - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTakResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTakResponse.java deleted file mode 100644 index 3a6c6d8..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTakResponse.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import lombok.Data; - -@Data -public class LiKuApplyTakResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTaskRequest.java deleted file mode 100644 index 1463af0..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/LiKuApplyTaskRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import lombok.Data; - -@Data -public class LiKuApplyTaskRequest extends BaseRequest { - private String vehicle_code; - private String device_code; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionRequest.java deleted file mode 100644 index 0c0f5a4..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionRequest.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import lombok.Data; - -import java.util.Map; - -@Data -public class PutActionRequest extends BaseRequest { - - /** - * 设备号 - */ - String device_code; - - /** - * - */ - String code; - - /** - * - */ - String value; - - /** - * 扩展属性 - */ - Map params; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionResponse.java deleted file mode 100644 index 0a428b5..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/PutActionResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -public class PutActionResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskRequest.java deleted file mode 100644 index c146134..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskRequest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -import lombok.Data; - -@Data -public class UpdateLKTaskRequest extends BaseRequest { - - /** - * 任务标识 - */ - private String ext_task_id; - - /** - * 任务编号 - */ - private String task_code; - - /** - * 载具号 - */ - String vehicle_code; - - /** - * 立库任务类型 - */ - String dtl_type; - - /** - * 类型 - */ - String type; - - /** - * 原库位 - */ - String srcLocation; - - /** - * 新库位 - */ - String destLocation; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskResponse.java deleted file mode 100644 index fb827ab..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/UpdateLKTaskResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data.one; - -public class UpdateLKTaskResponse extends BaseResponse { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusRequest.java deleted file mode 100644 index 1d3593b..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusRequest.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.nl.acs.ext.wms.data.one.feedBackTaskStatus; - -import lombok.Data; -import org.nl.acs.ext.wms.data.one.BaseRequest; - -@Data -public class FeedBackTaskStatusRequest extends BaseRequest { - - - /** - * 任务id - */ - private String task_id; - - /** - * 任务code - */ - private String task_code; - - /** - * 任务状态 - */ - private String task_status; - - /** - * 任务类型 - */ - private String task_type; - - /** - * 车号 - */ - private String car_no; - - /** - * 载具号 - */ - private String vehicle_code; - - /** - * 动作 1请求取货 2取货完成 3请求放货 4放货完成 - */ - private String action; - - /** - * 1-正极板;2-负极板;3-边负极板 - */ - private String material_type; - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusResponse.java deleted file mode 100644 index c14dd1d..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/feedBackTaskStatus/FeedBackTaskStatusResponse.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.nl.acs.ext.wms.data.one.feedBackTaskStatus; - -import org.nl.acs.ext.wms.data.one.BaseResponse; - -public class FeedBackTaskStatusResponse extends BaseResponse { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseResponseData.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseResponseData.java deleted file mode 100644 index 01732d7..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseResponseData.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 响应 data 公共基础类 - * 1、入库任务下发 - * 2、出库任务下发 - * 3、空托盘出库任务下发 - * 4、移库任务下发 - * 5、入库任务调整 - * 6、移库任务调整 - * 7、入库任务上报 - * 8、出库任务上报 - * 9、移库任务上报 - * 10、任务取消 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class BaseResponseData { - public String orderId; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseStoreReportRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseStoreReportRequest.java deleted file mode 100644 index ed5e957..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseStoreReportRequest.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 任务上报请求参数基础类 - * 1、入库上报 - * 2、出库上报 - * 3、移库上报 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class BaseStoreReportRequest { - /** - * 任务编号 - * WCS内部任务编号,本次任务的唯一标识 - */ - public String orderId; - /** - * 托盘条码信息 - */ - public String palletCode; - /** - * 原库位号 - * 托盘的存储库位编号。具体库位编号需要双方商定 - */ - public String srcLocation; - /** - * 目的库位号 - * 托盘的目的存储库位编号。具体库位编号需要双方商定 - */ - public String destLocation; - /** - * 入库任务上报 1 已接收 2 开始执行 3执行完成 4 阻挡 5 空洞 - * 出库任务上报 1已接收任务,2开始执行,3执行完成 - * 移库任务上报 1 已接收 2开始执行3 执行完成 4 起点库位有货被阻挡 5目的点库位无货被阻挡 - */ - public String state; - - public String robotId; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseStoreRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseStoreRequest.java deleted file mode 100644 index 0c6842a..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/BaseStoreRequest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 任务下发请求参数基础类 - * 1、入库任务下发 - * 2、出库任务-批量下发 - * 3、空托盘出库任务下发 - * 4、移库任务-批量下发 - * 5、入库任务调整 - * 6、移库任务调整 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class BaseStoreRequest { - /** - * 任务编号 - * WCS内部任务编号,本次任务的唯一标识 - */ - public String orderId; - /** - * 楼层编号 - */ - public int floorNo; - /** - * 托盘条码信息 - */ - public String palletCode; - /** - * 原库位号 - * 托盘的存储库位编号。具体库位编号需要双方商定 - */ - public String srcLocation; - /** - * 目的库位号 - * 托盘的目的存储库位编号。具体库位编号需要双方商定 - */ - public String destLocation; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/CancelTaskRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/CancelTaskRequest.java deleted file mode 100644 index bea5cce..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/CancelTaskRequest.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 取消任务请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class CancelTaskRequest { - /** - * 任务编号 - * WCS内部任务编号,本次任务的唯一标识 - */ - public String orderId; - /** - * 托盘条码信息 - */ - public String palletCode; - /** - * 原库位号 - * 托盘的存储库位编号。具体库位编号需要双方商定 - */ - public String srcLocation; - /** - * 目的库位号 - * 托盘的目的存储库位编号。具体库位编号需要双方商定 - */ - public String destLocation; - /** - * 任务类型 - * 1 入库,2 出库,3 移库,4 空托盘入库,5 空托盘出库 - */ - public int taskType; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/CancelTaskResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/CancelTaskResponse.java deleted file mode 100644 index b89f4f1..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/CancelTaskResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 取消任务响应参数 Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class CancelTaskResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusData.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusData.java deleted file mode 100644 index 7b3f6d7..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusData.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -@Data -public class DeviceStatusData { - - String deviceId; - - String x; - - String y; - - /** - * 楼层 - */ - String mapId; - - /** - * 电量 - */ - String power; - - /** - * 托盘 - */ - String pallet; - - /** - * 有无货 - */ - String load; - - /** - * 报警 - */ - String alarm; - - /** - * 任务号 - */ - String taskId; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusRequest.java deleted file mode 100644 index 9094073..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusRequest.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -@Data -public class DeviceStatusRequest { - - String deviceId; - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusResponse.java deleted file mode 100644 index b50b15b..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/DeviceStatusResponse.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -public class DeviceStatusResponse { - - String result; - - String code; - - String comment; - - DeviceStatusData data; - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/EmptyVehicleOutStoreRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/EmptyVehicleOutStoreRequest.java deleted file mode 100644 index 207894b..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/EmptyVehicleOutStoreRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 空托盘出库任务下发 请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class EmptyVehicleOutStoreRequest extends BaseStoreRequest { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/EmptyVehicleOutStoreResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/EmptyVehicleOutStoreResponse.java deleted file mode 100644 index d189f41..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/EmptyVehicleOutStoreResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 空托盘任务下发响应参数Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class EmptyVehicleOutStoreResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreReportRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreReportRequest.java deleted file mode 100644 index 70493dc..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreReportRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 入库任务上报请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class InStoreReportRequest extends BaseStoreReportRequest { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreReportResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreReportResponse.java deleted file mode 100644 index e12fb50..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreReportResponse.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 入库任务上报 响应参数Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class InStoreReportResponse extends BaseResponseData { - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreRequest.java deleted file mode 100644 index 9d72850..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreRequest.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 入库任务下发请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class InStoreRequest extends BaseStoreRequest { - /** - * 任务类型 - * 1代表正常载货托盘入库,2代表空托盘入库 - */ - public int type; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResetRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResetRequest.java deleted file mode 100644 index ef0b502..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResetRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 入库任务调整请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class InStoreResetRequest extends BaseStoreRequest { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResetResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResetResponse.java deleted file mode 100644 index 656f21e..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResetResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 入库任务调整 响应参数Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class InStoreResetResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResponse.java deleted file mode 100644 index 63a6a83..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 入库任务下发响应参数 Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class InStoreResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreTaskUpdateRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreTaskUpdateRequest.java deleted file mode 100644 index 30a2060..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreTaskUpdateRequest.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -@Data -public class InStoreTaskUpdateRequest extends BaseResponseData { - - /** - * 任务编号 - * WCS内部任务编号,本次任务的唯一标识 - */ - public String orderId; - /** - * 托盘条码信息 - */ - public String palletCode; - /** - * 原库位号 - * 托盘的存储库位编号。具体库位编号需要双方商定 - */ - public String srcLocation; - /** - * 目的库位号 - * 托盘的目的存储库位编号。具体库位编号需要双方商定 - */ - public String destLocation; - - /** - * 楼层 - */ - public int floorNo; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreTaskUpdateResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreTaskUpdateResponse.java deleted file mode 100644 index 8dcb1ea..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/InStoreTaskUpdateResponse.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - - -public class InStoreTaskUpdateResponse extends BaseStoreRequest { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreReportRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreReportRequest.java deleted file mode 100644 index 93f933c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreReportRequest.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -/** - * 移库上报请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -public class MoveStoreReportRequest extends BaseStoreReportRequest { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreReportResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreReportResponse.java deleted file mode 100644 index 3f04517..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreReportResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 移库上报响应参数 Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class MoveStoreReportResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreRequest.java deleted file mode 100644 index e2873c6..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreRequest.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -import java.util.List; - -/** - * 移库任务下发请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class MoveStoreRequest { - /** - * 任务组编号 - * WCS内部任务组编号,本组任务的唯一标识 - */ - public String groupId; - - /** - * 任务信息,可批量下发 - */ - public List orderInfos; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResetRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResetRequest.java deleted file mode 100644 index 48c6ef1..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResetRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 移库任务调整请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class MoveStoreResetRequest extends BaseStoreRequest { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResetResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResetResponse.java deleted file mode 100644 index 39b81e3..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResetResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 移库任务调整响应参数Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class MoveStoreResetResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResponse.java deleted file mode 100644 index 514303a..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 移库任务下发响应参数Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class MoveStoreResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreTaskUpdateRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreTaskUpdateRequest.java deleted file mode 100644 index 20b73d8..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreTaskUpdateRequest.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -@Data -public class MoveStoreTaskUpdateRequest { - - /** - * 任务编号 - * WCS内部任务编号,本次任务的唯一标识 - */ - public String orderId; - /** - * 托盘条码信息 - */ - public String palletCode; - /** - * 原库位号 - * 托盘的存储库位编号。具体库位编号需要双方商定 - */ - public String srcLocation; - /** - * 目的库位号 - * 托盘的目的存储库位编号。具体库位编号需要双方商定 - */ - public String destLocation; - - /** - * 楼层 - */ - public int floorNo; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreTaskUpdateResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreTaskUpdateResponse.java deleted file mode 100644 index 248ac3d..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/MoveStoreTaskUpdateResponse.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - - -public class MoveStoreTaskUpdateResponse extends BaseStoreRequest { - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreReportRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreReportRequest.java deleted file mode 100644 index d055705..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreReportRequest.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 出库任务上报请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class OutStoreReportRequest extends BaseStoreReportRequest { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreReportResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreReportResponse.java deleted file mode 100644 index 8116b01..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreReportResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 出库任务上报响应参数Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class OutStoreReportResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreRequest.java deleted file mode 100644 index 3fefe79..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreRequest.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -import java.util.List; - -/** - * 出库任务下发请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class OutStoreRequest { - - /** - * 任务组编号 - * WCS内部任务组编号,本组任务的唯一标识 - */ - public String groupId; - - /** - * 任务信息,可批量下发 - */ - public List orderInfos; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreResponse.java deleted file mode 100644 index b150061..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/OutStoreResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 出库任务下发响应参数Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class OutStoreResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/Resp.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/Resp.java deleted file mode 100644 index 2e9aee8..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/Resp.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 调用立库接口统一返回参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class Resp { - /** - * 成功返回true,失败返回false - */ - public String result; - - /** - * 错误码(0表示成功)1代表入库目的位置有货,其他更多情况待定 - */ - public String code; - - /** - * 错误信息,如果成功则为null - */ - public String comment; - - /** - * 报文携带的数据 - */ - public T data; -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/RoadWayIsLockRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/RoadWayIsLockRequest.java deleted file mode 100644 index 7e6852e..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/RoadWayIsLockRequest.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 巷道锁定解锁请求参数类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class RoadWayIsLockRequest { - /** - * 楼层编号 - */ - public int floorNo; - /** - * 是否锁定 - * true代表锁定,false代表解锁 - */ - public String isLock; - /** - * 巷道编号 - * 需要解锁或锁定的巷道编号。具体巷道编号需要双方商定 - */ - public String roadwayNo; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/RoadWayIsLockResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/RoadWayIsLockResponse.java deleted file mode 100644 index 6770a9b..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/RoadWayIsLockResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -/** - * 巷道锁定解锁响应参数Data类 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Data -public class RoadWayIsLockResponse extends BaseResponseData { -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/putEmptyPalletRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/putEmptyPalletRequest.java deleted file mode 100644 index 2d921b8..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/liKuData/putEmptyPalletRequest.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.nl.acs.ext.wms.liKuData; - -import lombok.Data; - -@Data -public class putEmptyPalletRequest { - - String deviceId; - - String orderId; - - String type; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToLiKuController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToLiKuController.java deleted file mode 100644 index 2633e1c..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToLiKuController.java +++ /dev/null @@ -1,97 +0,0 @@ - -package org.nl.acs.ext.wms.rest; - - - - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.ext.wms.liKuData.*; -import org.nl.acs.ext.wms.service.AcsToLiKuService; -import org.nl.acs.enums.InterfaceLogType; -import org.nl.common.logging.annotation.Log; -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 ludj - * @date 2021-07-21 - **/ -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/liku") -@Slf4j -public class AcsToLiKuController { - private final AcsToLiKuService acsToLiKuService; - - @PostMapping("/inStore") - @Log(value = "下发立库入库任务") - public ResponseEntity inStore(@RequestBody InStoreRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.inStore(requestParam), HttpStatus.OK); - } - - @PostMapping("/outStore") - @Log(value = "下发立库出库任务") - public ResponseEntity outStore(@RequestBody OutStoreRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.outStore(requestParam), HttpStatus.OK); - } - - @PostMapping("/emptyVehicleOutStore") - @Log(value = "下发立库空盘出库任务") - public ResponseEntity emptyVehicleOutStore(@RequestBody EmptyVehicleOutStoreRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.emptyVehicleOutStore(requestParam), HttpStatus.OK); - } - - @PostMapping("/moveStore") - @Log(value = "下发立库移库任务") - public ResponseEntity moveStore(@RequestBody MoveStoreRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.moveStore(requestParam), HttpStatus.OK); - } - - @PostMapping("/inStoreReset") - @Log(value = "下发立库入库任务调整") - public ResponseEntity inStoreReset(@RequestBody InStoreResetRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.inStoreReset(requestParam), HttpStatus.OK); - } - - @PostMapping("/moveStoreReset") - @Log(value = "下发立库移库任务调整") - public ResponseEntity moveStoreReset(@RequestBody MoveStoreResetRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.moveStoreReset(requestParam), HttpStatus.OK); - } - - @PostMapping("/roadWayIsLock") - @Log(value = "下发立库巷道锁定或解锁") - public ResponseEntity roadWayIsLock(@RequestBody RoadWayIsLockRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.roadWayIsLock(requestParam), HttpStatus.OK); - } - - @PostMapping("/cancelTask") - @Log(value = "取消立库任务") - public ResponseEntity cancelTask(@RequestBody CancelTaskRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.cancelTask(requestParam), HttpStatus.OK); - } - - @PostMapping("/queryCarStatus") - @Log(value = "查询四向车状态") - public ResponseEntity queryCarStatus(@RequestBody DeviceStatusRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.queryCarDeviceStatus(requestParam), HttpStatus.OK); - } - - @PostMapping("/queryTsjStatus") - @Log(value = "查询提升机状态") - public ResponseEntity queryTsjStatus(@RequestBody DeviceStatusRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.queryTsjDeviceStatus(requestParam), HttpStatus.OK); - } - - @PostMapping("/querySsxStatus") - @Log(value = "查询提升机状态") - public ResponseEntity querySsxStatus(@RequestBody DeviceStatusRequest requestParam) { - return new ResponseEntity<>(acsToLiKuService.queryTsjDeviceStatus(requestParam), HttpStatus.OK); - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java index 147de64..041a9f6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java @@ -2,23 +2,13 @@ package org.nl.acs.ext.wms.rest; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.springframework.context.annotation.Lazy; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.nl.common.logging.annotation.Log; -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; -import java.util.Map; /** * @author ludj @@ -29,36 +19,5 @@ import java.util.Map; @RequestMapping("/api/wms") @Slf4j public class AcsToWmsController { - private final AcsToWmsService acstowmsService; - -// @PostMapping("/applyTask") -// @Log("向WMS申请任务") -// -// public ResponseEntity applyTaskToWms(@RequestBody String device_code, String container_code, int height, int weight) { -// return new ResponseEntity<>(acstowmsService.applyTaskToWms(device_code, container_code, height, weight), HttpStatus.OK); -// } - - - @PostMapping("/taskStatusFeedback") - @Log("向WMS反馈任务状态") - public ResponseEntity feedbackTaskStatusToWms(@RequestBody Map whereJson) { - JSONArray data = JSONArray.parseArray(String.valueOf(whereJson)); - return new ResponseEntity<>(acstowmsService.feedbackTaskStatusToWms(data), HttpStatus.OK); - } - - - @PostMapping("/feedbackAgvStatus") - @Log("反馈AGV设备状态") - public ResponseEntity feedbackAgvStatus(@RequestBody String device_code, String error, String error_message) { - return new ResponseEntity<>(acstowmsService.feedbackAgvStatus(device_code, error, error_message), HttpStatus.OK); - } - - @PostMapping("/feedbackAgv") - @Log("反馈AGV设备信息") - public ResponseEntity feedbackAgv(@RequestBody JSONArray from) { - return new ResponseEntity<>(acstowmsService.feedbackAgv(from), HttpStatus.OK); - } - - } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/LiKuToACSController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/LiKuToACSController.java deleted file mode 100644 index b83f9eb..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/LiKuToACSController.java +++ /dev/null @@ -1,57 +0,0 @@ - -package org.nl.acs.ext.wms.rest; - - -import cn.dev33.satoken.annotation.SaIgnore; - - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.ext.wms.liKuData.InStoreReportRequest; -import org.nl.acs.ext.wms.liKuData.MoveStoreReportRequest; -import org.nl.acs.ext.wms.liKuData.OutStoreReportRequest; -import org.nl.acs.ext.wms.liKuData.putEmptyPalletRequest; -import org.nl.acs.ext.wms.service.LiKuToAcsService; -//import org.nl.modules.logging.InterfaceLogType; -import org.nl.common.logging.annotation.Log; -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 wangs - * @date 2021-07-21 - **/ -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/likuToACS") -@Slf4j -public class LiKuToACSController { - private final LiKuToAcsService liKuToAcsService; - - @SaIgnore - @PostMapping("/inStoreReport") - @Log(value = "立库反馈入库任务状态") - public ResponseEntity inStoreReport(@RequestBody InStoreReportRequest requestParam) throws Exception { - return new ResponseEntity<>(liKuToAcsService.inStoreReport(requestParam), HttpStatus.OK); - } - - @SaIgnore - @PostMapping("/outStoreReport") - @Log(value = "立库反馈出库任务状态") - public ResponseEntity outStoreReport(@RequestBody OutStoreReportRequest requestParam) throws Exception { - return new ResponseEntity<>(liKuToAcsService.outStoreReport(requestParam), HttpStatus.OK); - } - - @SaIgnore - @PostMapping("/moveStoreReport") - @Log(value = "立库反馈移库任务状态") - public ResponseEntity moveStoreReport(@RequestBody MoveStoreReportRequest requestParam) throws Exception { - return new ResponseEntity<>(liKuToAcsService.moveStoreReport(requestParam), HttpStatus.OK); - } - - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index 5775403..1f81610 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -3,16 +3,12 @@ package org.nl.acs.ext.wms.rest; import cn.dev33.satoken.annotation.SaIgnore; + + import com.alibaba.fastjson.JSONObject; - - import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.ext.wms.data.PutWeightActionRequest; -import org.nl.acs.ext.wms.data.one.CancelTaskRequest; -import org.nl.acs.ext.wms.data.one.CreateTaskRequest; import org.nl.acs.ext.wms.service.WmsToAcsService; -//import org.nl.modules.logging.InterfaceLogType; import org.nl.common.logging.annotation.Log; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -22,7 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; -import java.util.List; /** * @author ludj @@ -39,78 +34,21 @@ public class WmsToAcsController { @Log(value = "ACS接收WMS任务") @SaIgnore public ResponseEntity createFromWms(@RequestBody String whereJson, HttpServletRequest request) { - log.info("wms下发任务的ip:{},端口号:{},地址:{}", request.getRemoteAddr(),request.getRemotePort(),request.getRemoteHost()); return new ResponseEntity<>(wmstoacsService.crateTask(whereJson), HttpStatus.OK); } - @PostMapping("/cancelTask") - @Log(value = "WMS取消任务") + @PostMapping("/confirmAgv") + @Log(value = "ACS接收WMS确认取放货") @SaIgnore - public ResponseEntity cancelFromWms(@RequestBody List reqs) throws Exception { - return new ResponseEntity<>(wmstoacsService.cancelFromWms(reqs), HttpStatus.OK); + public ResponseEntity pause(@RequestBody JSONObject reqParam) { + wmstoacsService.pause(reqParam); + return new ResponseEntity<>(HttpStatus.OK); } - @PostMapping("/updateDeviceGoodsFromWms") - @Log(value = "WMS修改点位状态") - public ResponseEntity updateDeviceGoodsFromWms(@RequestBody String whereJson) { - return new ResponseEntity<>(wmstoacsService.updateDeviceGoodsFromWms(whereJson), HttpStatus.OK); - } - - @PostMapping("/updateTask") - @Log(value = "WMS更新任务点位状态") + @PostMapping("/getWeigh") + @Log(value = "WMS获取重量") @SaIgnore - public ResponseEntity updateTask(@RequestBody String whereJson){ - return new ResponseEntity<>(wmstoacsService.updateTask(whereJson), HttpStatus.OK); + public ResponseEntity getWeight(@RequestBody JSONObject reqParam) { + return new ResponseEntity<>(wmstoacsService.getWeight(reqParam), HttpStatus.OK); } - - @PostMapping("/areaControl") - @Log(value = "区域控制") - public ResponseEntity areaControl(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(wmstoacsService.areaControl(whereJson), HttpStatus.OK); - } - - @PostMapping("/action") - @Log(value = "WMS下发点位信号") - @SaIgnore - public ResponseEntity putAction(@RequestBody String whereJson) throws Exception { - return new ResponseEntity<>(wmstoacsService.putAction(whereJson), HttpStatus.OK); - } - - @PostMapping("/querydevice") - @Log(value = "WMS查询设备状态") - @SaIgnore - public ResponseEntity queryDevice(@RequestBody String whereJson) throws Exception { - return new ResponseEntity<>(wmstoacsService.queryDevice(whereJson), HttpStatus.OK); - } - - @PostMapping("/queryDeviceDBValue") - @Log(value = "WMS查询设备DB值") - @SaIgnore - public ResponseEntity queryDeviceDBValue(@RequestBody String whereJson) { - return new ResponseEntity<>(wmstoacsService.queryDeviceDBValue(whereJson), HttpStatus.OK); - } - - - @PostMapping("/putPlusPullAction") - @Log(value = "WMS下发插拔轴动作") - @SaIgnore - public ResponseEntity putPlusPullAction(@RequestBody String whereJson) { - return new ResponseEntity<>(wmstoacsService.putPlusPullAction(whereJson), HttpStatus.OK); - } - - @PostMapping("/notify") - @Log("wms下发任务动作") - @SaIgnore - public ResponseEntity notify(@RequestBody JSONObject param) { - return new ResponseEntity<>(wmstoacsService.notifyAcs(param), HttpStatus.OK); - } - - @PostMapping("/getTubeMsg") - @Log("下发管芯信息") - @SaIgnore - public ResponseEntity getTubeMes(@RequestBody String whereJson) throws Exception { - return new ResponseEntity<>(wmstoacsService.getTubeMes(whereJson), HttpStatus.OK); - } - - } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToLiKuService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToLiKuService.java deleted file mode 100644 index b06c61e..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToLiKuService.java +++ /dev/null @@ -1,108 +0,0 @@ -package org.nl.acs.ext.wms.service; - -import org.nl.acs.ext.wms.liKuData.*; -import org.nl.acs.instruction.domain.Instruction; - -/** - * @author: geng by - * @createDate: 2022/11/24 - */ -public interface AcsToLiKuService { - - /** - * sendInst - * @param type - * @param inst - * @return - */ - public Resp sendInst(String type, Instruction inst); - - /** - * 入库任务下发 - * - * @param requestParam - * @return - */ - public Resp inStore(InStoreRequest requestParam); - - /** - * 出库任务下发 - * - * @param requestParam - * @return - */ - public Resp outStore(OutStoreRequest requestParam); - - /** - * 空托盘出库任务下发 - * - * @param requestParam - * @return - */ - public Resp emptyVehicleOutStore(EmptyVehicleOutStoreRequest requestParam); - - - /** - * 移库任务下发 - * - * @param requestParam - * @return - */ - public Resp moveStore(MoveStoreRequest requestParam); - - - /** - * 入库任务调整 - * - * @param requestParam - * @return - */ - public Resp inStoreReset(InStoreResetRequest requestParam); - - - /** - * 移库任务调整 - * - * @param requestParam - * @return - */ - public Resp moveStoreReset(MoveStoreResetRequest requestParam); - - /** - * 巷道锁定与解锁 - * @param requestParam - * @return - */ - public Resp roadWayIsLock(RoadWayIsLockRequest requestParam); - - - /** - * 取消任务 - * @param requestParam - * @return - */ - public Resp cancelTask(CancelTaskRequest requestParam); - - /** - * 查询小车设备状态 - * @param requestParam - * @return - */ - public Resp queryCarDeviceStatus(DeviceStatusRequest requestParam); - - /** - * 查询tsj设备状态 - * @param requestParam - * @return - */ - public Resp queryTsjDeviceStatus(DeviceStatusRequest requestParam); - - /** - * 查询ssx设备状态 - * @param requestParam - * @return - */ - public Resp querySsxDeviceStatus(DeviceStatusRequest requestParam); -} - - diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index b7b4c41..1d31df3 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -1,228 +1,46 @@ package org.nl.acs.ext.wms.service; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.acs.ext.wms.data.*; -import org.nl.acs.ext.wms.data.one.*; -import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingRequest; -import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; -import org.nl.acs.ext.wms.data.one.BaseRequest; -import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.ext.hk.UnifiedResponse; public interface AcsToWmsService { - /** - * 向WMS反馈任务状态 - * @param arr - * @return - */ - public HttpResponse feedbackTaskStatusToWms(JSONArray arr); - - /** - * 请求任务 - * @param address - * @param task_id - * @param vehicle_code - * @return - */ - public String requestTaskAgain(String address, String task_id, String vehicle_code); - - /** - * 反馈AGV设备状态 + * 反馈任务状态 * - * @param device_code - * @param error - * @param error_message - * @return - */ - HttpResponse feedbackAgvStatus(String device_code, String error, String error_message); - - /** - * 反馈AGV设备信息 - * - * @param from - * @return - */ - HttpResponse feedbackAgv(JSONArray from); - - - /** - * 请求开门或关门 - * - * @param device_code - * @param status - * @return - */ - HttpResponse applyOpenOrCloseDoor(String device_code, String status); - - /** - * 查询自动门状态 - * - * @param - * @returna - */ - HttpResponse queryDoorsStatus(); - - - /** - * 申请捆扎、贴标 - * - * @param param - * @return - */ - ApplyLabelingAndBindingResponse applyLabelingAndBindingRequest(ApplyLabelingAndBindingRequest param); - - - /** - * 输送线有货变成无货时向lms请求 - * @param param - * @return - */ - HttpResponse shipDeviceUpdate(JSONObject param); - - - /** - * 二期入库申请任务 - * @param param - * @return - */ - HttpResponse applyTwo(JSONObject param); - - /** - * 二期发货申请任务 - * @param param - * @return - */ - String applySendOutTwo(JSONObject param); - - - /** - * 二期发货申请捆扎、贴标 - * @param param - * @return - */ - String deviceApplyTwo(JSONObject param); - - - String applyTowToOne(JSONObject param); - - /** - * 反馈AGV取放货状态 - * - * @param from - * @return - */ - HttpResponse feedAgvTaskStatus(JSONArray from); - - /** - * ACS向WMS申请任务 - */ - String applyTaskToWms(JSONObject jo); - - /** - * ACS向WMS反馈任务状态 - * @param arr - * @return - */ - HttpResponse feedTaskStatus(JSONArray arr); - - /** - * ACS向WMS反馈任务状态 * @param request + * @param * @return */ - String notify(BaseRequest request); + UnifiedResponse feedTaskStatus(JSONObject request); /** - * 向WMS申请生箔按钮任务 - * @param param + * 反馈车号 + * + * @param request + * @param * @return */ - ApplyGreenFoilButtonResponse applyGreenFoilButtonTask(ApplyGreenFoilButtonRequest param); - - /** - * 向WMS申请表处机下料位按钮任务 - * @param param - * @return - */ - HttpResponse applyBlankButtonTask(JSONObject param); - - /** - * RGV工位上有货申请行架任务 - * @param param - * @return - */ - ApplyManipulatorActionResponse applyManipulatorActionRequest(ApplyManipulatorActionRequest param); - - /** - * 向lms申请套管工位请求 - * @param param - * @return - */ - ApplyPlugPullSitResponse applyPlugPullSiteRequest(ApplyPlugPullSiteRequest param); - - /** - * 向LMS反馈子卷重量 - * @param param - * @return - */ - ApplyfeedbackSubVolumeWeightResponse applyfeedbackSubVolumeWeight(ApplyfeedbackSubVolumeWeightRequest param); + UnifiedResponse feedCarNo(JSONObject request); /** - * 查询站点有无货状态 - * @param inst + * 反馈重量 + * + * @param request + * @param * @return */ - JSONObject queryStationState(Instruction inst); + UnifiedResponse feedWeight(JSONObject request, Class type); - void sendDeviceStatus(JSONObject param); - - - String applyUpdatePointCode(JSONObject param); /** - * 向lms反馈废箔重量 - * @param param + * 申请放货 + * + * @param request + * @param * @return */ - GetWasteFoilWeightResponse feedbackWeight(GetWasteFoilWeightRequest param); - - String getBoxInfo(JSONObject param); - - String getIsUncap(JSONObject param); - - /** - * 反馈管芯抓取位 - * @param param - * @return - */ - HttpResponse feedbackDies(JSONObject param); - - /** - * 请求密集库出气胀轴,申请行架任务 - * @param param - * @return - */ - HttpResponse callShaftFromCache(JSONObject param); - - String secondaryAllocationPoint(JSONObject param); - - /** - * 行架-agv对接位取货完成反馈 - * @param jsonObject - */ - void actionFinishRequest2(JSONObject jsonObject); - - String forceMove(JSONObject param); - - /** - * 向LMS申请气胀轴库点位 - * @param param - * @return - */ - ManipulatorApplyPointResponse manipulatorApplyPointRequest(ManipulatorApplyPointRequest param); + UnifiedResponse applyPass(JSONObject request, Class type); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/LiKuToAcsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/LiKuToAcsService.java deleted file mode 100644 index 9da7958..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/LiKuToAcsService.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.nl.acs.ext.wms.service; - -import org.nl.acs.ext.wms.liKuData.*; - -/** - * @author: wangs - * @createDate: 2022/11/24 - */ -public interface LiKuToAcsService { - - /** - * 入库任务上报 - * @param requestParam - * @return - * @throws Exception - */ - public Resp inStoreReport(InStoreReportRequest requestParam) throws Exception; - - /** - * 出库任务上报 - * - * @param requestParam - * @return - * @throws Exception - */ - public Resp outStoreReport(OutStoreReportRequest requestParam) throws Exception; - - /** - * 移库任务上报 - * - * @param requestParam - * @return - * @throws Exception - */ - public Resp moveStoreReport(MoveStoreReportRequest requestParam) throws Exception; - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java index 054aafb..2674ed2 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java @@ -2,113 +2,31 @@ package org.nl.acs.ext.wms.service; import com.alibaba.fastjson.JSONObject; -import org.nl.acs.ext.wms.data.PutWeightActionRequest; -import org.nl.acs.ext.wms.data.PutWeightActionResponse; -import org.nl.acs.ext.wms.data.one.*; -import java.util.List; -import java.util.Map; public interface WmsToAcsService { /** * crateTask - * @param param + * + * @param reqParam * @return */ - org.nl.acs.ext.wms.data.CreateTaskResponse crateTask(String param); + JSONObject crateTask(String reqParam); + /** - * 创建任务 + * AGV暂停,继续执行任务 * - * @param reqs + * @param reqParam + */ + JSONObject pause(JSONObject reqParam); + + + /** + * 获取重量 + * + * @param reqParam * @return */ - CreateTaskResponse crateTask(List reqs); - - /** - * 更新任务点位状态 - * - * @param whereJson 条件 - * @return Map - */ - Map updateTask(String whereJson); - - - /** - * 取消任务 - * @param reqs - * @return - * @throws Exception - */ - CancelTaskResponse cancelFromWms(List reqs) throws Exception; - - /** - * 修改设置有无货属性 - * - * @param jsonObject 条件 - * @return Map - */ - Map updateDeviceGoodsFromWms(String jsonObject); - - /** - * 区域控制 - * - * @param jsonObject 条件 - * @return Map - */ - Map areaControl(JSONObject jsonObject); - - /** - * 下发动作 - * @param jsonObject - * @return - * @throws Exception - */ - org.nl.acs.ext.wms.data.PutActionResponse putAction(String jsonObject) throws Exception; - - /** - * 查询设备状态 - * - * @param jsonObject 条件 - * @return Map - */ - Map queryDevice(String jsonObject) throws Exception; - - /** - * 查询设备DB值 - * - * @param whereJson - * @return - */ - Map queryDeviceDBValue(String whereJson); - - - /** - * ACS系统在获取空的托盘号 - * - * @param whereJson - * @return - */ - Map querydevice(String whereJson); - - - /** - * 下发插拔轴动作 - * - * @param whereJson 条件 - * @return Map - */ - Map putPlusPullAction(String whereJson); - - - /** - * 下发wms任务动作 - * - * @param param 条件 - * @return Map - */ - JSONObject notifyAcs(JSONObject param); - - Map getTubeMes(String whereJson) throws Exception; - + JSONObject getWeight(JSONObject reqParam); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToLiKuServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToLiKuServiceImpl.java deleted file mode 100644 index 80e3ac9..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToLiKuServiceImpl.java +++ /dev/null @@ -1,288 +0,0 @@ -package org.nl.acs.ext.wms.service.impl; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.address.service.AddressService; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.ext.wms.AcsUtil; -import org.nl.acs.ext.wms.RespUtil; -import org.nl.acs.ext.wms.liKuData.*; -import org.nl.acs.ext.wms.service.AcsToLiKuService; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.system.service.param.ISysParamService; -import org.nl.config.SpringContextHolder; -import org.slf4j.MDC; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; - -/** - * 立库WCS接口 - * - * @author: geng by - * @createDate: 2022/11/24 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class AcsToLiKuServiceImpl implements AcsToLiKuService { - - private final AddressService addressService; - - private String log_file_type = "log_file_type"; - private String log_type = "ACS请求立库"; - - - @Override - public Resp inStore(InStoreRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - String api = addressService.findByCode("inStore").getMethods_url(); - log.info("inStore-----输入参数{}", JSON.toJSONString(requestParam)); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("inStore-----输出参数{}", result); - return RespUtil.getResp(result, new InStoreResponse()); - } finally { - MDC.remove(log_file_type); - } - - } - - @Override - public Resp outStore(OutStoreRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("outStore-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("outStore").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("outStore-----输出参数{}", result); - return RespUtil.getResp(result, new OutStoreResponse()); - } finally { - MDC.remove(log_file_type); - } - - } - - @Override - public Resp emptyVehicleOutStore(EmptyVehicleOutStoreRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("emptyVehicleOutStore-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("emptyVehicleOutStore").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("emptyVehicleOutStore-----输出参数{}", result); - return RespUtil.getResp(result, new EmptyVehicleOutStoreResponse()); - } finally { - MDC.remove(log_file_type); - } - - } - - @Override - public Resp moveStore(MoveStoreRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("moveStore-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("moveStore").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("moveStore-----输出参数{}", result); - return RespUtil.getResp(result, new MoveStoreResponse()); - - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public Resp inStoreReset(InStoreResetRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("inStoreReset-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("inStoreReset").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("inStoreReset-----输出参数{}", result); - return RespUtil.getResp(result, new InStoreResetResponse()); - } finally { - MDC.remove(log_file_type); - } - - } - - @Override - public Resp moveStoreReset(MoveStoreResetRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("moveStoreReset-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("moveStoreReset").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("moveStoreReset-----输出参数{}", result); - return RespUtil.getResp(result, new MoveStoreResetResponse()); - - } finally { - MDC.remove(log_file_type); - } - - } - - @Override - public Resp roadWayIsLock(RoadWayIsLockRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("roadWayIsLock-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("roadWayIsLock").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("roadWayIsLock-----输出参数{}", result); - return RespUtil.getResp(result, new RoadWayIsLockResponse()); - - } finally { - MDC.remove(log_file_type); - } - - } - - - @Override - public Resp cancelTask(CancelTaskRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("cancelTask-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("cancelTask").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("cancelTask-----输出参数{}", result); - return RespUtil.getResp(result, new CancelTaskResponse()); - - } finally { - MDC.remove(log_file_type); - } - - } - - @Override - public Resp queryCarDeviceStatus(DeviceStatusRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("queryCarDeviceStatus-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("queryCarDeviceStatus").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("queryCarDeviceStatus-----输出参数{}", result); - return RespUtil.getResp(result, new DeviceStatusRequest()); - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public Resp queryTsjDeviceStatus(DeviceStatusRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("queryTsjDeviceStatus-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("queryTsjDeviceStatus").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("queryTsjDeviceStatus-----输出参数{}", result); - return RespUtil.getResp(result, new DeviceStatusRequest()); - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public Resp querySsxDeviceStatus(DeviceStatusRequest requestParam) { - try { - MDC.put(log_file_type, log_type); - log.info("querySsxDeviceStatus-----输入参数{}", JSON.toJSONString(requestParam)); - String api = addressService.findByCode("querySsxDeviceStatus").getMethods_url(); - String result = AcsUtil.notifyAcs(api, requestParam); - log.info("querySsxDeviceStatus-----输出参数{}", result); - return RespUtil.getResp(result, new DeviceStatusRequest()); - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public Resp sendInst(String type, Instruction dto) { - AcsToLiKuService acsToLiKuService = SpringContextHolder.getBean(AcsToLiKuService.class); - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - - Resp resp = new Resp(); - String instSendLk = paramService.findByCode(AcsConfig.INSTSENDLK).getValue(); - - try { - if (StrUtil.equals(instSendLk, CommonFinalParam.ONE)) { - if (StrUtil.equals(type, CommonFinalParam.ONE)) { - InStoreRequest request = new InStoreRequest(); - request.setFloorNo(Integer.parseInt(dto.getTo_z())); - request.setType(1); - request.setPalletCode(dto.getVehicle_code()); - request.setOrderId(dto.getInstruction_code()); - request.setSrcLocation(dto.getStart_point_code()); - request.setDestLocation(dto.getNext_point_code()); - resp = acsToLiKuService.inStore(request); - //空托入库 - } else if (StrUtil.equals(type, "2")) { - InStoreRequest request = new InStoreRequest(); - request.setFloorNo(Integer.parseInt(dto.getTo_z())); - request.setType(2); - request.setPalletCode(dto.getVehicle_code()); - request.setOrderId(dto.getInstruction_code()); - request.setSrcLocation(dto.getStart_point_code()); - request.setDestLocation(dto.getNext_point_code()); - resp = acsToLiKuService.inStore(request); - //出库 - } else if (StrUtil.equals(type, "3")) { - OutStoreRequest outStore = new OutStoreRequest(); - BaseStoreRequest baseReq = new BaseStoreRequest(); - List list = new ArrayList(); - baseReq.setOrderId(dto.getInstruction_code()); - baseReq.setSrcLocation(dto.getStart_point_code()); - baseReq.setDestLocation(dto.getNext_point_code()); - baseReq.setFloorNo(Integer.parseInt(dto.getFrom_z())); - baseReq.setPalletCode(dto.getVehicle_code()); - list.add(baseReq); - outStore.setOrderInfos(list); - outStore.setGroupId(dto.getInstruction_code()); - resp = acsToLiKuService.outStore(outStore); - //空托出库 - } else if (StrUtil.equals(type, "4")) { - EmptyVehicleOutStoreRequest emptyVehicleOutStoreRequest = new EmptyVehicleOutStoreRequest(); - emptyVehicleOutStoreRequest.setOrderId(dto.getInstruction_code()); - emptyVehicleOutStoreRequest.setFloorNo(Integer.parseInt(dto.getFrom_z())); - emptyVehicleOutStoreRequest.setSrcLocation(dto.getStart_point_code()); - emptyVehicleOutStoreRequest.setDestLocation(dto.getNext_point_code()); - emptyVehicleOutStoreRequest.setPalletCode(dto.getVehicle_code()); - resp = acsToLiKuService.emptyVehicleOutStore(emptyVehicleOutStoreRequest); - //转库 - } else if (StrUtil.equals(type, "5")) { - MoveStoreRequest moveStoreRequest = new MoveStoreRequest(); - BaseStoreRequest baseReq = new BaseStoreRequest(); - List list = new ArrayList(); - baseReq.setFloorNo(Integer.parseInt(dto.getFrom_z())); - baseReq.setPalletCode(dto.getVehicle_code()); - baseReq.setOrderId(dto.getInstruction_code()); - baseReq.setSrcLocation(dto.getStart_point_code()); - baseReq.setDestLocation(dto.getNext_point_code()); - list.add(baseReq); - moveStoreRequest.setGroupId(dto.getInstruction_code()); - moveStoreRequest.setOrderInfos(list); - resp = acsToLiKuService.moveStore(moveStoreRequest); - } - } else { - resp.setCode("0"); - resp.setResult("true"); - resp.setComment("ACS模拟下发成功"); - } - - } catch (Exception e) { - resp.setCode(CommonFinalParam.ONE); - resp.setResult("false"); - resp.setComment(e.getMessage()); - } - - return resp; - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 4a7af9e..f0068ae 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -1,1035 +1,47 @@ package org.nl.acs.ext.wms.service.impl; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.Header; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.yomahub.tlog.hutoolhttp.TLogHutoolhttpInterceptor; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; import org.nl.acs.address.service.AddressService; import org.nl.acs.address.service.dto.AddressDto; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.ext.wms.LmsUtil; -import org.nl.acs.ext.wms.RetryableUtil; -import org.nl.acs.ext.wms.data.*; -import org.nl.acs.ext.wms.data.AcsToWmsData.applyTask.ApplyTaskRequest; -import org.nl.acs.ext.wms.data.AcsToWmsData.applyTask.ApplyTaskResponse; -import org.nl.acs.ext.wms.data.one.*; -import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingRequest; -import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; -import org.nl.acs.ext.wms.data.one.BaseRequest; +import org.nl.acs.ext.hk.UnifiedResponse; +import org.nl.acs.ext.wms.LmsHttpUtil; import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.system.service.param.ISysParamService; -import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import java.util.Map; -import java.util.concurrent.CompletableFuture; - @Service @RequiredArgsConstructor @Slf4j public class AcsToWmsServiceImpl implements AcsToWmsService { - @Autowired - ISysParamService paramService; @Autowired - DeviceService deviceService; - + private AddressService addressService; @Autowired - AddressService addressService; - - TLogHutoolhttpInterceptor tLogHutoolhttpInterceptor = new TLogHutoolhttpInterceptor(); - - - @Autowired - TaskService taskService; - - @Autowired - DeviceExecuteLogService logServer; - - @Autowired - private LuceneExecuteLogService luceneLogService; - - @Autowired - private RetryableUtil retryableUtil; - - public String token; - - - private String log_file_type = "log_file_type"; - private String log_type = "ACS请求LMS"; - + private LmsHttpUtil lmsHttpUtil; @Override - public String applyTaskToWms(JSONObject jo) { - try { - MDC.put(log_file_type, log_type); - log.info("applyTaskToWms-----输入参数{}", jo); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applyTaskToWms"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(jo)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("applyTaskToWms-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("applyTaskToWms-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("applyTaskToWms-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyTaskToWms", String.valueOf(result2.getStatus()), - JSON.toJSONString(jo), String.valueOf(result2.body()), "ACS向LMS申请生箔按钮任务"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - + public UnifiedResponse feedTaskStatus(JSONObject request) { + AddressDto addressDto = addressService.findByCode("feedTaskStatus"); + return lmsHttpUtil.sendPostRequest(addressDto.getMethods_url(), request); } @Override - public HttpResponse feedbackTaskStatusToWms(JSONArray arr) { - return null; + public UnifiedResponse feedCarNo(JSONObject request) { + AddressDto addressDto = addressService.findByCode("feedCarNo"); + return lmsHttpUtil.sendPostRequest(addressDto.getMethods_url(), request); } @Override - public String requestTaskAgain(String address, String task_id, String vehicle_code) { - return null; + public UnifiedResponse feedWeight(JSONObject request, Class type) { + AddressDto addressDto = addressService.findByCode("feedWeight"); + return lmsHttpUtil.sendPostRequest(addressDto.getMethods_url(), request, type); } @Override - public HttpResponse feedbackAgvStatus(String device_code, String error, String error_message) { - return null; + public UnifiedResponse applyPass(JSONObject request, Class type) { + AddressDto addressDto = addressService.findByCode("applyPass"); + return lmsHttpUtil.sendPostRequest(addressDto.getMethods_url(), request, type); } - - @Override - public HttpResponse feedbackAgv(JSONArray from) { - return null; - } - - - @Override - public HttpResponse applyOpenOrCloseDoor(String device_code, String status) { - return null; - } - - @Override - public HttpResponse queryDoorsStatus() { - return null; - } - - @Override - public ApplyLabelingAndBindingResponse applyLabelingAndBindingRequest(ApplyLabelingAndBindingRequest param) { - return null; - } - - @Override - public HttpResponse shipDeviceUpdate(JSONObject param) { - return null; - } - - @Override - public HttpResponse applyTwo(JSONObject param) { - HttpResponse result2 = null; - try { - MDC.put(log_file_type, log_type); - log.info("applyTwo-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applyTwo"); - String url = wmsurl + addressDto.getMethods_url(); - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("applyTaskToWmsError-----请求异常输出参数{}", msg); - //网络不通 - } - log.info("applyTwo-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyTwo", String.valueOf(result2.getStatus()), - JSON.toJSONString(param), String.valueOf(result2.body()), "ACS向LMS申请" - + ("1".equals(param.getString("type")) ? "子卷装箱入库任务" : "2".equals(param.getString("type")) ? "空盘入库" : "3".equals(param.getString("type")) ? "空盘出库" : "5".equals(param.getString("type")) ? "木箱入库" : - "6".equals(param.getString("type")) ? "退货入库" : "异常处理位")); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2; - - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public String applySendOutTwo(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - log.info("applySendOutTwo-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applySendOutTwo"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("applySendOutTwo-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("applySendOutTwo-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("applySendOutTwo-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applySendOutTwo", String.valueOf(result2.getStatus()), - JSON.toJSONString(param), String.valueOf(result2.body()), "二期发货申请任务"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public String deviceApplyTwo(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - log.info("deviceApplyTwo-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("deviceApplyTwo"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("deviceApplyTwo-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("deviceApplyTwo-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("deviceApplyTwo-----输出参数{}", result2.body()); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public String applyTowToOne(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - log.info("sendProductToFirstFloor-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("sendProductToFirstFloor"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("sendProductToFirstFloor-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("sendProductToFirstFloor-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("sendProductToFirstFloor-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "sendProductToFirstFloor", String.valueOf(result2.getStatus()), - JSON.toJSONString(param), String.valueOf(result2.body()), "二期发货申请捆扎、贴标"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public HttpResponse feedAgvTaskStatus(JSONArray from) { - return null; - } - - - @Override - public HttpResponse feedTaskStatus(JSONArray data) { - //feedTaskStatus - try { - MDC.put(log_file_type, log_type); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - - String task_code = ""; - for (int i = 0; i < data.size(); i++) { - JSONObject json = (JSONObject) data.get(i); - task_code = json.getString("task_code"); - } - TaskDto taskDto = taskService.findByCode(task_code); - String vehicle_code = taskDto.getVehicle_code(); - - HttpResponse result2 = null; - log.info("feedbackTaskStatusToWms-----请求参数{}", data.toString()); - - AddressDto addressDto = addressService.findByCode("feedTaskStatus"); - String methods_url = addressDto.getMethods_url(); - try { - result2 = HttpRequest.post(wmsurl + methods_url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token).body(String.valueOf(data)) - .execute(); - -// //System.out.println(result2); - log.info("feedbackTaskStatusToWms-----执行反馈{}", result2); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedTaskStatus", String.valueOf(result2.getStatus()), - String.valueOf(data), String.valueOf(result2.body()), "ACS向WMS反馈任务状态"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 -// //System.out.println(msg); - log.info("feedbackTaskStatusToWms-----输出参数{}", msg); - CompletableFuture.runAsync(() -> { - retryableUtil.retryable(wmsurl + methods_url, JSON.toJSONString(data), token); - }); - - } - - - String type = ""; - if (ObjectUtil.isNotEmpty(result2) && result2.getStatus() == 200) { - type = "info"; - JSONObject jo = JSONObject.parseObject(result2.body()); - log.info("feedbackTaskStatusToWms-----输出参数{}", jo.toString()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedTaskStatus", String.valueOf(result2.getStatus()), - String.valueOf(data), String.valueOf(result2.body()), "ACS向WMS反馈任务状态"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2; - } else { - type = "error"; - } - return null; - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public String notify(BaseRequest request) { - return null; - } - - @Override - public ApplyGreenFoilButtonResponse applyGreenFoilButtonTask(ApplyGreenFoilButtonRequest param) { - ApplyGreenFoilButtonResponse applyGreenFoilButtonResponse = new ApplyGreenFoilButtonResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applyGreenFoilButtonTask"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("ApplyGreenFoilButtonRequest----请求参数{}", param); - try { -// String result = ""; - String result = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .body(JSON.toJSONString(param)) - .execute().body(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("ApplyGreenFoilButtonResponse----返回参数{}", result); - applyGreenFoilButtonResponse = JSONObject.toJavaObject(jsonObject, ApplyGreenFoilButtonResponse.class); - } catch (Exception e) { - JSONObject map = new JSONObject(); - map.put("status", 400); - map.put("message", e.getMessage()); - return JSONObject.toJavaObject(map, ApplyGreenFoilButtonResponse.class); - } - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyGreenFoilButtonTask", String.valueOf(applyGreenFoilButtonResponse.getCode()), - JSON.toJSONString(param), String.valueOf(applyGreenFoilButtonResponse.getMessage()), "ACS向LMS申请生箔按钮任务"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - return applyGreenFoilButtonResponse; - } - - @Override - public HttpResponse applyBlankButtonTask(JSONObject param) { - HttpResponse result = null; - try { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applyButtonTask"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("applyBlankButtonTask----反馈表处按钮请求路径{}", url); - try { - result = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String message = e.getMessage(); - log.info("applyBlankButtonTask----反馈表处按钮请求失败{}", message); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyButtonTask", String.valueOf(result.getStatus()), - JSON.toJSONString(result), - String.valueOf(result.body()), "反馈下发表处任务报错"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - log.info("applyBlankButtonTask - 反馈表处按钮{}", result.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyButtonTask", String.valueOf(result.getStatus()), - JSON.toJSONString(result.body()), - String.valueOf(result.body()), "反馈下发表处任务"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result; - } finally { - MDC.remove(log_file_type); - - } - } - - @Override - public ApplyPlugPullSitResponse applyPlugPullSiteRequest(ApplyPlugPullSiteRequest param) { - log.info("向lms申请套管工位请求,请求参数{}", param); - String result = ""; - try { - MDC.put(log_file_type, log_type); - ApplyPlugPullSitResponse applyPlugPullSitResponse = new ApplyPlugPullSitResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applyPlugPullSiteRequest"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("A向lms申请套管工位请求----请求参数:{}", JSONObject.toJSONString(param)); - try { -// - result = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .body(JSON.toJSONString(param)) - .execute().body(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("向lms申请套管工位请求----返回参数{}", ("1".equals(param.getType()) ? "套轴" : "2".equals(param.getType()) ? "套轴完成" : "3".equals(param.getType()) ? "拔轴完成" : - "4".equals(param.getType()) ? "拔轴" : "缓存线已满,生成行架任务")); - applyPlugPullSitResponse = JSONObject.toJavaObject(jsonObject, ApplyPlugPullSitResponse.class); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyPlugPullSiteRequest", String.valueOf(applyPlugPullSitResponse.getstatus()), - JSON.toJSONString(param), String.valueOf(result), "ACS向LMS申请" - + ("1".equals(param.getType()) ? "套轴" : "2".equals(param.getType()) ? "套轴完成" : "3".equals(param.getType()) ? "拔轴完成" : - "4".equals(param.getType()) ? "拔轴" : "缓存线已满,生成行架任务")); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } catch (Exception e) { - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("向lms申请套管工位请求----返回参数{}", e.getMessage()); - applyPlugPullSitResponse = JSONObject.toJavaObject(jsonObject, ApplyPlugPullSitResponse.class); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyPlugPullSiteRequest", String.valueOf(applyPlugPullSitResponse.getstatus()), - JSON.toJSONString(param), - String.valueOf(result), "向lms申请套管工位请求失败"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - } - return applyPlugPullSitResponse; - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public ApplyfeedbackSubVolumeWeightResponse applyfeedbackSubVolumeWeight(ApplyfeedbackSubVolumeWeightRequest param) { - log.info("向LMS反馈子卷重量,请求参数{}", param); - String result = ""; - ApplyfeedbackSubVolumeWeightResponse applyfeedbackSubVolumeWeightResponse = new ApplyfeedbackSubVolumeWeightResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applyfeedbackSubVolumeWeightRequest"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("向LMS反馈子卷重量----请求参数:{}", JSONObject.toJSONString(param)); - try { -// - result = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .body(JSON.toJSONString(param)) - .execute().body(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("向LMS反馈子卷重量----返回参数{}", result); - applyfeedbackSubVolumeWeightResponse = JSONObject.toJavaObject(jsonObject, ApplyfeedbackSubVolumeWeightResponse.class); - } catch (Exception e) { - String message = e.getMessage(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("向LMS反馈子卷重量----返回参数{}", result); - applyfeedbackSubVolumeWeightResponse = JSONObject.toJavaObject(jsonObject, ApplyfeedbackSubVolumeWeightResponse.class); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyManipulatorAction", String.valueOf(applyfeedbackSubVolumeWeightResponse.getCode()), - JSON.toJSONString(param), message, "向LMS反馈子卷重量"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyfeedbackSubVolumeWeightRequest", String.valueOf(applyfeedbackSubVolumeWeightResponse.getCode()), - JSON.toJSONString(param), String.valueOf(applyfeedbackSubVolumeWeightResponse.getMessage()), "ACS反馈LMS子卷重量"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - return applyfeedbackSubVolumeWeightResponse; - } - - @Override - public ApplyManipulatorActionResponse applyManipulatorActionRequest(ApplyManipulatorActionRequest param) { - log.info("RGV工位上有货申请行架任务,请求参数{}", param); - String result = ""; - ApplyManipulatorActionResponse applyManipulatorActionResponse = new ApplyManipulatorActionResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("applyManipulatorAction"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("RGV工位上有货申请行架任务----请求参数:{}", JSONObject.toJSONString(param)); - try { - result = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .body(JSON.toJSONString(param)) - .execute().body(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("RGV工位上有货申请行架任务----返回参数{}", result); - applyManipulatorActionResponse = JSONObject.toJavaObject(jsonObject, ApplyManipulatorActionResponse.class); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyManipulatorAction", String.valueOf(applyManipulatorActionResponse.getCode()), - JSON.toJSONString(param), String.valueOf(result), "RGV工位上有货申请行架任务"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } catch (Exception e) { - String message = e.getMessage(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("RGV工位上有货申请行架任务----返回参数{}", result); - applyManipulatorActionResponse = JSONObject.toJavaObject(jsonObject, ApplyManipulatorActionResponse.class); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "applyManipulatorAction", String.valueOf(applyManipulatorActionResponse.getCode()), - JSON.toJSONString(param), String.valueOf(result), "RGV工位上有货申请行架任务失败"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - } - return applyManipulatorActionResponse; - } - - @Override - public GetWasteFoilWeightResponse feedbackWeight(GetWasteFoilWeightRequest param) { - log.info("向LMS申请反馈,请求参数{}", param); - try { - MDC.put(log_file_type, log_type); - GetWasteFoilWeightResponse getWasteFoilWeightResponse = new GetWasteFoilWeightResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("feedbackWeight"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("GetWasteFoilWeightRequest----请求参数:{}", JSONObject.toJSONString(param)); - try { -// String result = ""; - String result = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .body(JSON.toJSONString(param)) - .execute().body(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("GetWasteFoilWeightResponse----返回参数{}", result); - getWasteFoilWeightResponse = JSONObject.toJavaObject(jsonObject, GetWasteFoilWeightResponse.class); - } catch (Exception e) { - JSONObject map = new JSONObject(); - map.put("status", 400); - map.put("message", e.getMessage()); - return JSONObject.toJavaObject(map, GetWasteFoilWeightResponse.class); - } - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedbackWeight", String.valueOf(getWasteFoilWeightResponse.getCode()), - JSON.toJSONString(param), String.valueOf(getWasteFoilWeightResponse), "ACS向LMS申请反馈"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - return getWasteFoilWeightResponse; - } finally { - MDC.remove(log_file_type); - - } - } - - @Override - public String getBoxInfo(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - log.info("getBoxInfo-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("getBoxInfo"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("getBoxInfo-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("getBoxInfo-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("getBoxInfo-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "getBoxInfo", String.valueOf(result2.getStatus()), - JSON.toJSONString(param), String.valueOf(result2.body()), "申请高度等级"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public String getIsUncap(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - log.info("getIsUncap-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("getIsUncap"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("getIsUncap-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("getIsUncap-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("getIsUncap-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "getIsUncap", String.valueOf(result2.getStatus()), - JSON.toJSONString(param), String.valueOf(result2.body()), "申请开盖"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - } - - - @Override - public String secondaryAllocationPoint(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - log.info("secondaryAllocationPoint-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("secondaryAllocationPoint"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("secondaryAllocationPoint-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("secondaryAllocationPoint-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("secondaryAllocationPoint-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "secondaryAllocationPoint", String.valueOf(result2.getStatus()), - JSON.toJSONString(param), String.valueOf(result2.body()), "追加诺宝动作块"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - } - - - @Override - public String forceMove(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - log.info("forceMove-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("forceMove"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("forceMove-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("forceMove-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("forceMove-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "forceMove", String.valueOf(result2.getStatus()), - JSON.toJSONString(param), String.valueOf(result2.body()), "追加诺宝动作块"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public ManipulatorApplyPointResponse manipulatorApplyPointRequest(ManipulatorApplyPointRequest param) { - log.info("向LMS申请气胀轴库点位,请求参数{}", JSONObject.toJSONString(param)); - String result = ""; - ManipulatorApplyPointResponse manipulatorApplyPointResponse = new ManipulatorApplyPointResponse(); - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("manipulatorApplyPointRequest"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - try { - result = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .body(JSON.toJSONString(param)) - .execute().body(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("向LMS申请气胀轴库点位----返回参数{}", result); - manipulatorApplyPointResponse = JSONObject.toJavaObject(jsonObject, ManipulatorApplyPointResponse.class); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "manipulatorApplyPointRequest", String.valueOf(manipulatorApplyPointResponse.getCode()), - JSON.toJSONString(param), String.valueOf(result), "向LMS申请气胀轴库" + ("1".equals(param.getType()) ? "取货点位" : "放货点位")); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } catch (Exception e) { - String message = e.getMessage(); - JSONObject jsonObject = JSONObject.parseObject(result); - log.info("向LMS申请气胀轴库点位----返回参数{}", result); - manipulatorApplyPointResponse = JSONObject.toJavaObject(jsonObject, ManipulatorApplyPointResponse.class); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "manipulatorApplyPointRequest", String.valueOf(manipulatorApplyPointResponse.getCode()), - JSON.toJSONString(param), String.valueOf(result), "向LMS申请气胀轴库点位失败"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - } - return manipulatorApplyPointResponse; - } - - @Override - public void actionFinishRequest2(JSONObject jsonObject) { - HttpResponse execute = null; - try { - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("actionFinishRequest2"); - String url = wmsurl + addressDto.getMethods_url(); - try { - execute = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .body(String.valueOf(jsonObject)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("feedbackDie-----输出参数{}", msg); - //网络不通 - LuceneLogDto luceneLogDto1 = new LuceneLogDto(4, "actionFinishRequest2", String.valueOf(execute.getStatus()), - String.valueOf(jsonObject), - String.valueOf(execute.body()), jsonObject.getString("task_code") + "设备工位取货完成反馈失败"); - luceneLogService.interfaceExecuteLog(luceneLogDto1); - } - log.info("actionFinishRequest2 - 设备工位取货完成反馈{}", jsonObject); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "actionFinishRequest2", "", - String.valueOf(jsonObject), - "", jsonObject.getString("task_code") + "设备工位取货完成反馈"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } catch (Exception e) { - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "actionFinishRequest2", String.valueOf(execute.getStatus()), - JSON.toJSONString(execute.body()), - String.valueOf(execute.body()), jsonObject.getString("task_code") + "设备工位取货完成反馈失败"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - } - - @Override - public HttpResponse feedbackDies(JSONObject param) { - HttpResponse result2 = null; - try { - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("feedbackDie"); - String url = wmsurl + addressDto.getMethods_url(); - log.info("feedbackDie - 反馈管芯请求路径{}", param); - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("feedbackDie-----输出参数{}", msg); - //网络不通 - } - log.info("feedbackDie - 反馈管芯{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedbackDie", String.valueOf(result2.getStatus()), - String.valueOf(param), - String.valueOf(result2.body()), "反馈管芯抓取"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2; - } catch (Exception e) { - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "feedbackDie", String.valueOf(result2.getStatus()), - JSON.toJSONString(result2.body()), - String.valueOf(result2.body()), "反馈管芯抓取报错"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return null; - } - } - - - @Override - public HttpResponse callShaftFromCache(JSONObject param) { - HttpResponse result2 = null; - try { - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("callShaftFromCache"); - String url = wmsurl + addressDto.getMethods_url(); - log.info("callShaftFromCache - 请求密集库出气胀轴,申请行架任务请求路径{}", param); - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("callShaftFromCache-----请求密集库出气胀轴,申请行架任务输出参数{}", msg); - //网络不通 - } - log.info("callShaftFromCache - 请求密集库出气胀轴,申请行架任务{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "callShaftFromCache", String.valueOf(result2.getStatus()), - String.valueOf(param), - String.valueOf(result2.body()), "请求密集库出气胀轴,申请行架任务"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2; - } catch (Exception e) { - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "callShaftFromCache", String.valueOf(result2.getStatus()), - JSON.toJSONString(result2.body()), - String.valueOf(result2.body()), "请求密集库出气胀轴,申请行架任务报错"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return null; - } - } - - - @Override - public JSONObject queryStationState(Instruction inst) { - try { - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("gccQueryStationState"); - String uri = wmsurl + addressDto.getMethods_url() + "?StartStationCode=" + inst.getStart_point_code() + "&EndStationCode=" + inst.getNext_point_code(); - - log.info("gccQueryStationState - 请求路径{}", uri); - String responseBody = HttpRequest - .get(uri) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .execute() - .body(); - log.info("gccQueryStationState - 响应参数{}", responseBody); - JSONObject jsonObject = JSONObject.parseObject(responseBody); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "gccQueryStationState", String.valueOf(jsonObject.get("code")), - JSON.toJSONString("StartStationCode=" + inst.getStart_point_code() + "&EndStationCode=" + inst.getNext_point_code()), - String.valueOf(jsonObject), "ACS查询站点有无货状态"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return JSONObject.parseObject(responseBody); - } catch (Exception e) { - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.BAD_REQUEST.value()); - result.put("message", e.getMessage()); - return result; - } - } - - @Override -// @Async - public void sendDeviceStatus(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { - String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("sendDeviceStatus"); - String methods_url = addressDto.getMethods_url(); - String url = wmsUrl + methods_url; - log.info("sendDeviceStatus - 请求参数 {}", param); - HttpResponse response = HttpRequest - .post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .body(param.toString()) - .execute(); - log.info("sendDeviceStatus - 返回参数 {}", response.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "sendDeviceStatus", String.valueOf(response.getStatus()), - String.valueOf(param), - String.valueOf(response.body()), "向LMS发送设备状态"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - } - } catch (Throwable ignored) { - - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public String applyUpdatePointCode(JSONObject param) { - try { - MDC.put(log_file_type, log_type); - log.info("applyUpdatePointCode-----输入参数{}", param); - String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); - AddressDto addressDto = addressService.findByCode("deviceApplyExceptional"); - String url = wmsurl + addressDto.getMethods_url(); - HttpResponse result2 = null; - try { - result2 = HttpRequest.post(url) - .addInterceptor(tLogHutoolhttpInterceptor) - .header(Header.USER_AGENT, "Hutool http") - .header("Authorization", token) - .body(String.valueOf(param)) - .execute(); - } catch (Exception e) { - String msg = e.getMessage(); - log.info("applyUpdatePointCode-----输出参数{}", msg); - //网络不通 - } - if (ObjectUtil.isEmpty(result2)) { - log.info("applyUpdatePointCode-----输出参数{}", "返回结果为空"); - return null; - } - String type = ""; - if (result2.getStatus() == 200) { - type = "info"; - } else { - type = "error"; - } - log.info("applyUpdatePointCode-----输出参数{}", result2.body()); - LuceneLogDto luceneLogDto = new LuceneLogDto(4, "deviceApplyExceptional", String.valueOf(result2.getStatus()), - JSON.toJSONString(param), String.valueOf(result2.body()), "申请更新点位"); - luceneLogService.interfaceExecuteLog(luceneLogDto); - return result2.body(); - - } finally { - MDC.remove(log_file_type); - } - } - - } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java deleted file mode 100644 index c508e65..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java +++ /dev/null @@ -1,258 +0,0 @@ -package org.nl.acs.ext.wms.service.impl; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.address.service.AddressService; -import org.nl.acs.common.base.CommonFinalParam; -import org.nl.acs.ext.wms.RespUtil; -import org.nl.acs.ext.wms.liKuData.*; -import org.nl.acs.ext.wms.service.AcsToLiKuService; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.LiKuToAcsService; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.enums.InstructionStatusEnum; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.task.enums.TaskStatusEnum; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.slf4j.MDC; -import org.springframework.stereotype.Service; - -/** - * 立库WCS接口 - * - * @author: wangs - * @createDate: 2022/11/24 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class LiKuToAcsServiceImpl implements LiKuToAcsService { - - private final TaskService taskService; - - private final InstructionService instructionService; - - - - private String log_file_type = "log_file_type"; - private String log_type = "立库请求ACS"; - - /** - * 入库任务状态反馈 - * @param requestParam - * @return - * @throws Exception - */ - @Override - public Resp inStoreReport(InStoreReportRequest requestParam) throws Exception { - - log.info("入库任务状态反馈-----输入参数{}", JSON.toJSONString(requestParam)); - String inst_code = requestParam.getOrderId(); - String status = requestParam.getState(); - String carNo = requestParam.getRobotId(); - Instruction inst = instructionService.findByCodeFromCache(inst_code); - if (ObjectUtil.isEmpty(inst)) { - InStoreReportResponse inStoreReportResponse = new InStoreReportResponse(); - inStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "false"); - result.put("code", "0"); - result.put("comment", "未找到对应指令"); - result.put("data", inStoreReportResponse); - log.info("入库任务状态反馈-----输出参数{}", result); - return RespUtil.getResp(result.toString(), new InStoreReportResponse()); - } - TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); - if (ObjectUtil.isEmpty(task)) { - InStoreReportResponse inStoreReportResponse = new InStoreReportResponse(); - inStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "false"); - result.put("code", "0"); - result.put("comment", "未找到对应任务"); - result.put("data", inStoreReportResponse); - log.info("入库任务状态反馈-----输出参数{}", result); - return RespUtil.getResp(result.toString(), new InStoreReportResponse()); - } - // 1 已接收 2 开始执行 3执行完成 4 5 取消 - if (StrUtil.equals(status, CommonFinalParam.ONE) || StrUtil.equals(status, "2")) { - task.setTask_status(TaskStatusEnum.BUSY.getIndex()); - taskService.update(task); - inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - inst.setExecute_device_code(carNo); - inst.setCarno(carNo); - instructionService.update(inst); - } else if (StrUtil.equals(status, "3")) { - inst.setInstruction_status(InstructionStatusEnum.FINISHED.getIndex()); - instructionService.finish(inst.getInstruction_id()); - } else if (StrUtil.equals(status, "4")) { - - // 5 取消指令 - } else if (StrUtil.equals(status, "5")) { - - instructionService.cancel(inst.getInstruction_id()); - } - InStoreReportResponse inStoreReportResponse = new InStoreReportResponse(); - inStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "true"); - result.put("code", "0"); - result.put("comment", ""); - result.put("data", inStoreReportResponse); - log.info("入库任务状态反馈-----输出参数{}", result); - return RespUtil.getResp(result.toString(), new InStoreReportResponse()); - - } - - @Override - public Resp outStoreReport(OutStoreReportRequest requestParam) throws Exception { - try { - MDC.put(log_file_type, log_type); - log.info("出库任务状态反馈-----输入参数{}", JSON.toJSONString(requestParam)); - String inst_code = requestParam.getOrderId(); - String status = requestParam.getState(); - String carNo = requestParam.getRobotId(); - Instruction inst = instructionService.findByCodeFromCache(inst_code); - if (ObjectUtil.isEmpty(inst)) { - OutStoreReportResponse outStoreReportResponse = new OutStoreReportResponse(); - outStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "false"); - result.put("code", "0"); - result.put("comment", "未找到对应指令"); - result.put("data", outStoreReportResponse); - log.info("出库任务状态反馈-----输出参数{}", result); - return RespUtil.getResp(result.toString(), new OutStoreReportResponse()); - } - TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); - if (ObjectUtil.isEmpty(task)) { - OutStoreReportResponse outStoreReportResponse = new OutStoreReportResponse(); - outStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "false"); - result.put("code", "0"); - result.put("comment", "未找到对应任务"); - result.put("data", outStoreReportResponse); - log.info("出库任务状态反馈-----输出参数{}", result); - return RespUtil.getResp(result.toString(), new OutStoreReportResponse()); - } - // 1 已接收 2 开始执行 3执行完成 4 阻挡 5 空洞 - if (StrUtil.equals(status, CommonFinalParam.ONE) || StrUtil.equals(status, "2")) { - task.setTask_status(TaskStatusEnum.BUSY.getIndex()); - taskService.update(task); - inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - inst.setExecute_device_code(carNo); - inst.setCarno(carNo); - instructionService.update(inst); - } else if (StrUtil.equals(status, "3")) { -// inst.setInstruction_status(CommonFinalParam.ONE); -// instructionService.finish(inst.getInstruction_id()); - - if (StrUtil.equals(task.getTask_type(), "7") && StrUtil.equals(task.getStorage_task_type(), "4")) { - inst.setInstruction_status(InstructionStatusEnum.FINISHED.getIndex()); - instructionService.finish(inst.getInstruction_id()); - } else { - inst.setRemark("立库已反馈完成,待输送上报任务号"); - instructionService.update(inst); - } - - } else if (StrUtil.equals(status, "4")) { - //5 取消指令 - } else if (StrUtil.equals(status, "5")) { - instructionService.cancel(inst.getInstruction_id()); - - } - OutStoreReportResponse outStoreReportResponse = new OutStoreReportResponse(); - outStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "true"); - result.put("code", "0"); - result.put("comment", ""); - result.put("data", outStoreReportResponse); - log.info("出库任务状态反馈-----输出参数{}", result); - - return RespUtil.getResp(result.toString(), new OutStoreReportResponse()); - } finally { - MDC.remove(log_file_type); - } - - - } - - /** - * 移库任务上报 - * @param requestParam - * @return - * @throws Exception - */ - @Override - public Resp moveStoreReport(MoveStoreReportRequest requestParam) throws Exception { - try { - MDC.put(log_file_type, log_type); - log.info("移库任务上报-----输入参数{}", JSON.toJSONString(requestParam)); - String inst_code = requestParam.getOrderId(); - String status = requestParam.getState(); - String carNo = requestParam.getRobotId(); - Instruction inst = instructionService.findByCodeFromCache(inst_code); - if (ObjectUtil.isEmpty(inst)) { - MoveStoreReportResponse moveStoreReportResponse = new MoveStoreReportResponse(); - moveStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "false"); - result.put("code", "0"); - result.put("comment", "未找到对应指令"); - result.put("data", moveStoreReportResponse); - log.info("移库任务状态反馈-----输出参数{}", result); - return RespUtil.getResp(result.toString(), new MoveStoreReportResponse()); - } - TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); - if (ObjectUtil.isEmpty(task)) { - MoveStoreReportResponse moveStoreReportResponse = new MoveStoreReportResponse(); - moveStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "false"); - result.put("code", "0"); - result.put("comment", "未找到对应任务"); - result.put("data", moveStoreReportResponse); - log.info("移库任务状态反馈-----输出参数{}", result); - return RespUtil.getResp(result.toString(), new MoveStoreReportResponse()); - } // 1 已接收 2 开始执行 3执行完成 4 阻挡 5 空洞 - if (StrUtil.equals(status, CommonFinalParam.ONE) || StrUtil.equals(status, "2")) { - task.setTask_status(TaskStatusEnum.BUSY.getIndex()); - taskService.update(task); - inst.setInstruction_status(InstructionStatusEnum.BUSY.getIndex()); - inst.setExecute_device_code(carNo); - inst.setCarno(carNo); - instructionService.update(inst); - - } else if (StrUtil.equals(status, "3")) { - inst.setInstruction_status(InstructionStatusEnum.FINISHED.getIndex()); - instructionService.finish(inst.getInstruction_id()); - } else if (StrUtil.equals(status, "4")) { - - - } else if (StrUtil.equals(status, "5")) { - instructionService.cancel(inst.getInstruction_id()); - } - MoveStoreReportResponse moveStoreReportResponse = new MoveStoreReportResponse(); - moveStoreReportResponse.setOrderId(inst_code); - JSONObject result = new JSONObject(); - result.put("result", "true"); - result.put("code", "0"); - result.put("comment", ""); - result.put("data", moveStoreReportResponse); - log.info("移库任务上报-----输出参数{}", result); - - return RespUtil.getResp(result.toString(), new MoveStoreReportResponse()); - } finally { - MDC.remove(log_file_type); - } - - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 3b3e93c..836c2c0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -3,41 +3,41 @@ package org.nl.acs.ext.wms.service.impl; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device_driver.agv.ndctwo.AgvNdcTwoDeviceDriver; -import org.nl.acs.device_driver.conveyor.belt_conveyor.BeltConveyorDeviceDriver; -import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; -import org.nl.acs.ext.wms.data.*; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; +import org.nl.acs.device_driver.conveyor.standard_weight.StandardWeightSiteDeviceDriver; +import org.nl.acs.ext.enums.ConfirmEnum; +import org.nl.acs.ext.hk.UnifiedResponse; +import org.nl.acs.ext.hk.log.OthersToInterfaceLog; +import org.nl.acs.ext.hk.service.AcsToHkService; +import org.nl.acs.ext.hk.service.data.ContinueTaskReq; import org.nl.acs.ext.wms.service.WmsToAcsService; -import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.enums.InstTypeEnum; import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.instruction.service.dto.InstructionDto; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.storage_cell.domain.StorageCell; import org.nl.acs.storage_cell.service.mapper.StorageCellMapper; +import org.nl.acs.task.enums.TaskTypeEnum; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.common.exception.BadRequestException; -import org.nl.config.SpringContextHolder; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.system.service.param.ISysParamService; -import org.slf4j.MDC; +import org.nl.config.MapOf; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + @Service @RequiredArgsConstructor @@ -46,614 +46,261 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { @Autowired private StorageCellMapper storageCellMapper; - @Autowired - private DeviceAppService deviceAppService; - - @Autowired - private LuceneExecuteLogService luceneExecuteLogService; - + private TaskService taskService; @Autowired private InstructionService instructionService; - @Autowired - private TaskService taskserver; + private DeviceAppService deviceAppService; + @Autowired + private AcsToHkService acsToHkService; - private String log_file_type = "log_file_type"; - private String log_type = "LMS请求ACS"; - @Override - public CreateTaskResponse crateTask(String param) { - try { - MDC.put(log_file_type, log_type); - log.info("ACS接收WMS任务-----输入参数{}", param); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("ACS接收WMS任务") - .content("ACS接收WMS任务-----输入参数:" + param) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - JSONArray datas = JSONArray.parseArray(param); - CreateTaskResponse response = new CreateTaskResponse(); -// ParamService paramService = SpringContextHolder.getBean(ParamService.class); - ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); -// String cancelTaskCheck = paramService.findByCode(AcsConfig.ISALLOWTASK).getValue(); - JSONArray errArr = new JSONArray(); -// if (StrUtil.equals(cancelTaskCheck, "0")) { -// response.setStatus(400); -// response.setMessage("ACS系统需要更新,请稍等"); -// response.setErrArr(datas); -// return response; -// } - for (int i = 0; i < datas.size(); i++) { - String data = datas.get(i).toString(); - CreateTaskRequest request = JsonUtl.format(data, CreateTaskRequest.class); - String paper_array = request.getPaper_array(); - String ext_task_id = request.getExt_task_id(); - String task_code = request.getTask_code(); - String start_device_code = request.getStart_device_code(); - String start_device_code2 = request.getStart_device_code2(); - String next_device_code = request.getNext_device_code(); - String next_device_code2 = request.getNext_device_code2(); - String put_device_code = request.getPut_device_code(); - String priority = request.getPriority(); - String vehicle_code = request.getVehicle_code(); - String vehicle_code2 = request.getVehicle_code2(); - String vehicle_type = request.getVehicle_type(); - String route_plan_code = request.getRoute_plan_code(); - String task_type = request.getTask_type(); - String class_type = request.getClass_type(); - String truss_type = request.getTruss_type(); - Integer agv_action_type = request.getAgv_action_type(); - String empty_site = request.getEmpty_site(); - String is_bushing = request.getIs_bushing(); - String is_pulling = request.getIs_pulling(); - String size = request.getSize(); - String version = request.getVersion(); - String bushing_num = request.getBushing_num(); - String storage_task_type = request.getDtl_type(); - String agv_system_type = request.getAgv_system_type(); - String remark = request.getRemark(); - double oven_time = 0.00d; - if (StrUtil.isNotEmpty(request.getOven_time())) { - oven_time = Double.parseDouble(request.getOven_time()); - } - String temperature = request.getTemperature(); - String start_height = request.getStart_height(); - String next_height = request.getNext_height(); - String params2 = request.getParams2(); - Map params = request.getParams(); - - String start_point_code = ""; - String start_point_code2 = ""; - String next_point_code = ""; - String next_point_code2 = ""; - String put_point_code = ""; - if (StrUtil.isEmpty(task_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "任务号不能为空"); - errArr.add(json); - continue; - } - if (StrUtil.isEmpty(start_device_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "起点不能为空"); - errArr.add(json); - continue; - } - if (StrUtil.isEmpty(next_device_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "终点不能为空"); - errArr.add(json); - continue; - } - - if (StrUtil.equals(task_type, "8")) { - next_device_code = request.getPut_device_code(); - put_device_code = request.getNext_device_code(); - } - - StorageCell start_storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) - .eq(StorageCell::getStorage_code, start_device_code) - .one(); - StorageCell next_storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) - .eq(StorageCell::getStorage_code, next_device_code) - .one(); - StorageCell start2_storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) - .eq(StorageCell::getStorage_code, start_device_code2) - .one(); - StorageCell next2_storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) - .eq(StorageCell::getStorage_code, next_device_code2) - .one(); - StorageCell put_storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) - .eq(StorageCell::getStorage_code, put_device_code) - .one(); - - JSONObject start_device_json = (JSONObject) JSONObject.toJSON(start_storageCell); - if (!ObjectUtil.isEmpty(start_device_json)) { - start_point_code = (String) start_device_json.get("parent_storage_code") == null ? start_device_code : (String) start_device_json.get("storage_code"); - } - JSONObject next_device_json = (JSONObject) JSONObject.toJSON(next_storageCell); - if (!ObjectUtil.isEmpty(next_device_json)) { - next_point_code = (String) next_device_json.get("parent_storage_code") == null ? next_point_code : (String) next_device_json.get("storage_code"); - } - JSONObject start_device_json2 = (JSONObject) JSONObject.toJSON(start2_storageCell); - if (!ObjectUtil.isEmpty(start_device_json2)) { - start_point_code2 = (String) start_device_json2.get("parent_storage_code") == null ? start_device_code2 : (String) start_device_json2.get("storage_code"); - } - JSONObject next_device_json2 = (JSONObject) JSONObject.toJSON(next2_storageCell); - if (!ObjectUtil.isEmpty(next_device_json2)) { - next_point_code2 = (String) next_device_json2.get("parent_storage_code") == null ? next_device_code2 : (String) next_device_json2.get("storage_code"); - } - JSONObject put_device_json = (JSONObject) JSONObject.toJSON(put_storageCell); - if (!ObjectUtil.isEmpty(put_device_json)) { - put_point_code = (String) put_device_json.get("parent_storage_code") == null ? put_device_code : (String) put_device_json.get("storage_code"); - } - if (StrUtil.isNotEmpty(start_point_code) && start_point_code.indexOf("-") > 0) { - String str[] = start_point_code.split("-"); - start_device_code = str[0]; - } else { - start_device_code = start_point_code; - } - - if (StrUtil.isNotEmpty(next_point_code) && next_point_code.indexOf("-") > 0) { - String str[] = next_point_code.split("-"); - next_device_code = str[0]; - } else { - next_device_code = next_point_code; - } - - if (StrUtil.isNotEmpty(start_point_code2) && start_point_code2.indexOf("-") > 0) { - String str[] = start_point_code2.split("-"); - start_device_code2 = str[0]; - } else { - start_device_code2 = start_point_code2; - } - - if (StrUtil.isNotEmpty(next_point_code2) && next_point_code2.indexOf("-") > 0) { - String str[] = next_point_code2.split("-"); - next_device_code2 = str[0]; - } else { - next_device_code2 = next_point_code2; - } - - if (StrUtil.isNotEmpty(put_point_code) && put_point_code.indexOf("-") > 0) { - String str[] = put_point_code.split("-"); - put_device_code = str[0]; - } else { - put_device_code = put_point_code; - } - - if (StrUtil.isEmpty(route_plan_code)) { - route_plan_code = "normal"; - } - - if (StrUtil.equals(task_type, "5")) { - if (taskserver.querySameDeviceReadyTask(start_device_code, next_device_code, "0") > 1) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "已存在相同的起点:" + start_device_code + "终点:" + next_device_code + "未执行的输送任务"); - errArr.add(json); - continue; - } - } - - TaskDto taskDto = taskserver.findByCodeFromCache(task_code); - if (taskDto != null) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "存在相同的任务号:" + task_code); - errArr.add(json); - continue; - } - if (!StrUtil.isEmpty(vehicle_code)) { - TaskDto vehicle_dto = taskserver.findByContainer(vehicle_code); - if (vehicle_dto != null) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "已存在任务编号为" + vehicle_dto.getTask_code() + "托盘号:" + vehicle_code); - errArr.add(json); - continue; - } - } - -// if (StrUtil.isEmpty(vehicle_code2)) { -// JSONObject json = new JSONObject(); -// json.put("task_code", task_code); -// json.put("ext_task_id", ext_task_id); -// json.put("message", " 木箱号不能为空!"); -// errArr.add(json); -// continue; -// } - - if (StrUtil.isEmpty(start_point_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", request.getStart_device_code() + " 该设备号未找到对应点位"); - errArr.add(json); - continue; - } - if (StrUtil.isEmpty(next_point_code)) { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", request.getNext_device_code() + " 该设备号未找到对应点位"); - errArr.add(json); - continue; - } - - JSONObject jo = new JSONObject(); - jo.put("task_id", IdUtil.simpleUUID()); - jo.put("task_code", task_code); - jo.put("start_point_code", start_point_code); - jo.put("next_point_code", next_point_code); - jo.put("start_point_code2", start_point_code2); - jo.put("next_point_code2", next_point_code2); - jo.put("put_point_code", put_point_code); - jo.put("start_parent_code", start_point_code); - jo.put("next_parent_code", next_point_code); - jo.put("start_device_code", start_device_code); - jo.put("next_device_code", next_device_code); - jo.put("start_device_code2", start_device_code2); - jo.put("next_device_code2", next_device_code2); - jo.put("put_device_code", put_device_code); - jo.put("agv_action_type", agv_action_type); - jo.put("priority", priority); - jo.put("vehicle_code", vehicle_code); - jo.put("vehicle_code2", vehicle_code2); - jo.put("vehicle_type", vehicle_type); - jo.put("storage_task_type", storage_task_type); - jo.put("agv_system_type", agv_system_type); - jo.put("start_height", start_height); - jo.put("next_height", next_height); - jo.put("oven_time", (int) Math.ceil(oven_time)); - jo.put("remark", remark); - jo.put("params", params); - jo.put("params2", params2); - jo.put("task_type", StrUtil.isEmpty(task_type) ? 1 : Integer.parseInt(task_type)); - jo.put("class_type", class_type); - jo.put("route_plan_code", route_plan_code); - jo.put("paper_array", JSONUtil.toJsonStr(paper_array)); - jo.put("truss_type", JSONUtil.toJsonStr(truss_type)); - jo.put("empty_site", JSONUtil.toJsonStr(empty_site)); - jo.put("is_bushing", JSONUtil.toJsonStr(is_bushing)); - jo.put("is_pulling", JSONUtil.toJsonStr(is_pulling)); - jo.put("size", JSONUtil.toJsonStr(size)); - jo.put("version", JSONUtil.toJsonStr(version)); - jo.put("bushing_num", JSONUtil.toJsonStr(bushing_num)); - if (!StrUtil.isEmpty(ext_task_id)) { - jo.put("ext_task_id", ext_task_id); - } - - TaskDto task_dto = jo.toJavaObject(TaskDto.class); - try { - if (ObjectUtil.isNotEmpty(request.getInteraction_json())) { - task_dto.setInteractionJson(request.getInteraction_json()); - } - taskserver.create(task_dto); - - } catch (Exception e) { -// e.printStackTrace(); - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", e.getMessage()); - errArr.add(json); - continue; - } - if ("RK1002".equals(task_dto.getStart_device_code())){ - Device device = deviceAppService.findDeviceByCode("RK1003"); - BeltConveyorDeviceDriver beltConveyorDeviceDriver1; - if (device.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { - beltConveyorDeviceDriver1 = (BeltConveyorDeviceDriver) device.getDeviceDriver(); - List list1 = new ArrayList(); - Map map = new HashMap(); - map.put("code", "to_command"); - map.put("value", "55"); - list1.add(map); - beltConveyorDeviceDriver1.writing(list1); - } - - } - } - if (ObjectUtil.isEmpty(errArr)) { - response.setStatus(200); - response.setMessage("success"); - } else { - response.setStatus(400); - if (ObjectUtil.isNotEmpty(errArr)) { - response.setMessage(errArr.getJSONObject(0).getString("message")); - } else { - response.setMessage("false"); - } - response.setErrArr(errArr); - } - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("ACS接收WMS任务") - .content("ACS接收WMS任务-----返回参数:" + JSON.toJSONString(response)) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - log.info("ACS接收WMS任务--------------:输出参数:" + JSON.toJSONString(response)); - - return response; - } finally { - MDC.remove(log_file_type); - } - } - - @Override - public org.nl.acs.ext.wms.data.one.CreateTaskResponse crateTask(List reqs) { - return null; - } - - @Override - public Map updateTask(String whereJson) { - JSONArray datas = JSONArray.parseArray(whereJson); - log.info("WMS更新任务点位状态--------------:输入参数" + datas.toString()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("WMS更新任务点位状态") - .content("WMS更新任务点位状态-----输入参数:" + whereJson) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - JSONArray errArr = new JSONArray(); - if (datas.size() > 0) { - for (int i = 0; i < datas.size(); i++) { - JSONObject jsonObject = datas.getJSONObject(i); - String device_code = jsonObject.getString("device_code"); - String task_code = jsonObject.getString("task_code"); - //1-允许取放; 2-允许离开 - String option = jsonObject.getString("option"); - Instruction inst = instructionService.findByTaskcode(task_code); - if (ObjectUtil.isEmpty(inst)) { - JSONObject jo = new JSONObject(); - jo.put("task_code", task_code); - jo.put("message", "未找到对应任务"); - errArr.add(jo); - continue; - } else { - String carNo = inst.getCarno(); - if (ObjectUtil.isEmpty(carNo)) { - JSONObject jo = new JSONObject(); - jo.put("task_code", task_code); - jo.put("message", "未找到任务对应车号"); - errArr.add(jo); - continue; - } else { - Device device = deviceAppService.findDeviceByCode(carNo); - AgvNdcTwoDeviceDriver agvNdcTwoDeviceDriver; - if (device.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { - agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) device.getDeviceDriver(); - int phase = agvNdcTwoDeviceDriver.getPhase(); - if (phase == 0x03 || phase == 0x05 || phase == 0x08) { - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - Device device_k = deviceAppService.findDeviceByCode(device_code + "_K"); - Device device_m = deviceAppService.findDeviceByCode(device_code + "_M"); - if (device_k.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_k.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option)); - standardOrdinarySiteDeviceDriver.setTask_code(task_code); - } - if (device_m.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_m.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option)); - standardOrdinarySiteDeviceDriver.setTask_code(task_code); - } - } else { - JSONObject jo = new JSONObject(); - jo.put("task_code", task_code); - jo.put("message", "AGV未就绪无法设置"); - errArr.add(jo); - continue; - } - } - } - - } - } - } - JSONObject resultJson = new JSONObject(); - if (ObjectUtil.isEmpty(errArr)) { - resultJson.put("status", HttpStatus.OK.value()); - resultJson.put("message", "操作成功"); - } else { - resultJson.put("status", HttpStatus.BAD_REQUEST.value()); - resultJson.put("message", "操作失败"); - if (ObjectUtil.isNotEmpty(errArr)) { - resultJson.put("errArr", errArr); - } - } - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("WMS更新任务点位状态") - .content("WMS更新任务点位状态-----返回参数:" + resultJson) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - return resultJson; - } - - @Override - public org.nl.acs.ext.wms.data.one.CancelTaskResponse cancelFromWms(List reqs) throws Exception { - return null; - } - - @Override - public Map updateDeviceGoodsFromWms(String jsonObject) { - return null; - } - - @Override - public Map areaControl(JSONObject jsonObject) { - return null; - } - - @Override - public PutActionResponse putAction(String jsonObject) throws Exception { - log.info("WMS下发点位信号--------------:输入参数" + jsonObject); - String date = new Date().toString(); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("WMS下发点位信号") - .content("WMS下发点位信号-----输入参数:" + jsonObject) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - JSONArray datas = JSONArray.parseArray(jsonObject); - PutActionResponse response = new PutActionResponse(); + @OthersToInterfaceLog("WMS->ACS") + public JSONObject crateTask(String reqParam) { + log.info("ACS接收WMS任务-----输入参数{}", reqParam); + JSONArray datas = JSONArray.parseArray(reqParam); + JSONObject response = new JSONObject(); JSONArray errArr = new JSONArray(); for (int i = 0; i < datas.size(); i++) { - String data = datas.get(i).toString(); - PutActionRequest request = JsonUtl.format(data, PutActionRequest.class); - String device_code = request.getDevice_code(); - String code = request.getCode(); - String value = request.getValue(); - Device device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device)) { - throw new Exception("未找到对应设备:" + device_code); + JSONObject request = datas.getJSONObject(i); + String ext_task_id = request.getString("ext_task_id"); + String task_code = request.getString("task_code"); + String start_device_code = request.getString("start_device_code"); + String next_device_code = request.getString("next_device_code"); + String priority = request.getString("priority"); + String vehicle_code = request.getString("vehicle_code"); + String vehicle_type = request.getString("vehicle_type"); + String task_type = request.getString("task_type"); + String is_get_pause = request.getString("is_get_pause"); + String is_put_pause = request.getString("is_put_pause"); + String is_wait = request.getString("is_wait"); + String agv_system_type = request.getString("agv_system_type"); + String remark = request.getString("remark"); + + + String start_point_code = ""; + String next_point_code = ""; + if (StrUtil.isEmpty(task_code)) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", "任务号不能为空"); + errArr.add(json); + continue; } - BeltConveyorDeviceDriver beltConveyorDeviceDriver; - if (device.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { - beltConveyorDeviceDriver = (BeltConveyorDeviceDriver) device.getDeviceDriver(); - beltConveyorDeviceDriver.writing(code, value); + if (StrUtil.isEmpty(start_device_code)) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", "起点不能为空"); + errArr.add(json); + continue; + } + if (StrUtil.isEmpty(next_device_code)) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", "终点不能为空"); + errArr.add(json); + continue; + } + StorageCell start_storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) + .eq(StorageCell::getStorage_code, start_device_code) + .one(); + StorageCell next_storageCell = new LambdaQueryChainWrapper<>(storageCellMapper) + .eq(StorageCell::getStorage_code, next_device_code) + .one(); + + JSONObject start_device_json = (JSONObject) JSONObject.toJSON(start_storageCell); + if (!ObjectUtil.isEmpty(start_device_json)) { + start_point_code = (String) start_device_json.get("parent_storage_code") == null ? start_device_code : (String) start_device_json.get("storage_code"); + } + JSONObject next_device_json = (JSONObject) JSONObject.toJSON(next_storageCell); + if (!ObjectUtil.isEmpty(next_device_json)) { + next_point_code = (String) next_device_json.get("parent_storage_code") == null ? next_point_code : (String) next_device_json.get("storage_code"); + } + if (StrUtil.isNotEmpty(start_point_code) && start_point_code.indexOf("-") > 0) { + String str[] = start_point_code.split("-"); + start_device_code = str[0]; + } else { + start_device_code = start_point_code; + } + + if (StrUtil.isNotEmpty(next_point_code) && next_point_code.indexOf("-") > 0) { + String str[] = next_point_code.split("-"); + next_device_code = str[0]; + } else { + next_device_code = next_point_code; + } + + TaskDto taskDto = taskService.findByCodeFromCache(task_code); + if (taskDto != null) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", "存在相同的任务号:" + task_code); + errArr.add(json); + continue; + } + if (!StrUtil.isEmpty(vehicle_code)) { + TaskDto vehicle_dto = taskService.findByVehicleCode(vehicle_code); + if (vehicle_dto != null) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", "已存在任务编号为" + vehicle_dto.getTask_code() + "托盘号:" + vehicle_code); + errArr.add(json); + continue; + } + } + + if (StrUtil.isEmpty(start_point_code)) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", start_device_code + " 该设备号未找到对应点位"); + errArr.add(json); + continue; + } + if (StrUtil.isEmpty(next_point_code)) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", next_device_code + " 该设备号未找到对应点位"); + errArr.add(json); + continue; + } + + JSONObject jo = new JSONObject(); + jo.put("task_id", IdUtil.simpleUUID()); + jo.put("task_code", task_code); + jo.put("start_point_code", start_point_code); + jo.put("next_point_code", next_point_code); + jo.put("start_parent_code", start_storageCell.getParent_storage_code()); + jo.put("next_parent_code", next_point_code); + jo.put("start_device_code", start_device_code); + jo.put("next_device_code", next_storageCell.getParent_storage_code()); + jo.put("priority", priority); + jo.put("vehicle_code", vehicle_code); + jo.put("vehicle_type", vehicle_type); + jo.put("agv_system_type", agv_system_type); + jo.put("is_get_pause", is_get_pause); + jo.put("is_put_pause", is_put_pause); + jo.put("is_wait", is_wait); + jo.put("remark", remark); + jo.put("task_type", StrUtil.isEmpty(task_type) ? 1 : Integer.parseInt(task_type)); + jo.put("ext_task_id", ext_task_id); + + TaskDto task_dto = jo.toJavaObject(TaskDto.class); + try { + taskService.create(task_dto); + } catch (Exception e) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", e.getMessage()); + errArr.add(json); + continue; } } - response.setStatus(200); - response.setMessage("success"); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("WMS下发点位信号") - .content("WMS下发点位信号-----返回参数:" + JSON.toJSONString(response)) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - log.info("WMS下发点位信号--------------:输出参数:" + JSON.toJSONString(response)); + if (ObjectUtil.isEmpty(errArr)) { + response.put("status", 200); + response.put("message", "success"); + } else { + response.put("status", 400); + if (ObjectUtil.isNotEmpty(errArr)) { + response.put("message", errArr.getJSONObject(0).getString("message")); + } else { + response.put("message", "false"); + } + response.put("errArr", errArr); + } + log.info("ACS接收WMS任务--------------:输出参数:" + JSON.toJSONString(response)); return response; } - @Override - public Map getTubeMes(String jsonObject) throws Exception { - log.info("下发管芯信息--------------:输入参数" + jsonObject); - JSONArray datas = JSONArray.parseArray(jsonObject); - Map map = new HashMap(); - JSONObject jo = (JSONObject) datas.get(0); - String deviceCode = jo.getString("device_code"); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code(deviceCode) - .content("下发管芯信息-----输入参数:" + jsonObject) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.OK.value()); - resultJson.put("message", "操作成功"); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code(deviceCode) - .content("下发电气信号--------------:参数" + map) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - return resultJson; - } - - - @Override - public Map queryDevice(String jsonObject) throws Exception { - try { - MDC.put(log_file_type, log_type); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("WMS查询设备状态") - .content("WMS查询设备状态-----输入参数:" + jsonObject) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - JSONArray backja = new JSONArray(); - JSONArray datas = JSONArray.parseArray(jsonObject); - - - - - //标准版输送线 - BeltConveyorDeviceDriver beltConveyorDeviceDriver; - - - if (datas.size() == 0) { - throw new BadRequestException("缺少输入参数!"); - } - for (int i = 0; i < datas.size(); i++) { - JSONObject jo = new JSONObject(); - JSONObject data = datas.getJSONObject(i); - String parent_device_code = data.getString("device_code"); - String device_code = ""; - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(StringUtils.isNotBlank(parent_device_code), StorageCell::getParent_storage_code, parent_device_code); - StorageCell storageCell = storageCellMapper.selectOne(wrapper); - final JSONObject device_json = (JSONObject) JSON.toJSON(storageCell); - if (!ObjectUtil.isEmpty(device_json)) { - device_code = device_json.get("parent_storage_code") == null ? parent_device_code : (String) device_json.get("storage_code"); - } else { - device_code = parent_device_code; - } - Device device = deviceAppService.findDeviceByCode(device_code); - if (ObjectUtil.isEmpty(device)) { - throw new Exception("未找到对应设备:" + parent_device_code); - } - if (device.getDeviceDriver() instanceof BeltConveyorDeviceDriver) { - beltConveyorDeviceDriver = (BeltConveyorDeviceDriver) device.getDeviceDriver(); - jo.put("move", beltConveyorDeviceDriver.getMove()); - jo.put("mode", beltConveyorDeviceDriver.getMode()); - jo.put("device_code", parent_device_code); - } else { - jo.put("device_code", parent_device_code); - } - backja.add(jo); - } - JSONObject resultJson = new JSONObject(); - resultJson.put("status", HttpStatus.OK.value()); - resultJson.put("message", "操作成功"); - resultJson.put("data", backja); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("WMS查询设备状态") - .content("WMS查询设备状态-----返回参数:" + resultJson) - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - return resultJson; - } finally { - MDC.remove(log_file_type); + @OthersToInterfaceLog("WMS->ACS") + public JSONObject pause(JSONObject reqParam) { + String task_code = reqParam.getString("task_code"); + if (StrUtil.isEmpty(task_code)) { + throw new BadRequestException("任务号不能为空!"); } + String type = reqParam.getString("task_type"); + if (StrUtil.isEmpty(type)) { + throw new BadRequestException("确认取放货类型不能为空!"); + } + String point_code = reqParam.getString("point_code"); + if (StrUtil.isEmpty(point_code)) { + throw new BadRequestException("确认取放货点位不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(point_code); + if (device == null) { + throw new BadRequestException("未找到对应的设备信息, 设备编号:" + point_code); + } + TaskDto taskDto = taskService.findByCodeFromCache(task_code); + if (taskDto == null || !StrUtil.equals(taskDto.getTask_type(), TaskTypeEnum.AGV_TASK.getCode())) { + throw new BadRequestException("任务不存在, 或者该任务类型不是AGV任务"); + } + InstructionDto inst = instructionService.findByTaskCode(task_code); + if (inst == null) { + throw new BadRequestException("未找到对应的指令信息, 任务号:" + task_code); + } + JSONObject resp = new JSONObject(); + //1 确认取货 + if (ConfirmEnum.GET_CONFIRM.getCode().equals(type)) { + Map nextPositionCode = null; + if (StrUtil.equals(inst.getInstruction_type(), InstTypeEnum.AGV_THREE_TASK.getCode())) { + MapOf.of("positionCode", inst.getStart_parent_code(), "type", "00"); + } + //调用AGV继续执行任务接口,如果是两点任务不需要下一站点信息,如果是三点任务,需要下一站点信息 + ContinueTaskReq req = ContinueTaskReq.builder() + .taskCode(task_code) + .nextPositionCode(nextPositionCode) + .build(); + UnifiedResponse unifiedResponse = acsToHkService.continueTask(req); + if (!unifiedResponse.isSuccess()) { + throw new BadRequestException("确认取货失败," + unifiedResponse.getMessage()); + } + } + //2 确认放货 + else if (ConfirmEnum.PUT_CONFIRM.getCode().equals(type)) { + //调用AGV继续执行任务接口,需要下一站点信息 + ContinueTaskReq req = ContinueTaskReq.builder() + .taskCode(task_code) + .nextPositionCode(MapOf.of("positionCode", inst.getNext_parent_code(), "type", "00")) + .build(); + UnifiedResponse unifiedResponse = acsToHkService.continueTask(req); + if (!unifiedResponse.isSuccess()) { + throw new BadRequestException("确认放货失败," + unifiedResponse.getMessage()); + } + } + resp.put("status", "200"); + resp.put("message", "success"); + return resp; } @Override - public Map queryDeviceDBValue(String whereJson) { - return null; + @OthersToInterfaceLog("WMS->ACS") + public JSONObject getWeight(JSONObject reqParam) { + String device_code = reqParam.getString("device_code"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备编号不能为空!"); + } + JSONObject resp = new JSONObject(); + JSONObject resultData = new JSONObject(); + Device device = deviceAppService.findDeviceByCode(device_code); + if (device != null && device.getDeviceDriver() instanceof StandardWeightSiteDeviceDriver) { + StandardWeightSiteDeviceDriver standardWeightSiteDeviceDriver = (StandardWeightSiteDeviceDriver) device.getDeviceDriver(); + resultData.put("weigh_qty", standardWeightSiteDeviceDriver.getWeight()); + } + resp.put("status", "200"); + resp.put("message", "success"); + resp.put("resultData", resultData); + return resp; } - @Override - public Map querydevice(String whereJson) { - return null; - } - - @Override - public Map putPlusPullAction(String whereJson) { - return null; - } - - @Override - public JSONObject notifyAcs(JSONObject param) { - return null; - } - - } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/domain/InstructionMybatis.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/domain/InstructionMybatis.java index a438867..aa098ee 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/domain/InstructionMybatis.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/domain/InstructionMybatis.java @@ -17,7 +17,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import javax.validation.constraints.*; -import java.math.BigDecimal; import java.io.Serializable; /** @@ -32,219 +31,172 @@ import java.io.Serializable; @EqualsAndHashCode(callSuper = false) @TableName("acs_instruction") public class InstructionMybatis extends CommonModel implements Serializable { + private static final long serialVersionUID = 1L; + /** + * 主键ID + */ @TableId(type = IdType.ASSIGN_ID) private String instruction_id; - - - private String task_id; - - + /** + * 指令号 + */ @NotBlank private String instruction_code; - - - private String link_num; - - - private String execute_device_code; - - - private String execute_status; - - - private String execute_status_description; - - - private String follow_device_code; - - - @NotBlank - private String compound_inst; - - - private String compound_inst_data; - - - private String material; - - - @NotNull - private BigDecimal quantity; - - - private String instruction_type; - - + /** + * 指令状态 + */ private String instruction_status; - - - private String create_type; - - - private String finish_type; - - - private String priority; - - - private String execute_code; - - - private String execute_message; - - - private String start_point_code; - - - private String start_device_code; - - - private String start_point_code2; - - - private String start_device_code2; - - - private String next_point_code; - - - private String next_device_code; - - - private String next_point_code2; - - - private String next_device_code2; - - - private String put_point_code; - - - private String put_device_code; - - + /** + * 指令类型 + */ + private String instruction_type; + /** + * 任务ID + */ + private String task_id; + /** + * 任务号 + */ private String task_code; - - + /** + * 执行设备 + */ + private String execute_device_code; + /** + * 执行状态 + */ + private String execute_status; + /** + * 执行状态描述 + */ + private String execute_status_description; + /** + * 优先级 + */ + private String priority; + /** + * 起始点位编码 + */ + private String start_point_code; + /** + * 起始设备编码 + */ + private String start_device_code; + /** + * 外部系统起始点位编码 + */ + private String start_parent_code; + /** + * 目标点位编码 + */ + private String next_point_code; + /** + * 目标设备编码 + */ + private String next_device_code; + /** + * 外部系统目标点位编码 + */ + private String next_parent_code; + /** + * 载具号 + */ private String vehicle_code; - - private String vehicle_code2; - - + /** + * 载具类型 + */ private String vehicle_type; - - + /** + * 起始排 + */ private String from_x; - - + /** + * 起始列 + */ private String from_y; - - + /** + * 起始层 + */ private String from_z; - - - private String from_x2; - - - private String from_y2; - - - private String from_z2; - - - private String put_x; - - - private String put_y; - - - private String put_z; - - + /** + * 目标排 + */ private String to_x; - - + /** + * 目标列 + */ private String to_y; - - + /** + * 目标层 + */ private String to_z; - - - private String to_x2; - - - private String to_y2; - - - private String to_z2; - - - private String last_instruction_id; - - - @NotBlank - private String can_modify; - - + /** + * AGV系统类型 + */ + private String agv_system_type; + /** + * 车号 + */ + private String carno; + /** + * 备注 + */ private String remark; - - - @NotBlank - private String is_active; - - - @NotBlank - private String is_delete; - - + /** + * AGV任务号 + */ + private String agv_jobno; + /** + * 关联编号 + */ + private String link_num; + /** + * 下发状态 + */ + private String send_status; + /** + * 重量 + */ + private String weight; + /** + * 是否取货暂停 + */ + private String is_get_pause; + /** + * 是否放货暂停 + */ + private String is_put_pause; + /** + * 任务完成是否等待 + */ + private String is_wait; + /** + * 创建人 + */ @NotBlank @TableField(fill = FieldFill.INSERT) private String create_by; - - + /** + * 创建时间 + */ @NotBlank @TableField(fill = FieldFill.INSERT) private String create_time; - - + /** + * 修改人 + */ @TableField(fill = FieldFill.INSERT_UPDATE) private String update_by; - - + /** + * 修改时间 + */ @TableField(fill = FieldFill.INSERT_UPDATE) private String update_time; - private String carno; - - - private String agv_jobno; - - - private String send_status; - - - private String weight; - - - private String route_plan_code; - - - private String emptypallet_num; - - - private String agv_inst_type; - - - private String agv_system_type; - - - - private Integer agv_action_type; - public void copyFrom(Instruction source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/enums/InstTypeEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/enums/InstTypeEnum.java new file mode 100644 index 0000000..9cd1375 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/enums/InstTypeEnum.java @@ -0,0 +1,74 @@ +package org.nl.acs.instruction.enums; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author 20220102CG\noblelift + */ +@Getter +@AllArgsConstructor +public enum InstTypeEnum { + + CTU_IN_TASK("1", "1", "CTU入库任务"), + CTU_OUT_TASK("2", "2", "CTU出库任务"), + CTU_MOVE_TASK("3", "3", "CTU移库任务"), + AGV_TWO_TASK("4", "4", "AGV两点任务"), + AGV_THREE_TASK("5", "5", "AGV三点任务"), + OTHER_TASK("6", "6", "其他任务类型"); + + + /** + * 索引 + */ + private String index; + /** + * 编码 + */ + private String code; + /** + * 名字 + */ + private String name; + /** + * 描述 + */ + private String desc; + + /** + * 构造方法 + * + * @param index + * @param code + * @param name + */ + InstTypeEnum(String index, String code, String name) { + this.index = index; + this.code = code; + this.name = name; + + } + + public static JSONArray getList() { + JSONArray arr = new JSONArray(); + JSONObject json = new JSONObject(); + for (InstTypeEnum em : InstTypeEnum.values()) { + json.put("code", em.getCode()); + json.put("name", em.getName()); + arr.add(json); + } + return arr; + } + + public static String getName(String code) { + for (InstTypeEnum c : InstTypeEnum.values()) { + if (c.code == code) { + return c.name; + } + } + return null; + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java index 5a7a516..beb681e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java @@ -131,9 +131,4 @@ public class InstructionController { return new ResponseEntity<>(HttpStatus.OK); } - @GetMapping("/downloadInstLogging") - @Log("导出指令记录") - public void downloadInstLogging(HttpServletResponse response,@RequestParam Map whereJson) throws IOException { - instructionService.downloadInstLogging(instructionService.getInstList(whereJson), response); - } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java index 75a9c70..0ced9d5 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -7,7 +7,6 @@ import org.nl.acs.instruction.service.dto.InstructionQueryParam; import org.nl.acs.common.base.PageInfo; import org.nl.acs.common.base.CommonService; import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.task.service.dto.TaskDto; import org.springframework.data.domain.Pageable; import javax.servlet.http.HttpServletResponse; @@ -22,7 +21,6 @@ import java.util.Set; */ public interface InstructionService extends CommonService { - static final String CACHE_KEY = "instruction"; /** * 查询数据分页 @@ -57,38 +55,6 @@ public interface InstructionService extends CommonService { */ InstructionDto findById(String id); - /** - * 根据ID更新 - * - * @param resources - * @return - */ - int updateById(InstructionDto resources); - - /** - * 根据ID删除 - * - * @param id / - * @return / - */ - int removeById(String id); - - /** - * 批量删除 - * - * @param ids / - * @return / - */ - int removeByIds(Set ids); - - /** - * 导出数据 - * @param all 待导出的数据 - * @param response / - * @throws IOException / - */ - // void download(List all, HttpServletResponse response) throws IOException; - /** * 查询数据分页 * @@ -136,14 +102,6 @@ public interface InstructionService extends CommonService { */ void reload(); - /** - * 根据ID查询 - * - * @param instruction_id ID - * @return Instruction - */ -// Instruction findById(String instruction_id); - /** * 根据编码查询 * @@ -152,21 +110,8 @@ public interface InstructionService extends CommonService { */ Instruction findByCode(String code); - /** - * 根据任务code查询 - * - * @param code code - * @return Instruction - */ - Instruction findByTaskcode(String code); - /** - * 根据任务code查询 - * - * @param code code - * @return Instruction - */ - Instruction findByTaskcodeAndStatus(String code); + Instruction findByIdFromCache(String id); /** * 根据任务id查询 @@ -185,9 +130,6 @@ public interface InstructionService extends CommonService { */ void create(Instruction dto) throws Exception; - - - /** * 创建2 * @@ -196,14 +138,6 @@ public interface InstructionService extends CommonService { */ void create2(Instruction dto) throws Exception; - /** - * 再次创建 - * - * @param dto - * @throws Exception - */ - void createAgain(Instruction dto) throws Exception; - /** * 编辑 * @@ -242,7 +176,7 @@ public interface InstructionService extends CommonService { * @param dto * @throws Exception */ - void finish(Instruction dto) throws Exception; + void finish(Instruction dto); /** @@ -254,14 +188,6 @@ public interface InstructionService extends CommonService { void finishAndCreateNextInst(Instruction dto) throws Exception; - /** - * 完成并创建指令 - * - * @param - */ - void finishAndCreateHXInst(Instruction dto) throws Exception; - - /** * 取消指令 * @@ -294,91 +220,6 @@ public interface InstructionService extends CommonService { */ Instruction findByCodeFromCache(String code); - /** - * 根据编码查询 - * - * @param code - * @return - */ - List findByLinkNum(String code); - - /** - * 根据关联编号查询下发任务 - * - * @param code code - * @return Instruction - */ - Instruction findByLinkNumSend(String code); - - /** - * 根据关联编号查询非下发任务 - * - * @param code code - * @return Instruction - */ - Instruction findByLinkNumNoSend(String code); - - /** - * 根据条码缓存查询 - * - * @param barcode barcode - * @return Instruction - */ - Instruction findByBarcodeFromCache(String barcode); - - /** - * 根据设备缓存查询 - * - * @param devicecode code - * @return Instruction - */ - Instruction findByDeviceCodeFromCache(String devicecode); - - /** - * 查找起点是否有就绪或者执行中的指令 - */ - - Instruction findByNextCodeAndReadyAndRun(String device_code); - - /** - * 根据起点设备编号查询当前是否有就绪指令 - * - * @param device_code - * @return - */ - Instruction findByStartCodeAndReady(String device_code); - - /** - * 根据起点设备编号查询当前是否有运行的指令 - * - * @param device_code - * @return - */ - Instruction findByDeviceCodeRunFromCache(String device_code); - - /** - * 根据终点设备编号查询当前是否有就绪指令 - * - * @param device_code - * @return - */ - Instruction findByEndCodeAndReady(String device_code); - - - /** - * 根据终点查询指令 - * @param devicecode - * @return - */ - Instruction findByNextDeviceCodeFromCache(String devicecode); - - /** - * 根据设备id查询 - * - * @param id - * @return Instruction - */ - Instruction findByIdFromCache(String id); /** * 格式化 @@ -395,37 +236,6 @@ public interface InstructionService extends CommonService { */ List findAllInstFromCache(); - /** - * 查询相同终点指令的数量 - * - * @param code - * @return - */ - Integer querySameDestinationInst(String code); - - /** - * 查询相同指令类型的数量 - * - * @param inst_type - * @return - */ - Integer querySameInstType(String inst_type); - - /** - * 查询相同起点指令的数量 - * - * @param code - * @return - */ - Integer querySameOriginInst(String code); - - /** - * 查询相同起点、终点指令的数量 - * - * @param code - * @return - */ - //Integer querySameOriginInst(String code); /** * 根据编码删除 @@ -435,14 +245,6 @@ public interface InstructionService extends CommonService { */ boolean removeByCodeFromCache(String code); - /** - * 创建关联指令 - * - * @param type - * @param inst - * @return - */ - boolean createLkInst(String type, Instruction inst); /** * 初始化指令 @@ -451,23 +253,6 @@ public interface InstructionService extends CommonService { */ void init(String id); - /** - * 根据指令某个参数查找指令集合 - * - * @param instruction1 - * @param flay - * @return - */ - List findByDeviceCodes(Instruction instruction1, Boolean flay); - - - /** - * 根据条件查询指令 - * - * @param whereJson - * @return - */ - List getInstList(Map whereJson); /** * 导出指令记录 @@ -479,29 +264,14 @@ public interface InstructionService extends CommonService { void downloadInstLogging(List instList, HttpServletResponse response) throws IOException; - /** - * 查询是否有相同终点的指令,但是是入库的指令,即指令起点设备类型不是货架 - * - * @param nextDeviceCode - * @return - */ - Boolean querySameNextDeviceCodeInstByIn(String nextDeviceCode); + InstructionDto findByTaskCode(String task_code); /** - * 查询是否有相同终点的指令,但是是出库的指令,即指令起点设备类型是货架 + * 根据指令类型和是否等待查询 * - * @param nextDeviceCode + * @param inst_type + * @param is_wait * @return */ - Boolean querySameNextDeviceCodeInstByOut(String nextDeviceCode); - - List findByCodeAndExcute(String nextDeviceCode); - - - List findByNextCode(String nextDeviceCode); - - List findReadyIns(); - List findReadyIns2(); - - Instruction findByStarCodeAndExcute(String deviceCode); + InstructionDto findByInstTypeAndIsWait(String inst_type, String is_wait); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java index 21094ce..d316472 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java @@ -1,7 +1,6 @@ package org.nl.acs.instruction.service.dto; import lombok.Data; -import org.nl.acs.common.base.CommonFinalParam; import java.io.Serializable; @@ -14,370 +13,158 @@ import java.io.Serializable; public class InstructionDto implements Serializable { /** - * 指令标识 + * 主键ID */ private String instruction_id; - /** - * 任务标识 - */ - private String task_id; - - /** - * 指令编码 + * 指令号 */ private String instruction_code; - /** - * MES任务关联编号 + * 指令状态 */ - private String link_num; - + private String instruction_status; /** - * 是否下发 + * 指令类型 */ - private String is_send = "0"; - + private String instruction_type; /** - * 指令由哪台设备做 + * 任务ID + */ + private String task_id; + /** + * 任务号 + */ + private String task_code; + /** + * 执行设备 */ private String execute_device_code; - /** * 执行状态 */ private String execute_status; - /** * 执行状态描述 */ private String execute_status_description; - - /** - * 下一条指令由哪台设备做 - */ - private String follow_device_code; - - /** - * 指令类型 - */ - private String instruction_type = CommonFinalParam.ONE; - - /** - * agv取货高度 - */ - private String start_height = "0"; - - - /** - * agv放货高度 - */ - private String next_height = "0"; - - /** - * 指令状态 - */ - public String instruction_status; - - /** - * 创建类型 - */ - private String create_type; - - /** - * 完成类型 - */ - private String finish_type; - /** * 优先级 */ - private String priority = "0"; - - /** - * 执行编码 - */ - private String execute_code; - - /** - * 执行信息 - */ - private String execute_message; - + private String priority; /** * 起始点位编码 */ private String start_point_code; - /** * 起始设备编码 */ private String start_device_code; - + /** + * 外部系统起始点位编码 + */ + private String start_parent_code; /** * 目标点位编码 */ private String next_point_code; - /** * 目标设备编码 */ private String next_device_code; - /** - * 起始点位编码2 + * 外部系统目标点位编码 */ - private String start_point_code2; - + private String next_parent_code; /** - * 起始设备编码2 + * 载具号 */ - private String start_device_code2; - + private String vehicle_code; /** - * 目标点位编码2 + * 载具类型 */ - private String next_point_code2; - + private String vehicle_type; /** - * 目标设备编码2 - */ - private String next_device_code2; - - /** - * 放货点位编码 - */ - private String put_point_code; - - /** - * 放货设备编码 - */ - private String put_device_code; - - /** - * 排 + * 起始排 */ private String from_x; - /** - * 列 + * 起始列 */ private String from_y; - /** - * 层 + * 起始层 */ private String from_z; - /** - * 排2 - */ - private String from_x2; - - /** - * 列2 - */ - private String from_y2; - - /** - * 层2 - */ - private String from_z2; - - /** - * 排 - */ - private String put_x; - - /** - * 列 - */ - private String put_y; - - /** - * 层 - */ - private String put_z; - - - /** - * 排 + * 目标排 */ private String to_x; - /** - * 列 + * 目标列 */ private String to_y; - /** - * 层 + * 目标层 */ private String to_z; - /** - * 排2 + * AGV系统类型 */ - private String to_x2; - + private String agv_system_type; /** - * 列2 + * 车号 */ - private String to_y2; - - /** - * 层2 - */ - private String to_z2; - - - /** - * 最后一条指令标识 - */ - private String last_instruction_id; - - /** - * 是否允许修改 - */ - private String can_modify; - + private String carno; /** * 备注 */ private String remark; - /** - * 是否启用 + * AGV任务号 */ - private String is_active; - + private String agv_jobno; /** - * 是否删除 + * 关联编号 */ - private String is_delete; - + private String link_num; /** - * 创建者 + * 下发状态 + */ + private String send_status; + /** + * 重量 + */ + private String weight; + /** + * 是否取货暂停 + */ + private String is_get_pause; + /** + * 是否放货暂停 + */ + private String is_put_pause; + /** + * 任务完成是否等待 + */ + private String is_wait; + /** + * 创建人 */ private String create_by; - /** * 创建时间 */ private String create_time; - /** - * 修改者 + * 修改人 */ private String update_by; - /** * 修改时间 */ private String update_time; - /** - * 任务号 - */ - private String task_code; - - /** - * 载具号 - */ - private String vehicle_code; - - /** - * 木箱号 - */ - private String vehicle_code2; - - /** - * 载具类型 - */ - private String vehicle_type; - - /** - * agv车号 - */ - private String carno; - - /** - * 物料类型 - */ - private String material; - - /** - * 物料数量 - */ - private String quantity; - - /** - * 物料批次 - */ - private String batch; - - /** - * 物料重量 - */ - private String weight; - - private String route_plan_code = "normal"; - - /** - * 是否复合任务 - */ - private String compound_inst; - - /** - * 复合任务数据 - */ - private String compound_inst_data; - - /** - * agv任务号(NDC系统使用) - */ - private String agv_jobno; - /** - * agv指令类型(NDC系统使用) - */ - private String agv_inst_type; - - /** - * 下发agv状态 0未下发 1成功 2失败 - */ - private String send_status; - - /** - * 起点父级编码 - */ - private String start_parent_code; - - /** - * 终点父级编码 - */ - private String next_parent_code; - - /** - * AGV系统类型 - */ - private String agv_system_type; - - /** - * 单工位堆垛机101-199 双工位堆垛机201-255 - */ - private String to_device_code; - - - /** - * agv二次分配类型(1、普通任务 2、取货二次分配 3、防货二次分配 4、取放货二次分配) - */ - private Integer agv_action_type; - - - /** - * - */ -// private String to_device_code; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index e3a5d79..37b9bf7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -2,8 +2,6 @@ package org.nl.acs.instruction.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; @@ -20,9 +18,6 @@ import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapp import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.MagicAgvService; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.agv.server.XianGongAgvService; import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.common.base.CommonFinalParam; import org.nl.acs.device.domain.Device; @@ -30,9 +25,12 @@ import org.nl.acs.device.enums.DeviceType; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.device_driver.DeviceDriverDefination; -import org.nl.acs.ext.wms.liKuData.*; -import org.nl.acs.ext.wms.service.AcsToLiKuService; +import org.nl.acs.ext.hk.UnifiedResponse; +import org.nl.acs.ext.hk.service.AcsToHkService; +import org.nl.acs.ext.hk.service.data.CancelTaskReq; +import org.nl.acs.ext.hk.service.data.GenAgvSchedulingTaskReq; import org.nl.acs.instruction.domain.InstructionMybatis; +import org.nl.acs.instruction.enums.InstTypeEnum; import org.nl.acs.instruction.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.dto.InstructionDto; import org.nl.acs.instruction.service.dto.InstructionQueryParam; @@ -44,7 +42,8 @@ import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; import org.nl.acs.route.service.impl.RouteLineServiceImpl; -import org.nl.acs.task.TaskInstructionLock; +import org.nl.acs.storage_cell.domain.StorageCell; +import org.nl.acs.storage_cell.service.StorageCellService; import org.nl.acs.task.domain.Task; import org.nl.acs.task.enums.AgvSystemTypeEnum; import org.nl.acs.task.enums.TaskStatusEnum; @@ -64,6 +63,7 @@ import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.mapper.InstructionMapper; import org.nl.common.utils.SecurityUtils; +import org.nl.config.MapOf; import org.nl.config.language.LangProcess; import org.nl.config.lucene.service.LuceneExecuteLogService; import org.nl.config.lucene.service.dto.LuceneLogDto; @@ -71,21 +71,15 @@ import org.nl.system.service.param.ISysParamService; import org.nl.common.utils.CodeUtil; import org.nl.config.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.data.domain.Pageable; import javax.servlet.http.HttpServletResponse; -import java.io.DataInputStream; -import java.io.DataOutputStream; import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.Socket; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -104,23 +98,16 @@ public class InstructionServiceImpl extends CommonServiceImpl instructions = new CopyOnWriteArrayList(); @@ -148,41 +135,6 @@ public class InstructionServiceImpl extends CommonServiceImpl ids) { - // delCaches(ids); - return instructionMapper.deleteBatchIds(ids); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int removeById(String id) { - Set set = new HashSet<>(1); - set.add(id); - return this.removeByIds(set); - } - - /* - private void delCaches(String id) { - redisUtils.delByKey(CACHE_KEY + "::id:", id); - } - - private void delCaches(Set ids) { - for (String id: ids) { - delCaches(id); - } - }*/ - /** * 加载指令数据 */ @@ -195,9 +147,7 @@ public class InstructionServiceImpl extends CommonServiceImpl list = new LambdaQueryChainWrapper(instructionMapper) .lt(InstructionMybatis::getInstruction_status, InstructionStatusEnum.FINISHED.getIndex()) - .eq(InstructionMybatis::getIs_delete, "0") .list(); -// List list = this.queryAll("instruction_status <2 and is_delete =0"); this.instructions = new CopyOnWriteArrayList<>(ConvertUtil.convertList(list, Instruction.class)); } @@ -213,10 +163,8 @@ public class InstructionServiceImpl extends CommonServiceImpl queryPage = PageUtil.toMybatisPage(page); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); -// wrapper.eq(InstructionMybatis::getIs_delete,0); wrapper.and(StringUtils.isNotBlank(code), instructionMybatis -> instructionMybatis.like(InstructionMybatis::getInstruction_code, code).or().like(InstructionMybatis::getTask_code, code)); wrapper.like(StringUtils.isNotBlank(vehicle_code), InstructionMybatis::getVehicle_code, vehicle_code); - wrapper.eq(StringUtils.isNotBlank(material_type), InstructionMybatis::getMaterial, material_type); wrapper.eq(StringUtils.isNotBlank(status), InstructionMybatis::getInstruction_status, status); wrapper.and(StringUtils.isNotBlank(point_code), instructionMybatis -> instructionMybatis.like(InstructionMybatis::getStart_point_code, point_code).or().like(InstructionMybatis::getNext_point_code, point_code)); wrapper.eq(StringUtils.isNotBlank(instruction_type), InstructionMybatis::getInstruction_type, instruction_type); @@ -248,19 +196,12 @@ public class InstructionServiceImpl extends CommonServiceImpl queryPage = PageUtil.toMybatisPage(page); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); -// wrapper.eq(InstructionMybatis::getIs_delete,"0"); if (!StrUtil.isEmpty(code)) { wrapper.and(instructionMybatis -> instructionMybatis.like(InstructionMybatis::getInstruction_code, code).or().like(InstructionMybatis::getTask_code, code)); } if (!StrUtil.isEmpty(vehicle_code)) { wrapper.like(InstructionMybatis::getVehicle_code, vehicle_code); } - if (!StrUtil.isEmpty(vehicle_code2)) { - wrapper.like(InstructionMybatis::getVehicle_code2, vehicle_code2); - } - if (!StrUtil.isEmpty(material_type)) { - wrapper.eq(InstructionMybatis::getMaterial, material_type); - } if (!StrUtil.isEmpty(status)) { wrapper.eq(InstructionMybatis::getInstruction_status, status); } @@ -334,24 +275,11 @@ public class InstructionServiceImpl extends CommonServiceImpl(instructionMapper) - .eq(InstructionMybatis::getTask_code, code) - .eq(InstructionMybatis::getInstruction_status, InstructionStatusEnum.BUSY.getIndex()) - .one(); - if (ObjectUtil.isEmpty(ins)) { - return null; - } - return ConvertUtil.convert(ins, Instruction.class); - } - - @Override - public Instruction findByTaskcodeAndStatus(String code) { + public Instruction findByIdFromCache(String id) { Iterator var3 = instructions.iterator(); while (var3.hasNext()) { Instruction instruction = (Instruction) var3.next(); - if (StrUtil.equals(instruction.getTask_code(), code) - && StrUtil.equals(instruction.getInstruction_status(), InstructionStatusEnum.READY.getIndex())) { + if (StrUtil.equals(instruction.getInstruction_id(), id)) { return instruction; } } @@ -368,13 +296,6 @@ public class InstructionServiceImpl extends CommonServiceImpl 0){ -// List collect = instructions.stream().filter(instruction -> instruction.getTask_id().equals(id) -// && Integer.parseInt(instruction.getInstruction_status()) < 2).collect(Collectors.toList()); -// if(collect.size() > 0){ -// return collect.get(0); -// } -// } return null; } @@ -392,19 +313,17 @@ public class InstructionServiceImpl extends CommonServiceImpl instructionMybatis = instructionMapper.selectList(Wrappers.lambdaQuery(InstructionMybatis.class) - .eq(InstructionMybatis::getTask_code, dto.getTask_code())); - if (CollUtil.isNotEmpty(instructionMybatis) && instructionMybatis.stream().anyMatch(inst -> inst.getStart_device_code() - .equals(start_device_code))) { - return; - } - } +// if (StrUtil.isNotEmpty(dto.getTask_code())) { +// List instructionMybatis = instructionMapper.selectList(Wrappers.lambdaQuery(InstructionMybatis.class) +// .eq(InstructionMybatis::getTask_code, dto.getTask_code())); +// if (CollUtil.isNotEmpty(instructionMybatis) && instructionMybatis.stream().anyMatch(inst -> inst.getStart_device_code() +// .equals(start_device_code))) { +// return; +// } +// } String currentUsername = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - if (StrUtil.isEmpty(dto.getRoute_plan_code())) { - dto.setRoute_plan_code(task.getRoute_plan_code()); - } + if (StrUtil.isEmpty(dto.getPriority())) { dto.setPriority(task.getPriority()); } @@ -414,90 +333,55 @@ public class InstructionServiceImpl extends CommonServiceImpl shortPathsList = - routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); - if (ObjectUtils.isEmpty(shortPathsList)) { - throw new Exception(dto.getStart_device_code() + "->" + dto.getNext_device_code() + "路由不通"); - } - if (StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { - throw new BadRequestException(dto.getStart_device_code() + "->" + dto.getNext_device_code() + "路由类型不是agv类型"); - } - if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "2")) { - NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); - ndcAgvService.sendAgvInstToNDC(task.getAgv_system_type(), dto); - } - //判断是否是仙工AGV - if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) { - - if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.XG_System_Type.getIndex())) { - String interactionJson = task.getInteraction_json(); - if (StrUtil.isEmpty(interactionJson)) { - throw new BadRequestException("agv叉车调整长宽参数为空"); - } - InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); - //仙工叉车 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToForklift(dto, interactionJsonDTO); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } else if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.One_NDC_System_Type.getIndex())) { - //一楼agv任务创建运单序列 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToXZ(dto); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); + if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.Hik_System_Type.getIndex())) { + List> positionCodePath = new ArrayList<>(); + GenAgvSchedulingTaskReq gasReq = null; + if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.CTU_TASK.getCode())) { + positionCodePath = Arrays.asList(MapOf.of("positionCode", dto.getStart_parent_code(), "type", "05"), MapOf.of("positionCode", dto.getNext_parent_code(), "type", "05")); + gasReq = GenAgvSchedulingTaskReq + .builder() + .taskTyp(dto.getInstruction_type()) + .ctnrTyp("1") + .ctnrCode(dto.getVehicle_code()) + .positionCodePath(positionCodePath) + .priority(dto.getPriority()) + .taskCode(dto.getInstruction_code()) + .build(); + } else if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.AGV_TASK.getCode())) { + if (StrUtil.equals(dto.getInstruction_type(), InstTypeEnum.AGV_TWO_TASK.getCode())) { + positionCodePath = Arrays.asList(MapOf.of("positionCode", dto.getStart_parent_code(), "type", "00"), MapOf.of("positionCode", dto.getNext_parent_code(), "type", "00")); + } else if (StrUtil.equals(dto.getInstruction_type(), InstTypeEnum.AGV_THREE_TASK.getCode())) { + positionCodePath = Arrays.asList(MapOf.of("positionCode", dto.getStart_parent_code(), "type", "00"), MapOf.of("positionCode", dto.getNext_parent_code(), "type", "00"), MapOf.of("positionCode", dto.getStart_parent_code(), "type", "00")); } + gasReq = GenAgvSchedulingTaskReq + .builder() + .taskTyp(dto.getInstruction_type()) + .positionCodePath(positionCodePath) + .priority(dto.getPriority()) + .taskCode(dto.getInstruction_code()) + .build(); + } + UnifiedResponse resp = acsToHkService.genAgvSchedulingTask(gasReq, String.class); + if (!resp.isSuccess()) { + dto.setRemark(resp.getMessage()); + dto.setSend_status("2"); + } else { + dto.setSend_status("1"); } } } catch (Exception e) { dto.setSend_status("2"); - log.error(e.getMessage()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("创建指令报错") - .content("任务号" + dto.getTask_code() + "报错原因:" + e.getMessage()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); throw e; } InstructionMybatis entity = ConvertUtil.convert(dto, InstructionMybatis.class); @@ -518,20 +402,9 @@ public class InstructionServiceImpl extends CommonServiceImpl instructionMybatis = instructionMapper.selectList(Wrappers.lambdaQuery(InstructionMybatis.class) -// .eq(InstructionMybatis::getTask_code, dto.getTask_code())); -// if (CollUtil.isNotEmpty(instructionMybatis) && instructionMybatis.stream().anyMatch(inst -> inst.getStart_device_code() -// .equals(start_device_code))) { -// return; -// } -// } String currentUsername = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - if (StrUtil.isEmpty(dto.getRoute_plan_code())) { - dto.setRoute_plan_code(task.getRoute_plan_code()); - } + if (StrUtil.isEmpty(dto.getPriority())) { dto.setPriority(task.getPriority()); } @@ -541,137 +414,38 @@ public class InstructionServiceImpl extends CommonServiceImpl shortPathsList = - routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); - RouteLineDto route = null; - for (int i = 0; i < shortPathsList.size(); i++) { - RouteLineDto routeLineDto = shortPathsList.get(i); - String route_device = routeLineDto.getDevice_code(); - String route_next_device = routeLineDto.getNext_device_code(); - if (route_device.equals(dto.getStart_device_code()) - && route_next_device.equals(dto.getNext_device_code())) { - route = routeLineDto; - break; + if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.Hik_System_Type.getIndex())) { + List> positionCodePath = new ArrayList<>(); + positionCodePath = Arrays.asList(MapOf.of("positionCode", dto.getStart_parent_code(), "type", "05"), MapOf.of("positionCode", dto.getNext_parent_code(), "type", "05")); + GenAgvSchedulingTaskReq gasReq = GenAgvSchedulingTaskReq + .builder() + .taskTyp(dto.getInstruction_type()) + .ctnrTyp("1") + .positionCodePath(positionCodePath) + .priority(dto.getPriority()) + .taskCode(dto.getInstruction_code()) + .build(); + UnifiedResponse resp = acsToHkService.genAgvSchedulingTask(gasReq, String.class); + if (!resp.isSuccess()) { + dto.setRemark(resp.getMessage()); + dto.setSend_status("2"); + } else { + dto.setSend_status("1"); } - } - if (ObjectUtil.isEmpty(route) && !(start_device_code.equals(next_device_code))) { - throw new BadRequestException(LangProcess.msg("error_isNull", "route")); - } - //判断是否是仙工AGV - if (shortPathsList.size() > 0 && StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { - Device deviceByCode = deviceAppService.findDeviceByCode(dto.getStart_device_code()); - if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.XG_System_Type.getIndex())) { - String interactionJson = task.getInteraction_json(); - if (StrUtil.isEmpty(interactionJson)) { - throw new BadRequestException("agv叉车调整长宽参数为空"); - } - InteractionJsonDTO interactionJsonDTO = JSON.parseObject(interactionJson, InteractionJsonDTO.class); - //仙工叉车 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToForklift(dto, interactionJsonDTO); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } else if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.One_NDC_System_Type.getIndex())) { - //一楼agv任务创建运单序列 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToXZ(dto); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } else if (dto.getAgv_system_type().equals(AgvSystemTypeEnum.Two_NDC_System_Type.getIndex())) { - NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); - log.warn("下发AGV指令数据," + "指令号:" + dto.getInstruction_code() + ",AGV系统类型:" + dto.getAgv_system_type()); - try { - ndcAgvService.sendAgvInstToNDC(task.getAgv_system_type(), dto); - dto.setSend_status("1"); - } catch (Exception e) { - dto.setSend_status("2"); - dto.setRemark(e.getMessage()); - e.printStackTrace(); - log.warn("下发AGV指令异常:" + e); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code(start_device_code) - .content("下发AGV指令异常") - .build(); - logDto1.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto1); - } - } } } catch (Exception e) { dto.setSend_status("2"); - log.error(e.getMessage()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("创建指令报错") - .content("任务号" + dto.getTask_code() + "报错原因:" + e.getMessage()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); throw e; } InstructionMybatis entity = ConvertUtil.convert(dto, InstructionMybatis.class); @@ -679,96 +453,6 @@ public class InstructionServiceImpl extends CommonServiceImpl shortPathsList = - routeLineService.getShortPathLines( - dto.getStart_device_code(), dto.getNext_device_code(), dto.getRoute_plan_code()); - if (ObjectUtils.isEmpty(shortPathsList)) { - throw new Exception(dto.getStart_device_code() + "->" + dto.getNext_device_code() + "路由不通"); - } - String type = shortPathsList.get(0).getType(); - if (!StrUtil.equals(type, "0")) { -// JSONObject instcheckjson = -// instwo -// .query( -// " instruction_status <3 and next_point_code= '" -// + dto.getNext_point_code() -// + "'" -// + " and start_point_code = '" -// + dto.getStart_point_code() -// + "'" -// + " and task_id = '" -// + dto.getTask_id() -// + "'") -// .uniqueResult(0); - InstructionMybatis ins = new LambdaQueryChainWrapper<>(instructionMapper) - .lt(InstructionMybatis::getInstruction_status, InstructionStatusEnum.CANCEL.getIndex()) - .eq(InstructionMybatis::getNext_point_code, dto.getNext_point_code()) - .eq(InstructionMybatis::getStart_point_code, dto.getStart_point_code()) - .eq(InstructionMybatis::getTask_id, dto.getTask_id()) - .one(); - - - if (ins != null) { - throw new Exception(dto.getTask_code() + ":该任务已存在待完成指令!"); - } - } - - if (!StrUtil.equals(dto.getCompound_inst(), "0") - && StrUtil.equals(task.getCompound_task(), CommonFinalParam.ONE)) { - dto.setCompound_inst(CommonFinalParam.ONE); - dto.setCompound_inst_data(task.getCompound_task_data()); - } - - dto.setCreate_by(currentUsername); - dto.setUpdate_by(currentUsername); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - - InstructionMybatis entity = ConvertUtil.convert(dto, InstructionMybatis.class); - instructionMapper.insert(entity); - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device startdevice = appService.findDeviceByCode(dto.getStart_device_code()); - Device nextdevice = appService.findDeviceByCode(dto.getNext_device_code()); - - - if (!ObjectUtils.isEmpty(nextdevice.getExtraValue().get("link_three_lamp"))) { - String lamd_device = nextdevice.getExtraValue().get("link_three_lamp").toString(); - Device lamddevice = appService.findDeviceByCode(lamd_device); - } - - // != 0 为agv任务 - // if(!StrUtil.equals(type,"0")){ - // if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), CommonFinalParam.ONE)) - // { - // agvService.sendAgvInstToMagic(dto); - // } else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), - // "2")) { - // agvService.sendAgvInstToNDC(dto); - // } else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), - // "3")) { - // agvService.addOrderSequences(dto); - // } - // } - instructions.add(dto); - } - @Override @Transactional(rollbackFor = Exception.class) public void update(Instruction dto) { @@ -800,14 +484,9 @@ public class InstructionServiceImpl extends CommonServiceImpl list = routeLineService.getShortPathLines( - dto.getNext_device_code(), acsTask.getNext_device_code(), acsTask.getRoute_plan_code()); + dto.getNext_device_code(), acsTask.getNext_device_code(), "normal"); if (ObjectUtils.isEmpty(list)) { throw new BadRequestException(LangProcess.msg("route_isNull")); } @@ -1070,14 +677,10 @@ public class InstructionServiceImpl extends CommonServiceImpl it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(code, inst.getLink_num()) && StrUtil.equals(inst.getIs_send(), CommonFinalParam.ONE)) { - return inst; - } - } - - return null; - } - - @Override - public List findByLinkNum(String code) { - List list = new ArrayList<>(); - Iterator it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(code, inst.getLink_num()) && StrUtil.equals(inst.getIs_send(), "0")) { - list.add(inst); - } - } - return list; - } - - @Override - public Instruction findByLinkNumNoSend(String code) { - Iterator it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(code, inst.getLink_num()) && StrUtil.equals(inst.getIs_send(), "0")) { - return inst; - } - } - - return null; - } - @Override public Instruction findByCodeFromCache(String code) { Iterator it = instructions.iterator(); @@ -1431,30 +870,6 @@ public class InstructionServiceImpl extends CommonServiceImpl it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(barcode, inst.getVehicle_code())) { - return inst; - } - } - return null; - } - - @Override - public Instruction findByIdFromCache(String id) { - Iterator it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(id, inst.getInstruction_id())) { - return inst; - } - } - return null; - } - @Override public Instruction foramte(Instruction inst) { CommonFinalParam commonFinalParam = new CommonFinalParam(); @@ -1532,232 +947,20 @@ public class InstructionServiceImpl extends CommonServiceImpl instructionList = instructions; - ListUtil.sort( - instructionList, - new Comparator() { - @Override - public int compare(Instruction o1, Instruction o2) { - return o1.getCreate_time().compareTo(o2.getCreate_time()); - } - }); - Iterator it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(devicecode, inst.getStart_device_code()) - && inst.getInstruction_status().equals(InstructionStatusEnum.READY.getIndex())) { - return inst; - } - } - - return null; - } - - - @Override - public Instruction findByDeviceCodeRunFromCache(String devicecode) { - List instructionList = instructions; - ListUtil.sort( - instructionList, - new Comparator() { - @Override - public int compare(Instruction o1, Instruction o2) { - return o1.getCreate_time().compareTo(o2.getCreate_time()); - } - }); - Iterator it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(devicecode, inst.getStart_device_code()) - && inst.getInstruction_status().equals(InstructionStatusEnum.BUSY.getIndex())) { - return inst; - } - } - - return null; - } - - - @Override - public Instruction findByNextDeviceCodeFromCache(String devicecode) { - List instructionList = instructions; - ListUtil.sort( - instructionList, - new Comparator() { - @Override - public int compare(Instruction o1, Instruction o2) { - return o1.getCreate_time().compareTo(o2.getCreate_time()); - } - }); - Iterator it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(devicecode, inst.getNext_device_code()) && Integer.parseInt(inst.getInstruction_status()) <= Integer.parseInt(InstructionStatusEnum.BUSY.getIndex()) && !inst.getInstruction_type().equals(TaskTypeEnum.Mxddhj_Task.getIndex())) { - return inst; - } - } - - return null; - } - @Override public List findAllInstFromCache() { return instructions; } - @Override - public Integer querySameDestinationInst(String deviceCode) { - return (int) Optional - .ofNullable(this.instructions) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(instruction -> deviceCode.equals(instruction.getNext_point_code().indexOf(".") != -1 ? instruction.getNext_point_code().substring(0, instruction.getNext_point_code().indexOf(".")) : instruction.getNext_point_code())) - .count(); - } - - @Override - public Integer querySameInstType(String inst_type) { - int num = 0; - Iterator it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - if (StrUtil.equals(inst.getInstruction_type(), inst_type)) { - num = num + 1; - } - } - return num; - } - - @Override - public Integer querySameOriginInst(String devicecode) { - int num = 0; - Iterator it = instructions.iterator(); - while (it.hasNext()) { - Instruction inst = it.next(); - // 处理空盘位站点 - String start_code = inst.getStart_point_code(); - if (start_code.indexOf(".") != -1) { - start_code = start_code.substring(0, start_code.indexOf(".")); - } - if (StrUtil.equals(devicecode, start_code)) { - num = num + 1; - } - } - return num; - } - @Override public boolean removeByCodeFromCache(String code) { CopyOnWriteArrayList instructions = (CopyOnWriteArrayList) this.instructions; instructions.removeIf((inst) -> { return inst.getInstruction_code().equals(code); }); -// while (iterator.hasNext()) { -// Instruction instruction = iterator.next(); -// if (instruction.getInstruction_code().equals(code)) { -// iterator.remove(); -// return true; -// } -// } return true; } - @Override - public boolean createLkInst(String type, Instruction dto) { - Class var3 = TaskInstructionLock.class; - synchronized (TaskInstructionLock.class) { - // 入库 - AcsToLiKuService acsToLiKuService = SpringContextHolder.getBean(AcsToLiKuService.class); - Resp resp = null; - if (StrUtil.equals(type, CommonFinalParam.ONE)) { - InStoreRequest request = new InStoreRequest(); - request.setFloorNo(Integer.parseInt(dto.getTo_z())); - request.setType(1); - request.setPalletCode(dto.getVehicle_code()); - request.setOrderId(dto.getInstruction_code()); - request.setSrcLocation(dto.getStart_point_code()); - request.setDestLocation(dto.getNext_point_code()); - resp = acsToLiKuService.inStore(request); - // 空托入库 - } else if (StrUtil.equals(type, "2")) { - InStoreRequest request = new InStoreRequest(); - request.setFloorNo(Integer.parseInt(dto.getTo_z())); - request.setType(2); - request.setPalletCode(dto.getVehicle_code()); - request.setOrderId(dto.getInstruction_code()); - request.setSrcLocation(dto.getStart_point_code()); - request.setDestLocation(dto.getNext_point_code()); - resp = acsToLiKuService.inStore(request); - // 出库 - } else if (StrUtil.equals(type, "3")) { - OutStoreRequest outStore = new OutStoreRequest(); - BaseStoreRequest baseReq = new BaseStoreRequest(); - List list = new ArrayList(); - baseReq.setOrderId(dto.getInstruction_code()); - baseReq.setSrcLocation(dto.getStart_point_code()); - baseReq.setDestLocation(dto.getNext_point_code()); - baseReq.setFloorNo(Integer.parseInt(dto.getFrom_z())); - baseReq.setPalletCode(dto.getVehicle_code()); - list.add(baseReq); - outStore.setOrderInfos(list); - outStore.setGroupId(dto.getInstruction_code()); - resp = acsToLiKuService.outStore(outStore); - // 空托出库 - } else if (StrUtil.equals(type, "4")) { - EmptyVehicleOutStoreRequest emptyVehicleOutStoreRequest = new EmptyVehicleOutStoreRequest(); - emptyVehicleOutStoreRequest.setOrderId(dto.getInstruction_code()); - emptyVehicleOutStoreRequest.setFloorNo(Integer.parseInt(dto.getFrom_z())); - emptyVehicleOutStoreRequest.setSrcLocation(dto.getStart_point_code()); - emptyVehicleOutStoreRequest.setDestLocation(dto.getNext_point_code()); - emptyVehicleOutStoreRequest.setPalletCode(dto.getVehicle_code()); - resp = acsToLiKuService.emptyVehicleOutStore(emptyVehicleOutStoreRequest); - // 转库 - } else if (StrUtil.equals(type, "5")) { - MoveStoreRequest moveStoreRequest = new MoveStoreRequest(); - BaseStoreRequest baseReq = new BaseStoreRequest(); - List list = new ArrayList(); - baseReq.setFloorNo(Integer.parseInt(dto.getFrom_z())); - baseReq.setPalletCode(dto.getVehicle_code()); - baseReq.setOrderId(dto.getInstruction_code()); - baseReq.setSrcLocation(dto.getStart_point_code()); - baseReq.setDestLocation(dto.getNext_point_code()); - list.add(baseReq); - moveStoreRequest.setGroupId(dto.getInstruction_code()); - moveStoreRequest.setOrderInfos(list); - resp = acsToLiKuService.moveStore(moveStoreRequest); - } - - if (ObjectUtil.isNotEmpty(resp)) { - if (StrUtil.equals(resp.getResult(), "true")) { - dto.setSend_status(CommonFinalParam.ONE); - } else { - dto.setSend_status("2"); - dto.setRemark(resp.getData().toString()); - return false; - } - } else { - dto.setSend_status("2"); - dto.setRemark("ERROR"); - return false; - } - return true; - } - } - - /* - * 判断是否为整数 - * @param str 传入的字符串 - * @return 是整数返回true,否则返回false - */ - - private static Pattern NUMBER_PATTERN = Pattern.compile("^[-\\+]?[\\d]*$"); - - public static boolean isInteger(String str) { - return NUMBER_PATTERN.matcher(str).matches(); - } - @Override public void init(String id) { InstructionDto inst = this.findById(id); @@ -1769,121 +972,6 @@ public class InstructionServiceImpl extends CommonServiceImpl optionalInstruction = instructions.stream() - .filter(instruction -> StrUtil.equals(instruction.getStart_device_code(), device_code) - && StrUtil.equals(instruction.getInstruction_status(), InstructionStatusEnum.READY.getIndex()) && !instruction.getInstruction_type().equals(TaskTypeEnum.Mxddhj_Task.getIndex())) - .findFirst(); - return optionalInstruction.orElse(null); - } - - @Override - public Instruction findByNextCodeAndReadyAndRun(String device_code) { - Optional optionalInstruction = instructions.stream() - .filter(instruction -> StrUtil.equals(instruction.getNext_device_code(), device_code) - && (StrUtil.equals(instruction.getInstruction_status(), InstructionStatusEnum.READY.getIndex()) || StrUtil.equals(instruction.getInstruction_status(), InstructionStatusEnum.BUSY.getIndex()))) - .findFirst(); - return optionalInstruction.orElse(null); - } - - @Override - public Instruction findByEndCodeAndReady(String device_code) { - Optional optionalInstruction = instructions.stream() - .filter(instruction -> StrUtil.equals(instruction.getNext_device_code(), device_code) - && StrUtil.equals(instruction.getInstruction_status(), InstructionStatusEnum.READY.getIndex())) - .findFirst(); - return optionalInstruction.orElse(null); - } - - @Override - public List findByDeviceCodes(Instruction instruction1, Boolean flay) { - List instructionList = new ArrayList<>(); - for (Instruction instruction : instructions) { - if (flay) { - if (Integer.parseInt(instruction.getInstruction_status()) < 2) { - instructionList.add(instruction); - } - } else { - if (instruction.getInstruction_status().equals(instruction1.getInstruction_status())) { - instructionList.add(instruction); - } - } - if (StrUtil.isNotBlank(instruction.getStart_device_code()) && instruction.getStart_device_code().equals(instruction1.getStart_device_code())) { - instructionList.add(instruction); - } - if (StrUtil.isNotBlank(instruction.getNext_device_code()) && instruction.getNext_device_code().equals(instruction1.getNext_device_code())) { - instructionList.add(instruction); - } - } - /*if (ObjectUtil.isNull(instruction1)) { - return null; - } - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if (flay) { - wrapper.le(StrUtil.isNotBlank(instruction1.getInstruction_status()), InstructionMybatis::getInstruction_status, instruction1.getInstruction_status()); - } else { - wrapper.eq(StrUtil.isNotBlank(instruction1.getInstruction_status()), InstructionMybatis::getInstruction_status, instruction1.getInstruction_status()); - } - wrapper.eq(StrUtil.isNotBlank(instruction1.getStart_device_code()), InstructionMybatis::getStart_device_code, instruction1.getStart_device_code()); - wrapper.eq(StrUtil.isNotBlank(instruction1.getNext_device_code()), InstructionMybatis::getNext_device_code, instruction1.getNext_device_code()); - List instructionMybatis = instructionMapper.selectList(wrapper); - List instructions = ConvertUtil.convertList(instructionMybatis, Instruction.class);*/ - return instructionList; - } - - @Override - public List getInstList(Map whereJson) { - String task_code = (String) whereJson.get("code"); - String vehicle_code = (String) whereJson.get("vehicle_code"); - String material_type = (String) whereJson.get("material_type"); - String status = (String) whereJson.get("status"); - String point_code = (String) whereJson.get("point_code"); - String create_time = (String) whereJson.get("createTime"); - String end_time = (String) whereJson.get("end_time"); - - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if (!StrUtil.isEmpty(task_code)) { - wrapper.and(instructionMybatis -> instructionMybatis.like(InstructionMybatis::getInstruction_code, task_code).or().like(InstructionMybatis::getTask_code, task_code)); - } - if (!StrUtil.isEmpty(vehicle_code)) { - wrapper.like(InstructionMybatis::getVehicle_code, vehicle_code); - } - if (!StrUtil.isEmpty(material_type)) { - wrapper.eq(InstructionMybatis::getMaterial, material_type); - } - if (!StrUtil.isEmpty(status)) { - wrapper.eq(InstructionMybatis::getInstruction_status, status); - } - if (!StrUtil.isEmpty(point_code)) { - wrapper.and(task -> task.like(InstructionMybatis::getStart_point_code, point_code).or().like(InstructionMybatis::getNext_point_code, point_code)); - } - if (!StrUtil.isEmpty(create_time) && !StrUtil.isEmpty(end_time)) { - wrapper.between(InstructionMybatis::getCreate_time, create_time, end_time); - } - List instructionMybatis = instructionMapper.selectList(wrapper); - List array = new ArrayList<>(); - if (instructionMybatis.size() > 0) { - for (InstructionMybatis inst : instructionMybatis) { - JSONObject ins = new JSONObject(); - ins.put("instruction_code", inst.getInstruction_code()); - ins.put("task_code", inst.getTask_code()); - ins.put("vehicle_code", inst.getVehicle_code()); - ins.put("task_status", inst.getInstruction_status()); - ins.put("start_point_code", inst.getStart_point_code()); - ins.put("next_point_code", inst.getNext_point_code()); - ins.put("matarial", inst.getMaterial()); - ins.put("quantity", inst.getQuantity()); - ins.put("remark", inst.getRemark()); - ins.put("create_by", inst.getCreate_by()); - ins.put("create_time", inst.getCreate_time()); - ins.put("update_by", inst.getUpdate_by()); - ins.put("update_time", inst.getUpdate_time()); - array.add(ins); - } - } - return array; - } @Override public void downloadInstLogging(List instList, HttpServletResponse response) throws IOException { @@ -1908,84 +996,6 @@ public class InstructionServiceImpl extends CommonServiceImpl()) - .stream() - .filter(instruction -> instruction.getNext_device_code().equals(nextDeviceCode) - && !deviceAppService.findDeviceByCode(instruction.getStart_device_code()).getDevice_type().equals(DeviceType.storage.toString())) - .collect(Collectors.toList()) - .isEmpty(); - } - - @Override - public Boolean querySameNextDeviceCodeInstByOut(String nextDeviceCode) { - return Optional - .ofNullable(this.instructions) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(instruction -> instruction.getNext_device_code().equals(nextDeviceCode) - && deviceAppService.findDeviceByCode(instruction.getStart_device_code()).getDevice_type().equals(DeviceType.storage.toString())) - .collect(Collectors.toList()) - .isEmpty(); - } - - @Override - public List findByCodeAndExcute(String next_code) { - List instructionList = instructions.stream().filter(item -> item.getNext_device_code().equals(next_code)).collect(Collectors.toList()); - - return instructionList; - } - - - @Override - public List findByNextCode(String next_code) { - List instructionList = instructions.stream().filter(item -> item.getNext_device_code().equals(next_code)).collect(Collectors.toList()); - - return instructionList; - } - - @Override - public List findReadyIns2() { - - //根据时间升序取第一个 - List instructionsList = instructions.stream() - .filter(item -> StrUtil.equals(item.getInstruction_type(), TaskTypeEnum.Truss_Task.getIndex()) - && StrUtil.equals(item.getInstruction_status(), TaskStatusEnum.READY.getIndex())).collect(Collectors.toList()); - return instructionsList; - } - - @Override - public List findReadyIns() { - - //根据时间升序取第一个 - List instructionsList = instructions.stream() - .filter(item -> StrUtil.equals(item.getInstruction_type(), TaskTypeEnum.Mxddhj_Task.getIndex()) - && StrUtil.equals(item.getInstruction_status(), TaskStatusEnum.READY.getIndex())).collect(Collectors.toList()); - return instructionsList; - } - - @Override - public Instruction findByStarCodeAndExcute(String start_code) { - Optional optionalInstruction = instructions.stream() - .filter(instruction -> StrUtil.equals(instruction.getStart_device_code(), start_code) - && StrUtil.equals(instruction.getInstruction_status(), InstructionStatusEnum.READY.getIndex())) - .findFirst(); - return optionalInstruction.orElse(null); - } - - - public List findReadyInstructions() { - - //根据时间升序取第一个 - List instructionsList = instructions.stream() - .filter(item -> StrUtil.equals(item.getInstruction_type(), TaskTypeEnum.Truss_Task.getIndex()) - && StrUtil.equals(item.getInstruction_status(), TaskStatusEnum.READY.getIndex())).collect(Collectors.toList()); - return instructionsList; - } - private boolean regional(String start_device_code, String next_device_code) { Device startdevice = deviceAppService.findDeviceByCode(start_device_code); @@ -2070,4 +1080,24 @@ public class InstructionServiceImpl extends CommonServiceImpl()) + .stream() + .filter(instruction -> instruction.getTask_code().equals(task_code)) + .findFirst() + .orElse(null); + } + + @Override + public InstructionDto findByInstTypeAndIsWait(String inst_type, String is_wait) { + return Optional.ofNullable(this.instructions) + .orElse(new ArrayList<>()) + .stream() + .filter(instruction -> instruction.getInstruction_type().equals(inst_type) && instruction.getIs_wait().equals(is_wait)) + .findFirst() + .orElse(null); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceModbusTcpProtocolRunnable.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceModbusTcpProtocolRunnable.java new file mode 100644 index 0000000..5c14972 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceModbusTcpProtocolRunnable.java @@ -0,0 +1,945 @@ +package org.nl.acs.opc; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.digitalpetri.modbus.master.ModbusTcpMaster; +import com.digitalpetri.modbus.master.ModbusTcpMasterConfig; +import com.digitalpetri.modbus.requests.*; +import com.digitalpetri.modbus.responses.*; +import io.netty.buffer.ByteBuf; +import io.netty.util.ReferenceCountUtil; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.opc.service.dto.OpcServerManageDto; +import org.nl.acs.udw.UnifiedDataAccessor; +import org.nl.acs.udw.UnifiedDataAccessorFactory; +import org.nl.acs.udw.UnifiedDataAppService; + +import java.time.Duration; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.stream.Collectors; + + +@Slf4j +public class DeviceModbusTcpProtocolRunnable implements Runnable { + private List protocols; + private OpcServerManageDto opcServer; + private ModbusTcpMaster modbusMaster; + private Map itemSearchCache; + + /** + * 失败地址跟踪:记录每个地址的连续失败次数和最后失败时间 + * key: itemCode, value: FailureInfo + */ + private Map failureTracker; + + /** + * 失败信息 + */ + private static class FailureInfo { + int consecutiveFailures; // 连续失败次数 + long lastFailureTime; // 最后失败时间 + long skipUntilTime; // 跳过直到此时间 + + FailureInfo() { + this.consecutiveFailures = 0; + this.lastFailureTime = 0; + this.skipUntilTime = 0; + } + } + + /** + * Modbus读取项配置 + */ + private static class ModbusItemConfig { + String itemCode; + int address; + String dataType; + int registerType; + + ModbusItemConfig(String itemCode, int address, String dataType, int registerType) { + this.itemCode = itemCode; + this.address = address; + this.dataType = dataType; + this.registerType = registerType; + } + } + + public DeviceModbusTcpProtocolRunnable() { + this.itemSearchCache = new ConcurrentHashMap<>(); + this.failureTracker = new ConcurrentHashMap<>(); + this.modbusMaster = null; + } + + public void setProtocols(List protocols) { + this.protocols = protocols; + } + + public void setOpcServer(OpcServerManageDto opcServer) { + this.opcServer = opcServer; + } + + private OpcItemDto getItem(String item) { + OpcItemDto x = this.itemSearchCache.get(item); + if (x == null) { + for (OpcItemDto dto : this.protocols) { + if (StrUtil.equals(item, dto.getItem_code())) { + x = dto; + this.itemSearchCache.put(item, dto); + break; + } + } + } + return x; + } + + + @Override + public void run() { + this.runModbusTcp(); + } + + + /** + * 断开Modbus连接 + */ + private void disconnectModbus(String reason) { + if (this.modbusMaster != null) { + try { + modbusMaster.disconnect(); + log.info("ModbusTCP连接已断开: {}", reason); + } catch (Exception e) { + log.error("断开ModbusTCP连接失败", e); + } + this.modbusMaster = null; + } + } + + private void runModbusTcp() { + while (true) { + try { + // 断开之前的连接 + disconnectModbus("准备重新连接"); + String[] host_port = this.opcServer.getOpc_host().split(":"); + + ModbusTcpMasterConfig config = new ModbusTcpMasterConfig.Builder(host_port[0]) + .setPort(Integer.parseInt(host_port[1])) + .setTimeout(Duration.ofSeconds(OpcConfig.modbus_tcp_timeout_seconds)) + .build(); + + this.modbusMaster = new ModbusTcpMaster(config); + this.modbusMaster.connect(); + + log.info("ModbusTCP连接成功: {}", this.opcServer.getOpc_host()); + + List itemsString = new ArrayList<>(); + List itemConfigs = new ArrayList<>(); + + for (OpcItemDto protocol : this.protocols) { + String itemCode = protocol.getItem_code(); + itemsString.add(itemCode); + + try { + ModbusItemConfig itemConfig = parseSimpleConfig(protocol); + if (itemConfig != null) { + itemConfigs.add(itemConfig); + log.trace("添加读取项: {} -> 地址:{}, 类型:{}", itemCode, itemConfig.address, itemConfig.dataType); + } + } catch (Exception e) { + log.error("解析配置失败: {}, 错误: {}", itemCode, e.getMessage()); + } + } + + if (!OpcStartTag.is_run) { + OpcStartTag.is_run = true; + } + + UnifiedDataAccessor accessor_value = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key); + + long lastStatisticsTime = System.currentTimeMillis(); + while (DeviceModbusTcpSynchronizeAutoRun.isRun) { + Map dataMap = batchReadModbus(itemConfigs); + for (Map.Entry entry : dataMap.entrySet()) { + String itemId = entry.getKey(); + Object value = entry.getValue(); + Object his = accessor_value.getValue(itemId); + // 检查数值是否变化 + if (!UnifiedDataAppService.isEquals(value, his)) { + OpcItemDto itemDto = this.getItem(itemId); + this.logItemChanged(itemId, accessor_value, value, itemDto); + if (!ObjectUtil.isEmpty(value) || "".equals(value)) { + accessor_value.setValue(itemId, value); + } + if (ObjectUtil.isEmpty(value) && !"".equals(value)) { + accessor_value.removeValue(itemId); + } + } + } + + // 每5分钟打印一次失败地址统计 + long currentTime = System.currentTimeMillis(); + if (currentTime - lastStatisticsTime > 300000) { // 5分钟 + logFailureStatistics(); + lastStatisticsTime = currentTime; + } + + // 等待读取间隔时间,避免频繁读取 + ThreadUtl.sleep((long) OpcConfig.synchronized_millisecond); + } + + // 正常退出时断开连接 + disconnectModbus("正常退出"); + return; + } catch (Exception e) { + log.error("ModbusTCP连接异常: {}", e.getMessage(), e); + disconnectModbus("异常处理"); + + if (!DeviceModbusTcpSynchronizeAutoRun.isRun) { + log.warn("ModbusTCP线程停止(收到停止信号)"); + return; + } + log.info("{}秒后尝试重新连接...", OpcConfig.synchronized_exception_wait_second); + ThreadUtl.sleep((OpcConfig.synchronized_exception_wait_second * 1000)); + } + } + } + + private ModbusItemConfig parseSimpleConfig(OpcItemDto protocol) { + try { + String itemCode = protocol.getItem_code(); + String itemName = protocol.getItem_name(); + String itemValueType = protocol.getItem_value_type(); + + if (StrUtil.isEmpty(itemCode) || StrUtil.isEmpty(itemName)) { + log.error("配置错误: item_code或item_name为空"); + return null; + } + + // 解析Modbus地址,确定寄存器类型,转换为实际地址 + int address = Integer.parseInt(itemName.trim()); + int registerType = getRegisterTypeFromAddress(address); + int actualAddress = convertToActualAddress(address, registerType); + return new ModbusItemConfig(itemCode, actualAddress, itemValueType, registerType); + } catch (Exception e) { + log.error("解析配置失败: {}, 错误: {}", protocol.getItem_code(), e.getMessage()); + return null; + } + } + + /** + * Modbus标准地址约定: + * 0xxxx (00001-09999): 线圈 (Coils) + * 1xxxx (10001-19999): 离散输入 (Discrete Inputs) + * 3xxxx (30001-39999): 输入寄存器 (Input Registers) + * 4xxxx (40001-49999): 保持寄存器 (Holding Registers) + * 1、线圈 + * 2、离散输入 + * 3、保持寄存器 + * 4、输入寄存器 + */ + private int getRegisterTypeFromAddress(int address) { + if (address >= 40001 && address <= 49999) { + return 3; + } else if (address >= 30001 && address <= 39999) { + return 4; + } else if (address >= 10001 && address <= 19999) { + return 2; + } else if (address >= 1 && address <= 9999) { + return 1; + } else { + return 3; + } + } + + /** + * 转换为实际地址 + * 如果是标准Modbus地址,减去偏移量 + * 1、线圈 + * 2、离散输入 + * 3、保持寄存器 + * 4、输入寄存器 + */ + private int convertToActualAddress(int address, int registerType) { + switch (registerType) { + case 3: + return address >= 40001 ? address - 40001 : address; + case 4: + return address >= 30001 ? address - 30001 : address; + case 2: + return address >= 10001 ? address - 10001 : address; + case 1: + return address >= 1 && address <= 9999 ? address - 1 : address; + default: + return address; + } + } + + /** + * 将内部地址转换回Modbus标准地址格式 + * 1、线圈: 0xxxx (1-9999) + * 2、离散输入: 1xxxx (10001-19999) + * 3、保持寄存器: 4xxxx (40001-49999) + * 4、输入寄存器: 3xxxx (30001-39999) + */ + private int convertToModbusAddress(int actualAddress, int registerType) { + switch (registerType) { + case 3: + return actualAddress + 40001; + case 4: + return actualAddress + 30001; + case 2: + return actualAddress + 10001; + case 1: + return actualAddress + 1; + default: + return actualAddress; + } + } + + /** + * 获取寄存器类型名称 + * 1、线圈 (Coils) + * 2、离散输入 (Discrete Inputs) + * 3、保持寄存器 (Holding Registers) + * 4、输入寄存器 (Input Registers) + */ + private String getRegisterTypeName(int registerType) { + switch (registerType) { + case 1: + return "线圈(Coils)"; + case 2: + return "离散输入(Discrete Inputs)"; + case 3: + return "保持寄存器(Holding Registers)"; + case 4: + return "输入寄存器(Input Registers)"; + default: + return "未知类型(" + registerType + ")"; + } + } + + /** + * 检查是否应该跳过该地址(因为持续失败) + */ + private boolean shouldSkipAddress(String itemCode) { + FailureInfo info = failureTracker.get(itemCode); + if (info == null) { + return false; + } + + long currentTime = System.currentTimeMillis(); + if (currentTime < info.skipUntilTime) { + // 还在跳过时间内 + return true; + } + + return false; + } + + /** + * 记录读取成功,重置失败计数 + */ + private void recordSuccess(String itemCode) { + FailureInfo info = failureTracker.get(itemCode); + if (info != null && info.consecutiveFailures > 0) { + log.info("地址恢复正常: {}, 之前连续失败{}次", itemCode, info.consecutiveFailures); + failureTracker.remove(itemCode); + } + } + + /** + * 记录读取失败 + */ + private void recordFailure(String itemCode, ModbusItemConfig config, Exception e) { + FailureInfo info = failureTracker.computeIfAbsent(itemCode, k -> new FailureInfo()); + info.consecutiveFailures++; + info.lastFailureTime = System.currentTimeMillis(); + + // 判断是否是超时异常 + boolean isTimeout = isTimeoutException(e); + + // 如果连续失败次数达到阈值,设置跳过时间 + if (info.consecutiveFailures >= OpcConfig.modbus_tcp_failure_threshold && isTimeout) { + // 根据失败次数计算跳过时间(递增策略) + int skipSeconds = OpcConfig.modbus_tcp_skip_time_seconds * + Math.min(info.consecutiveFailures - OpcConfig.modbus_tcp_failure_threshold + 1, 4); + info.skipUntilTime = info.lastFailureTime + skipSeconds * 1000L; + + int modbusAddr = convertToModbusAddress(config.address, config.registerType); + log.warn("地址持续失败: {}, 地址:{} (Modbus:{}), 连续失败{}次, 将跳过{}秒", + itemCode, config.address, modbusAddr, info.consecutiveFailures, skipSeconds); + } + } + + /** + * 判断是否是超时相关异常 + */ + private boolean isTimeoutException(Exception e) { + if (e instanceof TimeoutException) { + return true; + } + if (e instanceof ExecutionException) { + Throwable cause = e.getCause(); + if (cause != null) { + String causeClass = cause.getClass().getName(); + return causeClass.contains("Timeout") || causeClass.contains("timeout"); + } + } + String exMsg = e.getMessage(); + return exMsg != null && (exMsg.contains("timeout") || exMsg.contains("timed out")); + } + + /** + * 打印失败地址统计信息 + */ + private void logFailureStatistics() { + if (failureTracker.isEmpty()) { + return; + } + + int totalFailed = 0; + int skippedCount = 0; + StringBuilder sb = new StringBuilder(); + sb.append("\n========== Modbus失败地址统计 ==========\n"); + + long currentTime = System.currentTimeMillis(); + for (Map.Entry entry : failureTracker.entrySet()) { + String itemCode = entry.getKey(); + FailureInfo info = entry.getValue(); + totalFailed++; + + boolean isSkipped = currentTime < info.skipUntilTime; + if (isSkipped) { + skippedCount++; + long remainSeconds = (info.skipUntilTime - currentTime) / 1000; + sb.append(String.format(" [跳过中] %s - 连续失败%d次, 剩余跳过时间:%d秒\n", + itemCode, info.consecutiveFailures, remainSeconds)); + } else { + sb.append(String.format(" [监控中] %s - 连续失败%d次\n", + itemCode, info.consecutiveFailures)); + } + } + + sb.append(String.format("总计: %d个失败地址, 其中%d个正在跳过\n", totalFailed, skippedCount)); + sb.append("========================================"); + + log.warn(sb.toString()); + } + + /** + * 批量读取Modbus数据 + */ + private Map batchReadModbus(List itemConfigs) { + Map dataMap = new HashMap<>(); + // 按寄存器类型分组 + Map> groupedByType = new HashMap<>(); + for (ModbusItemConfig config : itemConfigs) { + groupedByType.computeIfAbsent(config.registerType, k -> new ArrayList<>()).add(config); + } + // 对每种类型的寄存器进行批量读取 + for (Map.Entry> entry : groupedByType.entrySet()) { + int registerType = entry.getKey(); + List configs = entry.getValue(); + // 读取这一组寄存器 + Map typeData = readRegisterGroup(registerType, configs); + dataMap.putAll(typeData); + } + return dataMap; + } + + /** + * 地址范围类:用于批量读取 + */ + private static class AddressRange { + int startAddress; + int quantity; + List configs; + + AddressRange(int startAddress, int quantity) { + this.startAddress = startAddress; + this.quantity = quantity; + this.configs = new ArrayList<>(); + } + } + + /** + * 读取一组相同类型的寄存器 + */ + private Map readRegisterGroup(int registerType, List configs) { + Map result = new HashMap<>(); + + // 如果是线圈或离散输入,不进行合并(数据类型不同) + if (registerType == 1 || registerType == 2) { + for (ModbusItemConfig config : configs) { + // 检查是否应该跳过 + if (shouldSkipAddress(config.itemCode)) { + result.put(config.itemCode, null); + continue; + } + + try { + Object value = readSingleRegister(registerType, config); + result.put(config.itemCode, value); + recordSuccess(config.itemCode); + } catch (Exception e) { + int modbusAddr = convertToModbusAddress(config.address, config.registerType); + String errorMsg = e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName(); + log.error("读取失败: {}, 地址:{} (Modbus:{}), 寄存器类型:{}, 异常类型:{}, 错误:{}", + config.itemCode, config.address, modbusAddr, + getRegisterTypeName(registerType), e.getClass().getName(), errorMsg, e); + recordFailure(config.itemCode, config, e); + result.put(config.itemCode, null); + } + } + return result; + } + + List sortedConfigs = configs.stream() + .sorted(Comparator.comparingInt(c -> c.address)) + .collect(Collectors.toList()); + + List ranges = mergeAddressRanges(sortedConfigs); + + for (AddressRange range : ranges) { + try { + if (range.configs.size() == 1) { + // 单个读取 + ModbusItemConfig config = range.configs.get(0); + + // 检查是否应该跳过 + if (shouldSkipAddress(config.itemCode)) { + result.put(config.itemCode, null); + continue; + } + + Object value = readSingleRegister(registerType, config); + result.put(config.itemCode, value); + recordSuccess(config.itemCode); + } else { + // 批量读取 + Map batchResult = readBatchRegisters(registerType, range); + result.putAll(batchResult); + // 批量读取成功,重置所有涉及的地址的失败计数 + for (ModbusItemConfig config : range.configs) { + recordSuccess(config.itemCode); + } + } + } catch (Exception e) { + int modbusAddress = convertToModbusAddress(range.startAddress, registerType); + String errorMsg = e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName(); + log.error("批量读取失败: 起始地址:{} (Modbus:{}), 数量:{}, 寄存器类型:{}, 异常类型:{}, 错误:{}", + range.startAddress, modbusAddress, range.quantity, + getRegisterTypeName(registerType), e.getClass().getName(), errorMsg, e); + // 失败时逐个读取 + for (ModbusItemConfig config : range.configs) { + // 检查是否应该跳过 + if (shouldSkipAddress(config.itemCode)) { + result.put(config.itemCode, null); + continue; + } + + try { + Object value = readSingleRegister(registerType, config); + result.put(config.itemCode, value); + recordSuccess(config.itemCode); + } catch (Exception ex) { + int modbusAddr = convertToModbusAddress(config.address, config.registerType); + String errMsg = ex.getMessage() != null ? ex.getMessage() : ex.getClass().getSimpleName(); + log.error("单独读取失败: {}, 地址:{} (Modbus:{}), 异常类型:{}, 错误:{}", + config.itemCode, config.address, modbusAddr, ex.getClass().getName(), errMsg, ex); + recordFailure(config.itemCode, config, ex); + result.put(config.itemCode, null); + } + } + } + } + + return result; + } + + /** + * 合并连续地址范围 + */ + private List mergeAddressRanges(List sortedConfigs) { + List ranges = new ArrayList<>(); + if (sortedConfigs.isEmpty()) { + return ranges; + } + + AddressRange currentRange = null; + for (ModbusItemConfig config : sortedConfigs) { + int quantity = getQuantityByDataType(config.dataType); + + if (currentRange == null) { + // 第一个范围 + currentRange = new AddressRange(config.address, quantity); + currentRange.configs.add(config); + } else { + int expectedNextAddress = currentRange.startAddress + currentRange.quantity; + int gap = config.address - expectedNextAddress; + + // 如果地址连续或间隔较小,合并到当前范围 + if (gap >= 0 && gap <= OpcConfig.modbus_tcp_batch_address_gap) { + currentRange.quantity = config.address - currentRange.startAddress + quantity; + currentRange.configs.add(config); + } else { + // 地址不连续,开始新范围 + ranges.add(currentRange); + currentRange = new AddressRange(config.address, quantity); + currentRange.configs.add(config); + } + } + } + + if (currentRange != null) { + ranges.add(currentRange); + } + + return ranges; + } + + private Map readBatchRegisters(int registerType, AddressRange range) + throws ExecutionException, InterruptedException, TimeoutException { + Map result = new HashMap<>(); + int unitId = OpcConfig.modbus_tcp_default_unit_id; + + // 创建批量读取请求 + ModbusRequest request; + switch (registerType) { + case 3: + request = new ReadHoldingRegistersRequest(range.startAddress, range.quantity); + break; + case 4: + request = new ReadInputRegistersRequest(range.startAddress, range.quantity); + break; + default: + throw new IllegalArgumentException("不支持批量读取的寄存器类型: " + registerType); + } + + CompletableFuture future = modbusMaster.sendRequest(request, unitId); + ModbusResponse response = future.get(OpcConfig.modbus_tcp_timeout_seconds, TimeUnit.SECONDS); + + // 解析响应 + ByteBuf registers = null; + try { + if (response instanceof ReadHoldingRegistersResponse) { + registers = ((ReadHoldingRegistersResponse) response).getRegisters(); + } else if (response instanceof ReadInputRegistersResponse) { + registers = ((ReadInputRegistersResponse) response).getRegisters(); + } + + if (registers != null) { + // 为每个配置项提取对应的数据 + for (ModbusItemConfig config : range.configs) { + int offset = (config.address - range.startAddress) * 2; + int quantity = getQuantityByDataType(config.dataType); + + // 创建一个新的ByteBuf用于解析当前项 + ByteBuf itemBuf = registers.slice(offset, quantity * 2).retain(); + try { + Object value = parseRegisterValue(itemBuf, config.dataType); + result.put(config.itemCode, value); + } finally { + ReferenceCountUtil.release(itemBuf); + } + } + } + } finally { + if (registers != null) { + ReferenceCountUtil.release(registers); + } + } + + log.debug("批量读取成功: 起始地址:{}, 数量:{}, 读取项数:{}", + range.startAddress, range.quantity, range.configs.size()); + + return result; + } + + private Object readSingleRegister(int registerType, ModbusItemConfig config) + throws ExecutionException, InterruptedException, TimeoutException { + // 从站ID(使用配置) + int unitId = OpcConfig.modbus_tcp_default_unit_id; + int quantity = getQuantityByDataType(config.dataType); + // 创建请求 + ModbusRequest request; + switch (registerType) { + case 3: + request = new ReadHoldingRegistersRequest(config.address, quantity); + break; + case 4: + request = new ReadInputRegistersRequest(config.address, quantity); + break; + case 1: + request = new ReadCoilsRequest(config.address, quantity); + break; + case 2: + request = new ReadDiscreteInputsRequest(config.address, quantity); + break; + default: + throw new IllegalArgumentException("不支持的寄存器类型: " + registerType); + } + + CompletableFuture future = + modbusMaster.sendRequest(request, unitId); + ModbusResponse response = future.get(OpcConfig.modbus_tcp_timeout_seconds, TimeUnit.SECONDS); + return parseResponse(response, config.dataType); + } + + /** + * 解析Modbus响应 + */ + private Object parseResponse(ModbusResponse response, String dataType) { + if (response instanceof ReadHoldingRegistersResponse) { + ReadHoldingRegistersResponse hrResponse = (ReadHoldingRegistersResponse) response; + ByteBuf registers = hrResponse.getRegisters(); + try { + return parseRegisterValue(registers, dataType); + } finally { + ReferenceCountUtil.release(registers); + } + } else if (response instanceof ReadInputRegistersResponse) { + ReadInputRegistersResponse irResponse = (ReadInputRegistersResponse) response; + ByteBuf registers = irResponse.getRegisters(); + try { + return parseRegisterValue(registers, dataType); + } finally { + ReferenceCountUtil.release(registers); + } + } else if (response instanceof ReadCoilsResponse) { + ReadCoilsResponse coilResponse = (ReadCoilsResponse) response; + ByteBuf coils = coilResponse.getCoilStatus(); + try { + if (coils.readableBytes() > 0) { + byte status = coils.readByte(); + return (status & 0x01) != 0; + } + } finally { + ReferenceCountUtil.release(coils); + } + } else if (response instanceof ReadDiscreteInputsResponse) { + ReadDiscreteInputsResponse diResponse = (ReadDiscreteInputsResponse) response; + ByteBuf inputs = diResponse.getInputStatus(); + try { + if (inputs.readableBytes() > 0) { + byte status = inputs.readByte(); + return (status & 0x01) != 0; + } + } finally { + ReferenceCountUtil.release(inputs); + } + } + return null; + } + + /** + * 16位数据需要1个寄存器 + * 32位数据需要2个寄存器 + * 64位数据需要4个寄存器 + * String类型:STRING:长度,例如 STRING:10 表示10个字符(需要5个寄存器) + */ + private int getQuantityByDataType(String dataType) { + if (StrUtil.isEmpty(dataType)) { + return 1; + } + String type = dataType.toUpperCase().trim(); + + // 处理 STRING:长度 格式 + if (type.startsWith("STRING:")) { + try { + String lengthStr = type.substring(7); + int charLength = Integer.parseInt(lengthStr); + // 每个寄存器存储2个字符,向上取整 + return (charLength + 1) / 2; + } catch (Exception e) { + log.error("解析String长度失败: {}", dataType); + return 1; + } + } + + switch (type) { + case "FLOAT": + case "INT32": + case "UINT32": + case "DWORD": + return 2; + case "INT64": + case "UINT64": + case "DOUBLE": + return 4; + case "STRING": + // 默认String长度:10个字符 = 5个寄存器 + return 5; + case "INT16": + case "UINT16": + case "WORD": + case "BOOL": + case "BOOLEAN": + default: + return 1; + } + } + + + /** + * 根据数据类型解析寄存器值 + */ + private Object parseRegisterValue(ByteBuf registers, String dataType) { + if (StrUtil.isEmpty(dataType)) { + if (registers.readableBytes() >= 2) { + return registers.readShort(); + } + return null; + } + + String type = dataType.toUpperCase().trim(); + try { + switch (type) { + case "INT16": + if (registers.readableBytes() >= 2) { + return registers.readShort(); + } + break; + + case "UINT16": + case "WORD": + if (registers.readableBytes() >= 2) { + return registers.readUnsignedShort(); + } + break; + + case "INT32": + if (registers.readableBytes() >= 4) { + return registers.readInt(); + } + break; + + case "UINT32": + case "DWORD": + if (registers.readableBytes() >= 4) { + return registers.readUnsignedInt(); + } + break; + + case "FLOAT": + if (registers.readableBytes() >= 4) { + return registers.readFloat(); + } + break; + + case "INT64": + if (registers.readableBytes() >= 8) { + return registers.readLong(); + } + break; + + case "DOUBLE": + if (registers.readableBytes() >= 8) { + return registers.readDouble(); + } + break; + + case "BOOL": + case "BOOLEAN": + if (registers.readableBytes() >= 2) { + return registers.readShort() != 0; + } + break; + + default: + // 处理 STRING 或 STRING:长度 格式 + if (type.equals("STRING") || type.startsWith("STRING:")) { + return parseStringFromRegisters(registers, type); + } + + log.warn("未知的数据类型: {}, 使用INT16", dataType); + if (registers.readableBytes() >= 2) { + return registers.readShort(); + } + } + } catch (Exception e) { + log.error("解析寄存器值失败,数据类型: {}, 错误: {}", dataType, e.getMessage()); + } + + return null; + } + + /** + * 从寄存器中解析字符串 + * Modbus 寄存器:每个寄存器2字节,可存储2个ASCII字符 + * 字节序:大端序(高字节在前) + */ + private String parseStringFromRegisters(ByteBuf registers, String dataType) { + try { + int availableBytes = registers.readableBytes(); + if (availableBytes == 0) { + return ""; + } + + // 确定字符串长度 + int maxLength = availableBytes; + if (dataType.startsWith("STRING:")) { + try { + String lengthStr = dataType.substring(7); + maxLength = Math.min(Integer.parseInt(lengthStr), availableBytes); + } catch (Exception e) { + log.warn("解析String长度失败,使用默认: {}", dataType); + } + } + + // 读取字节并转换为字符串 + byte[] bytes = new byte[availableBytes]; + registers.readBytes(bytes); + + // 转换为字符串,去除末尾的null字符和空格 + String result = new String(bytes, 0, Math.min(maxLength, bytes.length), "ASCII"); + // 去除null字符 + int nullIndex = result.indexOf('\0'); + if (nullIndex >= 0) { + result = result.substring(0, nullIndex); + } + // 去除首尾空格 + result = result.trim(); + + return result; + } catch (Exception e) { + log.error("解析String失败: {}", e.getMessage()); + return ""; + } + } + + + /** + * 记录数据变化日志 + */ + private void logItemChanged(String itemId, UnifiedDataAccessor accessor_value, Object value, OpcItemDto itemDto) { + // 过滤心跳、时间等频繁变化的数据 + if (itemDto.getItem_code().endsWith("heartbeat") || + itemDto.getItem_code().endsWith("time") || + itemDto.getItem_code().endsWith("consumption")) { + return; + } + Object his = accessor_value.getValue(itemId); + // 记录关联项的值 + List relate_items = itemDto.getRelate_items(); + if (relate_items != null && !relate_items.isEmpty()) { + StringBuilder sb = new StringBuilder(); + for (String relate : relate_items) { + Object obj = accessor_value.getValue(relate); + sb.append(relate).append("=").append(obj).append(";"); + } + if (log.isDebugEnabled()) { + log.debug("数据变化 - item:{}, 旧值:{}, 新值:{}, 关联:{}", itemId, his, value, sb.toString()); + } + } else { + if (log.isDebugEnabled()) { + log.debug("数据变化 - item:{}, 旧值:{}, 新值:{}", itemId, his, value); + } + } + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceModbusTcpSynchronizeAutoRun.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceModbusTcpSynchronizeAutoRun.java new file mode 100644 index 0000000..78666e8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceModbusTcpSynchronizeAutoRun.java @@ -0,0 +1,99 @@ +package org.nl.acs.opc; + +import cn.hutool.core.util.ObjectUtil; +import org.dromara.dynamictp.core.support.ThreadPoolBuilder; +import org.nl.acs.auto.run.AbstractAutoRunnable; +import org.nl.acs.opc.service.dto.OpcServerManageDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; + +import static org.dromara.dynamictp.common.em.QueueTypeEnum.MEMORY_SAFE_LINKED_BLOCKING_QUEUE; + +/** + * OPC设备同步启动 + * + * @author 20220102CG\noblelift + */ +@Component +public class DeviceModbusTcpSynchronizeAutoRun extends AbstractAutoRunnable { + + public static volatile boolean isRun = false; + ExecutorService executorService = ThreadPoolBuilder.newBuilder() + .threadPoolName("deviceOpc_thread") + .threadFactory("deviceOpc_thread") + .corePoolSize(80) + .maximumPoolSize(100) + .keepAliveTime(40) + .timeUnit(TimeUnit.SECONDS) + .workQueue(MEMORY_SAFE_LINKED_BLOCKING_QUEUE.getName(), 2000) + .buildDynamic(); + + @Autowired + private DeviceAppService deviceAppService; + @Autowired + private OpcServerManageService opcServerManageService; + + @Override + public String getCode() { + return DeviceModbusTcpSynchronizeAutoRun.class.getSimpleName(); + } + + @Override + public String getName() { + return "ModbusTCP/IP设备同步器"; + } + + @Override + public void autoRun() throws Exception { + { + isRun = true; + Map servers = this.opcServerManageService.queryAllServerMap(); + Map>> pros; + do { + Thread.sleep(1000L); + pros = this.deviceAppService.findAllFormatProtocolFromDriver(); + } while (ObjectUtil.isEmpty(pros)); + Set keys = pros.keySet(); + Iterator var4 = keys.iterator(); + //代码执行一次 + while (var4.hasNext()) { + String key = (String) var4.next(); + List> list = pros.get(key); + OpcServerManageDto opcServer = servers.get(key); + Iterator var8 = list.iterator(); + while (var8.hasNext()) { + List groupProtols = (List) var8.next(); + DeviceModbusTcpProtocolRunnable runnable = new DeviceModbusTcpProtocolRunnable(); + runnable.setProtocols(groupProtols); + runnable.setOpcServer(opcServer); + this.executorService.submit(runnable); + } + } + while (true) { + Thread.sleep(3000L); + } + } + } + + @Override + public void after() { + isRun = false; + this.executorService.shutdownNow(); + this.executorService = ThreadPoolBuilder.newBuilder() + .threadPoolName("deviceOpc_thread") + .threadFactory("deviceOpc_thread") + .corePoolSize(80) + .maximumPoolSize(100) + .keepAliveTime(40) + .timeUnit(TimeUnit.SECONDS) + .workQueue(MEMORY_SAFE_LINKED_BLOCKING_QUEUE.getName(), 2000) + .buildDynamic(); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index ace2d51..4cc0e9b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -84,9 +84,9 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC @Override public void run() { if (OpcConfig.opc_item_read_using_callback) { - this.runNew(); + //this.runNew(); } else { - this.runOld(); + // this.runOld(); } } @@ -238,12 +238,6 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC Item item = (Item) var18.next(); String itemId = item.getId(); OpcItemDto itemDto = this.getItem(itemId); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("OPC数据源") - .content("OPC数据源:" + tag + "内容为:" + itemDto) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); } ThreadUtl.sleep( 3000); break start; @@ -265,12 +259,6 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC if (log.isWarnEnabled()) { log.warn("{} 所有内容都为空, all_null:{} ,暂定{}ms", tag, all_null, 5000); } - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("OPC数据源") - .content("OPC数据源:" + tag + "内容为:" + all_null) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); ThreadUtl.sleep((long) (5000)); break start; } @@ -440,26 +428,14 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC && !itemDto.getItem_code().endsWith("x") && !itemDto.getItem_code().endsWith("y")) { // 存在上次点位值为null情况 则不记录日志 if(!(his instanceof Float) && !(value instanceof Float)){ - LuceneLogDto luceneLogDto = new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(),4, itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".") + 1), - String.valueOf(his), String.valueOf(value)); - luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc()); - String logLevel = paramService.findByCode(AcsConfig.LOGLEVEL).getValue(); - if(StrUtil.isNotEmpty(logLevel) && isNumeric(logLevel) && (luceneLogDto.getLog_level() >= Integer.parseInt(logLevel))){ - log.info("{}", JSON.toJSONString(luceneLogDto)); - } + } } } else { if (!itemDto.getItem_code().endsWith("heartbeat") && !itemDto.getItem_code().endsWith("time") && !itemDto.getItem_code().endsWith("consumption") && !itemDto.getItem_code().endsWith("x") && !itemDto.getItem_code().endsWith("y")) { if(!(his instanceof Float) && !(value instanceof Float)){ - LuceneLogDto luceneLogDto = new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(),4, itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".") + 1), - String.valueOf(his), String.valueOf(value)); - luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc()); - String logLevel = paramService.findByCode(AcsConfig.LOGLEVEL).getValue(); - if(StrUtil.isNotEmpty(logLevel) && isNumeric(logLevel) && (luceneLogDto.getLog_level() >= Integer.parseInt(logLevel))){ - log.info("{}", JSON.toJSONString(luceneLogDto)); - } + } } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java index 69ee0c4..c7c56d6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceOpcSynchronizeAutoRun.java @@ -55,41 +55,41 @@ public class DeviceOpcSynchronizeAutoRun extends AbstractAutoRunnable { @Override public void autoRun() throws Exception { - { - //Thread.sleep(10000L); - isRun = true; - - Map servers = this.opcServerManageService.queryAllServerMap(); - Map>> pros; - do { - Thread.sleep(1000L); - pros = this.deviceAppService.findAllFormatProtocolFromDriver(); - } while (ObjectUtil.isEmpty(pros)); - Set keys = pros.keySet(); - Iterator var4 = keys.iterator(); - //代码执行一次 - while (var4.hasNext()) { - String key = (String) var4.next(); - List> list = (List) pros.get(key); - OpcServerManageDto opcServer = (OpcServerManageDto) servers.get(key); - Iterator var8 = list.iterator(); - while (var8.hasNext()) { - List groupProtols = (List) var8.next(); - DeviceOpcProtocolRunable runable = new DeviceOpcProtocolRunable(); - runable.setProtocols(groupProtols); - runable.setOpcServer(opcServer); - this.executorService.submit(runable); - } - } - - // 同步无光电设备信号 - //Map>> pros1 = this.deviceAppService.findAllFormatProtocolFromDriver(); - //List opcDrivers = this.deviceAppService.findDeviceDriver(DeviceDriver.class); - - while (true) { - Thread.sleep(3000L); - } - } +// { +// //Thread.sleep(10000L); +// isRun = true; +// +// Map servers = this.opcServerManageService.queryAllServerMap(); +// Map>> pros; +// do { +// Thread.sleep(1000L); +// pros = this.deviceAppService.findAllFormatProtocolFromDriver(); +// } while (ObjectUtil.isEmpty(pros)); +// Set keys = pros.keySet(); +// Iterator var4 = keys.iterator(); +// //代码执行一次 +// while (var4.hasNext()) { +// String key = (String) var4.next(); +// List> list = (List) pros.get(key); +// OpcServerManageDto opcServer = (OpcServerManageDto) servers.get(key); +// Iterator var8 = list.iterator(); +// while (var8.hasNext()) { +// List groupProtols = (List) var8.next(); +// DeviceOpcProtocolRunable runable = new DeviceOpcProtocolRunable(); +// runable.setProtocols(groupProtols); +// runable.setOpcServer(opcServer); +// this.executorService.submit(runable); +// } +// } +// +// // 同步无光电设备信号 +// //Map>> pros1 = this.deviceAppService.findAllFormatProtocolFromDriver(); +// //List opcDrivers = this.deviceAppService.findDeviceDriver(DeviceDriver.class); +// +// while (true) { +// Thread.sleep(3000L); +// } +// } } @Override diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcConfig.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcConfig.java index 44eccaa..8b5a97c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcConfig.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcConfig.java @@ -6,7 +6,7 @@ package org.nl.acs.opc; public class OpcConfig { public static Boolean auto_start_opc = Boolean.valueOf(true); public static String udw_opc_value_key = "opc_value"; - public static Integer synchronized_millisecond = Integer.valueOf(100); + public static Integer synchronized_millisecond = Integer.valueOf(800); public static Integer synchronized_exception_wait_second = Integer.valueOf(10); public static Integer retry_times = Integer.valueOf(3); public static String sync_issue_type_code = "device_opc_sync"; @@ -18,4 +18,32 @@ public class OpcConfig { * OPC 数据同步是否采用回调机制实现。之前是线程定期全部读,效率低。 */ public static Boolean opc_item_read_using_callback = false; + + /** + * ModbusTCP连接超时时间(秒) + */ + public static Integer modbus_tcp_timeout_seconds = Integer.valueOf(3); + + /** + * ModbusTCP默认从站ID(Unit ID) + */ + public static Integer modbus_tcp_default_unit_id = Integer.valueOf(1); + + /** + * ModbusTCP批量读取:连续地址的最大间隔(超过此间隔则分开读取) + */ + public static Integer modbus_tcp_batch_address_gap = Integer.valueOf(100); + + /** + * ModbusTCP:连续失败多少次后开始跳过该地址 + */ + public static Integer modbus_tcp_failure_threshold = Integer.valueOf(3); + + /** + * ModbusTCP:失败后跳过的时间(秒) + * 第1次失败:跳过 30 秒 + * 第2次失败:跳过 60 秒 + * 第3次及以上:跳过 120 秒 + */ + public static Integer modbus_tcp_skip_time_seconds = Integer.valueOf(30); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcItemDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcItemDto.java index e392778..57eb993 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcItemDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcItemDto.java @@ -16,7 +16,9 @@ public class OpcItemDto { private String opc_server_code; private String opc_plc_code; private String item_code; + private String item_name; private Object item_value; + private String item_value_type; private Object his_item_value; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/storage_cell/service/StorageCellService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/storage_cell/service/StorageCellService.java index f0dfe63..7d4deca 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/storage_cell/service/StorageCellService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/storage_cell/service/StorageCellService.java @@ -46,6 +46,13 @@ public interface StorageCellService extends CommonService { */ StorageCell getById(String id); + + /** + * @param point_code + * @return + */ + String getParentCode(String point_code); + /** * 根据ID查询 * @@ -64,6 +71,7 @@ public interface StorageCellService extends CommonService { /** * 根据id修改 + * * @param resources * @return */ @@ -71,6 +79,7 @@ public interface StorageCellService extends CommonService { /** * 根据id删除 + * * @param id * @return */ @@ -78,6 +87,7 @@ public interface StorageCellService extends CommonService { /** * 根据id批量删除 + * * @param ids * @return */ @@ -155,4 +165,12 @@ public interface StorageCellService extends CommonService { * @throws IOException / */ void download(List dtos, HttpServletResponse response) throws IOException; + + /** + * 根据外部系统编码获取信息 + * + * @param parentCode + * @return + */ + StorageCellDto getByParentCode(String parentCode); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/storage_cell/service/impl/StorageCellServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/storage_cell/service/impl/StorageCellServiceImpl.java index d691f79..0fd1871 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/storage_cell/service/impl/StorageCellServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/storage_cell/service/impl/StorageCellServiceImpl.java @@ -72,6 +72,15 @@ public class StorageCellServiceImpl extends CommonServiceImpl().eq(StorageCell::getStorage_code, point_code)); + if (storageCell != null) { + return storageCell.getParent_storage_code(); + } + return null; + } + // @Override // // public StorageCellDto findById(String id) { @@ -190,7 +199,6 @@ public class StorageCellServiceImpl extends CommonServiceImpl allStorageCellFromCache = deviceServiceImpl.findAllStorageCellFromCache(); allStorageCellFromCache.forEach(storageCellDto -> { - if(storageCellDto.getStorage_id().equals(storageCell.getStorage_id())){ + if (storageCellDto.getStorage_id().equals(storageCell.getStorage_id())) { storageCellDto.setAddress(storageCell.getAddress()); } }); @@ -260,4 +268,15 @@ public class StorageCellServiceImpl extends CommonServiceImpl() + .eq(StorageCell::getParent_storage_code, parentCode)); + if (ObjectUtil.isNotEmpty(storageCell)) { + final StorageCellDto obj = ConvertUtil.convert(storageCell, StorageCellDto.class); + return obj; + } + return null; + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java index c1e76c9..f62b7a2 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java @@ -17,7 +17,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import javax.validation.constraints.*; -import java.math.BigDecimal; import java.io.Serializable; /** @@ -32,231 +31,148 @@ import java.io.Serializable; @EqualsAndHashCode(callSuper = false) @TableName("acs_task") public class Task extends CommonModel implements Serializable { + private static final long serialVersionUID = 1L; - + /** + * 主键ID + */ @TableId(type = IdType.ASSIGN_ID) private String task_id; - - + /** + * 外部系统表示 + */ private String ext_task_id; - - + /** + * 任务编号 + */ @NotBlank private String task_code; - - + /** + * 载具号 + */ private String vehicle_code; - - private String vehicle_code2; - - - - + /** + * 载具类型 + */ private String vehicle_type; - - + /** + * 任务类型 + */ @NotBlank private String task_type; - - + /** + * 任务状态 + */ @NotBlank private String task_status; - - - @NotBlank - private String compound_task; - - - private String compound_task_data; - - - private String request_again; - - - private String request_again_success; - - + /** + * 关联编号 + */ private String link_num; - - - private String is_send; - - - private String material; - - - @NotNull - private BigDecimal quantity; - - + /** + * 优先级 + */ private String priority; - - - @NotBlank - private String create_type; - - - @NotBlank - private String finish_type; - - - private String execute_code; - - - private String execute_message; - - + /** + * 起始点位编码 + */ private String start_point_code; - - + /** + * 起始设备编码 + */ private String start_device_code; - - - private String put_point_code; - - - private String put_device_code; - - - private String start_point_code2; - - - private String start_device_code2; - - + /** + * 外部系统起始点位编码 + */ + private String start_parent_code; + /** + * 目标点位编码 + */ private String next_point_code; - - + /** + * 目标设备编码 + */ private String next_device_code; - - - private String next_point_code2; - - - private String next_device_code2; - - + /** + * 外部系统目标点位编码 + */ + private String next_parent_code; + /** + * 起点排 + */ private String from_x; - - + /** + * 起点列 + */ private String from_y; - - + /** + * 起点层 + */ private String from_z; - - - private String put_x; - - - private String put_y; - - - private String put_z; - - + /** + * 终点排 + */ private String to_x; - - + /** + * 终点列 + */ private String to_y; - - + /** + * 终点层 + */ private String to_z; - - - private String from_x2; - - - private String from_y2; - - - private String from_z2; - - - private String to_x2; - - - private String to_y2; - - - private String to_z2; - - - private String route_plan_name; - - - private String route_plan_code; - - - private String is_needfeedback; - - - private String emptypallet_num; - - + /** + * AGV系统类型 + */ + private String agv_system_type; + /** + * 车号 + */ + private String car_no; + /** + * 重量 + */ + private String weight; + /** + * 是否取货暂停 + */ + private String is_get_pause; + /** + * 是否放货暂停 + */ + private String is_put_pause; + /** + * 任务完成是否等待 + */ + private String is_wait; + /** + * 备注 + */ private String remark; - - private String truss_type; - - private String empty_site; - - - @NotBlank - private String is_active; - - - @NotBlank - private String is_delete; - - + /** + * 创建人 + */ @NotBlank @TableField(fill = FieldFill.INSERT) private String create_by; - - + /** + * 创建时间 + */ @NotBlank @TableField(fill = FieldFill.INSERT) private String create_time; - - + /** + * 修改人 + */ @TableField(fill = FieldFill.INSERT_UPDATE) private String update_by; - - + /** + * 修改时间 + */ @TableField(fill = FieldFill.INSERT_UPDATE) private String update_time; - - private String weight; - - - private String agv_system_type; - - - private String storage_task_type; - - - private String temperature; - - - private String oven_time; - - - private String interaction_json; - - - - private Integer agv_action_type; - /** - * 任务类型 - * 9 子卷下线行架任务 - * 12 木箱入库行架任务 - * 13 装箱入库行架任务 - * 14 退货入库行架任务 - * 15 RGV输送任务 - */ - private String class_type; - public void copyFrom(Task source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/AgvSystemTypeEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/AgvSystemTypeEnum.java index abf9625..4fc0f73 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/AgvSystemTypeEnum.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/AgvSystemTypeEnum.java @@ -11,20 +11,17 @@ import lombok.Getter; @AllArgsConstructor public enum AgvSystemTypeEnum { /** - * 二期一楼AGV任务 - * 一期1楼叉车NDC系统 + * NDC系统 */ - One_NDC_System_Type("1", "1", "一期1楼叉车NDC系统"), + NDC_System_Type("1", "1", "NDC系统"), /** - * 二期二楼NDC系统 - * 一期2楼NDC系统 + * 仙工调度系统 */ - Two_NDC_System_Type("2", "2", "一期2楼NDC系统"), + XG_System_Type("2", "2", "仙工调度系统"), /** - * 二期一楼叉车任务 - * 仙工AGV系统 + * 海康调度系统 */ - XG_System_Type("3", "3", "仙工AGV系统"); + Hik_System_Type("3", "3", "HIK AGV系统"); /** * 索引 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/TaskTypeEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/TaskTypeEnum.java index 2178201..84d43ce 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/TaskTypeEnum.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/TaskTypeEnum.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Getter; + /** * @author 20220102CG\noblelift */ @@ -12,25 +13,10 @@ import lombok.Getter; public enum TaskTypeEnum { /** * 任务类型 - */ - Raw_Foil_AGV_Task("1", "1", "生箔AGV任务"), - Cutting_AGV_Task("2", "2", "分切AGV任务"), - Standard_AGV_Task("3", "3", "普通AGV任务"), - Forklift_AGV_Task("4", "4", "叉车AGV任务"), - Conveyor_Task("5", "5", "输送线任务"), - Truss_Task("6", "6", "行架任务"), - AGV_Task("7", "7", "立库任务"), - - Oven_Truss_Task("8", "8", "烘箱行架任务"), - - - Stacker_Task("11", "11", "堆垛机任务"), - Box_Storage("12", "12", "木箱入库行架任务"), - Box_Package("13", "13", "装箱入库行架任务"), - Return_Good("14", "14", "退货入库行架任务"), - Rgv_Conveyor_Task("15", "15", "RGV输送任务"), - Inner_Truss_Task("16", "16", "子卷下线行架任务"), - Mxddhj_Task("17", "17", "木箱堆叠行架任务"); + */ + CTU_TASK("1", "1", "CTU任务"), + AGV_TASK("2", "2", "AGV任务"), + OTHER_TASK("3", "3", "其他任务类型"); /** @@ -52,6 +38,7 @@ public enum TaskTypeEnum { /** * 构造方法 + * * @param index * @param code * @param name diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java index 8f5135b..a19080c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/rest/TaskController.java @@ -1,16 +1,11 @@ package org.nl.acs.task.rest; import cn.dev33.satoken.annotation.SaIgnore; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; -import org.nl.acs.task.enums.TaskTypeEnum; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.dto.TaskIdAndStatusDTO; -import org.nl.common.exception.BadRequestException; import org.nl.common.logging.annotation.Log; -import org.nl.config.language.LangProcess; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -54,48 +49,20 @@ public class TaskController { @PostMapping @Log("新增任务") - //@SaCheckPermission("task:add") public ResponseEntity create(@Validated @RequestBody TaskDto dto) throws Exception { //校验排列层为空 - checkYZ(dto); taskService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); } - private static void checkYZ(TaskDto dto) { - if (dto.getTask_type().equals(TaskTypeEnum.AGV_Task.getIndex())){ - if ((dto.getNext_point_code().startsWith("L")&&(StrUtil.isEmpty(dto.getTo_y()) || StrUtil.isEmpty(dto.getTo_z()))) || (dto.getStart_point_code().startsWith("L")&&(StrUtil.isEmpty(dto.getFrom_y()) || StrUtil.isEmpty(dto.getFrom_z())))){ - throw new BadRequestException(LangProcess.msg("point_null")); - } - - } - } - - @PostMapping(value = "/adds") - @Log("常规任务保存") - //@PreAuthorize("@el.check('task:add')") - public ResponseEntity ordinaryTaskCreate(@RequestBody JSONObject json) throws Exception { - taskService.ordinaryTaskCreate(json); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PostMapping(value = "/addes") - @Log("特殊任务保存") - public ResponseEntity specialTaskCreate(@RequestBody JSONObject json) throws Exception { - taskService.specialTaskCreate(json); - return new ResponseEntity<>(HttpStatus.CREATED); - } - @PutMapping @Log("修改任务") - //@PreAuthorize("@el.check('task:edit')") public ResponseEntity update(@Validated @RequestBody TaskDto dto) { taskService.update(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @Log("删除任务") - //@PreAuthorize("@el.check('task:del')") @DeleteMapping public ResponseEntity delete(@RequestBody String[] ids) throws Exception { taskService.deleteAll(ids); @@ -136,32 +103,5 @@ public class TaskController { taskService.download(taskService.queryAll(whereJson), response); } - @Log("一体机触发任务") - @PostMapping("/createTaskByClick") - //@PreAuthorize("@el.check('task:add')") - public ResponseEntity createTaskByClick(@RequestBody JSONObject json) { - taskService.createTaskByClick(json); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @SaIgnore - @Log("查询缓存所有任务") - @PostMapping(value = "/findAllTaskFromCache") - public ResponseEntity findAllTaskFromCache() { - return new ResponseEntity<>(taskService.findAllTaskFromCache(), HttpStatus.OK); - } - - @GetMapping("/downloadTaskTreeLogging") - @Log("导出任务树形记录") - public void downloadTaskTreeLogging(HttpServletResponse response,@RequestParam Map whereJson) throws IOException { - taskService.downloadTaskTreeLogging(taskService.getTaskAndInst(whereJson), response); - } - - - @GetMapping("/downloadTaskLogging") - @Log("导出任务树形记录") - public void downloadTaskLogging(HttpServletResponse response,@RequestParam Map whereJson) throws IOException { - taskService.downloadTaskLogging(taskService.getTaskList(whereJson), response); - } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java index 11d00b7..83b4098 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java @@ -22,8 +22,6 @@ import java.util.Set; */ public interface TaskService extends CommonService { - static final String CACHE_KEY = "task"; - /** * 查询数据分页 * @@ -49,13 +47,6 @@ public interface TaskService extends CommonService { */ Task getById(String id); - /** - * 根据设备号和任务状态查询 - * @param device_code - * @return - */ - List queryTaskByDeviceCodeAndStatus2(String device_code); - /** * 根据ID查询 * @@ -64,45 +55,6 @@ public interface TaskService extends CommonService { */ TaskDto findById(String id); - /** - * 新增数据 - * - * @param resources - * @return - */ - int insert(TaskDto resources); - - /** - * 根据id修改数据 - * - * @param resources - * @return - */ - int updateById(TaskDto resources); - - /** - * 根据id删除数据 - * - * @param id - * @return - */ - int removeById(String id); - - /** - * 批量删除数据 - * - * @param ids - * @return - */ - int removeByIds(Set ids); - - /** - * 导出数据 - * @param all 待导出的数据 - * @param response / - * @throws IOException / - */ - // void download(List all, HttpServletResponse response) throws IOException; /** * 查询数据分页 @@ -113,15 +65,6 @@ public interface TaskService extends CommonService { */ Map queryAll(Map whereJson, Pageable page); - /** - * 在缓存中查询所有任务列表 - * - * @param whereJson 条件 - * @param page 分页参数 - * @return - */ - Map queryAllByCache(Map whereJson, Pageable page); - /** * 数据同步 */ @@ -160,41 +103,6 @@ public interface TaskService extends CommonService { */ List queryAll(Map whereJson); - /** - * 根据ID查询 - * - * @param task_id ID - * @return AcsTask - */ -// TaskDto findById(String task_id); - - /** - * 查询所有未完成任务 - * - * @param whereJson 条件参数 - * @return List - */ - List queryAllUnfinished(Map whereJson); - - /** - * 根据设备号查询未完成的任务 - */ - List queryUnfinishTaskByDeviceCode(String device_code); - - /** - * 根据状态查询 - * - * @param task_status task_status - * @return AcsTask - */ - List queryByStauts(String task_status); - - /** - * 根绝状态查询缓存 - * @param task_status - * @return - */ - List findByTaskStatus(String task_status); /** * 根据编码查询 @@ -204,69 +112,6 @@ public interface TaskService extends CommonService { */ TaskDto findByCode(String code); - TaskDto findByBarcodeFromCache(String barcode); - - /** - * 根据设备号查询未执行的任务 - * - * @param device_code - * @return - */ - List queryTaskByDeviceCode(String device_code); - - /** - * 根据设备号查询未执行的任务 - * - * @param start_device_code - * @return List - */ - List queryTaskByStartDeviceCode(String start_device_code); - - /** - * 根据设备号查询未执行的任务 - * - * @param back_start_device_code - * @return List - */ - List queryTaskByBackDeviceCode(String back_start_device_code); - - /** - * 根据设备号和任务状态查询 - * - * @param device_code - * @return List - */ - List queryTaskByDeviceCodeAndStatus(String device_code); - - - /** - * 根据设备号和任务状态查询 - * - * @param device_code - * @return List - */ - List queryTaskByDeviceCodeAndStatus3(String device_code); - - - - - /** - * 根据前工位取货点查找执行中的任务 - * - * @param head_start_device_code - * @return List - */ - List queryTaskByStartAndIntStatus(String head_start_device_code); - - /** - * 根据后工位取货点查找执行中的任务 - * - * @param head_next_device_code - * @return List - */ - List queryTaskByNextAndIntStatus(String head_next_device_code); - - /** * 创建 * @@ -275,21 +120,6 @@ public interface TaskService extends CommonService { */ void create(TaskDto dto) throws Exception; - /** - * 常规任务保存 - * - * @param json - * @throws Exception - */ - void ordinaryTaskCreate(JSONObject json) throws Exception; - - /** - * 特殊任务保存 - * - * @param json - * @throws Exception - */ - void specialTaskCreate(JSONObject json) throws Exception; /** * 编辑 @@ -322,7 +152,6 @@ public interface TaskService extends CommonService { void cancel(String ids) throws Exception; - /** * 取消任务和指令 * @@ -332,15 +161,6 @@ public interface TaskService extends CommonService { void cancelAndInst(String ids) throws Exception; - /** - * 强制取消任务和指令 - * - * @param ids - * @throws Exception - */ - void forceCancelAndInst(String ids) throws Exception; - - /** * 手动创建指令 * @@ -361,14 +181,6 @@ public interface TaskService extends CommonService { void download(List dtos, HttpServletResponse response) throws IOException; - /** - * 根据触摸屏点击保存创建任务 - * - * @param json - */ - void createTaskByClick(JSONObject json); - - /** * 从缓存中删除任务 * @@ -384,13 +196,6 @@ public interface TaskService extends CommonService { */ void addTaskToCache(TaskDto taskDto); - /** - * 根据容器编号查询任务 - * - * @param container_code - * @return - */ - TaskDto findByContainer(String container_code); /** * 根据任务编号查询任务 @@ -401,89 +206,6 @@ public interface TaskService extends CommonService { TaskDto findByCodeFromCache(String task_code); - /** - * 根据目的地设备编号查询当前是否有设备 - * - * @param device_code - * @return - */ - TaskDto findByNextCode(String device_code); - - - /** - * 根据起点设备编号查询当前是否有设备 - * - * @param device_code - * @return - */ - TaskDto findByStartCode(String device_code); - - - /** - * 根据起点设备编号查询当前是否有就绪任务 - * - * @param device_code - * @return - */ - TaskDto findByStartCodeAndReady(String device_code); - - - /** - * 查找符合条件的堆叠行架任务 - * @return - */ - List findByTrappedManipulatorReady(); - - - /** - * 根据起载具号查询就绪任务 - * - * @param device_code - * @return - */ - TaskDto findByVehicleCodeCodeAndReady(String device_code); - - /** - * 根据木箱号查询执行中任务 - * - * @param device_code - * @return - */ - TaskDto findByVehicleCode2AndExcute(String device_code); - - /** - * 根据起点设备编号查询当前是否有执行中任务 - * - * @param start_code - * @param next_code - * @return - */ - TaskDto findByCodeAndExcute(String start_code,String next_code); - - - /** - * 查询起点执行的任务 - * @param start_code - * @return - */ - TaskDto findByStarCodeAndExcute(String start_code); - - /** - * 根据终点设备编号查询当前是否有就绪任务 - * - * @param device_code - * @return - */ - TaskDto findByEndCodeAndReady(String device_code); - - - /** - * 查询内存任务 - * - * @return - */ - List findAllTaskFromCache(); - /** * 格式化任务 * @@ -499,48 +221,6 @@ public interface TaskService extends CommonService { */ void updateByCodeFromCache(TaskDto dto); - /** - * 平均分配查询设备 - * - * @param device_code - * @param task_nextdevice_code - * @return - */ - String queryAssignedByDevice(String device_code, String task_nextdevice_code); - - - /** - * 查询相同起点任务的数量 - * - * @param code - * @return - */ - Integer querySameOriginTask(String code); - - /** - * 查询相同终点任务的数量 - * - * @param code - * @return - */ - Integer querySameDestinationTask(String code); - - /** - * 查询相同起终任务的数量 - * - * @param - * @return - */ - Integer querySameDeviceReadyTask(String start_device,String next_device,String status); - - - /** - * 条件查询任务和指令 - * - * @param whereJson - * @return - */ - List getTaskAndInst(Map whereJson); /** * 导出任务树形记录 @@ -561,34 +241,22 @@ public interface TaskService extends CommonService { void downloadTaskLogging(List all, HttpServletResponse response) throws IOException; /** - * 查询任务 + * 根据Agv系统类型查询任务信息 * - * @param whereJson + * @param agvSystemType * @return */ - List getTaskList(Map whereJson); + List findReadyByAgvSystemType(String agvSystemType); - List findByStartCodeAndBusy(String deviceCode); /** - * 任务平均分配原则 根据任务起点和终点去找对应的指令终点 - * 除了包含之前的分配原则外 - * 新增了立库堆叠机双向点位出入库点位分配的逻辑 - * 即任务信息A->C,则拆分成指令信息为A->B,B->C + * 根据载具号查询任务信息 * - * @param device_code A - * @param task_nextDeice_code C - * @return 指令终点 B + * @param vehicle_code + * @return */ - String queryAssignedByDeviceCode(String device_code, String task_nextDeice_code); + TaskDto findByVehicleCode(String vehicle_code); - /** - * 根据编号查询 - * - * @param task_code - * @return AcsTask - */ - TaskDto findByTaskCode(String task_code); - List queryAllHJReadyTask(); + void cancelNoSendWms(String task_id); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index 8a77885..d58dbeb 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -1,8 +1,6 @@ package org.nl.acs.task.service.dto; -import com.alibaba.fastjson.JSONObject; import lombok.Data; -import org.nl.acs.common.base.CommonFinalParam; import java.io.Serializable; @@ -15,359 +13,132 @@ import java.io.Serializable; public class TaskDto implements Serializable { /** - * 任务标识 + * 主键ID */ private String task_id; - /** - * 任务外部标识 + * 外部系统表示 */ private String ext_task_id; - /** - * 任务号 + * 任务编号 */ private String task_code; - - /** - * 载具号 - */ - private String vehicle_code; - /** * 载具类型 */ private String vehicle_type; - + /** + * 载具号 + */ + private String vehicle_code; /** * 任务类型 */ - private String task_type = CommonFinalParam.ONE; - - /** - * 立库任务类型 - */ - private String storage_task_type; - + private String task_type; /** * 任务状态 */ private String task_status; - - /** - * 车号 - */ - private String carno; - - /** - * 复合任务 - */ - private String compound_task; - - /** - * 复合任务数据 - */ - private String compound_task_data; - /** - * 再次请求 - */ - private String request_again = "0"; - - private String request_again_success; /** * 关联编号 */ private String link_num; /** - * 是否立刻下发 - */ - private String is_send; - private String material; - private String quantity; - - - /** - * 任务优先级 + * 优先级 */ private String priority; - - /** - * 创建类型 - */ - private String create_type; - - /** - * 完成类型 - */ - private String finish_type; - - /** - * 执行描述编码 - */ - private String execute_code; - - /** - * 执行描述信息 - */ - private String execute_message; - - /** * 起始点位编码 */ private String start_point_code; - /** * 起始设备编码 */ private String start_device_code; - /** - * 放货点位编码 + * 外部系统起始点位编码 */ - private String put_point_code; - - /** - * 放货设备编码 - */ - private String put_device_code; - - /** - * agv取货高度 - */ - private String start_height = "0"; - - - /** - * agv放货高度 - */ - private String next_height = "0"; - - /** - * 起始点位编码 - */ - private String start_point_code2; - - /** - * 木箱号 - */ - private String vehicle_code2; - - /** - * 起始设备编码 - */ - private String start_device_code2; - + private String start_parent_code; /** * 目标点位编码 */ private String next_point_code; - /** * 目标设备编码 */ private String next_device_code; - /** - * 目标点位编码 + * 外部系统目标点位编码 */ - private String next_point_code2; - + private String next_parent_code; /** - * 目标设备编码 - */ - private String next_device_code2; - - - /** - * 排 + * 起点排 */ private String from_x; - /** - * 列 + * 起点列 */ private String from_y; - /** - * 层 + * 起点层 */ private String from_z; - /** - * 排 - */ - private String put_x; - - /** - * 列 - */ - private String put_y; - - /** - * 层 - */ - private String put_z; - - - /** - * 排 + * 终点排 */ private String to_x; - /** - * 列 + * 终点列 */ private String to_y; - /** - * 层 + * 终点层 */ private String to_z; - /** - * 路由方案名称 + * AGV系统类型 */ - private String route_plan_name; - + private String agv_system_type; /** - * 路由方案编码 + * 车号 */ - private String route_plan_code = "normal"; - + private String car_no; /** - * 是否需要反馈上位系统 + * 重量 */ - private String is_needfeedback; - + private String weight; + /** + * 是否取货暂停 + */ + private String is_get_pause; + /** + * 是否放货暂停 + */ + private String is_put_pause; + /** + * 任务完成是否等待 + */ + private String is_wait; /** * 备注 */ private String remark; - /** - * 是否启用 - */ - private String is_active; - - /** - * 是否删除 - */ - private String is_delete; - - /** - * 创建者 + * 创建人 */ private String create_by; - /** * 创建时间 */ private String create_time; - /** - * 修改者 + * 修改人 */ private String update_by; - /** * 修改时间 */ private String update_time; - - /** - * 物料重量 - */ - private String weight; - - - /** - * 空盘数量 =1 则从最上方取 - */ - private String emptypallet_num = "0"; - - /** - * 起点父级编码 - */ - private String start_parent_code; - - /** - * 终点父级编码 - */ - private String next_parent_code; - - - /** - * AGV系统类型 - */ - private String agv_system_type; - - - /** - * 烘箱时间(s) - */ - private String oven_time; - - /** - * 烘箱温度 - */ - private String temperature; - /** - * 交互字段 - */ - private String interaction_json; - - private JSONObject interactionJson; - - /** - * 行架任务类型 - */ - private String truss_type; - - /** - * 空轴位 - */ - private String empty_site; - - /** - * 空轴位 - */ - private String empty_shaft_site; - - /** - * 气涨轴尺寸 - */ - private String size; - - /** - * 是否套管 0:不套管 1:套管 - */ - private String is_bushing; - - /** - * 扩展属性 - */ - String params2; - - /** - * 是否拔轴 0/1 - */ - private String is_pulling; - - - /** - * agv二次分配类型(1、普通任务 2、取货二次分配 3、防货二次分配 4、取放货二次分配) - */ - private Integer agv_action_type; - - /** - * 任务类型 - * 9 子卷下线行架任务 - * 12 木箱入库行架任务 - * 13 装箱入库行架任务 - * 14 退货入库行架任务 - * 15 RGV输送任务 - */ - private String class_type; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskFeedbackServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskFeedbackServiceImpl.java index 3fb65c4..9c42193 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskFeedbackServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskFeedbackServiceImpl.java @@ -266,34 +266,34 @@ public class TaskFeedbackServiceImpl extends CommonServiceImpl impleme @Autowired private TaskMapper taskMapper; @Autowired - private RoutePlanMapper routePlanMapper; - @Autowired private DeviceAppService deviceAppService; @Autowired private AcsToWmsService acstowmsService; @Autowired - private TaskFeedbackService taskFeedbackService; - @Autowired private ISysParamService paramService; - @Lazy - @Autowired - private XianGongAgvService agvService; - @Autowired - private RouteLineService routeLineService; - @Autowired - private DeviceAssignedService deviceAssignedService; @Autowired private InstructionService instructionService; + @Autowired + private StorageCellService storageCellService; /** * 缓存 @@ -116,17 +93,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme */ private CopyOnWriteArrayList tasks = new CopyOnWriteArrayList<>(); - /** - * 烘箱任务类型 - */ - private static final String TASK_TYPE = "8"; - - - /** - * 拔前行架任务类型 - */ - private static final String BQHJ_TYPE = "6"; - @Override public PageInfo queryAll(TaskQueryParam query, Pageable pageable) { @@ -145,65 +111,11 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return taskMapper.selectById(id); } - @Override - public List queryTaskByDeviceCodeAndStatus2(String device_code) { - List list = new ArrayList<>(); - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (task.getStart_device_code().equals(device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) { - Instruction instruction = instructionService.findByTaskcodeAndStatus(task.getTask_code()); - if (ObjectUtil.isNotEmpty(instruction)) { - list.add(task); - } - } else { - if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Truss_Task.getIndex()) && StrUtil.isNotEmpty(task.getPut_device_code())) { - Instruction instruction = instructionService.findByDeviceCodeFromCache(task.getNext_device_code()); - if (ObjectUtil.isNotEmpty(instruction)) { - if (StrUtil.equals(instruction.getStart_device_code(), device_code)) { - list.add(task); - } - } - } - } - } - return list; - } - - @Override public TaskDto findById(String id) { return ConvertUtil.convert(getById(id), TaskDto.class); } - @Override - @Transactional(rollbackFor = Exception.class) - public int insert(TaskDto resources) { - return taskMapper.insert(ConvertUtil.convert(resources, Task.class)); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int updateById(TaskDto resources) { - return taskMapper.updateById(ConvertUtil.convert(resources, Task.class)); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int removeByIds(Set ids) { - return taskMapper.deleteBatchIds(ids); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public int removeById(String id) { - Set set = new HashSet<>(1); - set.add(id); - return this.removeByIds(set); - } - - /** * 刷新内存信息 * @@ -224,7 +136,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme public List queryAll() { List taskList = new LambdaQueryChainWrapper<>(taskMapper) .lt(Task::getTask_status, TaskStatusEnum.FINISHED.getIndex()) - .eq(Task::getIs_delete, "0") .orderByDesc(Task::getCreate_time) .list(); return ConvertUtil.convertList(taskList, TaskDto.class); @@ -234,7 +145,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme public List queryAllByStatus(String task_status) { List taskList = new LambdaQueryChainWrapper<>(taskMapper) .eq(Task::getTask_status, task_status) - .eq(Task::getIs_delete, "0") .list(); return ConvertUtil.convertList(taskList, TaskDto.class); } @@ -244,7 +154,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String task_code = (String) whereJson.get("task_code"); String vehicle_code = (String) whereJson.get("vehicle_code"); - String vehicle_code2 = (String) whereJson.get("vehicle_code2"); String material_type = (String) whereJson.get("material_type"); String status = (String) whereJson.get("status"); String point_code = (String) whereJson.get("point_code"); @@ -259,12 +168,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme if (!StrUtil.isEmpty(vehicle_code)) { wrapper.eq(Task::getVehicle_code, vehicle_code); } - if (!StrUtil.isEmpty(vehicle_code2)) { - wrapper.like(Task::getVehicle_code2, vehicle_code2); - } - if (!StrUtil.isEmpty(material_type)) { - wrapper.eq(Task::getMaterial, material_type); - } + if (!StrUtil.isEmpty(status)) { wrapper.eq(Task::getTask_status, status); } @@ -288,75 +192,10 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return json; } - @Override - public Map queryAllByCache(Map whereJson, Pageable page) { - String task_code = (String) whereJson.get("task_code"); - String vehicle_code = (String) whereJson.get("vehicle_code"); - String vehicle_code2 = (String) whereJson.get("vehicle_code2"); - String material_type = (String) whereJson.get("material_type"); - String status = (String) whereJson.get("status"); - String point_code = (String) whereJson.get("point_code"); - String task_type = (String) whereJson.get("task_type"); - String is_over = (String) whereJson.get("is_over"); - Integer currentPageNumber = page.getPageNumber() + 1; - Integer pageMaxSize = page.getPageSize(); - List taskList = - Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(t -> { - if (StrUtil.isNotEmpty(task_code)) { - return t.getTask_code().contains(task_code); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(vehicle_code)) { - return t.getVehicle_code().contains(vehicle_code); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(material_type)) { - return t.getMaterial().contains(material_type); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(status)) { - return t.getTask_status().contains(status); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(point_code)) { - return t.getStart_point_code().contains(point_code) || t.getNext_point_code().equals(point_code) || t.getPut_point_code().equals(point_code); - } - return true; - }) - .filter(t -> { - if (StrUtil.isNotEmpty(task_type)) { - return t.getTask_type().contains(task_type); - } - return true; - }) - .sorted((task1, task2) -> DateUtil.compare(DateUtil.parseDate(task1.getCreate_time()), DateUtil.parse(task2.getCreate_time()))) - .collect(Collectors.toList()); - List skipList = taskList.stream().skip((currentPageNumber - 1) * pageMaxSize) - .limit(pageMaxSize) - .collect(Collectors.toList()); - JSONObject jo = new JSONObject(); - jo.put("content", skipList); - jo.put("totalElements", taskList.size()); - return jo; - } - @Override public Map getAll(Map whereJson, Pageable page) { String task_code = (String) whereJson.get("task_code"); String vehicle_code = (String) whereJson.get("vehicle_code"); - String vehicle_code2 = (String) whereJson.get("vehicle_code2"); String material_type = (String) whereJson.get("material_type"); String status = (String) whereJson.get("status"); String taskType = (String) whereJson.get("task_type"); @@ -375,12 +214,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme if (!StrUtil.isEmpty(vehicle_code)) { wrapper.like(Task::getVehicle_code, vehicle_code); } - if (!StrUtil.isEmpty(vehicle_code2)) { - wrapper.like(Task::getVehicle_code2, vehicle_code2); - } - if (!StrUtil.isEmpty(material_type)) { - wrapper.eq(Task::getMaterial, material_type); - } if (!StrUtil.isEmpty(status)) { wrapper.eq(Task::getTask_status, status); } @@ -415,28 +248,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } - @Override - public List queryAllUnfinished(Map whereJson) { - List taskList = new LambdaQueryChainWrapper<>(taskMapper) - .lt(Task::getTask_status, TaskStatusEnum.FINISHED.getIndex()) - .list(); - return ConvertUtil.convertList(taskList, TaskDto.class); - } - - @Override - public List queryUnfinishTaskByDeviceCode(String device_code) { - List list = new ArrayList<>(); - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (task.getStart_point_code().equals(device_code) - && (StrUtil.equals(task.getTask_status(), "0"))) { - list.add(task); - } - } - return list; - } - @Override public TaskDto findByCode(String code) { Task task = new LambdaQueryChainWrapper<>(taskMapper) @@ -445,171 +256,10 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return ConvertUtil.convert(task, TaskDto.class); } - @Override - public TaskDto findByBarcodeFromCache(String barcode) { - Task task = new LambdaQueryChainWrapper<>(taskMapper) - .eq(Task::getVehicle_code, barcode) - .eq(Task::getTask_status, TaskStatusEnum.READY.getIndex()) - .one(); - return ConvertUtil.convert(task, TaskDto.class); - } - - @Override - public List queryTaskByDeviceCode(String device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(taskDto -> taskDto.getStart_device_code().equals(device_code) - && StrUtil.equals(taskDto.getTask_status(), TaskStatusEnum.READY.getIndex())) - .collect(Collectors.toList()); - } - - @Override - public List queryTaskByStartDeviceCode(String start_device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getTask_type(), "6") - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex()) - && (task.getStart_device_code().equals(start_device_code) - || task.getStart_device_code2().equals(start_device_code))) - .collect(Collectors.toList()); - } - - @Override - public List queryTaskByBackDeviceCode(String back_start_device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getTask_type(), "6") - && task.getStart_device_code().equals(back_start_device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex())) - .collect(Collectors.toList()); - } - - @Override - public List queryTaskByDeviceCodeAndStatus(String device_code) { - - List collect = Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> task.getStart_device_code().equals(device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) - .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) - .collect(Collectors.toList()); - if (CollUtil.isEmpty(collect)) { - tasks.forEach( - task -> { - if (TASK_TYPE.equals(task.getTask_type()) && StrUtil.isNotEmpty(task.getPut_device_code())) { - Instruction instruction = instructionService.findByDeviceCodeFromCache(task.getNext_device_code()); - if (ObjectUtil.isNotEmpty(instruction)) { - if (StrUtil.equals(instruction.getStart_device_code(), device_code)) { - collect.add(task); - } - } - } - } - ); - } - return collect; - - } - - - @Override - public List queryTaskByDeviceCodeAndStatus3(String device_code) { - - List collect = Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> task.getStart_device_code().equals(device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) - .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) - .collect(Collectors.toList()); - if (CollUtil.isEmpty(collect)) { - tasks.forEach( - task -> { - if (BQHJ_TYPE.equals(task.getTask_type()) && StrUtil.isNotEmpty(task.getPut_device_code())) { - Instruction instruction = instructionService.findByDeviceCodeFromCache(task.getNext_device_code()); - if (ObjectUtil.isNotEmpty(instruction)) { - if (StrUtil.equals(instruction.getStart_device_code(), device_code)) { - collect.add(task); - } - } - } - } - ); - } - return collect; - - } - - @Override - public List queryTaskByStartAndIntStatus(String head_start_device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getTask_type(), "6") - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex()) - && (task.getStart_device_code().equals(head_start_device_code) - || task.getStart_device_code2().equals(head_start_device_code))) - .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) - .collect(Collectors.toList()); - } - - @Override - public List queryTaskByNextAndIntStatus(String back_start_device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getTask_type(), "6") - && task.getStart_device_code().equals(back_start_device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) - .filter(task -> instructionService.findByTaskcodeAndStatus(task.getTask_code()) != null) - .collect(Collectors.toList()); - } - - - @Override - public List queryByStauts(String status) { - List taskList = new LambdaQueryChainWrapper<>(taskMapper) - .eq(Task::getTask_status, status) - .list(); - return ConvertUtil.convertList(taskList, TaskDto.class); - } - - - @Override - public List findByTaskStatus(String status) { - List taskDtoList = new ArrayList<>(); - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (StrUtil.equals(task.getTask_status(), status)) { - taskDtoList.add(task); - } - } - return taskDtoList; - } - - @Override public void create(TaskDto dto) throws Exception { dto = foramte(dto); - dto.setInteraction_json(ObjectUtil.isNotEmpty(dto.getInteractionJson()) ? dto.getInteractionJson().toJSONString() : ""); - if (!StrUtil.isEmpty(dto.getVehicle_code())) { - TaskDto vehicle_dto = this.findByContainer(dto.getVehicle_code()); - if (vehicle_dto != null) { - throw new BadRequestException(LangProcess.msg("task_checkExist", dto.getVehicle_code())); - } - } + String currentUsername = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); String task_uuid = dto.getTask_id(); @@ -621,234 +271,38 @@ public class TaskServiceImpl extends CommonServiceImpl impleme task_code = CodeUtil.getNewCode("TASK_NO"); task_code = CommonFinalParam.HYPHEN_ + task_code; } - String start_point_code; + String start_point_code = dto.getStart_point_code(); String next_point_code = dto.getNext_point_code(); String start_device_code = dto.getStart_device_code(); String next_device_code = dto.getNext_device_code(); - String route_plan_code = dto.getRoute_plan_code(); dto.setCreate_by(StrUtil.isNotEmpty(currentUsername) ? currentUsername : "LMS"); dto.setUpdate_by(currentUsername); dto.setUpdate_time(now); dto.setCreate_time(now); dto.setTask_code(task_code); - dto.setRoute_plan_code(route_plan_code); dto.setTask_status(TaskStatusEnum.READY.getIndex()); - dto.setStart_device_code2(dto.getStart_point_code2()); - dto.setNext_device_code2(dto.getNext_point_code2()); + dto.setStart_parent_code(storageCellService.getParentCode(start_point_code)); + dto.setNext_parent_code(storageCellService.getParentCode(next_point_code)); if (StrUtil.isEmpty(dto.getPriority())) { dto.setPriority(CommonFinalParam.ONE); } - String plan_code = dto.getRoute_plan_code(); - // 判断起点终点设备类型 - String startDeviceType = deviceAppService.findDeviceTypeByCode(dto.getStart_device_code()); - String nextDeviceType = deviceAppService.findDeviceTypeByCode(dto.getNext_device_code()); - // 同一排转库任务不做路由校验 - if (!(StrUtil.equals(DeviceType.storage.toString(), startDeviceType) && StrUtil.equals(DeviceType.storage.toString(), nextDeviceType) && StrUtil.equals(start_device_code, next_device_code))) { - if (routeLineService - .getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code) - .size() - == 0) { - throw new BadRequestException(dto.getStart_point_code() + "->" + dto.getNext_point_code() + " " + LangProcess.msg("route_isNull")); - } - } - String createTaskCheck = paramService.findByCode(AcsConfig.CREATETASKCHECK).getValue(); - DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device nextdevice = appService.findDeviceByCode(next_device_code); if (nextdevice == null) { - //TODO 国际化处理 throw new BadRequestException("终点设备未配置"); } Device startdevice = appService.findDeviceByCode(start_device_code); if (startdevice == null) { - //TODO 国际化处理 throw new BadRequestException("起点设备未配置"); } - dto.setMaterial(startdevice.getMaterial_type()); - if (StrUtil.equals(DeviceType.storage.toString(), startDeviceType)) { - start_point_code = start_device_code + CommonFinalParam.HYPHEN_ + dto.getFrom_y() + CommonFinalParam.HYPHEN_ + dto.getFrom_z(); - dto.setStart_point_code(start_point_code); - } - if (StrUtil.equals(DeviceType.storage.toString(), nextDeviceType)) { - next_point_code = next_device_code + CommonFinalParam.HYPHEN_ + dto.getTo_y() + CommonFinalParam.HYPHEN_ + dto.getTo_z(); - dto.setNext_point_code(next_point_code); - } - if (StrUtil.equals(createTaskCheck, CommonFinalParam.ONE)) { - // 判断起点为输送设备 - if (StrUtil.equals(DeviceType.conveyor.toString(), startDeviceType)) { - - } - - if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { - } - } else { - // 判断起点为输送设备 - if (StrUtil.equals(DeviceType.conveyor.toString(), startDeviceType)) { - } - - if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { - // if (nextdevice.getDeviceDriver() instanceof - // XgAgvCarDeviceDriver) { - // standardOrdinarySiteDeviceDriver = (XgAgvCarDeviceDriver) - // nextdevice.getDeviceDriver(); - // if (nextdevice.getHas_goods() != 0) { - // throw new Exception("任务终点需满足无货!"); - // } - // } - - JSONObject jo = new JSONObject(); - JSONObject jo2 = new JSONObject(); - if (!StrUtil.isEmpty(dto.getMaterial())) { - if (!StrUtil.equals(dto.getMaterial(), CommonFinalParam.ONE)) { - jo.put("hasGoodStatus", "2"); - jo.put("material_type", dto.getMaterial()); - } else { - jo.put("hasGoodStatus", CommonFinalParam.ONE); - jo.put("material_type", CommonFinalParam.ONE); - } - - } else { - jo.put("hasGoodStatus", CommonFinalParam.ONE); - jo.put("material_type", CommonFinalParam.ONE); - } - jo.put("device_code", dto.getStart_device_code()); - jo.put("quantity", dto.getQuantity()); - jo.put("remark", dto.getRemark()); - jo.put("batch", startdevice.getBatch()); - jo.put("islock", "true"); - deviceService.changeDeviceStatus(jo); - Device deviceByCode = deviceAppService.findDeviceByCode(dto.getNext_device_code()); - jo2.put("device_code", dto.getNext_device_code()); - jo2.put("hasGoodStatus", deviceByCode.getHas_goods()); - jo2.put("quantity", deviceByCode.getQuantity()); - jo2.put("remark", deviceByCode.getRemark()); - jo2.put("material_type", deviceByCode.getMaterial_type()); - jo2.put("batch", deviceByCode.getBatch()); - jo2.put("islock", "true"); - deviceService.changeDeviceStatus(jo2); - } - } Task entity = ConvertUtil.convert(dto, Task.class); taskMapper.insert(entity); tasks.add(dto); } - /** - * 常规任务保存 - * - * @param / - * @throws Exception - */ - @Override - public void ordinaryTaskCreate(JSONObject json) throws Exception { - JSONArray array = json.getJSONArray("data"); - - if (array.size() == 0) { - throw new BadRequestException(LangProcess.msg("starting_point_isNull")); - } - for (int i = 0; i < array.size(); i++) { - JSONObject arrjo = array.getJSONObject(i); - String material_type = arrjo.getString("material_type"); - String quantity = arrjo.getString("quantity"); - String remark = arrjo.getString("remark"); - TaskDto dto = new TaskDto(); - Map whereJson = (Map) array.get(i); - - String device_code = MapUtil.getStr(whereJson, "device_code"); - dto.setRoute_plan_code("one"); - String next_device_code = ""; - String plan_uuid = - new LambdaQueryChainWrapper<>(routePlanMapper) - .eq(RoutePlan::getPlan_code, dto.getRoute_plan_code()) - .one().getPlan_uuid(); - JSONArray ja = routeLineService.queryNextLine(device_code, plan_uuid); - for (int j = 0; j < ja.size(); j++) { - JSONObject jo = (JSONObject) ja.get(j); - next_device_code = jo.get("next_device_code").toString(); - } - if (ObjectUtil.isNotEmpty(this.findByStartCode(device_code))) { - throw new BadRequestException(LangProcess.msg("task_checkExist", device_code)); - } - if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) { - throw new RuntimeException(LangProcess.msg("material_information")); - } - dto.setStart_device_code(device_code); - dto.setStart_point_code(device_code); - dto.setNext_device_code(next_device_code); - dto.setNext_point_code(next_device_code); - dto.setRemark(remark); - dto.setMaterial(material_type); - create(dto); - } - } - - /** - * 特殊任务保存 - * - * @param / - * @throws Exception - */ - @Override - public void specialTaskCreate(JSONObject json) throws Exception { - - JSONArray array = json.getJSONArray("data1"); - JSONArray array2 = json.getJSONArray("data2"); - JSONArray array3 = json.getJSONArray("data3"); - if (array.size() != 0 && array3.size() != 0) { - throw new RuntimeException(LangProcess.msg("an_endpoint")); - } - - for (int i = 0; i < array2.size(); i++) { - JSONObject arrjo = array2.getJSONObject(i); - String material_type = arrjo.getString("material_type"); - String quantity = arrjo.getString("quantity"); - String remark = arrjo.getString("remark"); - TaskDto dto = new TaskDto(); - Map whereJson; - Map whereJson2; - Map whereJson3; - if (array.size() != 0) { - whereJson = (Map) array.get(i); - } else { - whereJson = null; - } - if (array2.size() != 0) { - whereJson2 = (Map) array2.get(i); - } else { - whereJson2 = null; - } - if (array3.size() != 0) { - whereJson3 = (Map) array3.get(i); - } else { - whereJson3 = null; - } - String start_device_code = MapUtil.getStr(whereJson2, "device_code"); - String next_device_code = ""; - if (ObjectUtil.isEmpty(whereJson)) { - next_device_code = MapUtil.getStr(whereJson3, "device_code"); - } else { - next_device_code = MapUtil.getStr(whereJson, "device_code"); - } - - if (ObjectUtil.isNotEmpty(this.findByStartCode(start_device_code)) - || ObjectUtil.isNotEmpty(this.findByNextCode(next_device_code))) { - throw new BadRequestException(LangProcess.msg("task_checkExist", start_device_code + " or " + next_device_code)); - } - if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) { - throw new BadRequestException(LangProcess.msg("error_checkNull", "quantity or material_type")); - } - dto.setRoute_plan_code("two"); - dto.setStart_device_code(start_device_code); - dto.setStart_point_code(start_device_code); - dto.setNext_device_code(next_device_code); - dto.setNext_point_code(next_device_code); - dto.setRemark(remark); - dto.setMaterial(material_type); - create(dto); - } - } @Override @Transactional(rollbackFor = Exception.class) @@ -910,10 +364,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme if (!TaskStatusEnum.FINISHED.getIndex().equals(updateTask.getTask_status())) { //反馈上位系统任务状态 this.feedWmsTaskStatus(entity); - //关闭仙工运单序列 - if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode()) || StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { - this.markComplete(entity); - } } } @@ -942,42 +392,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme this.removeByCodeFromCache(entity.getTask_code()); //反馈上位系统任务状态 this.feedWmsTaskStatus(entity); - //关闭仙工运单序列 - if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode()) || StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { - this.markComplete(entity); - } - } - @Override - public void forceCancelAndInst(String id) throws Exception { - TaskDto entity = this.findById(id); - if (entity == null) { - throw new BadRequestException(LangProcess.msg("error_sysAuth")); - } - - InstructionDto instdto = instructionService.findByTaskid(id, "instruction_status <2 "); - if (instdto != null) { - instructionService.cancel(instdto.getInstruction_id()); - } - - String currentUsername = SecurityUtils.getCurrentNickName(); - String now = DateUtil.now(); - entity.setUpdate_time(now); - entity.setUpdate_by(currentUsername); - entity.setTask_status(TaskStatusEnum.CANCEL.getIndex()); - entity.setRemark("堆垛机空出"); - - Task task = ConvertUtil.convert(entity, Task.class); - taskMapper.updateById(task); - - //移除任务缓存信息 - this.removeByCodeFromCache(entity.getTask_code()); - //反馈上位系统任务状态 -// this.feedWmsTaskStatus(entity); - //关闭仙工运单序列 - if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode()) || StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { - this.markComplete(entity); - } } @Override @@ -1006,10 +421,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme this.removeByCodeFromCache(entity.getTask_code()); //反馈上位系统任务状态 this.feedWmsTaskStatus(entity); - //关闭仙工运单序列 - if (StrUtil.equals(task.getTask_type(), TaskTypeEnum.Standard_AGV_Task.getCode()) && (StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.One_NDC_System_Type.getCode()) || StrUtil.equals(task.getAgv_system_type(), AgvSystemTypeEnum.XG_System_Type.getCode()))) { - this.markComplete(entity); - } } @@ -1032,105 +443,72 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String priority = acsTask.getPriority(); String start_point_code = acsTask.getStart_point_code(); String start_device_code = acsTask.getStart_device_code(); - String route_plan_code = acsTask.getRoute_plan_code(); - String vehicleType = acsTask.getVehicle_type(); // 是否复合任务 =0非复合任务 - String compound_task = acsTask.getCompound_task(); String next_point_code = acsTask.getNext_point_code(); String next_device_code = acsTask.getNext_device_code(); - String start_point_code2 = acsTask.getStart_point_code2(); - String next_point_code2 = acsTask.getNext_point_code2(); + String vehicle_type = acsTask.getVehicle_type(); + String agv_system_type = acsTask.getAgv_system_type(); String task_type = acsTask.getTask_type(); - String start_height = acsTask.getStart_height(); - String next_height = acsTask.getNext_height(); - /** 开始平均分解校验 */ - String this_device_code = - this.queryAssignedByDevice(acsTask.getStart_device_code(), acsTask.getNext_device_code()); - if (StrUtil.isEmpty(this_device_code)) { - List shortPathsList = - routeLineService.getShortPathLines( - start_device_code, acsTask.getNext_device_code(), route_plan_code); - if (shortPathsList.size() == 0) { - throw new BadRequestException(start_device_code + "->" + acsTask.getNext_device_code() + "路由不存在!"); - } - Device startDevice = deviceAppService.findDeviceByCode(start_device_code); - Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); - RouteLineDto routeLineDto = shortPathsList.get(0); - String path = routeLineDto.getPath(); - String type = routeLineDto.getType(); - String[] str = path.split("->"); - List pathlist = Arrays.asList(str); - int index = 0; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - index = m + 1; - break; - } - } - next_device_code = pathlist.get(index); - } else { - next_device_code = this_device_code; - } + if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) { next_point_code = next_device_code + CommonFinalParam.HYPHEN_ + acsTask.getTo_y() + CommonFinalParam.HYPHEN_ + acsTask.getTo_z(); } else { next_point_code = next_device_code; } + String instruction_type = task_type; + + if (StrUtil.equals(TaskTypeEnum.CTU_TASK.getCode(), task_type)) { + Device start_device = deviceAppService.findDeviceByCode(start_device_code); + Device next_device = deviceAppService.findDeviceByCode(next_device_code); + if (start_device != null && start_device.getDevice_type().equals("conveyor") && next_device != null && next_device.getDevice_type().equals("storage")) { + instruction_type = InstTypeEnum.CTU_IN_TASK.getCode(); + } else if (start_device != null && start_device.getDevice_type().equals("storage") && next_device != null && next_device.getDevice_type().equals("conveyor")) { + instruction_type = InstTypeEnum.CTU_OUT_TASK.getCode(); + } else if (start_device != null && next_device != null && start_device.getDevice_type().equals("storage") && next_device.getDevice_type().equals("storage")) { + instruction_type = InstTypeEnum.CTU_MOVE_TASK.getCode(); + } else { + throw new BadRequestException("CTU任务类型与起点终点不匹配"); + } + } else if (StrUtil.equals(TaskTypeEnum.AGV_TASK.getCode(), task_type)) { + instruction_type = "1".equals(acsTask.getIs_wait()) ? InstTypeEnum.AGV_THREE_TASK.getCode() : InstTypeEnum.AGV_TWO_TASK.getCode(); + } + + if (StrUtil.equals(instruction_type, InstTypeEnum.CTU_OUT_TASK.getCode())) { + InstructionDto waitInst = instructionservice.findByInstTypeAndIsWait(InstTypeEnum.CTU_OUT_TASK.getCode(), "1"); + if (ObjectUtil.isNotEmpty(waitInst)) { + throw new BadRequestException("已经存在需要等待回库的CTU任务,不允许创建。"); + } + } + Instruction instdto = new Instruction(); - instdto.setInstruction_type(task_type); + instdto.setInstruction_type(instruction_type); instdto.setInstruction_id(IdUtil.simpleUUID()); - instdto.setRoute_plan_code(route_plan_code); instdto.setRemark(acsTask.getRemark()); - instdto.setMaterial(acsTask.getMaterial()); - instdto.setQuantity(acsTask.getQuantity()); instdto.setTask_id(taskid); instdto.setTask_code(taskcode); instdto.setVehicle_code(vehiclecode); + instdto.setVehicle_type(vehicle_type); String now = DateUtil.now(); instdto.setCreate_time(now); instdto.setCreate_by(SecurityUtils.getCurrentNickName()); instdto.setStart_device_code(start_device_code); + instdto.setStart_parent_code(acsTask.getStart_parent_code()); instdto.setNext_device_code(next_device_code); instdto.setStart_point_code(start_point_code); instdto.setNext_point_code(next_point_code); + instdto.setNext_parent_code(acsTask.getNext_parent_code()); + instdto.setIs_get_pause(acsTask.getIs_get_pause()); + instdto.setIs_put_pause(acsTask.getIs_put_pause()); + instdto.setIs_wait(acsTask.getIs_wait()); instdto.setPriority(priority); instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); instdto.setExecute_device_code(start_point_code); - instdto.setVehicle_type(vehicleType); - instdto.setStart_point_code2(start_point_code2); - instdto.setStart_device_code2(start_point_code2); - instdto.setNext_device_code2(next_point_code2); - instdto.setNext_point_code2(next_point_code2); + instdto.setAgv_system_type(agv_system_type); - instdto.setStart_height(start_height); - instdto.setNext_height(next_height); - instdto.setAgv_action_type(acsTask.getAgv_action_type()); - if (StrUtil.equals(agv_system_type, CommonFinalParam.TWO)) { - // task_type - //1、生箔; Itype=1:取空,取满,放空,放满; - //2、分切 Itype=3取满、取空、放满、放空; - //3、普通任务 Itype=2:取货、放货; - //4、叉车任务 - //5、输送任务 - //6、行架 - //7、立库 - if (StrUtil.equals(task_type, CommonFinalParam.ONE)) { - instdto.setAgv_inst_type(CommonFinalParam.ONE); - } else if (StrUtil.equals(task_type, "3")) { - instdto.setAgv_inst_type("2"); - } else if (StrUtil.equals(task_type, "2")) { - instdto.setAgv_inst_type("3"); - } else if (StrUtil.equals(task_type, "8")) { - instdto.setAgv_inst_type("2"); - } else { - log.info("未找到对应的AGV指令类型,任务号:" + acsTask.getTask_code() + ",task_type:" + acsTask.getTask_type()); - } - } else { - instdto.setAgv_inst_type("4"); - } - instructionservice.create2(instdto); + + instructionservice.create(instdto); acsTask.setTask_status(CommonFinalParam.ONE); this.update(acsTask); return instdto; @@ -1144,31 +522,21 @@ public class TaskServiceImpl extends CommonServiceImpl impleme Map map = new LinkedHashMap<>(); map.put("任务号", acsTask.getTask_code()); map.put("载具号", acsTask.getVehicle_code()); - map.put("载具类型", acsTask.getVehicle_type()); map.put("任务类型", acsTask.getTask_type()); map.put("任务状态", acsTask.getTask_status()); map.put("任务优先级", acsTask.getPriority()); - map.put("创建类型", acsTask.getCreate_type()); - map.put("完成类型", acsTask.getFinish_type()); - map.put("执行描述编码", acsTask.getExecute_code()); - map.put("执行描述信息", acsTask.getExecute_message()); map.put("起始点位编码", acsTask.getStart_point_code()); map.put("起始设备编码", acsTask.getStart_device_code()); map.put("目标点位编码", acsTask.getNext_point_code()); map.put("目标设备编码", acsTask.getNext_device_code()); - map.put("排", acsTask.getFrom_x()); - map.put("列", acsTask.getFrom_y()); - map.put("层", acsTask.getFrom_z()); - map.put("排", acsTask.getTo_x()); - map.put("列", acsTask.getTo_y()); - map.put("层", acsTask.getTo_z()); - map.put("路由方案名称", acsTask.getRoute_plan_name()); - map.put("路由方案编码", acsTask.getRoute_plan_code()); - map.put("是否需要反馈上位系统", acsTask.getIs_needfeedback()); + map.put("起始排", acsTask.getFrom_x()); + map.put("起始列", acsTask.getFrom_y()); + map.put("起始层", acsTask.getFrom_z()); + map.put("目标排", acsTask.getTo_x()); + map.put("目标列", acsTask.getTo_y()); + map.put("目标层", acsTask.getTo_z()); map.put("备注", acsTask.getRemark()); - map.put("agv车号", acsTask.getCarno()); - map.put("是否启用", acsTask.getIs_active()); - map.put("是否删除", acsTask.getIs_delete()); + map.put("agv车号", acsTask.getCar_no()); map.put("创建者", acsTask.getCreate_by()); map.put("创建时间", acsTask.getCreate_time()); map.put("修改者", acsTask.getUpdate_by()); @@ -1178,10 +546,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme FileUtil.downloadExcel(list, response); } - @Override - public void createTaskByClick(JSONObject json) { - } - @Override public boolean removeByCodeFromCache(String code) { @@ -1195,20 +559,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } } - @Override - public List findAllTaskFromCache() { - return this.tasks; - } - - @Override - public TaskDto findByContainer(String container_code) { - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getVehicle_code(), container_code)) - .findFirst(); - - return optionalTask.orElse(null); - } - @Override public TaskDto findByCodeFromCache(String task_code) { Optional optionalTask = tasks.stream() @@ -1218,96 +568,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme return optionalTask.orElse(null); } - @Override - public TaskDto findByNextCode(String device_code) { - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getNext_device_code(), device_code)) - .findFirst(); - return optionalTask.orElse(null); - } - - - @Override - public TaskDto findByStartCodeAndReady(String device_code) { - //根据时间升序取第一个 - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getStart_device_code(), device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex())).sorted(Comparator.comparing(TaskDto::getCreate_time)) - .findFirst(); - return optionalTask.orElse(null); - } - - @Override - public List findByTrappedManipulatorReady() { - //根据时间升序取第一个 - List taskDtoList = tasks.stream() - .filter(task -> StrUtil.equals(task.getTask_type(), TaskTypeEnum.Truss_Task.getIndex()) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex())).collect(Collectors.toList()); - return taskDtoList; - } - - @Override - public TaskDto findByVehicleCodeCodeAndReady(String vehicleCode) { - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getVehicle_code(), vehicleCode) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex())) - .findFirst(); - return optionalTask.orElse(null); - } - - - @Override - public TaskDto findByVehicleCode2AndExcute(String vehicleCode) { - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getVehicle_code2(), vehicleCode) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) - .findFirst(); - return optionalTask.orElse(null); - } - - @Override - public TaskDto findByCodeAndExcute(String start_code, String next_code) { - Task task = this.lambdaQuery() - .eq(Task::getStart_device_code, start_code) - .eq(Task::getNext_device_code, next_code) - .eq(Task::getTask_status, TaskStatusEnum.BUSY.getIndex()) - .one(); - TaskDto taskDto = BeanUtil.copyProperties(task, TaskDto.class); - return taskDto; - } - - - @Override - public TaskDto findByStarCodeAndExcute(String start_code) { - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getStart_device_code(), start_code) - && (StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex()) || StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex()))) - .findFirst(); - return optionalTask.orElse(null); - } - - - @Override - public TaskDto findByEndCodeAndReady(String device_code) { - Optional optionalTask = tasks.stream() - .filter(task -> StrUtil.equals(task.getNext_device_code(), device_code) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.READY.getIndex()) - ) - .findFirst(); - return optionalTask.orElse(null); - } - - - @Override - public TaskDto findByStartCode(String device_code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getStart_device_code(), device_code)) - .findFirst() - .orElse(null); - } @Override public TaskDto foramte(TaskDto task) { @@ -1344,15 +604,10 @@ public class TaskServiceImpl extends CommonServiceImpl impleme task.setStart_device_code(task.getStart_device_code()); } else { - DeviceDriverDefination deviceDriverDefination = deviceAppService.findDeviceByCode(start_point_code).getDeviceDriverDefination(); - if (BeanUtil.isNotEmpty(deviceDriverDefination)) { - String start_device = - deviceDriverDefination - .getFitDeviceTypes() - .get(0) - .name(); + Device device = deviceAppService.findDeviceByCode(start_point_code); + if (BeanUtil.isNotEmpty(device)) { // 如果point_device为货架,则不包含列层信息,需要重新拼接 - if (StrUtil.equals("storage", start_device)) { + if (StrUtil.equals("storage", device.getDevice_type())) { if (StrUtil.isEmpty(task.getFrom_x())) { throw new BadRequestException(LangProcess.msg("start_point_column")); } @@ -1378,6 +633,9 @@ public class TaskServiceImpl extends CommonServiceImpl impleme task.setFrom_x(starPoint.getExtraValue().get("x").toString()); task.setStart_point_code(start_point_code + commonFinalParam.getBARRE() + from_y + commonFinalParam.getBARRE() + from_z); task.setStart_device_code(start_point_code); + } else { + task.setStart_device_code(start_point_code); + task.setStart_device_code(start_point_code); } } else { task.setStart_device_code(start_point_code); @@ -1410,14 +668,9 @@ public class TaskServiceImpl extends CommonServiceImpl impleme task.setNext_device_code(task.getNext_device_code()); } else { - DeviceDriverDefination deviceDriverDefination = deviceAppService.findDeviceByCode(next_point_code).getDeviceDriverDefination(); - if (BeanUtil.isNotEmpty(deviceDriverDefination)) { - String next_device = - deviceDriverDefination - .getFitDeviceTypes() - .get(0) - .name(); - if (StrUtil.equals("storage", next_device)) { + Device device = deviceAppService.findDeviceByCode(next_point_code); + if (BeanUtil.isNotEmpty(device)) { + if (StrUtil.equals("storage", device.getDevice_type())) { if (StrUtil.isEmpty(task.getTo_x())) { throw new BadRequestException(LangProcess.msg("endpoint_column")); } @@ -1442,6 +695,9 @@ public class TaskServiceImpl extends CommonServiceImpl impleme task.setTo_x(next_point_code); task.setNext_point_code(next_point_code + commonFinalParam.getBARRE() + to_y + commonFinalParam.getBARRE() + to_z); task.setNext_device_code(next_point_code); + } else { + task.setNext_device_code(next_point_code); + task.setNext_device_code(next_point_code); } } else { task.setNext_device_code(next_point_code); @@ -1457,92 +713,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme this.tasks.add(dto); } - @Override - public String queryAssignedByDevice(String device_code, String task_nextdeice_code) { - List list = - deviceAssignedService.queryAssignedByDevice(device_code, task_nextdeice_code); - int flag1 = 0; - String flag2 = null; - for (int i = 0; i < list.size(); i++) { - DeviceAssignedDto dto = list.get(i); - String inst_nextDevice_code = dto.getInst_nextDevice_code(); - String task_nextDevice_code = dto.getTask_nextDevice_code(); - String param = dto.getParam(); - JSONObject jo = JSON.parseObject(param); - String regEx = "[`~!@#$%^&*()+=|{}':;'\\[\\].<>/?~!@#¥%……&*()——+|{}【】':”“’。、?]"; - Pattern p = Pattern.compile(regEx); - Matcher m = p.matcher(inst_nextDevice_code); - String toSpeechText = m.replaceAll("").trim(); - - String[] str = toSpeechText.split(","); - List pathlist = Arrays.asList(str); - for (int j = 0; j < pathlist.size(); j++) { - String this_device_code = pathlist.get(j).toString(); - JSONObject data = JSON.parseObject(jo.getString(this_device_code)); - String limit = data.getString("limit"); - int num = instructionService.querySameDestinationInst(this_device_code); - if (num >= Integer.parseInt(limit)) { - continue; - } - if (j == 0) { - flag1 = num; - } - if (num <= flag1) { - flag2 = this_device_code; - } - } - } - if (!StrUtil.isEmpty(flag2)) { - return flag2; - } - return null; - } - - - @Override - public List getTaskAndInst(Map whereJson) { - LambdaQueryWrapper wrapper = getTaskLambdaQueryWrapper(whereJson); - List taskList = taskMapper.selectList(wrapper); - List array = new ArrayList<>(); - if (CollUtil.isNotEmpty(taskList) && taskList.size() > 0) { - for (Task task : taskList) { - JSONObject ins = new JSONObject(); - ins.put("task_code", task.getTask_code()); - ins.put("vehicle_code", task.getVehicle_code()); - ins.put("task_status", task.getTask_status()); - ins.put("priority", task.getPriority()); - ins.put("start_point_code", task.getStart_point_code()); - ins.put("next_point_code", task.getNext_point_code()); - ins.put("start_point_code2", task.getStart_point_code2()); - ins.put("next_point_code2", task.getNext_point_code2()); - ins.put("matarial", task.getMaterial()); - ins.put("quantity", task.getQuantity()); - ins.put("remark", task.getRemark()); - ins.put("create_by", task.getCreate_by()); - ins.put("create_time", task.getCreate_time()); - array.add(ins); - List list = instructionService.list(Wrappers.lambdaQuery(InstructionMybatis.class)); - if (CollUtil.isNotEmpty(list) && list.size() > 0) { - for (InstructionMybatis inst : list) { - if (task.getTask_id().equals(inst.getTask_id())) { - JSONObject ins1 = new JSONObject(); - ins1.put("task_code", inst.getInstruction_code()); - ins1.put("vehicle_code", inst.getVehicle_code()); - ins1.put("task_status", inst.getInstruction_status()); - ins1.put("start_point_code", inst.getStart_point_code()); - ins1.put("next_point_code", inst.getNext_point_code()); - ins1.put("matarial", inst.getMaterial()); - ins1.put("remark", inst.getRemark()); - ins1.put("create_by", inst.getCreate_by()); - ins1.put("create_time", inst.getCreate_time()); - array.add(ins1); - } - } - } - } - } - return array; - } @NotNull private LambdaQueryWrapper getTaskLambdaQueryWrapper(Map whereJson) { @@ -1561,9 +731,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme if (!StrUtil.isEmpty(vehicle_code)) { wrapper.like(Task::getVehicle_code, vehicle_code); } - if (!StrUtil.isEmpty(material_type)) { - wrapper.eq(Task::getMaterial, material_type); - } if (!StrUtil.isEmpty(status)) { wrapper.eq(Task::getTask_status, status); } @@ -1621,162 +788,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme FileUtil.downloadExcel(list, response); } - @Override - public List getTaskList(Map whereJson) { - LambdaQueryWrapper wrapper = getTaskLambdaQueryWrapper(whereJson); - List taskList = taskMapper.selectList(wrapper); - return Optional - .ofNullable(taskList) - .orElse(new ArrayList<>()) - .stream() - .map(task -> { - JSONObject ins = new JSONObject(); - ins.put("task_code", task.getTask_code()); - ins.put("vehicle_code", task.getVehicle_code()); - ins.put("task_status", task.getTask_status()); - ins.put("priority", task.getPriority()); - ins.put("start_point_code", task.getStart_point_code()); - ins.put("next_point_code", task.getNext_point_code()); - ins.put("matarial", task.getMaterial()); - ins.put("quantity", task.getQuantity()); - ins.put("remark", task.getRemark()); - ins.put("create_by", task.getCreate_by()); - ins.put("create_time", task.getCreate_time()); - return ins; - }) - .collect(Collectors.toList()); - } - - @Override - public List findByStartCodeAndBusy(String deviceCode) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getStart_device_code(), deviceCode) - && StrUtil.equals(task.getTask_status(), TaskStatusEnum.BUSY.getIndex())) - .limit(2) - .collect(Collectors.toList()); - } - - - @Override - public Integer querySameOriginTask(String code) { - return (int) Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(task -> StrUtil.equals(task.getStart_device_code(), code)) - .count(); - } - - @Override - public Integer querySameDestinationTask(String code) { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(taskDto -> StrUtil.equals(taskDto.getNext_device_code(), code)) - .collect(Collectors.toList()) - .size(); - } - - @Override - public Integer querySameDeviceReadyTask(String start_device, String next_device, String status) { - int num = 0; - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (StrUtil.equals(task.getStart_device_code(), start_device) - && StrUtil.equals(task.getNext_device_code(), next_device) - && StrUtil.equals(task.getTask_status(), status)) { - num++; - } - } - - return num; - } - - @Override - public String queryAssignedByDeviceCode(String device_code, String task_nextDeice_code) { - List list = - deviceAssignedService.queryAssignedByDevice(device_code, task_nextDeice_code); - for (int i = 0; i < list.size(); i++) { - DeviceAssignedDto dto = list.get(i); - String deviceCode = dto.getDevice_code(); - String inst_nextDevice_code = dto.getInst_nextDevice_code(); - JSONObject param = JSON.parseObject(dto.getParam()); - List pathList = this.getPathList(inst_nextDevice_code); - for (int j = 0; j < pathList.size(); j++) { - String inst_next_device_code = pathList.get(j); - String limit = param.getString("limit"); - Boolean inOut = param.getBoolean("inOut"); - if (inOut) { - Device device = deviceAppService.findDeviceByCode(deviceCode); - if (device != null) { - if (StrUtil.equals(device.getDevice_type(), DeviceType.storage.toString())) { - if (instructionService.querySameNextDeviceCodeInstByIn(inst_next_device_code)) { - return inst_next_device_code; - } - } else { - if (instructionService.querySameNextDeviceCodeInstByOut(inst_next_device_code)) { - return inst_next_device_code; - } - } - } - } else { - Integer sameInstNum = instructionService.querySameDestinationInst(inst_next_device_code); - if (sameInstNum < Integer.parseInt(limit)) { - return inst_next_device_code; - } - } - } - } - return null; - } - - @Override - public TaskDto findByTaskCode(String task_code) { - - List list = new ArrayList<>(); - Iterator iterator = tasks.iterator(); - while (iterator.hasNext()) { - TaskDto task = iterator.next(); - if (StrUtil.equals(task.getTask_code(), task_code)) { - return task; - } - } - return null; - } - - @Override - public List queryAllHJReadyTask() { - return Optional - .ofNullable(this.tasks) - .orElse(new CopyOnWriteArrayList<>()) - .stream() - .filter(taskDto -> StrUtil.equals(taskDto.getTask_type(), TaskTypeEnum.Truss_Task.getIndex()) - && StrUtil.equals(taskDto.getTask_status(), TaskStatusEnum.READY.getIndex())) - .collect(Collectors.toList()); - } - - - /** - * 把多个字符串拼接的inst_nextDevice_code解析成集合 - * - * @param inst_nextDevice_code - * @return - */ - private List getPathList(String inst_nextDevice_code) { - String regEx = "[`~!@#$%^&*()+=|{}':;'\\[\\].<>/?~!@#¥%……&*()——+|{}【】':”“’。、?]"; - Pattern p = Pattern.compile(regEx); - Matcher m = p.matcher(inst_nextDevice_code); - String toSpeechText = m.replaceAll("").trim(); - String[] str = toSpeechText.split(","); - List pathList = Arrays.asList(str); - return pathList; - } - /** * 统一抽取反馈上位系统任务状态信息 @@ -1788,49 +799,58 @@ public class TaskServiceImpl extends CommonServiceImpl impleme TaskDto entity = this.findById(taskDto.getTask_id()); String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue(); if (!StrUtil.startWith(taskDto.getTask_code(), CommonFinalParam.HYPHEN_) && StrUtil.equals(hasWms, CommonFinalParam.ONE)) { -// FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); -// request.setTask_id(taskDto.getExt_task_id()); -// request.setTask_code(taskDto.getTask_code()); -// request.setTask_status(taskDto.getTask_status()); -// request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode()); -// request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName()); + JSONObject feed_jo = new JSONObject(); feed_jo.put("task_id", entity.getExt_task_id()); feed_jo.put("task_code", entity.getTask_code()); feed_jo.put("task_status", entity.getTask_status()); - if (ObjectUtil.isNotEmpty(entity.getWeight())) { - feed_jo.put("weight", entity.getWeight()); - } - if (ObjectUtil.isNotEmpty(entity.getCarno())) { - feed_jo.put("car_no", entity.getCarno()); - } - JSONArray ja = new JSONArray(); - ja.add(feed_jo); - //TODO 有需要根据上位系统反馈的信息再做进一步处理 - CompletableFuture.runAsync(() -> { - acstowmsService.feedTaskStatus(ja); - // 异步更新任务状态 - try { - } catch (Exception e) { - e.printStackTrace(); - } - }); + acstowmsService.feedTaskStatus(feed_jo); } } - /** - * 关闭仙工运单序列 - * - * @param taskDto - */ - private void markComplete(TaskDto taskDto) { - // 如果属于先知AGV,关闭运单序列 - try { - agvService.markComplete(taskDto.getTask_code()); - } catch (Exception e) { - log.error("关闭运单异常,原因:{}", e.getMessage()); - } + @Override + public List findReadyByAgvSystemType(String agvSystemType) { + return Optional.ofNullable(this.tasks) + .orElse(new CopyOnWriteArrayList<>()) + .stream() + .filter(taskDto -> StrUtil.equals(taskDto.getAgv_system_type(), agvSystemType)) + .filter(taskDto -> taskDto.getTask_status().equals(TaskStatusEnum.READY.getIndex())) + .collect(Collectors.toList()); } + @Override + public TaskDto findByVehicleCode(String vehicle_code) { + return Optional.ofNullable(this.tasks) + .orElse(new CopyOnWriteArrayList<>()) + .stream() + .filter(taskDto -> taskDto.getVehicle_code().equals(vehicle_code)) + .findFirst() + .orElse(null); + } + + + @Override + public void cancelNoSendWms(String task_id) { + TaskDto entity = this.findById(task_id); + if (entity == null) { + throw new BadRequestException(LangProcess.msg("error_sysAuth")); + } + + InstructionDto instdto = instructionService.findByTaskid(task_id, "instruction_status <2 "); + if (instdto != null) { + throw new BadRequestException(LangProcess.msg("task_insRun")); + } + + String currentUsername = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_time(now); + entity.setUpdate_by(currentUsername); + entity.setTask_status(TaskStatusEnum.CANCEL.getIndex()); + + Task task = ConvertUtil.convert(entity, Task.class); + taskMapper.updateById(task); + //移除任务缓存信息 + this.removeByCodeFromCache(entity.getTask_code()); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/AsyncLuceneAppender.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/AsyncLuceneAppender.java index 1c11641..d5156de 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/AsyncLuceneAppender.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/AsyncLuceneAppender.java @@ -37,11 +37,7 @@ public class AsyncLuceneAppender extends AspectLogbackAsyncAppender { } MDC.clear(); } - try { - super.append(event); - }catch (Exception e){ - e.printStackTrace(); - } + super.append(event); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/LuceneAppender.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/LuceneAppender.java index 9e9bdcd..366fd19 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/LuceneAppender.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/LuceneAppender.java @@ -95,11 +95,23 @@ public class LuceneAppender extends AppenderBase { if (ObjectUtil.isNotEmpty(luceneLogDto.getStatus_code())) { document.add(new StringField("status_code", luceneLogDto.getStatus_code(), Field.Store.YES)); } - if (ObjectUtil.isNotEmpty(luceneLogDto.getRequestparam())) { - document.add(new StringField("requestparam", luceneLogDto.getRequestparam(), Field.Store.YES)); + if (ObjectUtil.isNotEmpty(luceneLogDto.getRequest_param())) { + document.add(new StringField("request_param", luceneLogDto.getRequest_param(), Field.Store.YES)); } - if (ObjectUtil.isNotEmpty(luceneLogDto.getResponseparam())) { - document.add(new StringField("responseparam", luceneLogDto.getResponseparam(), Field.Store.YES)); + if (ObjectUtil.isNotEmpty(luceneLogDto.getResponse_param())) { + document.add(new StringField("response_param", luceneLogDto.getResponse_param(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getRequest_url())) { + document.add(new StringField("request_url", luceneLogDto.getRequest_url(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getDeviceLogType())) { + document.add(new StringField("deviceLogType", luceneLogDto.getDeviceLogType(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getRequest_direction())) { + document.add(new StringField("request_direction", luceneLogDto.getRequest_direction(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getExecuteTime())) { + document.add(new StringField("executeTime", luceneLogDto.getExecuteTime() + "", Field.Store.YES)); } document.add(new StringField("logType", luceneLogDto.getLogType(), Field.Store.YES)); document.add(new StringField("logTime", DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"), Field.Store.YES)); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/enums/DeviceLogTypeEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/enums/DeviceLogTypeEnum.java new file mode 100644 index 0000000..37536fe --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/enums/DeviceLogTypeEnum.java @@ -0,0 +1,18 @@ +package org.nl.config.lucene.enums; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/10 + */ +@Getter +@RequiredArgsConstructor +public enum DeviceLogTypeEnum { + AUTO_THREAD("auto", "自动线程"); + + private final String code; + private final String name; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/rest/LuceneController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/rest/LuceneController.java index 9beeff5..fc7ef8f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/rest/LuceneController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/rest/LuceneController.java @@ -1,10 +1,11 @@ package org.nl.config.lucene.rest; - import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; +import org.nl.config.lucene.enums.DeviceLogTypeEnum; +import org.nl.config.lucene.enums.LogTypeEnum; import org.nl.config.lucene.service.LuceneService; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; @@ -14,7 +15,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.Arrays; import java.util.Map; +import java.util.stream.Collectors; @RestController @@ -27,19 +30,34 @@ public class LuceneController { private final LuceneService luceneService; - @GetMapping("/getAll") @Log("日志检索") - - //@PreAuthorize("@el.check('task:list')") public ResponseEntity get(@RequestParam Map whereJson, Pageable page) { return new ResponseEntity<>(luceneService.getAll(whereJson, page), HttpStatus.OK); } - @GetMapping("/getAddressLog") - @Log("接口日志检索") - //@PreAuthorize("@el.check('task:list')") - public ResponseEntity getAddressLog(@RequestParam Map whereJson, Pageable page) { - return new ResponseEntity<>(luceneService.getAddressLog(whereJson, page), HttpStatus.OK); + @GetMapping("/getDeviceLogType") + @Log("获取设备日志类型") + public ResponseEntity getDeviceLogType() { + return new ResponseEntity<>(Arrays.stream(DeviceLogTypeEnum.values()) + .map(type -> { + Map map = new java.util.HashMap<>(); + map.put("code", type.getCode()); + map.put("name", type.getName()); + return map; + }) + .collect(Collectors.toList()), HttpStatus.OK); + } + + @GetMapping("/getLogTypes") + @Log("获取日志类型") + public ResponseEntity get(@RequestParam Map whereJson) { + + return new ResponseEntity<>(Arrays.stream(LogTypeEnum.values()).map(logType -> { + Map map = new java.util.HashMap<>(); + map.put("logType", logType.getDesc()); + return map; + }) + .collect(Collectors.toList()), HttpStatus.OK); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/LuceneService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/LuceneService.java index 759fd5c..1eae1d5 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/LuceneService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/LuceneService.java @@ -15,6 +15,4 @@ public interface LuceneService { * @return Map */ Map getAll(Map whereJson, Pageable page); - - Map getAddressLog(Map whereJson, Pageable page); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/dto/LuceneLogDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/dto/LuceneLogDto.java index 4cdca93..601b66c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/dto/LuceneLogDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/dto/LuceneLogDto.java @@ -4,6 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.nl.config.lucene.enums.DeviceLogTypeEnum; @Data @Builder @@ -11,121 +12,80 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class LuceneLogDto { - /* 日志标识 */ - private String log_uuid; - /*日志类型*/ + /** + * 日志类型 + */ private String logType; - /*设备编号*/ + + /** + * 设备编号 + */ private String device_code; - /*内容详情*/ + + /** + * 内容详情 + */ private String content; - /* 任务编码 */ - private String task_code; - - /* 指令编码 */ - private String instruct_code; - - /* 任务标识 */ - private String task_id; - - /* 载具号 */ - private String vehicle_code; - - /* 备注 */ - private String remark; - - /* 日志类型 */ - private String log_type; /** - * 日志级别 + * 方法 */ - private Integer log_level; - - /* 方法 */ private String method; - /* 请求参数 */ - private String requestparam; + /** + * 请求参数 + */ + private String request_param; - /* 响应参数 */ - private String responseparam; + /** + * 响应参数 + */ + private String response_param; - /* 请求地址 */ - private String requesturl; + /** + * 请求路径 + */ + private String request_url; - /* 状态码 */ + + /** + * 状态码 + */ private String status_code; - /* 是否删除 1:是;0:否 */ - private String is_delete; + /** + * 设备日志类型 + */ + private String deviceLogType; - /* 创建者 */ - private String create_by; + /** + * 请求方向 + */ + private String request_direction; - /* 创建时间 YYYY-MM-DD hh:mm:ss */ - private String create_time; + /** + * 执行时间 + */ + private long executeTime; - /* 修改者 */ - private String update_by; - - /* 修改时间 */ - private String update_time; - - - public LuceneLogDto(final String opc_server_code, final String opc_plc_code,final Integer log_level, - final String device_code, final String to_home, final String last_home, - final String home) { - super(); - this.device_code = device_code; - this.log_level = log_level; - this.content = "信号 [" - + opc_server_code + "." - + opc_plc_code + "." - + device_code + "." - + to_home + "] 发生变更 " - + last_home + " -> " - + home; - } - - - //1 - - public LuceneLogDto(final Integer log_level,final String method, final String status, - final String requestparam, final String responseparam, final String content) { - super(); - this.log_level = log_level; - this.method =method; - this.requestparam = requestparam; - this.responseparam = responseparam; - this.content = content; - } - - public LuceneLogDto(final Integer log_level, final String requestparam, final String content) { - super(); - this.log_level = log_level; - this.requestparam = requestparam; - this.content = content; - } public LuceneLogDto(final String device_code, final String remark) { super(); this.device_code = device_code; + this.deviceLogType = DeviceLogTypeEnum.AUTO_THREAD.getCode(); this.content = "设备 [" + device_code + "] - " + remark; } - public LuceneLogDto(final LuceneLogDto dto) { + public LuceneLogDto(final String device_code, final String device_log_type, final String remark) { super(); this.device_code = device_code; - this.method = method; - + this.deviceLogType = device_log_type; this.content = "设备 [" + device_code + "] - " + remark; } - } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneExecuteLogServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneExecuteLogServiceImpl.java index 18421bd..fdc9d03 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneExecuteLogServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneExecuteLogServiceImpl.java @@ -1,22 +1,15 @@ package org.nl.config.lucene.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.config.SpringContextHolder; import org.nl.config.lucene.enums.LogTypeEnum; import org.nl.config.lucene.service.LuceneExecuteLogService; import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.system.service.param.ISysParamService; import org.slf4j.MDC; import org.springframework.stereotype.Service; -import java.util.regex.Pattern; - /** * @author jlm * @description 服务实现 @@ -27,8 +20,6 @@ import java.util.regex.Pattern; @Slf4j public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { - - @Override public void deviceItemValue(String device_code, String key, String value) { String now = DateUtil.now(); @@ -36,26 +27,14 @@ public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { @Override public void deviceExecuteLog(LuceneLogDto luceneLogDto) { -// ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc()); -// String logLevel = paramService.findByCode(AcsConfig.LOGLEVEL).getValue(); - if(ObjectUtil.isNotEmpty(luceneLogDto.getLog_level()) && (luceneLogDto.getLog_level() >= 3)){ - log.info("{}", JSON.toJSONString(luceneLogDto)); - } - } - - public static boolean isNumeric(String str) { - return Pattern.compile("^[0-9]+$").matcher(str).matches(); + log.info("{}", JSON.toJSONString(luceneLogDto)); } @Override public void interfaceExecuteLog(LuceneLogDto luceneLogDto) { -// ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); luceneLogDto.setLogType(LogTypeEnum.INTERFACE_LOG.getDesc()); -// String logLevel = paramService.findByCode(AcsConfig.LOGLEVEL).getValue(); - if(ObjectUtil.isNotEmpty(luceneLogDto.getLog_level()) && (luceneLogDto.getLog_level() >= 3)){ - log.info("{}", JSON.toJSONString(luceneLogDto)); - } + log.info("{}", JSON.toJSONString(luceneLogDto)); } @Override diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneServiceImpl.java index 5124afc..3d214e5 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneServiceImpl.java @@ -2,7 +2,6 @@ package org.nl.config.lucene.service.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,6 +18,8 @@ import org.springframework.core.io.Resource; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -30,9 +31,6 @@ import java.util.*; @Slf4j public class LuceneServiceImpl implements LuceneService { - //日志索引目录 - - @Override public Map getAll(Map whereJson, Pageable page) { //获取要查询的路径,也就是索引所在的位置 @@ -44,9 +42,9 @@ public class LuceneServiceImpl implements LuceneService { // 获取配置值 String luceneDir = properties.getProperty("lucene.index.path"); FSDirectory directory = FSDirectory.open(Paths.get(luceneDir)); + DirectoryReader open = DirectoryReader.open(directory); IndexSearcher searcher = new IndexSearcher(open); - // 实际上Lucene本身不支持分页。因此我们需要自己进行逻辑分页。我们要准备分页参数: int pageSize = Integer.parseInt(whereJson.get("size").toString());// 每页条数 int pageNum = Integer.parseInt(whereJson.get("page").toString());// 当前页码 @@ -55,137 +53,55 @@ public class LuceneServiceImpl implements LuceneService { String startDate = (String) whereJson.get("begin_time"); String endDate = (String) whereJson.get("end_time"); - if (startDate == null){ - Calendar calendar=Calendar.getInstance(); + if (startDate == null) { + Calendar calendar = Calendar.getInstance(); calendar.set(1970, 0, 1); - startDate = DateUtil.format(calendar.getTime(),"yyyy-MM-dd HH:mm:ss.SSS"); - }else{ + startDate = DateUtil.format(calendar.getTime(), "yyyy-MM-dd HH:mm:ss.SSS"); + } else { startDate = getDate(startDate); } - if (endDate == null){ - endDate = DateUtil.format(new DateTime(),"yyyy-MM-dd HH:mm:ss.SSS"); + if (endDate == null) { + endDate = DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"); } else { endDate = getDate(endDate); } TermRangeQuery termRangeQuery = new TermRangeQuery("logTime", new BytesRef(startDate), new BytesRef(endDate), true, true); booleanQueryBuilder.add(termRangeQuery, BooleanClause.Occur.MUST); - if (whereJson.get("device_code") != null){ + if (whereJson.get("logType") != null) { + Query termQuery = new TermQuery(new Term("logType", (String) whereJson.get("logType"))); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); + } + if (whereJson.get("device_code") != null) { Query termQuery = new TermQuery(new Term("device_code", (String) whereJson.get("device_code"))); - booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); } - if (whereJson.get("method") != null){ - Query termQuery = new TermQuery(new Term("method", (String) whereJson.get("method"))); - booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST); + if (whereJson.get("deviceLogType") != null) { + Query termQuery = new TermQuery(new Term("deviceLogType", (String) whereJson.get("deviceLogType"))); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); } - if (whereJson.get("status_code") != null){ - Query termQuery = new TermQuery(new Term("status_code", (String) whereJson.get("status_code"))); - booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST); + if (whereJson.get("method") != null) { + WildcardQuery termQuery = new WildcardQuery(new Term("method", "*" + (String) whereJson.get("method") + "*")); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); } - if (whereJson.get("requestparam") != null){ - WildcardQuery query = new WildcardQuery(new Term("requestparam", "*"+(String) whereJson.get("requestparam")+"*")); - booleanQueryBuilder.add(query,BooleanClause.Occur.MUST); + if (whereJson.get("request_url") != null) { + WildcardQuery termQuery = new WildcardQuery(new Term("request_url", "*" + (String) whereJson.get("request_url") + "*")); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); } - if (whereJson.get("responseparam") != null){ - WildcardQuery query = new WildcardQuery(new Term("responseparam", "*"+(String) whereJson.get("responseparam")+"*")); - booleanQueryBuilder.add(query,BooleanClause.Occur.MUST); + if (whereJson.get("request_direction") != null) { + Query termQuery = new TermQuery(new Term("request_direction", (String) whereJson.get("request_direction"))); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); + } + if (whereJson.get("request_param") != null) { + WildcardQuery termQuery = new WildcardQuery(new Term("request_param", "*" + (String) whereJson.get("request_param") + "*")); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); } if (whereJson.get("blurry") != null) { - WildcardQuery query = new WildcardQuery(new Term("fieldContent", "*"+(String) whereJson.get("blurry")+"*")); + WildcardQuery query = new WildcardQuery(new Term("fieldContent", "*" + (String) whereJson.get("blurry") + "*")); booleanQueryBuilder.add(query, BooleanClause.Occur.MUST); } - - TopFieldCollector collector = TopFieldCollector.create(new Sort(new SortField("logTime", SortField.Type.LONG,true)), 20000, 0); + TopFieldCollector collector = TopFieldCollector.create(new Sort(new SortField("logTime", SortField.Type.LONG, true)), 20000, 0); searcher.search(booleanQueryBuilder.build(), collector); - TopDocs topDocs = collector.topDocs(pageNum*pageSize, pageSize); - int totalSize = collector.getTotalHits(); - ScoreDoc[] scoreDocs = topDocs.scoreDocs; - - List list = new ArrayList<>(); - for (ScoreDoc scoreDoc : scoreDocs) { - Document doc = open.document(scoreDoc.doc); - JSONObject object = new JSONObject(); - object.put("content",doc.get("fieldContent")); - object.put("device_code",doc.get("device_code")); - object.put("logTime",doc.get("logTime")); - object.put("method",doc.get("method")); - object.put("status_code",doc.get("status_code")); - object.put("requestparam",doc.get("requestparam")); - object.put("responseparam",doc.get("responseparam")); - if(doc.get("fieldContent") != null) { - list.add(object); - } - } - open.close(); - directory.close(); - JSONObject jo = new JSONObject(); - jo.put("content", list); - jo.put("totalElements", totalSize); - return jo; - } catch (Exception e) { - log.error("索引查询为空", e); - throw new NullPointerException("索引查询为空"); - } - } - - @Override - public Map getAddressLog(Map whereJson, Pageable page) { - //获取要查询的路径,也就是索引所在的位置 - try { - Resource resource = new ClassPathResource("config/application.yml"); - YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean(); - yamlPropertiesFactoryBean.setResources(resource); - Properties properties = yamlPropertiesFactoryBean.getObject(); - // 获取配置值 - String luceneDir = properties.getProperty("lucene.index.path"); - FSDirectory directory = FSDirectory.open(Paths.get(luceneDir)); - DirectoryReader open = DirectoryReader.open(directory); - IndexSearcher searcher = new IndexSearcher(open); - // 实际上Lucene本身不支持分页。因此我们需要自己进行逻辑分页。我们要准备分页参数: - int pageSize = Integer.parseInt(whereJson.get("size").toString());// 每页条数 - int pageNum = Integer.parseInt(whereJson.get("page").toString());// 当前页码 - - BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder(); - //时间范围查询 - String startDate = (String) whereJson.get("begin_time"); - String endDate = (String) whereJson.get("end_time"); - - if (startDate == null){ - Calendar calendar=Calendar.getInstance(); - calendar.set(1970, 0, 1); - startDate = DateUtil.format(calendar.getTime(),"yyyy-MM-dd HH:mm:ss.SSS"); - }else{ - startDate = getDate(startDate); - } - if (endDate == null){ - endDate = DateUtil.format(new DateTime(),"yyyy-MM-dd HH:mm:ss.SSS"); - } else { - endDate = getDate(endDate); - } - TermRangeQuery termRangeQuery = new TermRangeQuery("logTime", new BytesRef(startDate), new BytesRef(endDate), true, true); - booleanQueryBuilder.add(termRangeQuery, BooleanClause.Occur.MUST); - if (whereJson.get("method") != null){ - Query termQuery = new TermQuery(new Term("method", (String) whereJson.get("method"))); - booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST); - } else { - // 使用 TermRangeQuery 来检查字段是否存在和不为空 - Query rangeQuery = TermRangeQuery.newStringRange("method", null, null, false, false); - booleanQueryBuilder.add(rangeQuery, BooleanClause.Occur.MUST); - } - if (whereJson.get("requestparam") != null){ - WildcardQuery query = new WildcardQuery(new Term("requestparam", "*"+(String) whereJson.get("requestparam")+"*")); - booleanQueryBuilder.add(query,BooleanClause.Occur.MUST); - } - if (whereJson.get("responseparam") != null){ - WildcardQuery query = new WildcardQuery(new Term("responseparam", "*"+(String) whereJson.get("responseparam")+"*")); - booleanQueryBuilder.add(query,BooleanClause.Occur.MUST); - } - if (whereJson.get("blurry") != null) { - WildcardQuery query = new WildcardQuery(new Term("fieldContent", "*"+(String) whereJson.get("blurry")+"*")); - booleanQueryBuilder.add(query, BooleanClause.Occur.MUST); - } - TopFieldCollector collector = TopFieldCollector.create(new Sort(new SortField("logTime", SortField.Type.LONG,true)), 20000, 0); - searcher.search(booleanQueryBuilder.build(), collector); - TopDocs topDocs = collector.topDocs(pageNum*pageSize, pageSize); + TopDocs topDocs = collector.topDocs(pageNum * pageSize, pageSize); int totalSize = collector.getTotalHits(); ScoreDoc[] scoreDocs = topDocs.scoreDocs; @@ -194,11 +110,17 @@ public class LuceneServiceImpl implements LuceneService { Document doc = open.document(scoreDoc.doc); JSONObject object = new JSONObject(); object.put("content", doc.get("fieldContent")); - object.put("logTime", doc.get("logTime") ); + object.put("device_code", doc.get("device_code")); + object.put("deviceLogType", doc.get("deviceLogType")); + object.put("logTime", doc.get("logTime")); object.put("method", doc.get("method")); - object.put("requestparam", doc.get("requestparam")); - object.put("responseparam", doc.get("responseparam")); - if (ObjectUtil.isNotEmpty(doc.get("fieldContent"))) { + object.put("request_url", doc.get("request_url")); + object.put("status_code", doc.get("status_code")); + object.put("request_param", doc.get("request_param")); + object.put("response_param", doc.get("response_param")); + object.put("request_direction", doc.get("request_direction")); + object.put("executeTime", doc.get("executeTime")); + if (doc.get("fieldContent") != null) { list.add(object); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/param/impl/SysParamServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/param/impl/SysParamServiceImpl.java index ad55733..02c630a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/param/impl/SysParamServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/param/impl/SysParamServiceImpl.java @@ -8,14 +8,10 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.task.domain.Task; import org.nl.acs.utils.PageUtil; -import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; import org.nl.config.MapOf; @@ -26,7 +22,6 @@ import org.nl.system.service.param.ISysParamService; import org.nl.system.service.param.dao.Param; import org.nl.system.service.param.dao.mapper.SysParamMapper; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -49,9 +44,6 @@ public class SysParamServiceImpl extends ServiceImpl impl @Autowired private SysParamMapper paramMapper; - @Lazy - @Autowired - private NDCAgvService ndcAgvService; @Autowired private ISysDictService dictService; @@ -196,8 +188,6 @@ public class SysParamServiceImpl extends ServiceImpl impl Dict dict1 = dictService.getDictByName3("station",carno,null); if(ObjectUtil.isNotEmpty(dict1)){ log.info("当前车辆{}已分配充电桩{},退出后续判断",carno,dict1.getPara1()); - }else { - ndcAgvService.charge(carno, station); } } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCleanLucenceLog.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCleanLucenceLog.java deleted file mode 100644 index 031848d..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCleanLucenceLog.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.nl.system.service.quartz.task; - -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import com.alibaba.fastjson.JSONObject; -import lombok.extern.slf4j.Slf4j; -import org.apache.lucene.document.Document; -import org.apache.lucene.index.DirectoryReader; -import org.apache.lucene.index.IndexCommit; -import org.apache.lucene.index.IndexWriter; -import org.apache.lucene.index.Term; -import org.apache.lucene.search.*; -import org.apache.lucene.store.FSDirectory; -import org.apache.lucene.util.BytesRef; -import org.nl.acs.AcsConfig; -import org.nl.config.lucene.config.LuceneAppender; -import org.nl.system.service.param.ISysParamService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; -import org.springframework.stereotype.Component; - -import java.nio.file.Paths; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.*; - -/** - * @Author : TuQiang - * @create 2024/5/24 14:37 - */ -@Slf4j -@Component -public class AutoCleanLucenceLog { - @Autowired - private ISysParamService paramService; - - public void run() throws Exception { - IndexWriter writer = LuceneAppender.indexWriter; - //时间范围删除 - Calendar calendar = Calendar.getInstance(); - calendar.set(1970, 0, 1); - String startDate = DateUtil.format(calendar.getTime(), "yyyy-MM-dd HH:mm:ss.SSS"); - Date date = new Date(); - calendar.setTime(date); - int days = Integer.parseInt(paramService.findByCode(AcsConfig.AutoCleanDays).getValue()); - //取反 - int day = ~days + 1; - calendar.add(Calendar.DATE, day); - String endDate = DateUtil.format(calendar.getTime(), "yyyy-MM-dd HH:mm:ss.SSS"); - TermRangeQuery termRangeQuery = new TermRangeQuery("logTime", new BytesRef(startDate), new BytesRef(endDate), true, true); - writer.deleteDocuments(termRangeQuery); - writer.commit(); - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCleanLuceneLog.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCleanLuceneLog.java new file mode 100644 index 0000000..0b956b0 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCleanLuceneLog.java @@ -0,0 +1,64 @@ +package org.nl.system.service.quartz.task; + +import cn.hutool.core.date.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.lucene.document.Document; +import org.apache.lucene.index.DirectoryReader; +import org.apache.lucene.index.IndexReader; +import org.apache.lucene.index.IndexWriter; +import org.apache.lucene.index.Term; +import org.apache.lucene.search.*; +import org.apache.lucene.store.FSDirectory; +import org.apache.lucene.util.BytesRef; +import org.nl.config.lucene.config.LuceneAppender; +import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; + +import java.nio.file.Paths; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.Date; +import java.util.Properties; + + +/** + * @author onepiece + */ +@Slf4j +@Component +public class AutoCleanLuceneLog { + + private static final long MAX_FILE_AGE_DAYS = 10; + + public void run() { + try { + Resource resource = new ClassPathResource("config/application.yml"); + YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean(); + yamlPropertiesFactoryBean.setResources(resource); + Properties properties = yamlPropertiesFactoryBean.getObject(); + String logDirectory = properties.getProperty("lucene.index.path"); + + Instant now = Instant.now(); + Instant cutoffTime = now.minus(MAX_FILE_AGE_DAYS, ChronoUnit.DAYS); + String cutoffTimeStr = DateUtil.format(Date.from(cutoffTime), "yyyy-MM-dd HH:mm:ss.SSS"); + + FSDirectory dir = FSDirectory.open(Paths.get(logDirectory)); + IndexWriter writer = LuceneAppender.indexWriter; + + try (IndexReader reader = DirectoryReader.open(dir)) { + IndexSearcher searcher = new IndexSearcher(reader); + Query query = new TermRangeQuery("logTime", new BytesRef(""), new BytesRef(cutoffTimeStr), true, true); + TopDocs topDocs = searcher.search(query, Integer.MAX_VALUE); + for (ScoreDoc scoreDoc : topDocs.scoreDocs) { + Document doc = searcher.doc(scoreDoc.doc); + writer.deleteDocuments(new Term("logTime", doc.get("logTime"))); + } + } + writer.commit(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java index bc5b062..00e1064 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java @@ -1,23 +1,18 @@ package org.nl.system.service.quartz.task; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; -import org.nl.acs.common.base.CommonFinalParam; import org.nl.acs.device.domain.Device; -import org.nl.acs.instruction.domain.InstructionMybatis; +import org.nl.acs.instruction.enums.InstTypeEnum; import org.nl.acs.instruction.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.limit_regional.server.LimitRegionalService; -import org.nl.acs.limit_regional.server.dto.LimitRegionalDto; +import org.nl.acs.instruction.service.dto.InstructionDto; import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; import org.nl.acs.task.enums.AgvSystemTypeEnum; @@ -25,16 +20,15 @@ import org.nl.acs.task.enums.TaskStatusEnum; import org.nl.acs.task.enums.TaskTypeEnum; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; -import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; -import org.nl.config.SpringContextHolder; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; -import org.nl.config.lucene.service.impl.LuceneExecuteLogServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * 自动创建指令 @@ -43,192 +37,393 @@ import java.util.List; @Component public class AutoCreateInst { + @Autowired + private TaskService taskService; + @Autowired + private InstructionService instructionService; + @Autowired + private RouteLineService routeLineService; + @Autowired + private DeviceAppService deviceAppService; + /** * 根据任务状态创建指令、生成下一条指令 * 创建指令前需要判断是否条件具备:起始位置是否有货、目标位置是否有货 */ - public void run() throws Exception { - log.info("自动生成指令"+DateUtil.now()); - TaskService taskserver = SpringContextHolder.getBean(TaskService.class); - InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineService.class); - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogServiceImpl.class); - List list = taskserver.queryAllByStatus("0"); - for (int i = 0; i < list.size(); i++) { - TaskDto acsTask = list.get(i); - if (StrUtil.equals(acsTask.getTask_type(), TaskTypeEnum.AGV_Task.getIndex()) && !StrUtil.startWith(acsTask.getTask_code(), "-")) { - continue; - } - if (StrUtil.equals(acsTask.getTask_type(), TaskTypeEnum.Truss_Task.getIndex()) && !StrUtil.startWith(acsTask.getTask_code(), "-")) { - continue; - } - String taskid = acsTask.getTask_id(); - String taskcode = acsTask.getTask_code(); - String task_type = acsTask.getTask_type(); - String vehiclecode = acsTask.getVehicle_code(); - String vehiclecode2 = acsTask.getVehicle_code2(); - String storage_task_type = acsTask.getStorage_task_type(); - String priority = acsTask.getPriority(); - String is_send = acsTask.getIs_send(); + public void run() { - String start_device_code = acsTask.getStart_device_code(); - String start_point_code = acsTask.getStart_point_code(); - - String put_device_code = acsTask.getPut_device_code(); - String put_point_code = acsTask.getPut_point_code(); - - String next_device_code = acsTask.getNext_device_code(); - String next_point_code = acsTask.getNext_point_code(); - - String start_point_code2 = acsTask.getStart_point_code2(); - String start_device_code2 = acsTask.getStart_device_code2(); - - String next_point_code2 = acsTask.getNext_point_code2(); - String next_device_code2 = acsTask.getNext_device_code2(); - - String route_plan_code = acsTask.getRoute_plan_code(); - String vehicleType = acsTask.getVehicle_type(); - String agv_system_type = acsTask.getAgv_system_type(); - - String start_height = acsTask.getStart_height(); - String next_height = acsTask.getNext_height(); - Integer agvActionType = acsTask.getAgv_action_type(); - - - if (StrUtil.equals(is_send, "0")) { - continue; - } - - //校验路由关系 - List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); - if (ObjectUtils.isEmpty(shortPathsList)) { - acsTask.setRemark("路由不通无法生成指令"); - taskserver.updateByCodeFromCache(acsTask); - continue; - } - - if (!StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { - continue; - } - - RouteLineDto routeLineDto = shortPathsList.get(0); - String path = routeLineDto.getPath(); - String type = routeLineDto.getType(); - String[] str = path.split("->"); - List pathlist = Arrays.asList(str); - int index = 0; - boolean flag = false; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - if("1".equals(acsTask.getTask_type()) && !pathlist.get(m+1).equals(next_device_code)){ - flag = true; - break; + List list = taskService.findReadyByAgvSystemType(AgvSystemTypeEnum.Hik_System_Type.getCode()); + //先根据任务类型分组为CTU任务和AGV任务 + Map> groupedByTaskTypeTasks = list.stream() + .collect(Collectors.groupingBy(task -> { + if (TaskTypeEnum.CTU_TASK.getCode().equals(task.getTask_type())) { + return TaskTypeEnum.CTU_TASK.getCode(); + } else if (TaskTypeEnum.AGV_TASK.getCode().equals(task.getTask_type())) { + return TaskTypeEnum.AGV_TASK.getCode(); + } else { + return TaskTypeEnum.OTHER_TASK.getCode(); } - index = m + 1; - break; - } - } - if (flag) { - acsTask.setRemark("路由不通无法生成指令"); - taskserver.update(acsTask); - taskserver.updateByCodeFromCache(acsTask); - continue; - } - next_device_code = pathlist.get(index); + })); + //遍历每个任务类型的任务 + groupedByTaskTypeTasks.forEach((taskType, acsTasks) -> { + if (TaskTypeEnum.CTU_TASK.getCode().equals(taskType)) { + Map> groupByInstTypeTasks = acsTasks.stream().collect(Collectors.groupingBy(ctu -> { + Device start_device = deviceAppService.findDeviceByCode(ctu.getStart_device_code()); + Device next_device = deviceAppService.findDeviceByCode(ctu.getNext_device_code()); + if (start_device != null && start_device.getDevice_type().equals("conveyor") && next_device != null && next_device.getDevice_type().equals("storage")) { + return InstTypeEnum.CTU_IN_TASK.getCode(); + } else if (start_device != null && start_device.getDevice_type().equals("storage") && next_device != null && next_device.getDevice_type().equals("conveyor")) { + return InstTypeEnum.CTU_OUT_TASK.getCode(); + } else if (start_device != null && next_device != null && start_device.getDevice_type().equals("storage") && next_device.getDevice_type().equals("storage")) { + return InstTypeEnum.CTU_MOVE_TASK.getCode(); + } + return InstTypeEnum.OTHER_TASK.getCode(); + })); + groupByInstTypeTasks.forEach((instType, acsTaskList) -> { + if (InstTypeEnum.CTU_OUT_TASK.getCode().equals(instType)) { + InstructionDto waitInst = instructionService.findByInstTypeAndIsWait(InstTypeEnum.CTU_OUT_TASK.getCode(), "1"); + if (ObjectUtil.isEmpty(waitInst)){ + Map> groupedByWaitStatus = acsTaskList.stream() + .collect(Collectors.groupingBy(TaskDto::getIs_wait)); + groupedByWaitStatus.forEach((waitStatus, isWaitTaskList) -> { + if ("0".equals(waitStatus)) { + isWaitTaskList.forEach(acsTask -> { + String taskId = acsTask.getTask_id(); + String taskCode = acsTask.getTask_code(); + String vehicle_code = acsTask.getVehicle_code(); + String priority = acsTask.getPriority(); + String start_device_code = acsTask.getStart_device_code(); + String start_point_code = acsTask.getStart_point_code(); + String start_parent_code = acsTask.getStart_parent_code(); + String next_device_code = acsTask.getNext_device_code(); + String next_point_code = acsTask.getNext_point_code(); + String next_parent_code = acsTask.getNext_parent_code(); + String vehicle_type = acsTask.getVehicle_type(); + String agv_system_type = acsTask.getAgv_system_type(); + String is_get_pause = acsTask.getIs_get_pause(); + String is_put_pause = acsTask.getIs_put_pause(); + String is_wait = acsTask.getIs_wait(); - if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) { - next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); + //校验路由关系 + List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, "normal"); + if (ObjectUtils.isEmpty(shortPathsList)) { + acsTask.setRemark("路由不通无法生成指令"); + taskService.updateByCodeFromCache(acsTask); + return; + } + RouteLineDto routeLineDto = shortPathsList.get(0); + String path = routeLineDto.getPath(); + String[] str = path.split("->"); + List pathlist = Arrays.asList(str); + int index = 0; + for (int m = 0; m < pathlist.size(); m++) { + if (pathlist.get(m).equals(start_device_code)) { + index = m + 1; + break; + } + } + next_device_code = pathlist.get(index); + + if (StrUtil.equals(deviceAppService.findDeviceTypeByCode(next_device_code), "storage")) { + next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); + } else { + next_point_code = next_device_code; + } + + Instruction instdto = new Instruction(); + instdto.setInstruction_type(instType); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRemark(acsTask.getRemark()); + instdto.setTask_id(taskId); + instdto.setTask_code(taskCode); + instdto.setVehicle_code(vehicle_code); + instdto.setVehicle_type(vehicle_type); + String now = DateUtil.now(); + instdto.setCreate_time(now); + instdto.setCreate_by(SecurityUtils.getCurrentNickName()); + + instdto.setStart_device_code(start_device_code); + instdto.setStart_point_code(start_point_code); + instdto.setStart_parent_code(start_parent_code); + instdto.setNext_device_code(next_device_code); + instdto.setNext_point_code(next_point_code); + instdto.setNext_parent_code(next_parent_code); + instdto.setIs_get_pause(is_get_pause); + instdto.setIs_put_pause(is_put_pause); + instdto.setIs_wait(is_wait); + + instdto.setPriority(priority); + instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); + instdto.setExecute_device_code(start_point_code); + instdto.setAgv_system_type(agv_system_type); + + try { + instructionService.create(instdto); + } catch (Exception e) { + acsTask.setRemark("指令创建失败:" + e.getMessage()); + taskService.updateByCodeFromCache(acsTask); + return; + } + //创建成功后 + acsTask.setTask_status(TaskStatusEnum.BUSY.getIndex()); + taskService.update(acsTask); + }); + } else if ("1".equals(waitStatus)) { + // 处理需要等待的任务 + TaskDto acsTask = isWaitTaskList.get(0); + String taskId = acsTask.getTask_id(); + String taskCode = acsTask.getTask_code(); + String vehicle_code = acsTask.getVehicle_code(); + String priority = acsTask.getPriority(); + String start_device_code = acsTask.getStart_device_code(); + String start_point_code = acsTask.getStart_point_code(); + String start_parent_code = acsTask.getStart_parent_code(); + String next_device_code = acsTask.getNext_device_code(); + String next_point_code = acsTask.getNext_point_code(); + String next_parent_code = acsTask.getNext_parent_code(); + String vehicle_type = acsTask.getVehicle_type(); + String agv_system_type = acsTask.getAgv_system_type(); + String is_get_pause = acsTask.getIs_get_pause(); + String is_put_pause = acsTask.getIs_put_pause(); + String is_wait = acsTask.getIs_wait(); + + //校验路由关系 + List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, "normal"); + if (ObjectUtils.isEmpty(shortPathsList)) { + acsTask.setRemark("路由不通无法生成指令"); + taskService.updateByCodeFromCache(acsTask); + return; + } + RouteLineDto routeLineDto = shortPathsList.get(0); + String path = routeLineDto.getPath(); + String[] str = path.split("->"); + List pathlist = Arrays.asList(str); + int index = 0; + for (int m = 0; m < pathlist.size(); m++) { + if (pathlist.get(m).equals(start_device_code)) { + index = m + 1; + break; + } + } + next_device_code = pathlist.get(index); + + if (StrUtil.equals(deviceAppService.findDeviceTypeByCode(next_device_code), "storage")) { + next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); + } else { + next_point_code = next_device_code; + } + + Instruction instdto = new Instruction(); + instdto.setInstruction_type(instType); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRemark(acsTask.getRemark()); + instdto.setTask_id(taskId); + instdto.setTask_code(taskCode); + instdto.setVehicle_code(vehicle_code); + instdto.setVehicle_type(vehicle_type); + String now = DateUtil.now(); + instdto.setCreate_time(now); + instdto.setCreate_by(SecurityUtils.getCurrentNickName()); + + instdto.setStart_device_code(start_device_code); + instdto.setStart_point_code(start_point_code); + instdto.setStart_parent_code(start_parent_code); + instdto.setNext_device_code(next_device_code); + instdto.setNext_point_code(next_point_code); + instdto.setNext_parent_code(next_parent_code); + instdto.setIs_get_pause(is_get_pause); + instdto.setIs_put_pause(is_put_pause); + instdto.setIs_wait(is_wait); + + instdto.setPriority(priority); + instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); + instdto.setExecute_device_code(start_point_code); + instdto.setAgv_system_type(agv_system_type); + + try { + instructionService.create(instdto); + } catch (Exception e) { + acsTask.setRemark("指令创建失败:" + e.getMessage()); + taskService.updateByCodeFromCache(acsTask); + return; + } + //创建成功后 + acsTask.setTask_status(TaskStatusEnum.BUSY.getIndex()); + taskService.update(acsTask); + } + }); + } + } else { + acsTaskList.forEach(acsTask -> { + String taskId = acsTask.getTask_id(); + String taskCode = acsTask.getTask_code(); + String vehicle_code = acsTask.getVehicle_code(); + String priority = acsTask.getPriority(); + String start_device_code = acsTask.getStart_device_code(); + String start_point_code = acsTask.getStart_point_code(); + String start_parent_code = acsTask.getStart_parent_code(); + String next_device_code = acsTask.getNext_device_code(); + String next_point_code = acsTask.getNext_point_code(); + String next_parent_code = acsTask.getNext_parent_code(); + String vehicle_type = acsTask.getVehicle_type(); + String agv_system_type = acsTask.getAgv_system_type(); + String is_get_pause = acsTask.getIs_get_pause(); + String is_put_pause = acsTask.getIs_put_pause(); + String is_wait = acsTask.getIs_wait(); + + //校验路由关系 + List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, "normal"); + if (ObjectUtils.isEmpty(shortPathsList)) { + acsTask.setRemark("路由不通无法生成指令"); + taskService.updateByCodeFromCache(acsTask); + return; + } + RouteLineDto routeLineDto = shortPathsList.get(0); + String path = routeLineDto.getPath(); + String[] str = path.split("->"); + List pathlist = Arrays.asList(str); + int index = 0; + for (int m = 0; m < pathlist.size(); m++) { + if (pathlist.get(m).equals(start_device_code)) { + index = m + 1; + break; + } + } + next_device_code = pathlist.get(index); + + if (StrUtil.equals(deviceAppService.findDeviceTypeByCode(next_device_code), "storage")) { + next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); + } else { + next_point_code = next_device_code; + } + + Instruction instdto = new Instruction(); + instdto.setInstruction_type(instType); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRemark(acsTask.getRemark()); + instdto.setTask_id(taskId); + instdto.setTask_code(taskCode); + instdto.setVehicle_code(vehicle_code); + instdto.setVehicle_type(vehicle_type); + String now = DateUtil.now(); + instdto.setCreate_time(now); + instdto.setCreate_by(SecurityUtils.getCurrentNickName()); + + instdto.setStart_device_code(start_device_code); + instdto.setStart_point_code(start_point_code); + instdto.setStart_parent_code(start_parent_code); + instdto.setNext_device_code(next_device_code); + instdto.setNext_point_code(next_point_code); + instdto.setNext_parent_code(next_parent_code); + instdto.setIs_get_pause(is_get_pause); + instdto.setIs_put_pause(is_put_pause); + instdto.setIs_wait(is_wait); + + instdto.setPriority(priority); + instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); + instdto.setExecute_device_code(start_point_code); + instdto.setAgv_system_type(agv_system_type); + + try { + instructionService.create(instdto); + } catch (Exception e) { + acsTask.setRemark("指令创建失败:" + e.getMessage()); + taskService.updateByCodeFromCache(acsTask); + return; + } + //创建成功后 + acsTask.setTask_status(TaskStatusEnum.BUSY.getIndex()); + taskService.update(acsTask); + }); + } + }); + } else if (TaskTypeEnum.AGV_TASK.getCode().equals(taskType)) { + acsTasks.forEach(acsTask -> { + String taskId = acsTask.getTask_id(); + String taskCode = acsTask.getTask_code(); + String vehicle_code = acsTask.getVehicle_code(); + String vehicle_type = acsTask.getVehicle_type(); + String priority = acsTask.getPriority(); + String start_device_code = acsTask.getStart_device_code(); + String start_point_code = acsTask.getStart_point_code(); + String start_parent_code = acsTask.getStart_parent_code(); + String next_device_code = acsTask.getNext_device_code(); + String next_point_code = acsTask.getNext_point_code(); + String next_parent_code = acsTask.getNext_parent_code(); + String agv_system_type = acsTask.getAgv_system_type(); + String is_get_pause = acsTask.getIs_get_pause(); + String is_put_pause = acsTask.getIs_put_pause(); + String is_wait = acsTask.getIs_wait(); + + //校验路由关系 + List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, "normal"); + if (ObjectUtils.isEmpty(shortPathsList)) { + acsTask.setRemark("路由不通无法生成指令"); + taskService.updateByCodeFromCache(acsTask); + return; + } + RouteLineDto routeLineDto = shortPathsList.get(0); + String path = routeLineDto.getPath(); + String[] str = path.split("->"); + List pathlist = Arrays.asList(str); + int index = 0; + for (int m = 0; m < pathlist.size(); m++) { + if (pathlist.get(m).equals(start_device_code)) { + index = m + 1; + break; + } + } + next_device_code = pathlist.get(index); + + if (StrUtil.equals(deviceAppService.findDeviceTypeByCode(next_device_code), "storage")) { + next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); + } else { + next_point_code = next_device_code; + } + + Instruction instdto = new Instruction(); + instdto.setInstruction_type("1".equals(is_wait) ? InstTypeEnum.AGV_THREE_TASK.getIndex() : InstTypeEnum.AGV_TWO_TASK.getIndex()); + instdto.setInstruction_id(IdUtil.simpleUUID()); + instdto.setRemark(acsTask.getRemark()); + instdto.setTask_id(taskId); + instdto.setTask_code(taskCode); + instdto.setVehicle_code(vehicle_code); + instdto.setVehicle_type(vehicle_type); + + String now = DateUtil.now(); + instdto.setCreate_time(now); + instdto.setCreate_by(SecurityUtils.getCurrentNickName()); + + instdto.setStart_device_code(start_device_code); + instdto.setStart_point_code(start_point_code); + instdto.setStart_parent_code(start_parent_code); + instdto.setNext_device_code(next_device_code); + instdto.setNext_point_code(next_point_code); + instdto.setNext_parent_code(next_parent_code); + instdto.setIs_get_pause(is_get_pause); + instdto.setIs_put_pause(is_put_pause); + instdto.setIs_wait(is_wait); + + instdto.setPriority(priority); + instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); + instdto.setExecute_device_code(start_point_code); + instdto.setAgv_system_type(agv_system_type); + + try { + instructionService.create(instdto); + } catch (Exception e) { + acsTask.setRemark("指令创建失败:" + e.getMessage()); + taskService.updateByCodeFromCache(acsTask); + return; + } + //创建成功后 + acsTask.setTask_status(TaskStatusEnum.BUSY.getIndex()); + taskService.update(acsTask); + }); } else { - next_point_code = next_device_code; + log.error("任务类型错误"); + return; } - - - Instruction instdto = new Instruction(); - instdto.setInstruction_type(task_type); - instdto.setInstruction_id(IdUtil.simpleUUID()); - if (acsTask.getAgv_system_type().equals(AgvSystemTypeEnum.One_NDC_System_Type.getIndex())){ - instdto.setInstruction_code(CodeUtil.getNewCode("INSTRUCT_NO")); - } - instdto.setRoute_plan_code(route_plan_code); - instdto.setRemark(acsTask.getRemark()); - instdto.setMaterial(acsTask.getMaterial()); - instdto.setQuantity(acsTask.getQuantity()); - instdto.setTask_id(taskid); - instdto.setTask_code(taskcode); - instdto.setVehicle_code(vehiclecode); - instdto.setVehicle_code2(vehiclecode2); - String now = DateUtil.now(); - instdto.setCreate_time(now); - instdto.setCreate_by(SecurityUtils.getCurrentNickName()); - - instdto.setStart_device_code(start_device_code); - instdto.setStart_point_code(start_point_code); - instdto.setPut_device_code(put_device_code); - instdto.setPut_point_code(put_point_code); - instdto.setNext_device_code(next_device_code); - instdto.setNext_point_code(next_point_code); - - instdto.setStart_point_code2(start_point_code2); - instdto.setStart_device_code2(start_device_code2); - instdto.setNext_point_code2(next_point_code2); - instdto.setNext_device_code2(next_device_code2); - - instdto.setPriority(priority); - instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); - instdto.setExecute_device_code(start_point_code); - instdto.setVehicle_type(vehicleType); - instdto.setAgv_system_type(agv_system_type); - instdto.setStart_height(start_height); - instdto.setNext_height(next_height); - instdto.setAgv_action_type(agvActionType); - //判断agv系统 - //1、1楼叉车系统 - //2、2楼1区域AGV系统 - //3、2楼2区域AGV系统 -已废弃 - if (StrUtil.equals(agv_system_type, CommonFinalParam.TWO)) { - // task_type - //1、生箔; Itype=1:取空,取满,放空,放满; - //2、分切 Itype=3取满、取空、放满、放空; - //3、普通任务 Itype=2:取货、放货; - //4、叉车任务 - //5、输送任务 - //6、行架 - //7、立库 - if (StrUtil.equals(task_type, CommonFinalParam.ONE)) { - instdto.setAgv_inst_type(CommonFinalParam.ONE); - } else if (StrUtil.equals(task_type, "3")) { - instdto.setAgv_inst_type("2"); - } else if (StrUtil.equals(task_type, "2")) { - instdto.setAgv_inst_type("3"); - } else if (StrUtil.equals(task_type, "8")) { - instdto.setAgv_inst_type("2"); - } else { - log.info("未找到对应的AGV指令类型,任务号:" + acsTask.getTask_code() + ",task_type:" + acsTask.getTask_type()); - continue; - } - } else { - instdto.setAgv_inst_type("4"); - } - try { - instructionService.create(instdto); - } catch (Exception e) { - acsTask.setRemark(e.getMessage()); - taskserver.updateByCodeFromCache(acsTask); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("定时创建指令失败") - .content(e.getMessage()) - .build(); - logDto.setLog_level(4); - luceneExecuteLogService.deviceExecuteLog(logDto); - continue; - } - //创建指令后修改任务状态 - acsTask.setTask_status(TaskStatusEnum.BUSY.getIndex()); - acsTask.setUpdate_time(DateUtil.now()); - acsTask.setRemark(" "); - taskserver.update(acsTask); - - } + }); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/Ndcconnect.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/Ndcconnect.java deleted file mode 100644 index 8c10736..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/Ndcconnect.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.nl.system.service.quartz.task; - -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.auto.run.TwoNDCSocketConnectionAutoRun; -import org.nl.config.SpringContextHolder; -import org.springframework.stereotype.Component; - -@Slf4j -@Component -public class Ndcconnect { - public void run() { - log.info("AGV-ACS心跳链接开始"); - byte[] data = null; - NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); - data = ndcAgvService.sendAgvTwoModeInst(); - TwoNDCSocketConnectionAutoRun.write(data); - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/ToAgvDevice.java b/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/ToAgvDevice.java deleted file mode 100644 index 8de42f3..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/ToAgvDevice.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.nl.system.service.quartz.task; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.agv.server.AgvService; -import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.common.mnt.websocket.MsgType; -import org.nl.common.mnt.websocket.SocketMsg; -import org.nl.common.mnt.websocket.WebSocketServer; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * 查询AGV设备状态 - */ -@Slf4j -@Component -public class ToAgvDevice { - @Autowired - AcsToWmsService acsToWmsService; - @Autowired - AgvService agvService; - - public void run() throws Exception { - JSONObject json = new JSONObject(); - Map agv_map = agvService.findAllAgvFromCache(); - - JSONArray agv_rows = new JSONArray(); - JSONObject row = new JSONObject(); - - for (AgvDto agvDto : agv_map.values()) { - row.put("device_code", agvDto.getName()); - row.put("energyLevel", agvDto.getEnergyLevel()); - if (agvDto.getState().equals("UNKNOWN")) { - row.put("status_name", "有任务"); - row.put("flag", "1"); - } - if (agvDto.getState().equals("UNAVAILABLE")) { - row.put("status_name", "网络异常"); - row.put("flag", "1"); - } - if (agvDto.getState().equals("ERROR")) { - row.put("status_name", "机器错误"); - row.put("flag", "1"); - } - if (agvDto.getState().equals("IDLE")) { - row.put("status_name", "空闲"); - row.put("flag", "0"); - } - if (agvDto.getState().equals("EXECUTING")) { - row.put("status_name", "运行中"); - row.put("flag", "0"); - } - if (agvDto.getState().equals("CHARGING")) { - row.put("status_name", "充电中"); - row.put("flag", "0"); - } - row.put("transportOrder", agvDto.getTransportOrder()); - row.put("positionX", agvDto.getPositionX()); - row.put("positionY", agvDto.getPositionY()); - row.put("positionAngle", agvDto.getPositionAngle()); - agv_rows.add(row); - } - json.put("agv_rows", agv_rows); - SocketMsg deviceInfo = new SocketMsg(json, MsgType.INFO); - WebSocketServer.sendInfo(deviceInfo, "toAgvDevice_data"); - -// acsToWmsService.feedbackAgv(row); - } -} diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 62ad5a0..4a03887 100644 --- a/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -10,11 +10,11 @@ spring: driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_acs_97}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:xuGongHanYun_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:root} # password: ${DB_PWD:Root.123456} - password: ${DB_PWD:123456} + password: ${DB_PWD:password} # 初始连接数 initial-size: 5 # 最小连接数 @@ -127,7 +127,7 @@ file: avatarMaxSize: 5 logging: file: - path: D:\acs_logs # /Users/onepiece/myFile/acs_logs + path: /Users/onepiece/myFile/acs_logs config: classpath:logback-spring.xml lucene: index: diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/nladmin-system/nlsso-server/src/main/resources/config/application.yml index 0f046a1..caa1ab3 100644 --- a/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -157,5 +157,5 @@ mybatis-plus: lucene: index: - path: C:\acs\lucene\index1 + path: lucene/index diff --git a/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index 427aaa5..59daba2 100644 --- a/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -68,11 +68,10 @@ https://juejin.cn/post/6844903775631572999 - - + - + + + + @@ -114,14 +116,11 @@ https://juejin.cn/post/6844903775631572999 - - - diff --git a/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java b/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java index f4b1474..9109221 100644 --- a/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java +++ b/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java @@ -1,125 +1,339 @@ package org.nl; -import cn.hutool.core.collection.ListUtil; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.io.unit.DataUnit; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; +import com.digitalpetri.modbus.master.ModbusTcpMaster; +import com.digitalpetri.modbus.master.ModbusTcpMasterConfig; +import com.digitalpetri.modbus.requests.ReadHoldingRegistersRequest; +import com.digitalpetri.modbus.requests.ReadInputRegistersRequest; +import com.digitalpetri.modbus.responses.ReadHoldingRegistersResponse; +import com.digitalpetri.modbus.responses.ReadInputRegistersResponse; +import io.netty.buffer.ByteBuf; +import io.netty.util.ReferenceCountUtil; +import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.enums.InstructionStatusEnum; -import org.nl.acs.task.enums.TaskTypeEnum; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.system.service.user.ISysUserService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.scheduling.annotation.Scheduled; +import java.time.Duration; import java.util.*; -import java.util.concurrent.*; +import java.util.concurrent.CompletableFuture; + /** * @Author: lyd - * @Description: 单元测试 + * @Description: * @Date: 2023/5/15 */ +@Slf4j @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ApplicationTest { - @Autowired - private ISysUserService userService; - - private Logger logger = LoggerFactory.getLogger(ApplicationTest.class); - + private volatile boolean running = true; @Test - void contextLoads2() { - String s = IdUtil.getSnowflake(1, 1).nextIdStr() + "6-5"; - String qzz= s.substring(s.length() - 3); - System.out.println(qzz); - } + public void testReadModbus() { + String plcHost = "192.168.81.251"; + int plcPort = 502; + int unitId = 1; + long readInterval = 800; + + int maxGapRegisters = 10; - @Test - @Scheduled(cron = "0/5 * * * * ?") - void testOrderTask() { - logger.info(Thread.currentThread().getName() + "===task run"); - } + SignalConfig[] signals = { + new SignalConfig(40001, "UINT16"), + new SignalConfig(40002, "FLOAT"), + new SignalConfig(40004, "FLOAT"), + new SignalConfig(40006, "UINT16"), + new SignalConfig(40007, "UINT16") + }; - - @Test - void demo1() { - CompletableFuture future = CompletableFuture.supplyAsync(() -> { - try { - Thread.sleep(3000); // 假设这是一个耗时的操作 - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new IllegalStateException("Interrupted", e); - } - return "Result"; - }); + ModbusTcpMaster master = null; try { - String result = future.get(2, TimeUnit.SECONDS); // 设置超时时间为2秒 - System.out.println(result); - } catch (CompletionException e) { - Throwable cause = e.getCause(); - if (cause instanceof TimeoutException) { - System.out.println("Operation timed out"); - } else { - throw e; // rethrow other exceptions + ModbusTcpMasterConfig config = new ModbusTcpMasterConfig.Builder(plcHost) + .setPort(plcPort) + .setTimeout(Duration.ofSeconds(5)) + .build(); + master = new ModbusTcpMaster(config); + master.connect().get(); + System.out.println("连接成功"); + + int readCount = 0; + while (running) { + try { + readCount++; + System.out.println("\n第" + readCount + " 次," + java.time.LocalTime.now()); + + Map results = readModbusSignalsSmart(master, unitId, signals, maxGapRegisters); + + for (SignalConfig signal : signals) { + Object value = results.get(signal.address); + if (value != null) { + System.out.println("地址 " + signal.address + " (" + signal.dataType + "): " + value); + } else { + System.out.println("地址 " + signal.address + " (" + signal.dataType + "): 读取失败"); + } + } + + Thread.sleep(readInterval); + + } catch (Exception e) { + if (e.getMessage() != null && (e.getMessage().contains("Connection") || e.getMessage().contains("timeout"))) { + try { + System.out.println("连接断开,尝试重连..."); + master.disconnect(); + Thread.sleep(5000); + master.connect().get(); + System.out.println("重连成功"); + } catch (Exception reconnectEx) { + System.err.println("重连失败: " + reconnectEx.getMessage()); + break; + } + } else { + System.err.println("读取出错: " + e.getMessage()); + } + } } + } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public static void main(String[] args) throws InterruptedException, ExecutionException { - ExecutorService executor = Executors.newFixedThreadPool(5); - List>> futures = new ArrayList<>(); - List resultList = Collections.synchronizedList(new ArrayList<>()); - - - long begin = System.currentTimeMillis(); - //创建五个任务。每个任务调用一次接口 - for (int i = 0; i < 5; i++) { - futures.add(executor.submit(()->fetchDataFromApi())); - } - //等待所有任务完成并合并结果 - for (Future> future : futures) { - List result = future.get(); - resultList.addAll(result); - } - long end = System.currentTimeMillis(); - System.out.println("result size: "+resultList); - System.out.println("耗时: "+(end-begin)); - } - - public static List fetchDataFromApi() throws InterruptedException { - //模拟接口调用延迟200ms - Thread.sleep(200); - ArrayList list = new ArrayList<>(); - for (int i = 0; i < 200; i++) { - list.add("Data "+i); - } - return list; - } - - private List sortInst(List taskDtos) { - Collections.sort(taskDtos, (t1, t2) -> { - //优先级从大到小 - int i = t1.getPriority().compareTo(t2.getPriority()); - //如果优先级相等 - if (i == 0) { - //时间从早到晚 - i = t1.getCreate_time().compareTo(t2.getCreate_time()); + System.err.println("初始化连接失败: " + e.getMessage()); + e.printStackTrace(); + } finally { + if (master != null) { + master.disconnect(); } - return i; - }); - return taskDtos; + } } + private static class SignalConfig { + int address; + String dataType; + int registerCount; + + SignalConfig(int address, String dataType) { + this.address = address; + this.dataType = dataType.toUpperCase(); + this.registerCount = getRegisterCount(this.dataType); + } + + private int getRegisterCount(String dataType) { + switch (dataType) { + // 占1个寄存器 + case "BOOLEAN": + case "UINT16": + case "INT16": + return 1; + // 占2个寄存器 + case "UINT32": + case "INT32": + case "FLOAT": + return 2; + default: + return 1; + } + } + + int getStartAddress() { + return address; + } + + int getEndAddress() { + return address + registerCount - 1; + } + } + + + private Map readModbusSignalsSmart(ModbusTcpMaster master, int unitId, SignalConfig[] signals, int maxGapRegisters) { + Map results = new HashMap<>(); + + if (signals == null || signals.length == 0) { + return results; + } + + List batches = groupSignalsIntoBatches(signals, maxGapRegisters); + + System.out.println("批量读取优化:共" + batches.size() + "批次"); + for (int i = 0; i < batches.size(); i++) { + SignalBatch batch = batches.get(i); + System.out.println(" 批次" + (i + 1) + ": 地址 " + batch.startAddress + " 到 " + + batch.getEndAddress() + " (共" + batch.totalRegisters + "个寄存器, " + + batch.signals.size() + "个信号)"); + } + + for (SignalBatch batch : batches) { + try { + byte[] allData = readModbusAddressBatch(master, unitId, batch.startAddress, batch.totalRegisters); + + for (SignalConfig signal : batch.signals) { + int offsetRegisters = signal.getStartAddress() - batch.startAddress; + int offsetBytes = offsetRegisters * 2; + int dataSize = signal.registerCount * 2; + + byte[] signalData = new byte[dataSize]; + System.arraycopy(allData, offsetBytes, signalData, 0, dataSize); + + Object value = parseValueByType(signalData, signal.dataType); + results.put(signal.address, value); + } + } catch (Exception e) { + System.err.println("读取批次 [地址" + batch.startAddress + "-" + batch.getEndAddress() + "] 失败: " + e.getMessage()); + for (SignalConfig signal : batch.signals) { + results.put(signal.address, null); + } + } + } + + return results; + } + + private List groupSignalsIntoBatches(SignalConfig[] signals, int maxGapRegisters) { + List batches = new ArrayList<>(); + + SignalConfig[] sortedSignals = signals.clone(); + Arrays.sort(sortedSignals, Comparator.comparingInt(SignalConfig::getStartAddress)); + + SignalBatch currentBatch = null; + + for (SignalConfig signal : sortedSignals) { + if (currentBatch == null) { + currentBatch = new SignalBatch(signal); + batches.add(currentBatch); + } else { + int currentEnd = currentBatch.getEndAddress(); + int gap = signal.getStartAddress() - currentEnd - 1; + + if (gap <= maxGapRegisters) { + currentBatch.addSignal(signal); + if (gap > 0) { + System.out.println(" 合并信号: " + signal.address + " (间隙=" + gap + "个寄存器)"); + } + } else { + currentBatch = new SignalBatch(signal); + batches.add(currentBatch); + } + } + } + + return batches; + } + + + private static class SignalBatch { + int startAddress; + int totalRegisters; + List signals; + + SignalBatch(SignalConfig firstSignal) { + this.startAddress = firstSignal.getStartAddress(); + this.totalRegisters = firstSignal.registerCount; + this.signals = new ArrayList<>(); + this.signals.add(firstSignal); + } + + void addSignal(SignalConfig signal) { + this.signals.add(signal); + int currentEnd = getEndAddress(); + int signalEnd = signal.getEndAddress(); + + if (signalEnd > currentEnd) { + this.totalRegisters = signalEnd - this.startAddress + 1; + } + } + + int getEndAddress() { + return startAddress + totalRegisters - 1; + } + } + + /** + * 批量读取连续的Modbus寄存器 + */ + private byte[] readModbusAddressBatch(ModbusTcpMaster master, int unitId, int startModbusAddress, int addressCount) throws Exception { + if (startModbusAddress >= 30001 && startModbusAddress <= 39999) { + int registerAddress = startModbusAddress - 30001; + ReadInputRegistersRequest request = new ReadInputRegistersRequest(registerAddress, addressCount); + CompletableFuture future = master.sendRequest(request, unitId); + ReadInputRegistersResponse response = future.get(); + + ByteBuf registers = response.getRegisters(); + try { + byte[] data = new byte[registers.readableBytes()]; + registers.readBytes(data); + return data; + } finally { + ReferenceCountUtil.release(registers); + } + + } else if (startModbusAddress >= 40001 && startModbusAddress <= 49999) { + int registerAddress = startModbusAddress - 40001; + ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(registerAddress, addressCount); + CompletableFuture future = master.sendRequest(request, unitId); + ReadHoldingRegistersResponse response = future.get(); + + ByteBuf registers = response.getRegisters(); + try { + byte[] data = new byte[registers.readableBytes()]; + registers.readBytes(data); + return data; + } finally { + ReferenceCountUtil.release(registers); + } + } else { + throw new IllegalArgumentException("不支持的地址: " + startModbusAddress); + } + } + + /** + * 根据数据类型解析值 + */ + private Object parseValueByType(byte[] data, String dataType) { + switch (dataType.toUpperCase()) { + case "BOOLEAN": + int boolValue = parseUnsignedShort(data); + return boolValue != 0; + case "UINT16": + return parseUnsignedShort(data); + case "INT16": + return parseSignedShort(data); + case "UINT32": + return parseUnsignedInt(data); + case "INT32": + return parseSignedInt(data); + case "FLOAT": + return parseFloat(data); + default: + throw new IllegalArgumentException("不支持的数据类型: " + dataType); + } + } + + private int parseUnsignedShort(byte[] data) { + return ((data[0] & 0xFF) << 8) | (data[1] & 0xFF); + } + + private short parseSignedShort(byte[] data) { + return (short) (((data[0] & 0xFF) << 8) | (data[1] & 0xFF)); + } + + private long parseUnsignedInt(byte[] data) { + return ((long) (data[0] & 0xFF) << 24) | + ((long) (data[1] & 0xFF) << 16) | + ((long) (data[2] & 0xFF) << 8) | + (long) (data[3] & 0xFF); + } + + private int parseSignedInt(byte[] data) { + return ((data[0] & 0xFF) << 24) | + ((data[1] & 0xFF) << 16) | + ((data[2] & 0xFF) << 8) | + (data[3] & 0xFF); + } + + private float parseFloat(byte[] data) { + byte[] reversed = new byte[] { data[3], data[2], data[1], data[0] }; + int bits = ((reversed[0] & 0xFF) << 24) | + ((reversed[1] & 0xFF) << 16) | + ((reversed[2] & 0xFF) << 8) | + (reversed[3] & 0xFF); + return Float.intBitsToFloat(bits); + } } diff --git a/nladmin-ui/public/favicon.ico b/nladmin-ui/public/favicon.ico index fcb6999..63a1585 100644 Binary files a/nladmin-ui/public/favicon.ico and b/nladmin-ui/public/favicon.ico differ diff --git a/nladmin-ui/src/assets/images/logo1.png b/nladmin-ui/src/assets/images/logo1.png index f757710..a1ca19b 100644 Binary files a/nladmin-ui/src/assets/images/logo1.png and b/nladmin-ui/src/assets/images/logo1.png differ diff --git a/nladmin-ui/src/assets/images/logo2.png b/nladmin-ui/src/assets/images/logo2.png deleted file mode 100644 index a1ca19b..0000000 Binary files a/nladmin-ui/src/assets/images/logo2.png and /dev/null differ diff --git a/nladmin-ui/src/assets/images/logo3.png b/nladmin-ui/src/assets/images/logo3.png new file mode 100644 index 0000000..f757710 Binary files /dev/null and b/nladmin-ui/src/assets/images/logo3.png differ diff --git a/nladmin-ui/src/views/acs/device/config.vue b/nladmin-ui/src/views/acs/device/config.vue index 5f73b43..20f0d4b 100644 --- a/nladmin-ui/src/views/acs/device/config.vue +++ b/nladmin-ui/src/views/acs/device/config.vue @@ -77,6 +77,9 @@ import standard_autodoor from '@/views/acs/device/driver/standard_autodoor' import standard_inspect_site from './driver/standard_inspect_site' import standard_ordinary_site from './driver/standard_ordinary_site' import belt_conveyor from '@/views/acs/device/driver/belt_conveyor' +import standard_weight from '@/views/acs/device/driver/standard_weight' +import temperature_humidity_driver from '@/views/acs/device/driver/temperature_humidity_driver' +import standard_storage from '@/views/acs/device/driver/standard_storage' import agv_ndc_one from '@/views/acs/device/driver/agv/agv_ndc_one' import agv_ndc_two from '@/views/acs/device/driver/agv/agv_ndc_two' import xg_agv from '@/views/acs/device/driver/agv/xg_agv' @@ -93,7 +96,10 @@ export default { xg_agv, belt_conveyor, standard_manipulator, - xg_agv_car + xg_agv_car, + standard_weight, + temperature_humidity_driver, + standard_storage }, dicts: ['device_type'], mixins: [crud], diff --git a/nladmin-ui/src/views/acs/device/driver/standard_storage.vue b/nladmin-ui/src/views/acs/device/driver/standard_storage.vue new file mode 100644 index 0000000..2b096b4 --- /dev/null +++ b/nladmin-ui/src/views/acs/device/driver/standard_storage.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/nladmin-ui/src/views/acs/device/driver/standard_weight.vue b/nladmin-ui/src/views/acs/device/driver/standard_weight.vue new file mode 100644 index 0000000..eabc695 --- /dev/null +++ b/nladmin-ui/src/views/acs/device/driver/standard_weight.vue @@ -0,0 +1,530 @@ + + + + + diff --git a/nladmin-ui/src/views/acs/device/driver/temperature_humidity_driver.vue b/nladmin-ui/src/views/acs/device/driver/temperature_humidity_driver.vue new file mode 100644 index 0000000..eabc695 --- /dev/null +++ b/nladmin-ui/src/views/acs/device/driver/temperature_humidity_driver.vue @@ -0,0 +1,530 @@ + + + + + diff --git a/nladmin-ui/src/views/acs/device/opc/index.vue b/nladmin-ui/src/views/acs/device/opc/index.vue index c5d7477..c85bc07 100644 --- a/nladmin-ui/src/views/acs/device/opc/index.vue +++ b/nladmin-ui/src/views/acs/device/opc/index.vue @@ -104,12 +104,11 @@ { + if (item.hasOwnProperty('hasChildren')) { + item.hasChildren = item.hasChildren === "1" || item.hasChildren === 1 || item.hasChildren === true; + } else if (item.children && item.children.length > 0) { + item.hasChildren = true; + } else { + item.hasChildren = false; + } + if (item.children && Array.isArray(item.children)) { + item.children = this.processTreeData(item.children); + } + return item; + }); + }, handleClick(row, flag) { // flag为0是新增,flag为1是编辑,flag为2是删除 // 如果是父类操作 diff --git a/nladmin-ui/src/views/acs/instruction/index.vue b/nladmin-ui/src/views/acs/instruction/index.vue index 3d552c3..5d22f2f 100644 --- a/nladmin-ui/src/views/acs/instruction/index.vue +++ b/nladmin-ui/src/views/acs/instruction/index.vue @@ -134,7 +134,7 @@ + - - - + + + + + + + + + + - + - +
@@ -124,23 +124,44 @@ /> - + + + + + + + + + + - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -443,20 +392,33 @@ + - - - - + + + + + + + + + +
+
+ + +
+ + + + + + + + + + + + + +
+ + + + + diff --git a/nladmin-ui/src/views/monitor/interface/search.vue b/nladmin-ui/src/views/monitor/interface/search.vue new file mode 100644 index 0000000..78c1f01 --- /dev/null +++ b/nladmin-ui/src/views/monitor/interface/search.vue @@ -0,0 +1,136 @@ + + + diff --git a/nladmin-ui/src/views/monitor/interface/time.vue b/nladmin-ui/src/views/monitor/interface/time.vue new file mode 100644 index 0000000..36d504a --- /dev/null +++ b/nladmin-ui/src/views/monitor/interface/time.vue @@ -0,0 +1,64 @@ + + + diff --git a/nladmin-ui/src/views/monitor/lucene/api/lucene.js b/nladmin-ui/src/views/monitor/lucene/api/lucene.js index 674bb2c..6739a25 100644 --- a/nladmin-ui/src/views/monitor/lucene/api/lucene.js +++ b/nladmin-ui/src/views/monitor/lucene/api/lucene.js @@ -15,4 +15,18 @@ export function labelsValues() { }) } -export default { getLogData, labelsValues } +export function getDeviceLogType() { + return request({ + url: 'api/lucene/getDeviceLogType', + method: 'get' + }) +} + +export function getLogTypes() { + return request({ + url: 'api/lucene/getLogTypes', + method: 'get' + }) +} + +export default { getLogData, labelsValues, getDeviceLogType, getLogTypes } diff --git a/nladmin-ui/src/views/monitor/lucene/index.vue b/nladmin-ui/src/views/monitor/lucene/index.vue index 30fad03..881c11e 100644 --- a/nladmin-ui/src/views/monitor/lucene/index.vue +++ b/nladmin-ui/src/views/monitor/lucene/index.vue @@ -1,7 +1,12 @@