From f323a4ba5b088076cd234d817cb232eeadffcd51 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Wed, 5 Jul 2023 14:07:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E5=BA=9F=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/api/TaskDistributeService.java | 3 + .../report/api/dto/ReportHospitalTwoDto.java | 2 + .../api/impl/TaskDistributeServiceImpl.java | 17 ++ .../config/ApplicationBusinessConfig.java | 2 + .../report/config/TaskValidateConfig.java | 58 ++++++ .../report/controller/ApiTestController.java | 6 + .../controller/ReportDownController.java | 6 + .../server/report/enums/DataTypeEnum.java | 17 ++ .../server/report/enums/OperatorEnum.java | 30 ++++ .../docus/server/report/job/ReportJob.java | 118 ++++++++++-- .../validate/CollectTaskValidation.java | 169 ++++++++++++++++++ src/main/resources/bootstrap.yml | 3 +- 12 files changed, 415 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/docus/server/report/config/TaskValidateConfig.java create mode 100644 src/main/java/com/docus/server/report/enums/DataTypeEnum.java create mode 100644 src/main/java/com/docus/server/report/enums/OperatorEnum.java create mode 100644 src/main/java/com/docus/server/report/validate/CollectTaskValidation.java diff --git a/src/main/java/com/docus/server/report/api/TaskDistributeService.java b/src/main/java/com/docus/server/report/api/TaskDistributeService.java index 79bc373..c286635 100644 --- a/src/main/java/com/docus/server/report/api/TaskDistributeService.java +++ b/src/main/java/com/docus/server/report/api/TaskDistributeService.java @@ -1,5 +1,6 @@ package com.docus.server.report.api; +import com.docus.infrastructure.web.api.CommonResult; import com.docus.server.report.api.dto.ReportDownTwoDto; /** @@ -18,4 +19,6 @@ public interface TaskDistributeService { * @return 任务信息 */ ReportDownTwoDto getNoViewTaskByCollectorId(String collectorId); + + CommonResult cancel(Long taskId); } diff --git a/src/main/java/com/docus/server/report/api/dto/ReportHospitalTwoDto.java b/src/main/java/com/docus/server/report/api/dto/ReportHospitalTwoDto.java index 1781f66..f8e9c56 100644 --- a/src/main/java/com/docus/server/report/api/dto/ReportHospitalTwoDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportHospitalTwoDto.java @@ -20,6 +20,8 @@ public class ReportHospitalTwoDto { private String disDate; @ApiModelProperty(value = "出院科室名称") private String disDeptName; + @ApiModelProperty(value = "出院科室名称") + private String admissDeptName; @ApiModelProperty(value = "卡号") private String admissId; } diff --git a/src/main/java/com/docus/server/report/api/impl/TaskDistributeServiceImpl.java b/src/main/java/com/docus/server/report/api/impl/TaskDistributeServiceImpl.java index 971cc71..65bac58 100644 --- a/src/main/java/com/docus/server/report/api/impl/TaskDistributeServiceImpl.java +++ b/src/main/java/com/docus/server/report/api/impl/TaskDistributeServiceImpl.java @@ -12,6 +12,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; /** * 无视图任务服务 @@ -43,4 +45,19 @@ public class TaskDistributeServiceImpl implements TaskDistributeService { return reportDownTwoDtoCommonResult.getData(); } + @Override + public CommonResult cancel(Long taskId) { + String taskCancelUrl = applicationBusinessConfig.getGetTaskCancelUrl(); + if (Func.isBlank(taskCancelUrl)) { + log.warn("任务作废地址未配置!"); + return null; + } + Map param = new HashMap<>(1); + param.put("taskId", taskId); + log.info("任务作废 地址{},参数:{}",taskCancelUrl,param); + String resp = HttpUtil.post(taskCancelUrl, Func.toJson(param)); + log.info("任务作废结果:{}",resp); + return Func.readJson(resp, new TypeReference>() { + }); + } } diff --git a/src/main/java/com/docus/server/report/config/ApplicationBusinessConfig.java b/src/main/java/com/docus/server/report/config/ApplicationBusinessConfig.java index a77c26d..67bc262 100644 --- a/src/main/java/com/docus/server/report/config/ApplicationBusinessConfig.java +++ b/src/main/java/com/docus/server/report/config/ApplicationBusinessConfig.java @@ -17,4 +17,6 @@ public class ApplicationBusinessConfig { private String downUrl; @Value("${docus.task.getTaskUrl:}") private String getTaskUrl; + @Value("${docus.task.taskCancelUrl:}") + private String getTaskCancelUrl; } diff --git a/src/main/java/com/docus/server/report/config/TaskValidateConfig.java b/src/main/java/com/docus/server/report/config/TaskValidateConfig.java new file mode 100644 index 0000000..0a1fd5c --- /dev/null +++ b/src/main/java/com/docus/server/report/config/TaskValidateConfig.java @@ -0,0 +1,58 @@ +package com.docus.server.report.config; + +import com.docus.core.util.Func; +import com.docus.server.report.util.TableJsonRead; +import lombok.Data; + +import java.util.List; + +public class TaskValidateConfig { + private final static String CONFIG_PATH = "data-config"; + private final static String CONFIG_FILE_NAME = "task-validate-config.json"; + + public static void main(String[] args) { + CollectTaskConfig collectTaskConfig = getCollectTaskConfig("1"); + System.out.println(collectTaskConfig); + } + + public static CollectTaskConfig getCollectTaskConfig(String collectorId) { + TableJsonRead tableJsonRead = new TableJsonRead(); + String configContent = tableJsonRead.ReadContent(CONFIG_PATH, CONFIG_FILE_NAME); + if (Func.isBlank(configContent)) { + return null; + } + List configs = Func.parseJsonArray(configContent, CollectTaskConfig.class); + for (CollectTaskConfig config : configs) { + if (collectorId.equals(config.getCollectorId())) { + return config; + } + } + return null; + } + + @Data + public static class CollectTaskConfig { + private String collectorId; + private List cancel; + } + + @Data + public static class CollectTaskFilterConfig { + private ValidateConfig admissionDate; + private ValidateConfig dischargeDate; + private ValidateConfig admissionDepartment; + private ValidateConfig dischargeDepartment; + } + + @Data + public static class ValidateConfig { + private String operator; + private String value; + private Integer dataType; + public boolean isEffective() { + return dataType != null && Func.isNotBlank(operator) && Func.isNotBlank(value); + } + } + + +} diff --git a/src/main/java/com/docus/server/report/controller/ApiTestController.java b/src/main/java/com/docus/server/report/controller/ApiTestController.java index d96ceac..10ed215 100644 --- a/src/main/java/com/docus/server/report/controller/ApiTestController.java +++ b/src/main/java/com/docus/server/report/controller/ApiTestController.java @@ -42,5 +42,11 @@ public class ApiTestController { return CommonResult.success(taskDistributeService.getNoViewTaskByCollectorId(collectorId)); } + @ApiOperation(value = "作废任务测试") + @PostMapping("/cancelTaskTest") + public CommonResult getTaskTest(@RequestParam("taskId") Long taskId) { + return CommonResult.success(taskDistributeService.cancel(taskId)); + } + } diff --git a/src/main/java/com/docus/server/report/controller/ReportDownController.java b/src/main/java/com/docus/server/report/controller/ReportDownController.java index d1e9e36..2654679 100644 --- a/src/main/java/com/docus/server/report/controller/ReportDownController.java +++ b/src/main/java/com/docus/server/report/controller/ReportDownController.java @@ -27,6 +27,12 @@ public class ReportDownController { private ReportService reportService; @Resource ReportJob reportJob; + @ApiOperation(value = " 移动护理采集 job 测试") + @GetMapping("/sdRyNurseInsertSugarCollectJob") + public CommonResult sdRyNurseInsertSugarCollectJob() { + reportJob.sdRyNurseInsertSugarCollectJob(); + return CommonResult.success("成功"); + } @ApiOperation(value = " lis 检验 采集 job 测试") @GetMapping("/sdRyLisCollectJob") diff --git a/src/main/java/com/docus/server/report/enums/DataTypeEnum.java b/src/main/java/com/docus/server/report/enums/DataTypeEnum.java new file mode 100644 index 0000000..049767b --- /dev/null +++ b/src/main/java/com/docus/server/report/enums/DataTypeEnum.java @@ -0,0 +1,17 @@ +package com.docus.server.report.enums; + +import lombok.Getter; + +@Getter +public enum DataTypeEnum { + NUMBER(1,"数字类型"), + STRING(2,"字符串"), + DATE_TIME(3,"时间 pattern=yyyy-MM-dd HH:mm:ss"); + Integer code; + String desc; + DataTypeEnum(Integer code,String desc){ + this.code=code; + this.desc=desc; + } + +} diff --git a/src/main/java/com/docus/server/report/enums/OperatorEnum.java b/src/main/java/com/docus/server/report/enums/OperatorEnum.java new file mode 100644 index 0000000..17825d9 --- /dev/null +++ b/src/main/java/com/docus/server/report/enums/OperatorEnum.java @@ -0,0 +1,30 @@ +package com.docus.server.report.enums; + +import lombok.Getter; + +/** + * @author wyb + */ + +@Getter +public enum OperatorEnum { + + EQ("=","eq","等于"), + NOT_EQ_1("!=","not","不等于"), + NOT_EQ_2("<>","not","不等于"), + GT(">","gt","大于"), + GE(">=","ge","大于等于"), + LT("<","lt","小于"), + LE("<=","le","小于等于"); + + String masterCode; + String slaveCode; + String desc; + + OperatorEnum(String masterCode,String slaveCode,String desc){ + this.masterCode=masterCode; + this.slaveCode=slaveCode; + this.desc=desc; + } + +} diff --git a/src/main/java/com/docus/server/report/job/ReportJob.java b/src/main/java/com/docus/server/report/job/ReportJob.java index 596bc52..7e53d9e 100644 --- a/src/main/java/com/docus/server/report/job/ReportJob.java +++ b/src/main/java/com/docus/server/report/job/ReportJob.java @@ -4,12 +4,14 @@ import com.alibaba.fastjson.JSONObject; import com.docus.core.util.Func; import com.docus.infrastructure.core.exception.BaseException; import com.docus.infrastructure.redis.service.IdService; +import com.docus.infrastructure.web.api.ResultCode; import com.docus.server.collection.entity.TBasic; import com.docus.server.collection.mapper.TBasicMapper; import com.docus.server.report.api.ShunDePeopleService; import com.docus.server.report.api.TaskDistributeService; import com.docus.server.report.api.dto.*; import com.docus.server.report.config.SdRyReportQueryConfig; +import com.docus.server.report.config.TaskValidateConfig; import com.docus.server.report.config.ZdAssortConfig; import com.docus.server.report.entity.AfJobTime; import com.docus.server.report.entity.AfReportRecord; @@ -18,6 +20,7 @@ import com.docus.server.report.mapper.AfReportRecordMapper; import com.docus.server.report.service.ReportService; import com.docus.server.report.util.TableJsonRead; import com.docus.server.report.util.XmlUtil; +import com.docus.server.report.validate.CollectTaskValidation; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -29,6 +32,7 @@ import java.io.File; import java.io.FileWriter; import java.time.Instant; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -133,10 +137,15 @@ public class ReportJob { * 顺德人医移动护理报告采集任务 */ @XxlJob("SdRyNurseInsertSugarCollectJob") - public void sdRyNurseInsertSugarCollectJob(){ + public void sdRyNurseInsertSugarCollectJob() { String reportQueryNurseInsertSugarCollectorId = sdRyReportQueryConfig.getReportQueryNurseInsertSugarCollectorId(); ReportDownTwoDto reportDownTwoDto = taskDistributeService.getNoViewTaskByCollectorId(reportQueryNurseInsertSugarCollectorId); - if (reportDownTwoDto==null) { + if (reportDownTwoDto == null) { + return; + } + if (isCancelTask(reportDownTwoDto, reportQueryNurseInsertSugarCollectorId)) { + log.warn("作废任务,{}", reportDownTwoDto); + taskDistributeService.cancel(reportDownTwoDto.getTasks().get(0).getTaskId()); return; } String patientId = reportDownTwoDto.getPatient().getPatientId(); @@ -146,7 +155,7 @@ public class ReportJob { SdNurseInsertSugarRequest sdNurseInsertSugarRequest = new SdNurseInsertSugarRequest(inpatientNo, admissTimes.toString(), traceCode); SdNurseInsertSugarResponse sdNurseInsertSugarResponse = shunDePeopleService.getNurseInsertSugarReport(sdNurseInsertSugarRequest); List nurseInsertSugarReportList = sdNurseInsertSugarResponse.getData(); - if(Func.isNotEmpty(nurseInsertSugarReportList)){ + if (Func.isNotEmpty(nurseInsertSugarReportList)) { ReportDto reportDto; for (SdNurseInsertSugarResponse.NisData nisReport : nurseInsertSugarReportList) { reportDto = new ReportDto(); @@ -155,7 +164,7 @@ public class ReportJob { reportDto.setDownUrl(nisReport.getUrl()); reportDto.setFileTitle(nisReport.getForm_name()); reportDto.setSerialnum(nisReport.getForm_id()); - reportDto.setAssortId(ZdAssortConfig.getZdAssortId(nisReport.getForm_name(),sdRyReportQueryConfig.getReportQueryNurseInsertSugarDefaultAssortType())); + reportDto.setAssortId(ZdAssortConfig.getZdAssortId(nisReport.getForm_name(), sdRyReportQueryConfig.getReportQueryNurseInsertSugarDefaultAssortType())); reportDto.setAdmisstimes(admissTimes); reportDto.setInpatientNo(inpatientNo); reportDto.setPatientId(patientId); @@ -167,6 +176,83 @@ public class ReportJob { } } + /** + * 判断是否是需要作废的病案 + * + * @param taskDTO + * @param collectorId + * @return + */ + private boolean isCancelTask(ReportDownTwoDto taskDTO, String collectorId) { + TaskValidateConfig.CollectTaskConfig collectTaskConfig = TaskValidateConfig.getCollectTaskConfig(collectorId); + if (collectTaskConfig != null && Func.isNotEmpty(collectTaskConfig.getCancel())) { + // 满足其中一个即可 + for (TaskValidateConfig.CollectTaskFilterConfig cancelCollectTaskConfig : collectTaskConfig.getCancel()) { + if (isCancelTask(taskDTO, cancelCollectTaskConfig)) { + return true; + } + } + } + return false; + } + + private boolean isCancelTask(ReportDownTwoDto taskDTO, TaskValidateConfig.CollectTaskFilterConfig cancelCollectTaskConfig) { + TaskValidateConfig.ValidateConfig admissionDateConfig = cancelCollectTaskConfig.getAdmissionDate(); + TaskValidateConfig.ValidateConfig dischargeDateConfig = cancelCollectTaskConfig.getDischargeDate(); + TaskValidateConfig.ValidateConfig amissionDepartmentConfig = cancelCollectTaskConfig.getAdmissionDepartment(); + TaskValidateConfig.ValidateConfig dischargeDepartmenConfig = cancelCollectTaskConfig.getDischargeDepartment(); + CollectTaskValidation validation; + // 是否验证了,每个验证不通过都会返回,记录是否进入了验证,进入了且验证未返回,代表全部通过了,改变标记为true返回。 + boolean validated=false; + // 验证入院时间 + if (admissionDateConfig != null && admissionDateConfig.isEffective()) { + validated=true; + validation = new CollectTaskValidation.CollectTaskAdmissionDateValidation(); + CollectTaskValidation.ValidationResult validationResult = validation.validate(taskDTO.getHospitals().get(0).getAdmissDate(), admissionDateConfig); + if (validationResult.getCode() == ResultCode.FAILED) { + return false; + } + } + // 验证出院时间 + if (dischargeDateConfig != null && dischargeDateConfig.isEffective()) { + validated=true; + validation = new CollectTaskValidation.CollectTaskDischargeDateValidation(); + CollectTaskValidation.ValidationResult validationResult = validation.validate(taskDTO.getHospitals().get(0).getDisDate(), dischargeDateConfig); + if (validationResult.getCode() == ResultCode.FAILED) { + return false; + } + } + // 验证入院科室 + if (amissionDepartmentConfig != null && amissionDepartmentConfig.isEffective()) { + validated=true; + validation = new CollectTaskValidation.CollectTaskAdmissionDepartmentValidation(); + CollectTaskValidation.ValidationResult validationResult = validation.validate(taskDTO.getHospitals().get(0).getAdmissDeptName(), amissionDepartmentConfig); + if (validationResult.getCode() == ResultCode.FAILED) { + return false; + } + } + // 验证出院科室 + if (dischargeDepartmenConfig != null && dischargeDepartmenConfig.isEffective()) { + validated=true; + validation = new CollectTaskValidation.CollectTaskDischargeDepartmentValidation(); + CollectTaskValidation.ValidationResult validationResult = validation.validate(taskDTO.getHospitals().get(0).getDisDeptName(), dischargeDepartmenConfig); + if (validationResult.getCode() == ResultCode.FAILED) { + return false; + } + } + + return validated; + } + + private void validateAdmissionDate(String admissDate, String collectorId) { + if (Func.isBlank(admissDate)) { + throw new BaseException("任务患者出院时间为空!"); + } + LocalDateTime admissDateTime = Func.parseDateTime(admissDate); + + + } + public List collectLisReport(TBasic tBasic) { List reportDtoList = getLisReportList(tBasic); @@ -350,7 +436,8 @@ public class ReportJob { public static void main(String[] args) { System.out.println(createBase64SaveDir()); } - private List parseQuerySdRyInspectReport(String respBody, TBasic tBasic) { + + private List parseQuerySdRyInspectReport(String respBody, TBasic tBasic) { JSONObject jsonObject = Func.readJson(respBody, JSONObject.class); Object resultCode = jsonObject.get("ResultCode"); String successCode = "0"; @@ -388,13 +475,13 @@ public class ReportJob { // 确定报告唯一 报告单号+申请单号 reportDto.setSerialnum(examReportSn + requestSn); reportDto.setFileTitle(reportName); - if (config != null && Func.isNotBlank(config.getHandlerSystem())) { + if (config != null && Func.isNotBlank(config.getHandlerSystem())) { String handlerSystem = config.getHandlerSystem().toLowerCase(); List handlerSystems = Arrays.asList(handlerSystem.split(",")); - if(!handlerSystems.contains(updateBy.toLowerCase())){ + if (!handlerSystems.contains(updateBy.toLowerCase())) { continue; } - }else { + } else { continue; } @@ -426,9 +513,9 @@ public class ReportJob { } - private String saveBase64(String base64){ - String dir=createBase64SaveDir(); - String base64File = dir + File.separator+idService.getDateSeq() + ".txt"; + private String saveBase64(String base64) { + String dir = createBase64SaveDir(); + String base64File = dir + File.separator + idService.getDateSeq() + ".txt"; try (FileWriter fileWriter = new FileWriter(base64File); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { bufferedWriter.write(base64); @@ -440,18 +527,18 @@ public class ReportJob { return base64File; } - private static String createBase64SaveDir(){ + private static String createBase64SaveDir() { try { File current = new File("."); String canonicalPath = current.getCanonicalPath(); - String dirPath = canonicalPath + File.separator + "base64"+File.separator+Func.formatDate(new Date()); + String dirPath = canonicalPath + File.separator + "base64" + File.separator + Func.formatDate(new Date()); File dirFile = new File(dirPath); if (!dirFile.exists()) { dirFile.mkdirs(); } - return dirPath; + return dirPath; } catch (Exception e) { - String temp = "C:\\docus\\base64\\"+Func.formatDate(new Date()); + String temp = "C:\\docus\\base64\\" + Func.formatDate(new Date()); File file1 = new File(temp); if (!file1.exists()) { file1.mkdirs(); @@ -459,6 +546,7 @@ public class ReportJob { return temp; } } + private static String parsePacsGetBase64(String xml) { try { XmlUtil xmlUtil = XmlUtil.of(xml); diff --git a/src/main/java/com/docus/server/report/validate/CollectTaskValidation.java b/src/main/java/com/docus/server/report/validate/CollectTaskValidation.java new file mode 100644 index 0000000..c1fe67c --- /dev/null +++ b/src/main/java/com/docus/server/report/validate/CollectTaskValidation.java @@ -0,0 +1,169 @@ +package com.docus.server.report.validate; + +import com.docus.infrastructure.web.api.ResultCode; +import com.docus.server.report.config.TaskValidateConfig; +import com.docus.server.report.enums.DataTypeEnum; +import com.docus.server.report.enums.OperatorEnum; +import lombok.Data; + +import javax.validation.ValidationException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public abstract class CollectTaskValidation { + private final static DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + /** + * 验证 + * + * @param text + * @param validateConfig + */ + public abstract ValidationResult validate(String text, TaskValidateConfig.ValidateConfig validateConfig); + + /** + * 验证时间 + */ + public static ValidationResult validateDate(String text, TaskValidateConfig.ValidateConfig validateConfig) { + String operator = validateConfig.getOperator().toLowerCase(); + String message="日期验证,操作符号:" + operator + ",操作表达:" + text + ".compareTo(" + validateConfig.getValue() + ")"; + LocalDateTime localDateTime1 = LocalDateTime.parse(text, DATETIME_FORMATTER); + LocalDateTime localDateTime2 = LocalDateTime.parse(validateConfig.getValue(), DATETIME_FORMATTER); + int compareToResult = localDateTime1.compareTo(localDateTime2); + return getValidationResultByCompareToResult(operator,compareToResult,message); + } + + + private static ValidationResult getValidationResultByCompareToResult(String operator,int compareToResult,String message){ + if (OperatorEnum.EQ.getMasterCode().equals(operator) || OperatorEnum.EQ.getSlaveCode().equals(operator)) { + if (compareToResult == 0) { + return new ValidationResult(ResultCode.SUCCESS, message + " 通过"); + } + return new ValidationResult(ResultCode.FAILED, message + " 不通过"); } + if (OperatorEnum.NOT_EQ_1.getMasterCode().equals(operator) || OperatorEnum.NOT_EQ_1.getSlaveCode().equals(operator)) { + if (compareToResult != 0) { + return new ValidationResult(ResultCode.SUCCESS, message + " 通过"); + } + return new ValidationResult(ResultCode.FAILED, message + " 不通过"); } + if (OperatorEnum.NOT_EQ_2.getMasterCode().equals(operator) || OperatorEnum.NOT_EQ_2.getSlaveCode().equals(operator)) { + if (compareToResult != 0) { + return new ValidationResult(ResultCode.SUCCESS, message + " 通过"); + } + return new ValidationResult(ResultCode.FAILED, message + " 不通过"); } + if (OperatorEnum.GT.getMasterCode().equals(operator) || OperatorEnum.GT.getSlaveCode().equals(operator)) { + if (compareToResult > 0) { + return new ValidationResult(ResultCode.SUCCESS, message + " 通过"); + } + return new ValidationResult(ResultCode.FAILED, message + " 不通过"); } + if (OperatorEnum.GE.getMasterCode().equals(operator) || OperatorEnum.GE.getSlaveCode().equals(operator)) { + if (compareToResult >= 0) { + return new ValidationResult(ResultCode.SUCCESS, message + " 通过"); + } + return new ValidationResult(ResultCode.FAILED, message + " 不通过"); } + if (OperatorEnum.LT.getMasterCode().equals(operator) || OperatorEnum.LT.getSlaveCode().equals(operator)) { + if (compareToResult < 0) { + return new ValidationResult(ResultCode.SUCCESS, message + " 通过"); + } + return new ValidationResult(ResultCode.FAILED, message + " 不通过"); } + if (OperatorEnum.LE.getMasterCode().equals(operator) || OperatorEnum.LE.getSlaveCode().equals(operator)) { + if (compareToResult <= 0) { + return new ValidationResult(ResultCode.SUCCESS, message + " 通过"); + } + return new ValidationResult(ResultCode.FAILED, message + " 不通过"); + } + throw new ValidationException("未知的操作符号!"); + } + + /** + * 验证字符串 + */ + public static ValidationResult validateString(String text, TaskValidateConfig.ValidateConfig validateConfig) { + String operator = validateConfig.getOperator().toLowerCase(); + int compareToResult = text.compareTo(validateConfig.getValue()); + String message = "字符串验证,操作符号:" + operator + ",操作表达:" + text + ".compareTo(" + validateConfig.getValue() + ")"; + return getValidationResultByCompareToResult(operator,compareToResult,message); + } + + + /** + * 验证数字 + */ + public static ValidationResult validateNumber(String text, TaskValidateConfig.ValidateConfig validateConfig) { + throw new RuntimeException("任务验证数字类型待开发!"); + } + + @Data + public static class ValidationResult { + private ResultCode code; + private String message; + + public ValidationResult() { + } + + public ValidationResult(ResultCode code, String message) { + this.code = code; + this.message = message; + } + } + + public static class CollectTaskAdmissionDateValidation extends CollectTaskValidation { + + @Override + public ValidationResult validate(String text, TaskValidateConfig.ValidateConfig validateConfig) { + if (DataTypeEnum.DATE_TIME.getCode().equals(validateConfig.getDataType())) { + return validateDate(text, validateConfig); + } + return new ValidationResult(ResultCode.FAILED,"日期验证,数据类型不为"+DataTypeEnum.DATE_TIME.getCode()); + } + } + + public static class CollectTaskDischargeDateValidation extends CollectTaskValidation { + + @Override + public ValidationResult validate(String text, TaskValidateConfig.ValidateConfig validateConfig) { + if (DataTypeEnum.DATE_TIME.getCode().equals(validateConfig.getDataType())) { + return validateDate(text, validateConfig); + } + return new ValidationResult(ResultCode.FAILED,"日期验证,数据类型不为"+DataTypeEnum.DATE_TIME.getCode()); + } + } + + public static class CollectTaskAdmissionDepartmentValidation extends CollectTaskValidation { + + @Override + public ValidationResult validate(String text, TaskValidateConfig.ValidateConfig validateConfig) { + if (DataTypeEnum.STRING.getCode().equals(validateConfig.getDataType())) { + return validateString(text, validateConfig); + } + return new ValidationResult(ResultCode.FAILED,"字符串验证,数据类型不为"+DataTypeEnum.STRING.getCode()); + } + } + + public static class CollectTaskDischargeDepartmentValidation extends CollectTaskValidation { + + @Override + public ValidationResult validate(String text, TaskValidateConfig.ValidateConfig validateConfig) { + if (DataTypeEnum.STRING.getCode().equals(validateConfig.getDataType())) { + return validateString(text, validateConfig); + } + return new ValidationResult(ResultCode.FAILED,"字符串验证,数据类型不为"+DataTypeEnum.STRING.getCode()); + } + } + + public static void main(String[] args) { + CollectTaskValidation admissionDepartmentValidation = new CollectTaskValidation.CollectTaskAdmissionDateValidation(); + TaskValidateConfig.ValidateConfig validateConfig = new TaskValidateConfig.ValidateConfig(); + validateConfig.setValue("2023-04-30 00:00:00"); + validateConfig.setDataType(DataTypeEnum.DATE_TIME.getCode()); + validateConfig.setOperator("="); + System.out.println(admissionDepartmentValidation.validate("2023-05-01 00:00:00", validateConfig)); + validateConfig.setOperator("<="); + System.out.println(admissionDepartmentValidation.validate("2023-05-01 00:00:00", validateConfig)); + validateConfig.setOperator(">="); + System.out.println(admissionDepartmentValidation.validate("2023-05-01 00:00:00", validateConfig)); + + validateConfig.setOperator("not"); + System.out.println(admissionDepartmentValidation.validate("2023-05-01 00:00:00", validateConfig)); + + } +} diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index 71e825d..5a61db7 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -73,7 +73,7 @@ sdry: # 移动护理报告地址 nurseInsertSugar: - collectorId: -100 + collectorId: 1 url: http://192.168.0.200:8688/crHesb/hospital/common interval: 1000 defaultAssortType: hl-other @@ -90,6 +90,7 @@ docus: downurl: http://localhost:9291/api/downplatform/report task: getTaskUrl: http://localhost:9296/api/noviewtask/GetTask + taskCancelUrl: http://localhost:9296/api/collector/task/cancel mybatis-plus: configuration: map-underscore-to-camel-case: true