自动化立体仓库 - WCS系统
#
zjj
2024-01-27 e22c2893d3df0494b5603f67b61bfc54e83129ea
#
8个文件已修改
184 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/RouteUtils.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/RgvProtocol.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasRgvMapMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.map.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/console.html 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -45,10 +45,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -2041,10 +2038,16 @@
    public synchronized void autoEmptyOut() {
        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        List<Integer> list = new ArrayList<>();
        list.add(102);list.add(111);
        list.add(101);list.add(112);
        Map<Integer,Integer> map = new HashMap<>();
        map.put(101,102);map.put(112,111);
        for (Integer site:list){
            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site)));
            if (!Cools.isEmpty(wrkMast)){
                continue;
            }
            //如果站点可出禁用,则不生成空盘出库任务
            StaProtocol staProtocol = devpThread.getStation().get(site);
            if (staProtocol == null) {
@@ -2062,7 +2065,7 @@
                    return;
                }
                Short loctype1 = 1;
                if (site == 102){
                if (site == 101){
                    loctype1 = 2;
                }
                LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
@@ -2076,8 +2079,8 @@
                            .doPost();
                    JSONObject jsonObject = JSON.parseObject(response);
                    if (jsonObject.getInteger("code").equals(200)) {
                        JSONObject data = (JSONObject) jsonObject.get("data");
                        News.info((String) data.get("msg"));
                        String data = jsonObject.get("data").toString();
                        News.info((String) jsonObject.get("msg")+","+data);
                    } else {
                        News.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
                    }
@@ -2091,7 +2094,7 @@
    }
    public synchronized void autoEmptyIn() {
        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        List<Integer> list = new ArrayList<>();
        list.add(153);list.add(157);
        for (Integer site:list){
@@ -2174,15 +2177,18 @@
     * */
    public synchronized void refreshRgvMap() {
        try{
            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
            for (BasRgvMap rgvSlave:basRgvMaps) {
                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                if (rgvProtocol == null) {
                    continue;
                }else {
                    rgvProtocol = rgvProtocol.clone();
                }
                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
                if (basRgv == null) {
                    log.error("{}号RGV尚未在数据库进行维护!2", rgvSlave.getId());
                    log.error("{}号RGV尚未在数据库进行维护!2", rgvSlave.getRgvNo());
                    continue;
                }
@@ -2217,6 +2223,8 @@
                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                if (rgvProtocol == null) {
                    continue;
                }else {
                    rgvProtocol = rgvProtocol.clone();
                }
                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
                if (basRgv == null) {
@@ -2306,6 +2314,8 @@
                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                if (rgvProtocol == null) {
                    continue;
                }else {
                    rgvProtocol = rgvProtocol.clone();
                }
                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
                if (basRgv == null) {
@@ -2505,6 +2515,8 @@
                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                if (rgvProtocol == null) {
                    continue;
                }else {
                    rgvProtocol = rgvProtocol.clone();
                }
                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
                if (basRgv == null) {
src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -239,6 +239,9 @@
                    return (short)119;
                }
                return (short)149;
            case 102:
            case 111:
                return 149;
            default:
                return endSta.shortValue();
        }
src/main/java/com/zy/core/MainProcess.java
@@ -77,7 +77,7 @@
                    mainService.outOfDevp(11);
                    //空托盘自动出库
                    mainService.autoEmptyOut();
//                    mainService.autoEmptyOut();
//                    //空托盘自动入库
//                    mainService.autoEmptyIn();
src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -12,7 +12,7 @@
 * Created by vincent on 2020/8/7
 */
@Data
public class RgvProtocol {
public class RgvProtocol implements Cloneable{
    private Integer RgvNo;
@@ -218,4 +218,14 @@
        return map.get(RgvPos);
    }
    @Override
    public RgvProtocol clone() {
        try {
            return (RgvProtocol) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }
}
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -10,7 +10,9 @@
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.BasRgvMap;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.BasRgvMapService;
import com.zy.common.utils.News;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
@@ -63,7 +65,8 @@
        add(152);add(153);add(154);add(155);
        add(156);add(157);add(158);add(159);
        add(160);add(161);
        add(200);add(201);add(202);
        add(1);
//        add(200);add(201);add(202);
    }};
    public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{
@@ -227,51 +230,41 @@
                }
            }
        }
//        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*4));
////        OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB100.2", (short) (staNoSize*2));
//        if (result.IsSuccess) {
//            for (int i = 0; i < staNoSize; i++) {
//                Integer siteId = staNos.get(i); // 站点编号
//                StaProtocol staProtocol = station.get(siteId);
//                if (null == staProtocol) {
//                    staProtocol = new StaProtocol();
//                    staProtocol.setSiteId(siteId);
//                    station.put(siteId, staProtocol);
//                }
//                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));     // 工作号
//
//                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4 + 2));   // 目标站
//            }
//        }
//
//        Thread.sleep(200);
//        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB101.0", (short) (staNoSize * 4));
//        if (result1.IsSuccess) {
//            for (int i = 0; i < staNoSize; i++) {
//                Integer siteId = staNos.get(i); // 站点编号
//                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*4, 1);
//                StaProtocol staProtocol = station.get(siteId);
//                staProtocol.setAutoing(status[0]);  // 自动
//                staProtocol.setLoading(status[1]);  // 有物
//                staProtocol.setInEnable(status[2]); // 可入
//                staProtocol.setOutEnable(status[3]);// 可出
//                staProtocol.setEmptyMk(status[4]);  // 空板信号
//                staProtocol.setFullPlt(status[5]);  // 满托盘
//                staProtocol.setHigh(status[6]);     // 高库位
//                staProtocol.setLow(status[7]);      // 低库位
//
//                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
//                    staProtocol.setPakMk(true);
//                }
//
//                if (staProtocol.getStamp()>=2 && !staProtocol.isLoading()){
//                    staProtocol.setStamp(0);
//                }else if (staProtocol.getStamp()<2 && staProtocol.isLoading()){
//                    //lfd入库印记  当stamp>=2时才入库
//                    staProtocol.setStamp(staProtocol.getStamp()+1);
//                }
//            }
//        }
        BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
        //RGV小车
        Thread.sleep(200);
        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB50.200",(short)10);
        if (result3.IsSuccess) {
            BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));
            if (!Cools.isEmpty(basRgvMap) && basRgvMap.getStartRoute() == 100){
                Integer siteId = 1;
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setAutoing(true);
                staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8)));
            }
        }
        //RGV小车
        Thread.sleep(200);
        OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB50.212",(short)10);
        if (result4.IsSuccess) {
            BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result4.Content, 0));
            if (!Cools.isEmpty(basRgvMap) && (basRgvMap.getStartRoute() == 161 || basRgvMap.getStartRoute() == 157)){
                Integer siteId = 2;
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setAutoing(true);
                staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result4.Content, 8)));
            }
        }
        //条码扫描器
        ArrayList<Integer> barcodeList = BarcodeList;
src/main/resources/mapper/BasRgvMapMapper.xml
@@ -13,7 +13,7 @@
        <result column="lock_end_route" property="lockEndRoute" />
    </resultMap>
    <select id="selectByRgvNo" resultType="com.zy.asrs.entity.BasRgvMap">
    <select id="selectByRgvNo" resultMap="BaseResultMap">
        select * from asr_bas_rgv_map
        where rgv_no = #{rgvNo}
    </select>
src/main/webapp/static/js/console.map.js
@@ -627,16 +627,16 @@
                "height": 742
            }, {
                "type": "stn",
                "id": "site-200",
                "text": "200",
                "id": "site-2",
                "text": "2",
                "top": 398,
                "left": 220,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-201",
                "text": "201",
                "id": "site-1",
                "text": "1",
                "top": 698,
                "left": 220,
                "width": 60,
src/main/webapp/views/console.html
@@ -568,7 +568,7 @@
                            siteEl.html(sites[i].siteId);
                        }
                        if (sites[i].siteId === '16' || sites[i].siteId === '016') {
                        if (sites[i].siteId === '1' || sites[i].siteId === '2') {
                            carAnimate(Number(sites[i].siteId), Number(sites[i].nearbySta));
                        }
@@ -715,37 +715,43 @@
    function carAnimate(id, target) {
        // debugger
        var targetTop = 0;
        if (id === 16 || id === '16' || id === '016') {
        if (id === 1 || id === '1' || id === '2' || id === 2) {
            switch (target) {
                case 1:
                    targetTop += 827;
                    targetTop += 792;
                    break;
                case 2:
                    targetTop += 765;
                    targetTop += 771;
                    break;
                case 3:
                    targetTop += 651;
                    targetTop += 727;
                    break;
                case 4:
                    targetTop += 589;
                    targetTop += 706;
                    break;
                case 5:
                    targetTop += 505;
                    targetTop += 662;
                    break;
                case 6:
                    targetTop += 443;
                    targetTop += 620;
                    break;
                case 7:
                    targetTop += 362;
                    targetTop += 578;
                    break;
                case 8:
                    targetTop += 297;
                    targetTop += 530;
                    break;
                case 9:
                    targetTop += 243;
                    targetTop += 190;
                    break;
                case 10:
                    targetTop += 129;
                    targetTop += 147;
                    break;
                case 11:
                    targetTop += 107;
                    break;
                case 12:
                    targetTop += 63;
                    break;
                default:
                    return;
@@ -754,7 +760,7 @@
            return;
        }
        $("#site-0" + id).animate({top: targetTop + 'px'}, 1000);
        $("#site-" + id).animate({top: targetTop + 'px'}, 1000);
    }