| | |
| | | private SlaveProperties slaveProperties; |
| | | @Autowired |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private OrderDetl1ServiceImpl orderDetl1Service; |
| | | @Autowired |
| | | private Order1ServiceImpl order1Service; |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | throw new CoolException(taskDto.getLocNo() + "库位不是在库状态"); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void stockOutCheckAnfme(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo) { |
| | | Date now = new Date(); |
| | | List<LocDto> locDtos = taskDto.getLocDtos(); |
| | | for (LocDto locDto : locDtos) { |
| | | if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) { |
| | | throw new CoolException("订单出库异常,请联系管理员"); |
| | | } |
| | | } |
| | | // 获取库位 |
| | | LocMast locMast = locMastService.selectById(taskDto.getLocNo()); |
| | | String orderNo = ""; |
| | | int i = 0; |
| | | for (LocDto locDto : taskDto.getLocDtos()) { |
| | | if (i++ == 0) { |
| | | orderNo = locDto.getOrderNo(); |
| | | } else if (!orderNo.equals(locDto.getOrderNo())) { |
| | | throw new CoolException("出库订单不一致无法出库"); |
| | | } |
| | | |
| | | if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) { |
| | | continue; |
| | | } |
| | | OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); |
| | | if (orderDetl == null) { |
| | | orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); |
| | | } |
| | | // if (orderDetl.getAnfme() - orderDetl.getWorkQty() == 0) { |
| | | // return; |
| | | // } |
| | | |
| | | } |
| | | |
| | | // 获取路径 |
| | | int ioType = taskDto.isAll() ? 101 : 103; |
| | | Integer outSta = 0; |
| | | if (locMast.getCrnNo() == 1) { |
| | | outSta = 106; |
| | | } else if (locMast.getCrnNo() == 2) { |
| | | outSta = 104; |
| | | } else if (locMast.getCrnNo() == 3) { |
| | | outSta = 102; |
| | | } |
| | | |
| | | StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), outSta); |
| | | // 生成工作号 |
| | | int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID |
| | | wrkMast.setIoType(ioType); // 入出库状态 |
| | | wrkMast.setIoPri(13D); // 优先级:13 |
| | | wrkMast.setCrnNo(locMast.getCrnNo()); |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 |
| | | wrkMast.setSourceLocNo(taskDto.getLocNo()); // 源库位 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setLinkMis("N"); |
| | | wrkMast.setBarcode(locMast.getBarcode()); |
| | | wrkMast.setAppeUser(user.getId()); // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiUser(user.getId()); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo); |
| | | if (!wrkMastService.insert(wrkMast)) { |
| | | throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo()); |
| | | } |
| | | Order order = orderService.selectByNo(orderNo); |
| | | if (Cools.isEmpty(order.getAccountDay())) { |
| | | order.setAccountDay(1); |
| | | } else { |
| | | order.setAccountDay(order.getAccountDay() + 1); |
| | | } |
| | | orderNo = order.getOrderNo() + "-" + order.getAccountDay(); |
| | | Order1 order2 = order1Service.selectByNo(orderNo); |
| | | if (Cools.isEmpty(order2)) { |
| | | //创建子表表头 |
| | | Order1 order1 = new Order1(); |
| | | order1.sync(order); |
| | | order1.setOrderNo(orderNo); |
| | | order1.setCreateBy(user.getId()); |
| | | order1.setCreateTime(now); |
| | | order1.setUpdateTime(new Date()); |
| | | order1.setSettle(2L); |
| | | order1Service.insert(order1); |
| | | } |
| | | // 生成工作档明细 |
| | | for (LocDto locDto : taskDto.getLocDtos()) { |
| | | |
| | | if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) { |
| | | continue; |
| | | } |
| | | OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); |
| | | if (orderDetl == null) { |
| | | orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); |
| | | } |
| | | Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDto.getMatnr())); |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(orderDetl); |
| | | wrkDetl.setZpallet(wrkMast.getBarcode()); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setWrkNo(workNo); |
| | | wrkDetl.setBatch(locDto.getBatch()); |
| | | wrkDetl.setOrderNo(orderNo); |
| | | wrkDetl.setModel(mat.getModel()); |
| | | wrkDetl.setAnfme(locDto.getAnfme()); // 数量 |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setAppeUser(user.getId()); |
| | | wrkDetl.setModiTime(now); |
| | | wrkDetl.setModiUser(user.getId()); |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作档明细失败"); |
| | | } |
| | | // 修改订单明细 |
| | | if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), wrkDetl.getAnfme(), user.getEmail())) { |
| | | throw new CoolException("修改订单明细数量失败"); |
| | | } |
| | | |
| | | //生成出货单 |
| | | OrderDetl1 orderDetl1 = new OrderDetl1(); |
| | | orderDetl1.sync(wrkDetl); |
| | | orderDetl1.setOrderId(order2.getId()); |
| | | orderDetl1.setWorkQty(wrkDetl.getAnfme()); |
| | | orderDetl1.setStatus(1); |
| | | orderDetl1.setCreateBy(user.getId()); |
| | | orderDetl1.setUpdateBy(user.getId()); |
| | | orderDetl1.setCreateTime(new Date()); |
| | | orderDetl1.setUpdateTime(new Date()); |
| | | orderDetl1Service.insert(orderDetl1); |
| | | orderService.updateSettle(orderDetl.getOrderId(), 2L, user.getId()); |
| | | } |
| | | // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 |
| | | locMast = locMastService.selectById(taskDto.getLocNo()); |
| | | if (locMast.getLocSts().equals("F")) { |
| | | locMast.setLocSts(ioType == 101 ? "R" : "P"); |
| | | locMast.setModiUser(user.getId()); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("预约库位状态失败,库位号:" + taskDto.getLocNo()); |
| | | } |
| | | } else { |
| | | throw new CoolException(taskDto.getLocNo() + "库位不是在库状态"); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); |
| | | for (WrkDetl wrkDetl : wrkDetls) { |
| | | //字符串不为空 |
| | | String orderNo = wrkDetl.getOrderNo().split("-")[0]; |
| | | if (!Cools.isEmpty(wrkDetl.getOrderNo())) { |
| | | if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { |
| | | if (!orderDetlService.decrease(orderNo, wrkDetl.getMatnr(), null, wrkDetl.getAnfme())) { |
| | | throw new CoolException("订单数据回滚失败"); |
| | | } |
| | | |
| | | //修改订单主表状态,没有作业数量时才可以修改 |
| | | boolean flag = true; |
| | | List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", wrkDetl.getOrderNo())); |
| | | List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo)); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | if (orderDetl.getWorkQty() > 0) { |
| | | flag = false; |
| | | } |
| | | } |
| | | if (flag) { |
| | | Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", wrkDetl.getOrderNo())); |
| | | Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo)); |
| | | if (!Cools.isEmpty(order) && order.getSettle() == 2) { |
| | | order.setSettle(1L); |
| | | order.setUpdateBy(userId); |
| | | order.setUpdateTime(now); |
| | | } |
| | | if (!orderService.update(order, new EntityWrapper<Order>().eq("order_no", wrkDetl.getOrderNo()))) { |
| | | if (!orderService.update(order, new EntityWrapper<Order>().eq("order_no", orderNo))) { |
| | | throw new CoolException("修改订单状态失败"); |
| | | } |
| | | } |
| | | |
| | | //对子表进行删减 |
| | | if (Cools.isEmpty(wrkDetl.getBatch())) { |
| | | orderDetl1Service.delete(new EntityWrapper<OrderDetl1>().eq("order_no", wrkDetl.getOrderNo()).eq("matnr", wrkDetl.getMatnr())); |
| | | } else { |
| | | orderDetl1Service.delete(new EntityWrapper<OrderDetl1>().eq("order_no", wrkDetl.getOrderNo()).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | } |
| | | int orderNo1 = orderDetl1Service.selectCount(new EntityWrapper<OrderDetl1>().eq("order_no", wrkDetl.getOrderNo())); |
| | | if (orderNo1 == 0) { |
| | | order1Service.delete(new EntityWrapper<Order1>().eq("order_no", wrkDetl.getOrderNo())); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |