| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.core.common.*; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.CombParam; |
| | |
| | | throw new CoolException(BaseRes.PARAM); |
| | | } |
| | | // 判断是否有相同条码的数据 |
| | | // if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). |
| | | // eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { |
| | | // throw new CoolException(param.getBarcode() + "数据正在进行入库"); |
| | | // } |
| | | if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). |
| | | eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { |
| | | throw new CoolException(param.getBarcode() + "数据正在进行入库"); |
| | | eq("zpallet", param.getBarcode())) > 0) { |
| | | throw new CoolException(param.getBarcode() + "组托数据已存在"); |
| | | } |
| | | |
| | | // todo: 不下线重新入库 |
| | |
| | | } |
| | | } |
| | | |
| | | int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); |
| | | int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); |
| | | // int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()) |
| | | // .last(" wrk_no IN ( SELECT wrk_no FROM asr_wrk_mast WHERE wrk_sts != 15 )")); |
| | | if (wrkMast != null && wrkMast.getWrkSts()==18) countWrk = 0; |
| | | if (countLoc > 0 || countWrk > 0) { |
| | | throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode()); |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | Integer matType = 0; |
| | | |
| | | // 无单组托 |
| | | if (Cools.isEmpty(param.getOrderNo())) { |
| | |
| | | // 生成入库通知档 |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | param.getCombMats().forEach(elem -> { |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getMemo(), elem.getCstmr()); |
| | | // elem.setBatch(""); |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getMemo(), elem.getCstmr(),elem.getOwner()); |
| | | |
| | | if (Cools.isEmpty(detlDto.getBatch())){ |
| | | String batch = DateUtils.convert(new Date(),DateUtils.yyyyMMdd); |
| | | detlDto.setBatch(batch); |
| | | } |
| | | |
| | | if (Cools.isEmpty(detlDto.getOwner())){ |
| | | detlDto.setOwner(1L); |
| | | } |
| | | |
| | | if (DetlDto.has(detlDtos, detlDto)) { |
| | |
| | | } |
| | | WaitPakin waitPakin = new WaitPakin(); |
| | | waitPakin.sync(mat); |
| | | // waitPakin.setBatch(""); |
| | | waitPakin.setBatch(detlDto.getBatch()); |
| | | waitPakin.setZpallet(param.getBarcode()); // 托盘码 |
| | | waitPakin.setIoStatus("N"); // 入出状态 |
| | |
| | | waitPakin.setAppeTime(now); |
| | | waitPakin.setModiUser(userId); |
| | | waitPakin.setModiTime(now); |
| | | waitPakin.setOwner(detlDto.getOwner()); |
| | | waitPakin.setMemo(detlDto.getMemo()); |
| | | waitPakin.setFrozen(param.getFrozen()); // 是否冻结 |
| | | waitPakin.setManu(detlDto.getCstmr()); |
| | | waitPakin.setMatType(mat.getMatType());//物料类型 |
| | | waitPakin.setMatTypeIn(param.getMatTypeIn());//强制物料类型 |
| | | if (Cools.isEmpty(mat.getMatType())){ |
| | | throw new CoolException("物料类型异常"+mat.getMatnr()); |
| | | }else { |
| | | if (matType == 0){ |
| | | matType = mat.getMatType(); |
| | | }else if (!matType.equals(mat.getMatType())){ |
| | | throw new CoolException("请组托同一类型的物料"); |
| | | } |
| | | } |
| | | if (!waitPakinService.insert(waitPakin)) { |
| | | throw new CoolException("保存入库通知档失败"); |
| | | } |
| | |
| | | // 生成入库通知档 |
| | | List<DetlDto> detlDtos = new ArrayList<>(); |
| | | param.getCombMats().forEach(elem -> { |
| | | |
| | | //elem.setBatch(""); |
| | | // 订单明细数量校验 |
| | | OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); |
| | | if (elem.getAnfme() > orderDetl.getEnableQty()) { |
| | |
| | | throw new CoolException("修改单据明细数量失败"); |
| | | } |
| | | |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); |
| | | DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),elem.getOwner()); |
| | | |
| | | if (Cools.isEmpty(detlDto.getOwner())){ |
| | | detlDto.setOwner(1L); |
| | | } |
| | | |
| | | if (DetlDto.has(detlDtos, detlDto)) { |
| | | DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); |
| | | assert one != null; |
| | |
| | | WaitPakin waitPakin = new WaitPakin(); |
| | | waitPakin.sync(mat); |
| | | waitPakin.setOrderNo(order.getOrderNo()); // 单据编号 |
| | | waitPakin.setBatch(detlDto.getBatch()); // 序列码 |
| | | //waitPakin.setBatch(""); // 序列码 |
| | | waitPakin.setZpallet(param.getBarcode()); // 托盘码 |
| | | waitPakin.setIoStatus("N"); // 入出状态 |
| | | waitPakin.setAnfme(detlDto.getAnfme()); // 数量 |
| | |
| | | waitPakin.setAppeTime(now); |
| | | waitPakin.setModiUser(userId); |
| | | waitPakin.setModiTime(now); |
| | | waitPakin.setOwner(detlDto.getOwner()); |
| | | waitPakin.setMatType(mat.getMatType());//物料类型 |
| | | waitPakin.setMatTypeIn(param.getMatTypeIn()); //强制物料类型 |
| | | // if (Cools.isEmpty(mat.getMatType())){ |
| | | // throw new CoolException("物料类型异常"+mat.getMatnr()); |
| | | // }else { |
| | | // if (matType == 0){ |
| | | // matType = mat.getMatType(); |
| | | // }else if (matType!=mat.getMatType()){ |
| | | // throw new CoolException("请组托同一类型的物料"); |
| | | // } |
| | | // } |
| | | if (!waitPakinService.insert(waitPakin)) { |
| | | throw new CoolException("保存入库通知档失败"); |
| | | } |
| | |
| | | } |
| | | @Override |
| | | @Transactional |
| | | public void adjustNew(MobileAdjustParam param, Long userId) { |
| | | public void adjustNew(MobileAdjustParam param, Boolean re, Long userId) { |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode())); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | throw new CoolException("托盘码:"+param.getBarcode()+" 无有效工作档"); |
| | |
| | | checkRecord.setConfirmQty(wrkDetl.getAnfme()); |
| | | if (Cools.isEmpty(wrkDetlOld)){ |
| | | wrkDetl.setWrkNo(wrkMast.getWrkNo()); |
| | | wrkDetl.setZpallet(wrkMast.getBarcode()); |
| | | wrkDetlService.insert(wrkDetl); |
| | | recordRecordLog=recordRecordLog+"\n"+"新增一条明细:"+"\t商品编号:"+wrkDetl.getMatnr()+"\t批号:"+wrkDetl.getBatch()+"\t数量:"+wrkDetl.getAnfme(); |
| | | adjDetl.setOriQty(0.0); |
| | | adjDetlService.insert(adjDetl); |
| | | checkRecord.setAnfme(0.0); |
| | | checkRecordService.insert(checkRecord); |
| | | if (!re) { |
| | | checkRecordService.insert(checkRecord); |
| | | } |
| | | }else if (wrkDetlOld.getAnfme()!=wrkDetl.getAnfme()){ |
| | | wrkDetlService.updateAnfme(wrkDetl.getAnfme(),wrkMast.getWrkNo(),wrkDetl.getMatnr(),wrkDetl.getBatch()); |
| | | recordRecordLog=recordRecordLog+"\n"+"更新一条明细:"+"\t商品编号:"+wrkDetl.getMatnr()+"\t批号:"+wrkDetl.getBatch()+"\t原数量:"+wrkDetlOld.getAnfme()+"\t新数量:"+wrkDetl.getAnfme(); |
| | |
| | | adjDetlService.insert(adjDetl); |
| | | |
| | | checkRecord.setAnfme(wrkDetlOld.getAnfme()); |
| | | checkRecordService.insert(checkRecord); |
| | | if (!re) { |
| | | checkRecordService.insert(checkRecord); |
| | | } |
| | | }else if (wrkDetlOld.getAnfme()==wrkDetl.getAnfme()){ |
| | | recordRecordLog=recordRecordLog+"\n"+"一条明细保持不变:"+"\t商品编号:"+wrkDetl.getMatnr()+"\t批号:"+wrkDetl.getBatch()+"\t数量:"+wrkDetlOld.getAnfme(); |
| | | continue; |
| | |
| | | waitPakin.setAppeTime(now); |
| | | waitPakin.setModiUser(userId); |
| | | waitPakin.setModiTime(now); |
| | | waitPakin.setMatType(mat.getMatType());//物料类型 |
| | | if (!waitPakinService.insert(waitPakin)) { |
| | | throw new CoolException("保存入库通知档失败"); |
| | | } |
| | |
| | | public void pikingToFull(String barcode) { |
| | | wrkMastService.selectByBarcode(barcode); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public List<WrkDetl> pikingToFull2(Integer wrkNo) { |
| | | List<WrkDetl> wrkDetlsNew= new ArrayList<WrkDetl>(); |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkNo); |
| | | for (WrkDetl wrkDetl:wrkDetls){ |
| | | String[] orderNos = GetOrderNo(wrkDetl.getOrderNo()); |
| | | if (!Cools.isEmpty(orderNos) && orderNos.length!=0) { |
| | | Double anfme = wrkDetl.getAnfme(); |
| | | for (String orderNo : orderNos) { |
| | | OrderDetl orderDetl = orderDetlService.selectItem(orderNo, wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | if (orderDetl == null) { |
| | | orderDetl = orderDetlService.selectItem(orderNo, wrkDetl.getMatnr(), null); |
| | | if (orderDetl == null) { |
| | | log.error("ww"); |
| | | return wrkDetlsNew; |
| | | } |
| | | } |
| | | if (orderDetl.getAnfme() <= anfme) { |
| | | WrkDetl wrkDetl1 = new WrkDetl(); |
| | | wrkDetl1.sync(wrkDetl); |
| | | wrkDetl1.setOrderNo(orderNo); |
| | | wrkDetl1.setAnfme(anfme); |
| | | wrkDetlsNew.add(wrkDetl1); |
| | | anfme = anfme - orderDetl.getAnfme(); |
| | | } else { |
| | | WrkDetl wrkDetl1 = new WrkDetl(); |
| | | wrkDetl1.sync(wrkDetl); |
| | | wrkDetl1.setOrderNo(orderNo); |
| | | wrkDetl1.setAnfme(anfme); |
| | | wrkDetlsNew.add(wrkDetl1); |
| | | } |
| | | } |
| | | }else { |
| | | wrkDetlsNew.add(wrkDetl); |
| | | } |
| | | } |
| | | return wrkDetlsNew; |
| | | } |
| | | |
| | | private static String[] GetOrderNo(String orderNo) { |
| | | String[] s3 = orderNo.split("\""); |
| | | String[] s = new String[(s3.length - 1) / 6]; |
| | | if (!Cools.isEmpty(s3)){ |
| | | int i = 0; |
| | | int j = 0; |
| | | for (String ss : s3) { |
| | | if (ss.equals("orderNo")) { |
| | | s[i] = s3[j + 2]; |
| | | i++; |
| | | } |
| | | j++; |
| | | } |
| | | }else { |
| | | s=null; |
| | | } |
| | | return s; |
| | | } |
| | | |
| | | private String[] GetAnfme(String orderNo) { |
| | | String[] s3 = orderNo.split("\""); |
| | | String[] s = new String[(s3.length - 1) / 6]; |
| | | int i = 0; |
| | | int j = 0; |
| | | for (String ss : s3) { |
| | | if (ss.equals("anfme")) { |
| | | String[] s4 = s3[j + 1].split(":"); |
| | | String[] s5 = s4[1].split("\\."); |
| | | s[i] = s5[0]; |
| | | i++; |
| | | } |
| | | j++; |
| | | } |
| | | return s; |
| | | } |
| | | } |