package com.zy.asrs.task;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.zy.asrs.domain.enums.NotifyMsgType;
|
import com.zy.asrs.entity.LocMast;
|
import com.zy.asrs.entity.WrkMast;
|
import com.zy.asrs.service.LocMastService;
|
import com.zy.asrs.service.WrkMastLogService;
|
import com.zy.asrs.service.WrkMastService;
|
import com.zy.asrs.utils.NotifyUtils;
|
import com.zy.core.enums.LocStsType;
|
import com.zy.core.enums.WrkIoType;
|
import com.zy.core.enums.WrkStsType;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
|
@Component
|
@Slf4j
|
public class WrkMastScheduler {
|
|
@Autowired
|
private WrkMastService wrkMastService;
|
@Autowired
|
private WrkMastLogService wrkMastLogService;
|
@Autowired
|
private LocMastService locMastService;
|
@Autowired
|
private NotifyUtils notifyUtils;
|
|
@Scheduled(cron = "0/1 * * * * ? ")
|
@Transactional
|
public void executeIn() {
|
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_INBOUND.sts));
|
if (wrkMasts.isEmpty()) {
|
return;
|
}
|
|
for (WrkMast wrkMast : wrkMasts) {
|
String locNo = wrkMast.getLocNo();
|
LocMast locMast = locMastService.queryByLoc(locNo);
|
if (locMast == null) {
|
log.info("[workNo={}]库位不存在", wrkMast.getWrkNo());
|
continue;
|
}
|
|
if (!locMast.getLocSts().equals("S")) {
|
log.info("[workNo={}]库位状态不处于S", wrkMast.getWrkNo());
|
continue;
|
}
|
|
locMast.setLocSts("F");
|
locMast.setModiTime(new Date());
|
boolean result = locMastService.updateById(locMast);
|
if (!result) {
|
log.info("[workNo={}]库位状态F更新失败", wrkMast.getWrkNo());
|
continue;
|
}
|
|
// 保存工作主档历史档
|
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
|
log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
// 删除工作主档
|
if (!wrkMastService.deleteById(wrkMast)) {
|
log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
|
//上报
|
notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
|
}
|
}
|
|
@Scheduled(cron = "0/1 * * * * ? ")
|
@Transactional
|
public void executeOut() {
|
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_OUTBOUND.sts));
|
if (wrkMasts.isEmpty()) {
|
return;
|
}
|
|
for (WrkMast wrkMast : wrkMasts) {
|
String locNo = wrkMast.getSourceLocNo();
|
LocMast locMast = locMastService.queryByLoc(locNo);
|
if (locMast == null) {
|
log.info("[workNo={}]库位不存在", wrkMast.getWrkNo());
|
continue;
|
}
|
|
if (!locMast.getLocSts().equals("R")) {
|
log.info("[workNo={}]库位状态不处于R", wrkMast.getWrkNo());
|
continue;
|
}
|
|
locMast.setLocSts("O");
|
locMast.setModiTime(new Date());
|
boolean result = locMastService.updateById(locMast);
|
if (!result) {
|
log.info("[workNo={}]库位状态O更新失败", wrkMast.getWrkNo());
|
continue;
|
}
|
|
// 保存工作主档历史档
|
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
|
log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
// 删除工作主档
|
if (!wrkMastService.deleteById(wrkMast)) {
|
log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
|
//上报
|
notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
|
}
|
}
|
|
@Scheduled(cron = "0/1 * * * * ? ")
|
@Transactional
|
public void executeLocMove() {
|
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_LOC_MOVE.sts));
|
if (wrkMasts.isEmpty()) {
|
return;
|
}
|
|
for (WrkMast wrkMast : wrkMasts) {
|
String sourceLocNo = wrkMast.getSourceLocNo();
|
String locNo = wrkMast.getLocNo();
|
LocMast locMast = locMastService.queryByLoc(locNo);
|
if (locMast == null) {
|
log.info("[workNo={}]库位不存在", wrkMast.getWrkNo());
|
continue;
|
}
|
|
if (!locMast.getLocSts().equals("S")) {
|
log.info("[workNo={}]库位状态不处于S", wrkMast.getWrkNo());
|
continue;
|
}
|
|
LocMast sourceLocMast = locMastService.queryByLoc(sourceLocNo);
|
if (sourceLocMast == null) {
|
log.info("[workNo={}]库位不存在", wrkMast.getWrkNo());
|
continue;
|
}
|
|
if (!sourceLocMast.getLocSts().equals("R")) {
|
log.info("[workNo={}]库位状态不处于R", wrkMast.getWrkNo());
|
continue;
|
}
|
|
locMast.setLocSts("F");
|
locMast.setModiTime(new Date());
|
boolean result = locMastService.updateById(locMast);
|
if (!result) {
|
log.info("[workNo={}]库位状态F更新失败", wrkMast.getWrkNo());
|
continue;
|
}
|
|
sourceLocMast.setLocSts("O");
|
sourceLocMast.setModiTime(new Date());
|
boolean result2 = locMastService.updateById(sourceLocMast);
|
if (!result2) {
|
log.info("[workNo={}]库位状态O更新失败", wrkMast.getWrkNo());
|
continue;
|
}
|
|
// 保存工作主档历史档
|
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
|
log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
// 删除工作主档
|
if (!wrkMastService.deleteById(wrkMast)) {
|
log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
|
//上报
|
notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast));
|
}
|
}
|
|
@Scheduled(cron = "0/1 * * * * ? ")
|
@Transactional
|
public void executeMove() {
|
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
|
.in("wrk_sts"
|
, WrkStsType.COMPLETE_MOVE.sts
|
, WrkStsType.COMPLETE_MOVE_TRANSPORT_LIFT.sts
|
, WrkStsType.COMPLETE_MOVE_TRANSPORT_LIFT_OUT.sts
|
, WrkStsType.MOVE_IN_NO_LIFT_14.sts
|
, WrkStsType.MOVE_OUT_NO_LIFT_13.sts
|
));
|
if (wrkMasts.isEmpty()) {
|
return;
|
}
|
|
for (WrkMast wrkMast : wrkMasts) {
|
WrkMast main = wrkMastService.selectByWorkNo(wrkMast.getMainWrkNo());
|
if (main != null) {
|
if (main.getIoType() == WrkIoType.IN.id) {
|
main.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
|
} else if (main.getIoType() == WrkIoType.OUT.id) {
|
main.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts);
|
}
|
main.setModiTime(new Date());
|
if (!wrkMastService.updateById(main)) {
|
log.info("更新主工作档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
}
|
// 保存工作主档历史档
|
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
|
log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
// 删除工作主档
|
if (!wrkMastService.deleteById(wrkMast)) {
|
log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
}
|
}
|
|
@Scheduled(cron = "0/1 * * * * ? ")
|
@Transactional
|
public void executeCharge() {
|
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_CHARGE.sts));
|
if (wrkMasts.isEmpty()) {
|
return;
|
}
|
|
for (WrkMast wrkMast : wrkMasts) {
|
// 保存工作主档历史档
|
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
|
log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
// 删除工作主档
|
if (!wrkMastService.deleteById(wrkMast)) {
|
log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
|
//上报
|
notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_CHARGE_COMPLETE, JSON.toJSONString(wrkMast));
|
}
|
}
|
|
@Scheduled(cron = "0/1 * * * * ? ")
|
@Transactional
|
public void executeCancelTask() {
|
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("mk", "taskCancel"));
|
if (wrkMasts.isEmpty()) {
|
return;
|
}
|
|
for (WrkMast wrkMast : wrkMasts) {
|
// 保存工作主档历史档
|
if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
|
log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
// 删除工作主档
|
if (!wrkMastService.deleteById(wrkMast)) {
|
log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo());
|
}
|
|
if (wrkMast.getIoType() == WrkIoType.IN.id) {
|
LocMast locMast = locMastService.queryByLoc(wrkMast.getLocNo());
|
locMast.setLocSts(String.valueOf(LocStsType.O));
|
locMast.setModiTime(new Date());
|
locMastService.updateById(locMast);
|
} else if (wrkMast.getIoType() == WrkIoType.OUT.id) {
|
LocMast locMast = locMastService.queryByLoc(wrkMast.getSourceLocNo());
|
locMast.setLocSts(String.valueOf(LocStsType.O));
|
locMast.setModiTime(new Date());
|
locMastService.updateById(locMast);
|
} else if (wrkMast.getIoType() == WrkIoType.LOC_MOVE.id) {
|
LocMast sourceLocMast = locMastService.queryByLoc(wrkMast.getSourceLocNo());
|
LocMast locMast = locMastService.queryByLoc(wrkMast.getLocNo());
|
if (sourceLocMast.getLocSts().equals(String.valueOf(LocStsType.R))) {
|
sourceLocMast.setLocSts(String.valueOf(LocStsType.F));
|
sourceLocMast.setModiTime(new Date());
|
locMastService.updateById(sourceLocMast);
|
}
|
|
if (locMast.getLocSts().equals(String.valueOf(LocStsType.S))) {
|
locMast.setLocSts(String.valueOf(LocStsType.O));
|
locMast.setModiTime(new Date());
|
locMastService.updateById(locMast);
|
}
|
}
|
|
//上报
|
notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_CANCEL, JSON.toJSONString(wrkMast));
|
}
|
}
|
|
}
|