package com.zy.asrs.task;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.core.common.Cools;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.LocMast;
|
import com.zy.asrs.entity.StaDesc;
|
import com.zy.asrs.entity.WrkMast;
|
import com.zy.asrs.service.LocMastService;
|
import com.zy.asrs.service.StaDescService;
|
import com.zy.asrs.service.WrkMastService;
|
import com.zy.common.model.enums.WorkNoType;
|
import com.zy.common.service.CommonService;
|
import com.zy.system.entity.Config;
|
import com.zy.system.service.ConfigService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Date;
|
import java.util.List;
|
|
@Component
|
public class EmptyOutWing {
|
|
@Autowired
|
private WrkMastService wrkMastService;
|
@Autowired
|
private LocMastService locMastService;
|
@Autowired
|
private StaDescService staDescService;
|
@Autowired
|
private CommonService commonService;
|
@Autowired
|
ConfigService configService;
|
|
|
@Scheduled(cron = "0/3 * * * * ? ")
|
private void execute() {
|
Config config = configService.selectConfigByCode("AutoEmpty");
|
if(config.getStatus()==0){
|
return;
|
}
|
int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110));
|
if (count > 0) {
|
WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("wrk_sts", 7));
|
if (Cools.isEmpty(wrkMast)) {
|
return;
|
}
|
WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 1).eq("wrk_sts", 2).eq("full_plt", "N"));
|
if (Cools.isEmpty(wrkMast1)) {
|
return;
|
}
|
wrkMast1.setFullPlt("Y");
|
wrkMastService.updateById(wrkMast1);
|
wrkMast.setWrkSts(14L);
|
wrkMastService.updateById(wrkMast);
|
} else {
|
List<LocMast> locMastss =locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").orderBy("bay1"));
|
if (Cools.isEmpty(locMastss)) {
|
return;
|
}
|
for (LocMast locMasta : locMastss) {
|
// 获取工作号
|
int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
|
// 获取库位
|
LocMast locMast = locMastService.selectById(locMasta.getLocNo());
|
if (Cools.isEmpty(locMast)) {
|
throw new CoolException(locMasta.getLocNo()+"库位不存在");
|
}
|
if (!locMast.getLocSts().equals("D")){
|
throw new CoolException("所选库位存在状态不为D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$());
|
}
|
boolean res1 = true;
|
|
List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
|
.eq("lev1", locMast.getLev1())
|
.orderBy("bay1",res1));
|
for (LocMast locMast1 : locMasts) {
|
if (locMast1.getLocNo().equals(locMast.getLocNo())) {
|
break;
|
}
|
if (locMast1.getLocSts().equals("D") || locMast1.getLocSts().equals("F")) {
|
throw new CoolException(locMasta.getLocNo()+"库位堵塞,禁止出库");
|
}
|
}
|
// 获取源站
|
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
|
.eq("type_no", 110)
|
.eq("stn_no", 100)
|
.eq("crn_no", locMast.getCrnNo());
|
StaDesc staDesc = staDescService.selectOne(wrapper);
|
Integer sourceStaNo = staDesc.getCrnStn();
|
if (Cools.isEmpty(sourceStaNo)) {
|
throw new CoolException("检索源站失败");
|
}
|
Date now = new Date();
|
// 保存工作档
|
WrkMast wrkMast = new WrkMast();
|
wrkMast.setWrkNo(workNo);
|
wrkMast.setIoTime(now);
|
wrkMast.setWrkSts(0L); // 工作状态:0.待发送
|
wrkMast.setIoType(110); // 入出库状态: 110.空板出库
|
wrkMast.setIoPri(10D);
|
wrkMast.setSourceStaNo(sourceStaNo); // 源站
|
wrkMast.setStaNo(100); // 目标站
|
wrkMast.setCrnNo(locMast.getCrnNo());
|
wrkMast.setSourceLocNo(locMasta.getLocNo()); // 源库位
|
wrkMast.setFullPlt("N"); // 满板:Y
|
wrkMast.setPicking("N"); // 拣料
|
wrkMast.setExitMk("N"); // 退出
|
wrkMast.setEmptyMk("Y"); // 空板
|
wrkMast.setLinkMis("N");
|
wrkMast.setAppeUser(9998L);
|
wrkMast.setAppeTime(now);
|
wrkMast.setModiUser(9998L);
|
wrkMast.setModiTime(now);
|
boolean res = wrkMastService.insert(wrkMast);
|
if (!res) {
|
throw new CoolException("保存工作档失败");
|
}
|
// 更新库位状态 D.空板 -> R.出库预约
|
if (locMast.getLocSts().equals("D")){
|
locMast.setLocSts("R");
|
locMast.setModiUser(9998L);
|
locMast.setModiTime(now);
|
if (!locMastService.updateById(locMast)) {
|
throw new CoolException("更新库位状态失败");
|
}
|
break;
|
}
|
|
}
|
}
|
|
}
|
}
|