ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
@@ -17,7 +17,6 @@ @ApiModel(value = "SysDept", description = "部门表") public class SysDept extends BaseEntity { private static final long serialVersionUID = 1L; /** * 部门ID */ ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -750,9 +750,9 @@ */ private List<ThiedInhospInfo> parseResponseData(String result) { try { Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(result, JsonObject.class); JsonArray resultArray = jsonObject.getAsJsonObject("data").getAsJsonArray("result"); Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(result, JsonObject.class); JsonArray resultArray = jsonObject.getAsJsonObject("data").getAsJsonArray("result"); Type resultType = new TypeToken<List<ThiedInhospInfo>>() {}.getType(); return gson.fromJson(resultArray, resultType); } catch (Exception e) { @@ -776,7 +776,7 @@ parentDir.mkdirs(); } if (!file.exists()) { if (!file.exists()) { file.createNewFile(); } @@ -855,7 +855,7 @@ if (CollectionUtils.isEmpty(existingArchives)) { patArchiveService.insertPatArchive(patArchive); log.debug("【processPatientArchive】新增患者档案,患者编号:{}", patArchive.getPatientno()); } else { } else { patArchive.setId(existingArchives.get(0).getId()); patArchiveService.updateArchive(patArchive); log.debug("【processPatientArchive】更新患者档案,患者编号:{}", patArchive.getPatientno()); @@ -871,18 +871,18 @@ PatArchive patArchive = new PatArchive(); // 基本信息 patArchive.setPatientno(thiedInhospInfo.getPatiMediaNo()); patArchive.setPatientno(thiedInhospInfo.getPatiMediaNo()); patArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo().trim()); patArchive.setName(thiedInhospInfo.getPatiRecordName()); patArchive.setSourcefrom(2); patArchive.setPattype("2"); patArchive.setSourcefrom(2); patArchive.setPattype("2"); // 性别 patArchive.setSex("男".equals(thiedInhospInfo.getPatiRecordGender()) ? 1L : 2L); // 民族和籍贯 patArchive.setNation(thiedInhospInfo.getPatiNation()); patArchive.setNativePlace(thiedInhospInfo.getPatiNationality()); patArchive.setNation(thiedInhospInfo.getPatiNation()); patArchive.setNativePlace(thiedInhospInfo.getPatiNationality()); // 居住地址 String homeAddr = thiedInhospInfo.getPatiHomeAddr(); @@ -891,21 +891,21 @@ // 出生日期 if (StringUtils.isNotEmpty(thiedInhospInfo.getPatiBirthday())) { try { patArchive.setBirthdate(new SimpleDateFormat("yyyy-MM-dd").parse(thiedInhospInfo.getPatiBirthday())); } catch (ParseException e) { patArchive.setBirthdate(new SimpleDateFormat("yyyy-MM-dd").parse(thiedInhospInfo.getPatiBirthday())); } catch (ParseException e) { log.warn("【buildPatientArchive】解析出生日期失败:{}", thiedInhospInfo.getPatiBirthday(), e); } } } // 年龄 if (thiedInhospInfo.getTreateAge() != null) { patArchive.setAge(Long.valueOf(thiedInhospInfo.getTreateAge())); } patArchive.setAgeUnit(thiedInhospInfo.getTreatAgeunit()); if (thiedInhospInfo.getTreateAge() != null) { patArchive.setAge(Long.valueOf(thiedInhospInfo.getTreateAge())); } patArchive.setAgeUnit(thiedInhospInfo.getTreatAgeunit()); // 联系方式 patArchive.setTelcode(thiedInhospInfo.getCompanyTelNum()); patArchive.setRelativetelcode(thiedInhospInfo.getContactPersonPhone()); patArchive.setTelcode(thiedInhospInfo.getCompanyTelNum()); patArchive.setRelativetelcode(thiedInhospInfo.getContactPersonPhone()); // 出院方式处理(死亡等特殊情况) if (StringUtils.isNotEmpty(thiedInhospInfo.getOutWayId()) && "4".equals(thiedInhospInfo.getOutWayId())) { @@ -918,9 +918,9 @@ } // 系统字段 patArchive.setDelFlag("0"); patArchive.setCreateTime(new Date()); patArchive.setUpdateTime(new Date()); patArchive.setDelFlag("0"); patArchive.setCreateTime(new Date()); patArchive.setUpdateTime(new Date()); return patArchive; } @@ -944,7 +944,7 @@ patMedInhospService.updatePatMedInhosp(patMedInhosp); log.debug("【processPatientInhospInfo】更新住院信息,患者编号:{},流水号:{}", patArchive.getPatientno(), patMedInhosp.getSerialnum()); } else { } else { patMedInhospService.insertPatMedInhosp(patMedInhosp); log.debug("【processPatientInhospInfo】新增住院信息,患者编号:{},流水号:{}", patArchive.getPatientno(), patMedInhosp.getSerialnum()); @@ -955,74 +955,74 @@ * 构建患者住院信息 */ private PatMedInhosp buildPatientInhospInfo(ThiedInhospInfo thiedInhospInfo, PatArchive patArchive, String cry) { PatMedInhosp patMedInhosp = new PatMedInhosp(); PatMedInhosp patMedInhosp = new PatMedInhosp(); // 患者基本信息 patMedInhosp.setPatid(patArchive.getId()); patMedInhosp.setPatno(patArchive.getPatientno()); patMedInhosp.setPatname(patArchive.getName()); patMedInhosp.setPatid(patArchive.getId()); patMedInhosp.setPatno(patArchive.getPatientno()); patMedInhosp.setPatname(patArchive.getName()); // 护理信息 patMedInhosp.setNurseId(thiedInhospInfo.getNurseId()); patMedInhosp.setNurseName(thiedInhospInfo.getNurseName()); patMedInhosp.setNurseId(thiedInhospInfo.getNurseId()); patMedInhosp.setNurseName(thiedInhospInfo.getNurseName()); // 住院信息 patMedInhosp.setSerialnum(thiedInhospInfo.getInpatientId()); patMedInhosp.setFuflag("1"); patMedInhosp.setSerialnum(thiedInhospInfo.getInpatientId()); patMedInhosp.setFuflag("1"); patMedInhosp.setInhospstate("0".equals(cry) ? "0" : "1"); // 医院和科室信息 patMedInhosp.setHospitalcode(thiedInhospInfo.getAreaId()); patMedInhosp.setHospitalcode(thiedInhospInfo.getAreaId()); patMedInhosp.setDeptcode(thiedInhospInfo.getAdmissDeptId()); patMedInhosp.setDeptid(thiedInhospInfo.getAdmissDeptId()); patMedInhosp.setDeptname(thiedInhospInfo.getAdmissDeptName()); patMedInhosp.setBedNo(thiedInhospInfo.getAdmissBedNo()); // 诊断信息 patMedInhosp.setIcd10code(thiedInhospInfo.getDiagIcd10()); patMedInhosp.setDiagname(thiedInhospInfo.getDiagName()); patMedInhosp.setIcd10code(thiedInhospInfo.getDiagIcd10()); patMedInhosp.setDiagname(thiedInhospInfo.getDiagName()); // 时间信息 if (StringUtils.isNotEmpty(thiedInhospInfo.getAdmissDate())) { try { patMedInhosp.setStarttime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getAdmissDate())); } catch (ParseException e) { try { patMedInhosp.setStarttime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getAdmissDate())); } catch (ParseException e) { log.warn("【buildPatientInhospInfo】解析入院时间失败:{}", thiedInhospInfo.getAdmissDate(), e); } } } if (StringUtils.isNotEmpty(thiedInhospInfo.getOutDate())) { try { patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getOutDate())); } catch (ParseException e) { try { patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getOutDate())); } catch (ParseException e) { log.warn("【buildPatientInhospInfo】解析出院时间失败:{}", thiedInhospInfo.getOutDate(), e); } } // 出院信息 patMedInhosp.setLeaveldeptcode(thiedInhospInfo.getCurrDeptId()); patMedInhosp.setLeaveldeptname(thiedInhospInfo.getCurrDeptName()); patMedInhosp.setLeavediagname(thiedInhospInfo.getDiagName()); patMedInhosp.setLeaveicd10code(thiedInhospInfo.getDiagIcd10()); patMedInhosp.setOutWayId(thiedInhospInfo.getOutWayId()); patMedInhosp.setOutWayName(thiedInhospInfo.getOutWayName()); patMedInhosp.setLeaveldeptcode(thiedInhospInfo.getCurrDeptId()); patMedInhosp.setLeaveldeptname(thiedInhospInfo.getCurrDeptName()); patMedInhosp.setLeavediagname(thiedInhospInfo.getDiagName()); patMedInhosp.setLeaveicd10code(thiedInhospInfo.getDiagIcd10()); patMedInhosp.setOutWayId(thiedInhospInfo.getOutWayId()); patMedInhosp.setOutWayName(thiedInhospInfo.getOutWayName()); // 医生信息 patMedInhosp.setDrname(thiedInhospInfo.getDoctName()); patMedInhosp.setDrcode(thiedInhospInfo.getDoctId()); // 病区信息 patMedInhosp.setLeavehospitaldistrictid(thiedInhospInfo.getCurrWardCode()); patMedInhosp.setLeavehospitaldistrictcode(thiedInhospInfo.getCurrWardId()); patMedInhosp.setLeavehospitaldistrictname(thiedInhospInfo.getCurrWardName()); patMedInhosp.setLeaveldeptid(thiedInhospInfo.getCurrDeptCode()); patMedInhosp.setLeavehospitaldistrictid(thiedInhospInfo.getCurrWardCode()); patMedInhosp.setLeavehospitaldistrictcode(thiedInhospInfo.getCurrWardId()); patMedInhosp.setLeavehospitaldistrictname(thiedInhospInfo.getCurrWardName()); patMedInhosp.setLeaveldeptid(thiedInhospInfo.getCurrDeptCode()); // 状态信息 patMedInhosp.setSchemestatus("0".equals(cry) ? 1L : 2L); // 系统字段 patMedInhosp.setDelFlag("0"); patMedInhosp.setOrgid("1"); patMedInhosp.setOrgid("1"); return patMedInhosp; } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -4,6 +4,7 @@ import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.*; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DtoConversionUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanValidators; @@ -13,6 +14,7 @@ import com.ruoyi.system.mapper.*; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; import com.smartor.domain.SvyTaskVO; import com.smartor.mapper.SysUserDeptMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -164,96 +166,238 @@ @Override public SysUser selectUserByUserName2(String userName) { String[] split = userName.split("&"); SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1]); if (Objects.isNull(sysUser)) return sysUser; List<SysDept> sysDepts = null; if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) { log.debug("开始查询用户信息,用户名: {}", userName); try { // 参数校验 if (StringUtils.isEmpty(userName)) { log.warn("用户名参数为空"); return null; } // 解析用户名和机构ID String[] userInfo = parseUserName(userName); if (userInfo == null) { log.warn("用户名格式不正确: {}", userName); return null; } String username = userInfo[0]; String orgId = userInfo[1]; // 查询用户基本信息 SysUser sysUser = userMapper.selectUserByUserNameByCondition(username, orgId); if (Objects.isNull(sysUser)) { log.warn("未找到用户信息: username={}, orgId={}", username, orgId); return null; } // 查询用户部门信息 List<SysDept> sysDepts = getUserDepts(sysUser, username, orgId); List<Long> deptIds = extractDeptIds(sysDepts); sysUser.setDepts(deptIds); // 根据搜索范围处理科室和病区信息 processUserDeptInfo(sysUser, username, orgId); log.debug("用户信息查询完成: userId={}", sysUser.getUserId()); return sysUser; } catch (Exception e) { log.error("查询用户信息时发生异常: userName={}", userName, e); return null; } } /** * 解析用户名,提取用户名和机构ID */ private String[] parseUserName(String userName) { if (StringUtils.isEmpty(userName) || !userName.contains("&")) { return null; } return userName.split("&"); } /** * 获取用户部门信息 */ private List<SysDept> getUserDepts(SysUser sysUser, String username, String orgId) { if ("admin".equals(username)) { SysDept dept = new SysDept(); dept.setOrgid(split[1]); sysDepts = sysDeptMapper.selectDeptList(dept); dept.setOrgid(orgId); return sysDeptMapper.selectDeptList(dept); } else { sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId()); return sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId()); } List<Long> deptIds = new ArrayList<>(); for (SysDept sysDept : sysDepts) { deptIds.add(sysDept.getDeptId()); } /** * 提取部门ID列表 */ private List<Long> extractDeptIds(List<SysDept> sysDepts) { if (CollectionUtils.isEmpty(sysDepts)) { return new ArrayList<>(); } return sysDepts.stream() .map(SysDept::getDeptId) .collect(Collectors.toList()); } /** * 处理用户科室和病区信息 */ private void processUserDeptInfo(SysUser sysUser, String username, String orgId) { String searchScope = sysUser.getSearchscope(); if (StringUtils.isEmpty(searchScope)) { return; } switch (searchScope) { case "0": // 全部范围 processFullScopeDeptInfo(sysUser, username, orgId); break; case "1": // 科室范围 processDeptScopeInfo(sysUser, orgId, "1"); break; case "2": // 病区范围 processDeptScopeInfo(sysUser, orgId, "2"); break; default: log.warn("未知的搜索范围: {}", searchScope); } } /** * 处理全部范围的部门信息 */ private void processFullScopeDeptInfo(SysUser sysUser, String username, String orgId) { SysUserDept sysUserDept = createSysUserDept(sysUser, orgId); List<SysUserDept> sysUserDeptKSs = null; List<SysUserDept> sysUserDeptBQs = null; if ("admin".equals(username)) { // admin用户特殊处理 sysUserDept.setUserId(null); sysUserDeptKSs = getAdminDeptList(orgId, "1"); sysUserDeptBQs = getAdminDeptList(orgId, "2"); // 去重处理 sysUserDeptKSs = removeDuplicateDepts(sysUserDeptKSs); sysUserDeptBQs = removeDuplicateDepts(sysUserDeptBQs); } else { // 普通用户处理 sysUserDept.setDeptType("1"); sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); sysUserDept.setDeptType("2"); sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); } // 设置科室和病区信息 setBelongWards(sysUser, sysUserDeptBQs); setBelongDepts(sysUser, sysUserDeptKSs); } /** * 处理指定范围的部门信息 */ private void processDeptScopeInfo(SysUser sysUser, String orgId, String deptType) { SysUserDept sysUserDept = createSysUserDept(sysUser, orgId); sysUserDept.setDeptType(deptType); List<SysUserDept> deptList = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); if ("1".equals(deptType)) { setBelongDepts(sysUser, deptList); } else if ("2".equals(deptType)) { setBelongWards(sysUser, deptList); } } /** * 创建SysUserDept对象 */ private SysUserDept createSysUserDept(SysUser sysUser, String orgId) { SysUserDept sysUserDept = new SysUserDept(); sysUserDept.setUserId(sysUser.getUserId()); sysUserDept.setDeptType(sysUser.getSearchscope()); sysUserDept.setOrgid(split[1]); List<SysUserDept> sysUserDeptKSs = null; List<SysUserDept> sysUserDeptBQs = null; if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("0")) { if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) { sysUserDept.setUserId(null); } sysUserDept.setDeptType("1"); sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); sysUserDept.setDeptType("2"); sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); //如果是admin,需要对sysUserDeptBQs,sysUserDeptBQs去重 if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) { List<SysUserDept> distinctUserDepts = new ArrayList<>(); Set<String> uniqueDeptCodes = new HashSet<>(); for (SysUserDept userDept : sysUserDeptKSs) { String deptCode = userDept.getDeptCode(); if (StringUtils.isNotEmpty(deptCode) && !uniqueDeptCodes.contains(deptCode)) { distinctUserDepts.add(userDept); uniqueDeptCodes.add(deptCode); } } List<SysUserDept> distinctUserBQs = new ArrayList<>(); Set<String> uniqueBQCodes = new HashSet<>(); for (SysUserDept userDept : sysUserDeptBQs) { String deptCode = userDept.getDeptCode(); if (StringUtils.isNotEmpty(deptCode) && !uniqueBQCodes.contains(deptCode)) { distinctUserBQs.add(userDept); uniqueBQCodes.add(deptCode); } } sysUserDeptKSs = distinctUserDepts; sysUserDeptBQs = distinctUserBQs; } } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("1")) { sysUserDept.setDeptType("1"); sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("2")) { sysUserDept.setDeptType("2"); sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept); sysUserDept.setOrgid(orgId); return sysUserDept; } /** * 获取admin用户的部门列表 */ private List<SysUserDept> getAdminDeptList(String orgId, String deptType) { SysDept dept = new SysDept(); dept.setOrgid(orgId); dept.setDeptType(deptType); List<SysDept> sysDepts = sysDeptMapper.selectDeptList(dept); return DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class); } /** * 去除重复的部门信息 */ private List<SysUserDept> removeDuplicateDepts(List<SysUserDept> deptList) { if (CollectionUtils.isEmpty(deptList)) { return new ArrayList<>(); } sysUser.setDepts(deptIds); if (!CollectionUtils.isEmpty(sysUserDeptBQs)) { List<Map<String, Object>> list = new ArrayList<>(); for (SysUserDept sud : sysUserDeptBQs) { Map<String, Object> map = new HashMap<>(); map.put("districtCode", ""); if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put("districtCode", sud.getDeptCode()); else continue; map.put("districtName", ""); if (StringUtils.isNotEmpty(sud.getDeptName())) map.put("districtName", sud.getDeptName()); list.add(map); List<SysUserDept> distinctDepts = new ArrayList<>(); Set<String> uniqueCodes = new HashSet<>(); for (SysUserDept dept : deptList) { String deptCode = dept.getDeptCode(); if (StringUtils.isNotEmpty(deptCode) && !uniqueCodes.contains(deptCode)) { distinctDepts.add(dept); uniqueCodes.add(deptCode); } sysUser.setBelongWards(list); } if (!CollectionUtils.isEmpty(sysUserDeptKSs)) { List<Map<String, Object>> list = new ArrayList<>(); for (SysUserDept sud : sysUserDeptKSs) { Map<String, Object> map = new HashMap<>(); map.put("deptCode", ""); if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put("deptCode", sud.getDeptCode()); else continue; map.put("deptName", ""); if (StringUtils.isNotEmpty(sud.getDeptName())) map.put("deptName", sud.getDeptName()); list.add(map); } sysUser.setBelongDepts(list); return distinctDepts; } /** * 设置病区信息 */ private void setBelongWards(SysUser sysUser, List<SysUserDept> sysUserDeptBQs) { if (CollectionUtils.isEmpty(sysUserDeptBQs)) { return; } return sysUser; List<Map<String, Object>> wardList = sysUserDeptBQs.stream() .filter(sud -> StringUtils.isNotEmpty(sud.getDeptCode())) .map(sud -> { Map<String, Object> map = new HashMap<>(); map.put("districtCode", StringUtils.defaultString(sud.getDeptCode(), "")); map.put("districtName", StringUtils.defaultString(sud.getDeptName(), "")); return map; }) .collect(Collectors.toList()); sysUser.setBelongWards(wardList); } /** * 设置科室信息 */ private void setBelongDepts(SysUser sysUser, List<SysUserDept> sysUserDeptKSs) { if (CollectionUtils.isEmpty(sysUserDeptKSs)) { return; } List<Map<String, Object>> deptList = sysUserDeptKSs.stream() .filter(sud -> StringUtils.isNotEmpty(sud.getDeptCode())) .map(sud -> { Map<String, Object> map = new HashMap<>(); map.put("deptCode", StringUtils.defaultString(sud.getDeptCode(), "")); map.put("deptName", StringUtils.defaultString(sud.getDeptName(), "")); return map; }) .collect(Collectors.toList()); sysUser.setBelongDepts(deptList); } /** @@ -465,7 +609,7 @@ if (!CollectionUtils.isEmpty(user.getDeptCodes())) { for (String deptCode : user.getDeptCodes()) { SysDept sysDept = sysDeptMapper.selectDeptByCode(deptCode); if(ObjectUtils.isEmpty(sysDept)){ if (ObjectUtils.isEmpty(sysDept)) { continue; } @@ -491,7 +635,7 @@ if (!CollectionUtils.isEmpty(user.getWardCodes())) { for (String wardCode : user.getWardCodes()) { SysDept sysDept = sysDeptMapper.selectDeptByCode(wardCode); if(ObjectUtils.isEmpty(sysDept)){ if (ObjectUtils.isEmpty(sysDept)) { continue; } SysUserDept sysUserDept = new SysUserDept(); smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2183,10 +2183,10 @@ List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>(); //Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); Map<String, List<ServiceSubtask>> collect = new HashMap<>(); if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 1) { if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) { collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); }else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 2){ } else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) { collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown"))); } for (List<ServiceSubtask> serviceSubtaskList : collect.values()) { @@ -2211,7 +2211,7 @@ serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode()); //出院人次 serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size()); for (ServiceSubtask serviceSubtask : serviceSubtaskList){ for (ServiceSubtask serviceSubtask : serviceSubtaskList) { //无需随访人次 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) { serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L); @@ -2221,67 +2221,67 @@ serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L); } //首次出院随访 if(serviceSubtask.getVisitCount() == 1){ if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) { if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) { serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L); } if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)){ if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) { serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) { serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L); } if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { double rate = (double)(serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp(); double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp(); serviceSubtaskStatistic.setFollowUpRate(percentFormat.format(rate)); } else { serviceSubtaskStatistic.setFollowUpRate("0.00%"); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) { serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) { serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) { serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) { serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L); } }//二次出院随访 else if (serviceSubtask.getVisitCount() > 1){ else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) { if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) { serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L); } if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)){ if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) { serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) { serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L); } if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { double rate = (double)(serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain(); double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain(); serviceSubtaskStatistic.setFollowUpRateAgain(percentFormat.format(rate)); } else { serviceSubtaskStatistic.setFollowUpRateAgain("0.00%"); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) { serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) { serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) { serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L); } if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")){ if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) { serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L); } } smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -963,10 +963,10 @@ </foreach> </if> <if test="deptcodes != null and deptcodes.size() > 0"> AND leavehospitaldistrictcode IN AND deptcode IN <foreach collection="deptcodes" item="deptcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} #{deptcode} </foreach> </if> <if test="serviceType != null and serviceType.size() > 0">