#
zjj
2024-10-31 a0f38b9be88954cfeb9b9c2fc1e8f37940ecb79f
#
3个文件已修改
1个文件已添加
144 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/domain/param/ForwardAGVTaskParam.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/DevpSlave.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/param/ForwardAGVTaskParam.java
New file
@@ -0,0 +1,38 @@
package com.zy.asrs.domain.param;
import lombok.Data;
import java.util.List;
@Data
public class ForwardAGVTaskParam {
    private String reqCode;
    private String reqTime;
    private String taskTyp;
    private String ctnrCode;
    private List<PositionCodePaths> positionCodePath;
    private String clientCode = "";
    private String tokenCode = "";
    private String ctnrTyp = "";
    private String wbCode = "";
    private String podCode = "";
    private String podDir = "";
    private String podTyp = "";
    private String materialLot = "";
    private String priority = "";
    private String taskCode;
    private String agvCode = "";
    private String data = "";
    @Data
    public static class PositionCodePaths{
        private String positionCode;
        private String type;
        public PositionCodePaths(String positionCode, String type){
            this.positionCode = positionCode;
            this.type = type;
        }
    }
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,6 +7,7 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.domain.param.ForwardAGVTaskParam;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
@@ -49,6 +50,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -2101,9 +2104,105 @@
//        News.infoNoLog(""+mark+" - 0"+" - outOfDevp执行完成");
    }
    public synchronized void forwardAGVInTasks() {
        for (DevpSlave devp : slaveProperties.getDevp()) {
            // 遍历入库口
            for (DevpSlave.Sta agvSta : devp.getAgvOutSta()) {
                // 获取入库站信息
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                StaProtocol staProtocol = devpThread.getStation().get(agvSta.getStaNo());
                if (staProtocol == null) {
                    continue;
                } else {
                    staProtocol = staProtocol.clone();
                }
                if (!(staProtocol.stateType == DevpStateType.AUTO && staProtocol.workType == DevpWorkType.BUSY && staProtocol.requestType == DevpRequestType.OUT)){
                    continue;
                }
                if (staProtocol.getWorkNo() != 0){
                    continue;
                }
                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getWorkNo()).eq("wrk_sts", 101).in("crn_no", 8, 9));
                if(!Cools.isEmpty(wrkMast1)){
                    continue;
                }
                //查询状态为2的任务
                //查询状态为2的任务
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                        .eq("wrk_no", staProtocol.getWorkNo())
                        .in("io_type",1,10,53,54,57)
                        .in("wrk_sts", 2,104)
                        .in("crn_no",8,9));
                if (Cools.isEmpty(wrkMast)) {
                    log.error(agvSta.getStaNo()+"站,转发agv任务未找到对应任务,任务号:"+staProtocol.getWorkNo());
                    continue;
                }
                ForwardAGVTaskParam forwardAGVTaskParam = new ForwardAGVTaskParam();
                getAgvTaskParam(forwardAGVTaskParam,wrkMast,staProtocol.getSiteId());
                String request = forwardAGVHttpRequest(forwardAGVTaskParam, "10.0.100.110:8182", "/rcms/services/rest/hikRpcService/genAgvSchedulingTask");
                if ("SUCCESS".equals(request)) {
                    wrkMast.setWrkSts(101L);
                    boolean update = wrkMastService.updateById(wrkMast);
                    if (update){
                        log.info("入库转发AGV任务完成,任务号:"+wrkMast.getWrkNo());
                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                    }
                }
            }
        }
    }
    private void getAgvTaskParam(ForwardAGVTaskParam agvTaskCreateParam,WrkMast param,Integer staNo){
        List<ForwardAGVTaskParam.PositionCodePaths> agvTaskParamList = Arrays.asList(
                //起始位
                new ForwardAGVTaskParam.PositionCodePaths(staNo.toString(),"05"),
                //目标位
                new ForwardAGVTaskParam.PositionCodePaths(param.getLocNo(),"05")
        );
        Date date = new Date();
        DecimalFormat df = new DecimalFormat("0000");
        String wrkNo = "Ctu"+df.format(param.getWrkNo())+date.getTime()/1000;
        agvTaskCreateParam.setReqCode(wrkNo);
        agvTaskCreateParam.setReqTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        agvTaskCreateParam.setTaskTyp("GT1");
        agvTaskCreateParam.setCtnrCode(param.getBarcode());
        agvTaskCreateParam.setPositionCodePath(agvTaskParamList);
        agvTaskCreateParam.setCtnrTyp("1");
        agvTaskCreateParam.setTaskCode(wrkNo);
    }
    private String forwardAGVHttpRequest(Object requestParam, String url, String path){
        String response = "";
        String success = "error";
        try {
            response = new HttpHandler.Builder()
                    .setUri(url)
//                    .setHttps(true)
                    .setPath(path)
                    .setJson(JSONObject.toJSONString(requestParam))
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            String message = jsonObject.get("code").toString();
            if(("0").equals(message) || ("请求编号已存在").contains(message)){
                success = "SUCCESS";
            }else {
                success = message;
            }
            log.info("转发agv任务:请求体:"+JSONObject.toJSONString(requestParam)+",返回值:"+jsonObject);
        }catch (Exception e){
        }
        return success;
    }
src/main/java/com/zy/core/model/DevpSlave.java
@@ -27,6 +27,8 @@
    private List<Sta> pickSta = new ArrayList<>();
    private List<Sta> agvOutSta = new ArrayList<>();
    @Data
    public static class Sta {
src/main/resources/application.yml
@@ -239,6 +239,11 @@
    outSta[0]:
      staNo: 124
      led: ${wcs-slave.led[0].id}
    agvOutSta[0]:
      staNo: 140
    agvOutSta[1]:
      staNo: 142
  devp[1]:
    id: 2