|  |  |  | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.core.common.SnowflakeIdWorker; | 
|---|
|  |  |  | import com.core.exception.CoolException; | 
|---|
|  |  |  | import com.zy.asrs.constant.AsrsConstants; | 
|---|
|  |  |  | import com.zy.asrs.entity.*; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.MesBuyPakinReportParam; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.MesOrderReportParam; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import com.zy.common.service.AgvCommonService; | 
|---|
|  |  |  | import lombok.Synchronized; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ReportDataService reportDataService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AgvCommonService agvCommonService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | switch (agvWrkMast.getIoType()) { | 
|---|
|  |  |  | case 1: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue(), agvWrkMast.getCtnNo()); | 
|---|
|  |  |  | //更新目标库位明细 | 
|---|
|  |  |  | log.info("更新目标库位明细 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo); | 
|---|
|  |  |  | agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(), wrkNo); | 
|---|
|  |  |  | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 10: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); | 
|---|
|  |  |  | AgvBasDevp byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (byDevNo != null) { | 
|---|
|  |  |  | if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 11: | 
|---|
|  |  |  | case 12: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | AgvLocDetl agvLocDetl1 = agvLocDetlService.selectByLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (agvLocDetl1 == null) { | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //更新库存明细 | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo(),null); | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null,null); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null, ""); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 53: | 
|---|
|  |  |  | //修改工作党明细 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (byDevNo != null) { | 
|---|
|  |  |  | if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 57: | 
|---|
|  |  |  | // 更新库存明细 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // 更新站点 + 库位状态     源库位是站点 | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue(),agvWrkMast.getPacked()); | 
|---|
|  |  |  | byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (byDevNo != null) { | 
|---|
|  |  |  | if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue(), agvWrkMast.getCtnNo()); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 58: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | //agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 108: | 
|---|
|  |  |  | case 114: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | //更新库存明细 | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | //                    //更新库存明细 | 
|---|
|  |  |  | //                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); | 
|---|
|  |  |  | //                    //修改源库位状态为O | 
|---|
|  |  |  | //                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 109: | 
|---|
|  |  |  | // 库位 -- 接驳位 / 库位 | 
|---|
|  |  |  | 
|---|
|  |  |  | // 库位 -- 接驳位 / 库位 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | //agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 111: | 
|---|
|  |  |  | 
|---|
|  |  |  | case 121: | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); | 
|---|
|  |  |  | //更新库存明细 | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); | 
|---|
|  |  |  | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo(),agvWrkMast.getAppeUser()); | 
|---|
|  |  |  | //修改源库位状态为O | 
|---|
|  |  |  | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | 
|---|
|  |  |  | wrkMast.setIoTime(now); | 
|---|
|  |  |  | //优先级 | 
|---|
|  |  |  | wrkMast.setIoPri(300.0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //源站点 | 
|---|
|  |  |  | wrkMast.setSourceLocNo(agvWrkMast.getLocNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //目标站点 | 
|---|
|  |  |  | wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | if (agvWrkMast.getLocNo().startsWith("QO") && agvWrkMast.getLocNo().endsWith("F4") && Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2)) == 30) { | 
|---|
|  |  |  | if (!agvWrkMast.getSourceLocNo().endsWith("02F1")) { | 
|---|
|  |  |  | AgvLocMast locByFloor = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | locByFloor = agvCommonService.getLocByLocRule(3, 1, AsrsConstants.ERCHANG, true); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (locByFloor != null && locByFloor.getLocNo().endsWith("02F1")) { | 
|---|
|  |  |  | AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | agvLocMast.setLocSts("O"); | 
|---|
|  |  |  | agvLocMast.setModiTime(now); | 
|---|
|  |  |  | agvLocMast.setBarcode(""); | 
|---|
|  |  |  | agvLocMastService.updateById(agvLocMast); | 
|---|
|  |  |  | wrkMast.setLocNo(locByFloor.getLocNo()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //货架编码 | 
|---|
|  |  |  | wrkMast.setBarcode(agvWrkMast.getBarcode()); | 
|---|
|  |  |  | //货架类型 | 
|---|
|  |  |  | 
|---|
|  |  |  | if (!agvWrkMastService.insertByIncrease(wrkMast)) { | 
|---|
|  |  |  | throw new CoolException("保存工作档失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo()); | 
|---|
|  |  |  | AgvLocMast agvLocMast = agvLocMastService.selectById(wrkMast.getLocNo()); | 
|---|
|  |  |  | agvLocMast.setLocSts("S"); | 
|---|
|  |  |  | agvLocMast.setModiTime(now); | 
|---|
|  |  |  | agvLocMastService.updateById(agvLocMast); | 
|---|