| | |
| | | @RequestMapping("/pick/again/auth") |
| | | @ManagerAuth(memo = "再次拣料") |
| | | public R pickAgain(@RequestBody PickParam pickParams) { |
| | | if (pickParams == null ) { |
| | | if (pickParams == null) { |
| | | return R.error("缺少参数"); |
| | | } |
| | | agvMobileService.pickAgain(pickParams, 1l); |
| | |
| | | return R.error("缺少参数"); |
| | | } |
| | | for (AgvMobileStartParam.Pda pda : params.getPad()) { |
| | | if (pda == null || Cools.isEmpty(pda.getContainerCode())) { |
| | | return R.error("缺少容器信息"); |
| | | } |
| | | pda.setContainerType(Short.valueOf(pda.getContainerCode().substring(0, 2))); |
| | | workService.emptyPlateIn(pda.getDevNo(), pda.getContainerCode(), pda.getContainerType(), getUserId(), false); |
| | | } |
| | |
| | | |
| | | AgvLocMast agvLocMastByContainerCode = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode", containerCode)); |
| | | AgvLocMast agvLocMastByLocNo = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locNo)); |
| | | if (agvLocMastByLocNo==null){ |
| | | if (agvLocMastByLocNo == null) { |
| | | return R.error("库位不存在"); |
| | | } |
| | | String barcode1 = agvLocMastByLocNo.getBarcode(); |
| | |
| | | /* |
| | | 空板入库 |
| | | */ |
| | | String emptyPlateIn(String station,String containerCode,Short containerType, Long userId, boolean emptyAutoIn, String factory ); |
| | | String emptyPlateIn(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn); |
| | | |
| | | void emptyPlateOut(String station, int containerType, Long userId); |
| | | |
| | |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.constant.AsrsConstants; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.*; |
| | | import com.zy.asrs.service.*; |
| | |
| | | public String handBack(AgvMobileStartPakin param, Long userId) { |
| | | Date now = new Date(); |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo())); |
| | | if (agvWrkMast == null){ |
| | | if (agvWrkMast == null) { |
| | | throw new CoolException("工作档中没有此站点任务"); |
| | | } |
| | | agvWrkMast.setIoType(113); |
| | |
| | | agvWrkMastLogService.save(agvWrkMast); |
| | | agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); |
| | | String sourceLocNo = agvWrkMast.getSourceLocNo(); |
| | | AgvLocMast newLocMast = agvCommonService.getLocNo(3, 1, false, false); |
| | | if (newLocMast==null){ |
| | | |
| | | // TODO 四期 |
| | | List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode())); |
| | | String factory = null; |
| | | if (agvWrkDetls != null && !Cools.isEmpty(agvWrkDetls)) { |
| | | String orderNo = agvWrkDetls.get(0).getOrderNo(); |
| | | if (!Cools.isEmpty(orderNo)) { |
| | | if (orderNo.contains(AsrsConstants.ERCHANG)) { |
| | | factory = AsrsConstants.ERCHANG; |
| | | } else if (orderNo.contains(AsrsConstants.SANCHANG)) { |
| | | factory = AsrsConstants.SANCHANG; |
| | | } |
| | | } |
| | | } |
| | | AgvLocMast newLocMast = agvCommonService.getLocByLocRule(3, 1, factory); |
| | | //AgvLocMast newLocMast = agvCommonService.getLocNo(3, 1, false, false); |
| | | if (newLocMast == null) { |
| | | throw new CoolException("无可用库位"); |
| | | } |
| | | agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo()); |
| | |
| | | agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30); |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo)); |
| | | |
| | | List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode())); |
| | | //List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode())); |
| | | agvWrkDetls.forEach(agvWrkDetl -> { |
| | | for (AgvWrkDetl wrkDetl : param.getWrkDetls()) { |
| | | if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) { |
| | |
| | | List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode())); |
| | | |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(), agvBasDevp.getFloor(), false, false,null); |
| | | AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(), agvBasDevp.getFloor(), false, false, null); |
| | | //生成工作档 |
| | | AgvWrkMast wrkMast = createWrkMast(1, 201L, agvBasDevp.getDevNo(), agvLocMast.getLocNo(), agvBasDevp.getBarcode(), now, userId, agvBasDevp.getLocType2(), agvLocMast.getPltType()); |
| | | //标记是否为输送线入库 |
| | |
| | | 入库 |
| | | */ |
| | | @Transactional |
| | | public String emptyPlateIn(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn,String factory) { |
| | | public String emptyPlateIn(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn) { |
| | | |
| | | Date now = new Date(); |
| | | |
| | |
| | | locType = 2; |
| | | } else if (containerType == 30) { |
| | | locType = 3; |
| | | } else if (containerType == 31) { |
| | | } else if (containerType == 31) { |
| | | locType = 6; |
| | | }else { |
| | | } else { |
| | | locType = agvBasDevp.getLocType1(); |
| | | } |
| | | |
| | |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "elevatorTasks")); |
| | | if (Cools.isEmpty(config)) { |
| | | if (isCurrLev.get()) { |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true,factory); |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true, factory); |
| | | } else { |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false,factory); |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false, factory); |
| | | } |
| | | } else { |
| | | List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().like("loc_no", "02F1").like("source_loc_no", "F1")); |
| | | if (Integer.parseInt(config.getValue()) <= agvWrkMasts.size()) { |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true,factory); |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true, factory); |
| | | } else { |
| | | if (isCurrLev.get()) { |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true,factory); |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true, factory); |
| | | } else { |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false,factory); |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false, factory); |
| | | } |
| | | //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false); |
| | | } |
| | |
| | | private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) { |
| | | Date now = new Date(); |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true,null); |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true); |
| | | if (Cools.isEmpty(locMast)) { |
| | | log.info("暂无库位"); |
| | | return FAIL; |
| | |
| | | * 检索库位号 |
| | | * @return locNo 检索到的库位号 |
| | | */ |
| | | public AgvLocMast getLocNo(int type, int floor, boolean isEmpty, boolean isCurrLev, String factory) { |
| | | public AgvLocMast getLocNo(int type, int floor, boolean isEmpty, boolean isCurrLev) { |
| | | // 目标库位 |
| | | AgvLocMast locMast = null; |
| | | // if(Cools.isEmpty(agvWaitPakinList)){ |
| | |
| | | // 开始查找库位 ==============================>> |
| | | // 四期项目:需要改查找库位逻辑 |
| | | // 箱壳入库 |
| | | if (type == 3 && factory != null) { |
| | | //优先入库吸塑1楼,在2楼 |
| | | locMast = locUtils.getLocNoRuleByFactory(type, isEmpty, factory); |
| | | } else if (type == 6) { |
| | | //半成品箱壳入库,入到吸塑2楼的370个库位里 |
| | | locMast = locUtils.getLocNoRuleByFloor(type, floor, isEmpty, 2); |
| | | } else { |
| | | //不动这个逻辑 |
| | | locMast = getLocNoRule(type, floor, isEmpty, isCurrLev); |
| | | } |
| | | // if (type == 3 && factory != null) { |
| | | // //优先入库吸塑1楼,在2楼 |
| | | // locMast = locUtils.getLocNoRuleByFactory(type, isEmpty, factory); |
| | | // } else if (type == 6) { |
| | | // //半成品箱壳入库,入到吸塑2楼的370个库位里 |
| | | // locMast = locUtils.getLocNoRuleByFloor(type, floor, isEmpty, 2); |
| | | // } else { |
| | | // //不动这个逻辑 |
| | | locMast = getLocNoRule(type, floor, isEmpty, isCurrLev); |
| | | // } |
| | | if (locMast != null) { |
| | | return locMast; |
| | | } |
| | |
| | | /* |
| | | 库位规则查找 |
| | | */ |
| | | private AgvLocMast getLocByLocRule(AgvWaitPakin agvWaitPakin, int floor) { |
| | | List<AgvLocRule> agvLocRules = null; |
| | | agvLocRules = agvLocRuleService.selectList(new EntityWrapper<AgvLocRule>() |
| | | .eq("matnr", agvWaitPakin.getMatnr()) |
| | | .eq("batch", agvWaitPakin.getModel()) |
| | | .eq("floor", floor)); |
| | | if (Cools.isEmpty(agvLocRules)) { |
| | | agvLocRules = agvLocRuleService.selectList(new EntityWrapper<AgvLocRule>() |
| | | .eq("matnr", agvWaitPakin.getMatnr()) |
| | | .eq("floor", floor)); |
| | | } |
| | | if (Cools.isEmpty(agvLocRules)) { |
| | | return null; |
| | | } |
| | | public AgvLocMast getLocByLocRule(int type, int floor, String factory) { |
| | | |
| | | for (AgvLocRule agvLocRule : agvLocRules) { |
| | | try { |
| | | EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); |
| | | wrapper.between("row1", agvLocRule.getRowBeg(), agvLocRule.getRowEnd()) |
| | | .between("bay1", agvLocRule.getBayBeg(), agvLocRule.getBayEnd()) |
| | | .between("lev1", agvLocRule.getLevBeg(), agvLocRule.getLevEnd()) |
| | | .eq("floor", floor) |
| | | .eq("loc_sts", "O"); |
| | | AgvLocMast agvLocMast = agvLocMastService.selectOne(wrapper); |
| | | if (!Cools.isEmpty(agvLocMast)) { |
| | | return agvLocMast; |
| | | wrapper.eq("loc_sts", "O").eq("loc_type1", type); |
| | | List<AgvLocMast> agvLocMasts = new ArrayList<>(); |
| | | //不是空板优先找2层 |
| | | if (Cools.isEmpty(factory)) { |
| | | wrapper.eq("floor", floor).orderBy("lev1", false); |
| | | } else { |
| | | //B是二厂,G是三厂 |
| | | switch (factory) { |
| | | case "B": |
| | | wrapper.eq("floor", floor).orderBy("lev1", true); |
| | | break; |
| | | case "G": |
| | | wrapper.eq("floor", floor).orderBy("lev1", false); |
| | | break; |
| | | default: |
| | | wrapper.eq("floor", floor).orderBy("lev1", true); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | //当目标库位是1楼 |
| | | if (floor == 1) { |
| | | wrapper.orderBy("loc_no", false); |
| | | } |
| | | agvLocMasts = agvLocMastService.selectList(wrapper); |
| | | for (AgvLocMast agvLocMast : agvLocMasts) { |
| | | AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo())); |
| | | if (agvLocMast1.getLocSts().equals("O")) { |
| | | return agvLocMast1; |
| | | } |
| | | } |
| | | throw new CoolException("搜索库位时,未找到可入库库位。"); |
| | | } catch (Exception e) { |
| | | throw new CoolException("搜索库位时,未找到可入库库位。"); |
| | | } |
| | | } |
| | | |
| | | /* |