package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; 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.Date; import java.util.List; /** * Created by vincent on 2020/7/4 */ @Slf4j @Service @Transactional public class WorkMastHandler extends AbstractHandler { @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlService wrkDetlService; @Autowired private LocMastService locMastService; @Autowired private LocDetlService locDetlService; @Autowired private WaitPakinService waitPakinService; @Autowired private OrderDetlService orderDetlService; @Autowired private InOutService inOutService; @Autowired private MatService matService; @Autowired private HalfBarcodeService halfBarcodeService; public ReturnT start(WrkMast wrkMast) { // 4.入库完成 if (wrkMast.getWrkSts() == 4) { return doIn(wrkMast); // 14.出库完成 } else if (wrkMast.getWrkSts() == 14) { return doOut(wrkMast); } return SUCCESS; } private ReturnT doIn(WrkMast wrkMast) { Date now = new Date(); LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); try { if (null == locMast) { // exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("工作档[workNo=" + wrkMast.getWrkNo() + "]库位号错误[locNo=" + wrkMast.getLocNo() + "]"); } assert locMast != null; switch (wrkMast.getIoType()) { // 空板入库 case 10: // 修改库位状态=D if (locMast.getLocSts().equals("S") || locMast.getLocSts().equals("Q")) { if (Cools.isEmpty(wrkMast.getBarcode())) { throw new CoolException("空板入库条码不能为空"); } locMast.setBarcode(wrkMast.getBarcode()); if (Integer.parseInt(wrkMast.getBarcode().substring(0,1))==5){ locMast.setLocType2((short)5); }else if (Integer.parseInt(wrkMast.getBarcode().substring(0,1))==6){ locMast.setLocType2((short)6); }else if(Integer.parseInt(wrkMast.getBarcode().substring(0,1))==7){ locMast.setLocType2((short)7); }else if(Integer.parseInt(wrkMast.getBarcode().substring(0,1))==8){ locMast.setLocType2((short)8); } locMast.setLocSts("D"); locMast.setIoTime(now); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { // exceptionHandle("空板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("空板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } break; // 全板入库 case 1: // 清除所属库位之前的库存明细 List locDetls = locDetlService.selectList(new EntityWrapper().eq("loc_no", wrkMast.getLocNo())); if (!locDetls.isEmpty()) { locDetlService.delete(new EntityWrapper().eq("loc_no", wrkMast.getLocNo())); } // 根据工作号,查询工作明细档 List wrkDetls = wrkDetlService.selectList(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls.isEmpty()) { // exceptionHandle("全板入库 ===>> 工作明细档不存在;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板入库 ===>> 工作明细档不存在; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } // 遍历工作明细,更新库存明细和入库通知档 for (WrkDetl wrkDetl : wrkDetls) { LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl); if (null != locDetl) { if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl)) { // exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } else { locDetl = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); locDetl.setAppeTime(now); locDetl.setModel(wrkDetl.getModel()); InOut inOut=inOutService.selectByMatnr(wrkDetl.getMatnr()); Mat mat = matService.selectByMatnr(wrkDetl.getMatnr()); if (inOut != null){ inOut.setTemp1("在库");//属性 是否在库 inOut.setBrand(wrkDetl.getZpallet());//托盘条码 inOut.setTemp2(mat.getName());//套号 inOut.setTemp3(wrkMast.getLocNo());//库位号 // inOut.setModiTime(now.toString()); } if (!inOutService.updateById(inOut)){ return FAIL.setMsg("更新模具属性失败"); } //更新半托信息 HalfBarcode halfBarcode = halfBarcodeService.selectByZpallet(wrkDetl.getZpallet()); //对模具的规格做处理得到厚度 Integer thickness = 0; if (!Cools.isEmpty(wrkDetl.getSpecs())){ String[] split = wrkDetl.getSpecs().split("\\*"); thickness = Integer.parseInt(split[1]); } if (halfBarcode == null){ HalfBarcode hb = new HalfBarcode(); hb.setZpallet(wrkDetl.getZpallet()); hb.setSpecs(wrkDetl.getZpallet().substring(0,1)); hb.setAnfme(1); if (Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==6){ hb.setPrice(2650 - thickness); }else if(Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==7){ hb.setPrice(1750 - thickness); }else if(Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==8){ hb.setPrice(800 - thickness); } if (!halfBarcodeService.insert(hb)){ throw new CoolException("更新半托信息失败"); } }else { if (Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==6){ halfBarcode.setAnfme(halfBarcode.getAnfme() + 1); halfBarcode.setPrice(halfBarcode.getPrice() - thickness); }else if(Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==7){ halfBarcode.setAnfme(halfBarcode.getAnfme() + 1); halfBarcode.setPrice(halfBarcode.getPrice() - thickness); }else if(Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==8){ halfBarcode.setAnfme(halfBarcode.getAnfme() + 1); halfBarcode.setPrice(halfBarcode.getPrice() - thickness); } if (!halfBarcodeService.half(halfBarcode)){ throw new CoolException("更新半托信息失败"); } } if (!locDetlService.insert(locDetl)) { // exceptionHandle("全板入库 ===>> 添加库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板入库 ===>> 添加库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } // 更新订单完成数量 OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl); try { if (!Cools.isEmpty(orderDetl)) { if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl, wrkDetl.getAnfme())) { // exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } } catch (Exception ignore) { } } // 修改库位状态 S ====>> F if (locMast.getLocSts().equals("S")) { locMast.setLocSts("F"); locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { // exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } break; // 拣料入库 case 53: // 根据工作号,查询工作明细档 List wrkDetls53 = wrkDetlService.selectList(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls53.isEmpty()) { // exceptionHandle("拣料入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } for (WrkDetl wrkDetl : wrkDetls53) { LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl); if (locDetl != null) { InOut inOut=inOutService.selectByMatnr(wrkDetl.getMatnr()); if (inOut != null){ inOut.setTemp1("不在库");//属性 是否在库 inOut.setBrand("");//托盘条码 inOut.setTemp3(""); // inOut.setModiTime(now.toString()); } if (!inOutService.updateById(inOut)){ return FAIL.setMsg("更新模具属性失败"); } // 对模具的规格做处理得到厚度 Integer thickness = 0; if (wrkDetl.getSpecs() != null){ String[] split = wrkDetl.getSpecs().split("\\*"); thickness = Integer.parseInt(split[1]); } // 根据托盘码找到半托信息 HalfBarcode halfBarcode = halfBarcodeService.selectByZpallet(wrkDetl.getZpallet()); if (halfBarcode != null){ halfBarcode.setPrice(thickness + halfBarcode.getPrice()); // 可放厚度 halfBarcode.setAnfme(halfBarcode.getAnfme() - 1); // 数量 } if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl)) { // exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } // 更新订单完成数量 OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl); try { if (!Cools.isEmpty(orderDetl)) { if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl, wrkDetl.getAnfme())) { // exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } } catch (Exception ignore) { } } // 修改库位状态 Q ====>> F if (locMast.getLocSts().equals("Q")) { locMast.setLocSts("F"); locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("拣料入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } break; // 并板入库 case 54: // 根据工作号,查询工作明细档 List wrkDetls54 = wrkDetlService.selectList(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls54.isEmpty()) { // exceptionHandle("并板入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); }else { // 修改库存明细数量,如无库存,曾新增 for (WrkDetl wrkDetl : wrkDetls54) { LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl); if (null != locDetl) { if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl)) { // exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } else { InOut inOut=inOutService.selectByMatnr(wrkDetl.getMatnr()); if (inOut != null){ inOut.setTemp1("在库");//属性 是否在库 inOut.setBrand(wrkDetl.getZpallet());//托盘条码 inOut.setTemp3(wrkMast.getLocNo());//库位号 // inOut.setModiTime(now.toString()); } if (!inOutService.updateById(inOut)){ return FAIL.setMsg("更新模具属性失败"); } //更新半托信息 HalfBarcode halfBarcode = halfBarcodeService.selectByZpallet(wrkDetl.getZpallet()); //对模具的规格做处理得到厚度 Integer thickness = 0; if (!Cools.isEmpty(wrkDetl.getSpecs())){ String[] split = wrkDetl.getSpecs().split("\\*"); thickness = Integer.parseInt(split[1]); } if (halfBarcode == null){ HalfBarcode hb = new HalfBarcode(); hb.setZpallet(wrkDetl.getZpallet()); hb.setSpecs(wrkDetl.getZpallet().substring(0,1)); hb.setAnfme(1); if (Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==6){ hb.setPrice(2650 - thickness); }else if(Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==7){ hb.setPrice(1750 - thickness); }else if(Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==8){ hb.setPrice(800 - thickness); } if (!halfBarcodeService.insert(hb)){ throw new CoolException("更新半托信息失败"); } }else { if (Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==6){ halfBarcode.setAnfme(halfBarcode.getAnfme() + 1); halfBarcode.setPrice(halfBarcode.getPrice() - thickness); }else if(Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==7){ halfBarcode.setAnfme(halfBarcode.getAnfme() + 1); halfBarcode.setPrice(halfBarcode.getPrice() - thickness); }else if(Integer.parseInt(wrkDetl.getZpallet().substring(0,1))==8){ halfBarcode.setAnfme(halfBarcode.getAnfme() + 1); halfBarcode.setPrice(halfBarcode.getPrice() - thickness); } if (!halfBarcodeService.half(halfBarcode)){ throw new CoolException("更新半托信息失败"); } } locDetl = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); locDetl.setAppeTime(now); if (!locDetlService.insert(locDetl)) { // exceptionHandle("并板入库 ===>> 新增库存明细失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } } } // 修改库位状态 Q ====>> F if (locMast.getLocSts().equals("Q")) { locMast.setLocSts("F"); locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { // exceptionHandle("并板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("并板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } break; // 盘点入库 case 57: // 根据工作号,查询工作明细档 List wrkDetls57 = wrkDetlService.selectList(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls57.isEmpty()) { // exceptionHandle("盘点入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("盘点入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } // 修改库位状态 Q ====>> F if (locMast.getLocSts().equals("Q")) { locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D"); locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { // exceptionHandle("盘点入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("盘点入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } break; // 库位移转 case 11: // 默认目标库位是空板 String locSts = "D"; // 库位移转判断是否为空板移转 if (wrkMast.getEmptyMk().equals("N")) { locSts = "F"; // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { // exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } // 修改源库位状态 ==> O LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); if (null != sourceLoc) { sourceLoc.setBarcode(""); sourceLoc.setLocSts("O"); sourceLoc.setModiTime(now); sourceLoc.setIoTime(now); if (!locMastService.updateById(sourceLoc)) { // exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } // 修改目标库位状态 ==> .locSts locMast.setLocSts(locSts); locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { // exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } break; default: break; } // 修改工作主档状态 wrkMast.setWrkSts(5L); wrkMast.setModiTime(now); if (!wrkMastService.updateById(wrkMast)) { // exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("更新入库完成状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } catch (Exception e) { log.error("fail", e); e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } private ReturnT doOut(WrkMast wrkMast) { Date now = new Date(); LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); try { if (null == locMast) { // exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("工作档库位号错误; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } assert locMast != null; switch (wrkMast.getIoType()) { // 全板出库 case 101: // // 出库确认信号位 // if (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) { // return SUCCESS; // } // 根据工作号,查询工作明细档 List wrkDetls101 = wrkDetlService.selectList(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls101.isEmpty()) { // exceptionHandle("全板出库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } for (WrkDetl wrkDetl : wrkDetls101) { InOut inOut=inOutService.selectByMatnr(wrkDetl.getMatnr()); // 对模具的规格做处理得到厚度 Integer thickness = 0; if (wrkDetl.getSpecs() != null){ String[] split = wrkDetl.getSpecs().split("\\*"); thickness = Integer.parseInt(split[1]); } // 根据托盘码找到半托信息 HalfBarcode halfBarcode = halfBarcodeService.selectByZpallet(wrkDetl.getZpallet()); if (halfBarcode != null){ halfBarcode.setPrice(thickness + halfBarcode.getPrice()); // 可放厚度 halfBarcode.setAnfme(halfBarcode.getAnfme() - 1); // 数量 } if (inOut != null){ inOut.setTemp1("不在库");//属性 是否在库 inOut.setBrand("");//托盘条码 inOut.setTemp3("");//库位号 // inOut.setModiTime(now.toString()); } if (!inOutService.updateById(inOut)){ return FAIL.setMsg("更新模具属性失败"); } if (!halfBarcodeService.half(halfBarcode)){ return FAIL.setMsg("更新半托信息失败"); } } for (WrkDetl wrkDetl : wrkDetls101) { // 更新订单完成数量 OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl); try { if (!Cools.isEmpty(orderDetl)) { if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl, wrkDetl.getAnfme())) { // exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } } } catch (Exception ignore) { } } // 删除工作档源库位的库存明细 if (!locDetlService.delete(new EntityWrapper().eq("loc_no", wrkMast.getSourceLocNo()))) { // exceptionHandle("全板出库 ===>> 删除库存明细失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 删除库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } // 修改源库位状态 R ===>> O if (locMast.getLocSts().equals("R")) { locMast.setLocSts("O"); locMast.setBarcode("");//托盘与库位绑定 locMast.setModiTime(now); locMast.setIoTime(now); if (!locMastService.updateById(locMast)) { // exceptionHandle("全板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } } break; // 空板出库 case 110: // 修改库位状态 R ===>> O if (locMast.getLocSts().equals("R")) { locMast.setLocSts("O"); locMast.setBarcode("");//托盘与库位绑定 locMast.setLocType2((short)0); locMast.setModiTime(now); locMast.setIoTime(now); if (!locMastService.updateById(locMast)) { // exceptionHandle("空板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("空板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } } break; default: break; } // 修改工作主档状态 wrkMast.setWrkSts(15L); wrkMast.setModiTime(now); if (!wrkMastService.updateById(wrkMast)) { // exceptionHandle("更新出库完成状态失败;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("更新出库完成状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } } catch (Exception e) { log.error("fail", e); e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } return SUCCESS; } }