package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.ArrayList; import java.util.Date; import java.util.List; @Slf4j @Service @Transactional public class WrkMastAgvHandler extends AbstractHandler{ @Autowired private BasAgvMastService basAgvMastService; @Autowired private BasAgvLocDetlService basAgvLocDetlService; @Autowired private BasAgvWrkDetlService basAgvWrkDetlService; @Autowired private LocMastService locMastService; @Autowired private LocDetlService locDetlService; public ReturnT start(BasAgvMast basAgvMast) { try { Date now = new Date(); switch (basAgvMast.getIoType()){ case 0: LocMast sourceLoc0 = locMastService.selectById(basAgvMast.getSourceLocNo()); locDetlService.delete(new EntityWrapper().eq("loc_no", sourceLoc0.getLocNo())); sourceLoc0.setLocSts("O"); sourceLoc0.setBarcode(""); sourceLoc0.setModiTime(now); sourceLoc0.setIoTime(now); if (!locMastService.updateById(sourceLoc0)) { // exceptionHandle("全板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("出库 ===>> 修改源库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getSourceLocNo() + "]"); } basAgvLocDetlService.delete(new EntityWrapper().eq("loc_no", basAgvMast.getSourceLocNo())); basAgvWrkDetlService.delete(new EntityWrapper().eq("wrk_no", basAgvMast.getTaskNo())); basAgvMast.setStatus(3); basAgvMastService.updateById(basAgvMast); break; case 1: LocMast sourceLoc1 = locMastService.selectById(basAgvMast.getSourceLocNo()); LocMast locMast1 = locMastService.selectById(basAgvMast.getLocNo()); List locDetls1 = locDetlService.selectList(new EntityWrapper().eq("loc_no", basAgvMast.getLocNo())); if (!locDetls1.isEmpty()) { locDetlService.delete(new EntityWrapper().eq("loc_no", basAgvMast.getLocNo())); } // 修改目标库位状态 ==> .locSts locMast1.setLocSts("F"); locMast1.setIoTime(now); locMast1.setModiTime(now); if (!locMastService.updateById(locMast1)) { // exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]"); } try{ // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 locDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo()); // if (!) { // exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); // } } catch (Exception e) { } if (null != sourceLoc1) { sourceLoc1.setBarcode(""); sourceLoc1.setLocSts("O"); sourceLoc1.setModiTime(now); sourceLoc1.setIoTime(now); if (!locMastService.updateById(sourceLoc1)) { // exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]"); } } basAgvLocDetlService.delete(new EntityWrapper().eq("loc_no", basAgvMast.getSourceLocNo())); basAgvWrkDetlService.delete(new EntityWrapper().eq("wrk_no", basAgvMast.getTaskNo())); basAgvLocDetlService.delete(new EntityWrapper().eq("loc_no", basAgvMast.getLocNo())); basAgvMast.setStatus(3); basAgvMastService.updateById(basAgvMast); break; case 2: List locDetls2 = locDetlService.selectList(new EntityWrapper().eq("loc_no", basAgvMast.getLocNo())); if (!locDetls2.isEmpty()) { locDetlService.delete(new EntityWrapper().eq("loc_no", basAgvMast.getLocNo())); } List locDetlList1 = new ArrayList<>(); List locDetlList2 = new ArrayList<>(); List basAgvLocDetlList = basAgvLocDetlService.selectList(new EntityWrapper().eq("loc_no", basAgvMast.getSourceLocNo())); List basAgvWrkDetlList = basAgvWrkDetlService.selectList(new EntityWrapper().eq("wrk_no", basAgvMast.getTaskNo())); if (!basAgvLocDetlList.isEmpty()) { for (BasAgvLocDetl basAgvLocDetl : basAgvLocDetlList){ LocDetl locDetl = new LocDetl(); locDetl.sync(basAgvLocDetl); locDetlList1.add(locDetl); } } else if (!basAgvWrkDetlList.isEmpty()){ for (BasAgvWrkDetl wrkDetl : basAgvWrkDetlList){ LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); if (null != locDetl) { if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { // exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]"); } } else { locDetl = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setLocNo(basAgvMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); locDetl.setAppeTime(now); locDetl.setOrigin("在库"); if (!locDetlService.insert(locDetl)) { // exceptionHandle("全板入库 ===>> 添加库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("入库 ===>> 添加库存明细失败; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]"); } } } } LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo()); // 修改库位状态 S ====>> F if (locMast2.getLocSts().equals("S")) { locMast2.setLocSts("F"); locMast2.setIoTime(now); locMast2.setModiTime(now); if (!locMastService.updateById(locMast2)) { // exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全入库 ===>> 修改库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]"); } } if (!locDetlList1.isEmpty()){ for (LocDetl locDetl : locDetlList1) { locDetlService.insert(locDetl); } } if (!locDetlList2.isEmpty()){ for (LocDetl locDetl : locDetlList2) { locDetlService.insert(locDetl); } } basAgvLocDetlService.delete(new EntityWrapper().eq("loc_no", basAgvMast.getLocNo())); basAgvWrkDetlService.delete(new EntityWrapper().eq("wrk_no", basAgvMast.getTaskNo())); basAgvMast.setStatus(3); basAgvMastService.updateById(basAgvMast); break; case 3: basAgvMast.setStatus(3); basAgvMastService.updateById(basAgvMast); break; default: return FAIL.setMsg("暂不支持该类型"); } } catch (Exception e) { log.error("fail", e); e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } }