diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/externalimport/ExternalImportController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/externalimport/ExternalImportController.java new file mode 100644 index 00000000..b4ed093f --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/externalimport/ExternalImportController.java @@ -0,0 +1,92 @@ +package com.xinelu.manage.controller.externalimport; + +import com.xinelu.common.annotation.Log; +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.common.enums.BusinessType; +import com.xinelu.common.utils.poi.ExcelUtil; +import com.xinelu.manage.domain.externalimport.ExternalImport; +import com.xinelu.manage.service.externalimport.IExternalImportService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 外部数据导入Controller + * + * @author zh + * @date 2026-03-18 + */ +@RestController +@RequestMapping("/system/externalImport") +public class ExternalImportController extends BaseController { + + @Resource + private IExternalImportService externalImportService; + + /** + * 查询外部数据导入列表 + */ + @PreAuthorize("@ss.hasPermi('system:externalImport:list')") + @GetMapping("/list") + public TableDataInfo list(ExternalImport externalImport) { + startPage(); + List list = externalImportService.selectExternalImportList(externalImport); + return getDataTable(list); + } + + /** + * 导出外部数据导入列表 + */ + @PreAuthorize("@ss.hasPermi('system:externalImport:export')") + @Log(title = "外部数据导入", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ExternalImport externalImport) { + List list = externalImportService.selectExternalImportList(externalImport); + ExcelUtil util = new ExcelUtil<>(ExternalImport.class); + util.exportExcel(response, list, "外部数据导入数据"); + } + + /** + * 获取外部数据导入详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:externalImport:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(externalImportService.selectExternalImportById(id)); + } + + /** + * 新增外部数据导入 + */ + @PreAuthorize("@ss.hasPermi('system:externalImport:add')") + @Log(title = "外部数据导入", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ExternalImport externalImport) { + return toAjax(externalImportService.insertExternalImport(externalImport)); + } + + /** + * 修改外部数据导入 + */ + @PreAuthorize("@ss.hasPermi('system:externalImport:edit')") + @Log(title = "外部数据导入", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody ExternalImport externalImport) { + return toAjax(externalImportService.updateExternalImport(externalImport)); + } + + /** + * 删除外部数据导入 + */ + @PreAuthorize("@ss.hasPermi('system:externalImport:remove')") + @Log(title = "外部数据导入", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(externalImportService.deleteExternalImportByIds(ids)); + } +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/externalimport/ExternalImport.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/externalimport/ExternalImport.java new file mode 100644 index 00000000..5aab72b0 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/externalimport/ExternalImport.java @@ -0,0 +1,190 @@ +package com.xinelu.manage.domain.externalimport; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinelu.common.annotation.Excel; +import com.xinelu.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.time.LocalDateTime; + +/** + * 外部数据导入对象类 external_import + * + * @author zh + * @date 2026-03-18 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "外部数据导入对象", description = "external_import") +public class ExternalImport extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 外部数据导入主键id + */ + private Long id; + + /** + * 患者姓名 + */ + @ApiModelProperty(value = "患者姓名") + @Excel(name = "患者姓名") + private String patientName; + + /** + * 患者电话 + */ + @ApiModelProperty(value = "患者电话") + @Excel(name = "患者电话") + private String phone; + + /** + * 年龄 + */ + @ApiModelProperty(value = "年龄") + @Excel(name = "年龄") + private String age; + + /** + * 身份证号 + */ + @ApiModelProperty(value = "身份证号") + @Excel(name = "身份证号") + private String cardNo; + + /** + * 性别,男:MALE,女:FEMALE + */ + @ApiModelProperty(value = "性别,男:MALE,女:FEMALE") + @Excel(name = "性别,男:MALE,女:FEMALE") + private String sex; + + /** + * 所属科室名称 + */ + @ApiModelProperty(value = "所属科室名称") + @Excel(name = "所属科室名称") + private String departmentName; + + /** + * 就诊方式,门诊:OUTPATIENT_SERVICE,住院:BE_IN_HOSPITAL + */ + @ApiModelProperty(value = "就诊方式,门诊:OUTPATIENT_SERVICE,住院:BE_IN_HOSPITAL") + @Excel(name = "就诊方式,门诊:OUTPATIENT_SERVICE,住院:BE_IN_HOSPITAL") + private String visitMethod; + + /** + * 就诊时间(门诊患者),时间格式:yyyy-MM-dd HH:mm:ss + */ + @ApiModelProperty(value = "就诊时间") + @Excel(name = "就诊时间", readConverterExp = "门诊患者") + private LocalDateTime visitDate; + + /** + * 入院时间,时间格式:yyyy-MM-dd HH:mm:ss + */ + @ApiModelProperty(value = "入院时间,时间格式:yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "入院时间,时间格式:yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime admissionTime; + + /** + * 出院时间(出院患者),时间格式:yyyy-MM-dd HH:mm:ss + */ + @ApiModelProperty(value = "出院时间") + @Excel(name = "出院时间", readConverterExp = "出=院患者") + private LocalDateTime dischargeTime; + + /** + * 推送时间,时间格式:yyyy-MM-dd HH:mm:ss + */ + @ApiModelProperty(value = "推送时间,时间格式:yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "推送时间,时间格式:yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime pushTime; + + /** + * 计划随访时间,时间格式:yyyy-MM-dd HH:mm:ss + */ + @ApiModelProperty(value = "计划随访时间,时间格式:yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "计划随访时间,时间格式:yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime planFollowUp; + + /** + * 随访模板编号 + */ + @ApiModelProperty(value = "随访模板编号") + @Excel(name = "随访模板编号") + private Long followUpTemplate; + + /** + * 主要诊断 + */ + @ApiModelProperty(value = "主要诊断") + @Excel(name = "主要诊断") + private String mainDiagnosis; + + /** + * 数据来源,医共体平台 + */ + @ApiModelProperty(value = "数据来源,医共体平台") + @Excel(name = "数据来源,医共体平台") + private String dataSource; + + /** + * 出院方式(出院患者) + */ + @ApiModelProperty(value = "出院方式") + @Excel(name = "出院方式", readConverterExp = "出院患者") + private String dischargeMethod; + + /** + * 患者健康状况 + */ + @ApiModelProperty(value = "患者健康状况") + @Excel(name = "患者健康状况") + private String healthState; + + /** + * 数据获取时间 + */ + @ApiModelProperty(value = "数据获取时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "数据获取时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime dataGetTime; + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("patientName", getPatientName()) + .append("phone", getPhone()) + .append("age", getAge()) + .append("cardNo", getCardNo()) + .append("sex", getSex()) + .append("departmentName", getDepartmentName()) + .append("visitMethod", getVisitMethod()) + .append("visitDate", getVisitDate()) + .append("admissionTime", getAdmissionTime()) + .append("dischargeTime", getDischargeTime()) + .append("pushTime", getPushTime()) + .append("planFollowUp", getPlanFollowUp()) + .append("followUpTemplate", getFollowUpTemplate()) + .append("mainDiagnosis", getMainDiagnosis()) + .append("dataSource", getDataSource()) + .append("dischargeMethod", getDischargeMethod()) + .append("healthState", getHealthState()) + .append("dataGetTime", getDataGetTime()) + .toString(); + } +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/externalimport/ExternalImportMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/externalimport/ExternalImportMapper.java new file mode 100644 index 00000000..50a3de44 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/externalimport/ExternalImportMapper.java @@ -0,0 +1,77 @@ +package com.xinelu.manage.mapper.externalimport; + +import com.xinelu.manage.domain.externalimport.ExternalImport; + +import java.util.List; + +/** + * 外部数据导入Mapper接口 + * + * @author zh + * @date 2026-03-18 + */ +public interface ExternalImportMapper { + /** + * 查询外部数据导入 + * + * @param id 外部数据导入主键 + * @return 外部数据导入 + */ + ExternalImport selectExternalImportById(Long id); + + /** + * 查询外部数据导入列表 + * + * @param externalImport 外部数据导入 + * @return 外部数据导入集合 + */ + List selectExternalImportList(ExternalImport externalImport); + + /** + * 新增外部数据导入 + * + * @param externalImport 外部数据导入 + * @return 结果 + */ + int insertExternalImport(ExternalImport externalImport); + + /** + * 批量新增外部数据导入 + * + * @param externalImports 外部数据导入 + * @return 结果 + */ + int insertExternalImportList(List externalImports); + + /** + * 修改外部数据导入 + * + * @param externalImport 外部数据导入 + * @return 结果 + */ + int updateExternalImport(ExternalImport externalImport); + + /** + * 删除外部数据导入 + * + * @param id 外部数据导入主键 + * @return 结果 + */ + int deleteExternalImportById(Long id); + + /** + * 批量删除外部数据导入 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteExternalImportByIds(Long[] ids); + + /** + * 根据手机号查询数据 + * + * @param phones + * @return ExternalImport + */ + List selectExternalByPhone(List phones); +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/externalimport/IExternalImportService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/externalimport/IExternalImportService.java new file mode 100644 index 00000000..0a84f624 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/externalimport/IExternalImportService.java @@ -0,0 +1,61 @@ +package com.xinelu.manage.service.externalimport; + +import com.xinelu.manage.domain.externalimport.ExternalImport; + +import java.util.List; + +/** + * 外部数据导入Service接口 + * + * @author zh + * @date 2026-03-18 + */ +public interface IExternalImportService { + /** + * 查询外部数据导入 + * + * @param id 外部数据导入主键 + * @return 外部数据导入 + */ + ExternalImport selectExternalImportById(Long id); + + /** + * 查询外部数据导入列表 + * + * @param externalImport 外部数据导入 + * @return 外部数据导入集合 + */ + List selectExternalImportList(ExternalImport externalImport); + + /** + * 新增外部数据导入 + * + * @param externalImport 外部数据导入 + * @return 结果 + */ + int insertExternalImport(ExternalImport externalImport); + + /** + * 修改外部数据导入 + * + * @param externalImport 外部数据导入 + * @return 结果 + */ + int updateExternalImport(ExternalImport externalImport); + + /** + * 批量删除外部数据导入 + * + * @param ids 需要删除的外部数据导入主键集合 + * @return 结果 + */ + int deleteExternalImportByIds(Long[] ids); + + /** + * 删除外部数据导入信息 + * + * @param id 外部数据导入主键 + * @return 结果 + */ + int deleteExternalImportById(Long id); +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/externalimport/impl/ExternalImportServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/externalimport/impl/ExternalImportServiceImpl.java new file mode 100644 index 00000000..fe3cd015 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/externalimport/impl/ExternalImportServiceImpl.java @@ -0,0 +1,88 @@ +package com.xinelu.manage.service.externalimport.impl; + +import com.xinelu.manage.domain.externalimport.ExternalImport; +import com.xinelu.manage.mapper.externalimport.ExternalImportMapper; +import com.xinelu.manage.service.externalimport.IExternalImportService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 外部数据导入Service业务层处理 + * + * @author zh + * @date 2026-03-18 + */ +@Service +public class ExternalImportServiceImpl implements IExternalImportService { + + @Resource + private ExternalImportMapper externalImportMapper; + + /** + * 查询外部数据导入 + * + * @param id 外部数据导入主键 + * @return 外部数据导入 + */ + @Override + public ExternalImport selectExternalImportById(Long id) { + return externalImportMapper.selectExternalImportById(id); + } + + /** + * 查询外部数据导入列表 + * + * @param externalImport 外部数据导入 + * @return 外部数据导入 + */ + @Override + public List selectExternalImportList(ExternalImport externalImport) { + return externalImportMapper.selectExternalImportList(externalImport); + } + + /** + * 新增外部数据导入 + * + * @param externalImport 外部数据导入 + * @return 结果 + */ + @Override + public int insertExternalImport(ExternalImport externalImport) { + return externalImportMapper.insertExternalImport(externalImport); + } + + /** + * 修改外部数据导入 + * + * @param externalImport 外部数据导入 + * @return 结果 + */ + @Override + public int updateExternalImport(ExternalImport externalImport) { + return externalImportMapper.updateExternalImport(externalImport); + } + + /** + * 批量删除外部数据导入 + * + * @param ids 需要删除的外部数据导入主键 + * @return 结果 + */ + @Override + public int deleteExternalImportByIds(Long[] ids) { + return externalImportMapper.deleteExternalImportByIds(ids); + } + + /** + * 删除外部数据导入信息 + * + * @param id 外部数据导入主键 + * @return 结果 + */ + @Override + public int deleteExternalImportById(Long id) { + return externalImportMapper.deleteExternalImportById(id); + } +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/externalImport/ExternalImportMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/externalImport/ExternalImportMapper.xml new file mode 100644 index 00000000..2d5eaca8 --- /dev/null +++ b/postdischarge-manage/src/main/resources/mapper/manage/externalImport/ExternalImportMapper.xml @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, patient_name, phone, age, card_no, sex, department_name, visit_method, visit_date, admission_time, discharge_time, push_time, plan_follow_up, follow_up_template, main_diagnosis, data_source, discharge_method, health_state, data_get_time from external_import + + + + + + + + insert into external_import + + patient_name, + + phone, + + age, + + card_no, + + sex, + + department_name, + + visit_method, + + visit_date, + + admission_time, + + discharge_time, + + push_time, + + plan_follow_up, + + follow_up_template, + + main_diagnosis, + + data_source, + + discharge_method, + + health_state, + + data_get_time, + + + + #{patientName}, + + #{phone}, + + #{age}, + + #{cardNo}, + + #{sex}, + + #{departmentName}, + + #{visitMethod}, + + #{visitDate}, + + #{admissionTime}, + + #{dischargeTime}, + + #{pushTime}, + + #{planFollowUp}, + + #{followUpTemplate}, + + #{mainDiagnosis}, + + #{dataSource}, + + #{dischargeMethod}, + + #{healthState}, + + #{dataGetTime}, + + + + + + insert into external_import( + patient_name, + phone, + age, + card_no, + sex, + department_name, + visit_method, + visit_date, + admission_time, + discharge_time, + push_time, + plan_follow_up, + follow_up_template, + main_diagnosis, + data_source, + discharge_method, + health_state, + data_get_time + ) values + + ( + #{ExternalImport.patientName}, + #{ExternalImport.phone}, + #{ExternalImport.age}, + #{ExternalImport.cardNo}, + #{ExternalImport.sex}, + #{ExternalImport.departmentName}, + #{ExternalImport.visitMethod}, + #{ExternalImport.visitDate}, + #{ExternalImport.admissionTime}, + #{ExternalImport.dischargeTime}, + #{ExternalImport.pushTime}, + #{ExternalImport.planFollowUp}, + #{ExternalImport.followUpTemplate}, + #{ExternalImport.mainDiagnosis}, + #{ExternalImport.dataSource}, + #{ExternalImport.dischargeMethod}, + #{ExternalImport.healthState}, + #{ExternalImport.dataGetTime} + ) + + + + + update external_import + + patient_name = + #{patientName}, + + phone = + #{phone}, + + age = + #{age}, + + card_no = + #{cardNo}, + + sex = + #{sex}, + + department_name = + #{departmentName}, + + visit_method = + #{visitMethod}, + + visit_date = + #{visitDate}, + + admission_time = + #{admissionTime}, + + discharge_time = + #{dischargeTime}, + + push_time = + #{pushTime}, + + plan_follow_up = + #{planFollowUp}, + + follow_up_template = + #{followUpTemplate}, + + main_diagnosis = + #{mainDiagnosis}, + + data_source = + #{dataSource}, + + discharge_method = + #{dischargeMethod}, + + health_state = + #{healthState}, + + data_get_time = + #{dataGetTime}, + + + where id = #{id} + + + + delete from external_import where id = #{id} + + + + delete from external_import where id in + + #{id} + + + + + \ No newline at end of file diff --git a/postdischarge-quartz/pom.xml b/postdischarge-quartz/pom.xml index 2008bfc2..19155383 100644 --- a/postdischarge-quartz/pom.xml +++ b/postdischarge-quartz/pom.xml @@ -41,6 +41,31 @@ com.xinelu postdischarge-mobile + + com.oracle.database.jdbc + ojdbc8 + 19.8.0.0 + + + com.oracle.database.nls + orai18n + 19.8.0.0 + + + + maven.oracle.com + Oracle Maven Repository + https://maven.oracle.com + default + + true + + + false + + + + \ No newline at end of file diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/controller/MessageSubscriptionController.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/controller/MessageSubscriptionController.java index 959f347c..750c442f 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/controller/MessageSubscriptionController.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/controller/MessageSubscriptionController.java @@ -1,11 +1,16 @@ package com.xinelu.quartz.controller; +import com.xinelu.quartz.domain.TbFollowUp; import com.xinelu.quartz.task.SubscribeTask; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.sql.*; +import java.util.ArrayList; +import java.util.List; /** * 消息推送 @@ -19,7 +24,6 @@ public class MessageSubscriptionController { @Resource private SubscribeTask subscribeTask; - /** * 手动执行专病路径定时任务 */ @@ -27,4 +31,55 @@ public class MessageSubscriptionController { public void signPatientManageRouteNode() { subscribeTask.automaticSendSignPatientManageRouteNodeTask(); } + + @PostMapping("/aaa") + public void aaa(){ + List list = new ArrayList<>(); + try { + // 1.加载驱动 + Class.forName("oracle.jdbc.OracleDriver"); + // 2.获取连接 + Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@//172.19.116.212:1521/ORCL","HK_ZJK","DYWJWhkzjk5169"); + System.out.println(connection.getMetaData()); + // 3.创建Statement对象(可以执行sql的对象) + PreparedStatement preparedStatement = connection.prepareStatement("select * from tb_follow_up"); + // 4.获取结果集 + ResultSet resultSet = preparedStatement.executeQuery(); + // 5.对数据进行处理 + while (resultSet.next()) { + TbFollowUp followUp = new TbFollowUp(); + followUp.setXM(resultSet.getString("XM")); + followUp.setLXDH(resultSet.getString("LXDH")); + followUp.setNL(resultSet.getString("NL")); + followUp.setXB(resultSet.getString("XB")); + followUp.setZJHM(resultSet.getString("ZJHM")); + followUp.setJZKSMC(resultSet.getString("JZKSMC")); + followUp.setMZZYBZ(resultSet.getString("MZZYBZ")); + followUp.setJZSJ(resultSet.getString("JZSJ")); + followUp.setRYSJ(resultSet.getString("RYSJ")); + followUp.setCYSJ(resultSet.getString("CYSJ")); + followUp.setTSXJ(resultSet.getString("TSXJ")); + followUp.setSFSJ(resultSet.getString("SFSJ")); + followUp.setMBID(resultSet.getString("MBID")); + followUp.setJZZDSM(resultSet.getString("JZZDSM")); + followUp.setZLJG(resultSet.getString("ZLJG")); + followUp.setLYFS(resultSet.getString("LYFS")); + list.add(followUp); + } + // 6.关闭连接 先调用的最后关闭 关闭前判断是否存在 + if(resultSet != null) { + resultSet.close(); + } + if(preparedStatement != null) { + preparedStatement.close(); + } + if(connection != null) { + connection.close(); + } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (SQLException e) { + e.printStackTrace(); + } + } } diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/domain/TbFollowUp.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/domain/TbFollowUp.java new file mode 100644 index 00000000..c19247ca --- /dev/null +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/domain/TbFollowUp.java @@ -0,0 +1,24 @@ +package com.xinelu.quartz.domain; + +import lombok.Data; + +@Data +public class TbFollowUp { + + private String XM; + private String LXDH; + private String NL; + private String XB; + private String ZJHM; + private String JZKSMC; + private String MZZYBZ; + private String JZSJ; + private String RYSJ; + private String CYSJ; + private String TSXJ; + private String SFSJ; + private String MBID; + private String JZZDSM; + private String ZLJG; + private String LYFS; +} \ No newline at end of file diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/MedicalConsortiumPlatformTask.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/MedicalConsortiumPlatformTask.java new file mode 100644 index 00000000..fb7cf217 --- /dev/null +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/MedicalConsortiumPlatformTask.java @@ -0,0 +1,122 @@ +package com.xinelu.quartz.task; + +import com.xinelu.manage.domain.externalimport.ExternalImport; +import com.xinelu.manage.mapper.externalimport.ExternalImportMapper; +import com.xinelu.quartz.domain.TbFollowUp; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @description: 医共体数据导入定时任务 + * @author: haown + * @create: 2024-06-28 14:27 + **/ +@Slf4j +@Component("MedicalConsortiumPlatformTask") +public class MedicalConsortiumPlatformTask { + + @Resource + private ExternalImportMapper externalImportMapper; + + public void MedicalConsortiumPlatformTask() throws Exception { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + List list = new ArrayList<>(); + //获取数据 + try { + // 1.加载驱动 + Class.forName("oracle.jdbc.OracleDriver"); + // 2.获取连接 + Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@//172.19.116.212:1521/ORCL", "HK_ZJK", "DYWJWhkzjk5169"); + System.out.println(connection.getMetaData()); + // 3.创建Statement对象(可以执行sql的对象) + PreparedStatement preparedStatement = connection.prepareStatement("select * from tb_follow_up"); + // 4.获取结果集 + ResultSet resultSet = preparedStatement.executeQuery(); + // 5.对数据进行处理 + while (resultSet.next()) { + TbFollowUp followUp = new TbFollowUp(); + followUp.setXM(resultSet.getString("XM")); + followUp.setLXDH(resultSet.getString("LXDH")); + followUp.setNL(resultSet.getString("NL")); + followUp.setXB(resultSet.getString("XB")); + followUp.setZJHM(resultSet.getString("ZJHM")); + followUp.setJZKSMC(resultSet.getString("JZKSMC")); + followUp.setMZZYBZ(resultSet.getString("MZZYBZ")); + followUp.setJZSJ(resultSet.getString("JZSJ")); + followUp.setRYSJ(resultSet.getString("RYSJ")); + followUp.setCYSJ(resultSet.getString("CYSJ")); + followUp.setTSXJ(resultSet.getString("TSXJ")); + followUp.setSFSJ(resultSet.getString("SFSJ")); + followUp.setMBID(resultSet.getString("MBID")); + followUp.setJZZDSM(resultSet.getString("JZZDSM")); + followUp.setZLJG(resultSet.getString("ZLJG")); + followUp.setLYFS(resultSet.getString("LYFS")); + list.add(followUp); + } + // 6.关闭连接 先调用的最后关闭 关闭前判断是否存在 + resultSet.close(); + preparedStatement.close(); + connection.close(); + } catch (Exception e) { + e.printStackTrace(); + } + if (CollectionUtils.isEmpty(list) || list.size() == 0) { + return; + } + List collect = list.stream().filter(Objects::nonNull).map(TbFollowUp::getLYFS).collect(Collectors.toList()); + List dataExternalImports = externalImportMapper.selectExternalByPhone(collect); + List externalImports = new ArrayList<>(); + for (TbFollowUp tbFollowUp : list) { + //去除与数据库重复项 + ExternalImport identicalPhone = dataExternalImports.stream().filter(item -> tbFollowUp.getLYFS().equals(item.getPhone())).findFirst().orElse(new ExternalImport()); + if (StringUtils.isNotBlank(identicalPhone.getPhone())) { + continue; + } + ExternalImport externalImport = new ExternalImport(); + externalImport.setPatientName(tbFollowUp.getXM()); + externalImport.setPhone(tbFollowUp.getLXDH()); + externalImport.setAge(tbFollowUp.getNL()); + externalImport.setCardNo(tbFollowUp.getZJHM()); + externalImport.setSex(tbFollowUp.getXB()); + externalImport.setDepartmentName(tbFollowUp.getJZKSMC()); + externalImport.setVisitMethod(tbFollowUp.getMZZYBZ()); + if (Objects.nonNull(tbFollowUp.getJZSJ())) { + externalImport.setVisitDate(LocalDateTime.parse(tbFollowUp.getJZSJ(), formatter)); + } + if (Objects.nonNull(tbFollowUp.getRYSJ())) { + externalImport.setAdmissionTime(LocalDateTime.parse(tbFollowUp.getRYSJ(), formatter)); + } + if (Objects.nonNull(tbFollowUp.getCYSJ())) { + externalImport.setDischargeTime(LocalDateTime.parse(tbFollowUp.getCYSJ(), formatter)); + } + if (Objects.nonNull(tbFollowUp.getTSXJ())) { + externalImport.setPushTime(LocalDateTime.parse(tbFollowUp.getTSXJ(), formatter)); + } + if (Objects.nonNull(tbFollowUp.getSFSJ())) { + externalImport.setPlanFollowUp(LocalDateTime.parse(tbFollowUp.getSFSJ(), formatter)); + } + externalImport.setFollowUpTemplate(Long.valueOf(tbFollowUp.getMBID())); + externalImport.setMainDiagnosis(tbFollowUp.getJZZDSM()); + externalImport.setDataSource("医共体数据"); + externalImport.setHealthState(tbFollowUp.getZLJG()); + externalImport.setDischargeMethod(tbFollowUp.getLYFS()); + externalImport.setDataGetTime(LocalDateTime.now()); + externalImports.add(externalImport); + } + externalImportMapper.insertExternalImportList(externalImports); + } +} \ No newline at end of file