|
|
|
@ -1,15 +1,23 @@
|
|
|
|
|
package com.docus.demo.service;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.sqlserver1.Tdiagnose;
|
|
|
|
|
import com.docus.demo.entity.sqlserver1.Toperation;
|
|
|
|
|
import com.docus.demo.entity.sqlserver1.Tpatientvisit;
|
|
|
|
|
import com.docus.demo.facade.ISyncBasicDataService;
|
|
|
|
|
import com.docus.demo.mapper.mysql.BasicMapper;
|
|
|
|
|
import com.docus.demo.mapper.sqlserver1.PaintVisitMapper;
|
|
|
|
|
import com.docus.demo.utils.SnowflakeIdWorker;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
@ -20,19 +28,98 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
|
|
|
|
|
private PaintVisitMapper paintVisitMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public CommonResult<?> syncBasicData(SyncBasicDataDto syncBasicDataDto) {
|
|
|
|
|
//根据出院时间查询省厅数据
|
|
|
|
|
List<Tpatientvisit> tpatientvisitList = paintVisitMapper.getTpatientVisitList(syncBasicDataDto);
|
|
|
|
|
//诊断数据
|
|
|
|
|
//页码
|
|
|
|
|
int current;
|
|
|
|
|
//每页1000条数据
|
|
|
|
|
int limit = syncBasicDataDto.getLimit();
|
|
|
|
|
List<Tpatientvisit> tpatientvisitList;
|
|
|
|
|
for (current = 1; ; current++) {
|
|
|
|
|
//根据出院时间查询省厅数据
|
|
|
|
|
tpatientvisitList = paintVisitMapper.getTpatientVisitList((current-1)*limit, limit,syncBasicDataDto);
|
|
|
|
|
if (null == tpatientvisitList || tpatientvisitList.size() == 0) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
List<String> fprnList = tpatientvisitList.stream().map(Tpatientvisit::getFprn).collect(Collectors.toList());
|
|
|
|
|
//诊断数据
|
|
|
|
|
List<Tdiagnose> tdiagnoses = paintVisitMapper.getTdiagnose(fprnList);
|
|
|
|
|
List<Toperation> toperations = paintVisitMapper.getToperation(fprnList);
|
|
|
|
|
//数据map转换
|
|
|
|
|
List<Tbasic> oldBasicList = basicMapper.getOldBasicList(fprnList,syncBasicDataDto);
|
|
|
|
|
List<Tbasic> tbasicList = this.getTbasicList(oldBasicList,tpatientvisitList,tdiagnoses,toperations);
|
|
|
|
|
//数据入库
|
|
|
|
|
basicMapper.insertOrUpdateByid(tbasicList);
|
|
|
|
|
}
|
|
|
|
|
return CommonResult.success("同步成功");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<Tbasic> getTbasicList(List<Tbasic> oldBasicList,List<Tpatientvisit> tpatientvisitList, List<Tdiagnose> tdiagnoses, List<Toperation> toperations) {
|
|
|
|
|
|
|
|
|
|
//数据map转换
|
|
|
|
|
return tpatientvisitList.stream()
|
|
|
|
|
.filter(f->{
|
|
|
|
|
Tbasic oldBasic = oldBasicList.stream()
|
|
|
|
|
.filter(old->ObjectUtil.equal(f.getFprn(),old.getInpatientNo())
|
|
|
|
|
&&ObjectUtil.equal(f.getFtimes(),old.getAdmissTimes())
|
|
|
|
|
)
|
|
|
|
|
.findFirst()
|
|
|
|
|
.orElse(null);
|
|
|
|
|
return oldBasic ==null;
|
|
|
|
|
})
|
|
|
|
|
.map(m->{
|
|
|
|
|
String fprn = m.getFprn();
|
|
|
|
|
Integer ftimes = m.getFtimes();
|
|
|
|
|
|
|
|
|
|
Tdiagnose tdiagnose = tdiagnoses.stream()
|
|
|
|
|
.filter(f-> ObjectUtil.equal(f.getFprn(),fprn)
|
|
|
|
|
&&ObjectUtil.equal(f.getFtimes(),ftimes)
|
|
|
|
|
&&ObjectUtil.equal(f.getFzdlx(),"1")
|
|
|
|
|
)
|
|
|
|
|
.findFirst()
|
|
|
|
|
.orElse(null);
|
|
|
|
|
|
|
|
|
|
Toperation toperation = toperations.stream()
|
|
|
|
|
.filter(f-> ObjectUtil.equal(f.getFprn(),fprn)
|
|
|
|
|
&&ObjectUtil.equal(f.getFtimes(),ftimes)
|
|
|
|
|
&&ObjectUtil.equal(f.getFpx(),1L)
|
|
|
|
|
)
|
|
|
|
|
.findFirst()
|
|
|
|
|
.orElse(null);
|
|
|
|
|
|
|
|
|
|
Tbasic tbasic = new Tbasic();
|
|
|
|
|
tbasic.setPatientId(String.valueOf(SnowflakeIdWorker.idWorker.nextId()));
|
|
|
|
|
tbasic.setAdmissTimes(m.getFtimes());
|
|
|
|
|
tbasic.setInpatientNo(m.getFprn());
|
|
|
|
|
tbasic.setName(m.getFname());
|
|
|
|
|
tbasic.setSex(m.getFsex());
|
|
|
|
|
tbasic.setAge(0);
|
|
|
|
|
|
|
|
|
|
//数据入库
|
|
|
|
|
tbasic.setIdCard(m.getFidcard());
|
|
|
|
|
tbasic.setTelphone("");
|
|
|
|
|
tbasic.setAdmissDate(m.getFrydate());
|
|
|
|
|
tbasic.setAdmissDept(m.getFrytykh());
|
|
|
|
|
tbasic.setAdmissDeptName(m.getFrydept());
|
|
|
|
|
tbasic.setDisDate(m.getFcydate());
|
|
|
|
|
tbasic.setDisDept(m.getFcytykh());
|
|
|
|
|
tbasic.setDisDeptName(m.getFcydept());
|
|
|
|
|
tbasic.setAdmissDays(m.getFdays());
|
|
|
|
|
tbasic.setAttending(m.getFzzdoctbh());
|
|
|
|
|
tbasic.setAttendingName(m.getFzzdoct());
|
|
|
|
|
if (tdiagnose!=null){
|
|
|
|
|
tbasic.setMainDiagCode(tdiagnose.getFicdm());
|
|
|
|
|
tbasic.setMainDiagName(tdiagnose.getFjbname());
|
|
|
|
|
}
|
|
|
|
|
if(toperation!=null){
|
|
|
|
|
tbasic.setMainOperateCode(toperation.getFopcode());
|
|
|
|
|
tbasic.setMainOperateName(toperation.getFop());
|
|
|
|
|
}
|
|
|
|
|
tbasic.setIsDead(m.getFbody());
|
|
|
|
|
tbasic.setCreateTime(new Date());
|
|
|
|
|
tbasic.setSexName(m.getFsex());
|
|
|
|
|
tbasic.setArchiveFileStorageType(2);
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
return tbasic;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|