From f78cdcd32b1b872efce68e6a45aba7181df1f9fb Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期三, 29 五月 2024 10:30:53 +0800 Subject: [PATCH] # 组托入库取消任务回退入库单作业数量,更新作业站点为空接驳位 --- src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 256 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java index 0bdac4c..1dd5f31 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java @@ -1,11 +1,266 @@ package com.zy.asrs.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.core.common.Cools; +import com.core.exception.CoolException; +import com.zy.asrs.entity.AgvBasDevp; +import com.zy.asrs.entity.AgvLocMast; import com.zy.asrs.entity.AgvWrkMast; +import com.zy.asrs.entity.param.AgvTaskCreateParam; +import com.zy.asrs.entity.param.AgvTaskParam; import com.zy.asrs.mapper.AgvWrkMastMapper; -import com.zy.asrs.service.AgvWrkMastService; +import com.zy.asrs.service.*; +import com.zy.common.service.AgvCommonService; +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 java.io.IOException; +import java.util.*; + @Service +@Slf4j public class AgvWrkMastServiceImp extends ServiceImpl<AgvWrkMastMapper, AgvWrkMast> implements AgvWrkMastService { + + @Value("${agv.url}") + private String url; + + @Value("${agv.taskCreatePath}") + private String taskCreatePath; + + @Value("${agv.taskCancelPath}") + private String taskCancelPath; + + @Value("${agv.containerMoveInPath}") + private String containerMoveInPath; + + @Value("${agv.containerMoveOutPath}") + private String containerMoveOutPath; + + @Value("${agv.containerArrivedPath}") + private String containerArrivedPath; + + @Autowired + AgvWrkMastMapper agvWrkMastMapper; + @Autowired + AgvWrkDetlService agvWrkDetlService; + @Autowired + AgvLocMastService agvLocMastService; + @Autowired + ApiLogService apiLogService; + @Autowired + AgvBasDevpService agvBasDevpService; + @Autowired + private AgvCommonService agvCommonService; + @Autowired + private AgvWrkMastService agvWrkMastService; + + public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) { + AgvWrkMast agvWrkMast = this.selectById(wrkNo); + //鍒ゆ柇瑕佷慨鏀圭殑宸ヤ綔妗g姸鎬佹槸鍚﹀悎鐞嗭紝濡傛灉涓嶅悎鐞嗗垯鎶涘嚭寮傚父 + checkWrkSts(agvWrkMast,wrkSts); + agvWrkMast.setWrkSts(wrkSts); + this.updateById(agvWrkMast); + } + + public void updateWrkStsByWrkNo(int wrkNo, long wrkSts,String manuType,long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = this.selectById(wrkNo); + //鍒ゆ柇瑕佷慨鏀圭殑宸ヤ綔妗g姸鎬佹槸鍚﹀悎鐞嗭紝濡傛灉涓嶅悎鐞嗗垯鎶涘嚭寮傚父 + checkWrkSts(agvWrkMast,wrkSts); + agvWrkMast.setWrkSts(wrkSts); + agvWrkMast.setManuType(manuType); + agvWrkMast.setModiTime(now); + agvWrkMast.setModiUser(userId); + this.updateById(agvWrkMast); + } + + // TODO 鍒ゆ柇瑙勫垯 + private boolean checkWrkSts(AgvWrkMast agvWrkMast,long wrkSts){ + + + + return true; + } + + public int startWrk(AgvWrkMast agvWrkMast) throws IOException { + + AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); + //agvTaskCreateParam.setTaskType(taskType); + + getRequestParam(agvTaskCreateParam,agvWrkMast); + + return doHttpRequest(agvTaskCreateParam,"鎼繍浠诲姟涓嬪彂",url, taskCreatePath,null,"127.0.0.1"); + + //return containerMoveParam; + } + + public int startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { + AgvBasDevp basDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo()); + //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 + AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(),basDevp.getFloor()); + agvWrkMast.setLocNo(locMast.getLocNo()); + agvWrkMast.setWrkSts(201L); + agvWrkMastService.updateById(agvWrkMast); + return 0; + + } + + //璐ф灦鍏ュ満 + public int containerMoveIn(List<AgvWrkMast> agvWrkMastList) throws IOException { + //璋冪敤璐ф灦鍏ュ満鏃舵墍闇�瑕佸弬鏁� + Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>(); + List<Map<String,String>> positionCodeMapList = new ArrayList<>(); + containerMoveParam.put("containerMoveIns",positionCodeMapList); + + getContainerMoveParam(agvWrkMastList,positionCodeMapList); + + if(Cools.isEmpty(positionCodeMapList)){ + return 0; + } + return doHttpRequest(containerMoveParam,"璐ф灦鍏ュ満浠诲姟涓嬪彂",url, containerMoveInPath,null,"127.0.0.1"); + + } + + //璐ф灦绂诲満 + public int containerMoveOut(List<AgvWrkMast> agvWrkMastList){ + Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>(); + List<Map<String,String>> positionCodeMapList = new ArrayList<>(); + containerMoveParam.put("containerMoveOuts",positionCodeMapList); + for(AgvWrkMast agvWrkMast : agvWrkMastList){ + Map<String,String> positionCodeMap = new HashMap<>(); + positionCodeMap.put("positionCode",agvWrkMast.getLocNo()); + positionCodeMapList.add(positionCodeMap); + } + return doHttpRequest(containerMoveParam,"璐ф灦绂诲満浠诲姟涓嬪彂",url, containerMoveOutPath,null,"127.0.0.1"); + } + + public boolean insertByIncrease(AgvWrkMast agvWrkMast) { + int index = this.baseMapper.insertByIncrease(agvWrkMast); + + return index > 0; + } + + @Override + public boolean deleteByWrkNo(int wrkNo) { + return this.delete(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo)); + } + + //璐ф灦鍒拌揪閫氱煡 + public int containerArrived(AgvWrkMast agvWrkMast) { + + Map<String,String> containerArrivedParam = new HashMap<>(); + containerArrivedParam.put("slotCode",agvWrkMast.getSourceLocNo()); + containerArrivedParam.put("containerCode",agvWrkMast.getBarcode()); + + return doHttpRequest(containerArrivedParam,"璐ф灦杈惧埌閫氱煡",url, containerArrivedPath,null,"127.0.0.1"); + } + + @Override + public List<AgvWrkMast> selectReadyAgvWrkMast() { + List<String> stationCodes = agvBasDevpService.selectAllStationCode(); + Wrapper<AgvWrkMast> wrapper = new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 21L).like(false, "loc_no", "@"); + wrapper.in("loc_no",stationCodes); + return this.selectList(wrapper); + //return this.baseMapper.selectReadyAgvWrkMast(); + } + + @Override + public AgvWrkMast selectByContainerCode(String containerCode) { + return this.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",containerCode)); + } + + @Override + public int callCancelTask(int wrkNo) { + + AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); + agvTaskCreateParam.setTaskCode(wrkNo + ""); + + return doHttpRequest(agvTaskCreateParam,"鍙栨秷浠诲姟涓嬪彂",url, taskCancelPath,null,"127.0.0.1"); + + } + + + private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){ + //寰�璐ф灦鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆 + for(AgvWrkMast agvWrkMast : agvWrkMastList){ + //鍒ゆ柇鏄惁涓鸿緭閫佺嚎鍏ュ簱锛屾槸鍒欎笉闇�瑕佽揣鏋惰繘鍦鸿姹� + if("Y".equals(agvWrkMast.getMk())){ + continue; + } + Map<String,String> positionCodeMap = new HashMap<>(); + positionCodeMap.put("positionCode",agvWrkMast.getSourceLocNo()); + positionCodeMapList.add(positionCodeMap); + } + } + + private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam,AgvWrkMast agvWrkMast){ + + List<AgvTaskParam> agvTaskParamList = Arrays.asList( + //璧峰浣� + new AgvTaskParam(agvWrkMast.getSourceLocNo()), + //鐩爣浣� + new AgvTaskParam(agvWrkMast.getLocNo())); + +// //璧峰浣� +// agvTaskParamList.add(new AgvTaskParam(agvWrkMast.getSourceLocNo())); +// //鐩爣浣� +// agvTaskParamList.add(new AgvTaskParam(agvWrkMast.getLocNo())); + + if(agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 ){ + agvWrkMast.setWrkNo(-agvWrkMast.getWrkNo()); + } + agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString()); + if (agvWrkMast.getIoType() == 108 || (agvWrkMast.getIoType() == 109 && agvWrkMast.getWrkSts() == 201) || agvWrkMast.getIoType() == 12) { + agvTaskCreateParam.setTaskTyp("F06"); + } else { + agvTaskCreateParam.setTaskTyp("F01"); + } + + agvTaskCreateParam.setPositionCodePath(agvTaskParamList); + + } + + private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){ + 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 + ); + } + + } + } -- Gitblit v1.9.1