| | |
| | | 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.*; |
| | |
| | | @Transactional |
| | | public String allocationIn(AgvMobileStartPakin param, Long userId) { |
| | | Date now = new Date(); |
| | | if (Cools.isEmpty(param.getBarcode())) { |
| | | throw new CoolException("请输入货架码"); |
| | | } |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); |
| | | if (Cools.isEmpty(agvWrkMast)) { |
| | | throw new CoolException("暂无当前货架码的任务"); |
| | |
| | | @Synchronized |
| | | public String empIn(AgvMobileStartPakin param, Long userId) { |
| | | Date now = new Date(); |
| | | if (Cools.isEmpty(param.getBarcode())) { |
| | | throw new CoolException("请输入货架码"); |
| | | } |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); |
| | | if (Cools.isEmpty(agvWrkMast)) { |
| | | throw new CoolException("工作档中没有此站点任务"); |
| | |
| | | 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); |
| | |
| | | agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); |
| | | String sourceLocNo = agvWrkMast.getSourceLocNo(); |
| | | AgvLocMast newLocMast = agvCommonService.getLocNo(3, 1, false, false); |
| | | if (newLocMast==null){ |
| | | List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode())); |
| | | 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())); |
| | | agvWrkDetls.forEach(agvWrkDetl -> { |
| | | for (AgvWrkDetl wrkDetl : param.getWrkDetls()) { |
| | | if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) { |
| | |
| | | return "ok"; |
| | | } |
| | | |
| | | /* |
| | | * 确认加工完成 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public String processedV2(AgvMobileStartPakin param, Long userId) { |
| | | Date now = new Date(); |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()).eq("loc_no", param.getDevNo())); |
| | | if (Cools.isEmpty(agvWrkMast)) { |
| | | throw new CoolException("暂无当前货架的工作档"); |
| | | } |
| | | if (agvWrkMast.getWrkSts() != 205) { |
| | | throw new CoolException("当前任务未完成,请确认"); |
| | | } |
| | | //生成AGV工作历史档 + 生成AGV工作明细历史档 |
| | | agvWrkMastLogService.save(agvWrkMast); |
| | | agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); |
| | | String sourceLocNo = agvWrkMast.getSourceLocNo(); |
| | | // TODO: 四期 |
| | | List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode())); |
| | | String factory = param.getFactory(); |
| | | AgvLocMast newLocMast = agvCommonService.getLocByLocRule(3, 1, factory); |
| | | if (newLocMast == null) { |
| | | throw new CoolException("无可用库位"); |
| | | } |
| | | agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo()); |
| | | agvWrkMast.setLocNo(newLocMast.getLocNo()); |
| | | agvWrkMast.setIoType(57); |
| | | agvWrkMast.setWrkSts(201L); |
| | | agvWrkMast.setModiUser(userId); |
| | | agvWrkMast.setModiTime(now); |
| | | agvWrkMast.setIoTime(now); |
| | | // 打标记,若库位不够,入库到别的楼层,那么需要跨层移库 |
| | | if (!Cools.isEmpty(factory)) { |
| | | if (newLocMast.getLev1() == 1 && !factory.equals(AsrsConstants.SANCHANG)) { |
| | | agvWrkMast.setCtnNo("1"); |
| | | } else if (newLocMast.getLev1() == 2 && !factory.equals(AsrsConstants.ERCHANG)) { |
| | | agvWrkMast.setCtnNo("1"); |
| | | } |
| | | } |
| | | if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) { |
| | | throw new CoolException("更新工作档失败"); |
| | | } |
| | | |
| | | // 更新源站点 + 目标库位状态 + 历史源库位 |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(), "R", param.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(newLocMast.getLocNo(), "S", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30); |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo)); |
| | | |
| | | agvWrkDetls.forEach(agvWrkDetl -> { |
| | | for (AgvWrkDetl wrkDetl : param.getWrkDetls()) { |
| | | if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) { |
| | | agvWrkDetl.setAnfme(wrkDetl.getAnfme()); |
| | | break; |
| | | } |
| | | } |
| | | agvWrkDetl.setProcessSts(2); |
| | | agvWrkDetl.setOrderNo(agvWrkDetl.getOrderNo().substring(2)); |
| | | agvWrkDetl.setModiUser(userId); |
| | | agvWrkDetl.setModiTime(now); |
| | | agvWrkDetl.setIoTime(now); |
| | | if (!agvWrkDetlService.update(agvWrkDetl, new EntityWrapper<AgvWrkDetl>() |
| | | .eq("matnr", agvWrkDetl.getMatnr()) |
| | | .eq("three_code", agvWrkDetl.getThreeCode()) |
| | | .eq("supp_code", param.getBarcode()))) { |
| | | throw new CoolException("更新工作明细失败"); |
| | | } |
| | | }); |
| | | return "ok"; |
| | | } |
| | | |
| | | /* |
| | | * 站点回退 |