|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.entity.*; | 
|---|
|  |  |  | import com.zy.asrs.mapper.BasDevpMapper; | 
|---|
|  |  |  | import com.zy.asrs.service.*; | 
|---|
|  |  |  | import com.zy.asrs.service.impl.ManLocDetlServiceImpl; | 
|---|
|  |  |  | import com.zy.asrs.task.AbstractHandler; | 
|---|
|  |  |  | import com.zy.asrs.task.core.ReturnT; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | 
|---|
|  |  |  | private WaitPakinService waitPakinService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderDetlService orderDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ManLocDetlService manLocDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private NodeService nodeService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final Map<Integer,Integer> sourceSite = new HashMap<>(); | 
|---|
|  |  |  | static { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private ReturnT<String> doIn(WrkMast wrkMast){ | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | LocMast locMast = null; | 
|---|
|  |  |  | Node node = null; | 
|---|
|  |  |  | if (wrkMast.getIoType() == 300){ | 
|---|
|  |  |  | node = nodeService.selectOne(new EntityWrapper<Node>().eq("name",wrkMast.getLocNo()).eq("type",3)); | 
|---|
|  |  |  | if (null == node) { | 
|---|
|  |  |  | //                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("工作档[workNo=" + wrkMast.getWrkNo() + "]库位号错误[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | assert node != null; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | locMast = locMastService.selectById(wrkMast.getLocNo()); | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | switch (wrkMast.getIoType()) { | 
|---|
|  |  |  | // 空板入库 | 
|---|
|  |  |  | case 10: | 
|---|
|  |  |  | 
|---|
|  |  |  | return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 300: | 
|---|
|  |  |  | // 根据工作号,查询工作明细档 | 
|---|
|  |  |  | List<WrkDetl> wrkDetls300 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); | 
|---|
|  |  |  | if (wrkDetls300.isEmpty()) { | 
|---|
|  |  |  | //                        exceptionHandle("并板入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("平库入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改库存明细数量,如无库存,曾新增 | 
|---|
|  |  |  | for (WrkDetl wrkDetl:wrkDetls300) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ManLocDetl manLocDetl = manLocDetlService.selectItem(node.getName(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
|---|
|  |  |  | if (null != manLocDetl) { | 
|---|
|  |  |  | Double anfme = manLocDetl.getAnfme()+wrkDetl.getAnfme(); | 
|---|
|  |  |  | if (!manLocDetlService.updateAnfme(anfme, 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 { | 
|---|
|  |  |  | manLocDetl = new ManLocDetl(); | 
|---|
|  |  |  | manLocDetl.sync(wrkDetl); | 
|---|
|  |  |  | manLocDetl.setLocNo(wrkMast.getLocNo()); // 库位号 | 
|---|
|  |  |  | manLocDetl.setAnfme(wrkDetl.getAnfme()); // 数量 | 
|---|
|  |  |  | manLocDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 | 
|---|
|  |  |  | manLocDetl.setModiTime(now); | 
|---|
|  |  |  | manLocDetl.setCreateTime(now); | 
|---|
|  |  |  | if (!manLocDetlService.insert(manLocDetl)) { | 
|---|
|  |  |  | //                                exceptionHandle("并板入库 ===>> 新增库存明细失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("平库入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!Cools.isEmpty(wrkDetl.getOrderNo())){ | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
|---|
|  |  |  | if (orderDetl==null){ | 
|---|
|  |  |  | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | Node node = null; | 
|---|
|  |  |  | if (wrkMast.getIoType() == 301){ | 
|---|
|  |  |  | node = nodeService.selectOne(new EntityWrapper<Node>().eq("name",wrkMast.getSourceLocNo()).eq("type",3)); | 
|---|
|  |  |  | if (null == node) { | 
|---|
|  |  |  | //                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("工作档[workNo=" + wrkMast.getWrkNo() + "]库位号错误[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | assert node != null; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | locMast = locMastService.selectById(wrkMast.getLocNo()); | 
|---|
|  |  |  | if (null == locMast) { | 
|---|
|  |  |  | //                exceptionHandle("工作档[workNo={0}]库位号错误[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("工作档[workNo=" + wrkMast.getWrkNo() + "]库位号错误[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | return FAIL.setMsg("工作档库位号错误; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | assert locMast != null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | switch (wrkMast.getIoType()) { | 
|---|
|  |  |  | // 全板出库 | 
|---|
|  |  |  | case 101: | 
|---|
|  |  |  | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("空板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 301: | 
|---|
|  |  |  | List<WrkDetl> wrkDetls301 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); | 
|---|
|  |  |  | for (WrkDetl wrkDetl : wrkDetls301) { | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
|---|
|  |  |  | if (orderDetl==null){ | 
|---|
|  |  |  | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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.getSourceLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception ignore){} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | default: | 
|---|