|
|
|
@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import com.docus.demo.dto.SyncBasicDataDto;
|
|
|
|
|
import com.docus.demo.entity.CommonResult;
|
|
|
|
|
import com.docus.demo.entity.Tbasic;
|
|
|
|
|
import com.docus.demo.entity.TbasicSub;
|
|
|
|
|
import com.docus.demo.entity.sqlserver.CardInfo;
|
|
|
|
|
import com.docus.demo.entity.sqlserver1.Tdiagnose;
|
|
|
|
|
import com.docus.demo.entity.sqlserver1.Toperation;
|
|
|
|
@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
@ -37,21 +39,28 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
private TcardMapper tcardMapper;
|
|
|
|
|
|
|
|
|
|
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
private final ExecutorService executor = Executors.newFixedThreadPool(7);
|
|
|
|
|
// private final ExecutorService executor = Executors.newFixedThreadPool(7);
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public CommonResult<?> syncBasicData(SyncBasicDataDto syncBasicDataDto) {
|
|
|
|
|
//页码
|
|
|
|
|
int current;
|
|
|
|
|
|
|
|
|
|
LocalDate startDate = LocalDate.parse(syncBasicDataDto.getStartDate());
|
|
|
|
|
LocalDate endDate = LocalDate.parse(syncBasicDataDto.getEndDate());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//每页1000条数据
|
|
|
|
|
int limit = syncBasicDataDto.getLimit();
|
|
|
|
|
|
|
|
|
|
List<Tpatientvisit> tpatientvisitList;
|
|
|
|
|
for (current = 1; ; current++) {
|
|
|
|
|
for (int current = 1; ; current++) {
|
|
|
|
|
syncBasicDataDto.setStartDate(startDate+" 00:00:00");
|
|
|
|
|
syncBasicDataDto.setEndDate(startDate.plusDays(1)+" 23:59:59");
|
|
|
|
|
|
|
|
|
|
log.info(syncBasicDataDto.getStartDate()+" --- " +syncBasicDataDto.getEndDate());
|
|
|
|
|
//根据出院时间查询省厅数据
|
|
|
|
|
tpatientvisitList = paintVisitMapper.getTpatientVisitList((current - 1) * limit, current*limit, syncBasicDataDto);
|
|
|
|
|
if (null == tpatientvisitList || tpatientvisitList.size() == 0) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
tpatientvisitList = paintVisitMapper.getTpatientVisitList(0, 0, syncBasicDataDto);
|
|
|
|
|
log.info("开始同步"+tpatientvisitList.size());
|
|
|
|
|
// tpatientvisitList = paintVisitMapper.getTpatientVisitList((current - 1) * limit, current*limit, syncBasicDataDto);
|
|
|
|
|
|
|
|
|
|
List<String> fprnList = tpatientvisitList.stream().map(Tpatientvisit::getFprn).collect(Collectors.toList());
|
|
|
|
|
//诊断数据
|
|
|
|
|
List<Tdiagnose> tdiagnoses = paintVisitMapper.getTdiagnose(fprnList);
|
|
|
|
@ -59,12 +68,31 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
//数据map转换
|
|
|
|
|
List<Tbasic> oldBasicList = basicMapper.getOldBasicList(fprnList, syncBasicDataDto);
|
|
|
|
|
List<Tbasic> tbasicList = this.getTbasicList(oldBasicList, tpatientvisitList, tdiagnoses, toperations);
|
|
|
|
|
|
|
|
|
|
List<TbasicSub> tbasicSubList = this.getTbasicSubList(tbasicList);
|
|
|
|
|
|
|
|
|
|
//数据入库
|
|
|
|
|
basicMapper.insertOrUpdateByid(tbasicList);
|
|
|
|
|
basicMapper.insertOrUpdateTbasicSub(tbasicSubList);
|
|
|
|
|
log.info("数据库入库"+tbasicList.size() +"子表"+tbasicSubList.size());
|
|
|
|
|
|
|
|
|
|
if (startDate.compareTo(endDate)>0) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
startDate = startDate.plusDays(10);
|
|
|
|
|
}
|
|
|
|
|
return CommonResult.success("同步成功");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<TbasicSub> getTbasicSubList(List<Tbasic> tbasicList) {
|
|
|
|
|
return tbasicList.stream().map(m->{
|
|
|
|
|
TbasicSub tbasicSub = new TbasicSub();
|
|
|
|
|
tbasicSub.setBirthday(m.getBirthday());
|
|
|
|
|
tbasicSub.setPatientId(m.getPatientId());
|
|
|
|
|
return tbasicSub;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<Tbasic> getTbasicList(List<Tbasic> oldBasicList, List<Tpatientvisit> tpatientvisitList, List<Tdiagnose> tdiagnoses, List<Toperation> toperations) {
|
|
|
|
|
|
|
|
|
@ -79,6 +107,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
.findFirst()
|
|
|
|
|
.orElse(null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String fprn = m.getFprn();
|
|
|
|
|
Integer ftimes = m.getFtimes();
|
|
|
|
|
|
|
|
|
@ -107,8 +136,16 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
tbasic.setAdmissTimes(m.getFtimes());
|
|
|
|
|
tbasic.setInpatientNo(m.getFprn());
|
|
|
|
|
tbasic.setName(m.getFname());
|
|
|
|
|
tbasic.setSex(m.getFsex());
|
|
|
|
|
tbasic.setAge(0);
|
|
|
|
|
tbasic.setSex(m.getFsexbh());
|
|
|
|
|
tbasic.setSexName(m.getFsex());
|
|
|
|
|
if (m.getFage().contains("Y")){
|
|
|
|
|
tbasic.setAge(Integer.valueOf(m.getFage().split("Y")[1]));
|
|
|
|
|
}else if (m.getFage().contains("M")){
|
|
|
|
|
tbasic.setAgeMonth(Integer.valueOf(m.getFage().split("M")[1]));
|
|
|
|
|
}else if (m.getFage().contains("D")){
|
|
|
|
|
tbasic.setAgeDay(Integer.valueOf(m.getFage().split("D")[1]));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tbasic.setIdCard(m.getFidcard());
|
|
|
|
|
tbasic.setTelphone("");
|
|
|
|
|
tbasic.setAdmissDate(m.getFrydate());
|
|
|
|
@ -120,6 +157,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
tbasic.setAdmissDays(m.getFdays());
|
|
|
|
|
tbasic.setAttending(m.getFzzdoctbh());
|
|
|
|
|
tbasic.setAttendingName(m.getFzzdoct());
|
|
|
|
|
tbasic.setBirthday(m.getFbirthday());
|
|
|
|
|
if (tdiagnose != null) {
|
|
|
|
|
tbasic.setMainDiagCode(tdiagnose.getFicdm());
|
|
|
|
|
tbasic.setMainDiagName(tdiagnose.getFjbname());
|
|
|
|
@ -128,10 +166,12 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
tbasic.setMainOperateCode(toperation.getFopcode());
|
|
|
|
|
tbasic.setMainOperateName(toperation.getFop());
|
|
|
|
|
}
|
|
|
|
|
tbasic.setIsDead(m.getFbody());
|
|
|
|
|
// tbasic.setIsDead(m.getFbody());
|
|
|
|
|
tbasic.setCreateTime(new Date());
|
|
|
|
|
tbasic.setSexName(m.getFsex());
|
|
|
|
|
tbasic.setArchiveFileStorageType(2);
|
|
|
|
|
tbasic.setScanUploadState(0);
|
|
|
|
|
tbasic.setIsArchive(1);
|
|
|
|
|
|
|
|
|
|
return tbasic;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
@ -141,7 +181,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
@Override
|
|
|
|
|
public CommonResult<?> syncLzBasicData(SyncBasicDataDto syncBasicDataDto) {
|
|
|
|
|
|
|
|
|
|
executor.execute(()->{
|
|
|
|
|
// executor.execute(()->{
|
|
|
|
|
//页码
|
|
|
|
|
int current;
|
|
|
|
|
//每页1000条数据
|
|
|
|
@ -172,7 +212,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
log.info(syncBasicDataDto.getStartDate() + " " + syncBasicDataDto.getEndDate() + "结束同步" );
|
|
|
|
|
});
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return CommonResult.success("同步成功");
|
|
|
|
|