| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.zy.asrs.common.domain.dto.DetlDto; |
| | | import com.zy.asrs.common.domain.param.MobileAdjustParam; |
| | | import com.zy.asrs.common.openapi.entity.dto.MergeBoardManyDto; |
| | | import com.zy.asrs.common.openapi.entity.dto.PickMergeDto; |
| | | import com.zy.asrs.common.openapi.entity.dto.PickMergeOrderDto; |
| | | import com.zy.asrs.common.openapi.entity.param.CombParam; |
| | | import com.zy.asrs.common.openapi.entity.param.WarehouseOutMergeBoardManyParam; |
| | | import com.zy.asrs.common.openapi.entity.param.WarehouseOutPickMergeParam; |
| | | import com.zy.asrs.common.web.BaseController; |
| | | import com.zy.asrs.common.wms.entity.*; |
| | | import com.zy.asrs.common.wms.mapper.LocDetlMapper; |
| | | import com.zy.asrs.common.wms.service.*; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 移动端服务核心类 |
| | |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private WaitPakinLogService waitPakinLogService; |
| | | @Autowired |
| | | private AdjDetlService adjDetlService; |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | waitPakin.setAppeTime(now); |
| | | waitPakin.setModiUser(userId); |
| | | waitPakin.setModiTime(now); |
| | | waitPakin.setFullPlt(param.getFullPlt()); |
| | | waitPakin.setOwner(param.getOwner()); |
| | | if (!waitPakinService.save(waitPakin)) { |
| | | throw new CoolException("保存入库通知档失败"); |
| | | } |
| | |
| | | } |
| | | |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); |
| | | detlDto.setWarehouse(orderDetl.getThreeCode());//来源仓库 |
| | | detlDto.setOrigin(orderDetl.getSupp());//来源单号 |
| | | detlDto.setOriginNo(orderDetl.getSuppCode());//来源序号 |
| | | if (DetlDto.has(detlDtos, detlDto)) { |
| | | DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); |
| | | assert one != null; |
| | |
| | | waitPakin.setZpallet(param.getBarcode()); // 托盘码 |
| | | waitPakin.setIoStatus("N"); // 入出状态 |
| | | waitPakin.setAnfme(detlDto.getAnfme()); // 数量 |
| | | waitPakin.setThreeCode(detlDto.getWarehouse()); // 仓库 |
| | | waitPakin.setSupp(detlDto.getOrigin()); // 来源单号 |
| | | waitPakin.setSuppCode(detlDto.getOriginNo()); // 来源序号 |
| | | waitPakin.setStatus("Y"); // 状态 |
| | | waitPakin.setAppeUser(userId); |
| | | waitPakin.setAppeTime(now); |
| | | waitPakin.setModiUser(userId); |
| | | waitPakin.setModiTime(now); |
| | | waitPakin.setOwner(Optional.ofNullable(param.getOwner()).orElse("")); |
| | | if (!waitPakinService.save(waitPakin)) { |
| | | throw new CoolException("保存入库通知档失败"); |
| | | } |
| | |
| | | @Transactional |
| | | public R WarehouseIn(String locNo, String barcode,Long hostId) { |
| | | //判断库位状态 |
| | | LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, locNo).eq(LocMast::getHostId,hostId)); |
| | | 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("该库位不存在"); |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R WarehouseOut(CombParam combParam, Long hostId) { |
| | | //判断库位状态 |
| | | LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId)); |
| | | LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L)); |
| | | if (Cools.isEmpty(locMast)){ |
| | | return R.error("该库位不存在"); |
| | | } |
| | |
| | | if (combMat.getAnfme() > locDetl.getAnfme()){ |
| | | return R.error("下架数量错误,超出库存数量"); |
| | | } |
| | | if (!Cools.isEmpty(combParam.getOrderNo())){ |
| | | Order order = orderService.selectByNo(combParam.getOrderNo(), hostId); |
| | | if (Cools.isEmpty(order)){ |
| | | continue; |
| | | } |
| | | if (order.getSettle() == 1){ |
| | | orderService.updateSettle(order.getId(), 2L, 9527L, hostId); |
| | | } |
| | | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch(),hostId); |
| | | if (Cools.isEmpty(orderDetl)){ |
| | | continue; |
| | | } |
| | | if (orderDetl.getAnfme() < orderDetl.getWorkQty()+combMat.getAnfme()){ |
| | | throw new CoolException("下架数量出错"); |
| | | } |
| | | // 修改订单明细作业数量 |
| | | if (!orderDetlService.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) { |
| | | throw new CoolException("修改单据明细工作数量失败"); |
| | | } |
| | | // 修改订单明细完成数量 |
| | | if (!orderDetlService.increase(order.getId(), hostId, combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) { |
| | | throw new CoolException("修改单据明细完成数量失败"); |
| | | } |
| | | // 修改订单状态 作业中 ===>> 已完成 |
| | | orderService.checkComplete(combParam.getOrderNo(), hostId); |
| | | } |
| | | try { |
| | | //处理库存信息 |
| | | if (combMat.getAnfme().equals(locDetl.getAnfme())){ |
| | |
| | | }catch (Exception e){ |
| | | throw new CoolException("更新库存数据出错"+e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | if (!Cools.isEmpty(combParam.getOrderNo())){ |
| | | Order order = orderService.selectByNo(combParam.getOrderNo(), hostId); |
| | | |
| | | |
| | | |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R WarehouseOutV1(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,0L)); |
| | | if (Cools.isEmpty(locMast)){ |
| | | return R.error("该库位不存在"); |
| | | } |
| | | if (!locMast.getLocSts().equals("P")){ |
| | | return R.error("该库位状态为:"+locMast.getLocSts()+",不满足并板途中拣选条件!!!"); |
| | | } |
| | | //查询库存数据 |
| | | for (CombParam.CombMat combMat :combParam.getCombMats()){ |
| | | List<LocDetl> locDetlList = locDetlService.list(new LambdaQueryWrapper<LocDetl>() |
| | | .eq(LocDetl::getLocNo, combParam.getLocno()) |
| | | .eq(LocDetl::getHostId, hostId) |
| | | // .eq(LocDetl::getZpallet, combMat.getZpallet()) |
| | | .eq(LocDetl::getMatnr, combMat.getMatnr()) |
| | | // .eq(LocDetl::getBatch, combMat.getBatch()) |
| | | ); |
| | | if (locDetlList.isEmpty()){ |
| | | return R.error("未查询到库存数据"); |
| | | } |
| | | if (locDetlList.size()>1){ |
| | | return R.error("库存数据大于1条,为保证数据准确性,请用正常流程出库!!!"); |
| | | } |
| | | LocDetl locDetl = locDetlList.get(0); |
| | | if (combMat.getAnfme() > locDetl.getAnfme()){ |
| | | return R.error("拣选数量错误,超出库存数量"); |
| | | } |
| | | if (!Cools.isEmpty(combMat.getOrderNo())){ |
| | | Order order = orderService.selectByNo(combMat.getOrderNo(), hostId); |
| | | if (Cools.isEmpty(order)){ |
| | | continue; |
| | | } |
| | | if (order.getSettle() == 1){ |
| | | orderService.updateSettle(order.getId(), 2L, 9527L, hostId); |
| | | } |
| | | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch(),hostId); |
| | | if (Cools.isEmpty(orderDetl)){ |
| | | continue; |
| | | } |
| | | if (orderDetl.getWorkQty() < orderDetl.getWorkQty()+combMat.getAnfme()){ |
| | | throw new CoolException("下架数量出错"); |
| | | if (orderDetl.getAnfme() < (orderDetl.getWorkQty()+combMat.getAnfme())){ |
| | | throw new CoolException("拣选数量出错,订单剩余出库数量小于已出库数量与将拣选数量之和!!!"); |
| | | } |
| | | // 修改订单明细作业数量 |
| | | if (!orderDetlService.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) { |
| | | if (!orderDetlService.increaseWorkQtyByOrderNo(combMat.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), hostId)) { |
| | | throw new CoolException("修改单据明细工作数量失败"); |
| | | } |
| | | // 修改订单明细完成数量 |
| | |
| | | throw new CoolException("修改单据明细完成数量失败"); |
| | | } |
| | | // 修改订单状态 作业中 ===>> 已完成 |
| | | orderService.checkComplete(combParam.getOrderNo(), hostId); |
| | | orderService.checkComplete(combMat.getOrderNo(), hostId); |
| | | } |
| | | try { |
| | | //处理库存信息 |
| | | AdjDetl adjDetl = new AdjDetl(); |
| | | adjDetl.setLocNo(locDetl.getLocNo()); |
| | | adjDetl.setMatnr(locDetl.getMatnr()); |
| | | adjDetl.setBatch(locDetl.getBatch()); |
| | | adjDetl.setOriQty(locDetl.getAnfme()); |
| | | adjDetl.setMemo("WarehouseOutV1-pick"); |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeUser(userId); |
| | | adjDetl.setAppeTime(new Date()); |
| | | adjDetl.setModiTime(new Date()); |
| | | adjDetl.setOrderNo(combMat.getOrderNo()); |
| | | if (combMat.getAnfme().equals(locDetl.getAnfme())){ |
| | | adjDetl.setAdjQty(0D); |
| | | //库存相等删除数据 |
| | | locDetlService.removeById(locDetl); |
| | | int count = locDetlService.count(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo,combParam.getLocno()).eq(LocDetl::getHostId, hostId)); |
| | | if (count == 0){ |
| | | LocMast locMast1 = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId, hostId)); |
| | | // locMast1.setLocSts("O"); |
| | | // locMastService.updateById(locMast1); |
| | | } |
| | | } else { |
| | | BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme())); |
| | | locDetl.setAnfme(subtract.doubleValue()); |
| | | locDetlService.updateById(locDetl); |
| | | adjDetl.setAdjQty(subtract.doubleValue()); |
| | | } |
| | | |
| | | if (!adjDetlService.save(adjDetl)) { |
| | | throw new CoolException("保存库存调整记录失败"); |
| | | } |
| | | }catch (Exception e){ |
| | | throw new CoolException("更新库存数据出错"+e.getMessage()); |
| | | } |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId,Long userId) { |
| | | //判断库位状态 |
| | | LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, param.getLocNo()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,0L)); |
| | | if (Cools.isEmpty(locMast)){ |
| | | return R.error("该库位不存在"); |
| | | } |
| | | if (!locMast.getLocSts().equals("P")){ |
| | | return R.error("该库位状态为:"+locMast.getLocSts()+",不满足拣料途中并板条件!!!"); |
| | | } |
| | | |
| | | HashMap<String, OrderDetl> mapData = new HashMap<>(); |
| | | for (OrderDetl orderDetl : param.getCombMats()) { |
| | | String key = orderDetl.getMatnr(); |
| | | if (!Cools.isEmpty(orderDetl.getBatch())) { |
| | | key += "_" + orderDetl.getBatch(); |
| | | } |
| | | |
| | | OrderDetl value = mapData.get(key); |
| | | if(value == null){ |
| | | mapData.put(key, orderDetl); |
| | | }else { |
| | | value.setAnfme(value.getAnfme() + orderDetl.getAnfme()); |
| | | mapData.put(key, value); |
| | | } |
| | | } |
| | | |
| | | List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, locMast.getLocNo())); |
| | | |
| | | HashMap<String, PickMergeDto> locData = new HashMap<>(); |
| | | for (LocDetl locDetl : locDetls) { |
| | | String matKey = locDetl.getMatnr(); |
| | | if (!Cools.isEmpty(locDetl.getBatch())) { |
| | | matKey += "_" + locDetl.getBatch(); |
| | | } |
| | | |
| | | PickMergeDto dto = new PickMergeDto(); |
| | | dto.setOriginAnfme(locDetl.getAnfme()); |
| | | dto.setLocDetl(locDetl); |
| | | dto.setOrders(new ArrayList<>()); |
| | | locData.put(matKey, dto); |
| | | } |
| | | |
| | | for (Map.Entry<String, OrderDetl> entry : mapData.entrySet()) { |
| | | OrderDetl orderDetl = entry.getValue(); |
| | | LocDetl locDetl = new LocDetl(); |
| | | locDetl.sync(orderDetl); |
| | | locDetl.setId(null); |
| | | locDetl.setLocNo(param.getLocNo()); |
| | | locDetl.setBarcode(locMast.getBarcode()); |
| | | Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr,locDetl.getMatnr())); |
| | | locDetl.setHostId(hostId); |
| | | locDetl.setMaktx(mat.getMaktx()); |
| | | if(hostId==1){ |
| | | locDetl.setOwner("宁波仓"); |
| | | }else{ |
| | | locDetl.setOwner("新昌仓"); |
| | | } |
| | | |
| | | String matKey = locDetl.getMatnr(); |
| | | if (!Cools.isEmpty(locDetl.getBatch())) { |
| | | matKey += "_" + locDetl.getBatch(); |
| | | } |
| | | |
| | | PickMergeDto dto = locData.get(matKey); |
| | | if (dto == null) { |
| | | ArrayList<PickMergeOrderDto> orders = new ArrayList<>(); |
| | | orders.add(new PickMergeOrderDto(locDetl.getOrderNo(), locDetl.getAnfme())); |
| | | |
| | | dto = new PickMergeDto(); |
| | | dto.setOriginAnfme(locDetl.getAnfme()); |
| | | dto.setLocDetl(locDetl); |
| | | dto.setOrders(orders); |
| | | |
| | | locData.put(matKey, dto); |
| | | }else { |
| | | LocDetl detl = dto.getLocDetl(); |
| | | List<PickMergeOrderDto> orders = dto.getOrders(); |
| | | |
| | | detl.setAnfme(detl.getAnfme() + locDetl.getAnfme()); |
| | | orders.add(new PickMergeOrderDto(locDetl.getOrderNo(), locDetl.getAnfme())); |
| | | |
| | | dto.setLocDetl(detl); |
| | | dto.setOrders(orders); |
| | | |
| | | locData.put(matKey, dto); |
| | | } |
| | | } |
| | | |
| | | |
| | | for (Map.Entry<String, PickMergeDto> entry : locData.entrySet()) { |
| | | PickMergeDto dto = entry.getValue(); |
| | | |
| | | Double originAnfme = dto.getOriginAnfme(); |
| | | LocDetl locDetl = dto.getLocDetl(); |
| | | List<PickMergeOrderDto> orders = dto.getOrders(); |
| | | |
| | | if (locDetl.getId() == null) { |
| | | if (!locDetlService.save(locDetl)) { |
| | | throw new CoolException("并板库存插入失败"); |
| | | } |
| | | }else { |
| | | if (!locDetlService.updateById(locDetl)) { |
| | | throw new CoolException("并板库存更新失败"); |
| | | } |
| | | } |
| | | |
| | | if (!orders.isEmpty()){ |
| | | for (PickMergeOrderDto orderDto : orders) { |
| | | Order order = orderService.selectByNo(orderDto.getOrderNo(), hostId); |
| | | if (Cools.isEmpty(order)){ |
| | | continue; |
| | | } |
| | | if (order.getSettle() == 1){ |
| | | orderService.updateSettle(order.getId(), 2L, 9527L, hostId); |
| | | } |
| | | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), locDetl.getMatnr(), locDetl.getBatch(),hostId); |
| | | if (Cools.isEmpty(orderDetl)){ |
| | | continue; |
| | | } |
| | | if (orderDetl.getAnfme() < (orderDetl.getWorkQty() + orderDto.getAnfme())) { |
| | | throw new CoolException("并板数量出错,订单剩余出库数量小于已出库数量与将并板数量之和!!!"); |
| | | } |
| | | // 修改订单明细作业数量 |
| | | if (!orderDetlService.increaseWorkQtyByOrderNo(orderDto.getOrderNo(), locDetl.getMatnr(), locDetl.getBatch(), orderDto.getAnfme(), hostId)) { |
| | | throw new CoolException("修改单据明细工作数量失败"); |
| | | } |
| | | // 修改订单明细完成数量 |
| | | if (!orderDetlService.increase(order.getId(), hostId, locDetl.getMatnr(), locDetl.getBatch(), orderDto.getAnfme())) { |
| | | throw new CoolException("修改单据明细完成数量失败"); |
| | | } |
| | | // 修改订单状态 作业中 ===>> 已完成 |
| | | orderService.checkComplete(orderDto.getOrderNo(), hostId); |
| | | |
| | | try { |
| | | //处理库存信息 |
| | | AdjDetl adjDetl = new AdjDetl(); |
| | | adjDetl.setLocNo(locDetl.getLocNo()); |
| | | adjDetl.setMatnr(locDetl.getMatnr()); |
| | | adjDetl.setBatch(locDetl.getBatch()); |
| | | adjDetl.setOriQty(originAnfme); |
| | | adjDetl.setAdjQty(locDetl.getAnfme()); |
| | | adjDetl.setMemo("WarehouseOutV1-pick"); |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeUser(userId); |
| | | adjDetl.setAppeTime(new Date()); |
| | | adjDetl.setModiTime(new Date()); |
| | | adjDetl.setOrderNo(order.getOrderNo()); |
| | | if (!adjDetlService.save(adjDetl)) { |
| | | throw new CoolException("保存库存调整记录失败"); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | throw new CoolException("更新库存数据出错" + e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R WarehouseOutMergeBoardMany(WarehouseOutMergeBoardManyParam param, Long hostId,Long userId) { |
| | | WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode(), hostId); |
| | | if (wrkMast == null) { |
| | | throw new CoolException("工作档不存在"); |
| | | } |
| | | |
| | | if (wrkMast.getIoType() != 104) { |
| | | throw new CoolException("工作类型不属于并板出库"); |
| | | } |
| | | |
| | | if (wrkMast.getWrkSts() != 199) { |
| | | throw new CoolException("工作状态不满足多次并板入库状态"); |
| | | } |
| | | |
| | | List<WrkDetl> wrkDetls = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo())); |
| | | |
| | | HashMap<String, MergeBoardManyDto> wrkData = new HashMap<>(); |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | String matKey = wrkDetl.getMatnr(); |
| | | if (!Cools.isEmpty(wrkDetl.getBatch())) { |
| | | matKey += "_" + wrkDetl.getBatch() + "-" +wrkDetl.getOrderNo(); |
| | | } |
| | | |
| | | MergeBoardManyDto dto = new MergeBoardManyDto(); |
| | | dto.setOriginAnfme(wrkDetl.getAnfme()); |
| | | dto.setWrkDetl(wrkDetl); |
| | | dto.setOrders(new ArrayList<>()); |
| | | wrkData.put(matKey, dto); |
| | | } |
| | | |
| | | for (OrderDetl orderDetl : param.getCombMats()) { |
| | | String matKey = orderDetl.getMatnr(); |
| | | if (!Cools.isEmpty(orderDetl.getBatch())) { |
| | | matKey += "_" + orderDetl.getBatch() + "-" +orderDetl.getOrderNo(); |
| | | } |
| | | |
| | | MergeBoardManyDto dto = wrkData.get(matKey); |
| | | if(dto == null){ |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(orderDetl); |
| | | Mat mat=matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr,wrkDetl.getMatnr())); |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setId(null); |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setWrkMastId(wrkMast.getId()); |
| | | wrkDetl.setZpallet(wrkMast.getBarcode()); |
| | | wrkDetl.setIoTime(new Date()); |
| | | wrkDetl.setHostId(hostId); |
| | | wrkDetl.setAppeUser(userId); |
| | | wrkDetl.setAppeTime(new Date()); |
| | | wrkDetl.setModiUser(userId); |
| | | wrkDetl.setModiTime(new Date()); |
| | | ArrayList<PickMergeOrderDto> orderDtos = new ArrayList<>(); |
| | | orderDtos.add(new PickMergeOrderDto(orderDetl.getOrderNo(), orderDetl.getAnfme())); |
| | | |
| | | dto = new MergeBoardManyDto(); |
| | | dto.setOriginAnfme(orderDetl.getAnfme()); |
| | | dto.setWrkDetl(wrkDetl); |
| | | dto.setOrders(orderDtos); |
| | | }else { |
| | | WrkDetl wrkDetl = dto.getWrkDetl(); |
| | | List<PickMergeOrderDto> orders = dto.getOrders(); |
| | | |
| | | wrkDetl.setAnfme(wrkDetl.getAnfme() + orderDetl.getAnfme()); |
| | | wrkDetl.setIoTime(new Date()); |
| | | wrkDetl.setHostId(hostId); |
| | | wrkDetl.setModiUser(userId); |
| | | wrkDetl.setModiTime(new Date()); |
| | | orders.add(new PickMergeOrderDto(orderDetl.getOrderNo(), orderDetl.getAnfme())); |
| | | dto.setWrkDetl(wrkDetl); |
| | | dto.setOrders(orders); |
| | | } |
| | | |
| | | wrkData.put(matKey, dto); |
| | | } |
| | | |
| | | for (Map.Entry<String, MergeBoardManyDto> entry : wrkData.entrySet()) { |
| | | MergeBoardManyDto dto = entry.getValue(); |
| | | List<PickMergeOrderDto> orders = dto.getOrders(); |
| | | WrkDetl wrkDetl = dto.getWrkDetl(); |
| | | |
| | | if (wrkDetl.getId() == null) { |
| | | if (!wrkDetlService.save(wrkDetl)) { |
| | | throw new CoolException("多次并板插入工作明细失败"); |
| | | } |
| | | }else { |
| | | if (!wrkDetlService.updateById(wrkDetl)) { |
| | | throw new CoolException("多次并板更新工作明细失败"); |
| | | } |
| | | } |
| | | |
| | | if (!orders.isEmpty()){ |
| | | for (PickMergeOrderDto orderDto : orders) { |
| | | Order order = orderService.selectByNo(orderDto.getOrderNo(), hostId); |
| | | if (Cools.isEmpty(order)){ |
| | | continue; |
| | | } |
| | | if (order.getSettle() == 1){ |
| | | orderService.updateSettle(order.getId(), 2L, 9527L, hostId); |
| | | } |
| | | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), wrkDetl.getMatnr(), wrkDetl.getBatch(),hostId); |
| | | if (Cools.isEmpty(orderDetl)){ |
| | | continue; |
| | | } |
| | | if (orderDetl.getAnfme() < (orderDetl.getWorkQty() + orderDto.getAnfme())) { |
| | | throw new CoolException("拣选数量出错,订单剩余出库数量小于已出库数量与将拣选数量之和!!!"); |
| | | } |
| | | // 修改订单明细作业数量 |
| | | if (!orderDetlService.increaseWorkQtyByOrderNo(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme(), hostId)) { |
| | | throw new CoolException("修改单据明细工作数量失败"); |
| | | } |
| | | // 修改订单明细完成数量 |
| | | if (!orderDetlService.increase(order.getId(), hostId, wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) { |
| | | throw new CoolException("修改单据明细完成数量失败"); |
| | | } |
| | | // 修改订单状态 作业中 ===>> 已完成 |
| | | orderService.checkComplete(orderDto.getOrderNo(), hostId); |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |