package com.docus.bgts.service;
import cn.hutool.core.util.StrUtil;
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.docus.bgts.rpc.dto.ReportDownDto;
import com.docus.bgts.rpc.dto.ReportDownScanFileDto;
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.util.CollectionUtils;
import java.util.*;
/**
*
* 病案采集任务 服务实现类
*
*
* @author 曾文和
* @since 2021-05-07
*/
@Service
public class AfCollectTaskServiceImpl extends ServiceImpl 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) {
synchronized (this) {
try {
AfCollectTask afCollectTask;
String patientid = reportDownDto.getPatient().getPatientid();
String patientId = StrUtil.isEmpty(patientid) ? getpatientIdByEmpId(reportDownDto.getPatient().getJzh()) : patientid;
if (StringUtils.isBlank(patientId)) {
throw new RuntimeException("操作的病案信息不存在");
}
Date date = new Date();
Integer save = null;
List scanfiles = reportDownDto.getScanfiles();
for (ReportDownScanFileDto scanfile : scanfiles) {
// 判断任务是否已存在
afCollectTask = afCollectTaskMapper.selectOne(new QueryWrapper().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);
} catch (Exception e) {
log.error(reportDownDto.getPatient().getJzh() + "插入任务表出错! " + e.getMessage());
}
}
}
@Override
public String getJzhByInpatientNo(String inPatientNo, String visitId) {
return afCollectTaskMapper.getJzhByInpatientNo(inPatientNo,visitId);
}
@Override
public String getJzhByJzh(String jzh) {
return afCollectTaskMapper.getJzhByJzh(jzh);
}
@Override
public void insertServer(ReportDownDto reportDownDto) {
synchronized (this) {
String patientId;
AfCollectTask afCollectTask;
if (StringUtils.isBlank(reportDownDto.getPatient().getJzh())) {
patientId = getPatientIdByInpatientNo(reportDownDto.getPatient().getInpatientno(), reportDownDto.getPatient().getAdmisstimes());
} else {
patientId = getpatientIdByEmpId(reportDownDto.getPatient().getJzh());
}
if (StringUtils.isBlank(patientId)) {
throw new RuntimeException("操作的病案信息不存在");
}
Date date = new Date();
Integer save = null;
List scanfiles = reportDownDto.getScanfiles();
for (ReportDownScanFileDto scanfile : scanfiles) {
// 判断任务是否已存在
afCollectTask = afCollectTaskMapper.selectOne(new QueryWrapper().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