自动化立体仓库 - WMS系统
#
lsh
2024-07-08 d2577544b333d545cf5269a2ef6701b7f609654d
#
6个文件已修改
3个文件已添加
354 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMastExecute.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/AgvHaiKangTaskCreateParam.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AutoMoveHaiKangScheduler.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AutoMoveHaiKangHandler.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -204,4 +204,16 @@
        System.out.println(JSON.toJSONString(param1));
    }
    /**
     * 库存统计
     */
    @RequestMapping("/agv/haikang/complete/v1")
    public R agvHaiKang(@RequestHeader(required = false) String wrkNo,
                        HttpServletRequest request) {
//        auth(wrkNo, null, request);
        return R.ok().add(openService.agvHaiKang(wrkNo));
    }
}
src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -495,6 +495,15 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
    }
    public Long getWrkStsComplete(){
        if (Cools.isEmpty(this.wrkSts)){
            return this.wrkSts;
        }
        if (this.ioType>10){
            return this.wrkSts+2;
        }else {
            return this.wrkSts+2;
        }
    }
}
src/main/java/com/zy/asrs/entity/WrkMastExecute.java
@@ -240,5 +240,14 @@
        return null;
    }
    public Long getWrkStsCode(){
        switch (this.wrkSts.intValue()){
            case 1:
                return (long)2;
            default:
                return this.wrkSts+1;
        }
    }
}
src/main/java/com/zy/asrs/entity/param/AgvHaiKangTaskCreateParam.java
New file
@@ -0,0 +1,34 @@
package com.zy.asrs.entity.param;
import lombok.Data;
import java.io.Serializable;
/**
 * 对接ESS 任务下发参数
 */
@Data
public class AgvHaiKangTaskCreateParam implements Serializable {
    private static final long serialVersionUID = 1L;
    //任务号
    private String taskCode;
    //任务类型
    private String taskTyp;
    private Long sign;
    private Integer start;
    private Integer end;
//    //任务组
//    private String taskGroupCode;
//
//    //任务组优先级
//    private int groupPriority;
}
src/main/java/com/zy/asrs/service/OpenService.java
@@ -43,4 +43,7 @@
     * @param param
     */
    void syncMat(MatSyncParam param);
    boolean agvHaiKang(String wrkNo);
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -48,6 +48,8 @@
    private TagService tagService;
    @Autowired
    private TagMapper tagMapper;
    @Autowired
    private WrkMastService wrkMastService;
    @Override
    @Transactional
@@ -544,4 +546,14 @@
    }
    @Override
    @Transactional
    public boolean agvHaiKang(String wrkNo) {
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Long.parseLong(wrkNo)));
        wrkMast.setWrkSts(wrkMast.getWrkStsComplete());
        wrkMastService.updateById(wrkMast);
        return true;
    }
}
src/main/java/com/zy/asrs/task/AutoMoveHaiKangScheduler.java
New file
@@ -0,0 +1,122 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.WrkMastExecute;
import com.zy.asrs.service.WrkMastExecuteService;
import com.zy.asrs.task.handler.AutoMoveHaiKangHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
// 自动移库
@Slf4j
@Component
public class AutoMoveHaiKangScheduler {
    @Autowired
    private WrkMastExecuteService wrkMastExecuteService;
    @Autowired
    private AutoMoveHaiKangHandler autoMoveHaiKangHandler;
    /**
     * 执行agv_wrk_mast_execute任务
     */
//    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoMove(){
        List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",0L));
        for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){
            try{
                if (true){
                    autoMoveHaiKangHandler.start(wrkMastExecute);
                }
            }catch (Exception e){
                log.error("执行agv_wrk_mast_execute任务异常===》异常原因:"+e.getMessage());
            }
        }
    }
//
//    /**
//     * 下一步agv_wrk_mast_execute任务
//     */
////    @Scheduled(cron = "0/2 * * * * ? ")
//    private void autoMove2(){
//        List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",3L));
//        for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){
//            Date now = new Date();
//            try{
//                if (wrkMastExecute.getStatus()==2 && wrkMastExecute.getNowPosition()==1){
//                    //判断电梯忙不忙
//                    int count = wrkMastExecuteService.selectCount(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("status", 2));
//                    if(count<3){
//                        wrkMastExecute.setStatus(3);
//                        wrkMastExecute.setWrkSts(0L);
//                        wrkMastExecute.setModiTime(now);
//                        wrkMastExecute.setEndPosition(4);
//                        wrkMastExecuteService.updateById(wrkMastExecute);
//                        updateAgvBasDevp(agvBasDevp,"R",agvBasDevp.getLocType2(),agvBasDevp.getBarcode());
//                    }
//                }
//            }catch (Exception e){
//                log.error("执行agv_wrk_mast_execute任务异常===》异常原因:"+e.getMessage());
//            }
//        }
//    }
//
//    /**
//     * 下一步agv_wrk_mast_execute任务
//     */
////    @Scheduled(cron = "0/2 * * * * ? ")
//    private void autoMove3(){
//        List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectList(new EntityWrapper<WrkMastExecute>().eq("io_type", 121).eq("wrk_sts",2L));
//        for (WrkMastExecute wrkMastExecute:wrkMastExecuteList){
//            Date now = new Date();
//            try{
//                if (wrkMastExecute.getStatus()==2){
//                    AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", wrkMastExecute.getRoute()[wrkMastExecute.getEndPosition()]));
//                    if (Cools.isEmpty(agvBasDevp) || !agvBasDevp.getLocSts().equals("S")){
//                        log.error("站点状态locsts参数有误:locSts:"+agvBasDevp.getLocSts$());
//                    }else {
//                        wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
//                        wrkMastExecute.setModiTime(now);
//                        wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition());
//                        wrkMastExecuteService.updateById(wrkMastExecute);
//                        updateAgvBasDevp(agvBasDevp,"F",agvBasDevp.getLocType2(),agvBasDevp.getBarcode());
//                    }
//                }else if (wrkMastExecute.getStatus()==3 || wrkMastExecute.getStatus()==4){
//                    AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", wrkMastExecute.getRoute()[wrkMastExecute.getNowPosition()]));
//                    if (Cools.isEmpty(agvBasDevp) || !agvBasDevp.getLocSts().equals("R")){
//                        log.error("站点状态locsts参数有误:locSts:"+agvBasDevp.getLocSts$());
//                    }else {
//                        wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
//                        wrkMastExecute.setModiTime(now);
//                        wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition());
//                        wrkMastExecuteService.updateById(wrkMastExecute);
//                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"O","",(short)0);
//                    }
//                }else if (wrkMastExecute.getStatus()==1){
//                    wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
//                    wrkMastExecute.setModiTime(now);
//                    wrkMastExecute.setNowPosition(wrkMastExecute.getEndPosition());
//                    wrkMastExecuteService.updateById(wrkMastExecute);
//                }
//            }catch (Exception e){
//                log.error("执行agv_wrk_mast_execute任务异常===》异常原因:"+e.getMessage());
//            }
//        }
//    }
//
//
//
//    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode){
//        if(!Cools.isEmpty(agvBasDevp)){
//            agvBasDevp.setLocSts(locSts);
//            agvBasDevp.setLocType2(continerType);
//            agvBasDevp.setBarcode(containerCode);
//            agvBasDevpService.updateById(agvBasDevp);
//        }
//    }
}
src/main/java/com/zy/asrs/task/handler/AutoMoveHaiKangHandler.java
New file
@@ -0,0 +1,149 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.core.exception.CoolException;
import com.zy.asrs.entity.WrkMastExecute;
import com.zy.asrs.entity.param.AgvHaiKangTaskCreateParam;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.impl.WrkMastExecuteServiceImpl;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Slf4j
@Service
@Transactional
public class AutoMoveHaiKangHandler extends AbstractHandler<String> {
    @Value("${agv.url}")
    private String url;
    @Value("${agv.taskCreatePath}")
    private String taskCreatePath;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private WrkMastExecuteServiceImpl wrkMastExecuteService;
    public ReturnT<String> start(WrkMastExecute wrkMastExecute) {
        try{
            AgvHaiKangTaskCreateParam agvTaskCreateParam = new AgvHaiKangTaskCreateParam();
            getRequestParam(agvTaskCreateParam,wrkMastExecute);
            int doHttpRequest = doHttpRequest(agvTaskCreateParam, "搬运任务下发==>2-3==1", url, taskCreatePath, null, "127.0.0.1");
            if(doHttpRequest != 0){
                throw new CoolException("任务下发失败,code:"+doHttpRequest);
            }
            wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
            wrkMastExecute.setModiTime(new Date());
            if (!wrkMastExecuteService.updateById(wrkMastExecute)){
                throw new CoolException("任务下发成功,但是更新执行任务状态失败:"+doHttpRequest);
            }
        }catch (Exception e){
            log.error("搬运任务下发===》异常:"+e.getMessage());
        }
        return SUCCESS;
    }
//    public ReturnT<String> start1(WrkMastExecute wrkMastExecute) {
//        try{
//            AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
//            getRequestParam(agvTaskCreateParam,wrkMastExecute);
//            int doHttpRequest = doHttpRequest(agvTaskCreateParam, "搬运任务下发", url, taskCreatePath, null, "127.0.0.1");
//            if(doHttpRequest != 0){
//                throw new CoolException("任务下发失败,code:"+doHttpRequest);
//            }
//            wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
//            wrkMastExecute.setModiTime(new Date());
//            if (!wrkMastExecuteService.updateById(wrkMastExecute)){
//                throw new CoolException("任务下发成功,但是更新执行任务状态失败:"+doHttpRequest);
//            }
//        }catch (Exception e){
//            log.error("搬运任务下发===》异常:"+e.getMessage());
//        }
//        return SUCCESS;
//    }
//
    private void getRequestParam(AgvHaiKangTaskCreateParam agvHaiKangTaskCreateParam, WrkMastExecute wrkMastExecute){
//        List<AgvTaskParam> agvTaskParamList = Arrays.asList(
//                //起始位
//                new AgvTaskParam(wrkMastExecute.getRoute()[wrkMastExecute.getNowPosition()]),
//                //目标位
//                new AgvTaskParam(wrkMastExecute.getRoute()[wrkMastExecute.getEndPosition()]));
        Long wrkNo = wrkMastExecute.getWrkNo();
        if (wrkMastExecute.getNowPosition()==1){
            agvHaiKangTaskCreateParam.setTaskCode(wrkMastExecute.getWrkNo().toString());
        }else {
            wrkNo = -wrkNo;
            agvHaiKangTaskCreateParam.setTaskCode(wrkNo.toString());
        }
        if (!wrkMastExecute.getSouFloor().equals(wrkMastExecute.getEndFloor())) {
            agvHaiKangTaskCreateParam.setTaskTyp("F06");
        } else  {
            agvHaiKangTaskCreateParam.setTaskTyp("F01");
        }
//        agvHaiKangTaskCreateParam.setPositionCodePath(agvTaskParamList);
    }
    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
//        if (true){
//            apiLogService.save(
//                    namespace,
//                    url + path,
//                    appkey,
//                    ip,
//                    JSON.toJSONString(JSONObject.toJSONString(requestParam)),
//                    "",
//                    true
//            );
//            return 0;
//        }
        String response = "";
        boolean success = false;
        try {
            response = new HttpHandler.Builder()
                    .setUri(url)
                    .setPath(path)
                    .setJson(JSONObject.toJSONString(requestParam))
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            int code = Integer.parseInt(jsonObject.get("code").toString());
            if(code != 0){
                throw new CoolException("调用AGV响应错误");
            }
            success = true;
            return code;
        }catch (Exception e){
            log.error(e.getMessage());
            throw new CoolException("调用AGV响应错误");
        }finally {
            apiLogService.save(
                    namespace,
                    url + path,
                    appkey,
                    ip,
                    JSON.toJSONString(JSONObject.toJSONString(requestParam)),
                    response,
                    success
            );
        }
    }
}
src/main/resources/application.yml
@@ -10,7 +10,7 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://192.168.4.15:1433;databasename=source
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxgtasrs
    username: sa
    password: sa@123
  mvc: