| | |
| | | // 数量 |
| | | private Double count; |
| | | |
| | | // |
| | | private String containerCode; |
| | | //容器码 |
| | | private String suppCode; |
| | | |
| | | //销售订单号 |
| | | private String threeCode; |
| | | |
| | | //销售订单行号 |
| | | private String deadTime; |
| | | } |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.entity.AgvBasDevp; |
| | | import org.apache.ibatis.annotations.Delete; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.apache.ibatis.annotations.Select; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | |
| | | |
| | | @Select("select dev_no from agv_bas_devp where loc_sts = 'O'") |
| | | List<String> getAvailableEmptyInSite(); |
| | | |
| | | @Select("select station_code from agv_bas_devp where floor = #{floor} and cache_shelves = 'Y' group by station_code") |
| | | List<String> selectCacheShelvesStationCodeByFloor(@Param("floor") int floor); |
| | | } |
| | |
| | | public AgvBasDevp selectEmptyDevpByStation(String stationCode); |
| | | |
| | | List<AgvBasDevp> getBasDevpByNoCacheShelves(); |
| | | |
| | | List<String> selectCacheShelvesStationCodeByFloor(int floor); |
| | | |
| | | } |
| | |
| | | .eq("station_code", stationCode) |
| | | .like("dev_no", "0" + i + "@"); |
| | | |
| | | if("CS-305".equals(stationCode) || "CS-306".equals(stationCode) || "CS-307".equals(stationCode)){ |
| | | List<String> list = this.selectCacheShelvesStationCodeByFloor(3); |
| | | if(list.contains(stationCode)){ |
| | | wrapper.orderBy("dev_no",false); |
| | | } |
| | | |
| | |
| | | return this.selectList(new EntityWrapper<AgvBasDevp>().eq("cache_shelves","N")); |
| | | } |
| | | |
| | | @Override |
| | | public List<String> selectCacheShelvesStationCodeByFloor(int floor) { |
| | | //Object o = this.selectList(new EntityWrapper<AgvBasDevp>().setSqlSelect("station_code").eq("floor",floor).eq("cache_shelves","Y").groupBy("station_code")); |
| | | return this.baseMapper.selectCacheShelvesStationCodeByFloor(floor); |
| | | } |
| | | |
| | | } |
| | |
| | | locDto.setContainerCode(agvLocDetl.getSuppCode()); |
| | | //当前库位所处楼层 |
| | | int floor = Integer.parseInt(agvLocDetl.getLocNo().split("@")[1]); |
| | | locDto.setAgvStaNos(queryAgvStaNosByFloor(floor)); |
| | | //locDto.setAgvStaNos(queryAgvStaNosByFloor(floor)); |
| | | locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByFloor(floor)); |
| | | locDtoList.add(locDto); |
| | | |
| | | issued -= anfme; |
| | |
| | | } else { |
| | | AgvLocDetl agvLocDetl = this.selectOne(wrapper); |
| | | agvLocDetl.setAnfme(anfme); |
| | | //return this.update(agvLocDetl,wrapper); |
| | | //return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0; |
| | | return this.baseMapper.updateAnfme(locNo,anfme,matnr,batch,csocode,isocode) > 0; |
| | | } |
| | | } |
| | | |
| | | private List<String> queryAgvStaNosByFloor(int floor){ |
| | | List<String> agvStaNos = new ArrayList<>(); |
| | | if(floor == 1){ |
| | | agvStaNos.add("CS-101"); |
| | | agvStaNos.add("CS-102"); |
| | | }else if(floor ==3){ |
| | | agvStaNos.add("CS-305"); |
| | | agvStaNos.add("CS-306"); |
| | | agvStaNos.add("CS-307"); |
| | | } |
| | | |
| | | return agvStaNos; |
| | | } |
| | | |
| | | private void wapperSetCondition(Wrapper wrapper,String column, String condition){ |
| | | if(Cools.isEmpty(condition)){ |
| | | wrapper.andNew().eq(column,"").or().isNull(column); |
| | | //wrapper.isNull(column); |
| | | }else { |
| | | wrapper.eq(column,condition); |
| | | } |
| | |
| | | |
| | | taskDto.getLocDtos().forEach(locDto -> { |
| | | AgvLocDetl agvLocDetl = this.selectByMatnrAndBatchAndCsocodeAndisoCode(locDto.getLocNo(),locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq()); |
| | | //AgvLocDetl agvLocDetl = this.selectLocdetl(locDto.getLocNo(),locDto.getMatnr(),locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq()); |
| | | agvLocDetls.add(agvLocDetl); |
| | | }); |
| | | return agvLocDetls; |
| | |
| | | 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; |
| | |
| | | @Transactional |
| | | public void locCheckOut(StockOutParam param, Long userId) { |
| | | String station = param.getStation(); |
| | | List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | .eq("station_code", station) |
| | | .eq("loc_sts","O")); |
| | | // List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | // .eq("station_code", station) |
| | | // .eq("loc_sts","O")); |
| | | // |
| | | // if(param.getLocDetls().size() > agvBasDevpList.size()){ |
| | | // throw new CoolException("当前站点可用缓存货架数量为" + agvBasDevpList.size() + ",少于需要盘点出库库位数量,请重新选择盘点库位"); |
| | | // } |
| | | |
| | | if(param.getLocDetls().size() > agvBasDevpList.size()){ |
| | | throw new CoolException("当前站点可用缓存货架数量为" + agvBasDevpList.size() + ",少于需要盘点出库库位数量,请重新选择盘点库位"); |
| | | } |
| | | |
| | | List<TaskDto> taskDtos = new ArrayList<>(); |
| | | param.getLocDetls().forEach(locDetl -> { |
| | | AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo()); |
| | | AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo())); |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() |
| | | .eq("station_code", station) |
| | | .eq("loc_sts","O")); |
| | | Date now = new Date(); |
| | | |
| | | //生成工作党 |
| | | AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false); |
| | | //生成工作明细档 |
| | | createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | //修改库位信息 |
| | | updateAgvLocMast(agvLocMast,"P"); |
| | | //修改站点信息 |
| | | updateAgvBasDevp(agvBasDevp,"S"); |
| | | |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode()); |
| | | TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto); |
| | | if(TaskDto.has(taskDtos,taskDto)){ |
| | | TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto); |
| | | }else { |
| | | taskDtos.add(taskDto); |
| | | } |
| | | }); |
| | | |
| | | Date now = new Date(); |
| | | taskDtos.forEach(taskDto -> { |
| | | //生成工作档 |
| | | AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,false); |
| | | //生成工作档明细 |
| | | taskDto.getLocDtos().forEach(locDto -> { |
| | | //明细档所需参数 |
| | | createWrkDetlReWrite(locDto.getMatnr(), |
| | | wrkMast.getWrkNo(), |
| | | locDto.getOrderNo(), |
| | | locDto.getBatch(), |
| | | locDto.getAnfme(), |
| | | locDto.getContainerCode(), |
| | | now, |
| | | userId, |
| | | locDto.getCsocode(), |
| | | locDto.getIsoseq()); |
| | | }); |
| | | updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P"); |
| | | //更新目标站点状态 |
| | | //locSts = ioType == 101 ? "S" : "Q"; |
| | | updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()),"S"); |
| | | }); |
| | | |
| | | |
| | | // param.getLocDetls().forEach(locDetl -> { |
| | | // AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo()); |
| | | // AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo())); |
| | | // AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() |
| | | // .eq("station_code", station) |
| | | // .eq("loc_sts","O")); |
| | | // Date now = new Date(); |
| | | // |
| | | // //生成工作党 |
| | | // AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false); |
| | | // //生成工作明细档 |
| | | // createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); |
| | | // //修改库位信息 |
| | | // updateAgvLocMast(agvLocMast,"P"); |
| | | // //修改站点信息 |
| | | // updateAgvBasDevp(agvBasDevp,"S"); |
| | | // |
| | | // }); |
| | | |
| | | } |
| | | |
| | |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | |
| | | //暂存位任务+1 |
| | | addInQty(locNo); |
| | | |
| | | wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo)); |
| | | |
| | | return wrkMast; |
| | | } |
| | | |
| | | /* |
| | | 生成工作档 |
| | | */ |
| | | @Deprecated |
| | | private AgvWrkMast createWrkMast(AgvBasDevp agvBasDevp,AgvLocMast agvLocMast, Date now, Long userId){ |
| | | AgvWrkMast wrkMast = new AgvWrkMast(); |
| | | //生成工作号 |
| | | //int workNo = agvCommonService.getWorkNo(0); |
| | | //wrkMast.setWrkNo(workNo); |
| | | wrkMast.setIoTime(new Date()); |
| | | // 工作状态:201.生成入库任务ID |
| | | wrkMast.setWrkSts(201L); |
| | | // 入出库状态:1.入库 |
| | | wrkMast.setIoType(1); |
| | | //生成优先级 |
| | | wrkMast.setIoPri(300.0); |
| | | wrkMast.setSourceLocNo(agvBasDevp.getDevNo()); |
| | | wrkMast.setLocNo(agvLocMast.getLocNo()); |
| | | wrkMast.setBarcode(agvBasDevp.getBarcode()); |
| | | // 满板:Y |
| | | wrkMast.setFullPlt("Y"); |
| | | // 拣料 |
| | | wrkMast.setPicking("N"); |
| | | // 退出 |
| | | wrkMast.setExitMk("N"); |
| | | // 空板 |
| | | wrkMast.setEmptyMk("N"); |
| | | wrkMast.setLinkMis("N"); |
| | | wrkMast.setAppeUser(userId); |
| | | wrkMast.setAppeTime(now); |
| | | wrkMast.setModiUser(userId); |
| | | wrkMast.setModiTime(now); |
| | | if (!agvWrkMastService.insert(wrkMast)) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | return wrkMast; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private void addInQty(String devno){ |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devno); |
| | | if(!Cools.isEmpty(agvBasDevp)){ |
| | | if(Cools.isEmpty(agvBasDevp.getInQty())){ |
| | | agvBasDevp.setInQty(1); |
| | | }else { |
| | | agvBasDevp.setInQty(agvBasDevp.getInQty() + 1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | List<LocDetlDto> locDetlDtos = new ArrayList<>(); |
| | | for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { |
| | | if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getContainerCode()); |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getSuppCode()); |
| | | if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); |
| | | } |
| | | } |
| | |
| | | List<LocDetlDto> locDetlDtos = new ArrayList<>(); |
| | | for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { |
| | | if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getContainerCode()); |
| | | LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getSuppCode()); |
| | | if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); |
| | | } |
| | | } |
| | |
| | | agvWrkMast.setLocNo(agvBasDevp.getDevNo()); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | } |
| | | |
| | | }); |
| | | |
| | | return SUCCESS; |
| | |
| | | public LocDto() { |
| | | } |
| | | |
| | | public LocDto(String locNo, Double anfme, String matnr, String batch, String csocode, String isoseq, String containerCode) { |
| | | this.locNo = locNo; |
| | | this.anfme = anfme; |
| | | this.matnr = matnr; |
| | | this.batch = batch; |
| | | this.csocode = csocode; |
| | | this.isoseq = isoseq; |
| | | this.containerCode = containerCode; |
| | | } |
| | | |
| | | public LocDto(String locNo, String matnr, String batch, Double anfme) { |
| | | this.locNo = locNo; |
| | | this.matnr = matnr; |
| | |
| | | if(Cools.isEmpty(agvBasDevp) || !"O".equals(agvBasDevp.getLocSts())){ |
| | | throw new CoolException("当前站点不存在或者站点不为空"); |
| | | } |
| | | if(Cools.isEmpty(agvWaitPakinService.selectByContainerCode(containerCode))){ |
| | | throw new CoolException("该料箱位组托"); |
| | | } |
| | | |
| | | //去找agv工作档任务 |
| | | if(!Cools.isEmpty(agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>() |
| | | .eq("barcode",containerCode)))){ |
| | | if(!Cools.isEmpty(agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",containerCode)))){ |
| | | throw new CoolException("该料箱正在入库中"); |
| | | } |
| | | //绑定站点 |
| | |
| | | } |
| | | if(data == 3){ |
| | | $('#staNoSelect').append("<option value=CS-305>CS-305</option>"); |
| | | $('#staNoSelect').append("<option value=CS-306>CS-306</option>") |
| | | $('#staNoSelect').append("<option value=CS-307>CS-307</option>") |
| | | $('#staNoSelect').append("<option value=CS-306>CS-306</option>"); |
| | | $('#staNoSelect').append("<option value=CS-307>CS-307</option>"); |
| | | $('#staNoSelect').append("<option value=CS-308>CS-308</option>"); |
| | | $('#staNoSelect').append("<option value=CS-309>CS-309</option>"); |
| | | } |
| | | form.render(); |
| | | } |
| | |
| | | |
| | | $('#rowSelect').empty(); |
| | | if(data.value == 1){ |
| | | $('#rowSelect').append("<option value=CS-101>1号</option>"); |
| | | $('#rowSelect').append("<option value=CS-102>2号</option>") |
| | | $('#rowSelect').append("<option value=CS-101>101</option>"); |
| | | $('#rowSelect').append("<option value=CS-102>102</option>") |
| | | } |
| | | if(data.value == 3){ |
| | | $('#rowSelect').append("<option value=CS-305>1号</option>"); |
| | | $('#rowSelect').append("<option value=CS-306>2号</option>") |
| | | $('#rowSelect').append("<option value=CS-307>3号</option>") |
| | | $('#rowSelect').append("<option value=CS-305>305</option>"); |
| | | $('#rowSelect').append("<option value=CS-306>306</option>"); |
| | | $('#rowSelect').append("<option value=CS-307>307</option>"); |
| | | $('#rowSelect').append("<option value=CS-308>308</option>") |
| | | $('#rowSelect').append("<option value=CS-309>309</option>") |
| | | } |
| | | form.render(); |
| | | |