| | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.service.WrkDetlService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.system.entity.Config; |
| | | import com.zy.system.service.ConfigService; |
| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author pang.jiabao |
| | |
| | | @Resource |
| | | private WrkMastService wrkMastService; |
| | | |
| | | @Resource |
| | | private LocMastService locMastService; |
| | | |
| | | @Resource |
| | | private WrkDetlService wrkDetlService; |
| | | |
| | | // 读补尾桶配置,给对应任务号补尾桶信号--替换为入库寻找库位时,发现前面类型不一样单着,自动补尾桶 |
| | | @Scheduled(cron = "0/5 * * * * ?") |
| | | private void tailFillingBuckets() { |
| | | Config config = configService.selectConfigByCode("tailFillingBuckets"); |
| | | if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) { |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", config.getValue())); |
| | | |
| | | if (wrkMast != null && wrkMast.getCtnType() == 0) { |
| | | wrkMast.setCtnType(1); |
| | | Integer wrkNo = wrkMast.getWrkNo(); |
| | | // 取新库位组的第一个库位 |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O")); |
| | | List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList()); |
| | | List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 第一个先放这两排 |
| | | if (collect.size() <= 0 && collect1.size() <= 0) { |
| | | log.error("站点:{},任务号{}:入库空桶库无空库位",1050,wrkNo); |
| | | return; |
| | | } |
| | | // 可用库位组 |
| | | List<LocMast> locMastList = new ArrayList<>(); |
| | | for(LocMast locMast1:collect) { |
| | | Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1()) |
| | | && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst(); |
| | | first.ifPresent(locMastList::add); |
| | | } |
| | | |
| | | if (locMastList.size() == 0) { |
| | | log.error("站点:{},任务号{}:入库空桶库无对应空空桶组",1050,wrkNo); |
| | | return; |
| | | } |
| | | WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo)); |
| | | if (wrkDetl.getModel().equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 最上面一层只能放208L,库位剩余量不多时,如果是208L桶入库,则先从最顶层放 |
| | | locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList()); |
| | | } else { |
| | | locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList()); |
| | | } |
| | | LocMast locMast = locMastList.get(0); |
| | | wrkMast.setLocNo(locMast.getLocNo()); |
| | | wrkMast.setCtnType(1); // 尾托标识 |
| | | wrkMastService.updateById(wrkMast); |
| | | if (locMast.getLocSts().equals("O")){ |
| | | locMast.setLocSts("S"); // S.入库预约 |
| | | locMast.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast)){ |
| | | log.error("站点:{},任务号{}:改变库位{}状态{}失败",1050,wrkNo,locMast.getLocNo(),locMast.getLocSts()); |
| | | } |
| | | } else { |
| | | log.error("站点:{},任务号{}:目标库位:{}已被占用",1050,wrkNo,locMast.getLocNo()); |
| | | } |
| | | } |
| | | } |
| | | } |