| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 移动端服务核心类 |
| | |
| | | if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { |
| | | throw new CoolException(BaseRes.PARAM); |
| | | } |
| | | if(param.getCombMats().size()>1){ |
| | | throw new CoolException("请提取一个商品,或者刷新重新组托!"); |
| | | } |
| | | // 判断是否有相同条码的数据 |
| | | if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). |
| | | eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { |
| | | throw new CoolException(param.getBarcode() + "数据正在进行入库"); |
| | | } |
| | | |
| | | if(param.getBarcode().length()!=8){ |
| | | throw new CoolException("条码长度不是8位===>>" + param.getBarcode()); |
| | | } |
| | | if (param.getCombMats().size()>1){ |
| | | throw new CoolException("不允许混料===>>" + param.getBarcode()); |
| | | } |
| | | |
| | | int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); |
| | | int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); |
| | | if (countLoc > 0 || countWrk > 0) { |
| | | throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode()); |
| | | int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getBarcode())); |
| | | if (countLoc > 0 || countWrk > 0 || countwait > 0) { |
| | | throw new CoolException("组托档/工作档/库存条码数据已存在===>>" + param.getBarcode()); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | |
| | | // 关联组托 |
| | | } else { |
| | | Order order = orderService.selectByNo(param.getOrderNo()); |
| | | if (order.getSettle() > 2) { |
| | | if (Cools.isEmpty(order) || order.getSettle() > 2) { |
| | | throw new CoolException("单据编号已过期"); |
| | | } |
| | | // 生成入库通知档 |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | param.getCombMats().forEach(elem -> { |
| | | |
| | | for (CombParam.CombMat elem : param.getCombMats()) { |
| | | |
| | | |
| | | // param.getCombMats().forEach(elem -> { |
| | | |
| | | // 订单明细数量校验 |
| | | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); |
| | | if (Cools.isEmpty(orderDetl)) { |
| | | throw new CoolException("该单据中未找到对应物料明细"); |
| | | } |
| | | if (elem.getAnfme() > orderDetl.getEnableQty()) { |
| | | throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); |
| | | } |
| | |
| | | throw new CoolException("修改单据作业数量失败"); |
| | | } |
| | | |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getManu()); |
| | | if (DetlDto.has(detlDtos, detlDto)) { |
| | | DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); |
| | | assert one != null; |
| | |
| | | } else { |
| | | detlDtos.add(detlDto); |
| | | } |
| | | }); |
| | | // }); |
| | | } |
| | | for (DetlDto detlDto : detlDtos) { |
| | | Mat mat = matService.selectByMatnr(detlDto.getMatnr()); |
| | | if (Cools.isEmpty(mat)) { |
| | |
| | | waitPakin.setAppeTime(now); |
| | | waitPakin.setModiUser(userId); |
| | | waitPakin.setModiTime(now); |
| | | waitPakin.setManu(detlDto.getMark()); |
| | | if (!waitPakinService.insert(waitPakin)) { |
| | | throw new CoolException("保存入库通知档失败"); |
| | | } |
| | |
| | | String orderNo = "PACK" + snowflakeIdWorker.nextId(); |
| | | OpenOrderPakinParam openParam = new OpenOrderPakinParam(); |
| | | openParam.setOrderNo(orderNo); |
| | | openParam.setOrderTime(DateUtils.convert(now)); |
| | | openParam.setInboundDate(DateUtils.convert(now)); |
| | | openParam.setOrderType("打包入库单"); |
| | | openParam.setOrderDetails(detlDtos); |
| | | openService.pakinOrderCreate(openParam); |
| | |
| | | } |
| | | |
| | | @Override |
| | | // @Transactional |
| | | public void leftoversOut(Map<String, Object> map,Long userId) { |
| | | String barcode = map.get("barcode").toString(); |
| | | String barcode2 = map.get("barcode2").toString(); |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode).eq("io_type", 103)); |
| | | if (Cools.isEmpty(wrkMast)) { |
| | | throw new CoolException("未查询到拣料任务"); |
| | | } |
| | | int workNo = commonService.getWorkNo(1); |
| | | WrkMast wrkMast2 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode2).eq("io_type", 200)); |
| | | if (Cools.isEmpty(wrkMast2)) { |
| | | Date now = new Date(); |
| | | |
| | | WrkMast wrkMast1 = new WrkMast(); |
| | | wrkMast1.sync(wrkMast); |
| | | wrkMast1.setWrkNo(workNo); |
| | | wrkMast1.setWrkSts(2L); |
| | | wrkMast1.setIoType(200); |
| | | wrkMast1.setSourceStaNo(wrkMast.getStaNo() == 113 ? 111 : 117); |
| | | wrkMast1.setStaNo(wrkMast.getStaNo() == 113 ? 204 : 304); |
| | | wrkMast1.setIoTime(now); |
| | | wrkMast1.setIoPri(13D); // 优先级:13 |
| | | wrkMast1.setCrnNo(wrkMast.getCrnNo()); |
| | | wrkMast1.setSourceLocNo(wrkMast.getLocNo()); // 源库位 |
| | | wrkMast1.setFullPlt("Y"); // 满板:Y |
| | | wrkMast1.setPicking("N"); // 拣料 |
| | | wrkMast1.setExitMk("N"); // 退出 |
| | | wrkMast1.setEmptyMk("N"); // 空板 |
| | | wrkMast1.setLinkMis("N"); |
| | | wrkMast1.setAppeUser(userId); // 操作人员数据 |
| | | wrkMast1.setAppeTime(now); |
| | | wrkMast1.setModiUser(userId); |
| | | wrkMast1.setModiTime(now); |
| | | wrkMast1.setBarcode(barcode2); |
| | | if (!wrkMastService.insert(wrkMast1)) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | } |
| | | |
| | | |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("zpallet", map.get("barcode"))); |
| | | if (Cools.isEmpty(wrkDetls)) { |
| | | throw new CoolException("未查询到拣料任务明细"); |
| | | } |
| | | |
| | | for(WrkDetl wrkDetl : wrkDetls){ |
| | | WrkDetl wrkDetl1 = new WrkDetl(); |
| | | wrkDetl1.sync(wrkDetl); |
| | | wrkDetl1.setWrkNo(workNo); |
| | | wrkDetlService.insert(wrkDetl1); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl, |
| | | Double curOutQty, Integer ioType, Long userId, Date now) { |