package com.ruoyi.project.service.impl; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; 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; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.project.mapper.BaseOrganizationMapper; import org.springframework.util.CollectionUtils; /** * 捐献基础Service业务层处理 * * @author ruoyi * @date 2021-11-13 */ @Slf4j @Service public class ServiceDonatebaseinfoServiceImpl extends ServiceImpl implements IServiceDonatebaseinfoService { @Autowired BaseOrganizationMapper baseOrganizationMapper; @Autowired ServiceExternalpersonMapper serviceExternalpersonMapper; @Autowired ServiceDonatebaseinfoMapper serviceDonatebaseinfoMapper; @Autowired ServiceDonationwitnessMapper serviceDonationwitnessMapper; @Autowired private IBaseOnlyvalueService baseOnlyvalueService; @Autowired private IServiceMedicalevaluationService serviceMedicalevaluationService; @Autowired private IServiceRelativesconfirmationService serviceRelativesconfirmationService; @Autowired private IServiceFundflowruleService serviceFundflowruleService; @Autowired private IServiceEthicalreviewopinionsService iServiceEthicalreviewopinionsService; @Autowired private IServiceOrganallocationService serviceOrganallocationService; @Autowired private IServiceDonateorganService serviceDonateorganService; @Autowired private IServiceDonationwitnessService serviceDonationwitnessService; @Autowired private IServiceDonatecompletioninfoService serviceDonatecompletioninfoService; @Autowired private SysUserMapper sysUserMapper; /** * 查询捐献基础列表 * * @param serviceDonatebaseinfo 捐献基础 * @return 捐献基础 */ @Override public List queryList(ServiceDonatebaseinfo serviceDonatebaseinfo) { LambdaQueryWrapper wrappers = Wrappers.lambdaQuery(); if (StringUtils.isNotBlank(serviceDonatebaseinfo.getName())) { wrappers.like(ServiceDonatebaseinfo::getName, serviceDonatebaseinfo.getName()); } if (StringUtils.isNotBlank(serviceDonatebaseinfo.getIdcardno())) { wrappers.like(ServiceDonatebaseinfo::getIdcardno, serviceDonatebaseinfo.getIdcardno()); } if (StringUtils.isNotBlank(serviceDonatebaseinfo.getResidenceprovince())) { wrappers.eq(ServiceDonatebaseinfo::getResidenceprovince, serviceDonatebaseinfo.getResidenceprovince()); } if (serviceDonatebaseinfo.getRecordstate() != null) { wrappers.eq(ServiceDonatebaseinfo::getRecordstate, serviceDonatebaseinfo.getRecordstate()); } if (StringUtils.isNotBlank(serviceDonatebaseinfo.getTreatmenthospitalname())) { wrappers.like(ServiceDonatebaseinfo::getTreatmenthospitalname, serviceDonatebaseinfo.getTreatmenthospitalname()); } if (StringUtils.isNotBlank(serviceDonatebaseinfo.getDonorno())) { wrappers.eq(ServiceDonatebaseinfo::getDonorno, serviceDonatebaseinfo.getDonorno()); } if (StringUtils.isNotBlank(serviceDonatebaseinfo.getReportername())) { wrappers.like(ServiceDonatebaseinfo::getReportername, serviceDonatebaseinfo.getReportername()); } Map params = serviceDonatebaseinfo.getParams(); if (params.get("beginReporttime") != null && params.get("endReporttime") != null) { wrappers.between(ServiceDonatebaseinfo::getReporttime, params.get("beginReporttime"), params.get("endReporttime")); } return this.list(wrappers); } @Override public String getDonateNumber(ServiceDonatebaseinfo serviceDonatebaseinfo) { String donateNumber = ""; //省编号 P1P2 donateNumber += "33"; //发现医院 C1C2AF1N1 String hospitalNo = serviceDonatebaseinfo.getTreatmenthospitalno(); BaseOrganization baseOrganization = baseOrganizationMapper.getOrganizationByNumber(hospitalNo); if (ObjectUtils.isNotEmpty(baseOrganization)) { donateNumber += baseOrganization.getOrganizationid(); } //工作人员 H1H2H3 donateNumber += serviceDonatebaseinfo.getReporterno(); //红十字会 H4H5 donateNumber += "**"; //捐献者性别 G1+ donateNumber += serviceDonatebaseinfo.getSex().toString(); //捐献者血型 B1 String bloodtype = "" + serviceDonatebaseinfo.getBloodtype() + serviceDonatebaseinfo.getRhyin(); donateNumber += serviceDonatebaseinfoMapper.getBloodCode(bloodtype); //捐献者年龄 A1A2 donateNumber += serviceDonatebaseinfo.getAge().toString(); //捐献年份 Y1Y2 Date dt = serviceDonatebaseinfo.getReporttime(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(dt); donateNumber += dateString.substring(2, 4); //捐献者序号 S1S2S3S4 //查询当年的序号数据 donateNumber += "****"; return donateNumber; } @Override public String getDonateNumberById(Long id) { return serviceDonatebaseinfoMapper.getDonateNumberById(id); } @Override public String updateS1S2S3S4(Long id) { String oldDonateNumber = serviceDonatebaseinfoMapper.getDonateNumberById(id); List list = serviceDonationwitnessMapper.getWitnessList(); int completeDonation = list.size(); String number = ""; // if (completeDonation < 10) { // number = "000" + completeDonation; // } else if (completeDonation >= 10 && completeDonation < 100) { // number = "00" + completeDonation; // } else if (completeDonation >= 100 && completeDonation < 1000) { // number = "0" + completeDonation; // } else { // number = "" + completeDonation; // } Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); BaseOnlyvalue baseOnlyvalue = new BaseOnlyvalue(); baseOnlyvalue.setAppentvalue(String.valueOf(year)); baseOnlyvalue.setBusinesstype("donationwitness"); List baseOnlyvalues = baseOnlyvalueService.queryList(baseOnlyvalue); Long currentvalue = baseOnlyvalues.get(0).getCurrentvalue(); if (currentvalue == null) { log.error("唯一值为空了!"); return null; } //如果currentvalue不满足4位,则在前面补0 String formattedNumber = String.format("%04d", currentvalue); int last = oldDonateNumber.lastIndexOf("*"); if (last == -1) { return oldDonateNumber; } else { StringBuilder newDonateNumber = new StringBuilder(oldDonateNumber); // newDonateNumber.replace(last - 3, last + 1, number); newDonateNumber.replace(last - 3, last + 1, formattedNumber); String updateNumber = newDonateNumber.toString(); int result = serviceDonatebaseinfoMapper.updateDonateNumber(id, updateNumber); return updateNumber; } } @Override public List selectServiceDonatebaseinfoList(ServiceDonatebaseinfo serviceDonatebaseinfo) { SysUser user = SecurityUtils.getLoginUser().getUser(); List 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) { // serviceDonatebaseinfo.setCreateBy(user.getUserName()); log.info("user.getUserName()的值为 ---- :{}", user.getUserName()); serviceDonatebaseinfo.setReporterno(user.getUserName()); } if (b == 2) { serviceDonatebaseinfo.setDeptid(user.getDeptId()); } return serviceDonatebaseinfoMapper.selectServiceDonatebaseinfoList(serviceDonatebaseinfo); } @Override public List listForSearch(ServiceDonatebaseinfo serviceDonatebaseinfo) { SysUser user = SecurityUtils.getLoginUser().getUser(); List l = user.getRoles(); Boolean b = false; for (SysRole r : l) { if (r.getRoleId().longValue() == 3) { b = true; } } if (b) { serviceDonatebaseinfo.setCreateBy(user.getUserName()); } return serviceDonatebaseinfoMapper.listForSearch(serviceDonatebaseinfo); } @Override public String gethqzz(Long infoid) { return serviceDonatebaseinfoMapper.gethqzz(infoid); } @Override public countByRecordStateVO countByRecordState(TimeVO timeVO) { countByRecordStateVO c = new countByRecordStateVO(); c.setBaseinfo(serviceDonatebaseinfoMapper.countByRecordState("0", timeVO.getStarttime(), timeVO.getEndtime())); c.setMedicalevaluation(serviceDonatebaseinfoMapper.countByRecordState("4", timeVO.getStarttime(), timeVO.getEndtime())); c.setRelativeconfirmation(serviceDonatebaseinfoMapper.countByRecordState("6", timeVO.getStarttime(), timeVO.getEndtime())); c.setEthicalreview(serviceDonatebaseinfoMapper.countByRecordState("8", timeVO.getStarttime(), timeVO.getEndtime())); c.setOrganallocation(serviceDonatebaseinfoMapper.countByRecordState("10", timeVO.getStarttime(), timeVO.getEndtime())); c.setWitness(serviceDonatebaseinfoMapper.countByRecordState("11", timeVO.getStarttime(), timeVO.getEndtime())); c.setCompletion(serviceDonatebaseinfoMapper.countByRecordState("13", timeVO.getStarttime(), timeVO.getEndtime())); c.setAbandon(serviceDonatebaseinfoMapper.countByRecordState("99", timeVO.getStarttime(), timeVO.getEndtime())); return c; } @Override public String getDonateNameById(Long infoid) { return serviceDonatebaseinfoMapper.getDonateNameById(infoid); } @Override public Map getWorkFlow(Long id) { log.info("getWorkFlow的入参ID为:{}", id); //用于返回 Map map = new ConcurrentHashMap<>(); ServiceDonatebaseinfo serviceDonatebaseinfo = getById(id); if (ObjectUtils.isEmpty(serviceDonatebaseinfo)) { return null; } //封装serviceDonateorgan潜在捐献数据 Map 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 medicalevaluation = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 1) { ServiceMedicalevaluation serviceMedicalevaluation = new ServiceMedicalevaluation(); serviceMedicalevaluation.setInfoid(id); List 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); //封装捐献确认 Map relativesconfirmation = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 2) { ServiceRelativesconfirmation serviceRelativesconfirmation = new ServiceRelativesconfirmation(); serviceRelativesconfirmation.setInfoid(id); List 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); //封装伦理审查 Map donateflowcharts = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 3) { ServiceEthicalreviewopinions serviceDonateflowchart = new ServiceEthicalreviewopinions(); serviceDonateflowchart.setInfoid(id); List 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); //封装器官分配 Map donateorgansService = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 4) { ServiceDonateorgan serviceDonateorgan = new ServiceDonateorgan(); serviceDonateorgan.setInfoid(id); List 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); //封装获取见证 Map 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); //封装完成登记 Map donatecompletioninfo = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 6) { ServiceDonatecompletioninfo serviceDonatecompletioninfo = new ServiceDonatecompletioninfo(); serviceDonatecompletioninfo.setInfoid(id); List 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; } }