|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.wms.task.handler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.zy.asrs.common.wms.entity.*; | 
|---|
|  |  |  | import com.zy.asrs.common.wms.service.*; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  | import org.springframework.transaction.interceptor.TransactionAspectSupport; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | private WaitPakinService waitPakinService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderDetlService orderDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private BasZpalletService basZpalletService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public ReturnT<String> start(WrkMast wrkMast) { | 
|---|
|  |  |  | // 99.入库完成 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新入库通知档 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.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")) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新订单完成数量 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId); | 
|---|
|  |  |  | if (orderDetl == null) { | 
|---|
|  |  |  | orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
|---|
|  |  |  | 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())){ | 
|---|
|  |  |  | if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
|---|
|  |  |  | orderDetl.getBatch(), wrkDetl.getAnfme(), hostId)) { | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + 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))) { | 
|---|
|  |  |  | 
|---|
|  |  |  | // 修改工作主档状态 | 
|---|
|  |  |  | wrkMast.setWrkSts(200L);//200.库存更新完成 | 
|---|
|  |  |  | wrkMast.setModiTime(now); | 
|---|
|  |  |  | savePicInZpallet(wrkMast.getBarcode(),wrkMast.getPic(),wrkMast.getHostId()); | 
|---|
|  |  |  | if (!wrkMastService.updateById(wrkMast)) { | 
|---|
|  |  |  | exceptionHandle("更新出库完成状态失败;[workNo={0}]", wrkMast.getWrkNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return SUCCESS; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | 保存图片到托盘管理页面 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private void savePicInZpallet(String barcode, String pic, Long hostId){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(Cools.isEmpty(pic)){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BasZpallet basZpallet = basZpalletService.getOne(new LambdaQueryWrapper<BasZpallet>().eq(BasZpallet::getZpallet, barcode)); | 
|---|
|  |  |  | List<String> list = null; | 
|---|
|  |  |  | if(Cools.isEmpty(basZpallet)){ | 
|---|
|  |  |  | basZpallet = new BasZpallet(); | 
|---|
|  |  |  | basZpallet.setHostId(hostId); | 
|---|
|  |  |  | basZpallet.setCreateTime(new Date()); | 
|---|
|  |  |  | basZpallet.setModifyTime(new Date()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | list = new ArrayList<>(); | 
|---|
|  |  |  | list.add(pic); | 
|---|
|  |  |  | basZpallet.setPicture(JSON.toJSONString(list)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | basZpalletService.save(basZpallet); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | basZpallet.setHostId(hostId); | 
|---|
|  |  |  | basZpallet.setModifyTime(new Date()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String picture = basZpallet.getPicture(); | 
|---|
|  |  |  | list = JSON.parseArray(picture, String.class); | 
|---|
|  |  |  | if(list.size() >= 5){ | 
|---|
|  |  |  | list.remove(0); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | list.add(pic); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | basZpallet.setPicture(JSON.toJSONString(list)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | basZpalletService.updateById(basZpallet); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void main(String[] args) { | 
|---|
|  |  |  | String str = "['abc','bcd','cdg']"; | 
|---|
|  |  |  | List<String> list = JSON.parseArray(str, String.class); | 
|---|
|  |  |  | System.out.println(list); | 
|---|
|  |  |  | list.remove(0); | 
|---|
|  |  |  | System.out.println(list); | 
|---|
|  |  |  | list.add("aaa"); | 
|---|
|  |  |  | System.out.println(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|