| | |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.common.utils.NodeUtils; |
| | | import com.zy.erp.kingdee.utils.PostMesDataUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public boolean TaskArmWorkOrderSign(OrderArmEndParam param) { |
| | | BasArmMastSign basArmMastSignNew = basArmMastSignService.selectOne( |
| | | new EntityWrapper<BasArmMastSign>() |
| | | .eq("order_no", param.getOrderNo()) |
| | | .eq("create_time", param.getBindingTags()) |
| | | .eq("status", 0) |
| | | ); |
| | | if (Cools.isEmpty(basArmMastSignNew)) { |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public boolean TaskAgvReport(TaskAgvReportParam param) { |
| | | BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no", param.getTaskNo())); |
| | | if (Cools.isEmpty(basAgvMast)) { |
| | | return false; |
| | | } |
| | | basAgvMast.setStatus(2); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public boolean taskAgvCreate(TaskAgvCreateParam param) { |
| | | // 参数检查 |
| | | if (param == null) { |
| | | throw new CoolException("参数不能为空"); |
| | | } |
| | | BasAgvMast basAgvMast = new BasAgvMast(); |
| | | |
| | | Long ts = basAgvMast.getTimestamp(); |
| | | if (ts == null) { |
| | | throw new CoolException("timestamp 生成失败"); |
| | | } |
| | | |
| | | String barcode = String.valueOf(ts); |
| | | if (barcode.length() > 16) { |
| | | barcode = barcode.substring(0, 16); |
| | | } |
| | | basAgvMast.setBarcode(barcode); |
| | | |
| | | String locNo = null; |
| | | String staNo = null; |
| | | basAgvMast.setTaskNo(commonService.getWorkNo(0)); |
| | | basAgvMast.setSourceStaNo(param.getSourceStaNo()); |
| | | basAgvMast.setStaNo(param.getStaNo()); |
| | | basAgvMast.setSourceLocNo(param.getSourceLocNo()); |
| | | basAgvMast.setLocNo(param.getLocNo()); |
| | | basAgvMast.setPriority(1L); |
| | | basAgvMast.setStatus(0); |
| | | basAgvMast.setAppeTime(new Date()); |
| | | basAgvMast.setModiTime(new Date()); |
| | | basAgvMast.setIoType(param.getIoType()); |
| | | basAgvMast.setFloorNo(param.getFloorNo()); |
| | | switch (basAgvMast.getIoType()) { |
| | | // AGV库位==》输送线站点 0 |
| | | // AGV库位==》AGV库位 1 |
| | | // 输送线站点==》AGV库位 2 |
| | | // 输送线站点==》输送线站点 3 |
| | | case 0: |
| | | case 1: |
| | | locNo = param.getSourceLocNo(); |
| | | break; |
| | | case 2: |
| | | case 3: |
| | | staNo = param.getSourceStaNo().toString(); |
| | | break; |
| | | } |
| | | basAgvMastService.insert(basAgvMast); |
| | | |
| | | bindCtnrAndBinParam bindParam = new bindCtnrAndBinParam(); |
| | | bindParam.setBarcode(basAgvMast.getBarcode()); |
| | | bindParam.setIndBind("1"); |
| | | bindParam.setFloorNo(basAgvMast.getFloorNo()); |
| | | bindParam.setLocNo(locNo); |
| | | bindParam.setStaNo(staNo); |
| | | if (bindCtnrAndBin(bindParam)) { |
| | | return true; |
| | | } else { |
| | | throw new CoolException("未能绑定"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public List<PickWrkDetlListParam> getPickList(PdaPickListParam param) { |
| | | List<WrkDetl> wrkDetls = wrkDetlService.findByBarcode(param.getBarcode()); |
| | | List<PickWrkDetlListParam> result = new ArrayList<>(); |
| | |
| | | return true; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public boolean agvApplicationPassedTheGrating(ArmAgvGratingParam arm) { |
| | | ReturnT<String> result = new PostMesDataUtils().postMesDataArmGrating("光栅请求下发:", ArmConstant.getArmUrl(arm.getArmNo()), ArmConstant.ARM_ADAPTOR_GRATING_AGVENTER, arm); |
| | | if (result.getCode() == 200) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public boolean agvApplicationPassedTheGrating(AgvGoTheArnParam param) { |
| | | String URL = "http://10.10.10.200:8181/rcms/services/rest/hikRpcService"; // AGV接口地址 |
| | | String AGVPath = "continueTask"; // 接口路径 |
| | | AgvGoParam agvGoParam = new AgvGoParam(); |
| | | agvGoParam.setCode("0"); |
| | | agvGoParam.setMessage("继续执行"); |
| | | agvGoParam.setReqCode(param.getReqCode()); |
| | | agvGoParam.setTaskCode(param.getTaskCode()); |
| | | ReturnT<String> result = new PostMesDataUtils().postMesDataArmGrating("光栅下发后继续任务:", URL, AGVPath, agvGoParam); |
| | | if (result.getCode() == 200) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public boolean agvBindAndBin(String taskNo) { |
| | | String URL = "http://10.10.10.200:8181"; // AGV接口地址 |
| | | String AGVPath = "rcms/services/rest/hikRpcService/bindCtnrAndBin"; // 接口路径 |
| | | BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no", taskNo)); |
| | | if (Cools.isEmpty(basAgvMast)) { |
| | | return false; |
| | | } |
| | | if (basAgvMast.getFloorNo() == 1) { |
| | | BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class); |
| | | BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne( |
| | | new EntityWrapper<BasAgvLocNo>().eq("sta_no", basAgvMast.getStaNo()) |
| | | ); |
| | | BasAgvLocNo locNo = basAgvLocNoService.selectOne( |
| | | new EntityWrapper<BasAgvLocNo>().eq("loc_no", basAgvMast.getLocNo()) |
| | | ); |
| | | String binCode = basAgvLocNoEnd != null |
| | | ? basAgvLocNoEnd.getAgvLocNo() |
| | | : (locNo != null ? locNo.getAgvLocNo() : null); |
| | | if (Cools.isEmpty(basAgvMast)) { |
| | | return false; |
| | | } |
| | | String ctnrCode = basAgvMast.getBarcode().length() > 1 ? basAgvMast.getBarcode() : basAgvMast.getTimestamp().toString(); |
| | | AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(); |
| | | agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + System.currentTimeMillis()); |
| | | agvBindCtnrAndBinParam.setCtnrCode(ctnrCode); |
| | | agvBindCtnrAndBinParam.setCtnrTyp("1"); |
| | | agvBindCtnrAndBinParam.setStgBinCode(binCode); |
| | | agvBindCtnrAndBinParam.setIndBind("0"); |
| | | ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器解绑", URL, AGVPath, agvBindCtnrAndBinParam); |
| | | if (resultBind.getCode() == 200) { |
| | | basAgvMast.setStatus(4); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | return true; |
| | | } |
| | | return false; |
| | | } else { |
| | | if (basAgvMast != null |
| | | && basAgvMast.getIoType() != null |
| | | && (basAgvMast.getIoType() == 0) |
| | | && (Objects.equals(basAgvMast.getSourceStaNo(), 2033) || Objects.equals(basAgvMast.getStaNo(), 2034) |
| | | || Objects.equals(basAgvMast.getStaNo(), 4003) || Objects.equals(basAgvMast.getSourceStaNo(), 4006))) { |
| | | AgvBindCtnrAndBinTwoParam agvBindCtnrAndBinTwoParam = new AgvBindCtnrAndBinTwoParam(); |
| | | agvBindCtnrAndBinTwoParam.setReqCode(String.valueOf(snowflakeIdWorker.nextId())); |
| | | agvBindCtnrAndBinTwoParam.setPodcode(basAgvMast.getBarcode()); |
| | | agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getStaNo().toString()); |
| | | agvBindCtnrAndBinTwoParam.setIndBind("0"); |
| | | ; |
| | | ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV容器解绑", |
| | | AgvConstant.AGV_URL + "/" + AgvConstant.AGV_hikRpcService, AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam); |
| | | if (resultBind.getCode() != 1) { |
| | | basAgvMast.setStatus(4); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |