From 4696a0be1e0235e4a9e5077c3f42e038da8c6809 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期四, 14 八月 2025 16:30:37 +0800 Subject: [PATCH] 1 --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java | 96 ++++++++++++++----- zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java | 1 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 15 +- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java | 114 +++++++++++++++------- zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/StaGroupConstant.java | 2 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReport.java | 6 + zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReportLog.java | 39 +++---- 7 files changed, 180 insertions(+), 93 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/StaGroupConstant.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/StaGroupConstant.java index b27960b..5116681 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/StaGroupConstant.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/StaGroupConstant.java @@ -11,6 +11,8 @@ add("10-1"); add("10-2"); add("10-3"); + add("1001"); + add("1007"); }}; public static final ArrayList<String> LEFT_STA_ROW_LIST = new ArrayList<String>(){{ diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java index 15f7cbf..7e10fa7 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java @@ -61,29 +61,55 @@ @Scheduled(fixedDelay = 1000) // 鍥哄畾棰戠巼鎵ц锛屽悓姝� // @Scheduled(cron = "0/1 * * * * ? ") private void execute() { - if (!configService.getVal("TaskAssignMode", Boolean.class)) { return; } - - String autoRunAreas = configService.getVal("autoRunAreas", String.class); - if (Cools.isEmpty(autoRunAreas)) { return; } - for (char c : autoRunAreas.toCharArray()) { - switch (c) { - case '1': - this.autoRun(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST, StaGroupConstant.FAR_RIGHT_STA_ROW_LIST, AgvGroupConstant.FIFTH_AGV_GROUP); - break; - case '2': - this.autoRun(LocGroupConstant.RIGHT_LOC_ROW_LIST, StaGroupConstant.RIGHT_STA_ROW_LIST, AgvGroupConstant.FOURTH_AGV_GROUP); - break; - case '3': - this.autoRun(LocGroupConstant.MIDDLE_LOC_ROW_LIST, StaGroupConstant.MIDDLE_STA_ROW_LIST, AgvGroupConstant.THIRD_AGV_GROUP); - break; - case '4': - this.autoRun(LocGroupConstant.LEFT_LOC_ROW_LIST, StaGroupConstant.LEFT_STA_ROW_LIST, AgvGroupConstant.SECOND_AGV_GROUP); - break; - case '5': - this.autoRun(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP); - break; - default: - break; + if (configService.getVal("TaskAssignMode", Boolean.class)) { + String autoRunAreas = configService.getVal("autoRunAreas", String.class); + if (Cools.isEmpty(autoRunAreas)) { return; } + for (char c : autoRunAreas.toCharArray()) { + switch (c) { + case '1': + this.autoRun(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST, StaGroupConstant.FAR_RIGHT_STA_ROW_LIST, AgvGroupConstant.FIFTH_AGV_GROUP); + break; + case '2': + this.autoRun(LocGroupConstant.RIGHT_LOC_ROW_LIST, StaGroupConstant.RIGHT_STA_ROW_LIST, AgvGroupConstant.FOURTH_AGV_GROUP); + break; + case '3': + this.autoRun(LocGroupConstant.MIDDLE_LOC_ROW_LIST, StaGroupConstant.MIDDLE_STA_ROW_LIST, AgvGroupConstant.THIRD_AGV_GROUP); + break; + case '4': + this.autoRun(LocGroupConstant.LEFT_LOC_ROW_LIST, StaGroupConstant.LEFT_STA_ROW_LIST, AgvGroupConstant.SECOND_AGV_GROUP); + break; + case '5': + this.autoRun(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP); + break; + default: + break; + } + } + }else { + if (configService.getVal("InAndOutMode", Boolean.class,false)) { + String autoRunAreas = configService.getVal("autoRunAreas", String.class); + if (Cools.isEmpty(autoRunAreas)) { return; } + for (char c : autoRunAreas.toCharArray()) { + switch (c) { + case '1': + this.autoOut(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST, StaGroupConstant.FAR_RIGHT_STA_ROW_LIST, AgvGroupConstant.FIFTH_AGV_GROUP); + break; + case '2': + this.autoOut(LocGroupConstant.RIGHT_LOC_ROW_LIST, StaGroupConstant.RIGHT_STA_ROW_LIST, AgvGroupConstant.FOURTH_AGV_GROUP); + break; + case '3': + this.autoOut(LocGroupConstant.MIDDLE_LOC_ROW_LIST, StaGroupConstant.MIDDLE_STA_ROW_LIST, AgvGroupConstant.THIRD_AGV_GROUP); + break; + case '4': + this.autoOut(LocGroupConstant.LEFT_LOC_ROW_LIST, StaGroupConstant.LEFT_STA_ROW_LIST, AgvGroupConstant.SECOND_AGV_GROUP); + break; + case '5': + this.autoOut(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP); + break; + default: + break; + } + } } } } @@ -104,6 +130,22 @@ this.runLocToLoc(locGroupList, agvGroupList, staTaskMemo); } + private void autoOut(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) { + int availableAgvCount = this.getAvailableAgvCount(agvGroupList); + if (0 == availableAgvCount) { return; } + + List<String> staPreNos = getStaPrefixes(staGroupList); + String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos); + + // 鍑哄簱 + this.runLocToSta(locGroupList, staGroupList, staTaskMemo); + // 鍏ュ簱 + if (staGroupList.contains("1007")){ + this.runStaToLoc(locGroupList, staGroupList, staTaskMemo); + } + + } + // 鍏ュ簱 private void runStaToLoc(List<Integer> locGroupList, List<String> staGroupList, String memo) { Integer startRow = Collections.min(locGroupList); @@ -111,14 +153,15 @@ AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString())); - if (null == agvModel) { - return; - } +// if (null == agvModel) { +// return; +// } // STOCK LambdaQueryWrapper<Sta> stockWrapper = new LambdaQueryWrapper<Sta>() .eq(Sta::getStaSts, StaStsType.STOCK.val()) .eq(Sta::getStatus, StatusType.ENABLE.val) + .eq(Sta::getInEnable,"Y") .in(Sta::getStaNo, staGroupList); List<Sta> stockList = staService.list(stockWrapper); if (Cools.isEmpty(stockList)) { return; } @@ -165,6 +208,7 @@ LambdaQueryWrapper<Sta> idleWrapper = new LambdaQueryWrapper<Sta>() .eq(Sta::getStaSts, StaStsType.IDLE.val()) .eq(Sta::getStatus, StatusType.ENABLE.val) + .eq(Sta::getOutEnable,"Y") .in(Sta::getStaNo, staGroupList); List<Sta> idleList = staService.list(idleWrapper); if (Cools.isEmpty(idleList)) { diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java index 87ff4d9..451bc83 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java @@ -132,7 +132,7 @@ if (!busService.save(bus)) { throw new BusinessException("Internal Server Error!"); } - Boolean locStaStatusCheck = configService.getVal("LOC_STA_STATUS_CHECK", Boolean.class, false); + Boolean locStaStatusCheck = configService.getVal("LOC_STA_STATUS_CHECK", Boolean.class, true); // 淇濆瓨浠诲姟 @@ -279,7 +279,7 @@ if (!taskService.updateById(task)) { throw new BusinessException("seqNum: " + task.getSeqNum() + " failed to update"); } - report(task, TaskReportStsType.START); + report(task,null, TaskReportStsType.START); } } catch (Exception e) { log.error("mainService.infuseAgvForTask", e); @@ -1468,7 +1468,7 @@ List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); for (Long taskId : taskIds) { Task task = taskService.getById(taskId); - report(task, TaskReportStsType.END); + report(task, agv_11_up.getQrCode(), TaskReportStsType.END); } } @@ -1506,7 +1506,7 @@ List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); for (Long taskId : taskIds) { Task task = taskService.getById(taskId); - report(task, TaskReportStsType.OTBIN); + report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN); } } @@ -1516,7 +1516,7 @@ List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); for (Long taskId : taskIds) { Task task = taskService.getById(taskId); - report(task, TaskReportStsType.OTBIN); + report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN); } } //寰�杈撻�佺嚎鏀捐揣瀹屾垚 @@ -1525,7 +1525,7 @@ List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); for (Long taskId : taskIds) { Task task = taskService.getById(taskId); - report(task, TaskReportStsType.END); + report(task, agv_11_up.getQrCode(), TaskReportStsType.END); } } @@ -1641,7 +1641,7 @@ /** * 涓婃姤缁欎笂娓哥郴缁燂紝灏辨槸鎻掑叆涓�鏉℃暟鎹埌涓婃姤琛� */ - private void report(Task task, TaskReportStsType taskReportStsType) { + private void report(Task task, String qrCode, TaskReportStsType taskReportStsType) { // TODO 鎻掑叆涓�鏉′笂鎶ヨ褰� if (task.getBusId() == null) { return; @@ -1655,6 +1655,7 @@ taskReport.setAgvId(task.getAgvId()); taskReport.setBusNo(task.getBusId$()); taskReport.setCreateTime(new Date()); + taskReport.setQrCode(qrCode); taskReport.setReportTimes(0); taskReport.setTaskSts(taskReportStsType.status); taskReport.setSeqNum(task.getSeqNum()); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java index e4055e2..78a8c8b 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java @@ -42,6 +42,7 @@ String wmsUrl = configService.getVal("WMS_URL", String.class); String wmsPath = configService.getVal("WMS_PATH", String.class); Integer times = configService.getVal("REPORT_TIMES", Integer.class, 3); + String codes = configService.getVal("CODES", String.class, "1457;1612"); List<TaskReport> list = taskReportService.list(); for (TaskReport taskReport : list) { if ((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) > times) { diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java index 6c11241..a55eee0 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java @@ -10,9 +10,12 @@ import com.zy.acs.manager.core.service.MainService; import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam; import com.zy.acs.manager.manager.entity.Loc; -import com.zy.acs.manager.manager.enums.LocStsType; +import com.zy.acs.manager.manager.entity.Sta; +import com.zy.acs.manager.manager.enums.StaStsType; import com.zy.acs.manager.manager.service.LocService; +import com.zy.acs.manager.manager.service.StaService; import com.zy.acs.manager.system.controller.BaseController; +import com.zy.acs.manager.system.service.ConfigService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -38,12 +41,46 @@ @Autowired private LocService locService; + @Autowired + private StaService staService; + + @Autowired + private ConfigService configService; + //@PreAuthorize("hasAuthority('open:bus:submit')") @PostMapping("/bus/submit") @OperationLog("generate task from open api") public R save(@RequestBody OpenBusSubmitParam param) { - mainService.generateBusAndTask(param, null); - return R.ok("generate tasks success"); + if (!configService.getVal("TaskAssignMode", Boolean.class)) { + if (configService.getVal("InAndOutMode", Boolean.class, false)) { + mainService.generateBusAndTask(param, null); + return R.ok("generate tasks success"); + } + } + return R.error("generate tasks error"); + } + + @PostMapping("/sta/update") + @OperationLog("sync sta") + public R updateLoc(@RequestBody Map<String, Object> map) { + if (!configService.getVal("TaskAssignMode", Boolean.class)) { + if (configService.getVal("InAndOutMode", Boolean.class, false)) { + String staNo = map.get("staNo").toString(); + Sta loc = staService.selectByStaNo(staNo); + if (staNo.equals("1001")) { + if (loc.getStaSts() == StaStsType.STOCK.val()) { + loc.setStaSts(Long.parseLong(map.get("sts").toString())); + return staService.updateById(loc) ? R.ok() : R.error("update loc fail"); + } + } else if (staNo.equals("1007")) { + if (loc.getStaSts() == StaStsType.IDLE.val()) { + loc.setStaSts(Long.parseLong(map.get("sts").toString())); + return staService.updateById(loc) ? R.ok() : R.error("update loc fail"); + } + } + } + } + return R.error("update loc fail"); } //@PreAuthorize("hasAuthority('open:bus:submit')") @@ -58,40 +95,45 @@ @PostMapping("/loc/one") @OperationLog("one loc") public R emptyLoc(@RequestBody Map<String, Object> map) { - String staNo = map.get("staNo").toString(); - Integer startRow = null; - Integer endRow = null; - if (staNo.equals("101-2")||staNo.equals("101-3")||staNo.equals("102-2")||staNo.equals("102-3")){ - startRow = Collections.min(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST); - endRow = Collections.max(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST); - } else if (staNo.equals("103-2")||staNo.equals("103-3")||staNo.equals("104-2")||staNo.equals("104-3")) { - startRow = Collections.min(LocGroupConstant.RIGHT_LOC_ROW_LIST); - endRow = Collections.max(LocGroupConstant.RIGHT_LOC_ROW_LIST); - }else if (staNo.equals("105-2")||staNo.equals("105-3")||staNo.equals("106-2")||staNo.equals("106-3")) { - startRow = Collections.min(LocGroupConstant.MIDDLE_LOC_ROW_LIST); - endRow = Collections.max(LocGroupConstant.MIDDLE_LOC_ROW_LIST); - }else if (staNo.equals("107-2")||staNo.equals("107-3")||staNo.equals("108-2")||staNo.equals("108-3")) { - startRow = Collections.min(LocGroupConstant.LEFT_LOC_ROW_LIST); - endRow = Collections.max(LocGroupConstant.LEFT_LOC_ROW_LIST); - }else if (staNo.equals("1007")){ - startRow = Collections.min(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST); - endRow = Collections.max(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST); - }else { - return R.error("staNo is not support"); + if (!configService.getVal("TaskAssignMode", Boolean.class)) { + if (configService.getVal("InAndOutMode", Boolean.class, false)) { + String staNo = map.get("staNo").toString(); + Integer startRow = null; + Integer endRow = null; + if (staNo.equals("101-2") || staNo.equals("101-3") || staNo.equals("102-2") || staNo.equals("102-3")) { + startRow = Collections.min(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST); + endRow = Collections.max(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST); + } else if (staNo.equals("103-2") || staNo.equals("103-3") || staNo.equals("104-2") || staNo.equals("104-3")) { + startRow = Collections.min(LocGroupConstant.RIGHT_LOC_ROW_LIST); + endRow = Collections.max(LocGroupConstant.RIGHT_LOC_ROW_LIST); + } else if (staNo.equals("105-2") || staNo.equals("105-3") || staNo.equals("106-2") || staNo.equals("106-3")) { + startRow = Collections.min(LocGroupConstant.MIDDLE_LOC_ROW_LIST); + endRow = Collections.max(LocGroupConstant.MIDDLE_LOC_ROW_LIST); + } else if (staNo.equals("107-2") || staNo.equals("107-3") || staNo.equals("108-2") || staNo.equals("108-3")) { + startRow = Collections.min(LocGroupConstant.LEFT_LOC_ROW_LIST); + endRow = Collections.max(LocGroupConstant.LEFT_LOC_ROW_LIST); + } else if (staNo.equals("1007") || staNo.equals("1001")) { + startRow = Collections.min(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST); + endRow = Collections.max(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST); + } else { + return R.error("staNo is not support"); + } + LambdaQueryWrapper<Loc> idleWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, Long.parseLong(map.get("sts").toString())); + if (null != startRow) { + idleWrapper.ge(Loc::getRow, startRow); + } + if (null != endRow) { + idleWrapper.le(Loc::getRow, endRow); + } + List<Loc> idleList = locService.list(idleWrapper); + if (Cools.isEmpty(idleList)) { + return R.error("娌$┖搴撲綅"); + } + Collections.shuffle(idleList); + return R.ok().add(idleList.get(0)); + } } - LambdaQueryWrapper<Loc> idleWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, LocStsType.IDLE.val()); - if (null != startRow) { - idleWrapper.ge(Loc::getRow, startRow); - } - if (null != endRow) { - idleWrapper.le(Loc::getRow, endRow); - } - List<Loc> idleList = locService.list(idleWrapper); - if (Cools.isEmpty(idleList)) { - return R.error("娌$┖搴撲綅"); - } - Collections.shuffle(idleList); - return R.ok().add(idleList.get(0)); + return R.error("鏈紑鍚妯″紡"); } } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReport.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReport.java index b51aba6..1f2fb3f 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReport.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReport.java @@ -56,6 +56,12 @@ @ApiModelProperty(value = "鎵�鍦ㄤ笂鎶ョ偣浣�") private String qrCode; + /** + * 搴撲綅鎴栫珯鐐� + */ + @ApiModelProperty(value = "搴撲綅鎴栫珯鐐�") + private String locNo; + /** * 涓婃姤娆℃暟 diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReportLog.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReportLog.java index 997b0b1..8159f4b 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReportLog.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReportLog.java @@ -40,7 +40,7 @@ * 浠诲姟杩涘害 */ @ApiModelProperty(value = "浠诲姟杩涘害") - private Long taskSts; + private Integer taskSts; /** @@ -50,33 +50,24 @@ private Long agvId; + /** + * 鎵�鍦ㄤ笂鎶ョ偣浣� + */ + @ApiModelProperty(value = "鎵�鍦ㄤ笂鎶ョ偣浣�") + private String qrCode; + + /** + * 搴撲綅鎴栫珯鐐� + */ + @ApiModelProperty(value = "搴撲綅鎴栫珯鐐�") + private String locNo; /** - * 璧峰绔� + * 涓婃姤娆℃暟 */ - @ApiModelProperty(value = "璧峰绔�") - private Long oriSta; - - /** - * 璧峰搴撲綅 - */ - @ApiModelProperty(value = "璧峰搴撲綅") - private Long oriLoc; - - - /** - * 鐩爣绔� - */ - @ApiModelProperty(value = "鐩爣绔�") - private Long destSta; - - /** - * 鐩爣搴撲綅 - */ - @ApiModelProperty(value = "鐩爣搴撲綅") - private Long destLoc; - + @ApiModelProperty(value = "涓婃姤娆℃暟") + private Integer reportTimes; /** * 鎵樼洏鐮� -- Gitblit v1.9.1