1
zhang
3 天以前 4696a0be1e0235e4a9e5077c3f42e038da8c6809
1
7个文件已修改
273 ■■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/StaGroupConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReport.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/TaskReportLog.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>(){{
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)) {
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());
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) {
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("未开启该模式");
    }
}
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;
    /**
     * 上报次数
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;
    /**
     * 托盘码