Merge pull request 'develop' (#209) from develop into master
Reviewed-on: http://git.xdadan.loc/tanex/emis-service/pulls/209
This commit is contained in:
commit
e160c01b88
@ -903,26 +903,78 @@ public class EmisCommonController extends EmisBaseController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 定时扫描运单货物组批次是否正确录入
|
* 定时扫描运单货物组批次是否正确录入
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("/autoScanSiteBatch")
|
@GetMapping("/autoScanSiteBatch")
|
||||||
public AjaxResult autoScanSiteBatch(String lineCode){
|
public AjaxResult autoScanSiteBatch(String lineCode) {
|
||||||
String lockKey="autoScanSiteBatch";
|
String statusKey = "autoScanSiteBatch_status";
|
||||||
log.info("autoScanSiteBatch start");
|
log.info("autoScanSiteBatch start");
|
||||||
|
|
||||||
// 加锁查询
|
// 检查任务是否正在执行
|
||||||
redissonService.lock(lockKey,300);
|
String currentStatus = redissonService.getStr(statusKey);
|
||||||
try{
|
if ("RUNNING".equals(currentStatus)) {
|
||||||
emisTmsSiteBatchMissService.autoScanSiteBatch(lineCode);
|
log.warn("autoScanSiteBatch is already running, request rejected");
|
||||||
}catch(Exception ex){
|
return AjaxResult.error("任务正在执行中,请稍后再试");
|
||||||
ex.printStackTrace();
|
|
||||||
log.error("autoScanSiteBatch exception:"+ex.getMessage());
|
|
||||||
}
|
}
|
||||||
log.info("autoScanSiteBatch end");
|
|
||||||
|
|
||||||
redissonService.unlock(lockKey);
|
try {
|
||||||
return AjaxResult.success("发送成功");
|
// 设置任务状态为运行中,设置较长的过期时间(30分钟)
|
||||||
|
// 这样即使异步任务没有正确清除状态,也会在30分钟后自动过期
|
||||||
|
redissonService.setStr(statusKey, "RUNNING", 1800);
|
||||||
|
|
||||||
|
// 异步执行任务
|
||||||
|
emisTmsSiteBatchMissService.autoScanSiteBatch(lineCode);
|
||||||
|
log.info("autoScanSiteBatch async task started");
|
||||||
|
|
||||||
|
return AjaxResult.success("异步任务已启动,请稍后查看执行结果");
|
||||||
|
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
log.error("autoScanSiteBatch exception:" + ex.getMessage());
|
||||||
|
// 如果启动失败,清除状态
|
||||||
|
redissonService.setStr(statusKey, "", 0);
|
||||||
|
return AjaxResult.error("任务启动失败:" + ex.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询autoScanSiteBatch任务状态
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/checkAutoScanSiteBatchStatus")
|
||||||
|
public AjaxResult checkAutoScanSiteBatchStatus() {
|
||||||
|
String statusKey = "autoScanSiteBatch_status";
|
||||||
|
String currentStatus = redissonService.getStr(statusKey);
|
||||||
|
|
||||||
|
if ("RUNNING".equals(currentStatus)) {
|
||||||
|
return AjaxResult.success("任务正在执行中");
|
||||||
|
} else {
|
||||||
|
return AjaxResult.success("任务未在执行");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除autoScanSiteBatch任务状态
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/clearAutoScanSiteBatchStatus")
|
||||||
|
public AjaxResult clearAutoScanSiteBatchStatus() {
|
||||||
|
String statusKey = "autoScanSiteBatch_status";
|
||||||
|
log.info("clearAutoScanSiteBatchStatus start");
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 清除任务状态
|
||||||
|
redissonService.setStr(statusKey, "", 0);
|
||||||
|
log.info("autoScanSiteBatch status cleared successfully");
|
||||||
|
return AjaxResult.success("任务状态已清除");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
log.error("clearAutoScanSiteBatchStatus exception:" + ex.getMessage());
|
||||||
|
return AjaxResult.error("清除状态失败:" + ex.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.xdadan.erp.common.core.redis.RedissonService;
|
||||||
import com.xdadan.erp.emis.domain.*;
|
import com.xdadan.erp.emis.domain.*;
|
||||||
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
|
||||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
@ -55,6 +56,9 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmisTmsSiteBatchMissRecordMapper emisTmsSiteBatchMissRecordMapper;
|
private EmisTmsSiteBatchMissRecordMapper emisTmsSiteBatchMissRecordMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
RedissonService redissonService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询TMS漏组批次信息
|
* 查询TMS漏组批次信息
|
||||||
*
|
*
|
||||||
@ -428,6 +432,14 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
|
|||||||
Thread.currentThread().interrupt();
|
Thread.currentThread().interrupt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 清除任务状态
|
||||||
|
try {
|
||||||
|
String statusKey = "autoScanSiteBatch_status";
|
||||||
|
redissonService.setStr(statusKey, "", 0);
|
||||||
|
log.info("autoScanSiteBatch task status cleared");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Failed to clear autoScanSiteBatch status", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user