fix:任务添加注解
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package org.nl.b_lms.pdm.screen.contorller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import org.nl.b_lms.pdm.screen.store.InMemoryStore;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.springframework.http.MediaType;
|
||||
@@ -22,7 +23,7 @@ public class FaultController {
|
||||
|
||||
@GetMapping
|
||||
@SaIgnore
|
||||
public List<SchBaseTask> getFaults(@RequestParam(required = false) Integer limit) {
|
||||
public JSONArray getFaults(@RequestParam(required = false) Integer limit) {
|
||||
return store.findFaults();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.b_lms.pdm.screen.see;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import org.nl.b_lms.pdm.screen.store.InMemoryStore;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -41,7 +42,7 @@ public class SseBroadcaster {
|
||||
}
|
||||
|
||||
public void pushFaultsSnapshot() {
|
||||
List<SchBaseTask> snapshot = store.findFaults();
|
||||
JSONArray snapshot = store.findFaults();
|
||||
pushFaults(snapshot);
|
||||
}
|
||||
|
||||
@@ -56,7 +57,7 @@ public class SseBroadcaster {
|
||||
}
|
||||
}
|
||||
|
||||
public void pushFaults(List<SchBaseTask> faults) {
|
||||
public void pushFaults(JSONArray faults) {
|
||||
if (faultEmitters.isEmpty()) return;
|
||||
for (SseEmitter emitter : faultEmitters) {
|
||||
try {
|
||||
|
||||
@@ -9,6 +9,8 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.support.TransactionSynchronization;
|
||||
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
/**
|
||||
* 注解驱动的 SSE 推送切面:
|
||||
* - 方法或类标注 {@link PushSseSnapshot},在成功返回后推送最新快照;
|
||||
@@ -20,6 +22,9 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
|
||||
public class TaskUpdateBroadcastAspect {
|
||||
private final SseBroadcaster broadcaster;
|
||||
|
||||
// 非阻塞并发保护:同一时刻仅允许一次推送执行,其他并发调用直接跳过
|
||||
private final ReentrantLock pushLock = new ReentrantLock();
|
||||
|
||||
public TaskUpdateBroadcastAspect(SseBroadcaster broadcaster) {
|
||||
this.broadcaster = broadcaster;
|
||||
}
|
||||
@@ -47,21 +52,29 @@ public class TaskUpdateBroadcastAspect {
|
||||
|
||||
// 任一写操作成功后,推送最新快照(替代定时器)
|
||||
private void broadcastAfterCommitOrNow(PushSseSnapshot ann) {
|
||||
Runnable doPush = () -> {
|
||||
if (ann.tasks()) {
|
||||
broadcaster.pushTasksSnapshot();
|
||||
Runnable doPushGuarded = () -> {
|
||||
// 非阻塞尝试获取锁:失败则直接跳过本次推送
|
||||
if (!pushLock.tryLock()) {
|
||||
return;
|
||||
}
|
||||
if (ann.faults()) {
|
||||
try { broadcaster.pushFaultsSnapshot(); } catch (Throwable ignored) {}
|
||||
try {
|
||||
if (ann.tasks()) {
|
||||
broadcaster.pushTasksSnapshot();
|
||||
}
|
||||
if (ann.faults()) {
|
||||
try { broadcaster.pushFaultsSnapshot(); } catch (Throwable ignored) {}
|
||||
}
|
||||
} finally {
|
||||
pushLock.unlock();
|
||||
}
|
||||
};
|
||||
if (TransactionSynchronizationManager.isSynchronizationActive()) {
|
||||
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
|
||||
@Override
|
||||
public void afterCommit() { doPush.run(); }
|
||||
public void afterCommit() { doPushGuarded.run(); }
|
||||
});
|
||||
} else {
|
||||
doPush.run();
|
||||
doPushGuarded.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,73 @@
|
||||
package org.nl.b_lms.pdm.screen.store;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class InMemoryStore {
|
||||
|
||||
@Autowired
|
||||
private IschBaseTaskService ischBaseTaskService;
|
||||
|
||||
public List<SchBaseTask> findTasks() {
|
||||
List<String> targetType = Arrays.asList(
|
||||
"010702", "010703", "010704", "010706", "010710", "010712", "010714", "010715",
|
||||
"010901", "010902", "010903", "010904", "010905", "010906", "010907", "010908",
|
||||
"010909", "010910", "010911", "010912", "010913", "010914", "010915"
|
||||
);
|
||||
return ischBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.lt(SchBaseTask::getTask_status, "07"));
|
||||
.eq(SchBaseTask::getIs_delete, false)
|
||||
.in(SchBaseTask::getTask_type, targetType)
|
||||
.lt(SchBaseTask::getTask_status, "07")
|
||||
.select(SchBaseTask::getTask_code,
|
||||
SchBaseTask::getTask_type,
|
||||
SchBaseTask::getCreate_name,
|
||||
SchBaseTask::getPoint_code1,
|
||||
SchBaseTask::getPoint_code2,
|
||||
SchBaseTask::getPoint_code3,
|
||||
SchBaseTask::getPoint_code4,
|
||||
SchBaseTask::getVehicle_code,
|
||||
SchBaseTask::getTask_status,
|
||||
SchBaseTask::getCreate_time
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
public List<SchBaseTask> findFaults() {
|
||||
return ischBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.lt(SchBaseTask::getTask_status, "07"));
|
||||
public JSONArray findFaults() {
|
||||
JSONArray blk_rows = WQLObject.getWQLObject("em_bi_monitordevice").query("product_area = 'BLK' AND is_crux = '1' AND region_code IN ('RK','NBJ','DDJ')").getResultJSONArray(0);
|
||||
List<String> blkList = new ArrayList<>();
|
||||
for (int i = 0; i < blk_rows.size(); i++) {
|
||||
JSONObject row = blk_rows.getJSONObject(i);
|
||||
blkList.add(row.getString("device_code"));
|
||||
}
|
||||
|
||||
|
||||
WmsToAcsServiceImpl bean = SpringContextHolder.getBean(WmsToAcsServiceImpl.class);
|
||||
JSONObject result2;
|
||||
try {
|
||||
result2 = bean.getDeviceErrorInfo(blkList, "BLK");
|
||||
} catch (Exception e) {
|
||||
result2 = new JSONObject();
|
||||
log.info(e.getMessage());
|
||||
}
|
||||
// 调用acs接口获取设备
|
||||
JSONArray blk_data = result2.getJSONArray("data");
|
||||
return ObjectUtil.isEmpty(blk_data) ? blk_data : new JSONArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.b_lms.sch.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -47,6 +48,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
@PushSseSnapshot
|
||||
public class TwoOutBoxTask extends AbstractAcsTask {
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,6 +13,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -46,6 +47,7 @@ import java.util.stream.Collectors;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class DjqTask extends AbstractAcsTask {
|
||||
@Resource
|
||||
private IschBaseTaskService taskService;
|
||||
|
||||
@@ -45,6 +45,7 @@ import java.util.stream.Collectors;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class DjqToKzjhcwTask extends AbstractAcsTask {
|
||||
|
||||
|
||||
@@ -106,7 +107,6 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@PushSseSnapshot(faults = false)
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
String now = DateUtil.now();
|
||||
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -40,6 +41,8 @@ import java.util.List;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
|
||||
public class GzqTask extends AbstractAcsTask {
|
||||
|
||||
private final String THIS_CLASS = GzqTask.class.getName();
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -40,6 +41,7 @@ import java.util.List;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class GzqToKzjhcwTask extends AbstractAcsTask {
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -50,6 +51,7 @@ import java.util.stream.Stream;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class MzhcwTask extends AbstractAcsTask {
|
||||
|
||||
private final String THIS_CLASS = MzhcwTask.class.getName();
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -40,6 +41,7 @@ import java.util.List;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class SendDjqKzjTask extends AbstractAcsTask {
|
||||
@Resource
|
||||
private IschBaseTaskService taskService;
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -39,6 +40,7 @@ import java.util.List;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class SendGzqKzjTask extends AbstractAcsTask {
|
||||
@Resource
|
||||
private IschBaseTaskService taskService;
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -39,6 +40,7 @@ import java.util.List;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class ShiftingTask extends AbstractAcsTask {
|
||||
|
||||
private final String THIS_CLASS = ShiftingTask.class.getName();
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -40,6 +41,7 @@ import java.util.List;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class SsxDjwTask extends AbstractAcsTask {
|
||||
|
||||
private final String THIS_CLASS = SsxDjwTask.class.getName();
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
@@ -51,6 +52,7 @@ import java.util.concurrent.TimeUnit;
|
||||
*/
|
||||
@Service()
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class ZxDjwTask extends AbstractAcsTask {
|
||||
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper;
|
||||
import org.nl.b_lms.pdm.screen.see.aop.PushSseSnapshot;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
@@ -49,6 +50,7 @@ import java.util.List;
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@PushSseSnapshot(faults = false)
|
||||
public class ZxqTask extends AbstractAcsTask {
|
||||
|
||||
@Resource
|
||||
|
||||
Reference in New Issue
Block a user