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.BasDevp;
|
import com.zy.asrs.entity.LocMast;
|
import com.zy.asrs.entity.StaDesc;
|
import com.zy.asrs.entity.WrkMast;
|
import com.zy.asrs.service.BasDevpService;
|
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;
|
@Autowired
|
private BasDevpService basDevpService;
|
|
/**
|
* 自动出空板
|
*/
|
@Scheduled(cron = "0/3 * * * * ? ")
|
private void execute() {
|
Config config = configService.selectConfigByCode("AutoEmpty");
|
if (config.getStatus() == 0) {
|
return;
|
}
|
BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 100));
|
if (Cools.isEmpty(basDevp.getLoading())||basDevp.getLoading().equals("N")) {
|
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() + "库位堵塞,禁止出库");
|
}else if(!locMast1.getLocSts().equals("O")){
|
return;
|
}
|
}
|
// 获取源站
|
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(13D); //优先级排序 15.出库>14.入库>13.空板出库>12.空板入库>11.移库
|
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;
|
}
|
}
|
}
|
}
|
}
|