梅州同步采集

docus-active-query-service_1.3
lzy 3 years ago
parent 9ea5dcccfe
commit 949e57a57b

@ -46,5 +46,8 @@
//oracle
"tableName":"V_DOCUMENT_PDF",
//oracle
"collectTimeName":"ARCHIVE_DATE_TIME"
"collectTimeName":"ARCHIVE_DATE_TIME",
// ----------
"pageSize":"1000"
}

@ -4,16 +4,13 @@ package com.docus.bgts.controller;
import com.docus.bgts.entity.CommonResult;
import com.docus.bgts.facade.IAfCollectTaskService;
import com.docus.bgts.facade.IBgtsService;
import com.docus.bgts.utils.FileUtils;
import com.docus.bgts.utils.XmlUtils;
import com.docus.bgts.facade.IMzSyncService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@ -27,7 +24,10 @@ import java.util.List;
@RestController
public class BgtsController {
Logger logger= LogManager.getLogger(BgtsController.class);
private final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
IMzSyncService mzSyncService;
@Autowired
IBgtsService bgtsService;
@ -42,6 +42,11 @@ public class BgtsController {
return bgtsService.test(collectSubId)+"---"+empId;
}
@GetMapping("/syncIntegrality")
public void syncIntegrality(){
mzSyncService.syncIntegrality();
}
@ApiOperation("采集接口")
@ApiImplicitParams({
@ -50,7 +55,7 @@ public class BgtsController {
})
@GetMapping("/collect")
public CommonResult<String> collect(@RequestParam("collectSubId") String collectSubId,
@RequestParam("empId") String empId) {
@RequestParam("empId") String empId) {
try {
logger.info("采集接口接收到参数:\nempId--"+empId+"\ncollectSubId--"+collectSubId);
bgtsService.collect(empId);

@ -0,0 +1,16 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel("梅州完整性校验同步类")
public class MzSync {
@ApiModelProperty("记账号")
private String jzh;
@ApiModelProperty("文件详情列表")
private List<MzSyncDetails> mzSyncDetails;
}

@ -0,0 +1,14 @@
package com.docus.bgts.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("文件详情")
public class MzSyncDetails {
@ApiModelProperty("采集流水号")
private String serialnum;
@ApiModelProperty("文件标题")
private String fileTitle;
}

@ -0,0 +1,5 @@
package com.docus.bgts.facade;
public interface IMzSyncService {
void syncIntegrality();
}

@ -2,12 +2,46 @@ package com.docus.bgts.mapper.dbmysql;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.bgts.entity.AfCollectAdd;
import com.docus.bgts.entity.MzSync;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface AfCollectAddMapper extends BaseMapper<AfCollectAdd> {
/**
*
*/
Date getTimeByAdd();
/**
* jzh
* @param pageNumber
* @param pageSize
* @return
*/
List<String> listJzh(@Param("pageNumber") int pageNumber,@Param("pageSize") Integer pageSize);
/**
*
* @param mzSyncs
* @return
*/
List<Map> integrality(@Param("mzSyncs") List<MzSync> mzSyncs);
/**
* sql
* @param sql
*/
@Select("${sqlStr}")
void dynamicSql(@Param("sqlStr")String sql);
/**
* tbasic
* @param result
* @param jzh
*/
void updateTBasic(@Param("result") String result,@Param("jzh") String jzh);
}

@ -0,0 +1,14 @@
package com.docus.bgts.mapper.dboracle;
import com.docus.bgts.entity.MzSync;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface MzSyncMapper {
List<MzSync> listMzSync(@Param("jzhs") List<String> jzhs,
@Param("front") int front ,
@Param("later") int later);
}

@ -0,0 +1,89 @@
package com.docus.bgts.service;
import com.docus.bgts.entity.MzSync;
import com.docus.bgts.facade.IMzSyncService;
import com.docus.bgts.mapper.dbmysql.AfCollectAddMapper;
import com.docus.bgts.mapper.dboracle.MzSyncMapper;
import com.docus.bgts.utils.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
*
*/
@Service
public class MzSyncService implements IMzSyncService {
@Autowired
AfCollectAddMapper afCollectAddMapper;
@Autowired
MzSyncMapper mzSyncMapper;
private final Logger log = LoggerFactory.getLogger(getClass());
/**
*
*/
@Override
public void syncIntegrality() {
log.info("完整性同步开始");
long startTime = System.currentTimeMillis();
//获取分页数
Integer pageSize = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("pageSize")));
List<String> jzhs;
int front;
int later;
List<MzSync> mzSyncs;
StringBuilder sql;
for (int i = 0; ; i++) {
front = i * pageSize;
later = front + pageSize;
jzhs = afCollectAddMapper.listJzh(front, later);
if (null == jzhs || jzhs.size() == 0) {
break;
} else {
mzSyncs = mzSyncMapper.listMzSync(jzhs, front, later);
System.out.println(Arrays.asList(mzSyncs));
if (null != mzSyncs && mzSyncs.size() != 0) {
List<Map> maps = afCollectAddMapper.integrality(mzSyncs);
System.out.println(maps);
sql=new StringBuilder();
for (Map map : maps) {
sql.append("update docus_medicalrecord.t_basic set integrity_desc=");
sql.append("'");
sql.append(map.get("file_title"));
sql.append("'");
sql.append(" where jzh=");
sql.append("'");
sql.append(map.get("jzh"));
sql.append("'");
sql.append(";");
}
System.out.println(sql);
afCollectAddMapper.dynamicSql(sql.toString());
}
//创建并行流
// mzSyncs.parallelStream().forEach(mzSync -> {
// String result = afCollectAddMapper.integrality(mzSync);
// System.out.println(result);
//
// afCollectAddMapper.updateTBasic(result, mzSync.getJzh());
// });
}
if (mzSyncs.size() != 0) {
log.info("本次成功同步数:" + mzSyncs.size());
}
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
log.info("完整性同步结束");
}
}

@ -1,5 +1,5 @@
server:
port: 9306
port: 9308
# http
mybatis-plus:
@ -24,7 +24,7 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver
username: docus
password: docus702
url: jdbc:mysql://db.docus.cn:3306/docus_archivefile?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
url: jdbc:mysql://db.docus.cn:3306/docus_archivefile?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&allowMultiQueries=true
oracle-docus:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@192.168.117.100:1521:helowin

@ -6,4 +6,44 @@
<select id="getTimeByAdd" resultType="date">
select begin_stage_date from af_collect_add where classify=5 limit 0,1
</select>
<select id="listJzh" resultType="string">
select jzh
from docus_medicalrecord.t_basic
where jzh is not null
order by create_time desc
limit ${pageNumber},${pageSize}
</select>
<select id="integrality" resultType="map">
<foreach collection="mzSyncs" item="mzSync" separator=" union all ">
SELECT
ifnull( GROUP_CONCAT( concat( file_title, '缺失' ) ), '完整' ) AS file_title,${mzSync.jzh} as jzh
FROM
<foreach collection="mzSync.mzSyncDetails" item="mzSyncDetail" separator=" UNION ALL SELECT" open="( SELECT" close=") as t">
'${mzSyncDetail.serialnum}' as serialnum,
'${mzSyncDetail.fileTitle}' AS file_title
</foreach>
WHERE
serialnum NOT IN (
SELECT
a.serialnum
FROM
af_downfile a
JOIN docus_medicalrecord.t_basic b ON a.patient_id = b.patient_id
WHERE
b.jzh = #{mzSync.jzh}
AND a.serialnum IN
<foreach collection="mzSync.mzSyncDetails" close=")" open="(" separator="," item="mzSyncDetail">
'${mzSyncDetail.serialnum}'
</foreach>
)
</foreach>
</select>
<update id="updateTBasic">
update docus_medicalrecord.t_basic
set integrity_desc=#{result}
where jzh=#{jzh}
</update>
</mapper>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.bgts.mapper.dboracle.MzSyncMapper">
<select id="listMzSync" resultMap="mzSyncAnddeI">
SELECT *
FROM
(SELECT "NAVICAT_TABLE".*, ROWNUM "NAVICAT_ROWNUM"
FROM
(SELECT
a.DOCUMENT_TITLE as file_title,
a.UNIQUE_ID as serialnum,
a.VISITING_SERIAL_NUMBER as jzh,
ROWID "NAVICAT_ROWID"
FROM "DOCUS"."CIS_EMR_DOCUMENT" a
where VISITING_SERIAL_NUMBER in
<foreach collection="jzhs" item="jzh" close=")" open="(" separator=",">
#{jzh}
</foreach>
) "NAVICAT_TABLE"
)
</select>
<resultMap id="mzSyncAnddeI" type="com.docus.bgts.entity.MzSync">
<result property="jzh" column="jzh"></result>
<collection property="mzSyncDetails" ofType="com.docus.bgts.entity.MzSyncDetails">
<result property="serialnum" column="serialnum"></result>
<result property="fileTitle" column="file_title"></result>
</collection>
</resultMap>
</mapper>
Loading…
Cancel
Save