自动化立体仓库 - WCS系统
pang.jiabao
昨天 a3457fec2098d42166adba326c1d7f197cb59b16
米多泉州rgv调度程序完成
8个文件已修改
176 ■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkLogScheduler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/license.lic 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -190,7 +190,7 @@
    </dependencies>
    <build>
        <finalName>hmasrs</finalName>
        <finalName>mdqzhc</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,26 +1,24 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.BasCircularShuttle;
import com.zy.asrs.entity.BasDevpPosition;
import com.zy.asrs.entity.BasRgv;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasCircularShuttleService;
import com.zy.asrs.service.BasDevpPositionService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.escalationParam.RgvTaskReportingParam;
import com.zy.asrs.utils.PostMesDataUtils;
import com.zy.asrs.utils.SortTheExecutionOfTheCarUtil;
import com.zy.asrs.utils.TimeCalculatorUtils;
import com.zy.common.CodeRes;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
import com.zy.core.enums.RgvModeType;
import com.zy.core.enums.RgvStatusType;
import com.zy.core.enums.RgvTaskModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.RgvSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.RgvCommand;
@@ -34,7 +32,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 立体仓库WCS系统主流程业务
@@ -98,7 +98,7 @@
     */
    public synchronized void updateStePositionNearby() {
        try {
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L));
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 2L));
            if (wrkMasts.isEmpty()) {
                return;
            }
@@ -225,7 +225,7 @@
     */
    public synchronized void DevpTaskNoRun() {
        try {
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L).orderBy("modi_time", true));
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", 0).orderBy("modi_time", true));
            if (wrkMasts.isEmpty()) {
                return;
            }
@@ -259,7 +259,7 @@
            List<WrkMast> wrkMastlistA = new ArrayList<>();
            List<WrkMast> wrkMastlistB = new ArrayList<>();
            for (BasDevpPosition basDevpPosition : basDevpPositionsListUN) {
                List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", basDevpPosition.getDevNo()).eq("wrk_sts", 1L).orderBy("modi_time", true));
                List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", basDevpPosition.getDevNo()).eq("rgv_no", 0).orderBy("modi_time", true));
                for (WrkMast wrkMast : wrkMastList) {
                    if (!Cools.isEmpty(wrkMast)) {
                        if (SortTheExecutionOfTheCarUtil.devpNoSortbj(basDevpPositionsListUN, wrkMast.getSourceStaNo(), wrkMast.getStaNo())) {
@@ -300,12 +300,11 @@
                        continue;
                    }
                    List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()).eq("wrk_sts", 2L));
                    List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("rgv_no", rgvProtocol.getRgvNo()));
                    if (!wrkMasts.isEmpty()) {
                        continue;
                    }
                    if (rgvProtocol != null
                            && rgvProtocol.modeType == RgvModeType.AUTO
                    if (rgvProtocol.modeType == RgvModeType.AUTO
                            && (rgvProtocol.getStatusType() == RgvStatusType.IDLE || rgvProtocol.getStatusType() == RgvStatusType.ROAM)
                            && rgvProtocol.getTaskNo1() == 0
                            && rgvProtocol.getAlarm() == 0) {
@@ -331,8 +330,8 @@
                        rgvCommand.setAckFinish1((short) 0);  // 工位1任务完成确认位
                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());
                        rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 工位1任务模式:  取放货
                        rgvCommand.setSourceStaNo1(wrkMast.getSourceStaNo().shortValue());   //工位1起点
                        rgvCommand.setDestinationStaNo1(wrkMast.getStaNo().shortValue());   //工位1目标站点
                        rgvCommand.setSourceStaNo1(wrkMast.getRgvSstaNo().shortValue());   //工位1起点
                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //工位1目标站点
                        rgvCommand.setCommand((short) 1);   //工位1任务确认
                        if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(2, rgvCommand))) {
                            //
@@ -341,7 +340,6 @@
                        }
                        log.info("RGV命令下发成功,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand));
                        wrkMast.setWrkSts(2L);
                        wrkMast.setRgvNo(rgvProtocol.getRgvNo());
                        wrkMast.setAppeTime(new Date());
                        try {
@@ -381,10 +379,10 @@
                        && rgvProtocol.getModeType() == RgvModeType.AUTO
                        && rgvProtocol.getTaskNo1() != 0
                ) {
//                    log.info("{}号小车等待wcs确认,状态{},参数{}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
                    log.info("{}号小车等待wcs确认,状态{},参数{}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", rgvProtocol.getTaskNo1().longValue()));
                    if (Cools.isEmpty(wrkMast) || !wrkMast.getWrkSts().equals(2L)) {
                        log.error("未查到小车执行任务或者执行任务状态不符合!" + wrkMast);
                    if (Cools.isEmpty(wrkMast) && (wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && (wrkMast.getRgvNo() == 0 || wrkMast.getRgvNo() > 10)) {
                        log.error("未查到小车执行任务或者执行任务状态不符合!" + rgvProtocol.getTaskNo1());
                        continue;
                    }
                    boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
@@ -392,46 +390,9 @@
                        log.error("小车复位失败,小车号{}!", rgvProtocol.getRgvNo());
                        break;
                    }
                    wrkMast.setWrkSts(3L);
                    wrkMast.setRgvNo(10+rgvProtocol.getRgvNo());
                    Date now = new Date();
                    wrkMast.setAppeTime(now);
                    try{
                        try{
                            if (reportSwitch){
                                RgvTaskReportingParam rgvTaskReportingParam = new RgvTaskReportingParam(wrkMast);
                                ReturnT<String> result = new PostMesDataUtils().postMesDataWcs(wmsUrl, wmsOutPath, rgvTaskReportingParam);
                                if (result.getCode()==200){
                                    wrkMast.setWrkSts(4L);
                                    wrkMast.setAppeTime(now);
                                    wrkMastService.updateById(wrkMast);
                                    continue;
                                }else {
                                    log.error("工作号"+wrkMast.getWrkNo()+"任务完成信息上传处理失败");
                                }
                            } else {
                                //测试用
                                wrkMast.setWrkSts(4L);
                                wrkMast.setAppeTime(now);
                                wrkMastService.updateById(wrkMast);
                                if (reportSwitchAuto) {
                                    WrkMast wrkMast1 = new WrkMast();
                                    int workNo = commonService.getWorkNo(0);
                                    wrkMast1.setWrkNo((long) workNo);
                                    wrkMast1.setSourceStaNo(wrkMast.getSourceNoCs(autoZ));
                                    wrkMast1.setStaNo(wrkMast.getStaNoCs(autoZ));
                                    wrkMast1.setWrkSts(1L);
                                    wrkMast1.setIoType(1);
                                    wrkMast1.setModiTime(now);
                                    wrkMast1.setAppeTime(now);
                                    wrkMast1.setMemo("测试数据");
                                    wrkMastService.insert(wrkMast1);
                                }
                                continue;
                            }
                        } catch (Exception e){
                            log.error("工作号"+wrkMast.getWrkNo()+"任务完成信息上传处理失败,异常信息:"+e);
                        }
                    } catch (Exception e){}
                    wrkMast.setModiTime(now);
                    wrkMastService.updateById(wrkMast);
                }
            }
src/main/java/com/zy/asrs/task/RgvTaskReportingScheduler.java
@@ -7,7 +7,6 @@
import com.zy.asrs.task.handler.RgvTaskReportingHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -25,7 +24,7 @@
    @Autowired
    private RgvTaskReportingHandler rgvTaskReportingHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){//任务完成信息上传
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 3L));
        for (WrkMast wrkMast : wrkMasts){
src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -6,7 +6,6 @@
import com.zy.asrs.task.handler.WorkLogHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -23,7 +22,7 @@
    @Autowired
    private WrkMastService wrkMastService;
    @Scheduled(cron = "0/3 * * * * ? ")
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
        List<WrkMast> wrkMasts = wrkMastService.selectToBeHistoryData();
        if (wrkMasts.isEmpty()) {
src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
  port: 9090
  port: 9091
  servlet:
    context-path: /@pom.build.finalName@
@@ -8,8 +8,8 @@
    name: @pom.build.finalName@
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://127.0.0.1:50751;databasename=gdhmasrs
#    url: jdbc:sqlserver://127.0.0.1:50948;databasename=gdhmasrs
#    url: jdbc:sqlserver://192.168.4.191:50948;databasename=gdhmasrs
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=mdqzasrs
    username: sa
    password: sa@123
  mvc:
@@ -33,14 +33,14 @@
  enable: false
wms:
  url: 172.17.196.200:8084
  url: 127.0.0.1:8080/mdqzwms
  reportOutPath: open/rcs/task/cs/up/UploadTask
  reportSwitch: true
  reportSwitch: false
  reportSwitchAuto: false
#License相关配置
license:
  subject: gdhmasrs
  subject: mdqzasrs
  publicAlias: publicCert
  storePass: public_zhongyang_123456789
  licensePath: license.lic
@@ -54,7 +54,7 @@
  # 加速度  m/s^2
  acceleration: -2
  # 小车数
  rgvCount: 10
  rgvCount: 5
  # 延迟时间
  rgvDate: 1
@@ -68,7 +68,7 @@
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  # RGV穿梭车2
  rgv[1]:
    id: 2
    ip: 172.17.196.6
@@ -76,7 +76,7 @@
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  # RGV穿梭车3
  rgv[2]:
    id: 3
    ip: 172.17.196.9
@@ -84,7 +84,7 @@
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  # RGV穿梭车4
  rgv[3]:
    id: 4
    ip: 172.17.196.12
@@ -92,50 +92,10 @@
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  # RGV穿梭车5
  rgv[4]:
    id: 5
    ip: 172.17.196.15
    port: 502
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  rgv[5]:
    id: 6
    ip: 172.17.196.18
    port: 502
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  rgv[6]:
    id: 7
    ip: 172.17.196.21
    port: 502
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  rgv[7]:
    id: 8
    ip: 172.17.196.25
    port: 502
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  rgv[8]:
    id: 9
    ip: 172.17.196.28
    port: 502
    rack: 0
    slot: 0
    demo: false
  # RGV穿梭车1
  rgv[9]:
    id: 10
    ip: 172.17.196.31
    port: 502
    rack: 0
    slot: 0
src/main/resources/license.lic
Binary files differ
src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
var baseUrl = "/hmasrs";
var baseUrl = "/mdqzhc";
// 赋值
function setVal(el, val) {
src/main/webapp/views/index.html
@@ -204,18 +204,13 @@
<!--                        L 250,100-->
<!--                        C 250,100 90,90 100,250 z"-->
<!--                      style="fill:none; stroke:blue; stroke-width:4;" />-->
                <path d="M 1200,750
                        L 1200,100
                        C 1200,100 1200,50 1150,50
                        C 1150,50 1100,50 1100,100
                        L 1100,700
                        C 1100,700 1100,750 1050,750
                        L 60,750
                        C 60,750 10,750 10,800
                        C 10,800 10,850 60,850
                        L 1100,850
                        C 1100,850 1200,850 1200,750
"
                <path d="M 0 0
                L 80 0
                L 80 600
                L 800 600
                L 800 650
                L 0 650
                Z"
                      style="fill:none; stroke:blue; stroke-width:4;" />
            </svg>
<!--            <div class="bus-station">-->