package com.zy.asrs.task;
|
|
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 lombok.extern.slf4j.Slf4j;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author pang.jiabao
|
* @description 米多泉州专用定时任务
|
* @createDate 2024/7/10 9:20
|
*/
|
@Slf4j
|
@Component
|
public class MdqzScheduler {
|
|
@Resource
|
private ConfigService configService;
|
|
@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) {
|
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());
|
}
|
}
|
}
|
}
|
|
}
|