| | |
| | | agvLocDetl.setLocNo(locNo); |
| | | this.insert(agvLocDetl); |
| | | // 流水 -- 新增订单明细 |
| | | OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode()); |
| | | OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode()); |
| | | // FlowLog flowLog = new FlowLog(); |
| | | // flowLog.setFid(String.valueOf(flowId)); |
| | | // flowLog.setSpare2(String.valueOf(taskCode)); |
| | |
| | | |
| | | } |
| | | |
| | | public double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq,String type) { |
| | | public double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq, String type) { |
| | | //根据物料号和批次找到对应的库存,并且按照修改时间排序 |
| | | Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).orderBy("modi_time"); |
| | | if (type != null) { |
| | | wrapper.notLike("loc_no", "F1"); |
| | | } |
| | | wapperSetCondition(wrapper,"batch",batch); |
| | | wapperSetCondition(wrapper,"three_code",csocode); |
| | | wapperSetCondition(wrapper,"dead_time",isoseq); |
| | | wapperSetCondition(wrapper, "batch", batch); |
| | | wapperSetCondition(wrapper, "three_code", csocode); |
| | | wapperSetCondition(wrapper, "dead_time", isoseq); |
| | | |
| | | if ("JG".equals(orderNo.substring(0,2))) { |
| | | wapperSetCondition(wrapper,"process_sts","1"); |
| | | if ("JG".equals(orderNo.substring(0, 2))) { |
| | | wapperSetCondition(wrapper, "process_sts", "1"); |
| | | } |
| | | |
| | | List<AgvLocDetl> agvLocDetls = this.selectList(wrapper); |
| | | |
| | | for (AgvLocDetl agvLocDetl: agvLocDetls) { |
| | | for (AgvLocDetl agvLocDetl : agvLocDetls) { |
| | | //判断当前库位货物是否F在库 |
| | | AgvLocMast agvLocMast = agvLocMastService.selectById(agvLocDetl.getLocNo()); |
| | | if(!"F".equals(agvLocMast.getLocSts())){ |
| | | if (!"F".equals(agvLocMast.getLocSts())) { |
| | | continue; |
| | | } |
| | | //如果订单剩余出库量大于0 |
| | | if(issued > 0) { |
| | | if (issued > 0) { |
| | | //当前库位的库存量 |
| | | double anfme = agvLocDetl.getAnfme(); |
| | | //int ioType = anfme > issued ? 101 : 103; |
| | | anfme = anfme > issued ? issued : anfme; |
| | | //用于显示工作明细档的订单号 |
| | | String orderNoWrkDtel = Utils.getOrderNo(orderNo,anfme); |
| | | String orderNoWrkDtel = Utils.getOrderNo(orderNo, anfme); |
| | | //更新订单数量 |
| | | orderNo = Utils.orderMergeUpdate(orderNo,anfme); |
| | | LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNoWrkDtel, anfme,agvLocDetl.getProcessSts()); |
| | | orderNo = Utils.orderMergeUpdate(orderNo, anfme); |
| | | LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNoWrkDtel, anfme, agvLocDetl.getProcessSts()); |
| | | locDto.setCsocode(csocode); |
| | | locDto.setIsoseq(isoseq); |
| | | locDto.setContainerCode(agvLocDetl.getSuppCode()); |
| | |
| | | //当前库位所处楼层 |
| | | int floor = Integer.parseInt(agvLocDetl.getLocNo().split("F")[1]); |
| | | //locDto.setAgvStaNos(queryAgvStaNosByFloor(floor)); |
| | | locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(),floor)); |
| | | locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(), floor)); |
| | | locDtoList.add(locDto); |
| | | |
| | | issued -= anfme; |
| | |
| | | 更新库存明细 |
| | | */ |
| | | public void updateStock(String sourceLoc, String targetLoc) { |
| | | this.baseMapper.updateStock(sourceLoc,targetLoc); |
| | | this.baseMapper.updateStock(sourceLoc, targetLoc); |
| | | } |
| | | |
| | | public Page<AgvLocDetl> getStockStatis(Page<AgvLocDetl> page) { |
| | |
| | | |
| | | @Override |
| | | public AgvLocDetl selectItem(String locNo, String matnr, String batch, String csocode, String isoCode) { |
| | | return this.baseMapper.selectItemByOrderNo(locNo, matnr, batch,csocode,isoCode); |
| | | return this.baseMapper.selectItemByOrderNo(locNo, matnr, batch, csocode, isoCode); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Double getSumAnfmeDb(String matnr, String threeCode,Integer floor) { |
| | | public Double getSumAnfmeDb(String matnr, String threeCode, Integer floor) { |
| | | return this.baseMapper.selectSumAnfmeByMatnr2(matnr, threeCode, floor); |
| | | } |
| | | |
| | | @Override |
| | | public Double getSumAnfmeback(String matnr, String threeCode,Integer floor) { |
| | | public Double getSumAnfmeback(String matnr, String threeCode, Integer floor) { |
| | | return this.baseMapper.getSumAnfmeback(matnr, threeCode, floor); |
| | | } |
| | | |
| | |
| | | return this.baseMapper.sum(); |
| | | } |
| | | |
| | | public List<AgvLocDetl> getStockStatisExcel(){ |
| | | public List<AgvLocDetl> getStockStatisExcel() { |
| | | return this.baseMapper.getStockStatisExcel(); |
| | | } |
| | | |
| | |
| | | return new ArrayList<AgvLocDetl>(); |
| | | } |
| | | EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>(); |
| | | if(Cools.isEmpty(orderNo)){ |
| | | wrapper.like("order_no",orderNo); |
| | | if (Cools.isEmpty(orderNo)) { |
| | | wrapper.like("order_no", orderNo); |
| | | } |
| | | if(Cools.isEmpty(matnr)){ |
| | | wrapper.like("matnr",matnr); |
| | | if (Cools.isEmpty(matnr)) { |
| | | wrapper.like("matnr", matnr); |
| | | } |
| | | if(Cools.isEmpty(maktx)){ |
| | | wrapper.like("maktx",maktx); |
| | | if (Cools.isEmpty(maktx)) { |
| | | wrapper.like("maktx", maktx); |
| | | } |
| | | if(Cools.isEmpty(specs)){ |
| | | wrapper.like("specs",specs); |
| | | if (Cools.isEmpty(specs)) { |
| | | wrapper.like("specs", specs); |
| | | } |
| | | if(Cools.isEmpty()){ |
| | | wrapper.like("loc_no",locNo); |
| | | if (Cools.isEmpty()) { |
| | | wrapper.like("loc_no", locNo); |
| | | } |
| | | return this.selectList(wrapper); |
| | | } |
| | |
| | | public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch, String csocode, String isocode) { |
| | | EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("loc_no", locNo); |
| | | Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode); |
| | | Utils.confirmOnlyMat(wrapper, matnr, batch, csocode, isocode); |
| | | if (anfme <= 0) { |
| | | return this.baseMapper.deleteLocDetl(locNo,anfme,matnr,batch,csocode,isocode) > 0; |
| | | return this.baseMapper.deleteLocDetl(locNo, anfme, matnr, batch, csocode, isocode) > 0; |
| | | } else { |
| | | AgvLocDetl agvLocDetl = this.selectOne(wrapper); |
| | | agvLocDetl.setAnfme(anfme); |
| | | agvLocDetl.setModiTime(new Date()); |
| | | return this.baseMapper.updateAnfme(locNo,anfme,matnr,batch,csocode,isocode) > 0; |
| | | return this.baseMapper.updateAnfme(locNo, anfme, matnr, batch, csocode, isocode) > 0; |
| | | } |
| | | } |
| | | |
| | | public boolean updateAnfmeProcess(Double anfme, String locNo, String matnr, String batch, String csocode, String isocode, Integer process) { |
| | | EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("loc_no", locNo); |
| | | Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode); |
| | | Utils.confirmOnlyMat(wrapper, matnr, batch, csocode, isocode); |
| | | if (anfme <= 0) { |
| | | return this.baseMapper.deleteLocDetl(locNo,anfme,matnr,batch,csocode,isocode) > 0; |
| | | return this.baseMapper.deleteLocDetl(locNo, anfme, matnr, batch, csocode, isocode) > 0; |
| | | } else { |
| | | AgvLocDetl agvLocDetl = this.selectOne(wrapper); |
| | | agvLocDetl.setAnfme(anfme); |
| | | agvLocDetl.setModiTime(new Date()); |
| | | return this.baseMapper.updateAnfmeProcess(locNo,anfme,matnr,batch,csocode,isocode,process) > 0; |
| | | return this.baseMapper.updateAnfmeProcess(locNo, anfme, matnr, batch, csocode, isocode, process) > 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | private void wapperSetCondition(Wrapper wrapper,String column, String condition){ |
| | | if(Cools.isEmpty(condition)){ |
| | | wrapper.andNew().eq(column,"").or().isNull(column); |
| | | }else { |
| | | wrapper.andNew().eq(column,condition); |
| | | private void wapperSetCondition(Wrapper wrapper, String column, String condition) { |
| | | if (Cools.isEmpty(condition)) { |
| | | wrapper.andNew().eq(column, "").or().isNull(column); |
| | | } else { |
| | | wrapper.andNew().eq(column, condition); |
| | | } |
| | | } |
| | | |
| | | public AgvLocDetl selectByLocNo(String locNo){ |
| | | return this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",locNo)); |
| | | public AgvLocDetl selectByLocNo(String locNo) { |
| | | return this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | List<AgvLocDetl> agvLocDetls = new ArrayList<>(); |
| | | |
| | | taskDto.getLocDtos().forEach(locDto -> { |
| | | AgvLocDetl agvLocDetl = this.selectByMatnrAndBatchAndCsocodeAndisoCode(locDto.getLocNo(),locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq()); |
| | | AgvLocDetl agvLocDetl = this.selectByMatnrAndBatchAndCsocodeAndisoCode(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq()); |
| | | agvLocDetls.add(agvLocDetl); |
| | | }); |
| | | return agvLocDetls; |
| | |
| | | @Override |
| | | public AgvLocDetl selectByMatnrAndBatchAndCsocodeAndisoCode(String locNo, String matnr, String batch, String csocode, String isocode) { |
| | | EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("loc_no",locNo); |
| | | Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode); |
| | | wrapper.eq("loc_no", locNo); |
| | | Utils.confirmOnlyMat(wrapper, matnr, batch, csocode, isocode); |
| | | return this.selectOne(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | public AgvLocDetl selectByMatnrAndBatchAndCsocodeAndisoCode2(String locNo,String orderNo, String matnr, String batch, String csocode, String isocode) { |
| | | public AgvLocDetl selectByMatnrAndBatchAndCsocodeAndisoCode2(String locNo, String orderNo, String matnr, String batch, String csocode, String isocode) { |
| | | EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("loc_no",locNo); |
| | | Utils.confirmOnlyMat2(wrapper,orderNo,matnr,batch,csocode,isocode); |
| | | wrapper.eq("loc_no", locNo); |
| | | Utils.confirmOnlyMat2(wrapper, orderNo, matnr, batch, csocode, isocode); |
| | | return this.selectOne(wrapper); |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public AgvLocDetl selectLocdetl(String locNo, String matnr, String batch, String csocode, String isocode) { |
| | | return this.baseMapper.selectLocdetl(locNo,matnr,batch,csocode,isocode); |
| | | return this.baseMapper.selectLocdetl(locNo, matnr, batch, csocode, isocode); |
| | | } |
| | | |
| | | @Override |
| | |
| | | try { |
| | | if (excelVersion == 2003) { |
| | | book = new HSSFWorkbook(inStream); |
| | | } |
| | | else { // 当 excel 是 2007 时 |
| | | } else { // 当 excel 是 2007 时 |
| | | book = new XSSFWorkbook(inStream); |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | String containerCode = dataFormatter.formatCellValue(row.getCell(1)); |
| | | |
| | | List<AgvLocDetl> agvLocDetls = this.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("supp_code", containerCode)); |
| | | if(Cools.isEmpty(agvLocDetls)){ |
| | | if (Cools.isEmpty(agvLocDetls)) { |
| | | log.info("库位号:" + locNo + ",货架码:" + containerCode + ",不存在明细"); |
| | | } |
| | | if(agvLocDetls.size()>1){ |
| | | if (agvLocDetls.size() > 1) { |
| | | log.info("库位号:" + locNo + ",货架码:" + containerCode + ",存在1条以上记录"); |
| | | } |
| | | } |
| | |
| | | |
| | | @Override |
| | | public void updateLocNo(String locNo, String sourceLoc, AgvLocDetl agvLocDetl) { |
| | | this.baseMapper.updateLocNo(locNo,sourceLoc,agvLocDetl.getSuppCode()); |
| | | this.baseMapper.updateLocNo(locNo, sourceLoc, agvLocDetl.getSuppCode()); |
| | | } |
| | | } |
| | |
| | | return this.baseMapper.selectItemByOrderNo2(orderNo, matnr, batch, threeCode); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public OrderDetl selectItemNoneOfBatch(String orderNo, String matnr) { |
| | | return this.baseMapper.selectItemNoneOfBatch(orderNo, matnr); |
| | |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private FlowLogService flowLogService; |
| | |
| | | //用于上报mes的工作档明细 |
| | | List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | |
| | | try { |
| | | long flowId = snowflakeIdWorker.nextId(); |
| | | Date now = new Date(); |
| | | try{ |
| | | try { |
| | | int wrkNo = agvWrkMast.getWrkNo(); |
| | | String barcode = agvWrkMast.getBarcode(); |
| | | String orderNo = getOrderNoByWrkNo(wrkNo); |
| | |
| | | // if (!flowLogService.insert(flowLog)) { |
| | | // throw new CoolException("同步半成品调拨单流水记录失败"); |
| | | // } |
| | | agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | agvLocDetlService.updateAnfme(updateAnfme, agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime()); |
| | | } |
| | | //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); |
| | | |
| | |
| | | } |
| | | }); |
| | | // 更新站点 + 库位状态 源库位是站点 |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | break; |
| | | case 58: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); |
| | | break; |
| | | case 108: |
| | | case 114: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | //更新库存明细 |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | break; |
| | | case 109: |
| | | // 库位 -- 接驳位 / 库位 |
| | | if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | // 接驳位 -- 库位 |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | } |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); |
| | | // 库位 -- 接驳位 / 库位 |
| | | } else { |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | } |
| | | break; |
| | | case 111: |
| | | // 库位 -- 接驳位 / 库位 |
| | | if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | // 接驳位 -- 库位 |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | } |
| | | |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); |
| | | // 库位 -- 接驳位 / 库位 |
| | | } else { |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | //更新目标库位明细 101.出库 删除源库位库存明细 |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); |
| | | } |
| | | break; |
| | | case 112: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { |
| | | AgvLocDetl locDetl = new AgvLocDetl(); |
| | |
| | | agvLocDetlService.insert(locDetl); |
| | | } |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); |
| | | // 库位 -- 接驳位 / 库位 |
| | | } else { |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | } |
| | | break; |
| | | case 113: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); |
| | | } |
| | | break; |
| | | case 121: |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); |
| | | //更新库存明细 |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); |
| | | agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); |
| | | break; |
| | | |
| | | default: |
| | |
| | | //删除AGV工作档 |
| | | agvWrkMastService.deleteById(wrkNo); |
| | | //删除AGV工作明细档 |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); |
| | | } |
| | | // else { |
| | | // agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); |
| | |
| | | // agvWrkMastService.updateById(agvWrkMast); |
| | | // } |
| | | |
| | | if(!isJSON(orderNo)){ |
| | | if (!isJSON(orderNo)) { |
| | | //检查订单是否已完成 |
| | | orderService.checkComplete(orderNo, agvWrkMast.getPltType()); |
| | | } else { |
| | |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | //修改源库位状态为O |
| | | if (agvWrkMast.getIoType() == 110) { |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); |
| | | } |
| | | if(agvWrkMast.getIoType() == 101){ |
| | | if (agvWrkMast.getIoType() == 101) { |
| | | //更新目标库位明细 101.出库 删除源库位库存明细 |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); |
| | | //生成空板入库任务 |
| | | Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)); |
| | | try { |
| | |
| | | agvBasDevp.setLocSts("R"); |
| | | agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2))); |
| | | agvBasDevpService.updateById(agvBasDevp); |
| | | }catch (Exception e){ |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error(e.getMessage()); |
| | | } |
| | |
| | | //删除AGV工作档 |
| | | agvWrkMastService.deleteById(wrkNo); |
| | | //删除AGV工作明细档 |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); |
| | | if(!isJSON(orderNo)){ |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); |
| | | if (!isJSON(orderNo)) { |
| | | //检查订单是否已完成 |
| | | orderService.checkComplete(orderNo); |
| | | }else{ |
| | | orderService.checkComplete(orderNo, agvWrkMast.getPltType()); |
| | | } else { |
| | | List<Map> maps = JSONArray.parseArray(orderNo, Map.class); |
| | | maps.forEach(map -> { |
| | | String o = map.get("orderNo").toString(); |
| | |
| | | agvWrkMast.setModiTime(new Date()); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); |
| | | if(agvWrkMast.getIoType() == 101){ |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); |
| | | if (agvWrkMast.getIoType() == 101) { |
| | | //更新目标库位明细 101.出库 删除源库位库存明细 |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); |
| | | agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); |
| | | } |
| | | |
| | | //生成AGV工作历史档 |
| | |
| | | //删除AGV工作档 |
| | | agvWrkMastService.deleteById(wrkNo); |
| | | //删除AGV工作明细档 |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); |
| | | if(!isJSON(orderNo)){ |
| | | agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); |
| | | if (!isJSON(orderNo)) { |
| | | //检查订单是否已完成 |
| | | orderService.checkComplete(orderNo); |
| | | }else{ |
| | | orderService.checkComplete(orderNo, agvWrkMast.getPltType()); |
| | | } else { |
| | | List<Map> maps = JSONArray.parseArray(orderNo, Map.class); |
| | | maps.forEach(map -> { |
| | | String o = map.get("orderNo").toString(); |
| | | orderService.checkComplete(o); |
| | | orderService.checkComplete(o, agvWrkMast.getPltType()); |
| | | }); |
| | | } |
| | | //上报mes |
| | |
| | | @Synchronized |
| | | public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException { |
| | | |
| | | try{ |
| | | try { |
| | | //下发任务 |
| | | int startWrkCode = agvWrkMastService.startWrk(agvWrkMast); |
| | | if(startWrkCode != 0){ |
| | | if (startWrkCode != 0) { |
| | | throw new CoolException("任务下发失败"); |
| | | } |
| | | |
| | | agvWrkMast.setWrkSts(202L); |
| | | agvWrkMast.setModiTime(new Date()); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | if(agvWrkMast.getIoType() == 1){ |
| | | if (agvWrkMast.getIoType() == 1) { |
| | | //修改AGV入库通知档状态入出状态为Y |
| | | agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); |
| | | agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(), "Y"); |
| | | } |
| | | return SUCCESS; |
| | | } catch (Exception e) { |
| | |
| | | @Transactional |
| | | @Synchronized |
| | | public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { |
| | | |
| | | |
| | | //下发任务 |
| | | try{ |
| | | try { |
| | | int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast); |
| | | if(startWrkCode != 0){ |
| | | if (startWrkCode != 0) { |
| | | throw new CoolException("任务下发失败"); |
| | | } |
| | | return SUCCESS; |
| | | }catch (Exception e){ |
| | | log.error("任务下发失败"+e.getMessage()); |
| | | } catch (Exception e) { |
| | | log.error("任务下发失败" + e.getMessage()); |
| | | } |
| | | return FAIL; |
| | | |
| | |
| | | List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo()); |
| | | //取第一个暂存位,并查询其次数与配置的次数做比较 |
| | | Map<String, Object> devNoMap = devNoMaps.get(0); |
| | | if((int)devNoMap.get("num") < maxWrokNum){ |
| | | if ((int) devNoMap.get("num") < maxWrokNum) { |
| | | agvWrkMast.setLocNo(devNoMap.get("dev_no").toString()); |
| | | agvWrkMast.setModiTime(new Date()); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | log.info("after:" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); |
| | | log.info("after:" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); |
| | | } |
| | | }); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){ |
| | | private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList) { |
| | | return agvWrkMastList.stream().filter(agvWrkMast -> { |
| | | AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo())); |
| | | if(!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts()<=202){ |
| | | if (!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts() <= 202) { |
| | | System.out.println("source_loc_no > 1"); |
| | | return false; |
| | | } |
| | |
| | | /* |
| | | 生成工作档 |
| | | */ |
| | | private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){ |
| | | private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor) { |
| | | AgvWrkMast wrkMast = new AgvWrkMast(); |
| | | //工作状态 |
| | | wrkMast.setWrkSts(wrkSts); |
| | |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | |
| | | wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false)); |
| | | wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo).eq("barcode", barcode).orderBy("modi_time", false)); |
| | | |
| | | return wrkMast; |
| | | } |