From dd4e94625425a5c44def333f70abd1224ea1bbf5 Mon Sep 17 00:00:00 2001 From: beeajax <1105173470@qq.com> Date: Wed, 14 Jun 2023 01:36:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95userviewjob=EF=BC=8C=E7=BC=96?= =?UTF-8?q?=E5=86=99user=20view=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/mq/test/RabbitMQProducer.java | 6 +- collect-sdry/src/main/resources/bootstrap.yml | 79 ++++++++--- .../report/view/LisViewCollectJob.java | 4 +- .../collect/web/common/DocusProperties.java | 26 ++-- .../collect/web/service/CollectService.java | 66 ++++++---- .../server/collect/web/utils/HoliDayUtil.java | 33 +++-- .../server/collect/web/utils/RedisMq.java | 14 +- .../docus/server/common/db/KeyGenerator.java | 16 +++ .../handler/LocalDateTimeTypeHandler.java | 91 +++++++++++++ .../db/type/handler/LocalDateTypeHandler.java | 91 +++++++++++++ .../db/type/handler/LocalTimeTypeHandler.java | 91 +++++++++++++ .../infrastructure/mapper/LisDeptMapper.java | 9 +- .../docus/server/lis/service/ILisService.java | 43 +++++- .../lis/service/impl/LisServiceImpl.java | 24 +++- .../main/resources/mapper/LisDeptMapper.xml | 124 +++++++++++++++++- .../main/resources/mapper/LisTBasicMapper.xml | 6 +- .../main/resources/mapper/LisUserMapper.xml | 6 +- 17 files changed, 623 insertions(+), 106 deletions(-) create mode 100644 docus-common/src/main/java/com/docus/server/common/db/KeyGenerator.java create mode 100644 docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalDateTimeTypeHandler.java create mode 100644 docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalDateTypeHandler.java create mode 100644 docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalTimeTypeHandler.java diff --git a/collect-sdry/src/main/java/com/docus/server/collect/user/mq/test/RabbitMQProducer.java b/collect-sdry/src/main/java/com/docus/server/collect/user/mq/test/RabbitMQProducer.java index 8576819..fa073d9 100644 --- a/collect-sdry/src/main/java/com/docus/server/collect/user/mq/test/RabbitMQProducer.java +++ b/collect-sdry/src/main/java/com/docus/server/collect/user/mq/test/RabbitMQProducer.java @@ -24,7 +24,7 @@ public class RabbitMQProducer { // */ // @RequestMapping(value = "/topicMQ01", method = {RequestMethod.GET}) // public List topicMQ01() { -// List users = userService.list(null); +// List users = userService.page(null); // for (TaskConfig user : users) { // rabbitTemplate.convertAndSend("topic.exchange", "jd.reg.msg", user.getName()); // } @@ -33,7 +33,7 @@ public class RabbitMQProducer { // // @RequestMapping(value = "/topicMQ02", method = {RequestMethod.GET}) // public List topicMQ02() { -// List users = userService.list(null); +// List users = userService.page(null); // for (TaskConfig user : users) { // rabbitTemplate.convertAndSend("topic.exchange", "tm.reg.msg", user.getName()); // } @@ -42,7 +42,7 @@ public class RabbitMQProducer { // // @RequestMapping(value = "/topicMQ03", method = {RequestMethod.GET}) // public List topicMQ03() { -// List users = userService.list(null); +// List users = userService.page(null); // for (TaskConfig user : users) { // rabbitTemplate.convertAndSend("topic.exchange", "super.fzb.reg.msg", user.getName()); // } diff --git a/collect-sdry/src/main/resources/bootstrap.yml b/collect-sdry/src/main/resources/bootstrap.yml index 66e5790..ddbeaef 100644 --- a/collect-sdry/src/main/resources/bootstrap.yml +++ b/collect-sdry/src/main/resources/bootstrap.yml @@ -13,92 +13,92 @@ spring: #公司病案的文件服务数据库 master: url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_archivefile?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai - username: docus - password: docus702 + username: root + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #公司病案的系统服务数据库 system: url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_system?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai - username: docus - password: docus702 + username: root + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #公司病案的基础服务数据库 record: url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_medicalrecord?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai - username: docus - password: docus702 + username: root + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #医院的用户/科室/基础数据的数据库 his: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #病理数据 bl: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #电生理系统数据 ecg: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #电子病历系统数据 emr: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #护理文书系统数据 hl: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #手麻系统数据 issubmit: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #lis系统数据 lis: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/lis?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #Pacs系统数据视图 pacs: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #vte静脉血栓栓塞症 vte: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource #重症系统数据 zz: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/his?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root - password: root@123456 + password: root driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy type: com.alibaba.druid.pool.DruidDataSource # rabbitmq: @@ -108,7 +108,7 @@ spring: # password: guest redis: host: redis.docus.cn - password: JSdocus@702 + # password: JSdocus@702 cloud: nacos: discovery: @@ -120,12 +120,47 @@ spring: file-extension: yml shared-configs: - comm.${spring.cloud.nacos.config.file-extension} - + rabbitmq: + addresses: 127.0.0.1 + username: guest + password: guest + template: + mandatory: true + queue: + isAck: false + retryTimes: 5 + publisher-confirms: true + publisher-returns: true + listener: + direct: + retry: + enabled: true + simple: + retry: + max-attempts: 3 docus: dbtype: mysql user: # 用户默认密码 defpwd: fd29cd53ec12616e5f36b77d4afffbff + job: + enabled: false + doctorsyscode: 8 + doctorassortid: AFB9FBE656D7492C80AEDE6E685A851A + #农垦重症 + # lkzz: + # syscode: 15 + # assortid: AFB9FBE656D7492C80AEDE6E685A851A + # url: http://localhost:9295/api/lkzz/icu/patientInfoIcuQueue/getPatientInfoIcuQueue?IcuQueueId=%s + # reportname: 危重症监护单 + #0:默认,1:顺德 + priority: 0 + dispose: + #队列生成方式:mq rabbitmq,redis + mode: redis + task: + taskurl: http://localhost:9296/api/noviewtask/GetTask + downurl: http://localhost:9291/api/downplatform/report mybatis-plus: configuration: @@ -172,3 +207,11 @@ xxl: # name-server: 127.0.01:9876 # producer: # group: ta-cipher-encode + +basic: + #患者数据采集每页笔数 + pageSize: 100 + #限速笔数,0:为不限数 + ratelimit: 10000 + #间隔时间,单位毫秒 + ratetime: 10000 diff --git a/common-collect/src/main/java/com/docus/server/collect/report/view/LisViewCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/report/view/LisViewCollectJob.java index 515b53d..b5e8b50 100644 --- a/common-collect/src/main/java/com/docus/server/collect/report/view/LisViewCollectJob.java +++ b/common-collect/src/main/java/com/docus/server/collect/report/view/LisViewCollectJob.java @@ -44,13 +44,13 @@ public class LisViewCollectJob extends AbstractCollectJob> { @Override public void batchInsertOrUpdate(List> t) { - collectService.processJobView(t, DSKeyConstants.DS_KEY); + collectService.handle(t, DSKeyConstants.DS_KEY); } @SuppressWarnings("unchecked") @Override public List> execute(Date startDate, Date endDate, int pageNum, int pageSize) { //每家医院按照固定的格式写sql,不同医院需要替换不同的sql即可。 - return lisService.list(startDate, endDate, pageNum, pageSize); + return lisService.page(startDate, endDate, pageNum, pageSize); } } diff --git a/common-collect/src/main/java/com/docus/server/collect/web/common/DocusProperties.java b/common-collect/src/main/java/com/docus/server/collect/web/common/DocusProperties.java index 0780598..616cd1a 100644 --- a/common-collect/src/main/java/com/docus/server/collect/web/common/DocusProperties.java +++ b/common-collect/src/main/java/com/docus/server/collect/web/common/DocusProperties.java @@ -12,7 +12,7 @@ public class DocusProperties { @Value("${docus.doctorassortid:}") private String doctorassortid; /** - * 重症 + * 重症 */ @Value("${docus.lkzz.syscode:}") private String lkzzsyscode; @@ -29,64 +29,64 @@ public class DocusProperties { private String priority; /** - * 队列生成方式:mq rabbitmq,redis + * 队列生成方式:mq rabbitmq,redis */ - @Value("${docus.dispose.mode:mq}") + @Value("${docus.dispose.mode:redis}") private String mode; /** - * 获取任务url + * 获取任务url */ @Value("${docus.task.taskurl:}") private String taskurl; /** - * 获取任务url + * 获取任务url */ @Value("${docus.task.downurl:}") private String downurl; /** - * 门急诊无视图采集 + * 门急诊无视图采集 */ @Value("${docus.noviewoutcollectionjobcron:0 0 0 * * ?}") private String noviewoutcollectionjobcron; /** - * 采集器失败重启 + * 采集器失败重启 */ @Value("${docus.taskrestartjobcron:0 0/30 * * * ?}") private String taskrestartjobcron; /** - * 农垦医嘱采集 + * 农垦医嘱采集 */ @Value("${docus.collectaddbasicdatajobcron:0/5 * * * * ?}") private String collectaddbasicdatajobcron; /** - * 农垦重症采集 + * 农垦重症采集 */ @Value("${docus.collectlkzzjobcron:0 0/10 * * * ?}") private String collectlkzzjobcron; /** - * 农垦重症未出院采集 + * 农垦重症未出院采集 */ @Value("${docus.collectlkzznotoutjobcron:0 0/30 * * * ?}") private String collectlkzznotoutjobcron; /** - * 按需采集 + * 按需采集 */ @Value("${docus.collectionrequiretimedatajobcron:0 0/30 * * * ?}") private String collectionrequiretimedatajobcron; /** - * 无视图采集 + * 无视图采集 */ @Value("${docus.noviewcollectionjobcron:0 0 0 * * ?}") private String noviewcollectionjobcron; /** - * 无视图补偿采集 + * 无视图补偿采集 */ @Value("${docus.collectionmakeupcron:0 0 0 * * ?}") private String collectionmakeupcron; diff --git a/common-collect/src/main/java/com/docus/server/collect/web/service/CollectService.java b/common-collect/src/main/java/com/docus/server/collect/web/service/CollectService.java index fa2154a..9cfa42c 100644 --- a/common-collect/src/main/java/com/docus/server/collect/web/service/CollectService.java +++ b/common-collect/src/main/java/com/docus/server/collect/web/service/CollectService.java @@ -2,11 +2,15 @@ package com.docus.server.collect.web.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.docus.core.util.Func; import com.docus.infrastructure.redis.service.IdService; import com.docus.server.archivefile.pojo.entity.AfViewCollectionLog; +import com.docus.server.archivefile.service.IAfViewCollectionLogService; import com.docus.server.collect.web.common.BasicProperties; import com.docus.server.collect.web.common.DocusProperties; +import com.docus.server.collect.web.common.dto.BasicQueryDto; import com.docus.server.collect.web.common.dto.CollectionForJZHDto; import com.docus.server.collect.web.common.dto.CollectionSaveDto; import com.docus.server.collect.web.enums.ColectNameEnum; @@ -17,6 +21,7 @@ import com.docus.server.collect.web.utils.MqQueueUtils; import com.docus.server.collect.web.utils.RedisMq; import com.docus.server.collect.web.utils.SpringRestTemplateUtils; import com.docus.server.common.message.MqMessage; +import com.docus.server.lis.service.ILisService; import com.docus.server.record.common.pojo.dto.TBasicDTO; import com.docus.server.record.service.ITBasicService; import com.docus.server.sys.common.pojo.dto.DeptDTO; @@ -37,13 +42,7 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; @Service @@ -66,13 +65,16 @@ public class CollectService { private DocusProperties docusProperties; @Resource MqQueueUtils mqQueueUtils; - @Resource - Environment environment; - private String jzhkey = "FVISIT_ID"; - private String syscodekey = "SYS_CODE"; + private ILisService lisService; @Resource + private Environment environment; + @Resource(name = "defRedis") private RedisMq redisMq; + @Resource + private IAfViewCollectionLogService afViewCollectionLogService; + private String jzhkey = "FVISIT_ID"; + private String syscodekey = "SYS_CODE"; /** * 默认3次重试 @@ -126,7 +128,7 @@ public class CollectService { && operateType.contains(delType); } - public void processJobView(List> datas, String key) { + public void handle(List> datas, String key) { String mqKey = String.format("topic_task_%s_queue", key); MqMessage mqMessage = new MqMessage(); //将key转为大写以免出错 @@ -139,10 +141,10 @@ public class CollectService { if (datas.get(0).containsKey(ColectNameEnum.EXAMTIME.value()) && ((!datas.get(0).containsKey(ColectNameEnum.JZH.value())) || StringUtils.isEmpty(datas.get(0).get(ColectNameEnum.JZH.value())))) { //根据住院号取得患者数据,根据报告时间属于哪个出入院时间之间,如无则按最近算 - list = BatchForEXAMTIME(dto, datas); + list = BatchForEXAMTIME(datas); } else { //正常数据处理,根据jzh取得患者本次病案采集器全部文件 - list = BatchForJZH(dto, datas); + list = BatchForJZH(datas); } list = GenerateSDPriority(list); if (list.size() > 0) { @@ -213,17 +215,19 @@ public class CollectService { /** * 根据jzh取得所需采集的批量数据 * - * @param dto * @param datas */ - private List> BatchForJZH(BasicQueryDto dto, List> datas) { + private List> BatchForJZH(List> datas) { String oldJzhkey = ""; String syscode = String.valueOf(datas.get(0).get(syscodekey)); List jzhs = datas.stream().map(t -> String.valueOf(t.get(jzhkey))).distinct().collect(Collectors.toList()); - FieldJsonDto fieldJsonDto = dto.getFields().stream().filter(t -> t.getNewfield().equals(jzhkey)).findFirst().orElse(null); - if (fieldJsonDto != null) { - oldJzhkey = fieldJsonDto.getOldfield(); - } + BasicQueryDto dto = new BasicQueryDto(); + //没用 +// FieldJsonDto fieldJsonDto = dto.getFields().stream().filter(t -> t.getNewfield().equals(jzhkey)).findFirst().orElse(null); +// if (fieldJsonDto != null) { +// oldJzhkey = fieldJsonDto.getOldfield(); +// } + if (datas.get(0).containsKey(ColectNameEnum.MedicalRecord.value())) { String MedicalRecord = String.valueOf(datas.get(0).get(ColectNameEnum.MedicalRecord.value())); if (MedicalRecord.equals(MedicalRecordEnum.jzhAndTimes.value())) { @@ -238,13 +242,13 @@ public class CollectService { } private List> GetColectionForJZHAndAdmissTimes(BasicQueryDto dto, String oldJzhkey, String syscode, List jzhs, List> datas) { - List> batchcollects = repositiory.BatchForJZHAndAdmissTimes(dto, datas); + List> batchcollects = lisService.BatchForJZHAndAdmissTimes(datas); toReplaceBlank(batchcollects); return GetColectionForJZH(syscode, jzhs, batchcollects); } private List> GetColectionForZYHAndAdmissTimes(BasicQueryDto dto, String oldJzhkey, String syscode, List jzhs, List> datas) { - List> batchcollects = repositiory.BatchForZYHAndAdmissTimes(dto, datas); + List> batchcollects = lisService.BatchForZYHAndAdmissTimes(datas); toReplaceBlank(batchcollects); return GetColectionForJZH(syscode, jzhs, batchcollects); } @@ -287,7 +291,10 @@ public class CollectService { } } log.debug("recordlog:{}", recordlog); - List oldcollects = getOldConllectionLog(jzhs, syscode); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.in(AfViewCollectionLog::getJzh, jzhs).eq(AfViewCollectionLog::getSysCode, syscode); + List oldcollects = afViewCollectionLogService.find(queryWrapper); +// List oldcollects = getOldConllectionLog(jzhs, syscode); List> newcollects = new ArrayList<>(); List updates = new ArrayList<>(); List adds = new ArrayList<>(); @@ -334,7 +341,10 @@ public class CollectService { newcollects.add(o); } } - SaveConllectionLog(adds, updates); + + afViewCollectionLogService.saveOrUpdateBatch(adds); + afViewCollectionLogService.saveOrUpdateBatch(updates); + return newcollects; } @@ -388,7 +398,7 @@ public class CollectService { } } - private List> BatchForEXAMTIME(BasicQueryDto dto, List> datas) { + private List> BatchForEXAMTIME(List> datas) { String oldJzhkey = ""; String syscode = String.valueOf(datas.get(0).get(ColectNameEnum.COLLECTID.value())); List zyhs = datas.stream().map(t -> String.valueOf(t.get(ColectNameEnum.ZYH.value()))).distinct().collect(Collectors.toList()); @@ -459,7 +469,7 @@ public class CollectService { } //取得该患者全部住院文件 - List> batchcollects = repositiory.BatchForEXAMTIME(dto, list); + List> batchcollects = lisService.BatchForEXAMTIME(list); toReplaceBlank(batchcollects); //添加记帐号 for (Map k : batchcollects) { @@ -482,8 +492,8 @@ public class CollectService { private List> GetColectionForJZH(BasicQueryDto dto, String oldJzhkey, String syscode, List jzhs) { jzhs = jzhs.stream().distinct().collect(Collectors.toList()); - List> batchcollects = repositiory.BatchForJZH(dto, oldJzhkey, jzhs); - log.debug("oldJzhKey:{} ,条件 {} 查询 table: {},size:{}", oldJzhkey, jzhs, dto.getTable().getOldtable(), batchcollects.size()); + List> batchcollects = lisService.BatchForJZH(jzhs); + log.debug("size:{}", batchcollects.size()); toReplaceBlank(batchcollects); return GetColectionForJZH(syscode, jzhs, batchcollects); } diff --git a/common-collect/src/main/java/com/docus/server/collect/web/utils/HoliDayUtil.java b/common-collect/src/main/java/com/docus/server/collect/web/utils/HoliDayUtil.java index 6615be2..d821500 100644 --- a/common-collect/src/main/java/com/docus/server/collect/web/utils/HoliDayUtil.java +++ b/common-collect/src/main/java/com/docus/server/collect/web/utils/HoliDayUtil.java @@ -1,19 +1,16 @@ package com.docus.server.collect.web.utils; import com.alibaba.fastjson.JSONArray; -import com.docus.viewtaskcollect.web.domain.dto.HoliDay; +import com.docus.server.collect.web.common.dto.HoliDay; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Comparator; -import java.util.Date; -import java.util.List; +import java.util.*; public class HoliDayUtil { /** * 取得周六日 + * * @param startTime * @param endTime * @return @@ -25,7 +22,7 @@ public class HoliDayUtil { Date flag = startTime; Calendar cal = Calendar.getInstance(); //循环遍历每个日期 - while (flag.compareTo(endTime) <=0) { + while (flag.compareTo(endTime) <= 0) { cal.setTime(flag); //判断是否为周六日 int week = cal.get(Calendar.DAY_OF_WEEK) - 1; @@ -42,25 +39,27 @@ public class HoliDayUtil { } return holiDays; } + /** * 取得节假日 + * * @param startTime * @param endTime * @return */ - public List Getholidays(Date startTime, Date endTime){ + public List Getholidays(Date startTime, Date endTime) { TableJsonRead tableJsonRead = new TableJsonRead(); - String content = tableJsonRead.ReadContent("dataformat","holiday"); - List holiDays= JSONArray.parseArray(content,HoliDay.class); - String startdate = DateUtils.toString(startTime,DateUtils.DEFAULT_DATE_FORMAT); - String enddate = DateUtils.toString(endTime,DateUtils.DEFAULT_DATE_FORMAT); - List reutnholiDays=new ArrayList<>(); - if(null==holiDays||holiDays.size()<=0){ + String content = tableJsonRead.ReadContent("dataformat", "holiday"); + List holiDays = JSONArray.parseArray(content, HoliDay.class); + String startdate = DateUtils.toString(startTime, DateUtils.DEFAULT_DATE_FORMAT); + String enddate = DateUtils.toString(endTime, DateUtils.DEFAULT_DATE_FORMAT); + List reutnholiDays = new ArrayList<>(); + if (null == holiDays || holiDays.size() <= 0) { return reutnholiDays; } - holiDays.sort(Comparator.comparing(t->t.getDate())); - for (HoliDay o: holiDays){ - if(o.getDate().compareTo(startdate)>0 && o.getDate().compareTo(enddate)<=0){ + holiDays.sort(Comparator.comparing(t -> t.getDate())); + for (HoliDay o : holiDays) { + if (o.getDate().compareTo(startdate) > 0 && o.getDate().compareTo(enddate) <= 0) { reutnholiDays.add(o); } } diff --git a/common-collect/src/main/java/com/docus/server/collect/web/utils/RedisMq.java b/common-collect/src/main/java/com/docus/server/collect/web/utils/RedisMq.java index 86b6627..7b0d2da 100644 --- a/common-collect/src/main/java/com/docus/server/collect/web/utils/RedisMq.java +++ b/common-collect/src/main/java/com/docus/server/collect/web/utils/RedisMq.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Component; import java.util.List; -@Component +@Component("defRedis") public class RedisMq { @Autowired private StringRedisTemplate stringRedisTemplate; @@ -24,8 +24,7 @@ public class RedisMq { stringRedisTemplate.opsForList().leftPush(Key, message); } - public void deleteKey(String Key) - { + public void deleteKey(String Key) { try { redisTemplate.delete(Key); } catch (Exception e) { @@ -33,8 +32,7 @@ public class RedisMq { } } - public void deleteAllKey(List ids) - { + public void deleteAllKey(List ids) { try { redisTemplate.delete(ids); } catch (Exception e) { @@ -48,7 +46,6 @@ public class RedisMq { } - /** * 获取消息,可以对消息进行监听,没有超过监听事件,则返回消息为null * rightPop:1.key,2.超时时间,3.超时时间类型 @@ -56,7 +53,7 @@ public class RedisMq { * @return */ public String pop(String messageKey) { - String Key = messageKey; + String Key = messageKey; try { return stringRedisTemplate.opsForList().rightPop(Key); } catch (Exception e) { @@ -68,10 +65,11 @@ public class RedisMq { /** * 是否存在key + * * @param messageKey * @return */ - public boolean IsExist(String messageKey){ + public boolean IsExist(String messageKey) { return stringRedisTemplate.hasKey(messageKey); } diff --git a/docus-common/src/main/java/com/docus/server/common/db/KeyGenerator.java b/docus-common/src/main/java/com/docus/server/common/db/KeyGenerator.java new file mode 100644 index 0000000..593cb22 --- /dev/null +++ b/docus-common/src/main/java/com/docus/server/common/db/KeyGenerator.java @@ -0,0 +1,16 @@ +package com.docus.server.common.db; + +import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator; + +import java.util.UUID; + +public class KeyGenerator implements IKeyGenerator { + public static String genId() { + return UUID.randomUUID().toString().replace("-", "").toUpperCase(); + } + + @Override + public String executeSql(String incrementerName) { + return genId(); + } +} diff --git a/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalDateTimeTypeHandler.java b/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalDateTimeTypeHandler.java new file mode 100644 index 0000000..7e84772 --- /dev/null +++ b/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalDateTimeTypeHandler.java @@ -0,0 +1,91 @@ +package com.docus.server.common.db.type.handler; + +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedTypes; + +import java.sql.*; +import java.time.LocalDateTime; + +//用于兼容gbase localdatetime 转换 +@MappedTypes(value = LocalDateTime.class) +public class LocalDateTimeTypeHandler extends BaseTypeHandler { + + //驱动是否原生支持 + private Boolean isJdbcSupport; + + private boolean getIsJdbcSupport(ResultSet rs, String columnName) { + if (isJdbcSupport == null) { + try { + rs.getObject(columnName, LocalDateTime.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + private boolean getIsJdbcSupport(CallableStatement cs, int columnIndex) { + if (isJdbcSupport == null) { + try { + cs.getObject(columnIndex, LocalDateTime.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + private boolean getIsJdbcSupport(ResultSet rs, int columnIndex) { + if (isJdbcSupport == null) { + try { + rs.getObject(columnIndex, LocalDateTime.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime localDateTime, JdbcType jdbcType) throws SQLException { + if (isJdbcSupport != null && isJdbcSupport) { + ps.setObject(i, localDateTime); + } else { + ps.setObject(i, Timestamp.valueOf(localDateTime)); + } + } + + @Override + public LocalDateTime getNullableResult(ResultSet resultSet, String columnName) throws SQLException { + if (getIsJdbcSupport(resultSet, columnName)) { + return resultSet.getObject(columnName, LocalDateTime.class); + } else { + Timestamp timestamp = resultSet.getTimestamp(columnName); + return timestamp == null ? null : timestamp.toLocalDateTime(); + } + } + + @Override + public LocalDateTime getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException { + if (getIsJdbcSupport(resultSet, columnIndex)) { + return resultSet.getObject(columnIndex, LocalDateTime.class); + } else { + Timestamp timestamp = resultSet.getTimestamp(columnIndex); + return timestamp == null ? null : timestamp.toLocalDateTime(); + } + } + + @Override + public LocalDateTime getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException { + if (getIsJdbcSupport(callableStatement, columnIndex)) { + return callableStatement.getObject(columnIndex, LocalDateTime.class); + } else { + Timestamp timestamp = callableStatement.getTimestamp(columnIndex); + return timestamp == null ? null : timestamp.toLocalDateTime(); + } + } +} diff --git a/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalDateTypeHandler.java b/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalDateTypeHandler.java new file mode 100644 index 0000000..973965a --- /dev/null +++ b/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalDateTypeHandler.java @@ -0,0 +1,91 @@ +package com.docus.server.common.db.type.handler; + +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedTypes; + +import java.sql.*; +import java.time.LocalDate; + +//用于兼容gbase LocalDate 转换 +@MappedTypes(value = LocalDate.class) +public class LocalDateTypeHandler extends BaseTypeHandler { + + //驱动是否原生支持 + private Boolean isJdbcSupport; + + private boolean getIsJdbcSupport(ResultSet rs, String columnName) { + if (isJdbcSupport == null) { + try { + rs.getObject(columnName, LocalDate.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + private boolean getIsJdbcSupport(CallableStatement cs, int columnIndex) { + if (isJdbcSupport == null) { + try { + cs.getObject(columnIndex, LocalDate.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + private boolean getIsJdbcSupport(ResultSet rs, int columnIndex) { + if (isJdbcSupport == null) { + try { + rs.getObject(columnIndex, LocalDate.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, LocalDate localDate, JdbcType jdbcType) throws SQLException { + if (isJdbcSupport != null && isJdbcSupport) { + ps.setObject(i, localDate); + } else { + ps.setObject(i, Date.valueOf(localDate)); + } + } + + @Override + public LocalDate getNullableResult(ResultSet resultSet, String columnName) throws SQLException { + if (getIsJdbcSupport(resultSet, columnName)) { + return resultSet.getObject(columnName, LocalDate.class); + } else { + Date date = resultSet.getDate(columnName); + return date == null ? null : date.toLocalDate(); + } + } + + @Override + public LocalDate getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException { + if (getIsJdbcSupport(resultSet, columnIndex)) { + return resultSet.getObject(columnIndex, LocalDate.class); + } else { + Date date = resultSet.getDate(columnIndex); + return date == null ? null : date.toLocalDate(); + } + } + + @Override + public LocalDate getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException { + if (getIsJdbcSupport(callableStatement, columnIndex)) { + return callableStatement.getObject(columnIndex, LocalDate.class); + } else { + Date date = callableStatement.getDate(columnIndex); + return date == null ? null : date.toLocalDate(); + } + } +} diff --git a/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalTimeTypeHandler.java b/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalTimeTypeHandler.java new file mode 100644 index 0000000..5c33890 --- /dev/null +++ b/docus-common/src/main/java/com/docus/server/common/db/type/handler/LocalTimeTypeHandler.java @@ -0,0 +1,91 @@ +package com.docus.server.common.db.type.handler; + +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedTypes; + +import java.sql.*; +import java.time.LocalTime; + +//用于兼容gbase LocalTime 转换 +@MappedTypes(value = LocalTime.class) +public class LocalTimeTypeHandler extends BaseTypeHandler { + + //驱动是否原生支持 + private Boolean isJdbcSupport; + + private boolean getIsJdbcSupport(ResultSet rs, String columnName) { + if (isJdbcSupport == null) { + try { + rs.getObject(columnName, LocalTime.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + private boolean getIsJdbcSupport(CallableStatement cs, int columnIndex) { + if (isJdbcSupport == null) { + try { + cs.getObject(columnIndex, LocalTime.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + private boolean getIsJdbcSupport(ResultSet rs, int columnIndex) { + if (isJdbcSupport == null) { + try { + rs.getObject(columnIndex, LocalTime.class); + isJdbcSupport = true; + } catch (Exception e) { + isJdbcSupport = false; + } + } + return isJdbcSupport; + } + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, LocalTime LocalTime, JdbcType jdbcType) throws SQLException { + if (isJdbcSupport != null && isJdbcSupport) { + ps.setObject(i, LocalTime); + } else { + ps.setObject(i, Time.valueOf(LocalTime)); + } + } + + @Override + public LocalTime getNullableResult(ResultSet resultSet, String columnName) throws SQLException { + if (getIsJdbcSupport(resultSet, columnName)) { + return resultSet.getObject(columnName, LocalTime.class); + } else { + Time time = resultSet.getTime(columnName); + return time == null ? null : time.toLocalTime(); + } + } + + @Override + public LocalTime getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException { + if (getIsJdbcSupport(resultSet, columnIndex)) { + return resultSet.getObject(columnIndex, LocalTime.class); + } else { + Time time = resultSet.getTime(columnIndex); + return time == null ? null : time.toLocalTime(); + } + } + + @Override + public LocalTime getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException { + if (getIsJdbcSupport(callableStatement, columnIndex)) { + return callableStatement.getObject(columnIndex, LocalTime.class); + } else { + Time time = callableStatement.getTime(columnIndex); + return time == null ? null : time.toLocalTime(); + } + } +} diff --git a/lis-sysem/src/main/java/com/docus/server/lis/infrastructure/mapper/LisDeptMapper.java b/lis-sysem/src/main/java/com/docus/server/lis/infrastructure/mapper/LisDeptMapper.java index abe05f4..a9d8116 100644 --- a/lis-sysem/src/main/java/com/docus/server/lis/infrastructure/mapper/LisDeptMapper.java +++ b/lis-sysem/src/main/java/com/docus/server/lis/infrastructure/mapper/LisDeptMapper.java @@ -13,10 +13,17 @@ import java.util.Map; @DS(DSKeyConstants.DS_KEY) public interface LisDeptMapper { - List> list(@Param("startDate") Date startDate, + List> page(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("offset") int offset, @Param("pageSize") int pageSize); + List> BatchForJZH(@Param("jzhs") List jzhs); + + List> BatchForJZHAndAdmissTimes(@Param("datas") List> datas); + + List> BatchForZYHAndAdmissTimes(@Param("datas") List> datas); + + List> BatchForEXAMTIME(@Param("datas") List> datas); } diff --git a/lis-sysem/src/main/java/com/docus/server/lis/service/ILisService.java b/lis-sysem/src/main/java/com/docus/server/lis/service/ILisService.java index 5970842..8194d5f 100644 --- a/lis-sysem/src/main/java/com/docus/server/lis/service/ILisService.java +++ b/lis-sysem/src/main/java/com/docus/server/lis/service/ILisService.java @@ -8,9 +8,50 @@ import java.util.List; import java.util.Map; public interface ILisService { - List> list(Date startDate, Date endDate, int pageNum, int pageSize); + /** + * 分页查询 + * + * @param startDate + * @param endDate + * @param pageNum + * @param pageSize + * @return + */ + List> page(Date startDate, Date endDate, int pageNum, int pageSize); List getUserListView(Date startDate, Date endDate, int pageNum, int pageSize); List getTBasicListView(Date startDate, Date endDate, int pageNum, int pageSize); + + /** + * 记账号查询 + * + * @param jzhs + * @return + */ + List> BatchForJZH(List jzhs); + + /** + * 记账号+住院次数 + * + * @param datas + * @return + */ + List> BatchForJZHAndAdmissTimes(List> datas); + + /** + * 住院号+住院次数 + * + * @param datas + * @return + */ + List> BatchForZYHAndAdmissTimes(List> datas); + + /** + * 出院日期 + * + * @param list + * @return + */ + List> BatchForEXAMTIME(List> list); } diff --git a/lis-sysem/src/main/java/com/docus/server/lis/service/impl/LisServiceImpl.java b/lis-sysem/src/main/java/com/docus/server/lis/service/impl/LisServiceImpl.java index adcff95..41f74a7 100644 --- a/lis-sysem/src/main/java/com/docus/server/lis/service/impl/LisServiceImpl.java +++ b/lis-sysem/src/main/java/com/docus/server/lis/service/impl/LisServiceImpl.java @@ -22,8 +22,8 @@ public class LisServiceImpl implements ILisService { private final LisTBasicMapper hisTBasicMapper; @Override - public List> list(Date startDate, Date endDate, int pageNum, int pageSize) { - return hisDeptMapper.list(startDate, endDate, (pageNum - 1) * pageSize, pageSize); + public List> page(Date startDate, Date endDate, int pageNum, int pageSize) { + return hisDeptMapper.page(startDate, endDate, (pageNum - 1) * pageSize, pageSize); } @@ -37,4 +37,24 @@ public class LisServiceImpl implements ILisService { return hisTBasicMapper.getTBasicListView(startDate, endDate, (pageNum - 1) * pageSize, pageSize); } + @Override + public List> BatchForJZH(List jzhs) { + return hisDeptMapper.BatchForJZH(jzhs); + } + + @Override + public List> BatchForJZHAndAdmissTimes(List> datas) { + return hisDeptMapper.BatchForJZHAndAdmissTimes(datas); + } + + @Override + public List> BatchForZYHAndAdmissTimes(List> datas) { + return hisDeptMapper.BatchForZYHAndAdmissTimes(datas); + } + + @Override + public List> BatchForEXAMTIME(List> datas) { + return hisDeptMapper.BatchForEXAMTIME(datas); + } + } diff --git a/lis-sysem/src/main/resources/mapper/LisDeptMapper.xml b/lis-sysem/src/main/resources/mapper/LisDeptMapper.xml index 55b9477..112dd1d 100644 --- a/lis-sysem/src/main/resources/mapper/LisDeptMapper.xml +++ b/lis-sysem/src/main/resources/mapper/LisDeptMapper.xml @@ -3,8 +3,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - SELECT DISTINCT '6' AS SYS_CODE, ZYH AS ZYH, @@ -19,7 +19,7 @@ 0 AS state, '' AS jch, '' AS checktime, - AFFIRM_TIME AS MODIFYTIME + date_format(AFFIRM_TIME, '%Y-%m-%d %H:%i:%s') AS MODIFYTIME FROM V_JSWZH_LISRECORD WHERE @@ -27,13 +27,123 @@ AND AFFIRM_TIME ]]> #{startDate} AND AFFIRM_TIME #{endDate} ORDER BY - AFFIRM_TIME DESC + date_format(AFFIRM_TIME, '%Y-%m-%d %H:%i:%s') DESC LIMIT #{offset}, #{pageSize} + + + + + + +