|  |  |  | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 无单组托 | 
|---|
|  |  |  | if (Cools.isEmpty(param.getOrderNo())) { | 
|---|
|  |  |  | if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 生成入库通知档 | 
|---|
|  |  |  | List<DetlDto> detlDtos = new ArrayList<>(); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 关联组托 | 
|---|
|  |  |  | }  else { | 
|---|
|  |  |  | Order order = orderService.selectByNo(param.getOrderNo(), hostId); | 
|---|
|  |  |  | if (order.getSettle() > 2) { | 
|---|
|  |  |  | throw new CoolException("单据编号已过期"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 生成入库通知档 | 
|---|
|  |  |  | List<DetlDto> detlDtos = new ArrayList<>(); | 
|---|
|  |  |  | param.getCombMats().forEach(elem -> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Order order = orderService.selectByNo(elem.getOrderNo(), hostId); | 
|---|
|  |  |  | if (order.getSettle() > 2) { | 
|---|
|  |  |  | throw new CoolException("单据编号已过期"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 订单明细数量校验 | 
|---|
|  |  |  | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch(),hostId); | 
|---|
|  |  |  | if (elem.getAnfme() > orderDetl.getEnableQty()) { | 
|---|
|  |  |  | 
|---|
|  |  |  | assert one != null; | 
|---|
|  |  |  | one.setAnfme(one.getAnfme() + detlDto.getAnfme()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | detlDto.setOrderNo(order.getOrderNo()); | 
|---|
|  |  |  | detlDtos.add(detlDto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (Cools.isEmpty(mat)) { | 
|---|
|  |  |  | throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Order order = orderService.selectByNo(detlDto.getOrderNo(), hostId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WaitPakin waitPakin = new WaitPakin(); | 
|---|
|  |  |  | waitPakin.sync(mat); | 
|---|
|  |  |  | waitPakin.setOrderNo(order.getOrderNo());   // 单据编号 | 
|---|
|  |  |  | 
|---|
|  |  |  | if (!waitPakinService.save(waitPakin)) { | 
|---|
|  |  |  | throw new CoolException("保存入库通知档失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderService.updateSettle(order.getId(), 2L, userId, hostId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderService.updateSettle(order.getId(), 2L, userId, hostId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public R WarehouseIn(String locNo, String barcode,Long hostId) { | 
|---|
|  |  |  | public R WarehouseIn(String locNo, String barcode,Long hostId,Long userId) { | 
|---|
|  |  |  | //判断库位状态 | 
|---|
|  |  |  | LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, locNo).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L)); | 
|---|
|  |  |  | if (Cools.isEmpty(locMast)){ | 
|---|
|  |  |  | return R.error("该库位不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!locMast.getLocSts().equals("O")){ | 
|---|
|  |  |  | return R.error("该库位状态为:"+locMast.getLocSts()+",禁止入库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        if (!locMast.getLocSts().equals("O")){ | 
|---|
|  |  |  | //            return R.error("该库位状态为:"+locMast.getLocSts()+",禁止入库"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //查询组托数据 | 
|---|
|  |  |  | List<WaitPakin> list = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getZpallet, barcode).eq(WaitPakin::getHostId, hostId)); | 
|---|
|  |  |  | if (Cools.isEmpty(list)){ | 
|---|
|  |  |  | return R.error("未找到组托信息"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //插入库存数据 | 
|---|
|  |  |  | for (WaitPakin waitPakin: list){ | 
|---|
|  |  |  | Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId)); | 
|---|
|  |  |  | LocDetl locDetl = new LocDetl(); | 
|---|
|  |  |  | locDetl.sync(mat); | 
|---|
|  |  |  | locDetl.setLocNo(locNo); | 
|---|
|  |  |  | //处理库存信息 | 
|---|
|  |  |  | AdjDetl adjDetl = new AdjDetl(); | 
|---|
|  |  |  | Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>() | 
|---|
|  |  |  | .eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId)); | 
|---|
|  |  |  | LocDetl locDetl1=locDetlService.getOne(new LambdaQueryWrapper<LocDetl>() | 
|---|
|  |  |  | .eq(LocDetl::getMatnr,waitPakin.getMatnr()) | 
|---|
|  |  |  | .eq(LocDetl::getHostId,hostId) | 
|---|
|  |  |  | .eq(LocDetl::getLocNo,locNo)); | 
|---|
|  |  |  | double i=0.0; | 
|---|
|  |  |  | if(!Cools.isEmpty(locDetl1)){ | 
|---|
|  |  |  | i=locDetl1.getAnfme(); | 
|---|
|  |  |  | locDetl1.setAnfme(locDetl1.getAnfme()+waitPakin.getAnfme()); | 
|---|
|  |  |  | locDetlService.updateById(locDetl1); | 
|---|
|  |  |  | adjDetl.setMatnr(locDetl1.getMatnr()); | 
|---|
|  |  |  | adjDetl.setBatch(locDetl1.getBatch()); | 
|---|
|  |  |  | adjDetl.setAdjQty(locDetl1.getAnfme()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | LocDetl locDetl = new LocDetl(); | 
|---|
|  |  |  | locDetl.sync(mat); | 
|---|
|  |  |  | locDetl.setLocNo(locNo); | 
|---|
|  |  |  | //            locDetl.setBarcode(waitPakin.getBarcode()); | 
|---|
|  |  |  | locDetl.setZpallet(waitPakin.getZpallet()); | 
|---|
|  |  |  | locDetl.setAnfme(waitPakin.getAnfme()); | 
|---|
|  |  |  | locDetl.setBatch(waitPakin.getBatch()); | 
|---|
|  |  |  | locDetl.setZpallet(waitPakin.getZpallet()); | 
|---|
|  |  |  | locDetl.setAnfme(waitPakin.getAnfme()); | 
|---|
|  |  |  | locDetl.setBatch(waitPakin.getBatch()); | 
|---|
|  |  |  | //            locDetl.setWeight(waitPakin.getWeight()); | 
|---|
|  |  |  | locDetl.setHostId(hostId); | 
|---|
|  |  |  | locDetl.setModiTime(now); | 
|---|
|  |  |  | locDetl.setAppeTime(now); | 
|---|
|  |  |  | locDetlService.save(locDetl); | 
|---|
|  |  |  | locDetl.setHostId(hostId); | 
|---|
|  |  |  | locDetl.setModiTime(now); | 
|---|
|  |  |  | locDetl.setAppeTime(now); | 
|---|
|  |  |  | locDetlService.save(locDetl); | 
|---|
|  |  |  | adjDetl.setMatnr(locDetl.getMatnr()); | 
|---|
|  |  |  | adjDetl.setBatch(locDetl.getBatch()); | 
|---|
|  |  |  | adjDetl.setAdjQty(locDetl.getAnfme()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | adjDetl.setLocNo(locNo); | 
|---|
|  |  |  | adjDetl.setOriQty(i); | 
|---|
|  |  |  | adjDetl.setMemo("平庫上架"); | 
|---|
|  |  |  | adjDetl.setModiUser(userId); | 
|---|
|  |  |  | adjDetl.setAppeUser(userId); | 
|---|
|  |  |  | adjDetl.setAppeTime(new Date()); | 
|---|
|  |  |  | adjDetl.setModiTime(new Date()); | 
|---|
|  |  |  | adjDetl.setOrderNo(waitPakin.getOrderNo()); | 
|---|
|  |  |  | if (!adjDetlService.save(adjDetl)) { | 
|---|
|  |  |  | throw new CoolException("保存库存调整记录失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | throw new CoolException("更新库存数据出错" + e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //是否属于订单数据 | 
|---|
|  |  |  | if (!Cools.isEmpty(waitPakin.getOrderNo())){ | 
|---|
|  |  |  | Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public R WarehouseOut(CombParam combParam, Long hostId) { | 
|---|
|  |  |  | public R WarehouseOut(CombParam combParam, Long hostId , Long userId) { | 
|---|
|  |  |  | //判断库位状态 | 
|---|
|  |  |  | LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L)); | 
|---|
|  |  |  | if (Cools.isEmpty(locMast)){ | 
|---|
|  |  |  | 
|---|
|  |  |  | .eq(LocDetl::getHostId, hostId) | 
|---|
|  |  |  | .eq(LocDetl::getZpallet, combMat.getZpallet()) | 
|---|
|  |  |  | .eq(LocDetl::getMatnr, combMat.getMatnr()) | 
|---|
|  |  |  | .eq(LocDetl::getBatch, combMat.getBatch()) | 
|---|
|  |  |  | //                    .eq(LocDetl::getBatch, combMat.getBatch()) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if (Cools.isEmpty(locDetl)){ | 
|---|
|  |  |  | return R.error("未查询到库存数据"); | 
|---|
|  |  |  | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (orderDetl.getAnfme() < orderDetl.getWorkQty()+combMat.getAnfme()){ | 
|---|
|  |  |  | throw new CoolException("下架数量出错"); | 
|---|
|  |  |  | combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getWorkQty()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 修改订单明细作业数量 | 
|---|
|  |  |  | if (!orderDetlService.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) { | 
|---|
|  |  |  | 
|---|
|  |  |  | orderService.checkComplete(combParam.getOrderNo(), hostId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | double i=0.0; | 
|---|
|  |  |  | double j=locDetl.getAnfme(); | 
|---|
|  |  |  | //处理库存信息 | 
|---|
|  |  |  | if (combMat.getAnfme().equals(locDetl.getAnfme())){ | 
|---|
|  |  |  | //库存相等删除数据 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme())); | 
|---|
|  |  |  | i=subtract.byteValue(); | 
|---|
|  |  |  | locDetl.setAnfme(subtract.doubleValue()); | 
|---|
|  |  |  | locDetlService.updateById(locDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //处理库存信息 | 
|---|
|  |  |  | AdjDetl adjDetl = new AdjDetl(); | 
|---|
|  |  |  | adjDetl.setLocNo(locDetl.getLocNo()); | 
|---|
|  |  |  | adjDetl.setMatnr(locDetl.getMatnr()); | 
|---|
|  |  |  | adjDetl.setBatch(locDetl.getBatch()); | 
|---|
|  |  |  | adjDetl.setOriQty(j); | 
|---|
|  |  |  | adjDetl.setAdjQty(i); | 
|---|
|  |  |  | adjDetl.setMemo("平庫下架"); | 
|---|
|  |  |  | adjDetl.setModiUser(userId); | 
|---|
|  |  |  | adjDetl.setAppeUser(userId); | 
|---|
|  |  |  | adjDetl.setAppeTime(new Date()); | 
|---|
|  |  |  | adjDetl.setModiTime(new Date()); | 
|---|
|  |  |  | adjDetl.setOrderNo(combParam.getOrderNo()); | 
|---|
|  |  |  | adjDetl.setHostId(hostId); | 
|---|
|  |  |  | if (!adjDetlService.save(adjDetl)) { | 
|---|
|  |  |  | throw new CoolException("保存库存调整记录失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | throw new CoolException("更新库存数据出错" + e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | throw new CoolException("更新库存数据出错"+e.getMessage()); | 
|---|
|  |  |  | 
|---|
|  |  |  | adjDetl.setMatnr(locDetl.getMatnr()); | 
|---|
|  |  |  | adjDetl.setBatch(locDetl.getBatch()); | 
|---|
|  |  |  | adjDetl.setOriQty(locDetl.getAnfme()); | 
|---|
|  |  |  | adjDetl.setMemo("WarehouseOutV1-pick"); | 
|---|
|  |  |  | adjDetl.setMemo("并板途中拣料"); | 
|---|
|  |  |  | adjDetl.setModiUser(userId); | 
|---|
|  |  |  | adjDetl.setAppeUser(userId); | 
|---|
|  |  |  | adjDetl.setAppeTime(new Date()); | 
|---|
|  |  |  | 
|---|
|  |  |  | adjDetl.setBatch(locDetl.getBatch()); | 
|---|
|  |  |  | adjDetl.setOriQty(originAnfme); | 
|---|
|  |  |  | adjDetl.setAdjQty(locDetl.getAnfme()); | 
|---|
|  |  |  | adjDetl.setMemo("WarehouseOutV1-pick"); | 
|---|
|  |  |  | adjDetl.setMemo("拣料途中并板"); | 
|---|
|  |  |  | adjDetl.setModiUser(userId); | 
|---|
|  |  |  | adjDetl.setAppeUser(userId); | 
|---|
|  |  |  | adjDetl.setAppeTime(new Date()); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|