src/main/java/com/zy/asrs/controller/OpenController.java
@@ -25,10 +25,12 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.ReactiveRedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.*; @@ -41,8 +43,8 @@ private String wmsUrl; @Value("${wms.inboundTaskApplyPath}") private String inboundTaskApplyPath; @Value("${wms.taskStatusFeedbackPath}") private String taskStatusFeedbackPath; @Value("${wms.TaskExecCallback}") private String TaskExecCallback; @Autowired private OpenService openService; @@ -72,6 +74,8 @@ public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{ add("ea1f0459efc02a79f046f982767939ae"); }}; @Autowired private ReactiveRedisTemplate reactiveRedisTemplate; private void auth(String appkey, Object obj, HttpServletRequest request) { log.info("{}接口被访问;appkey:{};请求数据:{}", request.getServletPath(), appkey, JSON.toJSONString(obj)); @@ -169,8 +173,7 @@ return R.error("条码[barcode]不能为空"); } HashMap<String, Object> result = openService.taskCreateIn(param); return R.ok().add(result); return openService.taskCreateIn(param); }catch (Exception e){ log.error("任务下发异常"+e); } @@ -208,114 +211,95 @@ //任务下发接口 @PostMapping("/outboundTaskSend") @Transactional public HashMap<String, Object> outboundTaskSend(@RequestBody HashMap<String,Object> hashMap) { String jsonString = JSON.toJSONString(hashMap.get("TaskList")); List<CarryParam> params= JSONObject.parseArray(jsonString,CarryParam.class); HashMap<String, Object> map = new HashMap<>(); List<WMSAndAGVInterfaceParam> params1 =new ArrayList<>(); for (CarryParam param:params){ if (Cools.isEmpty(param)){ map.put("Code","0"); map.put("Msg","参数为空!"); return map; } else if (Cools.isEmpty(param.getTaskNo())){ map.put("Code","0"); map.put("Msg","任务号为空!"); return map; } else if (Cools.isEmpty(param.getStereoscopicTaskType())){ map.put("Code","0"); map.put("Msg","任务类型为空!"); return map; } String fusion = Utils.getLocNo(param.getOriginalRowNo(), param.getOriginalFloorNo(), param.getOriginalColumnNo()); param.setStartPoint(fusion); LocMast locMast = locMastService.selectByLocNo(param.getStartPoint()); if(Cools.isEmpty(locMast)){ map.put("Code","0"); map.put("Msg","初始库位无法找到!"); return map; } HashMap<String,Object> r = new HashMap<>(); if(param.getStereoscopicTaskType() == 2){ //出库任务创建 StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() .eq("type_no",2) .eq("crn_no",locMast.getCrnNo()) .eq("stn_no",param.getTerminalNo())); if(Cools.isEmpty(staDesc)){ map.put("Code","0"); map.put("Msg","出库路劲不存在!"); return map; } r = openService.taskCreate(new TaskCreateParam(param,staDesc.getCrnNo())); if(r.get("Code").equals("0")){ return r; } }else if (param.getStereoscopicTaskType() == 3){ String fusion1 = Utils.getLocNo(param.getGoalRowNo(), param.getGoalFloorNo(), param.getGoalColumnNo()); param.setTerminalNo(fusion1); //移库任务创建 r = openService.taskCreate(new TaskCreateParam(param,locMast.getCrnNo())); if(r.get("Code").equals("0")){ return r; } } apiLogService.save("Wms任务下发接口" ,request.getRemoteAddr()+request.getRequestURI() ,"" ,request.getRemoteAddr() ,JSON.toJSONString(param) ,r.toString() ,true ); public HashMap<String, Object> outboundTaskSend(@RequestBody TaskCreateParam param) { if (Cools.isEmpty(param)){ return R.error("参数为空"); } map.put("Code","1"); map.put("Msg","ok"); return map; if (param.getTaskNo() == null){ return R.error("任务号为空"); } if (param.getIoType() == null){ return R.error("任务类型为空"); } LocMast locMast = locMastService.selectByLocNo(param.getStartPoint()); if(locMast == null){ return R.error("初始库位无法找到"); } if (!locMast.getLocSts().equals("F")) { return R.error("库位不处于在库状态"); } R result = null; if(param.getIoType() == 1){ //出库任务创建 StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() .eq("type_no", 2) .eq("crn_no", locMast.getCrnNo()) .eq("stn_no", param.getTargetPoint())); if(Cools.isEmpty(staDesc)){ return R.error("出库路径不存在"); } param.setIoType(2); result = openService.taskCreate(param); } apiLogService.save("wms任务下发接口" ,request.getRemoteAddr()+request.getRequestURI() ,"" ,request.getRemoteAddr() ,JSON.toJSONString(param) ,JSON.toJSONString(result) ,true ); return result; } //任务取消接口 @PostMapping("/taskCancel") public R taskCancel(@RequestHeader String appkey, @RequestBody WMSAndAGVInterfaceParam param, @RequestBody TaskCancelParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)){ if (Cools.isEmpty(param)) { return R.error("参数为空!"); } else if (Cools.isEmpty(param.getTaskNo())){ } else if (Cools.isEmpty(param.getTaskNo())) { return R.error("工作号为空!"); } else if (Cools.isEmpty(param.getIoType())){ } else if (Cools.isEmpty(param.getIoType())) { return R.error("操作类型为空!"); } else if (Cools.isEmpty(param.getBarcode())){ } else if (Cools.isEmpty(param.getBarcode())) { return R.error("托盘码不能为空!"); } TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>() .eq("task_no", param.getTaskNo()) .eq("io_type",param.getIoType()) .eq("barcode",param.getBarcode())); .eq("io_type", param.getIoType()) .eq("barcode", param.getBarcode())); if (Cools.isEmpty(taskWrk)){ return R.error("未查到当前任务---"+param); return R.error("未查到当前任务---" + param); } boolean sign =false; switch (param.getTaskStatus()){ switch (param.getTaskStatus()) { case 1://正常取消 if (taskWrk.getStatus()>1){ if (taskWrk.getStatus() > 1) { return R.error("任务已开始执行"); } break; case 2://正常完成 if (taskWrk.getStatus()>1){ if (taskWrk.getStatus() > 1) { return R.error("任务已开始执行"); } sign=true; sign = true; break; default: return R.error("未知操作"); } return taskWrkOperate(taskWrk,sign); return taskWrkOperate(taskWrk, sign); } //任务操作 @@ -369,13 +353,13 @@ } HashMap<String, Object> requestParam = new HashMap<>(); requestParam.put("BoxNo", barcode);//托盘码 requestParam.put("TerminalNo", staNo);//入库口 requestParam.put("barcode", barcode);//托盘码 requestParam.put("stationCode", staNo);//入库口 if (back) { requestParam.put("WCSStatus", 1);//失败 requestParam.put("WCSErrorMessage", errMsg);//失败原因 requestParam.put("wcsStatus", 1);//失败 requestParam.put("wcsErrorMessage", errMsg);//失败原因 }else { requestParam.put("WCSStatus", 0);//成功 requestParam.put("wcsStatus", 0);//成功 } String response = ""; @@ -389,67 +373,72 @@ .doPost(); JSONObject jsonObject = JSON.parseObject(response); int returnStatus = Integer.parseInt(jsonObject.get("ReturnStatus").toString()); if (returnStatus == 0) { Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class); // 创新一个入库工作档 TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo()); if(taskWrk != null) { log.info("任务:" + result.getTaskNo() + "已经存在"); return R.error(); } JSONObject result = jsonObject.getJSONObject("data"); Integer resultWrkNo = result.getInteger("wrkNo"); Integer resultStaNo = result.getInteger("staNo"); String resultLocNo = result.getString("locNo"); String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn()); LocMast locMast = locMastService.selectByLocNo(locNo); if (locMast == null) { log.info(locNo + "库位不存在"); return R.error(); } // 创新一个入库工作档 TaskWrk taskWrk = taskWrkService.selectByTaskNo(String.valueOf(resultWrkNo)); if(taskWrk != null) { log.info("任务:" + resultWrkNo + "已经存在"); return R.error(); } if (!locMast.getLocSts().equals("O")) { log.info(locNo + "库位不处于空库位"); return R.error(); } LocMast locMast = locMastService.selectByLocNo(resultLocNo); if (locMast == null) { log.info(resultLocNo + "库位不存在"); return R.error(); } Date now = new Date(); taskWrk = new TaskWrk(); taskWrk.setTaskNo(result.getTaskNo());//任务号 taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号 taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收 taskWrk.setWrkSts(2);//2.设备上走 taskWrk.setCreateTime(now); taskWrk.setIoType(1);//任务类型 taskWrk.setIoPri(13);//优先级 taskWrk.setBarcode(barcode);//条码 taskWrk.setCrnNo(locMast.getCrnNo()); taskWrk.setTargetPoint(locNo); taskWrk.setStartPoint(String.valueOf(staNo)); if (!Cools.isEmpty(taskWrk.getTargetPoint())) { taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint()); } if (!locMast.getLocSts().equals("O")) { log.info(resultLocNo + "库位不处于空库位"); return R.error(); } if (!taskWrkService.insert(taskWrk)) { log.info("任务:" + result.getTaskNo() + "任务创建失败"); return R.error(); } Date now = new Date(); taskWrk = new TaskWrk(); taskWrk.setTaskNo(String.valueOf(resultWrkNo));//任务号 taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号 taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收 taskWrk.setWrkSts(2);//2.设备上走 taskWrk.setCreateTime(now); taskWrk.setIoType(1);//任务类型 taskWrk.setIoPri(13);//优先级 taskWrk.setBarcode(barcode);//条码 taskWrk.setCrnNo(locMast.getCrnNo()); taskWrk.setTargetPoint(resultLocNo); taskWrk.setStartPoint(String.valueOf(staNo)); if (!Cools.isEmpty(taskWrk.getTargetPoint())) { taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint()); } locMast.setLocSts("S"); locMast.setModiTime(new Date()); locMastService.updateById(locMast); if (!taskWrkService.insert(taskWrk)) { log.info("任务:" + resultWrkNo + "任务创建失败"); return R.error(); } //上报 HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("TaskNo", taskWrk.getTaskNo()); locMast.setLocSts("S"); locMast.setModiTime(new Date()); locMastService.updateById(locMast); NotifyCustomDataDto customDataDto = new NotifyCustomDataDto(); customDataDto.setUri(wmsUrl); customDataDto.setPath(taskStatusFeedbackPath); customDataDto.setData(JSON.toJSONString(hashMap)); boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto); if(notifyResult) { taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发 taskWrkService.updateById(taskWrk); } //上报 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm"); HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("taskNo", taskWrk.getTaskNo()); hashMap.put("status", TaskStatusType.DISTRIBUTE.id); hashMap.put("ioType", 2); hashMap.put("barcode", taskWrk.getBarcode()); hashMap.put("reportTime", format.format(new Date())); NotifyCustomDataDto customDataDto = new NotifyCustomDataDto(); customDataDto.setUri(wmsUrl); customDataDto.setPath(TaskExecCallback); customDataDto.setData(JSON.toJSONString(hashMap)); boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto); if(notifyResult) { taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发 taskWrkService.updateById(taskWrk); } } catch (Exception e) { log.error("请求入库调用接口失败"); src/main/java/com/zy/asrs/entity/TaskWrkLog.java
@@ -249,6 +249,8 @@ return "取消"; case 5: return "完结"; case 7: return "手动完结"; default: return String.valueOf(this.status); } src/main/java/com/zy/asrs/entity/param/CarryParam.java
File was deleted src/main/java/com/zy/asrs/entity/param/CarrysParam.java
File was deleted src/main/java/com/zy/asrs/entity/param/Result.java
File was deleted src/main/java/com/zy/asrs/entity/param/StorageEscalationParam.java
File was deleted src/main/java/com/zy/asrs/entity/param/TaskCancelParam.java
New file @@ -0,0 +1,20 @@ package com.zy.asrs.entity.param; import lombok.Data; @Data public class TaskCancelParam { //工作号 private String taskNo; //入出库类型 private Integer ioType; //托盘码 private String barcode; //状态 private Integer taskStatus; } src/main/java/com/zy/asrs/entity/param/TaskCreateOutParam.java
New file @@ -0,0 +1,31 @@ package com.zy.asrs.entity.param; import lombok.Data; @Data public class TaskCreateOutParam { //任务号 private String taskNo; //任务类型 private Integer ioType; //起点 private String startPoint; //优先级 private Integer taskPriority; //终点 private String targetPoint; //条码 private String barcode; //备注 private String memo; public TaskCreateOutParam(){}; } src/main/java/com/zy/asrs/entity/param/TaskCreateParam.java
@@ -28,45 +28,7 @@ //备注 private String memo; //堆垛机 private Integer crn; public TaskCreateParam(){}; public TaskCreateParam(WMSAndAGVInterfaceParam param){ this.taskNo = param.getTaskNo(); this.ioType = convertParamIoType(param.getTaskType()); this.barcode = param.getContainerCode(); this.taskPriority = param.getTaskPriority(); this.startPoint = param.getSourceLocationCode(); this.targetPoint = param.getTargetLocationCode(); this.emptyContainer = param.getEmptyContainer(); this.crn = param.getTaskTunnel(); }; public TaskCreateParam(CarryParam param, Integer crn){ this.taskNo = param.getTaskNo(); this.ioType = param.getStereoscopicTaskType(); this.barcode = param.getBoxNo(); this.taskPriority = 12; this.startPoint = param.getStartPoint(); this.targetPoint = param.getTerminalNo(); this.emptyContainer = "N"; this.crn = crn; }; public static Integer convertParamIoType(String paramIoType){ switch (paramIoType){ case "RK": return 1; case "CK": return 2; case "YK": return 3; default: return 0; } } } src/main/java/com/zy/asrs/entity/param/TaskStatusFeedbackParam.java
File was deleted src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,14 +1,14 @@ package com.zy.asrs.service; import com.core.common.R; import com.zy.asrs.entity.param.TaskCreateInParam; import com.zy.asrs.entity.param.TaskCreateParam; import java.util.HashMap; public interface OpenService { //创建任务 HashMap<String,Object> taskCreate(TaskCreateParam param); R taskCreate(TaskCreateParam param); HashMap<String,Object> taskCreateIn(TaskCreateInParam param); R taskCreateIn(TaskCreateInParam param); } src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -8,8 +8,6 @@ import com.core.common.R; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WmsLocStatus; import com.zy.asrs.entity.param.TaskOverToWms; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.LocMastService; src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,7 +10,6 @@ import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.domain.enums.WorkNoType; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.Result; import com.zy.asrs.mapper.*; import com.zy.asrs.service.*; import com.zy.asrs.utils.CommandUtils; @@ -42,6 +41,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; /** @@ -96,9 +96,7 @@ @Value("${wms.inboundTaskApplyPath}") private String inboundTaskApplyPath; @Value("${wms.TaskExecCallback}") private String TaskExecCallback; @Value("${wms.taskStatusFeedbackPath}") private String taskStatusFeedbackPath; private String taskExecCallback; public synchronized void generateStoreWrkFile1() { try { @@ -167,13 +165,13 @@ } HashMap<String, Object> requestParam = new HashMap<>(); requestParam.put("BoxNo", barcode);//托盘码 requestParam.put("TerminalNo", inSta.getStaNo());//入库口 requestParam.put("barcode", barcode);//托盘码 requestParam.put("stationCode", inSta.getStaNo());//入库口 if (back) { requestParam.put("WCSStatus", 1);//失败 requestParam.put("WCSErrorMessage", errMsg);//失败原因 requestParam.put("wcsStatus", 1);//失败 requestParam.put("wcsErrorMessage", errMsg);//失败原因 }else { requestParam.put("WCSStatus", 0);//成功 requestParam.put("wcsStatus", 0);//成功 } String response = ""; @@ -193,73 +191,78 @@ continue; } int returnStatus = Integer.parseInt(jsonObject.get("ReturnStatus").toString()); if (returnStatus == 0) { Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class); // 创新一个入库工作档 TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo()); if(taskWrk != null) { log.info("任务:" + result.getTaskNo() + "已经存在"); continue; } JSONObject result = jsonObject.getJSONObject("data"); Integer resultWrkNo = result.getInteger("wrkNo"); Integer resultStaNo = result.getInteger("staNo"); String resultLocNo = result.getString("locNo"); String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn()); LocMast locMast = locMastService.selectByLocNo(locNo); if (locMast == null) { log.info(locNo + "库位不存在"); continue; } // 创新一个入库工作档 TaskWrk taskWrk = taskWrkService.selectByTaskNo(String.valueOf(resultWrkNo)); if(taskWrk != null) { log.info("任务:" + resultWrkNo + "已经存在"); continue; } if (!locMast.getLocSts().equals("O")) { log.info(locNo + "库位不处于空库位"); continue; } LocMast locMast = locMastService.selectByLocNo(resultLocNo); if (locMast == null) { log.info(resultLocNo + "库位不存在"); continue; } Date now = new Date(); taskWrk = new TaskWrk(); taskWrk.setTaskNo(result.getTaskNo());//任务号 taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号 taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收 taskWrk.setWrkSts(2);//2.设备上走 taskWrk.setCreateTime(now); taskWrk.setIoType(1);//任务类型 taskWrk.setIoPri(13);//优先级 taskWrk.setBarcode(barcode);//条码 taskWrk.setCrnNo(locMast.getCrnNo()); taskWrk.setTargetPoint(locNo); taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo())); if (!Cools.isEmpty(taskWrk.getTargetPoint())) { taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint()); } if (!locMast.getLocSts().equals("O")) { log.info(resultLocNo + "库位不处于空库位"); continue; } if (!taskWrkService.insert(taskWrk)) { log.info("任务:" + result.getTaskNo() + "任务创建失败"); continue; } Date now = new Date(); taskWrk = new TaskWrk(); taskWrk.setTaskNo(String.valueOf(resultWrkNo));//任务号 taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号 taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收 taskWrk.setWrkSts(2);//2.设备上走 taskWrk.setCreateTime(now); taskWrk.setIoType(1);//任务类型 taskWrk.setIoPri(13);//优先级 taskWrk.setBarcode(barcode);//条码 taskWrk.setCrnNo(locMast.getCrnNo()); taskWrk.setTargetPoint(resultLocNo); taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo())); if (!Cools.isEmpty(taskWrk.getTargetPoint())) { taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint()); } locMast.setLocSts("S"); locMast.setModiTime(new Date()); locMastService.updateById(locMast); if (!taskWrkService.insert(taskWrk)) { log.info("任务:" + resultWrkNo + "任务创建失败"); continue; } StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId())); staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); staProtocol.setStaNo(staDesc.getCrnStn().shortValue()); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); locMast.setLocSts("S"); locMast.setModiTime(new Date()); locMastService.updateById(locMast); //上报 HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("TaskNo", taskWrk.getTaskNo()); StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId())); staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); staProtocol.setStaNo(staDesc.getCrnStn().shortValue()); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); NotifyCustomDataDto customDataDto = new NotifyCustomDataDto(); customDataDto.setUri(wmsUrl); customDataDto.setPath(taskStatusFeedbackPath); customDataDto.setData(JSON.toJSONString(hashMap)); boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto); if(notifyResult) { taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发 taskWrkService.updateById(taskWrk); } //上报 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm"); HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("taskNo", taskWrk.getTaskNo()); hashMap.put("status", TaskStatusType.DISTRIBUTE.id); hashMap.put("ioType", 1); hashMap.put("barcode", taskWrk.getBarcode()); hashMap.put("reportTime", format.format(new Date())); NotifyCustomDataDto customDataDto = new NotifyCustomDataDto(); customDataDto.setUri(wmsUrl); customDataDto.setPath(taskExecCallback); customDataDto.setData(JSON.toJSONString(hashMap)); boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto); if(notifyResult) { taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发 taskWrkService.updateById(taskWrk); } } catch (Exception e) { log.error("请求入库调用接口失败"); @@ -597,12 +600,17 @@ } //上报-出库任务开始时,WCS回调WMS SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm"); HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("TaskNo", taskWrk.getTaskNo()); hashMap.put("taskNo", taskWrk.getTaskNo()); hashMap.put("status", TaskStatusType.DISTRIBUTE.id); hashMap.put("ioType", 1); hashMap.put("barcode", taskWrk.getBarcode()); hashMap.put("reportTime", format.format(new Date())); NotifyCustomDataDto customDataDto = new NotifyCustomDataDto(); customDataDto.setUri(wmsUrl); customDataDto.setPath(taskStatusFeedbackPath); customDataDto.setPath(taskExecCallback); customDataDto.setData(JSON.toJSONString(hashMap)); boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto); if(notifyResult) { @@ -690,7 +698,7 @@ response = new HttpHandler.Builder() // .setHeaders(headParam) .setUri(wmsUrl) .setPath(taskStatusFeedbackPath) .setPath(taskExecCallback) .setJson(JSON.toJSONString(headParam)) .build() .doPost(); @@ -706,7 +714,7 @@ // throw new CoolException("wcs派发移库库任务上报wms失败"); }finally { apiLogService.save("wcs派发移库任务上报wms" , wmsUrl + taskStatusFeedbackPath , wmsUrl + taskExecCallback , null , "127.0.0.1" , JSON.toJSONString(headParam) src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.domain.enums.WorkNoType; import com.zy.asrs.entity.*; @@ -25,13 +26,10 @@ private LocMastService locMastService; @Override public HashMap<String, Object> taskCreate(TaskCreateParam param) { HashMap<String,Object> map=new HashMap<>(); public R taskCreate(TaskCreateParam param) { TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo()); if (taskWrk != null) { map.put("Code","0"); map.put("Msg",param.getTaskNo()+"任务已经生成!"); return map; return R.error(param.getTaskNo() + "任务已经生成!"); } Date now = new Date(); @@ -42,14 +40,6 @@ taskWrk.setWrkNo(workNo1); taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收 taskWrk.setCreateTime(now); try { if (param.getIoType() > 1) { if (Utils.locNoRowBoolean(locMast.getRow1())) { param.setTaskPriority(11); } } } catch (Exception e) { } taskWrk.setIoType(param.getIoType());//任务类型 taskWrk.setIoPri(param.getTaskPriority());//优先级 taskWrk.setBarcode(param.getBarcode());//条码 @@ -68,52 +58,49 @@ taskWrk.setTargetPoint(param.getTargetPoint()); } taskWrk.setTargetPoint(param.getTargetPoint()); locMast.setLocSts("R"); locMast.setModiTime(new Date()); locMastService.updateById(locMast); } else if (param.getIoType() == 3) { taskWrk.setWrkSts(11); if (!Cools.isEmpty(param.getStartPoint())) { taskWrk.setStartPoint(param.getStartPoint());//起点 taskWrk.setTargetPoint(param.getTargetPoint()); } } locMast.setLocSts("R"); locMast.setModiTime(new Date()); locMastService.updateById(locMast); } if (!Cools.isEmpty(param.getMemo())) { taskWrk.setMemo(param.getMemo());//备注 } if (!taskWrkService.insert(taskWrk)) { map.put("Code","0"); map.put("Msg",param.getTaskNo()+"创建任务失败!"); return map; return R.error(param.getTaskNo() + "创建任务失败!"); } map.put("Code","1"); map.put("Msg","ok"); return map; return R.ok(); } @Override public HashMap<String, Object> taskCreateIn(TaskCreateInParam param) { HashMap<String, Object> map = new HashMap<>(); public R taskCreateIn(TaskCreateInParam param) { TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo()); if (taskWrk != null) { map.put("Code","0"); map.put("Msg", param.getTaskNo() + "任务已经生成!"); return map; return R.error(param.getTaskNo() + "任务已经生成!"); } Date now = new Date(); taskWrk = new TaskWrk(); LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getTargetPoint())); if (locMast == null) { map.put("Code","0"); map.put("Msg", param.getTaskNo() + "库位不存在!"); return map; return R.error(param.getTaskNo() + "库位不存在!"); } if (!locMast.getLocSts().equals("O")) { map.put("Code","0"); map.put("Msg", param.getTaskNo() + "库位不处于空库位!"); return map; return R.error(param.getTaskNo() + "库位不处于空库位!"); } locMast.setLocSts("S"); @@ -137,12 +124,8 @@ } if (!taskWrkService.insert(taskWrk)) { map.put("Code", "0"); map.put("Msg", param.getTaskNo() + "创建任务失败!"); return map; return R.error(param.getTaskNo() + "创建任务失败!"); } map.put("Code","1"); map.put("Msg","ok"); return map; return R.ok(); } } src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
@@ -3,14 +3,9 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.mapper.TaskWrkMapper; import com.zy.asrs.entity.TaskWrk; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.StaDescService; import com.zy.asrs.service.TaskWrkService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.zy.common.service.CommonService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -20,17 +15,6 @@ @Slf4j @Service("taskWrkService") public class TaskWrkServiceImpl extends ServiceImpl<TaskWrkMapper, TaskWrk> implements TaskWrkService { @Autowired private CommonService commonService; @Autowired private StaDescService staDescService; @Value("${wms.url}") private String wmsUrl; @Value("${wms.taskStatusFeedbackPath}") private String taskStatusFeedbackPath; @Autowired private ApiLogService apiLogService; @Override public TaskWrk selectByTaskNo(String taskNo) { src/main/java/com/zy/asrs/task/TaskLogScheduler.java
@@ -18,6 +18,7 @@ import org.springframework.stereotype.Component; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; @@ -47,12 +48,16 @@ @Scheduled(cron = "0/3 * * * * ? ") public void execute() throws IOException { for (TaskWrk taskWrk : taskWrkService.selectToBeHistoryData()) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm"); HashMap<String, Object> headParam = new HashMap<>(); headParam.put("TaskNo", taskWrk.getTaskNo()); headParam.put("taskNo", taskWrk.getTaskNo()); headParam.put("barcode", taskWrk.getBarcode()); headParam.put("reportTime", format.format(new Date())); NotifyMsgType notifyMsgType = null; if (taskWrk.getStatus().equals(TaskStatusType.OVER.id) || taskWrk.getStatus().equals(TaskStatusType.MANUAL_OVER.id)) {//完成 headParam.put("Result", 1);//完成 headParam.put("status", TaskStatusType.OVER.id); headParam.put("ioType", 1); notifyMsgType = NotifyMsgType.TASK_COMPLETE; if (taskWrk.getIoType() == 1) {//入库任务完成库位为F @@ -114,7 +119,8 @@ } } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) { headParam.put("Result", 2);//取消 headParam.put("status", TaskStatusType.CANCEL.id); headParam.put("ioType", 2); notifyMsgType = NotifyMsgType.TASK_CANCEL; if (taskWrk.getIoType() == 1) {//入库任务 src/main/resources/application.yml
@@ -52,9 +52,7 @@ url: 192.168.10.12:8001 # 入库任务申请接口 inboundTaskApplyPath: /wes/api/drivers/zy/asrs/inboundTaskApply # 任务开始时,WCS回调WMSz taskStatusFeedbackPath: /wes/api/drivers/zy/asrs/callBack # 任务完成结束时,WCS回调WMS # WCS回调WMS TaskExecCallback: /wes/api/drivers/zy/asrs/callBack # 移库申请接口 movePath: /wes/api/get_InterFace_TestStorage