diff --git a/collect-sdry/src/main/java/com/docus/server/collect/dept/HttpDeptCollectServiceImpl.java b/collect-sdry/src/main/java/com/docus/server/collect/dept/HttpDeptCollectServiceImpl.java index 66b11b6..3f414c8 100644 --- a/collect-sdry/src/main/java/com/docus/server/collect/dept/HttpDeptCollectServiceImpl.java +++ b/collect-sdry/src/main/java/com/docus/server/collect/dept/HttpDeptCollectServiceImpl.java @@ -1,6 +1,6 @@ package com.docus.server.collect.dept; -import com.docus.server.collect.service.IHttpDeptCollectService; +import com.docus.server.collect.service.IHttpTBasicCollectService; import com.docus.server.sys.pojo.dto.DeptDTO; import com.google.common.collect.Lists; import org.springframework.stereotype.Service; @@ -9,9 +9,9 @@ import java.util.Date; import java.util.List; @Service -public class HttpDeptCollectServiceImpl implements IHttpDeptCollectService { +public class HttpDeptCollectServiceImpl implements IHttpTBasicCollectService { @Override - public List getDepts(Date startDate, Date endDate, long pazeNum, long pageSize) { + public List getDepts(Date startDate, Date endDate, long pageNum, long pageSize) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setAuthorId("1"); deptDTO.setAuthorName("admin"); diff --git a/collect-sdry/src/main/java/com/docus/server/collect/user/HttpUserCollectServiceImpl.java b/collect-sdry/src/main/java/com/docus/server/collect/user/HttpUserCollectServiceImpl.java new file mode 100644 index 0000000..a2228ea --- /dev/null +++ b/collect-sdry/src/main/java/com/docus/server/collect/user/HttpUserCollectServiceImpl.java @@ -0,0 +1,30 @@ +package com.docus.server.collect.user; + +import com.docus.server.collect.service.IHttpUserCollectService; +import com.docus.server.sys.pojo.dto.UserDTO; +import com.google.common.collect.Lists; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +@Service +public class HttpUserCollectServiceImpl implements IHttpUserCollectService { + @Override + public List getUsers(Date startDate, Date endDate, long pageNum, long pageSize) { + UserDTO deptDTO = new UserDTO(); + deptDTO.setAuthorId("1"); + deptDTO.setAuthorName("admin"); + deptDTO.setMessageId("1"); + deptDTO.setOperateType("save"); + deptDTO.setReceiver("admin"); + + UserDTO deptDTO1 = new UserDTO(); + deptDTO1.setAuthorId("2"); + deptDTO1.setAuthorName("admin2"); + deptDTO1.setMessageId("2"); + deptDTO1.setOperateType("save2"); + deptDTO1.setReceiver("admin2"); + return Lists.newArrayList(deptDTO, deptDTO1); + } +} diff --git a/collect-sdry/src/main/resources/bootstrap.yml b/collect-sdry/src/main/resources/bootstrap.yml index 83ef4af..5d939e8 100644 --- a/collect-sdry/src/main/resources/bootstrap.yml +++ b/collect-sdry/src/main/resources/bootstrap.yml @@ -12,19 +12,19 @@ spring: datasource: 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 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 redis: host: redis.docus.cn - password: JSdocus@702 + # password: JSdocus@702 cloud: nacos: discovery: @@ -44,14 +44,15 @@ mybatis-plus: configuration: map-underscore-to-camel-case: true call-setters-on-nulls: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl jdbc-type-for-null: null + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: update-strategy: ignored field-strategy: NOT_EMPTY db-type: MYSQL mapper-locations: classpath*:/mapper/*Mapper.xml + xxl: job: accessToken: @@ -67,4 +68,9 @@ xxl: api: soft-delete-column-name=state - soft-delete-column-value=1 \ No newline at end of file + soft-delete-column-value=1 +logging: + level: + com: + baomidou: + mybatisplus: DEBUG diff --git a/collect-sdry/src/main/resources/logback.xml b/collect-sdry/src/main/resources/logback.xml index 2c982f3..a6385b3 100644 --- a/collect-sdry/src/main/resources/logback.xml +++ b/collect-sdry/src/main/resources/logback.xml @@ -64,12 +64,12 @@ - + - + diff --git a/common-collect/src/main/java/com/docus/server/collect/domain/TaskConfig.java b/common-collect/src/main/java/com/docus/server/collect/domain/TaskConfig.java index 04e52c5..bab5b39 100644 --- a/common-collect/src/main/java/com/docus/server/collect/domain/TaskConfig.java +++ b/common-collect/src/main/java/com/docus/server/collect/domain/TaskConfig.java @@ -2,6 +2,7 @@ package com.docus.server.collect.domain; import com.docus.server.tool.DateSpiltUtil; import com.docus.server.tool.PeriodTime; +import lombok.Data; import lombok.Getter; import java.util.Date; @@ -11,7 +12,7 @@ import java.util.List; * 收集数据任务配置 */ -@Getter +@Data public class TaskConfig { private String id; @@ -71,10 +72,10 @@ public class TaskConfig { } - /** * 重写启动时间,如果当前时间有,则取当前时间 - * @return 启动时间 + * + * @return 启动时间 */ public Date getStartTime() { if (allPointerTime != null) { diff --git a/common-collect/src/main/java/com/docus/server/collect/job/basic/AbstractTBasicCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/basic/AbstractTBasicCollectJob.java new file mode 100644 index 0000000..5fe6b88 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/job/basic/AbstractTBasicCollectJob.java @@ -0,0 +1,94 @@ +package com.docus.server.collect.job.basic; + +import com.docus.core.util.Func; +import com.docus.server.collect.domain.TaskConfig; +import com.docus.server.collect.service.ITaskConfigService; +import com.docus.server.sys.pojo.dto.TBasicDTO; +import com.docus.server.sys.service.ITBasicService; +import com.docus.server.tool.PeriodTime; +import com.xxl.job.core.context.XxlJobHelper; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +public abstract class AbstractTBasicCollectJob { + @Autowired + private final ITBasicService basicService; + @Resource + private final ITaskConfigService taskConfigService; + + protected AbstractTBasicCollectJob(ITBasicService deptService, ITaskConfigService taskConfigService) { + this.basicService = deptService; + this.taskConfigService = taskConfigService; + } + + /** + * 启动全量收集任务,时间从数据库读取,全量一般都用手工指定 + */ + public void startCollectAll(String taskConfigId) { + TaskConfig taskConfig = taskConfigService.getTaskConfig(taskConfigId); + + List periodTimes = taskConfig.getAllPeriodTimes(); + for (PeriodTime periodTime : periodTimes) { + doGetDepts(periodTime, taskConfig); + taskConfigService.updateAllPointerDate(taskConfigId, periodTime.getPeriodEndDate()); + } + } + + /** + * 启动增量收集任务,时间从数据库读取,增量任务用定时的方式 + */ + public void startCollectIncrement(String taskConfigId) { + TaskConfig taskConfig = taskConfigService.getTaskConfig(taskConfigId); + + List periodTimes = taskConfig.getIncPeriodTimes(); + periodTimes.forEach(periodTime -> { + doGetDepts(periodTime, taskConfig); + taskConfigService.updateIncPointerDate(taskConfigId, periodTime.getPeriodEndDate()); + }); + + } + + protected String getJobParam() { + return XxlJobHelper.getJobParam(); + } + + /** + * 具体操作 + * + * @param periodTime + * @param taskConfig + */ + private void doGetDepts(PeriodTime periodTime, TaskConfig taskConfig) { + //考虑到性能,应该把起始时间和结束时间进行切割拆分到每天。按段查询。 + List depts; + int pageNum = 1; + for (; true; pageNum++) { + depts = this.getBasics( + periodTime.getPeriodStartDate(), + periodTime.getPeriodEndDate(), + pageNum, + taskConfig.getPageSize() + ); + if (Func.isEmpty(depts)) { + break; + } + basicService.batchSaveBasics(depts); + } + } + + /** + * 需要去适配获取部门信息 + * + * @param startDate + * @param endDate + * @param pageNum + * @param pageSize + * @return + */ + public abstract List getBasics(Date startDate, Date endDate, long pageNum, long pageSize); + + +} diff --git a/common-collect/src/main/java/com/docus/server/collect/job/basic/TBasicHttpCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/basic/TBasicHttpCollectJob.java new file mode 100644 index 0000000..9ee1f12 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/job/basic/TBasicHttpCollectJob.java @@ -0,0 +1,50 @@ +package com.docus.server.collect.job.basic; + +import com.docus.server.collect.service.IHttpTBasicCollectService; +import com.docus.server.collect.service.ITaskConfigService; +import com.docus.server.sys.pojo.dto.TBasicDTO; +import com.docus.server.sys.service.ITBasicService; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + + +@Component +public class TBasicHttpCollectJob extends AbstractTBasicCollectJob { + + @Resource + private final IHttpTBasicCollectService httpDeptCollectService; + + public TBasicHttpCollectJob(ITBasicService deptService, ITaskConfigService taskConfigService, IHttpTBasicCollectService httpDeptCollectService) { + super(deptService, taskConfigService); + this.httpDeptCollectService = httpDeptCollectService; + } + + /** + * xxl jobhandler 手工执行 + */ + @XxlJob("startAllDeptHttpCollect") + public void startAllDeptHttpCollect() { + super.startCollectAll(getJobParam()); + } + + /** + * xxl jobhandler 配置定时启动,如果未完成任务跳过。 + */ + @XxlJob("startIncDeptHttpCollect") + public void startIncDeptHttpCollect() { + super.startCollectIncrement(getJobParam()); + } + + + @Override + public List getBasics(Date startDate, Date endDate, long pazeNum, long pageSize) { + + //需要根据不同医院去解析不同的内容。使用接口实现的方式。 + + return httpDeptCollectService.getDepts(startDate, endDate, pazeNum, pageSize); + } +} diff --git a/common-collect/src/main/java/com/docus/server/collect/job/basic/TBasicViewCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/basic/TBasicViewCollectJob.java new file mode 100644 index 0000000..b551145 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/job/basic/TBasicViewCollectJob.java @@ -0,0 +1,49 @@ +package com.docus.server.collect.job.basic; + +import com.docus.server.collect.service.ITaskConfigService; +import com.docus.server.his.service.IHisService; +import com.docus.server.sys.pojo.dto.DeptDTO; +import com.docus.server.sys.service.ITBasicService; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +@Component +public class TBasicViewCollectJob extends AbstractTBasicCollectJob { + @Resource + private final IHisService hisService; + + protected TBasicViewCollectJob(ITBasicService deptService, ITaskConfigService taskConfigService, IHisService hisService) { + super(deptService, taskConfigService); + this.hisService = hisService; + } + + /** + * xxl jobhandler 手工执行,全量执行 + */ + @XxlJob("startAllDeptViewCollect") + public void startAllDeptViewCollect() { + super.startCollectAll(getJobParam()); + } + + + /** + * xxl jobhandler 配置定时启动,如果未完成任务跳过。增量收集 + */ + @XxlJob("startIncDeptViewCollect") + public void startIncDeptViewCollect() { + super.startCollectIncrement(getJobParam()); + } + + + @Override + public List getBasics(Date startDate, Date endDate, long pageNum, long pageSize) { + + //每家医院按照固定的格式写sql,不同医院需要替换不同的sql即可。 + return hisService.getDeptListView(startDate, endDate, pageNum, pageSize); + } + +} diff --git a/common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptHttpCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptCollectJob.java similarity index 54% rename from common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptHttpCollectJob.java rename to common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptCollectJob.java index 8a9c2d4..731e4cf 100644 --- a/common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptHttpCollectJob.java +++ b/common-collect/src/main/java/com/docus/server/collect/job/dept/AbstractDeptCollectJob.java @@ -1,23 +1,25 @@ package com.docus.server.collect.job.dept; -import com.docus.server.collect.domain.ITaskConfigService; +import com.docus.core.util.Func; +import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.collect.domain.TaskConfig; import com.docus.server.sys.pojo.dto.DeptDTO; -import com.docus.server.sys.service.IPowerDeptService; +import com.docus.server.sys.service.ITBasicService; import com.docus.server.tool.PeriodTime; +import com.xxl.job.core.context.XxlJobHelper; import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.Resource; import java.util.Date; import java.util.List; -public abstract class AbstractDeptHttpCollectJob { +public abstract class AbstractDeptCollectJob { @Autowired - private final IPowerDeptService deptService; + private final ITBasicService deptService; @Resource private final ITaskConfigService taskConfigService; - protected AbstractDeptHttpCollectJob(IPowerDeptService deptService, ITaskConfigService taskConfigService) { + protected AbstractDeptCollectJob(ITBasicService deptService, ITaskConfigService taskConfigService) { this.deptService = deptService; this.taskConfigService = taskConfigService; } @@ -26,55 +28,57 @@ public abstract class AbstractDeptHttpCollectJob { * 启动全量收集任务,时间从数据库读取,全量一般都用手工指定 */ public void startCollectAll(String taskConfigId) { - TaskConfig taskConfig = taskConfigService.getTaskConfig(taskConfigId); List periodTimes = taskConfig.getAllPeriodTimes(); for (PeriodTime periodTime : periodTimes) { - //考虑到性能,应该把起始时间和结束时间进行切割拆分到每天。按段查询。 - List depts = null; - int pageNum = 0; - while (true) { - depts = this.getDepts(periodTime.getPeriodStartDate(), periodTime.getPeriodEndDate(), pageNum, taskConfig.getPageSize()); - if (depts == null || depts.size() == 0) { - break; - } - deptService.batchSavePowerDept(depts); - pageNum++; - } + getDepts(periodTime, taskConfig); taskConfigService.updateAllPointerDate(taskConfigId, periodTime.getPeriodEndDate()); } - } - /** * 启动增量收集任务,时间从数据库读取,增量任务用定时的方式 */ public void startCollectIncrement(String taskConfigId) { - TaskConfig taskConfig = taskConfigService.getTaskConfig(taskConfigId); List periodTimes = taskConfig.getIncPeriodTimes(); - for (PeriodTime periodTime : periodTimes) { - //考虑到性能,应该把起始时间和结束时间进行切割拆分到每天。按段查询。 - List depts; - int pageNum = 1; + periodTimes.forEach(periodTime -> { + getDepts(periodTime, taskConfig); + taskConfigService.updateIncPointerDate(taskConfigId, periodTime.getPeriodEndDate()); + }); - for (; true; pageNum++) { + } - depts = this.getDepts(periodTime.getPeriodStartDate(), periodTime.getPeriodEndDate(), pageNum, taskConfig.getPageSize()); - if (depts == null || depts.size() == 0) { - break; - } - deptService.batchSavePowerDept(depts); + protected String getJobParam() { + return XxlJobHelper.getJobParam(); + } + /** + * 具体操作 + * + * @param periodTime + * @param taskConfig + */ + private void getDepts(PeriodTime periodTime, TaskConfig taskConfig) { + //考虑到性能,应该把起始时间和结束时间进行切割拆分到每天。按段查询。 + List depts; + int pageNum = 1; + for (; true; pageNum++) { + depts = this.getDepts( + periodTime.getPeriodStartDate(), + periodTime.getPeriodEndDate(), + pageNum, + taskConfig.getPageSize() + ); + if (Func.isEmpty(depts)) { + break; } - taskConfigService.updateIncPointerDate(taskConfigId, periodTime.getPeriodEndDate()); + deptService.batchSaveBasics(depts); } } - /** * 需要去适配获取部门信息 * diff --git a/common-collect/src/main/java/com/docus/server/collect/job/dept/DeptHttpCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/dept/DeptHttpCollectJob.java index 2980b86..f18d222 100644 --- a/common-collect/src/main/java/com/docus/server/collect/job/dept/DeptHttpCollectJob.java +++ b/common-collect/src/main/java/com/docus/server/collect/job/dept/DeptHttpCollectJob.java @@ -1,9 +1,9 @@ package com.docus.server.collect.job.dept; -import com.docus.server.collect.domain.ITaskConfigService; -import com.docus.server.collect.service.IHttpDeptCollectService; +import com.docus.server.collect.service.ITaskConfigService; +import com.docus.server.collect.service.IHttpTBasicCollectService; import com.docus.server.sys.pojo.dto.DeptDTO; -import com.docus.server.sys.service.IPowerDeptService; +import com.docus.server.sys.service.ITBasicService; import com.xxl.job.core.handler.annotation.XxlJob; import org.springframework.stereotype.Component; @@ -13,12 +13,12 @@ import java.util.List; @Component -public class DeptHttpCollectJob extends AbstractDeptHttpCollectJob { +public class DeptHttpCollectJob extends AbstractDeptCollectJob { @Resource - private final IHttpDeptCollectService httpDeptCollectService; + private final IHttpTBasicCollectService httpDeptCollectService; - public DeptHttpCollectJob(IPowerDeptService deptService, ITaskConfigService taskConfigService, IHttpDeptCollectService httpDeptCollectService) { + public DeptHttpCollectJob(ITBasicService deptService, ITaskConfigService taskConfigService, IHttpTBasicCollectService httpDeptCollectService) { super(deptService, taskConfigService); this.httpDeptCollectService = httpDeptCollectService; } @@ -28,7 +28,7 @@ public class DeptHttpCollectJob extends AbstractDeptHttpCollectJob { */ @XxlJob("startAllDeptHttpCollect") public void startAllDeptHttpCollect() { - super.startCollectAll("1"); + super.startCollectAll(getJobParam()); } /** @@ -36,7 +36,7 @@ public class DeptHttpCollectJob extends AbstractDeptHttpCollectJob { */ @XxlJob("startIncDeptHttpCollect") public void startIncDeptHttpCollect() { - super.startCollectIncrement("1"); + super.startCollectIncrement(getJobParam()); } diff --git a/common-collect/src/main/java/com/docus/server/collect/job/dept/DeptViewCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/dept/DeptViewCollectJob.java index 4e8a8d5..00ece25 100644 --- a/common-collect/src/main/java/com/docus/server/collect/job/dept/DeptViewCollectJob.java +++ b/common-collect/src/main/java/com/docus/server/collect/job/dept/DeptViewCollectJob.java @@ -1,10 +1,9 @@ package com.docus.server.collect.job.dept; -import com.docus.server.collect.domain.ITaskConfigService; +import com.docus.server.collect.service.ITaskConfigService; import com.docus.server.his.service.IHisService; import com.docus.server.sys.pojo.dto.DeptDTO; -import com.docus.server.sys.service.IPowerDeptService; -import com.xxl.job.core.context.XxlJobHelper; +import com.docus.server.sys.service.ITBasicService; import com.xxl.job.core.handler.annotation.XxlJob; import org.springframework.stereotype.Component; @@ -13,11 +12,11 @@ import java.util.Date; import java.util.List; @Component -public class DeptViewCollectJob extends AbstractDeptHttpCollectJob { +public class DeptViewCollectJob extends AbstractDeptCollectJob { @Resource private final IHisService hisService; - protected DeptViewCollectJob(IPowerDeptService deptService, ITaskConfigService taskConfigService, IHisService hisService) { + protected DeptViewCollectJob(ITBasicService deptService, ITaskConfigService taskConfigService, IHisService hisService) { super(deptService, taskConfigService); this.hisService = hisService; } @@ -27,7 +26,7 @@ public class DeptViewCollectJob extends AbstractDeptHttpCollectJob { */ @XxlJob("startAllDeptViewCollect") public void startAllDeptViewCollect() { - super.startCollectAll("2"); + super.startCollectAll(getJobParam()); } @@ -36,9 +35,7 @@ public class DeptViewCollectJob extends AbstractDeptHttpCollectJob { */ @XxlJob("startIncDeptViewCollect") public void startIncDeptViewCollect() { - String jobParam = XxlJobHelper.getJobParam(); - System.out.println(jobParam); - super.startCollectIncrement(jobParam); + super.startCollectIncrement(getJobParam()); } diff --git a/common-collect/src/main/java/com/docus/server/collect/job/user/AbstractUserCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/user/AbstractUserCollectJob.java new file mode 100644 index 0000000..ffa784e --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/job/user/AbstractUserCollectJob.java @@ -0,0 +1,94 @@ +package com.docus.server.collect.job.user; + +import com.docus.core.util.Func; +import com.docus.server.collect.domain.TaskConfig; +import com.docus.server.collect.service.ITaskConfigService; +import com.docus.server.sys.pojo.dto.UserDTO; +import com.docus.server.sys.service.IPowerUserService; +import com.docus.server.tool.PeriodTime; +import com.xxl.job.core.context.XxlJobHelper; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +public abstract class AbstractUserCollectJob { + @Autowired + private IPowerUserService userService; + @Resource + private ITaskConfigService taskConfigService; + + protected AbstractUserCollectJob(IPowerUserService userService, ITaskConfigService taskConfigService) { + this.userService = userService; + this.taskConfigService = taskConfigService; + } + + /** + * 启动全量收集任务,时间从数据库读取,全量一般都用手工指定 + */ + public void startCollectAll(String taskConfigId) { + TaskConfig taskConfig = taskConfigService.getTaskConfig(taskConfigId); + + List periodTimes = taskConfig.getAllPeriodTimes(); + for (PeriodTime periodTime : periodTimes) { + getUsers(periodTime, taskConfig); + taskConfigService.updateAllPointerDate(taskConfigId, periodTime.getPeriodEndDate()); + } + } + + /** + * 启动增量收集任务,时间从数据库读取,增量任务用定时的方式 + */ + public void startCollectIncrement(String taskConfigId) { + TaskConfig taskConfig = taskConfigService.getTaskConfig(taskConfigId); + + List periodTimes = taskConfig.getIncPeriodTimes(); + periodTimes.forEach(periodTime -> { + getUsers(periodTime, taskConfig); + taskConfigService.updateIncPointerDate(taskConfigId, periodTime.getPeriodEndDate()); + }); + + } + + protected String getJobParam() { + return XxlJobHelper.getJobParam(); + } + + /** + * 具体操作 + * + * @param periodTime + * @param taskConfig + */ + private void getUsers(PeriodTime periodTime, TaskConfig taskConfig) { + //考虑到性能,应该把起始时间和结束时间进行切割拆分到每天。按段查询。 + List users; + int pageNum = 1; + for (; true; pageNum++) { + users = this.getUsers( + periodTime.getPeriodStartDate(), + periodTime.getPeriodEndDate(), + pageNum, + taskConfig.getPageSize() + ); + if (Func.isEmpty(users)) { + break; + } + userService.batchSavePowerUser(users); + } + } + + /** + * 需要去适配获取部门信息 + * + * @param startDate + * @param endDate + * @param pageNum + * @param pageSize + * @return + */ + public abstract List getUsers(Date startDate, Date endDate, long pageNum, long pageSize); + + +} diff --git a/common-collect/src/main/java/com/docus/server/collect/job/user/UserHttpCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/user/UserHttpCollectJob.java new file mode 100644 index 0000000..99b1ba3 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/job/user/UserHttpCollectJob.java @@ -0,0 +1,48 @@ +package com.docus.server.collect.job.user; + +import com.docus.server.collect.service.IHttpUserCollectService; +import com.docus.server.collect.service.ITaskConfigService; +import com.docus.server.sys.pojo.dto.UserDTO; +import com.docus.server.sys.service.IPowerUserService; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + + +@Component +public class UserHttpCollectJob extends AbstractUserCollectJob { + + @Resource + private final IHttpUserCollectService httpUserCollectService; + + public UserHttpCollectJob(IPowerUserService userService, ITaskConfigService taskConfigService, IHttpUserCollectService httpDeptCollectService) { + super(userService, taskConfigService); + this.httpUserCollectService = httpDeptCollectService; + } + + /** + * xxl jobhandler 手工执行 + */ + @XxlJob("startAllDeptHttpCollect") + public void startAllDeptHttpCollect() { + super.startCollectAll(getJobParam()); + } + + /** + * xxl jobhandler 配置定时启动,如果未完成任务跳过。 + */ + @XxlJob("startIncDeptHttpCollect") + public void startIncDeptHttpCollect() { + super.startCollectIncrement(getJobParam()); + } + + + @Override + public List getUsers(Date startDate, Date endDate, long pazeNum, long pageSize) { + //需要根据不同医院去解析不同的内容。使用接口实现的方式。 + return httpUserCollectService.getUsers(startDate, endDate, pazeNum, pageSize); + } +} diff --git a/common-collect/src/main/java/com/docus/server/collect/job/user/UserViewCollectJob.java b/common-collect/src/main/java/com/docus/server/collect/job/user/UserViewCollectJob.java new file mode 100644 index 0000000..0234c59 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/job/user/UserViewCollectJob.java @@ -0,0 +1,48 @@ +package com.docus.server.collect.job.user; + +import com.docus.server.collect.service.ITaskConfigService; +import com.docus.server.his.service.IHisService; +import com.docus.server.sys.pojo.dto.UserDTO; +import com.docus.server.sys.service.IPowerUserService; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +@Component +public class UserViewCollectJob extends AbstractUserCollectJob { + @Resource + private final IHisService hisService; + + protected UserViewCollectJob(IPowerUserService deptService, ITaskConfigService taskConfigService, IHisService hisService) { + super(deptService, taskConfigService); + this.hisService = hisService; + } + + /** + * xxl jobhandler 手工执行,全量执行 + */ + @XxlJob("startAllDeptViewCollect") + public void startAllDeptViewCollect() { + super.startCollectAll(getJobParam()); + } + + + /** + * xxl jobhandler 配置定时启动,如果未完成任务跳过。增量收集 + */ + @XxlJob("startIncDeptViewCollect") + public void startIncDeptViewCollect() { + super.startCollectIncrement(getJobParam()); + } + + + @Override + public List getUsers(Date startDate, Date endDate, long pageNum, long pageSize) { + //每家医院按照固定的格式写sql,不同医院需要替换不同的sql即可。 + return hisService.getUserListView(startDate, endDate, pageNum, pageSize); + } + +} diff --git a/common-collect/src/main/java/com/docus/server/collect/mq/MqCollect.java b/common-collect/src/main/java/com/docus/server/collect/mq/MqCollect.java index 493861d..e63cb12 100644 --- a/common-collect/src/main/java/com/docus/server/collect/mq/MqCollect.java +++ b/common-collect/src/main/java/com/docus/server/collect/mq/MqCollect.java @@ -1,7 +1,7 @@ package com.docus.server.collect.mq; import com.docus.server.sys.service.Dept; -import com.docus.server.sys.service.IDeptService; +import com.docus.server.sys.service.IPowerDeptService; import com.docus.server.ws.IWsResult; import lombok.extern.slf4j.Slf4j; @@ -14,7 +14,7 @@ import javax.annotation.Resource; public class MqCollect { @Resource - private IDeptService deptService; + private IPowerDeptService deptService; @Resource private IWsResult wsResult; diff --git a/common-collect/src/main/java/com/docus/server/collect/service/CollectService.java b/common-collect/src/main/java/com/docus/server/collect/service/CollectService.java index b3b0fea..db1c4c2 100644 --- a/common-collect/src/main/java/com/docus/server/collect/service/CollectService.java +++ b/common-collect/src/main/java/com/docus/server/collect/service/CollectService.java @@ -3,7 +3,7 @@ package com.docus.server.collect.service; import com.docus.server.collect.infrastructure.dao.ReceiveDeptInfoEntity; import com.docus.server.collect.infrastructure.mapper.ReceiveDeptInfoMapper; import com.docus.server.sys.service.Dept; -import com.docus.server.sys.service.IDeptService; +import com.docus.server.sys.service.IPowerDeptService; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; @@ -14,7 +14,7 @@ import javax.annotation.Resource; public class CollectService { @Resource - private IDeptService deptService; + private IPowerDeptService deptService; @Resource private ReceiveDeptInfoMapper receiveDeptInfoMapper; diff --git a/common-collect/src/main/java/com/docus/server/collect/service/IHttpBasicCollectService.java b/common-collect/src/main/java/com/docus/server/collect/service/IHttpBasicCollectService.java new file mode 100644 index 0000000..48d1213 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/service/IHttpBasicCollectService.java @@ -0,0 +1,10 @@ +package com.docus.server.collect.service; + +import com.docus.server.sys.pojo.dto.TBasicDTO; + +import java.util.Date; +import java.util.List; + +public interface IHttpBasicCollectService { + List getBasics(Date startDate, Date endDate, long pageNum, long pageSize); +} diff --git a/common-collect/src/main/java/com/docus/server/collect/service/IHttpDeptCollectService.java b/common-collect/src/main/java/com/docus/server/collect/service/IHttpDeptCollectService.java deleted file mode 100644 index 6d17189..0000000 --- a/common-collect/src/main/java/com/docus/server/collect/service/IHttpDeptCollectService.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.docus.server.collect.service; - -import com.docus.server.sys.pojo.dto.DeptDTO; - -import java.util.Date; -import java.util.List; - -public interface IHttpDeptCollectService { - List getDepts(Date startDate, Date endDate, long pazeNum, long pageSize); -} diff --git a/common-collect/src/main/java/com/docus/server/collect/service/IHttpTBasicCollectService.java b/common-collect/src/main/java/com/docus/server/collect/service/IHttpTBasicCollectService.java new file mode 100644 index 0000000..5031dfe --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/service/IHttpTBasicCollectService.java @@ -0,0 +1,10 @@ +package com.docus.server.collect.service; + +import com.docus.server.sys.pojo.dto.TBasicDTO; + +import java.util.Date; +import java.util.List; + +public interface IHttpTBasicCollectService { + List getDepts(Date startDate, Date endDate, long pageNum, long pageSize); +} diff --git a/common-collect/src/main/java/com/docus/server/collect/service/IHttpUserCollectService.java b/common-collect/src/main/java/com/docus/server/collect/service/IHttpUserCollectService.java new file mode 100644 index 0000000..2a003f6 --- /dev/null +++ b/common-collect/src/main/java/com/docus/server/collect/service/IHttpUserCollectService.java @@ -0,0 +1,10 @@ +package com.docus.server.collect.service; + +import com.docus.server.sys.pojo.dto.UserDTO; + +import java.util.Date; +import java.util.List; + +public interface IHttpUserCollectService { + List getUsers(Date startDate, Date endDate, long pageNum, long pageSize); +} diff --git a/common-collect/src/main/java/com/docus/server/collect/domain/ITaskConfigService.java b/common-collect/src/main/java/com/docus/server/collect/service/ITaskConfigService.java similarity index 69% rename from common-collect/src/main/java/com/docus/server/collect/domain/ITaskConfigService.java rename to common-collect/src/main/java/com/docus/server/collect/service/ITaskConfigService.java index 8c77f17..c311b49 100644 --- a/common-collect/src/main/java/com/docus/server/collect/domain/ITaskConfigService.java +++ b/common-collect/src/main/java/com/docus/server/collect/service/ITaskConfigService.java @@ -1,4 +1,6 @@ -package com.docus.server.collect.domain; +package com.docus.server.collect.service; + +import com.docus.server.collect.domain.TaskConfig; import java.util.Date; diff --git a/common-collect/src/main/java/com/docus/server/collect/domain/TaskConfigServiceImpl.java b/common-collect/src/main/java/com/docus/server/collect/service/impl/TaskConfigServiceImpl.java similarity index 53% rename from common-collect/src/main/java/com/docus/server/collect/domain/TaskConfigServiceImpl.java rename to common-collect/src/main/java/com/docus/server/collect/service/impl/TaskConfigServiceImpl.java index 3583d8d..874b6b8 100644 --- a/common-collect/src/main/java/com/docus/server/collect/domain/TaskConfigServiceImpl.java +++ b/common-collect/src/main/java/com/docus/server/collect/service/impl/TaskConfigServiceImpl.java @@ -1,23 +1,30 @@ -package com.docus.server.collect.domain; +package com.docus.server.collect.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.docus.server.collect.domain.TaskConfig; import com.docus.server.collect.infrastructure.mapper.TaskConfigMapper; +import com.docus.server.collect.service.ITaskConfigService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Date; @Service public class TaskConfigServiceImpl extends ServiceImpl implements ITaskConfigService { - + @Transactional @Override public void updateAllPointerDate(String id, Date date) { - + TaskConfig taskConfig = super.getById(id); + taskConfig.setAllPointerTime(date); + super.updateById(taskConfig); } - + @Transactional @Override public void updateIncPointerDate(String id, Date date) { - + TaskConfig taskConfig = super.getById(id); + taskConfig.setIncPointerTime(date); + super.updateById(taskConfig); } diff --git a/docus-sys/src/main/java/com/docus/server/sys/service/DeptService.java b/docus-sys/src/main/java/com/docus/server/sys/service/DeptService.java deleted file mode 100644 index 8815f8e..0000000 --- a/docus-sys/src/main/java/com/docus/server/sys/service/DeptService.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.docus.server.sys.service; - -import com.docus.server.sys.infrastructure.dao.IDeptDao; -import lombok.AllArgsConstructor; -import org.springframework.stereotype.Component; - -import java.util.List; - -@Component -@AllArgsConstructor -public class DeptService implements IDeptService { - - - private final IDeptDao deptDao; - - @Override - public void save(List depts) { - //需要判断是否已经存在,存在则不再重复。 - for (Dept dept : depts) { - Dept dept1 = deptDao.getDept(dept.getDeptCode()); - if (dept1 != null) { - deptDao.save(dept); - } - } - } - - - @Override - public void save(Dept dept) { - Dept dept1 = deptDao.getDept(dept.getDeptCode()); - if (dept1 != null) { - //需要判断是否已经存在,存在则不再重复。 - deptDao.save(dept); - } - - } -} diff --git a/docus-sys/src/main/java/com/docus/server/sys/service/ExceptionCode.java b/docus-sys/src/main/java/com/docus/server/sys/service/ExceptionCode.java deleted file mode 100644 index 34b8250..0000000 --- a/docus-sys/src/main/java/com/docus/server/sys/service/ExceptionCode.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.docus.server.sys.service; - -//异常代码每句 -public enum ExceptionCode { - - ParamIllegal(100001, "参数不合法"), - - IpRequestExceedLimit(100002, "当前ip请求超出限制"), - - TokenError(100003, "token不合法或已过期"), - - InternalError(100004, "内部错误"); - - ExceptionCode(Integer code, String message) { - this.code = code; - this.message = message; - } - - private Integer code; - private String message; - - public Integer getCode() { - return code; - } - - public String getMessage() { - return message; - } - -} diff --git a/docus-sys/src/main/java/com/docus/server/sys/service/IDeptService.java b/docus-sys/src/main/java/com/docus/server/sys/service/IDeptService.java deleted file mode 100644 index 7f4f7fa..0000000 --- a/docus-sys/src/main/java/com/docus/server/sys/service/IDeptService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.docus.server.sys.service; - -import java.util.List; - -public interface IDeptService { - void save(List depts); - - void save(Dept dept); -} diff --git a/docus-sys/src/main/java/com/docus/server/sys/service/IPowerDeptService.java b/docus-sys/src/main/java/com/docus/server/sys/service/IPowerDeptService.java index 9f445dd..f591a2a 100644 --- a/docus-sys/src/main/java/com/docus/server/sys/service/IPowerDeptService.java +++ b/docus-sys/src/main/java/com/docus/server/sys/service/IPowerDeptService.java @@ -4,25 +4,15 @@ import com.docus.server.sys.pojo.dto.DeptDTO; import java.util.List; -/** - * 用户服务 - */ public interface IPowerDeptService { - /** - * 科室注册 - * - * @param deptDTOList 用户注册参数 - * @return 处理结果 - */ - void batchSavePowerDept(List deptDTOList); /** * 科室注册 * - * @param deptDTO 用户注册参数 + * @param deptDto 用户注册参数 * @return 处理结果 */ - boolean register(DeptDTO deptDTO); + boolean register(DeptDTO deptDto); /** * 根据科室编号删除科室 @@ -31,4 +21,6 @@ public interface IPowerDeptService { * @return 删除结果 */ boolean delDeptByDeptCode(String deptCode); + + void batchSavePowerDept(List deptDTOList); } diff --git a/docus-sys/src/main/java/com/docus/server/sys/service/IPowerUserService.java b/docus-sys/src/main/java/com/docus/server/sys/service/IPowerUserService.java index 75fb82a..4da1e1f 100644 --- a/docus-sys/src/main/java/com/docus/server/sys/service/IPowerUserService.java +++ b/docus-sys/src/main/java/com/docus/server/sys/service/IPowerUserService.java @@ -2,6 +2,8 @@ package com.docus.server.sys.service; import com.docus.server.sys.pojo.dto.UserDTO; +import java.util.List; + /** * 用户服务 */ @@ -21,4 +23,11 @@ public interface IPowerUserService { * @return 删除结果 */ boolean delUserByUserName(String userName); + + /** + * 批量保存 + * + * @param users + */ + void batchSavePowerUser(List users); } diff --git a/docus-sys/src/main/java/com/docus/server/sys/service/ITBasicService.java b/docus-sys/src/main/java/com/docus/server/sys/service/ITBasicService.java new file mode 100644 index 0000000..0025483 --- /dev/null +++ b/docus-sys/src/main/java/com/docus/server/sys/service/ITBasicService.java @@ -0,0 +1,34 @@ +package com.docus.server.sys.service; + +import com.docus.server.sys.pojo.dto.TBasicDTO; + +import java.util.List; + +/** + * 用户服务 + */ +public interface ITBasicService { + /** + * 科室注册 + * + * @param deptDTOList 用户注册参数 + * @return 处理结果 + */ + void batchSaveBasics(List deptDTOList); + + /** + * 科室注册 + * + * @param deptDTO 用户注册参数 + * @return 处理结果 + */ + boolean register(TBasicDTO deptDTO); + + /** + * 根据科室编号删除科室 + * + * @param deptCode 科室编码 + * @return 删除结果 + */ + boolean delDeptByDeptCode(String deptCode); +} diff --git a/docus-sys/src/main/java/com/docus/server/sys/service/impl/PowerUserServiceImpl.java b/docus-sys/src/main/java/com/docus/server/sys/service/impl/PowerUserServiceImpl.java index 46dc2de..ec8e8c9 100644 --- a/docus-sys/src/main/java/com/docus/server/sys/service/impl/PowerUserServiceImpl.java +++ b/docus-sys/src/main/java/com/docus/server/sys/service/impl/PowerUserServiceImpl.java @@ -12,6 +12,7 @@ import com.docus.server.sys.service.IPowerUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; /** * 用户服务实现 @@ -20,16 +21,18 @@ import javax.annotation.Resource; */ @Service public class PowerUserServiceImpl extends ServiceImpl implements IPowerUserService { - // @Resource -// private PowerUserMapper powerUserMapper; @Resource private IdService idService; @Resource private UserProperties userProperties; + @Override + public void batchSavePowerUser(List userDTOList) { + userDTOList.forEach(this::register); + } + @Override public boolean register(UserDTO userDTO) { -// PowerUser powerUser = powerUserMapper.getUserByUserName(userDTO.getUserName()); PowerUser powerUser = baseMapper.getUserByUserName(userDTO.getUserName()); UserModifyParam userModifyParam = userDTO.transUserAddParam(); if (Func.isEmpty(powerUser)) { @@ -53,4 +56,6 @@ public class PowerUserServiceImpl extends ServiceImpl implements ITBasicService { + @Resource + private IdService idService; + @Resource + private UserProperties userProperties; + + @Override + public void batchSavePowerUser(List userDTOList) { + userDTOList.forEach(this::register); + } + + @Override + public boolean register(UserDTO userDTO) { + PowerUser powerUser = baseMapper.getUserByUserName(userDTO.getUserName()); + UserModifyParam userModifyParam = userDTO.transUserAddParam(); + if (Func.isEmpty(powerUser)) { + long userId = idService.getDateSeq(); + userModifyParam.setUserId(userId); + userModifyParam.setUserPwd(userProperties.getPassword()); + baseMapper.addUser(userModifyParam); + return true; + } + userModifyParam.setUserId(powerUser.getUserId()); + baseMapper.updateUser(userModifyParam); + return true; + } + + @Override + public boolean delUserByUserName(String userName) { + PowerUser powerUser = baseMapper.getUserByUserName(userName); + if (Func.isEmpty(powerUser)) { + return true; + } + baseMapper.delUserByUserName(userName); + return true; + } + + +} diff --git a/his-sysem/src/main/java/com/docus/server/his/infrastructure/HisSysDao.java b/his-sysem/src/main/java/com/docus/server/his/infrastructure/HisSysDao.java index 9b94eb5..92db339 100644 --- a/his-sysem/src/main/java/com/docus/server/his/infrastructure/HisSysDao.java +++ b/his-sysem/src/main/java/com/docus/server/his/infrastructure/HisSysDao.java @@ -1,7 +1,9 @@ package com.docus.server.his.infrastructure; import com.docus.server.his.infrastructure.mapper.HisDeptMapper; +import com.docus.server.his.infrastructure.mapper.HisUserMapper; import com.docus.server.sys.pojo.dto.DeptDTO; +import com.docus.server.sys.pojo.dto.UserDTO; import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; @@ -14,6 +16,7 @@ public class HisSysDao { private final HisDeptMapper hisDeptMapper; + private final HisUserMapper hisUserMapper; public List getDeptListView(Date startDate, Date endDate, long pageNum, long pageSize) { @@ -21,8 +24,8 @@ public class HisSysDao { } - public void getUserListView() { - + public List getUserListView(Date startDate, Date endDate, long pageNum, long pageSize) { + return hisUserMapper.getUserListView(startDate, endDate, (pageNum - 1) * pageSize, pageSize); } diff --git a/his-sysem/src/main/java/com/docus/server/his/infrastructure/mapper/HisDeptMapper.java b/his-sysem/src/main/java/com/docus/server/his/infrastructure/mapper/HisDeptMapper.java index ceff497..5ef7ed2 100644 --- a/his-sysem/src/main/java/com/docus/server/his/infrastructure/mapper/HisDeptMapper.java +++ b/his-sysem/src/main/java/com/docus/server/his/infrastructure/mapper/HisDeptMapper.java @@ -13,4 +13,6 @@ import java.util.List; public interface HisDeptMapper { List getDeptListView(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("offset") long offset, @Param("pageSize") long pageSize); + + } diff --git a/his-sysem/src/main/java/com/docus/server/his/infrastructure/mapper/HisUserMapper.java b/his-sysem/src/main/java/com/docus/server/his/infrastructure/mapper/HisUserMapper.java new file mode 100644 index 0000000..6bc9266 --- /dev/null +++ b/his-sysem/src/main/java/com/docus/server/his/infrastructure/mapper/HisUserMapper.java @@ -0,0 +1,18 @@ +package com.docus.server.his.infrastructure.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.docus.server.sys.pojo.dto.UserDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +@Mapper +@DS("his") +public interface HisUserMapper { + + List getUserListView(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("offset") long offset, @Param("pageSize") long pageSize); + + +} diff --git a/his-sysem/src/main/java/com/docus/server/his/service/IHisService.java b/his-sysem/src/main/java/com/docus/server/his/service/IHisService.java index 1619a8b..16b6c23 100644 --- a/his-sysem/src/main/java/com/docus/server/his/service/IHisService.java +++ b/his-sysem/src/main/java/com/docus/server/his/service/IHisService.java @@ -1,10 +1,13 @@ package com.docus.server.his.service; import com.docus.server.sys.pojo.dto.DeptDTO; +import com.docus.server.sys.pojo.dto.UserDTO; import java.util.Date; import java.util.List; public interface IHisService { List getDeptListView(Date startDate, Date endDate, long pazeNum, long pageSize); + + List getUserListView(Date startDate, Date endDate, long pazeNum, long pageSize); } diff --git a/his-sysem/src/main/java/com/docus/server/his/service/impl/HisService.java b/his-sysem/src/main/java/com/docus/server/his/service/impl/HisService.java index 018a7b4..45f3d07 100644 --- a/his-sysem/src/main/java/com/docus/server/his/service/impl/HisService.java +++ b/his-sysem/src/main/java/com/docus/server/his/service/impl/HisService.java @@ -3,6 +3,7 @@ package com.docus.server.his.service.impl; import com.docus.server.his.infrastructure.HisSysDao; import com.docus.server.his.service.IHisService; import com.docus.server.sys.pojo.dto.DeptDTO; +import com.docus.server.sys.pojo.dto.UserDTO; import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; @@ -17,8 +18,13 @@ public class HisService implements IHisService { @Override - public List getDeptListView(Date startDate, Date endDate, long pazeNum, long pageSize) { - return hisSysDao.getDeptListView(startDate, endDate, pazeNum, pageSize); + public List getDeptListView(Date startDate, Date endDate, long pageNum, long pageSize) { + return hisSysDao.getDeptListView(startDate, endDate, pageNum, pageSize); + } + + @Override + public List getUserListView(Date startDate, Date endDate, long pageNum, long pageSize) { + return hisSysDao.getUserListView(startDate, endDate, pageNum, pageSize); } } diff --git a/his-sysem/src/main/resources/mapper/HisUserMapper.xml b/his-sysem/src/main/resources/mapper/HisUserMapper.xml new file mode 100644 index 0000000..3d9bd5f --- /dev/null +++ b/his-sysem/src/main/resources/mapper/HisUserMapper.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + +