package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.LocDetlMapper; import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.mapper.OrderMapper; 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 javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; /** * 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; @Resource private OrderDetlMapper orderDetlMapper; @Resource private LocDetlMapper locDetlMapper; @Resource private OrderMapper orderMapper; 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 && wrkMast.getIoType() != 3) { // 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())) { locMast.setBarcode(wrkMast.getBarcode()); } 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.getMatnr(), wrkDetl.getBatch()); // if (null != locDetl) { // if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { //// exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); // } // } else { LocDetl locDetl = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setZpallet(wrkMast.getBarcode()); // 托盘条码 locDetl.setBarcode(wrkMast.getBarcode()); locDetl.setModiTime(now); locDetl.setAppeTime(now); locDetl.setBatch(""); 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.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); if (orderDetl==null){ orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); } try { if(!Cools.isEmpty(orderDetl)){ if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), orderDetl.getBatch(),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.setSheetNo("0"); 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.getMatnr(), wrkDetl.getBatch()); // 箱号+卷号 LocDetl locDetl = locDetlService.selectOne(new EntityWrapper().eq("batch",wrkDetl.getBatch()) .eq("model",wrkDetl.getModel())); if (null != locDetl) { // if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { if (!locDetlService.updateAnfme2(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getModel(), wrkDetl.getBatch())) { // 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.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); // if (orderDetl==null){ // orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); // } // try { // if(!Cools.isEmpty(orderDetl)){ // if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), // orderDetl.getBatch(),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){} } // 修改捡料入库的库存明细的理货状态为待理货 locDetlMapper.updateLhStsByLocNo(wrkMast.getLocNo(),0); // 修改库位状态 Q ====>> F if (locMast.getLocSts().equals("Q")) { locMast.setLocSts("F"); locMast.setBarcode(wrkMast.getBarcode()); locMast.setSheetNo("0"); 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() + "]"); } // 修改库存明细数量,如无库存,曾新增 for (WrkDetl wrkDetl:wrkDetls54) { LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); if (null != locDetl) { if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { // exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); 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); 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.setSheetNo("0"); 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() + "]"); } for(WrkDetl wrkDetl : wrkDetls57) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { // 更新订单完成数量 orderDetlMapper.updateOrderDetlQtyByGroupNo(wrkDetl.getOrderNo(), wrkDetl.getBrand()); } // OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); // if (orderDetl==null){ // orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); // } // try { // if(!Cools.isEmpty(orderDetl)){ // if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), // orderDetl.getBatch(),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(wrkMast.getFullPlt().equals("Y")?"F":"D"); locMast.setBarcode(wrkMast.getBarcode()); locMast.setSheetNo("0"); 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() + "]"); } } // 备货,更新订单明细及订单状态 List wrkDetlList = wrkDetlService.selectList(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (!wrkDetlList.isEmpty()) { List brands = wrkDetlList.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList()); // 查询订单明细 List orderDetlList = orderDetlMapper.selectList(new EntityWrapper().in("brand", brands)); if (!orderDetlList.isEmpty()) { // 更新明细为已备货 orderDetlMapper.updateOrderDetlStatusByPackageNo(brands,2); // 获取订单号 String orderNo = orderDetlList.get(0).getOrderNo(); // 判断该订单明细是否全部已备货 Integer selectCount = orderDetlMapper.selectCount(new EntityWrapper().eq("order_no", orderNo).ne("inspect", 2)); if (selectCount == 0) { // 更新订单为备货完成 orderMapper.updateStatusByOrderNo(orderNo,2,29); } } } // 修改源库位状态 ==> O LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); if (null != sourceLoc) { sourceLoc.setBarcode(""); sourceLoc.setLocSts("O"); sourceLoc.setSheetNo("0"); 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.setSheetNo("0"); 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 12: // 默认目标库位是空板 String locSts2 = "D"; // 库位移转判断是否为空板移转 if (wrkMast.getEmptyMk().equals("N")) { locSts2 = "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() + "]"); } } // 跨巷道移库,更新订单明细及订单状态 List wrkDetlList2 = wrkDetlService.selectList(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (!wrkDetlList2.isEmpty()) { // 判断有无单据编号 Optional any = wrkDetlList2.stream().filter(wrkDetl -> wrkDetl.getOrderNo() != null).findAny(); if (any.isPresent()) { String orderNo = any.get().getOrderNo(); // 根据单据编号和库位号查询单据明细 List orderDetlList = orderDetlMapper.selectList(new EntityWrapper().in("order_no",orderNo).eq("specs",wrkMast.getSourceLocNo())); // 更新单据明细的移库状态 for(OrderDetl orderDetl: orderDetlList) { orderDetl.setDanger(2); orderDetl.setUpdateTime(now); orderDetlMapper.updateById(orderDetl); } // 判断单据明细是不是全部移库完成 Integer count = orderDetlMapper.selectCount(new EntityWrapper().lt("danger", 2).eq("order_no", orderNo)); if (count == 0) { // 更新单据为已完成 // 直接更新为6已上报,方便转储历史 orderMapper.updateSettleByOrderNo(orderNo,6,null); } } } else { // 空板转移没有工作明细,但是要更新单据明细状态 // 只有一条作业中的移库单据 List orderList = orderMapper.selectList(new EntityWrapper().eq("doc_type", 24).le("settle", 3)); if(orderList.isEmpty()) { log.error("没有获取到正在执行中的移库单据"); } else { Order order = orderList.get(0); // 根据单据编号和库位号查询单据明细 List orderDetlList = orderDetlMapper.selectList(new EntityWrapper().in("order_no",order.getOrderNo()).eq("specs",wrkMast.getSourceLocNo())); // 更新单据明细的移库状态 for(OrderDetl orderDetl: orderDetlList) { orderDetl.setDanger(2); orderDetl.setUpdateTime(now); orderDetlMapper.updateById(orderDetl); } // 判断单据明细是不是全部移库完成 Integer count = orderDetlMapper.selectCount(new EntityWrapper().lt("danger", 2).eq("order_no", order.getOrderNo())); if (count == 0) { // 更新单据为已完成 orderMapper.updateSettleByOrderNo(order.getOrderNo(),6,null); } } } // 修改源库位状态 ==> O LocMast sourceLoc2 = locMastService.selectById(wrkMast.getSourceLocNo()); if (null != sourceLoc2) { sourceLoc2.setBarcode(""); sourceLoc2.setLocSts("O"); sourceLoc2.setSheetNo("0"); sourceLoc2.setModiTime(now); sourceLoc2.setIoTime(now); if (!locMastService.updateById(sourceLoc2)) { // exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } // 修改目标库位状态 ==> .locSts locMast.setLocSts(locSts2); locMast.setBarcode(wrkMast.getBarcode()); locMast.setSheetNo("0"); 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 59: // 修改库位状态 S ====>> F if (locMast.getLocSts().equals("S")) { locMast.setLocSts("F"); locMast.setModiTime(now); locMastService.updateById(locMast); } // 修改空闲理货入库的库存明细的理货状态为待理货 locDetlMapper.updateLhStsByLocNo(wrkMast.getLocNo(),0); 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) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { // 更新订单完成数量 orderDetlMapper.updateOrderDetlQtyByGroupNo(wrkDetl.getOrderNo(), wrkDetl.getBrand()); } // 更新订单完成数量 // OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); // if (orderDetl==null){ // orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null); // } // // 箱号+卷号 // OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper().eq("batch",wrkDetl.getBatch()) // .eq("model",wrkDetl.getModel())); // // try { // if(!Cools.isEmpty(orderDetl)){ // // 更新订单完成数量 //// orderDetlService.update(null,new EntityWrapper().eq("order_no",orderDetl.getOrderNo()) //// .eq("batch",orderDetl.getBatch()).eq("model", orderDetl.getModel())); // if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), orderDetl.getModel(), // orderDetl.getBatch(),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.setSheetNo("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; // 空板出库 case 110: // 修改库位状态 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 111: List wrkDetls111 = wrkDetlService.selectList(new EntityWrapper().eq("wrk_no", wrkMast.getWrkNo())); if (wrkDetls111.isEmpty()) { // exceptionHandle("全板出库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } for (WrkDetl wrkDetl : wrkDetls111) { // 更新订单完成数量 if (!Cools.isEmpty(wrkDetl.getOrderNo())) { // 更新订单完成数量 orderDetlMapper.updateOrderDetlQtyByGroupNo(wrkDetl.getOrderNo(), wrkDetl.getBrand()); } // OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); // if (orderDetl == null) { // orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); // } // try { // if (!Cools.isEmpty(orderDetl)) { // if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), // orderDetl.getBatch(), 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) { // } } 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; } }