diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java index 34f2d89..dd3bade 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java @@ -2,17 +2,27 @@ package org.nl.acs.device_driver.basedriver.standard_inspect_site; 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 cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import net.dreamlu.mica.core.utils.StringUtil; +import org.apache.commons.lang3.ObjectUtils; import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; 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.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.wms.service.AcsToHJXService; +import org.nl.acs.ext.wms.service.AcsToMesService; +import org.nl.acs.ext.wms.service.AcsToNDCService; +import org.nl.acs.ext.wms.service.AcsToZDWmsService; +import org.nl.acs.instruction.enums.InstTypeEnum; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.monitor.DeviceStageMonitor; @@ -24,12 +34,15 @@ import org.nl.acs.route.service.RouteLineService; import org.nl.acs.route.service.dto.RouteLineDto; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; +import java.io.IOException; import java.util.*; /** @@ -38,7 +51,7 @@ import java.util.*; @Slf4j @Data @RequiredArgsConstructor -public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { +public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); @Autowired InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); @@ -48,6 +61,15 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); @Autowired TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); + DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); + //外部系统交互 + AcsToZDWmsService acsToZDWmsService = SpringContextHolder.getBean(AcsToZDWmsService.class); + AcsToHJXService acsToHJXService = SpringContextHolder.getBean(AcsToHJXService.class); + AcsToMesService acsToMesService = SpringContextHolder.getBean(AcsToMesService.class); + AcsToNDCService acsToNDCService = SpringContextHolder.getBean(AcsToNDCService.class); + String container; String container_type_desc; String last_container_type_desc; @@ -132,172 +154,438 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp @Override public void execute() { - String message = null; -// try { -// String device_code = this.getDeviceCode(); -// mode = this.itemProtocol.getMode(); -// error = this.itemProtocol.getError(); -// move = this.itemProtocol.getMove(); -// task = this.itemProtocol.getTask(); -// hasGoods = this.itemProtocol.getMove(); -// -// if (mode != last_mode) { -// this.setRequireSucess(false); -// } -// if (move != last_move) { -// } -// if (error != last_error) { -// } -// if (this.getApply_handling()) { -// String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString(); -// DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); -// Device link_device = appService.findDeviceByCode(link_device_code); -// StandardInspectSiteDeviceDriver standardInspectSiteDevicedriver; -// if (link_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { -// standardInspectSiteDevicedriver = (StandardInspectSiteDeviceDriver) link_device.getDeviceDriver(); -//// if(standardInspectSiteDevicedriver.getMode() != 2){ -//// log.debug("设备未待机"); -//// return; -//// } -//// if(standardInspectSiteDevicedriver.getMove() != 0){ -//// log.debug("设备不满足放货条件"); -//// return; -//// } -// -// //如果目标设备申请叫料 则允许生成任务 -// if (standardInspectSiteDevicedriver.getApply_material()) { -// TaskDto dto = new TaskDto(); -// String now = DateUtil.now(); -// dto.setTask_id(IdUtil.simpleUUID()); -// dto.setCreate_by(this.getDevice().getDevice_code()); -// dto.setUpdate_by(this.getDevice().getDevice_code()); -// dto.setStart_point_code(this.getDevice().getDevice_code()); -// -// String taskcode = CodeUtil.getNewCode("TASK_NO"); -// dto.setTask_code("-" + taskcode); -// dto.setTask_status("0"); -// dto.setPriority("101"); -//// RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); -//// String next_device_codecode = jo.getNext_device_code(); -//// if(StrUtil.isEmpty(next_device_codecode)){ -//// throw new RuntimeException("该设备未找到对应路由"); -//// } -// dto.setNext_point_code(standardInspectSiteDevicedriver.getDevicecode()); -// dto.setUpdate_time(now); -// dto.setCreate_time(now); -// -// WQLObject wo = WQLObject.getWQLObject("acs_task"); -// JSONObject json = (JSONObject) JSONObject.toJSON(dto); -// -// wo.insert(json); -// standardInspectSiteDevicedriver.setApply_material(false); -// } -// } -// this.setApply_handling(false); -// } + try { + this.devicecode = this.getDevice().getDevice_code(); + if (this.reqTakeRequireSuccess && ObjectUtil.isNotEmpty(this.reqTakeInstCode)) { + Instruction instruction = instructionService.findByCodeFromCache(this.reqTakeInstCode); + //取货申请 + if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getStart_point_code(), this.devicecode)) { + if (agvphase == 1) { + device = deviceAppService.findDeviceByCode(this.devicecode); + TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); + TaskDto task = taskService.findByCode(instruction.getTask_code()); + if ((StrUtil.startWith(task.getTask_code(), "-"))) { + log.info("定点任务下发agv允许取货信号"); + HttpResponse result = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + Object ext_system = device.getExtraValue().get("ext_system"); + //检测站点,安全交互类型为中鼎的 + if (!StringUtil.isEmpty(ext_system)) { + if (ext_system.equals("1")) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "applyTake"); + log.info("请求wms取货参数:{}", jo); + HttpResponse result = acsToZDWmsService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode == 0) { + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.error("请求wms取货失败参数:{}", response); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("请求wms取货失败参数::" + response) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + } + //焊接线 + } else if (ext_system.equals("3")) { + JSONObject jo1 = new JSONObject(); + jo1.put("point", this.devicecode); + jo1.put("type", "1"); + jo1.put("containerCode", task.getVehicle_code()); + Object url = device.getExtraValue().get("address"); + if (StringUtil.isEmpty(ext_system)) { + log.error("请求安全交互失败,未配置焊接线IP" + this.devicecode); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("请求安全交互失败,未配置焊接线IP" + this.devicecode) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + return; + } + jo1.put("url", url); + HttpResponse result = acsToHJXService.actionRequest(jo1); + JSONObject response = JSONObject.parseObject(result.body()); + int code = response.getInteger("code"); + if (code == 200) { + log.info("请求焊接线成功,申请取货 请求结果{}", code); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("请求焊接线成功,申请取货 请求结果:" + code) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.error("请求焊接线失败,申请区货 错误信息{}", response); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("请求焊接线失败,申请区货 错误信息:" + response) + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + } + } else if (ext_system.equals("2")) { + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } + } else { + log.error("检测站点未配置检测系统"); + LuceneLogDto logDto = LuceneLogDto.builder() + .device_code(this.getDeviceCode()) + .content("检测站点未配置检测系统") + .build(); + logDto.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto); + return; + } + } + } + if (agvphase == 2) { + device = deviceAppService.findDeviceByCode(this.devicecode); + TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); + TaskDto task = taskService.findByCode(instruction.getTask_code()); -// } catch (Exception var17) { -// return; -// } -// -// if (!this.itemProtocol.getIsonline()) { -// this.setIsonline(false); -// this.setIserror(true); -// message = "信号量同步异常"; -// //未联机 -// } else if (mode == 0) { -// this.setIsonline(false); -// this.setIserror(true); -// message = "未联机"; -// //有报警 -// } else if (error != 0) { -// this.setIsonline(false); -// this.setIserror(true); -// message = "有报警"; -// //无报警 -// } else { -// this.setIsonline(true); -// this.setIserror(false); -// message = ""; -// Instruction instruction = null; -// List toInstructions; -// switch (mode) { -// case 1: -// log.debug("设备运转模式:等待工作"); -// return; -// case 2: - //申请任务 -// if (this.getApply_handling()) { -// String link_device_code = this.getDevice().getExtraValue().get("link_device_code").toString(); -// DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); -// Device link_device = appService.findDeviceByCode(link_device_code); -// StandardInspectSiteDeviceDriver standardInspectSiteDevicedriver; -// if(link_device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { -// standardInspectSiteDevicedriver = (StandardInspectSiteDeviceDriver) link_device.getDeviceDriver(); -// if(standardInspectSiteDevicedriver.getMode() != 2){ -// log.debug("设备未待机"); -// return; -// } -// if(standardInspectSiteDevicedriver.getMove() != 0){ -// log.debug("设备不满足放货条件"); -// return; -// } -// -// //如果目标设备申请叫料 则允许生成任务 -// if(standardInspectSiteDevicedriver.getApply_material()){ -// TaskDto dto = new TaskDto(); -// String now = DateUtil.now(); -// dto.setTask_id(IdUtil.simpleUUID()); -// dto.setCreate_by(this.getDevice().getDevice_code()); -// dto.setUpdate_by(this.getDevice().getDevice_code()); -// dto.setStart_point_code(this.getDevice().getDevice_code()); -// -// String taskcode = CodeGenerateUtil.getNewCode("TASK_NO"); -// dto.setTask_code("-"+taskcode); -// dto.setTask_status("0"); -// dto.setPriority("101"); -// RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); -// String next_device_codecode = jo.getNext_device_code(); -// if(StrUtil.isEmpty(next_device_codecode)){ -// throw new RuntimeException("该设备未找到对应路由"); -// } -// dto.setNext_point_code(next_device_codecode); -// dto.setUpdate_time(now); -// dto.setCreate_time(now); -// -// WQLObject wo = WQLObject.getWQLObject("acs_task"); -// JSONObject json = (JSONObject) JSONObject.toJSON(dto); + if ((StrUtil.startWith(task.getTask_code(), "-"))) { + log.info("定点任务下发agv允许取货信号"); + HttpResponse result = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + Object ext_system = device.getExtraValue().get("ext_system"); + //检测站点,安全交互类型为中鼎的 + if (!StringUtil.isEmpty(ext_system)) { + if (ext_system.equals("1")) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "takeFinish"); + log.info("请求wms取货完毕参数:{}", jo); + HttpResponse result = acsToZDWmsService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode == 0) { + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.error("请求wms取货失败参数:{}", response); + } + //焊接线 + } else if (ext_system.equals("3")) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "takeFinish"); + log.info("请求MES取货完成参数:{}", jo); + HttpResponse result = acsToMesService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode == 0) { + log.info("请求MES成功,取货完成 请求结果{}", responseCode); + JSONObject jo1 = new JSONObject(); + jo1.put("point", this.devicecode); + jo1.put("type", "3"); + jo1.put("containerCode", task.getVehicle_code()); + Object url = device.getExtraValue().get("address"); + if (StringUtil.isEmpty(ext_system)) { + log.error("请求焊接线失败,未配置焊接线IP" + this.devicecode); + return; + } + jo1.put("url", url); + HttpResponse result2 = acsToHJXService.actionFinish(jo1); + JSONObject response2 = JSONObject.parseObject(result2.body()); + int code = response2.getInteger("code"); + if (code == 200) { + log.info("请求焊接线成功,申请取货完成 请求结果{}", code); + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.info("请求焊接线失败,申请取货完成 错误信息{}", response2); + } + } else { + log.info("请求MES取货完成失败,取货完成 错误码{}", responseCode); + } + } else if (ext_system.equals("2")) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "takeFinish"); + log.info("请求MES取货完成参数:{}", jo); + HttpResponse result = acsToMesService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode == 0) { + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } + } + } + } + } + } + //放货申请 + else if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getNext_point_code(), this.devicecode)) { + if (agvphase == 3) { + device = deviceAppService.findDeviceByCode(this.devicecode); + TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); + TaskDto task = taskService.findByCode(instruction.getTask_code()); + if ((StrUtil.startWith(task.getTask_code(), "-"))) { + log.info("定点任务下发agv允许取货信号"); + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + Object ext_system = device.getExtraValue().get("ext_system"); + //检测站点,安全交互类型为中鼎的 + if (!StringUtil.isEmpty(ext_system)) { + if (ext_system.equals("1")) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "applyPut"); + log.info("请求wms请求放货参数:{}", jo); + HttpResponse result = acsToZDWmsService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode == 0) { + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.error("请求wms请求放货失败参数:{}", response); + } + //焊接线 + } else if (ext_system.equals("3")) { + JSONObject jo1 = new JSONObject(); + jo1.put("point", this.devicecode); + jo1.put("type", "2"); + jo1.put("containerCode", task.getVehicle_code()); + Object url = device.getExtraValue().get("address"); + if (StringUtil.isEmpty(ext_system)) { + log.error("请求焊接线请求放货,未配置焊接线IP" + this.devicecode); + return; + } + jo1.put("url", url); + HttpResponse result = acsToHJXService.actionRequest(jo1); + JSONObject response = JSONObject.parseObject(result.body()); + int code = response.getInteger("code"); + if (code == 200) { + log.info("请求焊接线放货成功,申请取货 请求结果{}", code); + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.error("请求焊接线放货失败,申请区货 错误信息{}", response); + return; + } + } else if (ext_system.equals("2")) { + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } + } else { + log.error("检测站点未配置检测系统"); + return; + } + } + } + if (agvphase == 4) { + device = deviceAppService.findDeviceByCode(this.devicecode); + TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); + TaskDto task = taskService.findByCode(instruction.getTask_code()); + if ((StrUtil.startWith(task.getTask_code(), "-"))) { + log.info("定点任务下发agv允许取货信号"); + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + Object ext_system = device.getExtraValue().get("ext_system"); + //检测站点,安全交互类型为中鼎的 + if (!StringUtil.isEmpty(ext_system)) { + if (ext_system.equals("1")) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "putFinish"); + log.info("请求wms放货完成参数:{}", jo); + HttpResponse result = acsToZDWmsService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode == 0) { + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.error("请求wms放货失败参数:{}", response); + return; + } + //焊接线 + } else if (ext_system.equals("3")) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "putFinish"); + log.info("请求MES放货完成参数:{}", jo); + HttpResponse result = acsToMesService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode == 0) { + JSONObject jo1 = new JSONObject(); + jo1.put("point", this.devicecode); + jo1.put("type", "4"); + jo1.put("containerCode", task.getVehicle_code()); + Object url = device.getExtraValue().get("address"); + if (StringUtil.isEmpty(ext_system)) { + log.error("请求MES放货完成失败,未配置焊接线IP" + this.devicecode); + } + jo1.put("url", url); + HttpResponse result2 = acsToHJXService.actionFinish(jo1); + JSONObject response2 = JSONObject.parseObject(result2.body()); + int code = response2.getInteger("code"); + if (code == 200) { + log.info("请求焊接线放货货完成成功,请求结果{}", code); + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.info("请求焊接线放货货完成失败 错误信息{}", response2); + return; + } + } else { + log.info("请求MES放货完成失败,错误码{}", responseCode); + return; + } + } else if (ext_system.equals("2")) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "putFinish"); + log.info("请求MES放货完成参数:{}", jo); + HttpResponse result = acsToMesService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode == 0) { + HttpResponse result1 = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result1) || result1.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + log.info("请求MES放货货完成失败 错误信息{}", responseCode); + return; + } + } + } + } -// wo.insert(json); -// standardInspectSiteDevicedriver.setApply_material(false); -// } -// } -// this.setApply_handling(false); -// } - -// if (material.length() > 0 && qty.length() > 0 && !requireSucess) { -// this.instruction_require(container); -// } -// } -// -// switch (flag) { -// //取货完成 -// case 1: -// writing(2); -// return; -// //放货完成 -// case 2: -// writing(3); -// return; -// -// } -// -// } -// last_mode = mode; -// last_error = error; -// last_move = move; -// last_task = task; + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } } @@ -435,7 +723,7 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp dto.setCreate_time(now); WQLObject wo = WQLObject.getWQLObject("acs_task"); - JSONObject json = (JSONObject) JSONObject.toJSON(dto); + JSONObject json = (JSONObject) JSONObject.toJSON(dto); wo.insert(json); requireSucess = false; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index cd16688..0c2ecae 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -1,10 +1,13 @@ package org.nl.acs.device_driver.basedriver.standard_ordinary_site; 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.apache.commons.lang3.ObjectUtils; import org.nl.acs.agv.server.AgvService; import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.device.service.DeviceService; @@ -12,7 +15,7 @@ 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.*; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; @@ -21,9 +24,12 @@ 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.modules.lucene.service.LuceneExecuteLogService; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; +import java.io.IOException; import java.util.Date; @@ -33,7 +39,7 @@ import java.util.Date; @Slf4j @Data @RequiredArgsConstructor -public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { +public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { @Autowired DeviceAppService deviceAppservice = SpringContextHolder.getBean(DeviceAppService.class); @Autowired @@ -52,6 +58,14 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); @Autowired NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvService.class); + DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); + DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean(LuceneExecuteLogService.class); + //外部系统交互 + AcsToZDWmsService acsToZDWmsService = SpringContextHolder.getBean(AcsToZDWmsService.class); + AcsToHJXService acsToHJXService = SpringContextHolder.getBean(AcsToHJXService.class); + AcsToMesService acsToMesService = SpringContextHolder.getBean(AcsToMesService.class); + AcsToNDCService acsToNDCService = SpringContextHolder.getBean(AcsToNDCService.class); Integer hasGoods = 0; @@ -108,6 +122,7 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple // 1 上位系统允许进入 2 上位系统允许离开 int status = 0; + String devicecode; //1取货请求 2取货完成完成 3放货请求 4放货完成 -1进入请求 -2请求离开 private volatile int agvphase = 0; @@ -124,72 +139,139 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple @Override public void execute() { - hasGoods = this.getDevice().getHas_goods(); - batch = this.getDevice().getBatch(); - device_code = this.getDeviceCode(); - - if (agvphase == 0x03) { - if (ObjectUtil.isNotEmpty(inst)) { - inst.setExecute_status("1"); - instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); - agvphase = 0; - index = 0; - inst = null; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); - } else { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); + try { + this.devicecode = this.getDevice().getDevice_code(); + if (this.reqTakeRequireSuccess && ObjectUtil.isNotEmpty(this.reqTakeInstCode)) { + Instruction instruction = instructionService.findByCodeFromCache(this.reqTakeInstCode); + //取货申请 + if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getStart_point_code(), this.devicecode)) { + if (agvphase == 1) { + device = deviceAppService.findDeviceByCode(this.devicecode); + HttpResponse result = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } + if (agvphase == 2) { + device = deviceAppService.findDeviceByCode(this.devicecode); + TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); + TaskDto task = taskService.findByCode(instruction.getTask_code()); + if ((StrUtil.startWith(task.getTask_code(), "-"))) { + log.info("定点任务下发agv允许取货信号"); + HttpResponse result = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + //MES下发需要上报取货完成 + if ("2".equals(task.getCreate_by())) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "takeFinish"); + log.info("请求MES取货完成参数:{}", jo); + HttpResponse result = acsToMesService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode != 0) { + log.error("请求MES取货完成失败参数:{}", response); + return; + } + } + HttpResponse result = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } + } + } + //放货申请 + else if (ObjectUtil.isNotEmpty(instruction) && StrUtil.equals(instruction.getNext_point_code(), this.devicecode)) { + if (agvphase == 3) { + device = deviceAppService.findDeviceByCode(this.devicecode); + HttpResponse result = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } + if (agvphase == 4) { + device = deviceAppService.findDeviceByCode(this.devicecode); + TaskService taskService = SpringContextHolder.getBean("taskServiceImpl"); + TaskDto task = taskService.findByCode(instruction.getTask_code()); + if ((StrUtil.startWith(task.getTask_code(), "-"))) { + log.info("定点任务下发agv允许取货信号"); + HttpResponse result = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } else { + //mes下发需要上报放货完成 + if ("2".equals(task.getCreate_by())) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "putFinish"); + log.info("请求MES放货完成参数:{}", jo); + HttpResponse result = acsToMesService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode != 0) { + log.error("请求MES放货失败参数:{}", response); + return; + } //wms下发需要上报放货完成 + } else if ("1".equals(task.getCreate_by())) { + JSONObject jo = new JSONObject(); + jo.put("taskCode", task.getTask_code()); + jo.put("carId", instruction.getCarno()); + jo.put("taskType ", task.getTask_type()); + jo.put("feedbackStatus", "putFinish"); + log.info("请求WMS放货完成参数:{}", jo); + HttpResponse result = acsToZDWmsService.taskFeedback(jo); + JSONObject response = JSONObject.parseObject(result.body()); + int responseCode = response.getInteger("responseCode"); + if (responseCode != 0) { + log.info("请求WMS放货货完成失败 错误信息{}", responseCode); + return; + } + } + HttpResponse result = acsToNDCService.genAgvSchedulingTask(instruction, 10); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + return; + } else { + this.reqTakeRequireSuccess = false; + this.reqTakeInstCode = null; + this.agvphase = 0; + } + } + } + } } + } catch (IOException e) { + e.printStackTrace(); } - - if (agvphase == 0x05) { - if (ObjectUtil.isNotEmpty(inst)) { - inst.setExecute_status("2"); - instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); -// OneNDCSocketConnectionAutoRun.write(data); - agvphase = 0; - index = 0; - inst = null; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); - } else { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); - - } - } - - if (agvphase == 0x07) { - if (ObjectUtil.isNotEmpty(inst)) { - inst.setExecute_status("5"); - instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); -// OneNDCSocketConnectionAutoRun.write(data); - agvphase = 0; - index = 0; - inst = null; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); - } else { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); - } - } - - if (agvphase == 0x09) { - if (ObjectUtil.isNotEmpty(inst)) { - inst.setExecute_status("6"); - instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); -// OneNDCSocketConnectionAutoRun.write(data); - agvphase = 0; - index = 0; - inst = null; - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "反馈成功"); - } else { - logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + agvphase + "等待反馈"); - - } - } - } @Override diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToNDCService.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToNDCService.java index 67cda56..9cf682a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToNDCService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToNDCService.java @@ -1,7 +1,10 @@ package org.nl.acs.ext.wms.service; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; +import org.nl.acs.instruction.service.dto.Instruction; public interface AcsToNDCService { + HttpResponse genAgvSchedulingTask(Instruction instruction,int type); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToNDCServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToNDCServiceImpl.java index 7d4ce6b..a7ca0b1 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToNDCServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToNDCServiceImpl.java @@ -1,12 +1,94 @@ package org.nl.acs.ext.wms.service.impl; +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.device.address.service.AddressService; +import org.nl.acs.device.address.service.dto.AddressDto; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device.service.impl.DeviceServiceImpl; +import org.nl.acs.ext.wms.NdcHttpUtil; +import org.nl.acs.ext.wms.UnifiedResponse; import org.nl.acs.ext.wms.service.AcsToNDCService; +import org.nl.acs.instruction.service.dto.Instruction; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; +import org.nl.modules.system.service.ParamService; +import org.nl.modules.wql.util.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor @Slf4j public class AcsToNDCServiceImpl implements AcsToNDCService { + private final ParamService paramService; + @Autowired + private LuceneExecuteLogService luceneExecuteLogService; + @Autowired + AddressService addressService; + + /** + * 生成任务单 + * + * @param instruction + * @return + */ + @Override + public HttpResponse genAgvSchedulingTask(Instruction instruction,int type) { + JSONObject jo = new JSONObject(); + jo.put("receiver", "NDC"); + jo.put("sender", "ACS"); + jo.put("type", type); + JSONObject ja = new JSONObject(); + //type 3:下发任务 + if (type==3) { + ja.put("taskId", instruction.getInstruction_code()); + DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); + int startAddress = deviceService.queryAddressBydeviceCode(instruction.getStart_point_code()); + int nextAddress = deviceService.queryAddressBydeviceCode(instruction.getNext_point_code()); + ja.put("pickId", startAddress); + ja.put("pickName", instruction.getStart_point_code()); + ja.put("releaseId", nextAddress); + ja.put("releaseIdName", instruction.getNext_point_code()); + ja.put("taskType", 5); + ja.put("vehicleId", 0); + ja.put("priority", 0); + jo.put("params", ja); + } + //type 9:取消任务 + else if (type==9){ + ja.put("taskId", instruction.getInstruction_code()); + jo.put("params", ja); + } + //type 10:取放货请求应答 + else if (type==10){ + ja.put("taskId", instruction.getInstruction_code()); + ja.put("taskPhase", instruction.getExecute_status()); + jo.put("params", ja); + } + String wmsurl = paramService.findByCode(AcsConfig.WCSURL).getValue(); + AddressDto addressDto = addressService.findByCode("applyTaskToWcs"); + String url = wmsurl + addressDto.getMethods_url(); + + HttpResponse result = HttpRequest.post(url) + //表单内容 + .body(String.valueOf(jo)) + //超时,毫秒 + .timeout(20000) + .execute(); + LuceneLogDto logDto1 = LuceneLogDto.builder() + .device_code("下发科聪任务") + .content("任务号:" + instruction.getTask_code() + ",指令号:" + instruction.getInstruction_code() + ",下发wcs任务序列反馈参数:" + jo) + .build(); + logDto1.setLog_level(4); + luceneExecuteLogService.deviceExecuteLog(logDto1); + log.info("任务号:{},指令号{},状态{},下发agv订单序列反馈:{}", instruction.getTask_code(), instruction.getInstruction_code(), result.getStatus(), result.body()); + return result; + } + } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/NDCToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/NDCToAcsServiceImpl.java index 87eb3d8..9e68611 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/NDCToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/NDCToAcsServiceImpl.java @@ -45,20 +45,16 @@ public class NDCToAcsServiceImpl implements NDCToAcsService { String type = requestParam.getString("type"); JSONObject params = requestParam.getJSONObject("params"); + //任务状态上报 if (MsgTypeEnum.TASK_STATE_RPT.getValue().equals(type)) { String taskId = params.getString("taskId"); String taskPhase = params.getString("taskPhase"); String taskState = params.getString("taskState"); - String taskPoint = params.getString("taskPoint"); + String taskPoint = params.getString("taskPoint");//请求进入/离开需要上报站点号 + StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + //请求进入/请求离开 if (StrUtil.isNotEmpty(taskPhase)&&(TaskPhaseEnum.ENTER_REQUEST_OR_ALLOWED.getValue().equals(taskPhase)||TaskPhaseEnum.LEAVE_NOTICE_OR_ALLOWED.getValue().equals(taskPhase))){ - - }else if (StrUtil.isNotEmpty(taskPhase)&&(TaskPhaseEnum.PICKUP_REQUEST_OR_RESPONSE.getValue().equals(taskPhase)||TaskPhaseEnum.PICKUP_COMPLETE.getValue().equals(taskPhase)||TaskPhaseEnum.RELEASE_REQUEST_OR_RESPONSE.getValue().equals(taskPhase)||TaskPhaseEnum.RELEASE_COMPLETE.getValue().equals(taskPhase)||TaskStateEnum.NOT_STARTED.getValue().equals(taskPhase)||TaskStateEnum.EXECUTING.getValue().equals(taskPhase)||TaskStateEnum.COMPLETED.getValue().equals(taskPhase))){ - Instruction instruction = instructionService.findByCodeFromCache(taskId); - if (ObjectUtil.isEmpty(instruction)) { - resp.put("code", "400"); - resp.put("message", "请求失败,任务信息不存在,指令号:" + taskId); - return resp; - } StorageCellDto storageCellDto = storageCellService.findByAddress(taskPoint); if (ObjectUtil.isEmpty(storageCellDto)) { resp.put("code", "400"); @@ -71,95 +67,6 @@ public class NDCToAcsServiceImpl implements NDCToAcsService { resp.put("message", "请求失败,请求位置编号不存在!"); return resp; } - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - //taskPhase 任务完成 - if (TaskStateEnum.COMPLETED.getValue().equals(taskPhase)){ - //修改指令状态完成 - instruction.setInstruction_status(InstStatusEnum.FINISHED.getCode()); - - instruction.setUpdate_time(DateUtil.now()); - instructionService.finish(instruction); - resp.put("code", "200"); - resp.put("message", "完成任务成功"); - return resp; - } - if (TaskStateEnum.CANCELED.getValue().equals(taskPhase)){ - instruction.setInstruction_status(InstStatusEnum.CANCELED.getCode()); - instruction.setUpdate_time(DateUtil.now()); - instructionService.cancel(instruction.getInstruction_id()); - resp.put("code", "200"); - resp.put("message", "取消任务成功"); - return resp; - } - if (TaskPhaseEnum.PICKUP_REQUEST_OR_RESPONSE.getValue().equals(taskPhase)){ - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setAgvphase(1); - standardOrdinarySiteDeviceDriver.setReqTakeInstCode(taskId); - standardOrdinarySiteDeviceDriver.setReqTakeRequireSuccess(true); - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - standardInspectSiteDeviceDriver.setAgvphase(1); - standardInspectSiteDeviceDriver.setReqTakeInstCode(taskId); - standardInspectSiteDeviceDriver.setReqTakeRequireSuccess(true); - } - resp.put("code", "200"); - resp.put("message", "反馈请求取货成功"); - return resp; - } - if (TaskPhaseEnum.PICKUP_COMPLETE.getValue().equals(taskPhase)){ - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setAgvphase(2); - standardOrdinarySiteDeviceDriver.setReqTakeInstCode(taskId); - standardOrdinarySiteDeviceDriver.setReqTakeRequireSuccess(true); - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - standardInspectSiteDeviceDriver.setAgvphase(2); - standardInspectSiteDeviceDriver.setReqTakeInstCode(taskId); - standardInspectSiteDeviceDriver.setReqTakeRequireSuccess(true); - } - resp.put("code", "200"); - resp.put("message", "反馈取货完成成功"); - return resp; - } - if (TaskPhaseEnum.RELEASE_REQUEST_OR_RESPONSE.getValue().equals(taskPhase)){ - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setAgvphase(3); - standardOrdinarySiteDeviceDriver.setReqTakeInstCode(taskId); - standardOrdinarySiteDeviceDriver.setReqTakeRequireSuccess(true); - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - standardInspectSiteDeviceDriver.setAgvphase(3); - standardInspectSiteDeviceDriver.setReqTakeInstCode(taskId); - standardInspectSiteDeviceDriver.setReqTakeRequireSuccess(true); - } - resp.put("code", "200"); - resp.put("message", "反馈请求放货成功"); - return resp; - } - if (TaskPhaseEnum.RELEASE_COMPLETE.getValue().equals(taskPhase)){ - if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ - standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); - standardOrdinarySiteDeviceDriver.setAgvphase(4); - standardOrdinarySiteDeviceDriver.setReqTakeInstCode(taskId); - standardOrdinarySiteDeviceDriver.setReqTakeRequireSuccess(true); - } - if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver(); - standardInspectSiteDeviceDriver.setAgvphase(4); - standardInspectSiteDeviceDriver.setReqTakeInstCode(taskId); - standardInspectSiteDeviceDriver.setReqTakeRequireSuccess(true); - } - resp.put("code", "200"); - resp.put("message", "反馈放货完成成功"); - return resp; - } if (TaskPhaseEnum.ENTER_REQUEST_OR_ALLOWED.getValue().equals(taskPhase)){ if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver(); @@ -194,10 +101,138 @@ public class NDCToAcsServiceImpl implements NDCToAcsService { resp.put("message", "反馈请求离开成功"); return resp; } + } else if (StrUtil.isNotEmpty(taskPhase)&&(TaskPhaseEnum.PICKUP_REQUEST_OR_RESPONSE.getValue().equals(taskPhase)||TaskPhaseEnum.PICKUP_COMPLETE.getValue().equals(taskPhase)||TaskPhaseEnum.RELEASE_REQUEST_OR_RESPONSE.getValue().equals(taskPhase)||TaskPhaseEnum.RELEASE_COMPLETE.getValue().equals(taskPhase)||TaskStateEnum.NOT_STARTED.getValue().equals(taskPhase)||TaskStateEnum.EXECUTING.getValue().equals(taskPhase)||TaskStateEnum.COMPLETED.getValue().equals(taskPhase))){ + Instruction instruction = instructionService.findByCodeFromCache(taskId); + if (ObjectUtil.isEmpty(instruction)) { + resp.put("code", "400"); + resp.put("message", "请求失败,任务信息不存在,指令号:" + taskId); + return resp; + } + + //taskPhase 任务完成 + if (TaskStateEnum.COMPLETED.getValue().equals(taskState)){ + instructionService.finish(instruction.getInstruction_id()); + resp.put("code", "200"); + resp.put("message", "完成任务成功"); + return resp; + } + //taskPhase 任务取消 + if (TaskStateEnum.CANCELED.getValue().equals(taskState)){ + instructionService.cancel(instruction.getInstruction_id()); + resp.put("code", "200"); + resp.put("message", "取消任务成功"); + return resp; + } + String start_point_code = instruction.getStart_point_code(); + String next_point_code = instruction.getNext_point_code(); + Device startDevice = deviceAppService.findDeviceByCode(start_point_code); + Device nextDevice = deviceAppService.findDeviceByCode(next_point_code); + //taskPhase 请求取货上报 + if (TaskPhaseEnum.PICKUP_REQUEST_OR_RESPONSE.getValue().equals(taskPhase)){ + if (ObjectUtil.isEmpty(startDevice)) { + resp.put("code", "400"); + resp.put("message", "请求取货失败,请求位置编号不存在!"); + return resp; + } + if (startDevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) startDevice.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setAgvphase(1); + standardOrdinarySiteDeviceDriver.setReqTakeInstCode(taskId); + standardOrdinarySiteDeviceDriver.setReqTakeRequireSuccess(true); + } + if (startDevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startDevice.getDeviceDriver(); + standardInspectSiteDeviceDriver.setAgvphase(1); + standardInspectSiteDeviceDriver.setReqTakeInstCode(taskId); + standardInspectSiteDeviceDriver.setReqTakeRequireSuccess(true); + } + instruction.setExecute_status("1"); + instructionService.update(instruction); + resp.put("code", "200"); + resp.put("message", "反馈请求取货成功"); + return resp; + } + //taskPhase 取货完成上报 + if (TaskPhaseEnum.PICKUP_COMPLETE.getValue().equals(taskPhase)){ + if (ObjectUtil.isEmpty(startDevice)) { + resp.put("code", "400"); + resp.put("message", "请求取货完成失败,请求位置编号不存在!"); + return resp; + } + if (startDevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) startDevice.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setAgvphase(2); + standardOrdinarySiteDeviceDriver.setReqTakeInstCode(taskId); + standardOrdinarySiteDeviceDriver.setReqTakeRequireSuccess(true); + } + if (startDevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) startDevice.getDeviceDriver(); + standardInspectSiteDeviceDriver.setAgvphase(2); + standardInspectSiteDeviceDriver.setReqTakeInstCode(taskId); + standardInspectSiteDeviceDriver.setReqTakeRequireSuccess(true); + } + instruction.setExecute_status("2"); + instructionService.update(instruction); + resp.put("code", "200"); + resp.put("message", "反馈取货完成成功"); + return resp; + } + //taskPhase 请求放货上报 + if (TaskPhaseEnum.RELEASE_REQUEST_OR_RESPONSE.getValue().equals(taskPhase)){ + if (ObjectUtil.isEmpty(nextDevice)) { + resp.put("code", "400"); + resp.put("message", "请求放货失败,请求位置编号不存在!"); + return resp; + } + if (nextDevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) nextDevice.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setAgvphase(3); + standardOrdinarySiteDeviceDriver.setReqTakeInstCode(taskId); + standardOrdinarySiteDeviceDriver.setReqTakeRequireSuccess(true); + } + if (nextDevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextDevice.getDeviceDriver(); + standardInspectSiteDeviceDriver.setAgvphase(3); + standardInspectSiteDeviceDriver.setReqTakeInstCode(taskId); + standardInspectSiteDeviceDriver.setReqTakeRequireSuccess(true); + } + instruction.setExecute_status("3"); + instructionService.update(instruction); + resp.put("code", "200"); + resp.put("message", "反馈请求放货成功"); + return resp; + } + //taskPhase 放货完成上报 + if (TaskPhaseEnum.RELEASE_COMPLETE.getValue().equals(taskPhase)){ + if (ObjectUtil.isEmpty(nextDevice)) { + resp.put("code", "400"); + resp.put("message", "请求放货完成失败,请求位置编号不存在!"); + return resp; + } + if (nextDevice.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver){ + standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) nextDevice.getDeviceDriver(); + standardOrdinarySiteDeviceDriver.setAgvphase(4); + standardOrdinarySiteDeviceDriver.setReqTakeInstCode(taskId); + standardOrdinarySiteDeviceDriver.setReqTakeRequireSuccess(true); + } + if (nextDevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver){ + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextDevice.getDeviceDriver(); + standardInspectSiteDeviceDriver.setAgvphase(4); + standardInspectSiteDeviceDriver.setReqTakeInstCode(taskId); + standardInspectSiteDeviceDriver.setReqTakeRequireSuccess(true); + } + instruction.setExecute_status("4"); + instructionService.update(instruction); + resp.put("code", "200"); + resp.put("message", "反馈放货完成成功"); + return resp; + } }else { throw new BadRequestException("上报的阶段值有误!"); } - }else if (MsgTypeEnum.AGV_ID_RPT.getValue().equals(type)){ + } + //任务分配车辆上报 + else if (MsgTypeEnum.AGV_ID_RPT.getValue().equals(type)){ String taskId = params.getString("taskId"); String agvId = params.getString("agvId"); Instruction instruction = instructionService.findByCodeFromCache(taskId); @@ -214,7 +249,9 @@ public class NDCToAcsServiceImpl implements NDCToAcsService { resp.put("code", "200"); resp.put("message", "更新车号成功"); return resp; - }else if (MsgTypeEnum.TASK_INDEX_RPT.getValue().equals(type)){ + } + //车辆任务生成上报 + else if (MsgTypeEnum.TASK_INDEX_RPT.getValue().equals(type)){ String taskId = params.getString("taskId"); Instruction instruction = instructionService.findByCodeFromCache(taskId); if (ObjectUtil.isEmpty(instruction)) { @@ -230,7 +267,27 @@ public class NDCToAcsServiceImpl implements NDCToAcsService { resp.put("message", "更新指令执行中成功"); return resp; }else if (MsgTypeEnum.AGV_POWER_RPT.getValue().equals(type)){ - + int agvId = params.getIntValue("agvId"); + int stateValue = params.getIntValue("stateValue"); + resp.put("code", "200"); + resp.put("message", "更新指令执行中成功"); + return resp; + }else if (MsgTypeEnum.AGV_STATE_RPT.getValue().equals(type)){ + int agvId = params.getIntValue("agvId"); + int stateValue = params.getIntValue("stateValue"); + int xLocation = params.getIntValue("xLocation"); + int yLocation = params.getIntValue("yLocation"); + int angle = params.getIntValue("angle"); + int speed = params.getIntValue("speed"); + resp.put("code", "200"); + resp.put("message", "更新指令执行中成功"); + return resp; + }else if (MsgTypeEnum.AGV_ERROR_RPT.getValue().equals(type)){ + int agvId = params.getIntValue("agvId"); + int errorCode = params.getIntValue("errState"); + resp.put("code", "200"); + resp.put("message", "更新指令执行中成功"); + return resp; } return null; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index cbf27fc..89ea980 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -27,6 +27,7 @@ import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanne import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.ext.wms.liKuData.*; import org.nl.acs.ext.wms.service.AcsToLiKuService; +import org.nl.acs.ext.wms.service.AcsToNDCService; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.opc.Device; @@ -94,6 +95,8 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Lazy @Autowired ZheDaAgvService zheDaAgvService; + @Autowired + AcsToNDCService acsToNDCService; @Override public void autoInitial() { @@ -245,7 +248,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Override public Instruction findByCode(String code) { WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - JSONObject json = wo.query("instruction_code ='" + code + "'","create_time desc").uniqueResult(0); + JSONObject json = wo.query("instruction_code ='" + code + "'", "create_time desc").uniqueResult(0); if (ObjectUtil.isEmpty(json)) { return null; } @@ -346,64 +349,17 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device startdevice = appService.findDeviceByCode(dto.getStart_device_code()); - try { - if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue().toString(),String.valueOf(AgvSystemEnum.Maigic.getIndex()))) { - HttpResponse result = magicAgvService.sendAgvInstToMagic(dto); - if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue().toString(), String.valueOf(AgvSystemEnum.NDC.getIndex()))) { - if(StrUtil.isBlank(dto.getAgv_inst_type())){ -// String agv_system_type = task.getAgv_system_type(); - String task_type = task.getTask_type(); - // task_type - //1、普通任务; Itype=1: - //2、四点任务 Itype=2; - //3、八点任务 Itype=3; - if (StrUtil.equals(task_type, "1")) { - dto.setAgv_inst_type("1"); - } else if (StrUtil.equals(task_type, "2")||task_type.equals("4")) { - dto.setAgv_inst_type("2"); - } else if (StrUtil.equals(task_type, "3")) { - dto.setAgv_inst_type("3"); - } else { - log.info("未找到对应的AGV指令类型,任务号:" + task.getTask_code() + ",task_type:" + task.getTask_type()) ; - } -// dto.setAgv_system_type(task.getAgv_system_type()); - } - ndcAgvService.sendAgvInstToNDC("1", dto); - dto.setSend_status("1"); - - } else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).toString(), String.valueOf(AgvSystemEnum.XianGong.getIndex()))) { - if (StrUtil.equals(task.getRequest_again_success(), "1")) { - //追加订单 - HttpResponse result = xianGongAgvService.sendOrderSequencesToXZ(dto); - if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } else { - //创建订单序列 - HttpResponse result = xianGongAgvService.sendOrderSequencesToXZ(dto); - if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { - dto.setSend_status("2"); - } else { - dto.setSend_status("1"); - } - } - } else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue().toString(), String.valueOf(AgvSystemEnum.ZheDa.getIndex()))) { - ZheDaAgvService zheDaAgvService = SpringContextHolder.getBean(ZheDaAgvService.class); - zheDaAgvService.sendAgvInstToAgv(dto); - } - - } catch (Exception e) { - dto.setSend_status("2"); - e.printStackTrace(); - - } + try { + HttpResponse result = acsToNDCService.genAgvSchedulingTask(dto,3); + if (ObjectUtils.isEmpty(result) || result.getStatus() != 200) { + dto.setSend_status("2"); + } else { + dto.setSend_status("1"); + } + } catch (Exception e) { + dto.setSend_status("2"); + e.printStackTrace(); + } WQLObject wo = WQLObject.getWQLObject("acs_instruction"); JSONObject json = (JSONObject) JSONObject.toJSON(dto); @@ -679,11 +635,11 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu entity.setUpdate_by(currentUsername); entity.setInstruction_status("2"); WQLObject wo = WQLObject.getWQLObject("acs_instruction"); - String instnextdevice = entity.getNext_device_code(); + String instnextdevice = entity.getNext_point_code(); String insttaskid = entity.getTask_id(); WQLObject taskwo = WQLObject.getWQLObject("acs_task"); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device startdevice = appService.findDeviceByCode(entity.getStart_device_code()); + Device startdevice = appService.findDeviceByCode(entity.getStart_point_code()); if (ObjectUtils.isEmpty(startdevice)) { log.debug("地址对应设备未找到"); throw new BadRequestException("地址对应设备未找到"); @@ -910,7 +866,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "2")) { // NDC agv指令不当场取消指令,需要等agv上报 if (!StrUtil.isEmpty(entity.getAgv_jobno())) { - ndcAgvService.deleteAgvInstToNDC(entity); + acsToNDCService.genAgvSchedulingTask(entity, 9); } else { flag = true; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/BlockedRunable.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/BlockedRunable.java index 7d7ad38..9eb511d 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/BlockedRunable.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/BlockedRunable.java @@ -18,7 +18,7 @@ public abstract class BlockedRunable implements Runnable { public abstract String getCode(); - public abstract void subRun(); + public abstract void subRun() throws Exception; public void run() { try { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceExecuteAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceExecuteAutoRun.java index 7b775be..f9a1a41 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceExecuteAutoRun.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceExecuteAutoRun.java @@ -97,7 +97,7 @@ public class DeviceExecuteAutoRun extends AbstractAutoRunnable { if (!this.runs.keySet().contains(deviceDriver.getDeviceCode())) { BlockedRunable runnable = new BlockedRunable() { @Override - public void subRun() { + public void subRun() throws Exception { deviceDriver.executeAuto(); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 26a5e82..f38fa16 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -451,8 +451,8 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { } 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 start_device_code = dto.getStart_point_code(); + String next_device_code = dto.getNext_point_code(); String route_plan_code = dto.getRoute_plan_code(); if (StrUtil.isEmpty(dto.getCreate_by())) { dto.setCreate_by(currentUsername); @@ -463,82 +463,14 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { dto.setTask_code(task_code); dto.setRoute_plan_code(route_plan_code); dto.setTask_status("0"); + dto.setStart_device_code(start_device_code); + dto.setNext_device_code(next_device_code); dto.setStart_device_code2(dto.getStart_point_code2()); dto.setNext_device_code2(dto.getNext_point_code2()); if (StrUtil.isEmpty(dto.getPriority())) { dto.setPriority("1"); } - String plan_code = dto.getRoute_plan_code(); - // 判断起点终点设备类型 - String startDeviceType = deviceAppService.findDeviceTypeByCode(dto.getStart_device_code()); - String nextDeviceType = deviceAppService.findDeviceTypeByCode(dto.getNext_device_code()); -// if (routelineserver -// .getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code) -// .size() -// == 0) { -// throw new Exception(dto.getStart_point_code() + "->" + dto.getNext_point_code() + "路由不通!"); -// } - 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); - Device startdevice = appService.findDeviceByCode(start_device_code); -// dto.setMaterial(startdevice.getMaterial_type()); -// if (StrUtil.equals(createTaskCheck, "1")) { -// // 判断起点为输送设备 -// 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 -// // StandardOrdinarySiteDeviceDriver) { -// // standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) -// // 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(), "1")) { -// jo.put("hasGoodStatus", "2"); -// jo.put("material_type", dto.getMaterial()); -// } else { -// jo.put("hasGoodStatus", "1"); -// jo.put("material_type", "1"); -// } -// -// } else { -// jo.put("hasGoodStatus", "1"); -// jo.put("material_type", "1"); -// } -// 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); -// } -// } WQLObject wo = WQLObject.getWQLObject("acs_task"); JSONObject json = (JSONObject) JSONObject.toJSON(dto); @@ -968,18 +900,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { log.info("请求ZDwcs成功,任务取消 请求结果{}", responseCode); } } -// List shortPathsList = -// routeLineService.getShortPathLines( -// entity.getStart_device_code(), -// entity.getNext_device_code(), -// entity.getRoute_plan_code()); -// String type = shortPathsList.get(0).getType(); -// // != 0 为agv任务 -// if (!StrUtil.equals(type, "0")) { -// if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) { -// agvService.markComplete(entity.getTask_code()); -// } -// } } @Override diff --git a/acs/nladmin-system/src/main/resources/log/AcsToNDCServiceImpl.xml b/acs/nladmin-system/src/main/resources/log/AcsToNDCServiceImpl.xml new file mode 100644 index 0000000..17f2c49 --- /dev/null +++ b/acs/nladmin-system/src/main/resources/log/AcsToNDCServiceImpl.xml @@ -0,0 +1,33 @@ + + + + + + + + + ${LOG_HOME}/ACS请求NDC/%d{yyyy-MM-dd}.%i.log + + 15 + + 200MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + + + + diff --git a/acs/nladmin-system/src/main/resources/log/NDCToAcsServiceImpl.xml b/acs/nladmin-system/src/main/resources/log/NDCToAcsServiceImpl.xml new file mode 100644 index 0000000..978f886 --- /dev/null +++ b/acs/nladmin-system/src/main/resources/log/NDCToAcsServiceImpl.xml @@ -0,0 +1,33 @@ + + + + + + + + + ${LOG_HOME}/NDC反馈ACS/%d{yyyy-MM-dd}.%i.log + + 15 + + 200MB + + 2GB + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + ${log.charset} + + + + + + + + + + +