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 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 */ @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 IServiceEthicalreviewopinionsService serviceEthicalreviewopinionsService; @Autowired private IServiceOrganallocationService serviceOrganallocationService; @Autowired private IServiceDonationwitnessService serviceDonationwitnessService; @Autowired private IServiceDonatecompletioninfoService serviceDonatecompletioninfoService; /** * 查询捐献基础列表 * * @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()); } 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) { //用于返回 Map map = new ConcurrentHashMap<>(); ServiceDonatebaseinfo serviceDonatebaseinfo = getById(id); if (ObjectUtils.isEmpty(serviceDonatebaseinfo)) { return null; } //封装serviceDonateorgan潜在捐献数据 Map donateorgan = new HashMap<>(); donateorgan.put("createtime", serviceDonatebaseinfo.getCreateTime().toString()); donateorgan.put("updatetime", serviceDonatebaseinfo.getUpdateTime().toString()); donateorgan.put("process", ""); //封装serviceDonateorgan潜在捐献返回数据 map.put("donateorgan", donateorgan); //封装医学评估 Map medicalevaluation = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 1) { ServiceMedicalevaluation serviceMedicalevaluation = new ServiceMedicalevaluation(); serviceMedicalevaluation.setInfoid(id); List serviceMedicalevaluations = serviceMedicalevaluationService.queryList(serviceMedicalevaluation); if (!CollectionUtils.isEmpty(serviceMedicalevaluations)) { medicalevaluation.put("createtime", serviceMedicalevaluations.get(0).getCreateTime().toString()); medicalevaluation.put("updatetime", serviceMedicalevaluations.get(0).getUpdateTime().toString()); medicalevaluation.put("process", ""); } } //封装医学评估返回数据 map.put("medicalevaluation", medicalevaluation); //封装捐献确认 Map relativesconfirmation = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 2) { ServiceRelativesconfirmation serviceRelativesconfirmation = new ServiceRelativesconfirmation(); serviceRelativesconfirmation.setInfoid(id); List serviceRelativesconfirmations = serviceRelativesconfirmationService.queryList(serviceRelativesconfirmation); if (!CollectionUtils.isEmpty(serviceRelativesconfirmations)) { relativesconfirmation.put("createtime", serviceRelativesconfirmations.get(0).getCreateTime().toString()); relativesconfirmation.put("updatetime", serviceRelativesconfirmations.get(0).getUpdateTime().toString()); relativesconfirmation.put("process", ""); } } //封装捐献确认返回数据 map.put("relativesconfirmation", relativesconfirmation); //封装伦理审查 Map ethicalreviewopinions = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 3) { ServiceEthicalreviewopinions serviceEthicalreviewopinions = new ServiceEthicalreviewopinions(); serviceEthicalreviewopinions.setInfoid(id); List serviceEthicalreviewopinionsList = serviceEthicalreviewopinionsService.queryList(serviceEthicalreviewopinions); if (!CollectionUtils.isEmpty(serviceEthicalreviewopinionsList)) { ethicalreviewopinions.put("createtime", serviceEthicalreviewopinionsList.get(0).getCreateTime().toString()); ethicalreviewopinions.put("updatetime", serviceEthicalreviewopinionsList.get(0).getUpdateTime().toString()); ethicalreviewopinions.put("process", ""); } } //封装伦理审查返回数据 map.put("ethicalreviewopinions", ethicalreviewopinions); //封装器官分配 Map organallocationService = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 4) { ServiceOrganallocation serviceOrganallocation = new ServiceOrganallocation(); serviceOrganallocation.setOrganid(id); List serviceOrganallocations = serviceOrganallocationService.selectServiceOrganallocationList(serviceOrganallocation); if (!CollectionUtils.isEmpty(serviceOrganallocations)) { organallocationService.put("createtime", serviceOrganallocations.get(0).getCreateTime().toString()); organallocationService.put("updatetime", serviceOrganallocations.get(0).getUpdateTime().toString()); organallocationService.put("process", ""); } } //封装器官分配返回数据 map.put("organallocationService", organallocationService); //封装获取见证 Map donationwitness = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 5) { ServiceDonationwitness serviceDonationwitness = serviceDonationwitnessService.getByInfoId(id); if (!ObjectUtils.isEmpty(serviceDonationwitness)) { donationwitness.put("createtime", serviceDonationwitness.getCreateTime().toString()); donationwitness.put("updatetime", serviceDonationwitness.getUpdateTime().toString()); donationwitness.put("process", ""); } } //封装获取见证返回数据 map.put("donationwitness", donationwitness); //封装完成登记 Map donatecompletioninfo = new HashMap<>(); if (serviceDonatebaseinfo.getWorkflow() >= 6) { ServiceDonatecompletioninfo serviceDonatecompletioninfo = new ServiceDonatecompletioninfo(); serviceDonatecompletioninfo.setInfoid(id); List serviceDonatecompletioninfos = serviceDonatecompletioninfoService.queryList(serviceDonatecompletioninfo); if (!CollectionUtils.isEmpty(serviceDonatecompletioninfos)) { donatecompletioninfo.put("createtime", serviceDonatecompletioninfos.get(0).getCreateTime().toString()); donatecompletioninfo.put("updatetime", serviceDonatecompletioninfos.get(0).getUpdateTime().toString()); donatecompletioninfo.put("process", ""); } } //封装完成登记返回数据 map.put("donatecompletioninfo", donatecompletioninfo); //将数据封闭,并返回 return map; } }