|
|
|
package com.docus.bgts.service;
|
|
|
|
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
import com.docus.bgts.entity.*;
|
|
|
|
import com.docus.bgts.facade.IAfCollectTaskService;
|
|
|
|
import com.docus.bgts.mapper.dbmysql.AfCollectTaskMapper;
|
|
|
|
import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectMapper;
|
|
|
|
import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectSubMapper;
|
|
|
|
import com.docus.bgts.mapper.dboracle.TestMapper;
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* <p>
|
|
|
|
* 病案采集任务 服务实现类
|
|
|
|
* </p>
|
|
|
|
*
|
|
|
|
* @author 曾文和
|
|
|
|
* @since 2021-05-07
|
|
|
|
*/
|
|
|
|
@Service
|
|
|
|
public class AfCollectTaskServiceImpl extends ServiceImpl<AfCollectTaskMapper, AfCollectTask> implements IAfCollectTaskService {
|
|
|
|
|
|
|
|
public static int MAX_SIZE_PER_TIME = 10;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
TestMapper testMapper;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
AfCollectTaskMapper afCollectTaskMapper;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
AfInterfaceCollectMapper afInterfaceCollectMapper;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
AfInterfaceCollectSubMapper afInterfaceCollectSubMapper;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getpatientIdByEmpId(String empId) {
|
|
|
|
String patientId = afCollectTaskMapper.getpatientIdByEmpId(empId);
|
|
|
|
return patientId;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void insert(ReportDownDto reportDownDto) {
|
|
|
|
AfCollectTask afCollectTask;
|
|
|
|
String patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
|
|
|
|
if (StringUtils.isBlank(patientId)) {
|
|
|
|
throw new RuntimeException("操作的病案信息不存在");
|
|
|
|
}
|
|
|
|
Date date = new Date();
|
|
|
|
Integer save = null;
|
|
|
|
List<ReportDownScanFileDto> scanfiles = reportDownDto.getScanfiles();
|
|
|
|
for (ReportDownScanFileDto scanfile : scanfiles) {
|
|
|
|
// 判断任务是否已存在
|
|
|
|
afCollectTask = afCollectTaskMapper.selectOne(new QueryWrapper<AfCollectTask>().eq("C1", scanfile.getSerialnum()).eq("sysflag", reportDownDto.getCollectorid()));
|
|
|
|
if (afCollectTask == null) {
|
|
|
|
//不存在 新增
|
|
|
|
afCollectTask = new AfCollectTask();
|
|
|
|
afCollectTask.setPatientId(patientId);
|
|
|
|
afCollectTask.setSysflag(reportDownDto.getCollectorid());
|
|
|
|
afCollectTask.setState("0");
|
|
|
|
afCollectTask.setSyncTime(date);
|
|
|
|
afCollectTask.setC1(scanfile.getSerialnum());
|
|
|
|
afCollectTask.setC2(scanfile.getFiletitle());
|
|
|
|
afCollectTask.setC3(reportDownDto.getPatient().getJzh());
|
|
|
|
save = afCollectTaskMapper.insert(afCollectTask);
|
|
|
|
if (save <= 0) {
|
|
|
|
throw new RuntimeException("插入病案任务表数据出错");
|
|
|
|
}else {
|
|
|
|
log.warn("插入病案成功");
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
//存在就修改
|
|
|
|
afCollectTask.setPatientId(patientId);
|
|
|
|
afCollectTask.setSysflag(reportDownDto.getCollectorid());
|
|
|
|
afCollectTask.setState("0");
|
|
|
|
afCollectTask.setSyncTime(date);
|
|
|
|
afCollectTask.setC1(scanfile.getSerialnum());
|
|
|
|
afCollectTask.setC2(scanfile.getFiletitle());
|
|
|
|
save = afCollectTaskMapper.updateById(afCollectTask);
|
|
|
|
log.warn("修改病案成功");
|
|
|
|
}
|
|
|
|
scanfile.setTaskid(afCollectTask.getId());
|
|
|
|
}
|
|
|
|
reportDownDto.setScanfiles(scanfiles);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void updateInterfaceCollect(String collectSubId, int state) {
|
|
|
|
log.warn("开始记录采集");
|
|
|
|
AfInterfaceCollectSub afInterfaceCollectSub = afInterfaceCollectSubMapper.selectById(collectSubId);
|
|
|
|
log.warn("操作记录:"+afInterfaceCollectSub);
|
|
|
|
if (afInterfaceCollectSub == null) {
|
|
|
|
throw new RuntimeException("afInterfaceCollectSub表数据为空");
|
|
|
|
}
|
|
|
|
int i;
|
|
|
|
afInterfaceCollectSub.setState(state);
|
|
|
|
i = afInterfaceCollectSubMapper.updateById(afInterfaceCollectSub);
|
|
|
|
if (i <= 0) {
|
|
|
|
throw new RuntimeException("记录任务数时出错");
|
|
|
|
}
|
|
|
|
if (state == 1) {
|
|
|
|
AfInterfaceCollect afInterfaceCollect = afInterfaceCollectMapper.selectById(afInterfaceCollectSub.getAfInterfaceCollectId());
|
|
|
|
afInterfaceCollect.setCompleteCount(afInterfaceCollect.getCompleteCount() + 1);
|
|
|
|
i = afInterfaceCollectMapper.updateById(afInterfaceCollect);
|
|
|
|
if (i <= 0) {
|
|
|
|
throw new RuntimeException("记录任务数时出错");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<String> getjzhByDate(String startDate, String endDate) {
|
|
|
|
List<String> patientIds = afCollectTaskMapper.getjzhByDate(startDate, endDate);
|
|
|
|
return patientIds;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<String> getC1ByPatientId(List<String> patientIds, String collectorId) {
|
|
|
|
List<List<String>> batchPatientIds = Lists.partition(patientIds, MAX_SIZE_PER_TIME);
|
|
|
|
List<String> c1s = new ArrayList<>();
|
|
|
|
for (List<String> batchPatientId : batchPatientIds) {
|
|
|
|
List<String> c1 = afCollectTaskMapper.getC1ByPatientId(batchPatientId, collectorId);
|
|
|
|
if (c1 != null && c1.size() != 0 ) {
|
|
|
|
for (String s : c1) {
|
|
|
|
c1s.add(s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return c1s;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<String> getPatientIdByC1(List<String> C1s) {
|
|
|
|
List<List<String>> batchPatientIds = Lists.partition(C1s, MAX_SIZE_PER_TIME);
|
|
|
|
List<String> patientIds = new ArrayList<>();
|
|
|
|
for (List<String> batchC1s : batchPatientIds) {
|
|
|
|
List<String> patientId = afCollectTaskMapper.getPatientIdByC1(batchC1s);
|
|
|
|
if (patientId != null && patientId.size() != 0 ) {
|
|
|
|
for (String s : patientId) {
|
|
|
|
patientIds.add(s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return patientIds;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<String> getJzhByPatientId(List<String> patientIds) {
|
|
|
|
List<String> jzhs = new ArrayList<>();
|
|
|
|
List<List<String>> batchPatientIds = Lists.partition(patientIds, MAX_SIZE_PER_TIME);
|
|
|
|
for (List<String> batchPatientId : batchPatientIds) {
|
|
|
|
List<String> jzh = afCollectTaskMapper.getJzhByPatientId(batchPatientId);
|
|
|
|
if (jzh != null && jzh.size() !=0 ) {
|
|
|
|
for (String s : jzh) {
|
|
|
|
jzhs.add(s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return jzhs;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|