自动化立体仓库 - WMS系统
pang.jiabao
2024-11-07 a489f1aeefb1cccea10c785a84d3d833b1eef648
呼叫agv自动绑定,pda解绑
4个文件已修改
1个文件已添加
107 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MobileService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/constant/AgvSiteConstant.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/constant/ApiInterfaceConstant.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -88,6 +88,19 @@
    }
    @PostMapping("/agv/unbind")
    @ManagerAuth
    public R pdaAgvUnbind(@RequestBody Map<String,Object> map){
        String site = (String) map.get("site"); // 暂存位
        if (Cools.isEmpty(site)) {
            return R.parse("暂存位不能为空");
        }
        return mobileService.unbind(site);
    }
    private void getAgvTaskParam(ForwardAGVTaskParam agvTaskCreateParam,String agv,String sta){
        List<ForwardAGVTaskParam.PositionCodePaths> agvTaskParamList = Arrays.asList(
                //起始位
src/main/java/com/zy/asrs/service/MobileService.java
@@ -20,6 +20,11 @@
    R inLocCallAgv(String sta, String inSta);
    /**
     * agv解绑站点
     */
    R unbind(String site);
    /**
     * 组托
     */
    void comb(CombParam param, Long userId);
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -83,10 +83,10 @@
        }
        // 先绑定
//        boolean flag = bindPodAndBerth(sta);
//        if (!flag) {
//            return R.parse(inSta + "绑定失败");
//        }
        boolean flag = bindPodAndBerth(sta);
        if (!flag) {
            return R.parse(inSta + "绑定失败");
        }
        ForwardAGVTaskParam forwardAGVTaskParam = new ForwardAGVTaskParam();
        forwardAGVTaskParam.setReqCode(UUID.randomUUID().toString().replace("-", ""));
@@ -138,6 +138,57 @@
        return success ? R.ok("呼叫agv成功") : R.parse(message);
    }
    @Override
    public R unbind(String site) {
        String staMap = AgvSiteConstant.SiteMap.get(site);
        if (staMap == null) {
            return R.parse("没有找到该站点的入库映射:" + site);
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("reqCode",UUID.randomUUID().toString().replace("-", "")); // 请求唯一值
        jsonObject.put("ctnrTyp","2"); // 容器类型2
        jsonObject.put("stgBinCode",staMap); // 仓位编号,根据客仓编号转换
        jsonObject.put("indBind","0"); // 1绑定,0解绑
        String body = jsonObject.toJSONString();
        String response = "";
        String message = "";
        boolean success = false;
        try {
            response = new HttpHandler.Builder()
                    .setUri(ApiInterfaceConstant.AGV_IP)
                    .setPath(ApiInterfaceConstant.AGV_BIND_PATH)
                    .setJson(body)
                    .build()
                    .doPost();
            JSONObject res = JSON.parseObject(response);
            message = jsonObject.getString("message");
            if (res.getInteger("code").equals(0)) {
                success = true;
            } else {
                log.error("调用agv解绑暂存位失败!!!url:{};request:{};response:{}", ApiInterfaceConstant.AGV_IP + ApiInterfaceConstant.AGV_BIND_PATH, body, response);
            }
        } catch (Exception e) {
            log.error("调用agv解绑暂存位异常", e);
        } finally {
            try {
                // 保存接口日志
                apiLogService.save(
                        "调用agv解绑暂存位",
                        ApiInterfaceConstant.AGV_IP + ApiInterfaceConstant.AGV_BIND_PATH,
                        null,
                        "127.0.0.1",
                        body,
                        response,
                        success
                );
            } catch (Exception e) {
                log.error("", e);
            }
        }
        return success ? R.ok("解绑成功") : R.parse(message);
    }
    private boolean bindPodAndBerth(String sta) {
        String staMap = AgvSiteConstant.SiteMap.get(sta);
        if (staMap == null) {
@@ -146,7 +197,7 @@
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("reqCode",UUID.randomUUID().toString().replace("-", "")); // 请求唯一值
        jsonObject.put("crnType","2"); // 容器类型2
        jsonObject.put("ctnrTyp","2"); // 容器类型2
        jsonObject.put("stgBinCode",staMap); // 仓位编号,根据客仓编号转换
        jsonObject.put("indBind","1"); // 1绑定,0解绑
src/main/java/com/zy/common/constant/AgvSiteConstant.java
New file
@@ -0,0 +1,25 @@
package com.zy.common.constant;
import java.util.HashMap;
import java.util.Map;
/**
 * @author pang.jiabao
 * @description Agv站点和仓位编号对应
 * @createDate 2024/11/7 10:49
 */
public class AgvSiteConstant {
   public static final Map<String,String> SiteMap = new HashMap<String,String>(){{
       put("a1","700001EE501013");put("a2","700002EE501013");put("a3","700003EE501013");put("a4","700004EE501013");
       put("a5","700005EE501013");put("a6","700006EE501013");put("a7","700007EE501013");put("a8","700008EE501013");
       put("b1","820001EE501013");put("b2","820002EE501013");put("b3","820003EE501013");put("b4","820004EE501013");
       put("b5","820005EE501013");put("b6","820006EE501013");
       put("c1","830001EE501013");put("c2","830002EE501013");put("c3","830003EE501013");put("c4","830004EE501013");
       put("c5","830005EE501013");put("c6","830006EE501013");
       put("1040","800001FF501013");put("1042","800002FF501013");
       put("2010","600001XX501013");put("2012","600002XX501013");
       put("3010","400001GG501013");put("3012","400002GG501013");
   }};
}
src/main/java/com/zy/common/constant/ApiInterfaceConstant.java
@@ -13,4 +13,7 @@
    // 入库呼叫AGV取货
    public static final String AGV_CALL_IN_PATH = "/rcms/services/rest/hikRpcService/genAgvSchedulingTask";
    // AGV绑定仓位
    public static final String AGV_BIND_PATH = "/rcms/services/rest/hikRpcService/bindCtnrAndBin";
}