| New file |
| | |
| | | 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<String>{ |
| | | @Autowired |
| | | private BasAgvMastService basAgvMastService; |
| | | @Autowired |
| | | private BasAgvLocDetlService basAgvLocDetlService; |
| | | @Autowired |
| | | private BasAgvWrkDetlService basAgvWrkDetlService; |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private LocDetlService locDetlService; |
| | | |
| | | |
| | | public ReturnT<String> start(BasAgvMast basAgvMast) { |
| | | try { |
| | | Date now = new Date(); |
| | | switch (basAgvMast.getIoType()){ |
| | | case 0: |
| | | LocMast sourceLoc0 = locMastService.selectById(basAgvMast.getSourceLocNo()); |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().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<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo())); |
| | | basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().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<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo())); |
| | | if (!locDetls1.isEmpty()) { |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().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<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo())); |
| | | basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo())); |
| | | basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo())); |
| | | basAgvMast.setStatus(3); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | break; |
| | | case 2: |
| | | List<LocDetl> locDetls2 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo())); |
| | | if (!locDetls2.isEmpty()) { |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo())); |
| | | } |
| | | List<LocDetl> locDetlList1 = new ArrayList<>(); |
| | | List<LocDetl> locDetlList2 = new ArrayList<>(); |
| | | List<BasAgvLocDetl> basAgvLocDetlList = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo())); |
| | | List<BasAgvWrkDetl> basAgvWrkDetlList = basAgvWrkDetlService.selectList(new EntityWrapper<BasAgvWrkDetl>().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<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo())); |
| | | basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().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; |
| | | } |
| | | } |