liusheng
2023-06-15 77d7257c02fc811a53b8d9207e4239f69c8a600c
smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
@@ -3,27 +3,26 @@
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.BaseTag;
import com.smartor.domain.PatArchivetag;
import com.smartor.domain.PatUpInfoVO;
import com.smartor.domain.*;
import com.smartor.mapper.BaseTagMapper;
import com.smartor.mapper.PatArchivetagMapper;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.formula.functions.Now;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service;
import com.smartor.mapper.PatArchiveMapper;
import com.smartor.domain.PatArchive;
import com.smartor.service.IPatArchiveService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -116,7 +115,7 @@
    @Override
    @Transactional
    public PatUpInfoVO importFilehandle(String username, MultipartFile file) {
    public PatUpInfoVO importFilehandle(SysUser user, String tags, MultipartFile file) {
        PatUpInfoVO patUpInfoVO = new PatUpInfoVO();
        Integer successNum = 0;
        Integer failNum = 0;
@@ -213,10 +212,19 @@
                }
                //患都标签是否为空
                if (ObjectUtils.isEmpty(row.getCell(7))) {
                    addRemark("患者标签为空", patArchive);
                if (ObjectUtils.isEmpty(row.getCell(7)) || StringUtils.isEmpty(row.getCell(7).toString())) {
                    if (StringUtils.isEmpty(tags)) {
                        addRemark("患者标签为空", patArchive);
                    } else {
                        patArchive.setTag(tags);
                    }
                } else {
                    patArchive.setTag(row.getCell(7).toString());
                    if (StringUtils.isNotEmpty(tags)) {
                        patArchive.setTag(row.getCell(7).toString() + "," + tags);
                    } else {
                        patArchive.setTag(row.getCell(7).toString());
                    }
                }
                //判断备注是否为空
@@ -231,17 +239,32 @@
                patArchiveMapper.insertPatArchive(patArchive);
                //根据标签名查询出标签信息
                String s = row.getCell(7).toString();
                String s = patArchive.getTag();
                String[] split = s.split(",");
                for (String tagName : split) {
                    BaseTag baseTag = new BaseTag();
                    baseTag.setTagname(tagName);
                    List<BaseTag> baseTags = baseTagMapper.selectBaseTagList(baseTag);
                    BaseTag baseTag1 = baseTags.get(0);
                    //如果该标签为空,现标签管理没有出现过的新标签时,自动将标签添加到"标签管理"未分类“中。编辑人为导入账号
                    if (CollectionUtils.isEmpty(baseTags)) {
                        baseTag = new BaseTag();
                        baseTag.setTagcategoryid(1L);
                        baseTag.setTagname(tagName);
                        baseTag.setOrgid(user.getDeptId().toString());
                        baseTag.setDelFlag("0");
                        baseTag.setCreateBy(user.getUserName());
                        baseTag.setCreateTime(new Date());
                        baseTag.setCreateBy(user.getUserName());
                        baseTag.setCreateTime(new Date());
                        baseTagMapper.insertBaseTag(baseTag);
                    } else {
                        baseTag = baseTags.get(0);
                    }
                    // 新增患者档案标签
                    PatArchivetag patArchivetag = DtoConversionUtils.sourceToTarget(baseTag1, PatArchivetag.class);
                    patArchivetag.setUpdateBy(username);
                    PatArchivetag patArchivetag = DtoConversionUtils.sourceToTarget(baseTag, PatArchivetag.class);
                    patArchivetag.setUpdateBy(user.getUserName());
                    patArchivetag.setCreateTime(new Date());
                    patArchivetag.setPatid(patArchive.getPatid());
                    patArchivetagMapper.insertPatArchivetag(patArchivetag);
@@ -286,6 +309,81 @@
        return "导出成功";
    }
    @Override
    public List<PatArchive> patInfoByContion(PatArchiveReq patArchive) {
        List<PatArchive> patArchives = new ArrayList<>();
        //根据条件获取患者信息
        List<PatArchive> patArchiveList = patArchiveMapper.patInfoByContion(patArchive);
        //根据患者ID进行分组
        Map<Long, List<PatArchive>> listMap = patArchiveList.stream().collect(Collectors.groupingBy(PatArchive::getPatid));
        //对数据进行封装
        for (List<PatArchive> list : listMap.values()) {
            PatArchive patArchive1 = new PatArchive();
            List<String> stringList = new ArrayList<>();
            for (int i = 0; i < list.size(); i++) {
                if (i == 0) {
                    patArchive1 = DtoConversionUtils.sourceToTarget(list.get(0), PatArchive.class);
                    //将标签置空,不空也没有问题
                    patArchive1.setTag("");
                }
                //将查出的tag,放到patArchive1里的TagList中
                stringList.add(list.get(i).getTag());
            }
            patArchive1.setTagList(stringList);
            patArchives.add(patArchive1);
        }
        return patArchives;
    }
    @Override
    public List<PatArchivetagAndPatientInfo> patTagByContion(List<Long> tagids) {
        List<PatArchivetagAndPatientInfo> patArchivetagAndPatientInfos = new ArrayList<>();
        if (tagids.size() > 0) {
            for (int i = 0; i < tagids.size(); i++) {
                PatArchivetag patArchivetag = new PatArchivetag();
                patArchivetag.setTagid(tagids.get(i));
                //获取患者patid
                List<PatArchivetag> patArchivetags1 = patArchivetagMapper.selectPatArchivetagAndBaseTagList(patArchivetag);
                for (int j = 0; j < patArchivetags1.size(); j++) {
                    PatArchivetagAndPatientInfo patArchivetagAndPatientInfo = DtoConversionUtils.sourceToTarget(patArchivetags1.get(j), PatArchivetagAndPatientInfo.class);
                    PatArchive patArchive = new PatArchive();
                    patArchive.setPatid(patArchivetagAndPatientInfo.getPatid());
                    List<PatArchive> patArchiveList = patArchiveMapper.selectPatArchiveList(patArchive);
                    patArchivetagAndPatientInfo.setPatNum(patArchiveList.size());
                    // patArchivetagAndPatientInfo.setPatArchives(patArchiveList);
                    patArchivetagAndPatientInfos.add(patArchivetagAndPatientInfo);
                }
            }
        } else {
            PatArchivetag patArchivetag = new PatArchivetag();
            //获取患者patid
            List<PatArchivetag> patArchivetags1 = patArchivetagMapper.selectPatArchivetagAndBaseTagList(patArchivetag);
            for (int j = 0; j < patArchivetags1.size(); j++) {
                PatArchivetagAndPatientInfo patArchivetagAndPatientInfo = DtoConversionUtils.sourceToTarget(patArchivetags1.get(j), PatArchivetagAndPatientInfo.class);
                PatArchive patArchive = new PatArchive();
                patArchive.setPatid(patArchivetagAndPatientInfo.getPatid());
                List<PatArchive> patArchiveList = patArchiveMapper.selectPatArchiveList(patArchive);
                //  patArchivetagAndPatientInfo.setPatArchives(patArchiveList);
                patArchivetagAndPatientInfo.setPatNum(patArchiveList.size());
                patArchivetagAndPatientInfos.add(patArchivetagAndPatientInfo);
            }
        }
        return patArchivetagAndPatientInfos;
    }
    @Override
    public List<PatArchivetagAndPatientInfo> patInfoByTag(List<Long> tagids) {
        return null;
    }
    private void getdata(Row row, PatArchive patArchive, Boolean head) {
        if (head) {
            row.createCell(0).setCellValue("姓名");