yxh
昨天 8c215c8be0f5076e8c95daf1b2203440ca7dfcad
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java
@@ -1,6 +1,10 @@
package com.ruoyi.project.service.impl;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -9,11 +13,14 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.project.common.CalculateDateUtils;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.vo.TimeVO;
import com.ruoyi.project.domain.vo.countByRecordStateVO;
import com.ruoyi.project.mapper.*;
import com.ruoyi.project.service.*;
import com.ruoyi.system.mapper.SysUserMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -30,6 +37,7 @@
 * @author ruoyi
 * @date 2021-11-13
 */
@Slf4j
@Service
public class ServiceDonatebaseinfoServiceImpl extends ServiceImpl<ServiceDonatebaseinfoMapper, ServiceDonatebaseinfo> implements IServiceDonatebaseinfoService {
@@ -54,8 +62,9 @@
    @Autowired
    private IServiceRelativesconfirmationService serviceRelativesconfirmationService;
    //    @Autowired
//    private IServiceDonateflowchartService iServiceDonateflowchartService;
    @Autowired
    private IServiceFundflowruleService serviceFundflowruleService;
    @Autowired
    private IServiceEthicalreviewopinionsService iServiceEthicalreviewopinionsService;
@@ -70,6 +79,8 @@
    @Autowired
    private IServiceDonatecompletioninfoService serviceDonatecompletioninfoService;
    @Autowired
    private SysUserMapper sysUserMapper;
    /**
@@ -205,38 +216,116 @@
    public List<ServiceDonatebaseinfo> selectServiceDonatebaseinfoList(ServiceDonatebaseinfo serviceDonatebaseinfo) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        List<SysRole> l = user.getRoles();
        int b = 0;
        // 超级管理员不受"只看本人报送 / 只看本部门"的数据范围限制,可查看全部数据
        if (!isSuperAdmin(user)) {
            List<SysRole> l = user.getRoles();
            int b = 0;
        for (SysRole r : l) {
            if (r.getRoleId().longValue() == 3) {
                b = 1;
            for (SysRole r : l) {
                if (r.getRoleId().longValue() == 3) {
                    b = 1;
                }
                if (r.getRoleId().longValue() == 13) {
                    b = 2;
                }
            }
            if (r.getRoleId().longValue() == 13) {
                b = 2;
            if (b == 1) {
//            serviceDonatebaseinfo.setCreateBy(user.getUserName());
                log.info("user.getUserName()的值为 ---- :{}", user.getUserName());
                serviceDonatebaseinfo.setReporterno(user.getUserName());
            }
            if (b == 2) {
                serviceDonatebaseinfo.setDeptid(user.getDeptId());
            }
        }
        if (b == 1) {
            serviceDonatebaseinfo.setCreateBy(user.getUserName());
        List<ServiceDonatebaseinfo> serviceDonatebaseinfos = serviceDonatebaseinfoMapper.selectServiceDonatebaseinfoList(serviceDonatebaseinfo);
        // 一次性取出各捐献基础对应的死亡时间,避免在循环里按 InfoID 逐条查见证表(N+1)
        List<Long> infoIds = new ArrayList<>();
        for (ServiceDonatebaseinfo item : serviceDonatebaseinfos) {
            if (item.getId() != null) {
                infoIds.add(item.getId());
            }
        }
        if (b == 2) {
            serviceDonatebaseinfo.setDeptid(user.getDeptId());
        Map<Long, Date> deathTimeMap = new HashMap<>();
        if (!infoIds.isEmpty()) {
            for (ServiceDonationwitness witness : serviceDonationwitnessMapper.selectDeathTimeByInfoIds(infoIds)) {
                if (witness.getInfoid() != null && !deathTimeMap.containsKey(witness.getInfoid())) {
                    deathTimeMap.put(witness.getInfoid(), witness.getDeathtime());
                }
            }
        }
        return serviceDonatebaseinfoMapper.selectServiceDonatebaseinfoList(serviceDonatebaseinfo);
        for (ServiceDonatebaseinfo serviceDonatebaseinfo1 : serviceDonatebaseinfos) {
            //先给个年龄默认值(因为age是数字类型,不能放横杠,所以就所横扛放到单位上)
            serviceDonatebaseinfo1.setAgeunit("-");
            serviceDonatebaseinfo1.setAge(null);
            serviceDonatebaseinfo1.setAge2(null);
            //获取死亡时间,如果获取见证里有死亡时间,则进行计算他的年龄
            Date deathtime = deathTimeMap.get(serviceDonatebaseinfo1.getId());
            if (ObjectUtils.isNotEmpty(deathtime) && serviceDonatebaseinfo1.getBirthday() != null) {
                Map<String, String> map = CalculateDateUtils.calculateAge(serviceDonatebaseinfo1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), deathtime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
                if (Objects.isNull(map)) {
                    log.error("ServiceDonationwitness出生日期:{},ServiceDonationwitness死亡日期:{}", serviceDonatebaseinfo1.getBirthday(), deathtime);
                    continue;
                }
                serviceDonatebaseinfo1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
                serviceDonatebaseinfo1.setAgeunit(map.get("ageUnit"));
                serviceDonatebaseinfo1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
                serviceDonatebaseinfo1.setAgeunit2(map.get("ageUnit2"));
            }
        }
        return serviceDonatebaseinfos;
    }
    @Override
    public List<ServiceDonatebaseinfo> getPatName(ServiceDonatebaseinfo serviceDonatebaseinfo) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        // 超级管理员不受数据范围限制,可查看全部数据
        if (!isSuperAdmin(user)) {
            List<SysRole> l = user.getRoles();
            int b = 0;
            for (SysRole r : l) {
                if (r.getRoleId().longValue() == 3) {
                    b = 1;
                }
                if (r.getRoleId().longValue() == 13) {
                    b = 2;
                }
            }
            if (b == 1) {
                log.info("user.getUserName()的值为 ---- :{}", user.getUserName());
                serviceDonatebaseinfo.setReporterno(user.getUserName());
            }
            if (b == 2) {
                serviceDonatebaseinfo.setDeptid(user.getDeptId());
            }
        }
        List<ServiceDonatebaseinfo> serviceDonatebaseinfos = serviceDonatebaseinfoMapper.getPatName(serviceDonatebaseinfo);
        return serviceDonatebaseinfos;
    }
    @Override
    public List<ServiceDonatebaseinfo> listForSearch(ServiceDonatebaseinfo serviceDonatebaseinfo) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        List<SysRole> l = user.getRoles();
        Boolean b = false;
        for (SysRole r : l) {
            if (r.getRoleId().longValue() == 3) {
                b = true;
        // 超级管理员不受数据范围限制,可查看全部数据
        if (!isSuperAdmin(user)) {
            List<SysRole> l = user.getRoles();
            Boolean b = false;
            for (SysRole r : l) {
                if (r.getRoleId().longValue() == 3) {
                    b = true;
                }
            }
        }
        if (b) {
            serviceDonatebaseinfo.setCreateBy(user.getUserName());
            if (b) {
                serviceDonatebaseinfo.setCreateBy(user.getUserName());
            }
        }
        return serviceDonatebaseinfoMapper.listForSearch(serviceDonatebaseinfo);
@@ -269,34 +358,70 @@
    @Override
    public Map<String, Object> getWorkFlow(Long id) {
        log.info("getWorkFlow的入参ID为:{}", id);
        //用于返回
        Map<String, Object> map = new ConcurrentHashMap<>();
        ServiceDonatebaseinfo serviceDonatebaseinfo = getById(id);
        if (ObjectUtils.isEmpty(serviceDonatebaseinfo)) {
            return null;
        }
        //封装serviceDonateorgan潜在捐献数据
        Map<String, String> donatebaseinfo = new HashMap<>();
        donatebaseinfo.put("createtime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceDonatebaseinfo.getCreateTime()));
        donatebaseinfo.put("updatetime", serviceDonatebaseinfo.getUpdateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceDonatebaseinfo.getUpdateTime()) : "");
        donatebaseinfo.put("createperson", null);
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCreateBy())) {
            SysUser sysUser = sysUserMapper.selectUserByUserName(serviceDonatebaseinfo.getCreateBy());
            if (!ObjectUtils.isEmpty(sysUser)) {
                donatebaseinfo.put("createperson", sysUser.getNickName());
            }
        }
        donatebaseinfo.put("updateperson", null);
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getUpdateBy())) {
            SysUser sysUser = sysUserMapper.selectUserByUserName(serviceDonatebaseinfo.getUpdateBy());
            if (!ObjectUtils.isEmpty(sysUser)) {
                donatebaseinfo.put("updateperson", sysUser.getNickName());
            }
        }
        donatebaseinfo.put("process", "");
        //封装serviceDonateorgan潜在捐献返回数据
        log.info("检查封装潜在捐献返回数据donatebaseinfo的值为:{}", donatebaseinfo);
        map.put("donatebaseinfo", donatebaseinfo);
        //封装医学评估
        log.info("检查serviceDonatebaseinfo.getWorkflow()的值为:{}", serviceDonatebaseinfo.getWorkflow());
        Map<String, String> medicalevaluation = new HashMap<>();
        if (serviceDonatebaseinfo.getWorkflow() >= 1) {
            ServiceMedicalevaluation serviceMedicalevaluation = new ServiceMedicalevaluation();
            serviceMedicalevaluation.setInfoid(id);
            List<ServiceMedicalevaluation> serviceMedicalevaluations = serviceMedicalevaluationService.queryList(serviceMedicalevaluation);
            log.info("检查serviceMedicalevaluationService的值为:{}", serviceMedicalevaluations.size());
            if (!CollectionUtils.isEmpty(serviceMedicalevaluations)) {
                medicalevaluation.put("createtime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceMedicalevaluations.get(0).getCreateTime()));
                medicalevaluation.put("updatetime", serviceMedicalevaluations.get(0).getUpdateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceMedicalevaluations.get(0).getUpdateTime()) : null);
                medicalevaluation.put("createperson", null);
                if (StringUtils.isNotBlank(serviceMedicalevaluations.get(0).getCreateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceMedicalevaluations.get(0).getCreateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        medicalevaluation.put("createperson", sysUser.getNickName());
                    }
                }
                medicalevaluation.put("updateperson", null);
                if (StringUtils.isNotBlank(serviceMedicalevaluations.get(0).getUpdateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceMedicalevaluations.get(0).getUpdateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        medicalevaluation.put("updateperson", sysUser.getNickName());
                    }
                }
                medicalevaluation.put("process", "");
            }
        }
        //封装医学评估返回数据
        log.info("检查封装医学评估返回数据medicalevaluation的值为:{}", medicalevaluation);
        map.put("medicalevaluation", medicalevaluation);
        //封装捐献确认
@@ -305,13 +430,30 @@
            ServiceRelativesconfirmation serviceRelativesconfirmation = new ServiceRelativesconfirmation();
            serviceRelativesconfirmation.setInfoid(id);
            List<ServiceRelativesconfirmation> serviceRelativesconfirmations = serviceRelativesconfirmationService.queryList(serviceRelativesconfirmation);
            log.info("检查serviceRelativesconfirmations的值为:{}", serviceRelativesconfirmations.size());
            if (!CollectionUtils.isEmpty(serviceRelativesconfirmations)) {
                relativesconfirmation.put("createtime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceRelativesconfirmations.get(0).getCreateTime()));
                relativesconfirmation.put("updatetime", serviceRelativesconfirmations.get(0).getUpdateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceRelativesconfirmations.get(0).getUpdateTime()) : "");
                relativesconfirmation.put("createperson", null);
                if (StringUtils.isNotBlank(serviceRelativesconfirmations.get(0).getCreateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceRelativesconfirmations.get(0).getCreateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        relativesconfirmation.put("createperson", sysUser.getNickName());
                    }
                }
                relativesconfirmation.put("updateperson", null);
                if (StringUtils.isNotBlank(serviceRelativesconfirmations.get(0).getUpdateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceRelativesconfirmations.get(0).getUpdateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        relativesconfirmation.put("updateperson", sysUser.getNickName());
                    }
                }
                relativesconfirmation.put("process", "");
            }
        }
        //封装捐献确认返回数据
        log.info("检查封装捐献确认返回数据relativesconfirmation的值为:{}", relativesconfirmation);
        map.put("relativesconfirmation", relativesconfirmation);
@@ -321,13 +463,31 @@
            ServiceEthicalreviewopinions serviceDonateflowchart = new ServiceEthicalreviewopinions();
            serviceDonateflowchart.setInfoid(id);
            List<ServiceEthicalreviewopinions> serviceEthicalreviewopinionsList = iServiceEthicalreviewopinionsService.queryList(serviceDonateflowchart);
            log.info("检查serviceEthicalreviewopinionsList的值为:{}", serviceEthicalreviewopinionsList.size());
            if (!CollectionUtils.isEmpty(serviceEthicalreviewopinionsList)) {
                donateflowcharts.put("createtime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceEthicalreviewopinionsList.get(0).getCreateTime()));
                donateflowcharts.put("updatetime", serviceEthicalreviewopinionsList.get(0).getUpdateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceEthicalreviewopinionsList.get(0).getUpdateTime()) : "");
                donateflowcharts.put("createperson", null);
                if (StringUtils.isNotBlank(serviceEthicalreviewopinionsList.get(0).getCreateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceEthicalreviewopinionsList.get(0).getCreateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        donateflowcharts.put("createperson", sysUser.getNickName());
                    }
                }
                donateflowcharts.put("updateperson", null);
                if (StringUtils.isNotBlank(serviceEthicalreviewopinionsList.get(0).getUpdateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceEthicalreviewopinionsList.get(0).getUpdateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        donateflowcharts.put("updateperson", sysUser.getNickName());
                    }
                }
                donateflowcharts.put("process", "");
            }
        }
        //封装伦理审查返回数据
        log.info("检查封装伦理审查返回数据donateflowcharts的值为:{}", donateflowcharts);
        map.put("donateflowcharts", donateflowcharts);
        //封装器官分配
@@ -336,12 +496,30 @@
            ServiceDonateorgan serviceDonateorgan = new ServiceDonateorgan();
            serviceDonateorgan.setInfoid(id);
            List<ServiceDonateorgan> serviceDonateorgans = serviceDonateorganService.queryList(serviceDonateorgan);
            log.info("检查serviceDonateorgans的值为:{}", serviceDonateorgans.size());
            if (!CollectionUtils.isEmpty(serviceDonateorgans)) {
                donateorgansService.put("createtime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceDonateorgans.get(0).getCreateTime()));
                donateorgansService.put("updatetime", serviceDonateorgans.get(0).getUpdateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceDonateorgans.get(0).getUpdateTime()) : "");
                donateorgansService.put("createperson", null);
                if (StringUtils.isNotBlank(serviceDonateorgans.get(0).getCreateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceDonateorgans.get(0).getCreateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        donateorgansService.put("createperson", sysUser.getNickName());
                    }
                }
                donateorgansService.put("updateperson", null);
                if (StringUtils.isNotBlank(serviceDonateorgans.get(0).getUpdateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceDonateorgans.get(0).getUpdateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        donateorgansService.put("updateperson", sysUser.getNickName());
                    }
                }
                donateorgansService.put("process", "");
            }
        }
        log.info("检查封装器官分配返回数据donateorgansService的值为:{}", donateorgansService);
        //封装器官分配返回数据
        map.put("donateorgansService", donateorgansService);
@@ -349,12 +527,30 @@
        Map<String, String> donationwitness = new HashMap<>();
        if (serviceDonatebaseinfo.getWorkflow() >= 5) {
            ServiceDonationwitness serviceDonationwitness = serviceDonationwitnessService.getByInfoId(id);
            log.info("检查serviceDonationwitness的值为:{}", serviceDonationwitness);
            if (!ObjectUtils.isEmpty(serviceDonationwitness)) {
                donationwitness.put("createtime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceDonationwitness.getCreateTime()));
                donationwitness.put("updatetime", serviceDonationwitness.getUpdateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceDonationwitness.getUpdateTime()) : "");
                donationwitness.put("createperson", null);
                if (StringUtils.isNotBlank(serviceDonationwitness.getCreateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceDonationwitness.getCreateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        donationwitness.put("createperson", sysUser.getNickName());
                    }
                }
                donationwitness.put("updateperson", null);
                if (StringUtils.isNotBlank(serviceDonationwitness.getUpdateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceDonationwitness.getUpdateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        donationwitness.put("updateperson", sysUser.getNickName());
                    }
                }
                donationwitness.put("process", "");
            }
        }
        log.info("检查封装获取见证返回数据donationwitness的值为:{}", donationwitness);
        //封装获取见证返回数据
        map.put("donationwitness", donationwitness);
@@ -364,18 +560,63 @@
            ServiceDonatecompletioninfo serviceDonatecompletioninfo = new ServiceDonatecompletioninfo();
            serviceDonatecompletioninfo.setInfoid(id);
            List<ServiceDonatecompletioninfo> serviceDonatecompletioninfos = serviceDonatecompletioninfoService.queryList(serviceDonatecompletioninfo);
            log.info("检查serviceDonatecompletioninfos的值为:{}", serviceDonatecompletioninfos);
            if (!CollectionUtils.isEmpty(serviceDonatecompletioninfos)) {
                donatecompletioninfo.put("createtime", DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceDonatecompletioninfos.get(0).getCreateTime()));
                donatecompletioninfo.put("updatetime", serviceDonatecompletioninfos.get(0).getUpdateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", serviceDonatecompletioninfos.get(0).getUpdateTime()) : "");
                donatecompletioninfo.put("createperson", null);
                if (StringUtils.isNotBlank(serviceDonatecompletioninfos.get(0).getCreateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceDonatecompletioninfos.get(0).getCreateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        donatecompletioninfo.put("createperson", sysUser.getNickName());
                    }
                }
                donatecompletioninfo.put("updateperson", null);
                if (StringUtils.isNotBlank(serviceDonatecompletioninfos.get(0).getUpdateBy())) {
                    SysUser sysUser = sysUserMapper.selectUserByUserName(serviceDonatecompletioninfos.get(0).getUpdateBy());
                    if (!ObjectUtils.isEmpty(sysUser)) {
                        donatecompletioninfo.put("updateperson", sysUser.getNickName());
                    }
                }
                donatecompletioninfo.put("process", "");
            }
        }
        log.info("检查封装完成登记返回数据donatecompletioninfo的值为:{}", donatecompletioninfo);
        //封装完成登记返回数据
        map.put("donatecompletioninfo", donatecompletioninfo);
        //将数据封闭,并返回
        return map;
    }
    /**
     * 是否超级管理员。
     *
     * <p>判定为超级管理员的情形:
     * <ul>
     *   <li>内置管理员账号(userId = 1);</li>
     *   <li>账号被授予"超级管理员"角色(roleId = 1)。</li>
     * </ul>
     * 超级管理员不受"只看本人报送(角色3 专职人员)/ 只看本部门(角色13 业务组长)"的数据范围限制,
     * 可查看全部数据。
     */
    private boolean isSuperAdmin(SysUser user) {
        if (user == null) {
            return false;
        }
        if (SysUser.isAdmin(user.getUserId())) {
            return true;
        }
        List<SysRole> roles = user.getRoles();
        if (roles != null) {
            for (SysRole role : roles) {
                if (role.getRoleId() != null && role.getRoleId().longValue() == 1L) {
                    return true;
                }
            }
        }
        return false;
    }
}