|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.wms.task.handler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.zy.asrs.common.wms.entity.LocDetl; | 
|---|
|  |  |  | import com.zy.asrs.common.wms.entity.LocMast; | 
|---|
|  |  |  | import com.zy.asrs.common.wms.entity.WrkDetl; | 
|---|
|  |  |  | import com.zy.asrs.common.wms.entity.WrkMast; | 
|---|
|  |  |  | import com.zy.asrs.common.wms.entity.*; | 
|---|
|  |  |  | import com.zy.asrs.common.wms.service.*; | 
|---|
|  |  |  | import com.zy.asrs.framework.common.Cools; | 
|---|
|  |  |  | import com.zy.asrs.wms.task.AbstractHandler; | 
|---|
|  |  |  | 
|---|
|  |  |  | private LocDetlService locDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WaitPakinService waitPakinService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderDetlService orderDetlService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public ReturnT<String> start(WrkMast wrkMast) { | 
|---|
|  |  |  | // 99.入库完成 | 
|---|
|  |  |  | 
|---|
|  |  |  | locMast.setLocSts("D"); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMast.setPic(wrkMast.getPic()); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | exceptionHandle("空板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新入库通知档 ioStatus ===>> Y | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId); | 
|---|
|  |  |  | if (orderDetl==null){ | 
|---|
|  |  |  | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, hostId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //                            Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() | 
|---|
|  |  |  | //                                    .eq("zpallet", wrkDetl.getZpallet()) | 
|---|
|  |  |  | //                                    .eq("matnr", wrkDetl.getMatnr()) | 
|---|
|  |  |  | //                                    .eq("anfme", wrkDetl.getAnfme()); | 
|---|
|  |  |  | //                            if (Cools.isEmpty(wrkDetl.getBatch())) { | 
|---|
|  |  |  | //                                wrapper.eq("batch", wrkDetl.getBatch()); | 
|---|
|  |  |  | //                            } else { | 
|---|
|  |  |  | //                                wrapper.isNull("batch").or().eq("batch", ""); | 
|---|
|  |  |  | //                            } | 
|---|
|  |  |  | //                            WaitPakin setParam = new WaitPakin(); | 
|---|
|  |  |  | //                            setParam.setIoStatus("Y"); | 
|---|
|  |  |  | //                            setParam.setModiTime(now); | 
|---|
|  |  |  | //                            waitPakinService.update(setParam, wrapper); | 
|---|
|  |  |  | if(!Cools.isEmpty(orderDetl)){ | 
|---|
|  |  |  | if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
|---|
|  |  |  | orderDetl.getBatch(), wrkDetl.getAnfme(), hostId)) { | 
|---|
|  |  |  | //                                    exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", | 
|---|
|  |  |  | //                                            wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception ignore){} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | locMast.setBarcode(wrkMast.getBarcode()); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMast.setPic(wrkMast.getPic()); | 
|---|
|  |  |  | locMast.setFullPlt(wrkMast.getFullPlt()); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId); | 
|---|
|  |  |  | if (orderDetl==null){ | 
|---|
|  |  |  | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, hostId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if(!Cools.isEmpty(orderDetl)){ | 
|---|
|  |  |  | if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
|---|
|  |  |  | orderDetl.getBatch(), wrkDetl.getAnfme(), hostId)) { | 
|---|
|  |  |  | //                                    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.setBarcode(wrkMast.getBarcode()); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMast.setPic(wrkMast.getPic()); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId); | 
|---|
|  |  |  | if (null != locDetl) { | 
|---|
|  |  |  | if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId)) { | 
|---|
|  |  |  | if (!locDetlService.updateAnfme(locDetl.getAnfme() + wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId)) { | 
|---|
|  |  |  | exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 
|---|
|  |  |  | exceptionHandle("并板入库 ===>> 新增库存明细失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId); | 
|---|
|  |  |  | if (orderDetl == null) { | 
|---|
|  |  |  | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if(!Cools.isEmpty(orderDetl)){ | 
|---|
|  |  |  | if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
|---|
|  |  |  | orderDetl.getBatch(), wrkDetl.getAnfme(), hostId)) { | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception ignore){} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改库位状态 Q ====>> F | 
|---|
|  |  |  | if (locMast.getLocSts().equals("Q")) { | 
|---|
|  |  |  | 
|---|
|  |  |  | locMast.setBarcode(wrkMast.getBarcode()); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMast.setPic(wrkMast.getPic()); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | exceptionHandle("并板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | locMast.setBarcode(wrkMast.getBarcode()); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMast.setPic(wrkMast.getPic()); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | exceptionHandle("盘点入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改源库位状态 ==> O | 
|---|
|  |  |  | LocMast sourceLoc = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, wrkMast.getSourceLocNo()).eq(LocMast::getHostId, hostId)); | 
|---|
|  |  |  | String picUrl = ""; | 
|---|
|  |  |  | if (null != sourceLoc) { | 
|---|
|  |  |  | picUrl = sourceLoc.getPic(); | 
|---|
|  |  |  | sourceLoc.setBarcode(""); | 
|---|
|  |  |  | sourceLoc.setLocSts("O"); | 
|---|
|  |  |  | sourceLoc.setModiTime(now); | 
|---|
|  |  |  | sourceLoc.setIoTime(now); | 
|---|
|  |  |  | sourceLoc.setPic(""); | 
|---|
|  |  |  | if (!locMastService.updateById(sourceLoc)) { | 
|---|
|  |  |  | exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | locMast.setBarcode(wrkMast.getBarcode()); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMast.setPic(picUrl); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | exceptionHandle("全板出库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (WrkDetl wrkDetl : wrkDetls101) { | 
|---|
|  |  |  | // todo:luxiaotao 3)修改出库通知档 status ==> Y | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId); | 
|---|
|  |  |  | if (orderDetl==null){ | 
|---|
|  |  |  | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, hostId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if(!Cools.isEmpty(orderDetl)){ | 
|---|
|  |  |  | if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
|---|
|  |  |  | orderDetl.getBatch(), wrkDetl.getAnfme(), hostId)) { | 
|---|
|  |  |  | //                                    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.remove(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, wrkMast.getSourceLocNo()).eq(LocDetl::getHostId, hostId))) { | 
|---|
|  |  |  | 
|---|
|  |  |  | locMast.setBarcode(""); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setPic(""); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | exceptionHandle("全板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | locMast.setBarcode(""); | 
|---|
|  |  |  | locMast.setModiTime(now); | 
|---|
|  |  |  | locMast.setIoTime(now); | 
|---|
|  |  |  | locMast.setPic(""); | 
|---|
|  |  |  | if (!locMastService.updateById(locMast)) { | 
|---|
|  |  |  | exceptionHandle("空板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); | 
|---|
|  |  |  | } | 
|---|