package com.zy.asrs.task;
|
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.zy.asrs.entity.AgvBasDevp;
|
import com.zy.asrs.entity.AgvLocMast;
|
import com.zy.asrs.entity.AgvWrkMast;
|
import com.zy.asrs.service.AgvBasDevpService;
|
import com.zy.asrs.service.AgvLocMastService;
|
import com.zy.asrs.service.AgvWrkMastService;
|
import com.zy.asrs.task.core.ReturnT;
|
import com.zy.asrs.task.handler.AutoMoveHandler;
|
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 AutoMoveScheduler {
|
|
@Autowired
|
private AgvLocMastService agvLocMastService;
|
@Autowired
|
private AutoMoveHandler autoMoveHandler;
|
@Autowired
|
private AgvWrkMastService agvWrkMastService;
|
@Autowired
|
private AgvBasDevpService agvBasDevpService;
|
|
// 调拨出库
|
// @Scheduled(cron = "0/2 * * * * ? ")
|
private void execute(){
|
List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
|
new EntityWrapper<AgvLocMast>()
|
.isNotNull("loc_type")
|
.ne("loc_type", "")
|
.eq("floor", 1)
|
.eq("loc_sts","F"));
|
if (agvLocMasts.isEmpty()) {
|
return;
|
}
|
for (AgvLocMast agvLocMast : agvLocMasts) {
|
ReturnT<String> returnT = autoMoveHandler.start(agvLocMast);
|
}
|
|
}
|
|
// 调拨出库
|
@Scheduled(cron = "0/2 * * * * ? ")
|
private void execute2(){
|
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
|
.eq("wrk_sts", 22)
|
.andNew().eq("io_type",108)
|
.eq("crn_no",2)
|
.orderBy("appe_time",true)
|
);
|
if (agvWrkMastList.isEmpty()) {
|
return;
|
}
|
for (AgvWrkMast agvWrkMast : agvWrkMastList) {
|
ReturnT<String> returnT = autoMoveHandler.start2(agvWrkMast);
|
}
|
|
}
|
|
@Scheduled(cron = "0/2 * * * * ? ")
|
private void execute5(){
|
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
|
.eq("wrk_sts", 22)
|
.andNew().eq("io_type",108)
|
.eq("crn_no",3)
|
.orderBy("appe_time",true)
|
);
|
if (agvWrkMastList.isEmpty()) {
|
return;
|
}
|
for (AgvWrkMast agvWrkMast : agvWrkMastList) {
|
ReturnT<String> returnT = autoMoveHandler.start2(agvWrkMast);
|
}
|
|
}
|
|
// 调拨出库
|
@Scheduled(cron = "0/2 * * * * ? ")
|
private void execute3(){
|
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
|
.eq("wrk_sts", 22)
|
.andNew().eq("io_type",111)
|
);
|
if (agvWrkMastList.isEmpty()) {
|
return;
|
}
|
for (AgvWrkMast agvWrkMast : agvWrkMastList) {
|
ReturnT<String> returnT = autoMoveHandler.start3(agvWrkMast);
|
}
|
|
}
|
|
// 空板自动回库 库位-接驳点
|
//@Scheduled(cron = "0/2 * * * * ? ")
|
private void autoEmptyBack(){
|
// 查询 不为1楼的空货架
|
List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
|
new EntityWrapper<AgvLocMast>()
|
.ne("floor", 1)
|
.eq("loc_sts","D")
|
.eq("loc_type1",3));
|
if (agvLocMasts.isEmpty()) {
|
return;
|
}
|
for (AgvLocMast agvLocMast : agvLocMasts) {
|
ReturnT<String> returnT = autoMoveHandler.autoEmptyBack(agvLocMast);
|
}
|
}
|
// 空板自动回库 接驳点 - 1楼库位
|
@Scheduled(cron = "0/2 * * * * ? ")
|
private void autoEmptyBack3(){
|
// 工作档为201 且 入出库类型为109
|
List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
|
.eq("wrk_sts", 214)
|
.eq("loc_no","")
|
.eq("io_type",113));
|
if (agvWrkMastList.isEmpty()) {
|
return;
|
}
|
for (AgvWrkMast agvWrkMast : agvWrkMastList) {
|
ReturnT<String> returnT = autoMoveHandler.autoEmptyBack3(agvWrkMast);
|
}
|
}
|
|
// 空板自动回库
|
// @Scheduled(cron = "0/2 * * * * ? ")
|
private void autoEmptyBack2(){
|
// 查询 不为1楼的空货架
|
List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
|
new EntityWrapper<AgvLocMast>()
|
.ne("floor", 1)
|
.eq("loc_sts","D")
|
.eq("loc_type1",3));
|
if (agvLocMasts.isEmpty()) {
|
return;
|
}
|
for (AgvLocMast agvLocMast : agvLocMasts) {
|
ReturnT<String> returnT = autoMoveHandler.autoEmptyBack2(agvLocMast);
|
}
|
}
|
|
/**
|
* 空板自动回库
|
* 库位-接驳点 库位-吸塑车间
|
* 每层最大 在 回库数量限制5条
|
* 优先选择先到接驳位(接驳位可入) 后选择直接回库
|
*/
|
@Scheduled(cron = "0/2 * * * * ? ")
|
private void autoEmptyBack4(){
|
// 查询 不为1楼的空货架
|
List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
|
new EntityWrapper<AgvLocMast>()
|
.ne("floor", 1)
|
.eq("loc_sts","D")
|
.eq("loc_type1",3));
|
if (agvLocMasts.isEmpty()) {
|
return;
|
}
|
for (AgvLocMast agvLocMast : agvLocMasts) {
|
ReturnT<String> returnT = autoMoveHandler.autoEmptyBack4(agvLocMast);
|
}
|
}
|
|
/**
|
* 站点是否自动
|
* 自动: 生成 109 自动回流
|
* 手动: 生成 113 手动回流
|
* 优先选择先到接驳位(接驳位可入) 后选择直接回库
|
*/
|
@Scheduled(cron = "0/2 * * * * ? ")
|
private void autoEmptyBack5(){
|
List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>()
|
.ne("floor", 1)
|
.eq("loc_sts", "F")
|
.like("dev_no", "DB"));
|
if (agvBasDevps.isEmpty()) {
|
return;
|
}
|
for (AgvBasDevp agvBasDevp : agvBasDevps) {
|
ReturnT<String> returnT = autoMoveHandler.autoEmptyBack5(agvBasDevp);
|
}
|
}
|
|
/**
|
* 检测1楼接驳点
|
* 手动: 生成 113 手动回流
|
*/
|
@Scheduled(cron = "0/2 * * * * ? ")
|
private void autoEmptyBack6(){
|
List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>()
|
.eq("floor", 1)
|
.eq("loc_sts", "F")
|
.like("dev_no", "DB"));
|
if (agvBasDevps.isEmpty()) {
|
return;
|
}
|
for (AgvBasDevp agvBasDevp : agvBasDevps) {
|
ReturnT<String> returnT = autoMoveHandler.autoEmptyBack6(agvBasDevp);
|
}
|
}
|
}
|