package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.mapper.ReportQueryMapper; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.utils.PostMesDataUtils; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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 TestMastService testMastService; @Autowired private OrderDetlService orderDetlService; @Autowired private WaitPakinService waitPakinService; @Autowired private ApiLogService apiLogService; @Value("${mes.url}") private String mesUrl; @Value("${mes.inPath}") private String inpath; @Autowired private PackQualifiedService packQualifiedService; @Autowired private ReportQueryMapper reportQueryMapper; 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())) { 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 = new LocDetl(); locDetl.sync(wrkDetl); locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); locDetl.setAppeTime(now); locDetl.setDeadWarn(wrkDetl.getDeadWarn()); 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()); // try { // if(!Cools.isEmpty(orderDetl)){ // if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), // wrkDetl.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.setIoTime(now); locMast.setModiTime(now); locMast.setFireStatus(0); //入测试库位时给库位测试状态为1待测 if(!Cools.isEmpty(locMast.getChannel())){ locMast.setPackStatus(1);//待测 } if (locMast.getCrnNo()==1){ if (locMast.getLocType1()==1){ locMast.setPackStatus(1); }else { locMast.setPackStatus(0); } }else { WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper().eq("zpallet",locMast.getBarcode())); locMast.setPackStatus(5); TestMast testMast = testMastService.selectOne(new EntityWrapper() .eq("barcode",wrkDetl1.getMatnr()) .eq("status",4) ); testMast.setStatus(5); testMast.setModiTime(new Date()); if (!testMastService.update(testMast,new EntityWrapper().eq("barcode",wrkDetl1.getMatnr()).eq("status",4))){ throw new CoolException("更改测试状态失败"); } } //入库标记 packQualifiedService.insertPackQualified(true,new Date(),wrkDetls.get(0).getMatnr()); //2.入库完成上报 CombParam combParam = new CombParam(); combParam.setPackNo(wrkDetls.get(0).getMatnr()); combParam.setLocNo(wrkMast.getLocNo()); combParam.setBarcode(wrkMast.getBarcode()); if (locMast.getCrnNo()==1){ combParam.setPackSts(0); combParam.setStepSts(2); }else{ combParam.setPackSts(1); combParam.setStepSts(5); } combParam.setRequestTime(DateUtils.convert(now)); new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam); 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()); if (null != locDetl) { if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.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() + "]"); } } // 更新订单完成数量 OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); try { if(!Cools.isEmpty(orderDetl)){ if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.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("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() + "]"); } // 修改库存明细数量,如无库存,曾新增 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.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()); Integer packStatus =sourceLoc.getPackStatus(); if (null != sourceLoc) { sourceLoc.setBarcode(""); sourceLoc.setLocSts("O"); sourceLoc.setModiTime(now); sourceLoc.setIoTime(now); sourceLoc.setPackStatus(0); 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); LocDetl locDetl = locDetlService.selectOne(new EntityWrapper().eq("loc_no", locMast.getLocNo())); boolean sign =false; if (locMast.getLocType1().equals(sourceLoc.getLocType1())){ locMast.setPackStatus(packStatus); //待测库位转测试库位 }else if (locMast.getLocType1().equals((short)1) && sourceLoc.getLocType1().equals((short)3)){ locMast.setPackStatus(1); TestMast testMast = testMastService.selectOne(new EntityWrapper() .eq("loc_no",sourceLoc.getLocNo()) .eq("user_id",locMast.getBarcode()) .eq("barcode",locDetl.getMatnr()) ); if(!Cools.isEmpty(testMast)){ testMast.setChannel(locMast.getChannel()); testMast.setLocNo(wrkMast.getLocNo()); testMast.setModiTime(new Date()); testMast.setBarcode(locDetl.getMatnr()); if (!testMastService.update(testMast,new EntityWrapper() .eq("loc_no",sourceLoc.getLocNo()) .eq("user_id",locMast.getBarcode()) .eq("barcode",locDetl.getMatnr()))){ throw new CoolException("更改测试状态失败"); } }else { throw new CoolException("待测库位无物"); } }else { //测试库位转静置库位和NG库位 if (locMast.getLocType1().equals((short)4)){ locMast.setPackStatus(4); //4:NG //入库标记 packQualifiedService.insertPackQualified(true,new Date(),locDetl.getMatnr()); //出库标记 packQualifiedService.insertPackQualified(false,new Date(),locDetl.getMatnr()); }else { locMast.setPackStatus(5); //5:静置中 //入库标记 packQualifiedService.insertPackQualified(true,new Date(),locDetl.getMatnr()); //出库标记 packQualifiedService.insertPackQualified(false,new Date(),locDetl.getMatnr()); } sign=true; TestMast testMast = testMastService.selectOne(new EntityWrapper() .eq("loc_no",sourceLoc.getLocNo()) .eq("barcode",locDetl.getMatnr()) .eq("status",4) ); testMast.setStatus(5); testMast.setLocNo(locMast.getLocNo()); testMast.setModiTime(new Date()); if (!testMastService.update(testMast,new EntityWrapper() .eq("loc_no",sourceLoc.getLocNo()) .eq("barcode",locDetl.getMatnr()) .eq("status",4))){ throw new CoolException("更改测试状态失败"); } } 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() + "]"); } if (locMast.getCrnNo()==1 && sign){ //7.测试库位转静置库位出库完成上报 CombParam combParam = new CombParam(); combParam.setPackNo(locDetl.getMatnr()); combParam.setLocNo(wrkMast.getSourceLocNo()); combParam.setStepSts(7); if (locMast.getPackStatus()==4){ combParam.setPackSts(2); }else if (locMast.getPackStatus()==5){ combParam.setPackSts(1); } combParam.setRequestTime(DateUtils.convert(now)); new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam); //5.测试库位转静置库位入库完成上报 combParam.setPackNo(locDetl.getMatnr()); combParam.setLocNo(wrkMast.getLocNo()); if (locMast.getPackStatus()==4){ combParam.setPackSts(2); combParam.setStepSts(5); }else if (locMast.getPackStatus()==5){ combParam.setPackSts(1); combParam.setStepSts(8); }else { combParam.setPackSts(0); } combParam.setRequestTime(DateUtils.convert(now)); new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam); } 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) { // // 更新订单完成数量 // OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); // try { // if(!Cools.isEmpty(orderDetl)){ // if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), // wrkDetl.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.setModiTime(now); locMast.setIoTime(now); locMast.setPackStatus(0); 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() + "]"); }else{ //出库标记 packQualifiedService.insertPackQualified(false,new Date(),wrkDetls101.get(0).getMatnr()); //2.出库完成上报 CombParam combParam = new CombParam(); combParam.setPackNo(wrkDetls101.get(0).getMatnr()); combParam.setLocNo(wrkMast.getLocNo()); combParam.setBarcode(wrkMast.getBarcode()); //目标站206出库 if(wrkMast.getStaNo()==206){ combParam.setPackSts(1);//OK combParam.setStepSts(7);//测试库出库完成 }else if(wrkMast.getStaNo()==204){//NG 出库 //NG出库修改测试档的状态为5.已移库 TestMast testMast=testMastService.selectOne(new EntityWrapper() .eq("user_id",wrkMast.getBarcode()) .eq("barcode",wrkDetls101.get(0).getMatnr())); combParam.setPackSts(2);//NG combParam.setStepSts(8);//NG出库完成 testMast.setStatus(5); if(!testMastService.update(testMast,new EntityWrapper() .eq("user_id",wrkMast.getBarcode()) .eq("barcode",wrkDetls101.get(0).getMatnr()))){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("全板出库 ===>> 修改测试表状态为5失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } }else if(wrkMast.getStaNo()==103){//目标站103出库 combParam.setPackSts(1);//OK combParam.setStepSts(6);//静置库出库完成 } combParam.setRequestTime(DateUtils.convert(now)); new PostMesDataUtils().postMesData("MES系统",mesUrl,inpath,combParam); } } break; // 空板出库 case 110: // 修改库位状态 R ===>> O if (locMast.getLocSts().equals("R")) { locMast.setLocSts("O"); locMast.setBarcode(""); locMast.setModiTime(now); locMast.setIoTime(now); locMast.setPackStatus(0); 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; } }