diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java index d9525c2..ef39e9e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java @@ -108,13 +108,12 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { agvport = paramService.findByCode(AcsConfig.RGVPORT).getValue(); agvurl = agvurl + ":" + agvport + "/transportOrders/query"; - log.info("下发agv查询状态请求:{}内容为:{}", agvurl); + //log.info("下发agv查询状态请求:{}内容为:{}", agvurl); HttpResponse result = HttpRequest.post(agvurl) .body(String.valueOf(new JSONObject()))//表单内容 .timeout(20000)//超时,毫秒 .execute(); log.info("查询agv指令数据:" + result.body()); - return result; } else { return null; @@ -133,7 +132,7 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { agvport = paramService.findByCode(AcsConfig.RGVPORT).getValue(); agvurl = agvurl + ":" + agvport + "/vehicles"; - log.info("下发agv查询设备状态请求:{}内容为:{}", agvurl); + //log.info("下发agv查询设备状态请求:{}内容为:{}", agvurl); HttpResponse result = HttpRequest.post(agvurl) .body(String.valueOf(new JSONObject()))//表单内容 .timeout(20000)//超时,毫秒 @@ -462,7 +461,7 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { String agvurl = paramService.findByCode(AcsConfig.RGVURL).getValue(); String agvport = paramService.findByCode(AcsConfig.RGVPORT).getValue(); - Instruction instruction = instructionService.findByCode(instCode); + //Instruction instruction = instructionService.findByCode(instCode); agvurl = agvurl + ":" + agvport + "/transportOrders/" + instCode + "/withdrawal"; log.info("删除agv指令请求agvurl:{}", agvurl); HttpResponse result = HttpRequest.post(agvurl) diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDeviceDriver.java index f723a20..227e276 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDeviceDriver.java @@ -112,7 +112,6 @@ public class GuhuashiSiteDeviceDriver extends AbstractOpcDeviceDriver implements public void execute() { String message = null; try { - //todo 错误码转换 devicecode = this.getDeviceCode(); VW7010 = this.itemProtocol.getVW7010(); VW7012 = this.itemProtocol.getVW7012(); @@ -120,9 +119,6 @@ public class GuhuashiSiteDeviceDriver extends AbstractOpcDeviceDriver implements VW7016 = this.itemProtocol.getVW7016(); VW7018 = this.itemProtocol.getVW7018(); VW7020 = this.itemProtocol.getVW7020(); - if("GHS01".equals(devicecode)){ - log.info("123"); - } VW7022 = this.itemProtocol.getVW7022(); VW7024 = this.itemProtocol.getVW7024(); VW7026 = this.itemProtocol.getVW7026(); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java index a121c85..01a2992 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/rest/InstructionController.java @@ -99,7 +99,7 @@ public class InstructionController { @ApiOperation("完成指令") @PostMapping(value = "/finish/{id}") public ResponseEntity finish(@RequestBody String id) throws Exception { - instructionService.finish(id); + instructionService.finish(id, "1"); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java index a62717d..897db31 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -181,6 +181,8 @@ public interface InstructionService extends CommonService { */ void finish(String id) throws Exception; + void finish(String id,String operationType)throws Exception; + /** * 完成指令 * diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 2ff887a..f435b59 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -20,6 +20,9 @@ import org.nl.acs.agv.server.MagicAgvService; import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.agv.server.ZheDaAgvService; import org.nl.acs.auto.initial.ApplicationAutoInitial; +import org.nl.acs.common.base.PageInfo; +import org.nl.acs.common.base.QueryHelpMybatisPlus; +import org.nl.acs.common.base.impl.CommonServiceImpl; import org.nl.acs.device.domain.Device; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.impl.DeviceServiceImpl; @@ -30,9 +33,12 @@ 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.instruction.domain.Instruction; import org.nl.acs.instruction.domain.InstructionMybatis; +import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.InstructionDto; import org.nl.acs.instruction.service.dto.InstructionQueryParam; +import org.nl.acs.instruction.service.mapper.InstructionMapper; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.route.service.RouteLineService; @@ -42,30 +48,20 @@ import org.nl.acs.task.TaskInstructionLock; import org.nl.acs.task.domain.Task; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; -import org.nl.acs.common.base.PageInfo; -import org.nl.acs.common.base.QueryHelpMybatisPlus; -import org.nl.acs.common.base.impl.CommonServiceImpl; import org.nl.acs.task.service.mapper.TaskMapper; -import org.nl.common.exception.BadRequestException; import org.nl.acs.utils.ConvertUtil; -import org.nl.common.utils.FileUtil; import org.nl.acs.utils.PageUtil; -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.system.service.param.ISysParamService; +import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.FileUtil; +import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -// 默认不使用缓存 -//import org.springframework.cache.annotation.CacheConfig; -//import org.springframework.cache.annotation.CacheEvict; -//import org.springframework.cache.annotation.Cacheable; -import org.springframework.data.domain.Pageable; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -354,9 +350,9 @@ public class InstructionServiceImpl extends CommonServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(InstructionMybatis::getTask_id, id); wrapper.apply(StringUtils.isNotBlank(wherecaluse), wherecaluse); - InstructionMybatis ins = instructionMapper.selectOne(wrapper); - if (ObjectUtil.isNotEmpty(ins)) { - return ConvertUtil.convert(ins, Instruction.class); + List insList = instructionMapper.selectList(wrapper); + if (ObjectUtil.isNotEmpty(insList)) { + return ConvertUtil.convert(insList.get(0), Instruction.class); } return null; } @@ -388,14 +384,13 @@ public class InstructionServiceImpl extends CommonServiceImpl(instructionMapper) .lt(InstructionMybatis::getInstruction_status, 3) .eq(InstructionMybatis::getNext_point_code, dto.getNext_point_code()) @@ -656,11 +663,6 @@ public class InstructionServiceImpl extends CommonServiceImpl(taskMapper) .eq(Task::getTask_id, insttaskid) @@ -839,78 +846,76 @@ public class InstructionServiceImpl extends CommonServiceImpl(taskMapper) - .eq(Task::getTask_id, insttaskid) - .one(); - // =0 则不用再次请求 - if (StrUtil.equals(task.getRequest_again(), "0")) { - if (StrUtil.equals(task.getNext_device_code(), instnextdevice)) { - taskService.finish(task.getTask_id()); - } else { - finishAndCreateNextInst(dto); + InstructionMybatis ins = ConvertUtil.convert(dto, InstructionMybatis.class); + instructionMapper.updateById(ins); + + String instnextdevice = dto.getNext_device_code(); + String insttaskid = dto.getTask_id(); + + + Task task = new LambdaQueryChainWrapper<>(taskMapper) + .eq(Task::getTask_id, insttaskid) + .one(); + // =0 则不用再次请求 + if (StrUtil.equals(task.getRequest_again(), "0")) { + if (StrUtil.equals(task.getNext_device_code(), instnextdevice)) { + taskService.finish(task.getTask_id(),"1"); + } else { + finishAndCreateNextInst(dto); + } } + + DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); + Device device = appService.findDeviceByCode(instnextdevice); + if (device == null) { + log.debug("地址对应设备未找到"); + return; + } + // 如果是无光电的设备 放货任务完成需要变更有货状态 + // StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; + // if(device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { + // standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) + // device.getDeviceDriver(); + // standardOrdinarySiteDeviceDriver.setMove(2); + // } + + // 如果是无光电的设备 指令完成变更起点、终点状态 + JSONObject jo = new JSONObject(); + jo.put("device_code", dto.getStart_point_code()); + jo.put("hasGoodStatus", "0"); + jo.put("material_type", ""); + jo.put("batch", ""); + deviceService.changeDeviceStatus(jo); + + JSONObject jo1 = new JSONObject(); + jo1.put("device_code", dto.getNext_point_code()); + jo1.put("hasGoodStatus", "1"); + jo1.put("material_type", dto.getMaterial()); + jo1.put("batch", dto.getBatch()); + deviceService.changeDeviceStatus(jo1); + removeByCodeFromCache(dto.getInstruction_code()); + log.info("RGV反馈任务完成成功!指令号:{}", ins.getInstruction_code()); + } catch (Exception e) { + log.error("RGV反馈任务失败!任务id为:{},指令号为:{}", dto.getInstruction_code(), e.getMessage()); } - - DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); - Device device = appService.findDeviceByCode(instnextdevice); - if (device == null) { - log.debug("地址对应设备未找到"); - return; - } - // 如果是无光电的设备 放货任务完成需要变更有货状态 - // StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - // if(device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { - // standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) - // device.getDeviceDriver(); - // standardOrdinarySiteDeviceDriver.setMove(2); - // } - - // 如果是无光电的设备 指令完成变更起点、终点状态 - JSONObject jo = new JSONObject(); - jo.put("device_code", dto.getStart_point_code()); - jo.put("hasGoodStatus", "0"); - jo.put("material_type", ""); - jo.put("batch", ""); - deviceService.changeDeviceStatus(jo); - - JSONObject jo1 = new JSONObject(); - jo1.put("device_code", dto.getNext_point_code()); - jo1.put("hasGoodStatus", "1"); - jo1.put("material_type", dto.getMaterial()); - jo1.put("batch", dto.getBatch()); - deviceService.changeDeviceStatus(jo1); - - removeByCodeFromCache(dto.getInstruction_code()); // this.reload(); } @@ -919,9 +924,7 @@ public class InstructionServiceImpl extends CommonServiceImpl(taskMapper) .eq(Task::getTask_id, dto.getTask_id()) .one(); @@ -1010,83 +1013,88 @@ public class InstructionServiceImpl extends CommonServiceImpl finish(@RequestBody String id) { - taskService.finish(id); + taskService.finish(id, "2"); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java index 1b51545..bb1f04c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java @@ -215,8 +215,9 @@ public interface TaskService extends CommonService { * 完成任务 * * @param ids + * @param operationType */ - void finish(String ids); + void finish(String ids,String operationType); /** * 取消任务 diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 998011e..e61f20e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.map.MapUtil; 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.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -16,6 +15,9 @@ import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; import org.nl.acs.agv.server.XianGongAgvService; import org.nl.acs.auto.initial.ApplicationAutoInitial; +import org.nl.acs.common.base.PageInfo; +import org.nl.acs.common.base.QueryHelpMybatisPlus; +import org.nl.acs.common.base.impl.CommonServiceImpl; import org.nl.acs.device.domain.Device; import org.nl.acs.device.enums.DeviceType; import org.nl.acs.device.service.DeviceAssignedService; @@ -36,35 +38,27 @@ import org.nl.acs.route.service.dto.RouteLineDto; import org.nl.acs.route.service.mapper.RoutePlanMapper; import org.nl.acs.storage_cell.service.StorageCellService; import org.nl.acs.task.TaskInstructionLock; -import org.nl.acs.task.service.TaskFeedbackService; -import org.nl.acs.task.service.dto.TaskFeedbackDto; -import org.nl.acs.common.base.PageInfo; -import org.nl.acs.common.base.QueryHelpMybatisPlus; -import org.nl.acs.common.base.impl.CommonServiceImpl; -import org.nl.common.exception.BadRequestException; -import org.nl.acs.utils.ConvertUtil; -import org.nl.common.utils.FileUtil; -import org.nl.acs.utils.PageUtil; import org.nl.acs.task.domain.Task; +import org.nl.acs.task.service.TaskFeedbackService; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; +import org.nl.acs.task.service.dto.TaskFeedbackDto; import org.nl.acs.task.service.dto.TaskQueryParam; import org.nl.acs.task.service.mapper.TaskMapper; -import org.nl.common.utils.SecurityUtils; -import org.nl.system.service.param.ISysParamService; +import org.nl.acs.utils.ConvertUtil; +import org.nl.acs.utils.PageUtil; +import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; - +import org.nl.common.utils.FileUtil; +import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; 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.Propagation; import org.springframework.transaction.annotation.Transactional; -// 默认不使用缓存 -//import org.springframework.cache.annotation.CacheConfig; -//import org.springframework.cache.annotation.CacheEvict; -//import org.springframework.cache.annotation.Cacheable; -import org.springframework.data.domain.Pageable; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -899,9 +893,12 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } } + /** + * operationType 1自动完成 2手动完成 3手持完成 + */ @Override @Transactional(rollbackFor = Exception.class) - public void finish(String id) { + public void finish(String id, String operationType) { TaskDto entity = this.findById(id); if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); @@ -912,10 +909,15 @@ public class TaskServiceImpl extends CommonServiceImpl impleme entity.setUpdate_time(now); entity.setUpdate_by(currentUsername); entity.setTask_status("2"); - + if ("2".equals(operationType)) { + log.error("任务被PC端手动完成,任务号:{}", entity.getTask_code()); + entity.setRemark("任务被PC端手动完成"); + } else if ("3".equals(operationType)) { + log.error("任务被手持端手动完成,任务号:{}", entity.getTask_code()); + entity.setRemark("任务被手持端手动完成"); + } Task task = ConvertUtil.convert(entity, Task.class); taskMapper.updateById(task); - removeByCodeFromCache(entity.getTask_code()); // 判断是否为WMS下发的任务,如果是反馈任务状态给WMS String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue(); @@ -926,17 +928,17 @@ public class TaskServiceImpl extends CommonServiceImpl impleme request.setTask_status(entity.getTask_status()); request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode()); request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName()); - boolean flag = false; String resp = null; try { resp = acstowmsService.feedTaskStatus(request); - log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp); + JSONObject result = JSONObject.parseObject(resp); + if (result.getString("code").equals("200")) { + log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp); + } else { + log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), result.getString("message")); + } } catch (Exception e) { log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), e.getMessage()); - flag = true; - e.printStackTrace(); - } finally { - } } // 如果属于先知AGV,关闭运单序列 @@ -966,20 +968,20 @@ public class TaskServiceImpl extends CommonServiceImpl impleme entity.setUpdate_time(now); entity.setUpdate_by(currentUsername); entity.setTask_status("3"); - + entity.setRemark("任务被PC端手动取消"); Task task = ConvertUtil.convert(entity, Task.class); taskMapper.updateById(task); + log.error("任务被手动取消,任务号:{}", entity.getTask_code()); - -// synchronized (TaskServiceImpl.class){ -// Iterator it = tasks.iterator(); -// // 清理缓存 -// while (it.hasNext()) { -// TaskDto taskDto = it.next(); -// if (taskDto.getTask_id().equals(id)) { -// tasks.remove(taskDto); -// } -// }} + // synchronized (TaskServiceImpl.class){ + // Iterator it = tasks.iterator(); + // // 清理缓存 + // while (it.hasNext()) { + // TaskDto taskDto = it.next(); + // if (taskDto.getTask_id().equals(id)) { + // tasks.remove(taskDto); + // } + // }} removeByCodeFromCache(entity.getTask_code()); @@ -999,8 +1001,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp); } catch (Exception e) { log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), e.getMessage()); - } finally { - } } List shortPathsList = @@ -1203,13 +1203,16 @@ public class TaskServiceImpl extends CommonServiceImpl impleme if (acsTask == null) { throw new BadRequestException("被删除或无权限,操作失败!"); } + //只有执行中的任务才能创建指令 + if (!"1".equals(acsTask.getTask_status())) { + throw new BadRequestException("任务未执行,不能创建指令!"); + } DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); InstructionDto inst = instructionservice.findByTaskid(ids, "instruction_status < 2 "); if (inst != null) { throw new BadRequestException("有指令未完成!"); } - String taskid = acsTask.getTask_id(); String taskcode = acsTask.getTask_code(); String vehiclecode = acsTask.getVehicle_code(); @@ -1255,7 +1258,6 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } else { next_point_code = next_device_code; } - Instruction instdto = new Instruction(); instdto.setInstruction_type(task_type); instdto.setInstruction_id(IdUtil.simpleUUID()); @@ -1284,10 +1286,12 @@ public class TaskServiceImpl extends CommonServiceImpl impleme instdto.setAgv_system_type(agv_system_type); instdto.setAgv_inst_type("1"); instdto.setExt_task_id(acsTask.getExt_task_id()); - instructionservice.create2(instdto); - - // acsTask.setTask_status("1"); - // this.update(acsTask); + try { + instructionservice.create2(instdto); + log.info("手动创建指令成功!任务id为:{},指令号为:{}", acsTask.getTask_id(), instdto.getInstruction_code()); + } catch (Exception e) { + log.error("手动创建指令失败!任务id为:{},指令号为:{},失败原因{}", acsTask.getTask_id(), instdto.getInstruction_code(), e.getMessage()); + } return instdto; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/HandServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/HandServiceImpl.java index de41e07..8f571c4 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/HandServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/hand/service/impl/HandServiceImpl.java @@ -443,7 +443,7 @@ public class HandServiceImpl implements HandService { TaskIdAndStatusDTO taskIdAndStatusDTO = new TaskIdAndStatusDTO(); taskIdAndStatusDTO.setTask_id(task_uuid); taskIdAndStatusDTO.setTask_status(TaskStatusEnum.FINISHED.getIndex()); - taskserver.finish(task_uuid); + taskserver.finish(task_uuid,"3"); } resultJson.put("message", "操作成功"); resultJson.put("data", data); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateInst.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateInst.java index 4f999af..e78c5bf 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateInst.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/AutoCreateInst.java @@ -78,8 +78,6 @@ public class AutoCreateInst { continue; } } - - /** * 开始平均分解校验 */ @@ -202,6 +200,8 @@ public class AutoCreateInst { instructionService.create(instdto); } catch (Exception e) { acsTask.setRemark(e.getMessage()); + //自动创建指令失败,保存失败原因 + taskserver.update(acsTask); taskserver.updateByCodeFromCache(acsTask); continue; } @@ -209,7 +209,6 @@ public class AutoCreateInst { //创建指令后修改任务状态 acsTask.setTask_status("1"); taskserver.update(acsTask); - } } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/QueryZDAgvTaskStatus.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/QueryZDAgvTaskStatus.java index 83268c2..d94420e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/QueryZDAgvTaskStatus.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/QueryZDAgvTaskStatus.java @@ -41,7 +41,6 @@ public class QueryZDAgvTaskStatus { HttpResponse response2 = agvService.queryAgvInstStatus("1"); //查询AGV指令列表 JSONArray inst_rows2 = JSONArray.parseArray(response2.body()); -// JSONArray inst_rows2 = JSONArray.parseArray(""); for (int i = 0; i < inst_rows2.size(); i++) { JSONObject inst_jo = inst_rows2.getJSONObject(i); String inst_code = inst_jo.getString("task_code"); @@ -51,7 +50,6 @@ public class QueryZDAgvTaskStatus { } //反馈结果状态 log.info("instcode:" + inst_code + "," + inst_jo.toString()); - String status = inst_jo.getString("status"); String vehicle = ""; //正在执行指令agv车号 @@ -59,15 +57,14 @@ public class QueryZDAgvTaskStatus { vehicle = inst_jo.getString("vehicle"); inst.setCarno(vehicle); } -// RAW:初始状态 -// ACTIVE:业务订单已激活 -// DISPATCHABLE:业务订单已通过系统验证,等待被调度执行 -// BEING_PROCESSED:业务订单正在被执行 -// WITHDRAWN:业务订单已被撤销 -// FINISHED:业务订单已完成 -// FAILED:业务订单已失败 -// UNROUTABLE:无法规划该业务订单的执行路线 - + // RAW:初始状态 + // ACTIVE:业务订单已激活 + // DISPATCHABLE:业务订单已通过系统验证,等待被调度执行 + // BEING_PROCESSED:业务订单正在被执行 + // WITHDRAWN:业务订单已被撤销 + // FINISHED:业务订单已完成 + // FAILED:业务订单已失败 + // UNROUTABLE:无法规划该业务订单的执行路线 //执行中 if ("BEING_PdROCESSED".equals(status) || "ACTIVE".equals(status)) { if (inst != null) { @@ -88,18 +85,20 @@ public class QueryZDAgvTaskStatus { siteDeviceDriver.writing(10); siteDeviceDriver.writing(10); }catch(Exception e){ - log.error("写入信号失败:{}{}",e,e.getMessage()); + log.error("RGV反馈任务完成,写入检测站点驱动信号失败:{}{}",e,e.getMessage()); } } } inst.setInstruction_status("2"); instructionService.finish(inst); + log.info("RGV反馈任务完成成功!指令号:{}",inst_code); } } else if ("WITHDRAWN".equals(status) || "FAILED".equals(status)) { if (inst != null) { inst.setInstruction_status("3"); instructionService.update(inst); instructionService.removeByCodeFromCache(inst_jo.getString("task_code")); + log.info("RGV反馈任务撤销成功!指令号:{}",inst_code); } } JSONArray ja = inst_jo.getJSONArray("destinations"); @@ -120,7 +119,7 @@ public class QueryZDAgvTaskStatus { } } } catch (Exception e){ - + log.error("自动线程开始查询浙大AGV任务状态失败!失败原因:{}", e.getMessage()); } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java index 70ed158..79904b5 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java @@ -26,6 +26,7 @@ import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -60,12 +61,12 @@ public class SyncDeviceStatus { JSONArray jsonArray = JSONArray.parseArray(response.body()); //查询RGV指令列表 Map taskCodeToTaskIdMap = new HashMap<>(); - List task_codes = jsonArray.stream() + List taskCodes = jsonArray.stream() .map(r -> ((JSONObject) r).getString("task_code")) - .filter(task_code -> task_code != null && !task_code.isEmpty()) + .filter(r -> r != null && !r.isEmpty()) .collect(Collectors.toList()); - if (ObjectUtil.isNotEmpty(task_codes)) { - List instructionList = instructionService.list(new LambdaQueryWrapper().in(InstructionMybatis::getInstruction_code, task_codes)); + if (ObjectUtil.isNotEmpty(taskCodes)) { + List instructionList = instructionService.list(new LambdaQueryWrapper().in(InstructionMybatis::getInstruction_code, taskCodes)); taskCodeToTaskIdMap = instructionList.stream() .filter(instruction -> StringUtils.isNotBlank(instruction.getExt_task_id())) .collect(Collectors.toMap( @@ -89,7 +90,7 @@ public class SyncDeviceStatus { }); redisUtils.set("RGV", jsonArray); } catch (Exception e) { - log.error("自动上报驱动状态,查询浙大RGV设备状态失败{}{}", e, e.getMessage()); + // log.error("自动上报驱动状态,查询浙大RGV设备状态失败{}{}", e, e.getMessage()); } } @@ -100,7 +101,7 @@ public class SyncDeviceStatus { JSONArray guhuashi = new JSONArray(); JSONArray site = new JSONArray(); JSONArray agv = new JSONArray(); - log.info("自动线程开始查询agv设备状态"); + //log.info("自动线程开始查询agv设备状态"); List deviceList = deviceAppService.findAllDevice(); for (Device device : deviceList) { if (device.getDeviceDriver() instanceof BaoshijianSiteDeviceDriver) { @@ -187,8 +188,13 @@ public class SyncDeviceStatus { List deviceCodes = agv.stream() .map(r -> { String deviceCode = ((JSONObject) r).getString("device_code"); - return deviceCode.substring(deviceCode.length() - 1); + if (StringUtils.isNotBlank(deviceCode)) { + return deviceCode.substring(deviceCode.length() - 1); + } else { + return null; + } }) + .filter(Objects::nonNull) .collect(Collectors.toList()); if (ObjectUtil.isNotEmpty(deviceCodes)) { List instructionList = instructionService.list(new LambdaQueryWrapper().in(InstructionMybatis::getCarno, deviceCodes).lt(InstructionMybatis::getInstruction_status, 2).eq(InstructionMybatis::getIs_delete, 0)); @@ -212,9 +218,9 @@ public class SyncDeviceStatus { } redisUtils.set("agv", agv); - log.trace("自动上报驱动状态,完毕耗时{}", System.currentTimeMillis() - startTime); + // log.trace("自动上报驱动状态,完毕耗时{}", System.currentTimeMillis() - startTime); } catch (Exception e) { - log.error("自动线程开始查询AGV设备,自动上报驱动状态失败{}{}", e, e.getMessage()); + //log.error("自动线程开始查询AGV设备,自动上报驱动状态失败{}{}", e, e.getMessage()); } } } diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/acs/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index ec47ee2..9ec783b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/acs/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -71,36 +71,46 @@ https://juejin.cn/post/6844903775631572999 - + + + + + + + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java index 9f01ffb..9067495 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java @@ -156,20 +156,20 @@ public class CockpitServiceImpl implements CockpitService { //今日生产任务 CompletableFuture>> task7 = CompletableFuture.supplyAsync(() -> { List> result =cockpitMapper.getTdWorkmsg(); - List> today_work = new ArrayList<>(); - if (ObjectUtil.isEmpty(result)) { - //测试数据,上线后删除 - Map item1 = new HashMap<>(); - item1.put("workorder_code", "240918001"); - item1.put("material_name", "TS_12Z中负"); - item1.put("plan_qty", "100"); - item1.put("real_qty", "0"); - item1.put("point_name", "普涂线01"); - item1.put("device_code", "LTX01"); - item1.put("workorder_status", "生产中"); - today_work.add(item1); - } - getHomeInfo.put("today_work", today_work); + // List> today_work = new ArrayList<>(); + // if (ObjectUtil.isEmpty(result)) { + // //测试数据,上线后删除 + // Map item1 = new HashMap<>(); + // item1.put("workorder_code", "240918001"); + // item1.put("material_name", "TS_12Z中负"); + // item1.put("plan_qty", "100"); + // item1.put("real_qty", "0"); + // item1.put("point_name", "普涂线01"); + // item1.put("device_code", "LTX01"); + // item1.put("workorder_status", "生产中"); + // today_work.add(item1); + // } + getHomeInfo.put("today_work", result); return null; }, pool); task7.exceptionally((e) -> { @@ -207,7 +207,7 @@ public class CockpitServiceImpl implements CockpitService { CompletableFuture>> task10 = CompletableFuture.supplyAsync(() -> { List> result =cockpitMapper.faultAlarm(); //测试数据,上线后删除 - faultAlarmDefault(result, "GHS01"); + //faultAlarmDefault(result, "GHS01"); getHomeInfo.put("fault_alarm", result); return null; }, pool); @@ -219,7 +219,6 @@ public class CockpitServiceImpl implements CockpitService { //近30日故障统计 CompletableFuture task11 = CompletableFuture.supplyAsync(() -> { JSONArray result=cockpitMapper.monthlyFaultStatistics(); - //测试数据,上线后删除 getHomeInfo.put("monthly_fault_statistics", result); return null; }, pool); @@ -321,11 +320,11 @@ public class CockpitServiceImpl implements CockpitService { //实时故障告警 List> fault_alarm = cockpitMapper.FaultTime("TBX"); //测试数据,上线后删除 - faultAlarmDefault(fault_alarm, "LTX01"); + //faultAlarmDefault(fault_alarm, "LTX01"); //近30日故障统计 JSONArray monthly_fault_statistics = cockpitMapper.FaultTotal("TBX"); //测试数据,上线后删除 - monthlyFaultStatisticsDefault(monthly_fault_statistics, "LTX01"); + //monthlyFaultStatisticsDefault(monthly_fault_statistics, "LTX01"); List> monthly_produce_statistics = cockpitMapper.getTbxMonthlyStatistics(); List> tbxMonthlyStatistics = new ArrayList<>(); for (int i = 0; i < 30; i++) { @@ -410,7 +409,7 @@ public class CockpitServiceImpl implements CockpitService { //今日固化任务 List> gh_material_summary = new ArrayList<>(); List taskInfos = getTasks(RegionCodeConstant.CURING_ZONE); - if (ObjectUtil.isNotEmpty(taskInfos)) { + // if (ObjectUtil.isNotEmpty(taskInfos)) { taskInfos.forEach(r -> { Map item = new HashMap<>(); item.put("material_name", r.getMaterial_name()); @@ -419,21 +418,21 @@ public class CockpitServiceImpl implements CockpitService { item.put("type", r.getType()); gh_material_summary.add(item); }); - } else { - //测试数据,上线后删除 - Map item1 = new HashMap<>(); - item1.put("material_name", "TS_1.9A正"); - item1.put("material_spec", "正涂片极板/1.9A/大片"); - item1.put("qty", "100"); - item1.put("type", "入库"); - Map item2 = new HashMap<>(); - item2.put("material_name", "TS_15A负"); - item2.put("material_spec", "负涂片极板/15A/大片"); - item2.put("qty", "100"); - item2.put("type", "出库"); - gh_material_summary.add(item1); - gh_material_summary.add(item2); - } + // } else { + // //测试数据,上线后删除 + // Map item1 = new HashMap<>(); + // item1.put("material_name", "TS_1.9A正"); + // item1.put("material_spec", "正涂片极板/1.9A/大片"); + // item1.put("qty", "100"); + // item1.put("type", "入库"); + // Map item2 = new HashMap<>(); + // item2.put("material_name", "TS_15A负"); + // item2.put("material_spec", "负涂片极板/15A/大片"); + // item2.put("qty", "100"); + // item2.put("type", "出库"); + // gh_material_summary.add(item1); + // gh_material_summary.add(item2); + // } stopWatch2.stop(); System.out.println("今日固化任务统计花费时间---= totalTime = " + stopWatch2.getTotalTimeMillis()); @@ -442,7 +441,7 @@ public class CockpitServiceImpl implements CockpitService { stopWatch3.start(); //实时故障告警 List> fault_alarm = cockpitMapper.FaultTime("GH"); - faultAlarmDefault(fault_alarm, "GHS01"); + //faultAlarmDefault(fault_alarm, "GHS01"); stopWatch3.stop(); System.out.println("查询实时故障告警花费时间---= totalTime = " + stopWatch3.getTotalTimeMillis()); @@ -452,11 +451,9 @@ public class CockpitServiceImpl implements CockpitService { //近30日故障统计 JSONArray monthly_fault_statistics = cockpitMapper.FaultTotal("GH"); //测试数据,上线后删除 - monthlyFaultStatisticsDefault(monthly_fault_statistics, "GHS01"); + //monthlyFaultStatisticsDefault(monthly_fault_statistics, "GHS01"); stopWatch4.stop(); System.out.println("查询近30日故障统计花费时间---= totalTime = " + stopWatch4.getTotalTimeMillis()); - - getGhsInfo.put("curing_summary", curing_summary); getGhsInfo.put("monthly_gh_qty", monthly_gh_qty_default); getGhsInfo.put("gh_material_summary", gh_material_summary); @@ -550,12 +547,12 @@ public class CockpitServiceImpl implements CockpitService { //近30日故障统计 JSONArray monthly_fault_statistics = cockpitMapper.monthlyFaultStatistics(); //测试数据,上线后删除 - if (ObjectUtil.isEmpty(monthly_fault_statistics)) { - JSONObject item = new JSONObject(); - item.put("region_name", "GHS"); - item.put("alarm_qty", "1"); - monthly_fault_statistics.add(item); - } + // if (ObjectUtil.isEmpty(monthly_fault_statistics)) { + // JSONObject item = new JSONObject(); + // item.put("region_name", "GHS"); + // item.put("alarm_qty", "1"); + // monthly_fault_statistics.add(item); + // } getHandlingInfo.put("device_status", device_status); getHandlingInfo.put("fault_alarm", fault_alarm); getHandlingInfo.put("monthly_fault_statistics", monthly_fault_statistics); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockpitMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockpitMapper.xml index 8bf7628..2b66f5c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockpitMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockpitMapper.xml @@ -485,17 +485,17 @@ ) g ON g.workorder_code = w.workorder_code WHERE w.point_code = #{deviceCode} - - - - - - - - - - - + AND + + w.create_time BETWEEN CONCAT(DATE(NOW()), ' 07:00:00') AND CONCAT(DATE(NOW()), ' 18:00:00') + + + w.create_time BETWEEN CONCAT(DATE(NOW()), ' 18:30:00') AND CONCAT(DATE_ADD(DATE(NOW()), INTERVAL 1 DAY), ' 06:30:00') + + + 1 = 1 + +