| | |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.CombParam; |
| | | import com.zy.asrs.entity.param.MobileAdjustParam; |
| | | import com.zy.asrs.entity.param.PickParam; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.model.DetlDto; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | private AgvWrkMastService agvWrkMastService; |
| | | @Autowired |
| | | private AgvWorkService agvWorkService; |
| | | @Autowired |
| | | private AgvWrkDetlService agvWrkDetlService; |
| | | |
| | | |
| | | /* |
| | |
| | | } |
| | | param.setContainerType(Short.valueOf(param.getBarcode().substring(0,2))); |
| | | |
| | | //检查是否已存在相同的托盘条码,存在则抛出异常 |
| | | if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) { |
| | | throw new CoolException(param.getBarcode() + "料想码已存在AGV入库通知档中"); |
| | | } |
| | | // //检查是否已存在相同的托盘条码,存在则抛出异常 |
| | | // if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) { |
| | | // throw new CoolException(param.getBarcode() + "料想码已存在AGV入库通知档中"); |
| | | // } |
| | | |
| | | //检查库存是否有相同料箱,存在则抛出异常 |
| | | if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){ |
| | |
| | | } |
| | | |
| | | /* |
| | | 组托 + 绑定暂存位 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public String pickAgain(PickParam pickParams, Long userId) { |
| | | Date now = new Date(); |
| | | List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", pickParams.getLocNo())); |
| | | |
| | | for (PickParam.Pick pick : pickParams.getPicks()) { |
| | | if (pick.getCount().equals(0D)) continue; |
| | | AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode())); |
| | | if (Cools.isEmpty(agvWrkDetl)) { |
| | | AgvWrkDetl wrkDetl = new AgvWrkDetl(); |
| | | Mat mat = matService.selectByMatnr(pick.getMatnr()); |
| | | if (Cools.isEmpty(mat)) { |
| | | throw new CoolException(pick.getMatnr() + "商品不存在"); |
| | | } |
| | | wrkDetl.sync(mat); |
| | | wrkDetl.setWrkNo(pickParams.getWrkNo()); |
| | | wrkDetl.setOrderNo(pick.getOrderNo()); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setAnfme(pick.getCount()); // 数量 |
| | | wrkDetl.setSuppCode(pick.getSuppCode()); // 托盘条码 |
| | | wrkDetl.setAppeUser(userId); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setModiUser(userId); |
| | | wrkDetl.setModiTime(now); |
| | | wrkDetl.setThreeCode(pick.getThreeCode()); |
| | | agvWrkDetlService.insert(wrkDetl); |
| | | } else { |
| | | Double anfme = agvWrkDetl.getAnfme() + pick.getCount(); |
| | | agvWrkDetl.setAnfme(anfme); |
| | | agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode())); |
| | | |
| | | } |
| | | |
| | | |
| | | // 更新订单 |
| | | OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode())); |
| | | orderDetl.setQty(orderDetl.getQty() + pick.getCount()); |
| | | if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode()))){ |
| | | throw new CoolException("修改订单明细失败,请联系管理员"+pick.getOrderNo()+pick.getMatnr()); |
| | | } |
| | | } |
| | | // 确认是否全部出库 |
| | | int sameNumber = 0; |
| | | List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", pickParams.getWrkNo())); |
| | | for (AgvLocDetl agvLocDetl : agvLocDetls) { |
| | | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { |
| | | if (agvLocDetl.getMatnr().equals(agvWrkDetl.getMatnr()) |
| | | && agvLocDetl.getThreeCode().equals(agvWrkDetl.getThreeCode()) |
| | | && agvLocDetl.getSuppCode().equals(agvWrkDetl.getSuppCode()) |
| | | && agvLocDetl.getAnfme().equals(agvWrkDetl.getAnfme())) { |
| | | sameNumber++; |
| | | } |
| | | } |
| | | } |
| | | if (agvLocDetls.size() == sameNumber) { |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); |
| | | agvWrkMast.setIoType(101); |
| | | agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); |
| | | } |
| | | |
| | | |
| | | return "组托成功,绑定站点成功"; |
| | | } |
| | | |
| | | /* |
| | | AGV无单组托 |
| | | */ |
| | | private void NoOrderComb(CombParam param, Long userId){ |
| | |
| | | syncWaitPakin(detlDto,"",param.getBarcode(),userId,now); |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | /* |
| | | AGV有单组托 |
| | |
| | | DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode(),param.getLocType()); |
| | | //同一托盘下相同物料信息和批号转为一个入库通知档 |
| | | if (DetlDto.has(detlDtos, detlDto)) { |
| | | DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),null); |
| | | DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),detlDto.getContainerCode()); |
| | | assert one != null; |
| | | one.setAnfme(one.getAnfme() + detlDto.getAnfme()); |
| | | } else { |
| | |
| | | @Override |
| | | public void combBinding(String barcode, String stationCode, Short containerType) { |
| | | |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", stationCode)); |
| | | |
| | | if(Cools.eq(agvBasDevp.getBarcode(),barcode)){ |
| | | return; |
| | | } |
| | | |
| | | if(Cools.isEmpty(agvWaitPakinService.selectByContainerCode(barcode))){ |
| | | throw new CoolException("该料箱未组托,无法绑定站点"); |
| | | } |
| | | |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode)); |
| | | AgvBasDevp agvBasDevp1 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode)); |
| | | |
| | | if(!Cools.isEmpty(agvBasDevp)){ |
| | | if(!Cools.isEmpty(agvBasDevp1)){ |
| | | throw new CoolException(barcode + "已经绑定在"+ agvBasDevp.getDevNo() +"站点"); |
| | | } |
| | | |
| | | agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode)); |
| | | if(agvBasDevp == null){ |
| | | throw new CoolException(stationCode + "站点信息错误"); |
| | | } |