增加了每天晚上凌晨一点自动推送数据至情报平台和省厅系统的功能
This commit is contained in:
@@ -108,7 +108,7 @@ public class EntrustMaterialCheckoutResultController {
|
|||||||
@ApiOperation("推送检出结果")
|
@ApiOperation("推送检出结果")
|
||||||
public R pushSuspectDetectionResult(String entrustId) throws SQLException {
|
public R pushSuspectDetectionResult(String entrustId) throws SQLException {
|
||||||
DLPUser dlpUser = SecurityUtils.getUser();
|
DLPUser dlpUser = SecurityUtils.getUser();
|
||||||
return R.ok(entrustMaterialCheckoutResultService.pushSuspectDetectionResult(entrustId, dlpUser));
|
return R.ok(entrustMaterialCheckoutResultService.pushSuspectDetectionResult(entrustId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pushSuspectDetectionResultTask")
|
@GetMapping("/pushSuspectDetectionResultTask")
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ public interface EntrustMaterialCheckoutResultService extends IService<EntrustMa
|
|||||||
|
|
||||||
R getExcelByResult(HttpServletResponse response, ResultExcelDTO excelDTO) throws IOException;
|
R getExcelByResult(HttpServletResponse response, ResultExcelDTO excelDTO) throws IOException;
|
||||||
|
|
||||||
boolean pushSuspectDetectionResult(String entrustmentId, DLPUser user) throws SQLException;
|
boolean pushSuspectDetectionResult(String entrustmentId) throws SQLException;
|
||||||
|
|
||||||
R batchPushHistoryDataToProvince(DLPUser user, LocalDateTime startTime, LocalDateTime endTime, Integer entrustType);
|
R batchPushHistoryDataToProvince(DLPUser user, LocalDateTime startTime, LocalDateTime endTime, Integer entrustType);
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ import digital.laboratory.platform.entrustment.vo.EntrustmentVO;
|
|||||||
*/
|
*/
|
||||||
public interface PushDataToLabsCareService {
|
public interface PushDataToLabsCareService {
|
||||||
|
|
||||||
|
// @Scheduled(cron = "* */5 * * * ?") // 测试
|
||||||
|
// @Scheduled(cron = "0 0 1 * * ?") // 每天凌晨 1 点执行
|
||||||
|
void timingPushDataToLabsCare() throws IllegalAccessException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 推送鉴定事项确认书数据
|
* 推送鉴定事项确认书数据
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -106,6 +106,11 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
String intDBUsername = "wsjc";
|
String intDBUsername = "wsjc";
|
||||||
String intDBPassword = "wsjc9985";
|
String intDBPassword = "wsjc9985";
|
||||||
|
|
||||||
|
// // 测试数据库连接信息
|
||||||
|
// String intDBUrl = "jdbc:mysql://localhost:3306/dlp_inspection?characterEncoding=utf8&serverTimezone=Asia/Shanghai";
|
||||||
|
// String intDBUsername = "root";
|
||||||
|
// String intDBPassword = "123456";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建委托材料检验结果字符串
|
* 构建委托材料检验结果字符串
|
||||||
*
|
*
|
||||||
@@ -1089,7 +1094,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean pushSuspectDetectionResult(String entrustmentId, DLPUser user) {
|
public boolean pushSuspectDetectionResult(String entrustmentId) {
|
||||||
// 参数校验
|
// 参数校验
|
||||||
if (StringUtils.isBlank(entrustmentId)) {
|
if (StringUtils.isBlank(entrustmentId)) {
|
||||||
throw new IllegalArgumentException("entrustmentId不能为空");
|
throw new IllegalArgumentException("entrustmentId不能为空");
|
||||||
@@ -1100,10 +1105,6 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
if (entrustment == null) {
|
if (entrustment == null) {
|
||||||
throw new IllegalArgumentException("未找到委托信息:" + entrustmentId);
|
throw new IllegalArgumentException("未找到委托信息:" + entrustmentId);
|
||||||
}
|
}
|
||||||
boolean push = false;
|
|
||||||
|
|
||||||
// 推送数据至省厅系统
|
|
||||||
push = this.pushQualitativeReportData(entrustment, user);
|
|
||||||
|
|
||||||
// 获取案件信息
|
// 获取案件信息
|
||||||
CaseEvent caseEvent = caseEventService.getById(entrustment.getCaseId());
|
CaseEvent caseEvent = caseEventService.getById(entrustment.getCaseId());
|
||||||
@@ -1127,9 +1128,6 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
.list();
|
.list();
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(suspects)) {
|
if (CollectionUtils.isEmpty(suspects)) {
|
||||||
if (push) {
|
|
||||||
throw new RuntimeException("推送数据至省厅系统成功,但未找到嫌疑人信息,请检查案件信息!");
|
|
||||||
} else
|
|
||||||
throw new IllegalArgumentException("未找到嫌疑人信息:" + entrustmentId + ",请先添加嫌疑人信息!");
|
throw new IllegalArgumentException("未找到嫌疑人信息:" + entrustmentId + ",请先添加嫌疑人信息!");
|
||||||
}
|
}
|
||||||
// 构造物证材料映射
|
// 构造物证材料映射
|
||||||
@@ -1146,7 +1144,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
.sorted(Comparator.comparingInt(EntrustMaterialCheckoutResultVO::getOrderNo))
|
.sorted(Comparator.comparingInt(EntrustMaterialCheckoutResultVO::getOrderNo))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
push = pushToDatabase(suspects, resultVOS, entrustment, caseEvent, user);
|
boolean push = pushToDatabase(suspects, resultVOS, entrustment, caseEvent);
|
||||||
|
|
||||||
if (push) {
|
if (push) {
|
||||||
entrustment.setPlatformFlag(true);
|
entrustment.setPlatformFlag(true);
|
||||||
@@ -1177,7 +1175,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
.list();
|
.list();
|
||||||
String flag = "AppraisalDocument" + ":true";
|
String flag = "AppraisalDocument" + ":true";
|
||||||
for (Entrustment entrust : entrusts) {
|
for (Entrustment entrust : entrusts) {
|
||||||
if (this.pushQualitativeReportData(entrust, user)) {
|
if (this.pushQualitativeReportData(entrust)) {
|
||||||
// 处理 PushFlag,防止 null,并确保 flag 至少存在一次
|
// 处理 PushFlag,防止 null,并确保 flag 至少存在一次
|
||||||
List<String> flagList = Optional.ofNullable(StrUtil.split(entrust.getPushFlag(), StrUtil.COMMA))
|
List<String> flagList = Optional.ofNullable(StrUtil.split(entrust.getPushFlag(), StrUtil.COMMA))
|
||||||
.orElse(new ArrayList<>());
|
.orElse(new ArrayList<>());
|
||||||
@@ -1228,7 +1226,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private boolean pushToDatabase(List<Suspect> suspects, List<EntrustMaterialCheckoutResultVO> resultVOS, Entrustment entrustment, CaseEvent caseEvent, DLPUser user) {
|
private boolean pushToDatabase(List<Suspect> suspects, List<EntrustMaterialCheckoutResultVO> resultVOS, Entrustment entrustment, CaseEvent caseEvent) {
|
||||||
|
|
||||||
try (Connection connection = DriverManager.getConnection(intDBUrl, intDBUsername, intDBPassword)) {
|
try (Connection connection = DriverManager.getConnection(intDBUrl, intDBUsername, intDBPassword)) {
|
||||||
|
|
||||||
@@ -1254,7 +1252,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
pstmt.setString(10, caseEvent.getCaseBrief());
|
pstmt.setString(10, caseEvent.getCaseBrief());
|
||||||
pstmt.setDate(11, java.sql.Date.valueOf(caseEvent.getHappenTime()));
|
pstmt.setDate(11, java.sql.Date.valueOf(caseEvent.getHappenTime()));
|
||||||
pstmt.setTimestamp(12, Timestamp.valueOf(LocalDateTime.now()));
|
pstmt.setTimestamp(12, Timestamp.valueOf(LocalDateTime.now()));
|
||||||
pstmt.setString(13, user.getName());
|
pstmt.setString(13, "管理员");
|
||||||
System.out.println(entrustment);
|
System.out.println(entrustment);
|
||||||
pstmt.setDate(14, java.sql.Date.valueOf(entrustment.getAcceptTime().toLocalDate()));
|
pstmt.setDate(14, java.sql.Date.valueOf(entrustment.getAcceptTime().toLocalDate()));
|
||||||
pstmt.setString(15, entrustment.getClientOrgName());
|
pstmt.setString(15, entrustment.getClientOrgName());
|
||||||
@@ -1297,8 +1295,8 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean pushQualitativeReportData(Entrustment entrust, DLPUser dlpUser) {
|
public boolean pushQualitativeReportData(Entrustment entrust) {
|
||||||
JSONObject jsonObject = this.buildQualitativeReportJsonPayload(entrust, dlpUser);
|
JSONObject jsonObject = this.buildQualitativeReportJsonPayload(entrust);
|
||||||
String type = entrust.getEntrustmentType() == 0 ? "常规毒品" : "生物样本";
|
String type = entrust.getEntrustmentType() == 0 ? "常规毒品" : "生物样本";
|
||||||
log.info("推送" + type + "定性报告数据, 受理编号: {}, 请求数据: {}", entrust.getAcceptNo(), jsonObject);
|
log.info("推送" + type + "定性报告数据, 受理编号: {}, 请求数据: {}", entrust.getAcceptNo(), jsonObject);
|
||||||
try {
|
try {
|
||||||
@@ -1345,7 +1343,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
* @param entrust 委托信息
|
* @param entrust 委托信息
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private JSONObject buildQualitativeReportJsonPayload(Entrustment entrust, DLPUser dlpUser) {
|
private JSONObject buildQualitativeReportJsonPayload(Entrustment entrust) {
|
||||||
|
|
||||||
boolean ret = false;
|
boolean ret = false;
|
||||||
if (!StringUtils.isNotBlank(entrust.getId())) {
|
if (!StringUtils.isNotBlank(entrust.getId())) {
|
||||||
@@ -1356,8 +1354,8 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
jsonObject.set("jiandingwenshuhao", String.format("[%s]%s号", splitAcceptNo[0], splitAcceptNo[1])); // 鉴定文书号
|
jsonObject.set("jiandingwenshuhao", String.format("[%s]%s号", splitAcceptNo[0], splitAcceptNo[1])); // 鉴定文书号
|
||||||
jsonObject.set("jyy1qm", dlpUser.getName()); // 检测人
|
jsonObject.set("jyy1qm", "管理员"); // 检测人
|
||||||
jsonObject.set("jyyr2qm", dlpUser.getName()); // 检测人
|
jsonObject.set("jyyr2qm", "管理员"); // 检测人
|
||||||
jsonObject.set("jyy1zc", "#NULL#"); // 检验人1专业技术资格或职称
|
jsonObject.set("jyy1zc", "#NULL#"); // 检验人1专业技术资格或职称
|
||||||
jsonObject.set("jyy2zc", "#NULL#"); // 检验人2专业技术资格或职称
|
jsonObject.set("jyy2zc", "#NULL#"); // 检验人2专业技术资格或职称
|
||||||
jsonObject.set("qfrq", "#NULL#");
|
jsonObject.set("qfrq", "#NULL#");
|
||||||
@@ -1627,7 +1625,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
List<EntrustMaterialCheckoutResultVO> vos = resutlMap.get(entrust.getId());
|
List<EntrustMaterialCheckoutResultVO> vos = resutlMap.get(entrust.getId());
|
||||||
List<Suspect> suspects = susMap.get(entrust.getId());
|
List<Suspect> suspects = susMap.get(entrust.getId());
|
||||||
CaseEvent caseEvent = caseMap.get(entrust.getCaseId());
|
CaseEvent caseEvent = caseMap.get(entrust.getCaseId());
|
||||||
boolean ret = this.pushToDatabase(suspects, vos, entrust, caseEvent, dlpUser);
|
boolean ret = this.pushToDatabase(suspects, vos, entrust, caseEvent);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
return R.failed("推送失败");
|
return R.failed("推送失败");
|
||||||
}
|
}
|
||||||
@@ -2149,7 +2147,7 @@ public class EntrustMaterialCheckoutResultServiceImpl extends ServiceImpl<Entrus
|
|||||||
entrust.setClientOrgName(datum.get("委托单位"));
|
entrust.setClientOrgName(datum.get("委托单位"));
|
||||||
int type = datum.get("类型").equals("常规毒品") ? 0 : 1;
|
int type = datum.get("类型").equals("常规毒品") ? 0 : 1;
|
||||||
entrust.setEntrustmentType(type);
|
entrust.setEntrustmentType(type);
|
||||||
if (this.pushQualitativeReportData(entrust, dlpUser)) {
|
if (this.pushQualitativeReportData(entrust)) {
|
||||||
successCount++;
|
successCount++;
|
||||||
} else {
|
} else {
|
||||||
failCount++;
|
failCount++;
|
||||||
|
|||||||
@@ -10,10 +10,7 @@ import digital.laboratory.platform.entrustment.entity.Entrustment;
|
|||||||
import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial;
|
import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial;
|
||||||
import digital.laboratory.platform.entrustment.enums.EntrustStatusConstants;
|
import digital.laboratory.platform.entrustment.enums.EntrustStatusConstants;
|
||||||
import digital.laboratory.platform.entrustment.mapper.EntrustmentMapper;
|
import digital.laboratory.platform.entrustment.mapper.EntrustmentMapper;
|
||||||
import digital.laboratory.platform.entrustment.service.CommonFeignService;
|
import digital.laboratory.platform.entrustment.service.*;
|
||||||
import digital.laboratory.platform.entrustment.service.EntrustmentIdentificationMaterialService;
|
|
||||||
import digital.laboratory.platform.entrustment.service.EntrustmentService;
|
|
||||||
import digital.laboratory.platform.entrustment.service.PushDataToLabsCareService;
|
|
||||||
import digital.laboratory.platform.entrustment.vo.EntrustmentVO;
|
import digital.laboratory.platform.entrustment.vo.EntrustmentVO;
|
||||||
import digital.laboratory.platform.entrustment.vo.MaterialListForBookVo;
|
import digital.laboratory.platform.entrustment.vo.MaterialListForBookVo;
|
||||||
import digital.laboratory.platform.othersys.utils.HttpsUtils;
|
import digital.laboratory.platform.othersys.utils.HttpsUtils;
|
||||||
@@ -28,7 +25,6 @@ import javax.annotation.Resource;
|
|||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -58,6 +54,9 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService
|
|||||||
@Resource
|
@Resource
|
||||||
private EntrustmentIdentificationMaterialService entrustmentIdentificationMaterialService;
|
private EntrustmentIdentificationMaterialService entrustmentIdentificationMaterialService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private EntrustMaterialCheckoutResultService resultService;
|
||||||
|
|
||||||
private final static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
|
private final static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
|
||||||
|
|
||||||
// "#NULL#" 作为空数据的占位符, 对于系统中没有的信息以占位符代替
|
// "#NULL#" 作为空数据的占位符, 对于系统中没有的信息以占位符代替
|
||||||
@@ -73,8 +72,9 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService
|
|||||||
/**
|
/**
|
||||||
* 做一个定时推送,对于推送失败的委托进行重新推送, 每天凌晨1点推送
|
* 做一个定时推送,对于推送失败的委托进行重新推送, 每天凌晨1点推送
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "* */5 * * * ?") // 测试
|
// @Scheduled(cron = "0 * * * * ?")
|
||||||
// @Scheduled(cron = "0 0 1 * * ?") // 每天凌晨 1 点执行
|
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨 1 点执行
|
||||||
|
@Override
|
||||||
public void timingPushDataToLabsCare() throws IllegalAccessException {
|
public void timingPushDataToLabsCare() throws IllegalAccessException {
|
||||||
log.info("开始推送数据到 LabsCare");
|
log.info("开始推送数据到 LabsCare");
|
||||||
// 查询受理后推送失败的委托
|
// 查询受理后推送失败的委托
|
||||||
@@ -114,6 +114,28 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
List<EntrustmentVO> entrustmentVOS = entrustmentMapper.getEntrustmentVOList(
|
||||||
|
Wrappers.<Entrustment>query()
|
||||||
|
.in("e.status",
|
||||||
|
EntrustStatusConstants.ENTRUST_STATUS_ACCEPTED.getStatus(),
|
||||||
|
EntrustStatusConstants.ENTRUST_STATUS_TEST_FINISH.getStatus(),
|
||||||
|
EntrustStatusConstants.ENTRUST_STATUS_COMPLETED.getStatus())
|
||||||
|
.and(wrapper -> wrapper
|
||||||
|
.isNull("e.platform_flag")
|
||||||
|
.or()
|
||||||
|
.like("e.platform_flag", "false")
|
||||||
|
));
|
||||||
|
Integer count1 = 0;
|
||||||
|
log.info("开始推送数据到 情报平台");
|
||||||
|
for (EntrustmentVO entrustmentVO : entrustmentVOS) {
|
||||||
|
try {
|
||||||
|
resultService.pushSuspectDetectionResult(entrustmentVO.getId());
|
||||||
|
count1++;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("推送鉴定结果数据失败, 受理编号: {}, 响应: {}", entrustmentVO.getAcceptNo(), e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.info("成功推送 {} 条数据到 情报平台", count1);
|
||||||
log.info("成功推送 {} 条数据到 LabsCare", count);
|
log.info("成功推送 {} 条数据到 LabsCare", count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user