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.WrkMast;
|
import com.zy.asrs.service.LocDetlService;
|
import com.zy.asrs.service.LocMastService;
|
import com.zy.asrs.service.WorkService;
|
import com.zy.asrs.service.WrkMastService;
|
import com.zy.asrs.utils.Utils;
|
import com.zy.common.properties.SlaveProperties;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.util.List;
|
|
@Component
|
@Slf4j
|
public class CheckDeepScheduler {
|
@Value("${wcs-slave.doubleDeep}")
|
private boolean confirmDeep;
|
/**
|
* 空板并库
|
*/
|
@Value("${wcs-slave.locCombD}")
|
private boolean locCombD;
|
@Autowired
|
private LocDetlService locDetlService;
|
@Autowired
|
private LocMastService locMastService;
|
@Autowired
|
private WorkService workService;
|
@Autowired
|
private WrkMastService wrkMastService;
|
@Autowired
|
private SlaveProperties slaveProperties;
|
|
/**
|
* 将两个空托盘深库位合并为深浅库位,库位状态都为D
|
*/
|
@Scheduled(cron = "0/60 * * * * ?")
|
private void locCombDToD() {
|
if (!confirmDeep) return;
|
if(!locCombD) return;
|
for (int crnNo = 1; crnNo < 3; crnNo++){
|
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
|
.eq("crn_no",crnNo)
|
.last(" and wrk_sts in (2,3,4,11,12)")
|
);
|
if (wrkMasts.size() > 1) continue;
|
|
List<LocMast> locMasts = locMastService.queryNeedMoveDeepLocD(crnNo);
|
for (LocMast locMast : locMasts) {
|
|
List<LocMast> deepLocMasts = locMastService.queryNeedMoveDeepLocD(crnNo);
|
for (LocMast deepLocMast : deepLocMasts) {
|
if(locMast.getLocNo().equals(deepLocMast.getLocNo())){
|
continue;
|
}
|
String ShallLoc = Utils.getShallowLoc(slaveProperties, locMast.getLocNo());
|
LocMast targetLoc = locMastService.selectById(ShallLoc);
|
|
if(!Cools.isEmpty(targetLoc) && targetLoc.getLocSts().equals("O") && deepLocMast.getLocSts().equals("D")) {
|
workService.locMove(deepLocMast.getLocNo(), targetLoc.getLocNo(), 1L);
|
log.info("浅库位移转到深库位:生成库位移转任务成功[浅到深]===>>" + locMast.getLocNo() + "---" + targetLoc.getLocNo());
|
return;
|
}
|
}
|
|
}
|
}
|
}
|
|
/**
|
* 遍历库存中,浅库位状态F,深库位状态O的数据,生成库位移转工作档将浅库位移转到对应深库位中去
|
*/
|
@Scheduled(cron = "0/30 * * * * ?")
|
private void checkDeep(){
|
if (!confirmDeep) return;
|
if(!locCombD) return;
|
List<LocMast> locMasts = locMastService.queryShallowLocFMast();
|
|
if (null == locMasts) return;
|
|
for (LocMast sourceLoc : locMasts){
|
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
|
.eq("crn_no",sourceLoc.getCrnNo())
|
.last(" and wrk_sts in (2,3,4,11,12)")
|
);
|
if (wrkMasts.size() > 1) continue;
|
|
String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
|
LocMast destLoc = locMastService.selectById(deep);
|
|
if(!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
|
//查找源库位是否有转移任务,如果有,不生成库位移转
|
WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
|
.eq("source_loc_no", sourceLoc.getLocNo()));
|
if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
|
(sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
|
workService.locMove(sourceLoc.getLocNo(), deep, 1L);
|
}
|
}
|
}
|
|
}
|
|
}
|