| src/main/java/com/zy/api/controller/AgvScheduleController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/BasStation.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/enums/TaskStatusType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/TaskMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/api/controller/AgvScheduleController.java
@@ -31,9 +31,6 @@ if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } if (Objects.isNull(params.getType())) { return R.error("搬运类型不能为空!!"); } return agvScheduleService.callAgvCarry(params); } src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
@@ -15,6 +15,7 @@ import com.zy.asrs.entity.result.HIKResultDTO; import com.zy.asrs.enums.LocStsType; import com.zy.asrs.enums.TaskIOType; import com.zy.asrs.enums.TaskStatusType; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.LocCacheService; import com.zy.asrs.service.TaskService; @@ -24,8 +25,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.UUID; @@ -48,47 +51,80 @@ * @version 1.0 */ @Override @Transactional(rollbackFor = Exception.class) public R callAgvCarry(CallAgvParams params) { if (params.getType().equals(OrderType.ORDER_OUT.type)) { //缓存区出库 } else if (params.getType().equals(OrderType.ORDER_IN.type)) { //缓存区入库 } else { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } if (Objects.isNull(params.getWrkNo())) { return R.error("任务号不能为空!!"); } Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo())); if (Objects.isNull(task)) { return R.error("任务信息不存在!!"); } if (Arrays.asList(TaskIOType.ALL_IN.type, TaskIOType.PICK_IN.type, TaskIOType.MERGE_IN.type) .contains(task.getIoType())) { // 入库 task.setWrkSts(TaskStatusType.AGV_TASK_ISSUED_IN.type); } else if (Arrays.asList(TaskIOType.ALL_OUT.type, TaskIOType.PICK_OUT.type, TaskIOType.MERGE_OUT.type) .contains(task.getIoType())) { // 出库 task.setWrkSts(TaskStatusType.AGV_TASK_ISSUED_OUT.type); } if (!taskService.updateById(task)) { throw new CoolException("任务状态更新失败!!"); } return R.ok(); } @Override @Transactional(rollbackFor = Exception.class) public R callback(CallAgvParams params) { //TODO 1. 搬运完成,修改站点库位状态 if (params.getType().equals(OrderType.ORDER_OUT.type)) { //出库单 if (params.getStatus().equals("RUNING")) { LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", params.getOrgLoc())); if (Objects.isNull(locCache)) { throw new CoolException("库位信息不存在!!"); } if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) { locCache.setLocSts(LocStsType.LOC_STS_TYPE_O.type); } } else if (params.getStatus().equals("FINISHED")) { Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo())); if (Objects.isNull(task)) { throw new CoolException("任务信息不存在!!"); } if (!taskService.updateById(task)) { throw new CoolException("任务状态更新失败!!"); } } } else { //入库单 if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } if (Objects.isNull(params.getWrkNo())) { return R.error("任务号不能为空!!"); } Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo())); if (Objects.isNull(task)) { return R.error("任务信息不存在!!"); } return null; } // if (!Arrays.asList(TaskStatusType.AGV_TASK_ISSUED_IN.type, TaskStatusType.AGV_TASK_ISSUED_OUT.type).contains(task.getIoType())) { // return R.error(""); // } // if (Arrays.asList(TaskIOType.ALL_IN.type, TaskIOType.PICK_IN.type, TaskIOType.MERGE_IN.type) .contains(task.getIoType())) { // 入库 if (params.getStatus().equals("RUNNING")) { task.setWrkSts(TaskStatusType.AGV_TASK_RUNNING_IN.type); } else if (params.getStatus().equals("FINISHED")){ task.setWrkSts(TaskStatusType.AGV_TASK_FINISHED_IN.type); } } else if (Arrays.asList(TaskIOType.ALL_OUT.type, TaskIOType.PICK_OUT.type, TaskIOType.MERGE_OUT.type) .contains(task.getIoType())) { // 出库 if (params.getStatus().equals("RUNNING")) { task.setWrkSts(TaskStatusType.AGV_TASK_RUNNING_OUT.type); } else if (params.getStatus().equals("FINISHED")){ task.setWrkSts(TaskStatusType.AGV_TASK_FINISHED_OUT.type); } } if (!taskService.updateById(task)) { throw new CoolException("状态修改失败!!"); } return R.ok("执行完成 !!"); } public HIKResultDTO sendAgvTask(HIKApiDTO haiKangApiDTO, String path) { HIKResultDTO result = new HIKResultDTO(); @@ -99,8 +135,10 @@ forwardAGVTaskParam.setCtnrTyp(haiKangApiDTO.getCtnrType()); forwardAGVTaskParam.setPriority(haiKangApiDTO.getPriority()); List<ForwardAGVTaskDTO.PositionCodePaths> positionCodePathsList = new ArrayList<>(); positionCodePathsList.add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getOrg(), haiKangApiDTO.getOrgType())); positionCodePathsList.add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getTar(), haiKangApiDTO.getTarType())); positionCodePathsList .add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getOrg(), haiKangApiDTO.getOrgType())); positionCodePathsList .add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getTar(), haiKangApiDTO.getTarType())); forwardAGVTaskParam.setPositionCodePath(positionCodePathsList); String body = JSON.toJSONString(forwardAGVTaskParam); String response = ""; @@ -118,7 +156,7 @@ result.setMessage(jsonObject.getString("message")); log.error("发送agv任务失败!!!url:{};request:{};response:{}", HIKApiConstant.AGV_IP + path, body, response); } // {"code":"1","data":"","interrupt":false,"message":"重复提交","msgErrCode":"0x3a80D012","reqCode":"fa92b49481a44627ae4d80c1400f28f6"} // {"code":"1","data":"","interrupt":false,"message":"重复提交","msgErrCode":"0x3a80D012","reqCode":"fa92b49481a44627ae4d80c1400f28f6"} } catch (Exception e) { result.setMessage(e.getMessage()); log.error("发送agv任务异常", e); @@ -132,14 +170,12 @@ "127.0.0.1", body, response, result.isSuccess() ); result.isSuccess()); } catch (Exception e) { log.error("", e); } } return result; } } src/main/java/com/zy/asrs/entity/BasStation.java
@@ -311,17 +311,17 @@ return null; } if (this.locSts.equals(LocStsType.LOC_STS_TYPE_O.type)) { return LocStsType.LOC_STS_TYPE_O.type + "." + LocStsType.LOC_STS_TYPE_O.desc; return LocStsType.LOC_STS_TYPE_O.desc; } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_R.type)) { return LocStsType.LOC_STS_TYPE_R.type + "." + LocStsType.LOC_STS_TYPE_R.desc; return LocStsType.LOC_STS_TYPE_R.desc; } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_S.type)) { return LocStsType.LOC_STS_TYPE_S.type + "." + LocStsType.LOC_STS_TYPE_S.desc; return LocStsType.LOC_STS_TYPE_S.desc; } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_F.type)) { return LocStsType.LOC_STS_TYPE_F.type + "." + LocStsType.LOC_STS_TYPE_F.desc; return LocStsType.LOC_STS_TYPE_F.desc; } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_X.type)) { return LocStsType.LOC_STS_TYPE_X.type + "." + LocStsType.LOC_STS_TYPE_X.desc; return LocStsType.LOC_STS_TYPE_X.desc; } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_D.type)) { return LocStsType.LOC_STS_TYPE_D.type + "." + LocStsType.LOC_STS_TYPE_D.desc; return LocStsType.LOC_STS_TYPE_D.desc; } return null; } src/main/java/com/zy/asrs/enums/TaskStatusType.java
New file @@ -0,0 +1,40 @@ package com.zy.asrs.enums; /** * 工作状态枚举 * 根据WrkStaus表生成对应枚举信息 */ public enum TaskStatusType { IN_START("1", "1.生成入库ID"), DEVICE_MOVE("2", "2.设备上走"), CRANE_IN_PROGRESS("3", "3.吊车入库中"), INBOUND_COMPLETED("4", "4.入库完成"), INBOUND_ARCHIVED("5", "5.库存更新完成"), DEVICE_EXIT("6", "6.设备上退出"), OUT_START("11", "11.生成出库ID"), CRANE_OUT_PROGRESS("12", "12.吊车出库中"), CRANE_EMPTY_OUT_ERROR("13", "13.吊车空出库错误"), OUTBOUND_COMPLETED("14", "14.已出库未确认"), OUTBOUND_ARCHIVED("15", "15.出库更新完成"), AGV_IN_START("201", "201.生成入库ID"), AGV_TASK_ISSUED_IN("202", "202.任务下发成功"), AGV_TASK_RUNNING_IN("203", "203.任务执行中"), AGV_TASK_FINISHED_IN("204", "204.任务执行完成"), AGV_INVENTORY_UPDATED_IN("205", "205.库存更新完成"), AGV_OUT_START("301", "301.生成出库ID"), AGV_TASK_ISSUED_OUT("302", "302.任务下发成功"), AGV_TASK_RUNNING_OUT("303", "303.任务执行中"), AGV_TASK_FINISHED_OUT("304", "304.任务执行完成"), AGV_INVENTORY_UPDATED_OUT("305", "305.库存更新完成"), ; public Long type; public String desc; TaskStatusType(String type, String desc) { this.type = Long.valueOf(type); this.desc = desc; } } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -2304,7 +2304,7 @@ Task task = new Task(); task.setWrkNo(workNo) .setIoTime(new Date()) .setWrkSts(11L) // 工作状态:11.生成出库ID .setWrkSts(301L) // 工作状态:11.生成出库ID .setIoType(loc.getLocSts().equals("D") ? 110 : 101) // 入出库状态: 11.库格移载 .setTaskType("agv") .setIoPri(10D) @@ -2396,7 +2396,7 @@ Task task = new Task(); task.setWrkNo(workNo) .setIoTime(new Date()) .setWrkSts(1L) // 工作状态:11.生成出库ID .setWrkSts(201L) // 工作状态:11.生成出库ID .setIoType(1) // 入出库状态: 11.库格移载 .setTaskType("agv") .setIoPri(10D) src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.*; import com.zy.asrs.enums.TaskStatusType; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; @@ -154,7 +155,7 @@ } // 入库 -------------------------------------------------------------------------------- if (task.getWrkSts() == 5) { if (task.getWrkSts().equals(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type)) { // 全板入库 if (task.getIoType() == 1) { // 入库通知单 @@ -184,7 +185,7 @@ } // 出库 -------------------------------------------------------------------------------- } else if (task.getWrkSts() == 15) { } else if (task.getWrkSts().equals(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type)) { // if (!Cools.isEmpty(wrkDetls)) { // if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { // exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -7,6 +7,7 @@ import com.zy.asrs.enums.LocAreaType; import com.zy.asrs.enums.LocStsType; import com.zy.asrs.enums.TaskIOType; import com.zy.asrs.enums.TaskStatusType; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.*; import com.zy.asrs.task.AbstractHandler; @@ -727,10 +728,10 @@ @Transactional(rollbackFor = Exception.class) public ReturnT<String> AgvStart(Task task) { // 4.入库完成 if (task.getWrkSts() == 4) { if (task.getWrkSts().equals(TaskStatusType.AGV_TASK_FINISHED_IN.type)) { return agvDoIn(task); // 14.出库完成 } else if (task.getWrkSts() == 14) { } else if (task.getWrkSts().equals(TaskStatusType.AGV_TASK_FINISHED_OUT.type)) { return agvDoOut(task); } return SUCCESS; @@ -828,7 +829,7 @@ throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!"); } task.setWrkSts(15L); task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type); if (!taskService.updateById(task)) { throw new CoolException("任务状态修改失败!!"); } @@ -864,7 +865,7 @@ if (!basStationService.updateById(devNo)) { throw new CoolException("站点信息修改失败!!"); } task.setWrkSts(15L); task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type); if (!taskService.updateById(task)) { throw new CoolException("任务状态修改失败!!"); } @@ -877,7 +878,6 @@ @Transactional(rollbackFor = Exception.class) public ReturnT<String> agvDoIn(Task wrkMast) { LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo())); if (!Objects.isNull(wrkMast.getSourceStaNo())) { BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>() .eq("dev_no", wrkMast.getSourceStaNo())); @@ -963,7 +963,7 @@ if (!locCacheService.updateById(locCache)) { throw new CoolException("库位状态修改失败!"); } wrkMast.setWrkSts(5L); wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type); wrkMast.setModiTime(new Date()); if (!taskService.updateById(wrkMast)) { throw new CoolException("任务状态修改失败!!"); @@ -1058,7 +1058,7 @@ } // 修改工作主档状态 wrkMast.setWrkSts(5L); wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type); wrkMast.setModiTime(now); if (!taskService.updateById(wrkMast)) { // exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo()); src/main/resources/mapper/TaskMapper.xml
@@ -9,13 +9,13 @@ </resultMap> <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task"> select * from agv_task where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no select * from agv_task where ((wrk_sts = 204 Or wrk_sts = 304 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no </select> <select id="selectToBeHistoryData" resultType="com.zy.asrs.entity.Task"> select * from agv_task where wrk_sts=5 or wrk_sts=15 where wrk_sts=205 or wrk_sts=305 order by io_time,wrk_no asc </select>