ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateScriptController.java
@@ -8,8 +8,10 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.smartor.domain.ServiceSubtaskCountReq; import com.smartor.domain.SvyLibTemplateScript; import com.smartor.service.ISvyLibTemplateScriptService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -101,4 +103,15 @@ { return toAjax(svyLibTemplateScriptService.deleteSvyLibTemplateScriptByTopicids(topicids)); } /** * 问题统计 */ @ApiOperation("问题统计") @AddOrgId @PostMapping(value = "/countPatByScript") public AjaxResult countPatByScript(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) { return success(svyLibTemplateScriptService.countPatByScript(serviceSubtaskCountReq)); } } ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java
@@ -6,10 +6,7 @@ import com.ruoyi.common.core.domain.entity.SysUserDept; import com.ruoyi.common.core.domain.entity.SysUserRole; import com.ruoyi.common.enums.DataSourceType; import com.smartor.domain.Icd10; import com.smartor.domain.PatArchive; import com.smartor.domain.PatMedInhosp; import com.smartor.domain.PatMedOuthosp; import com.smartor.domain.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -48,6 +45,13 @@ public List<SysUserDept> yhyksxx(SysUser sysUser); /** * 用户与院区信息 * * @param sysUser * @return */ public List<SysUserOrg> yhyyqxx(SysUser sysUser); /** * 出入院信息 * * @param patMedInhosp ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -41,6 +41,9 @@ private SysUserDeptMapper sysUserDeptMapper; @Autowired private SysUserOrgMapper sysUserOrgMapper; @Autowired private Icd10Mapper icd10Mapper; @Autowired @@ -419,6 +422,9 @@ List<SysUser> sysUserList = chMapper.selectUserList(sysUser); SysUser suerTemp = new SysUser(); List<SysUserDept> sysUserDeptAll = chMapper.yhyksxx(suerTemp); //用户-院区关系 List<SysUserOrg> sysUserOrgAll = chMapper.yhyyqxx(suerTemp); log.info("sysUserList的采集到的数量为:{}", sysUserList.size()); int i = 0;// sysUser2Mapper.batchUser(sysUserList); for (SysUser sysUser1 : sysUserList) { @@ -448,6 +454,14 @@ sysUserDeptMapper.insertSysUserDept(sud); } } //新增用户与院区 List<SysUserOrg> sysUserOrg = sysUserOrgAll.stream().filter((SysUserOrg o) -> o.getUserId().equals(sysUser1.getHisUserId())).collect(Collectors.toList()); for (SysUserOrg suo : sysUserOrg) { if (usersTemp.size() > 0) { suo.setUserId(usersTemp.get(0).getUserId()); sysUserOrgMapper.insertSysUserOrg(suo); } } } return i; ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml
@@ -17,6 +17,13 @@ <result property="updateTime" column="update_time"/> </resultMap> <resultMap type="com.smartor.domain.SysUserOrg" id="SysUserOrgResult"> <result property="id" column="id"/> <result property="userId" column="user_id"/> <result property="campusid" column="campusid"/> <result property="orgid" column="orgid"/> <result property="delFlag" column="del_flag"/> </resultMap> <resultMap type="com.ruoyi.common.core.domain.entity.SysUserRole" id="SysUserRoleResult"> <result property="userId" column="user_id"/> @@ -384,6 +391,26 @@ <if test="hisUserId != null ">and user_id = #{hisUserId}</if> </select> <select id="yhyyqxx" parameterType="com.ruoyi.common.core.domain.entity.SysUser" resultMap="SysUserOrgResult"> select d.orgid as campusid, d.del_flag, ud.user_id as user_id, ud.orgid as orgid FROM healthy_dept d JOIN healthy_user_dept ud ON d.his_dept_id = ud.dept_code where 1=1 and ud.user_id != 'admin' <if test="orgid != null and orgid != ''"> AND ud.orgid = #{orgid} </if> <if test="hisUserId != null "> AND ud.user_id = #{hisUserId} </if> <if test="campusid != null"> AND d.orgid = #{campusid} </if> </select> <select id="selectPatArchiveList" parameterType="com.smartor.domain.PatArchive" resultMap="PatArchiveResult"> <include refid="selectPatArchiveVo"/> smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
@@ -78,6 +78,12 @@ private String orgid; /** * 问题编码-查询使用,支持多个问题,用逗号区分 */ @ApiModelProperty(value = "问题编码") private String scriptids; /** * pageNum */ @ApiModelProperty("pageNum") smartor/src/main/java/com/smartor/service/ISvyLibTemplateScriptService.java
@@ -1,8 +1,11 @@ package com.smartor.service; import com.smartor.domain.ServiceSubtaskCountReq; import com.smartor.domain.ServiceSubtaskScriptCount; import com.smartor.domain.SvyLibTemplateScript; import java.util.List; import java.util.Map; /** * 模板问卷题目Service接口 @@ -59,4 +62,12 @@ * @return 结果 */ public int deleteSvyLibTemplateScriptByTopicid(Long topicid); /** * 根据问题id统计选项 * * @param serviceSubtaskCountReq * @return 结果 */ public Map<Long, ServiceSubtaskScriptCount> countPatByScript(ServiceSubtaskCountReq serviceSubtaskCountReq); } smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateScriptServiceImpl.java
@@ -1,13 +1,23 @@ package com.smartor.service.impl; import com.ruoyi.common.utils.DateUtils; import com.smartor.domain.SvyLibTemplateScript; import com.smartor.domain.*; import com.smartor.mapper.ServiceSubtaskMapper; import com.smartor.mapper.SvyLibTemplateScriptMapper; import com.smartor.service.ISvyLibTemplateScriptService; import com.smartor.service.ISvyLibTemplateTargetoptionService; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static net.sf.jsqlparser.parser.feature.Feature.values; /** * 模板问卷题目Service业务层处理 @@ -18,8 +28,13 @@ @Service public class SvyLibTemplateScriptServiceImpl implements ISvyLibTemplateScriptService { ISvyLibTemplateTargetoptionService svyLibTemplateTargetoptionService; @Autowired private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper; @Autowired private ServiceSubtaskMapper serviceSubtaskMapper; /** * 查询模板问卷题目 @@ -94,4 +109,80 @@ { return svyLibTemplateScriptMapper.deleteSvyLibTemplateScriptByTopicid(topicid); } public Map<Long, ServiceSubtaskScriptCount> countPatByScript(ServiceSubtaskCountReq serviceSubtaskCountReq) { Map<Long, ServiceSubtaskScriptCount> result = new HashMap<>(); serviceSubtaskCountReq.setType("2"); List<ServiceSubtaskScriptCount> counts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq); List<ServiceSubtaskScriptCount> itemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq); if(ObjectUtils.isNotEmpty(counts)){ for(ServiceSubtaskScriptCount count:counts){ Long scriptid = count.getScriptid(); //排除scriptid为空的情况 if(ObjectUtils.isEmpty(scriptid)){ continue; } Map<String, ServiceSubtaskScriptCount> itemCountMap = new HashMap<>(); //问卷加上空白选项 if(ObjectUtils.isNotEmpty(count.getTemplateid()) && ObjectUtils.isNotEmpty(count.getSubtaskType()) && count.getSubtaskType().equals("2")){ SvyLibTemplateScript script = selectSvyLibTemplateScriptByTopicid(scriptid); if(ObjectUtils.isNotEmpty(script)){ SvyLibTemplateTargetoption targetoptionVo = new SvyLibTemplateTargetoption(); targetoptionVo.setOrgid(script.getOrgid()); targetoptionVo.setScriptid(script.getScriptid()); List<SvyLibTemplateTargetoption> targetoptions = svyLibTemplateTargetoptionService.selectSvyLibTemplateTargetoptionList(targetoptionVo); if(ObjectUtils.isNotEmpty(targetoptions)){ //填入空白信息 targetoptions.forEach(targetoption ->{ ServiceSubtaskScriptCount emptyCount = new ServiceSubtaskScriptCount(); emptyCount.setScriptid(count.getScriptid()); emptyCount.setScriptContent(count.getScriptContent()); emptyCount.setScriptType(count.getScriptType()); emptyCount.setSubtaskType(count.getSubtaskType()); emptyCount.setCompletedQuantity(count.getCompletedQuantity()); emptyCount.setAllQuantity(count.getAllQuantity()); emptyCount.setCompletedPercentage(count.getCompletedPercentage()); emptyCount.setTemplateid(count.getTemplateid()); emptyCount.setChosenQuantity(0); emptyCount.setChosenPercentage("0.0"); emptyCount.setOptionText(targetoption.getOptioncontent()); itemCountMap.put(targetoption.getOptioncontent(),emptyCount); }); } } } itemCounts.forEach(itemCount ->{ if(ObjectUtils.isNotEmpty(count.getScriptid()) && ObjectUtils.isNotEmpty(itemCount.getScriptid())){ if(count.getScriptid().equals(itemCount.getScriptid())){ //放入统计信息 itemCount.setScriptContent(count.getScriptContent()); itemCount.setScriptType(count.getScriptType()); itemCount.setSubtaskType(count.getSubtaskType()); itemCount.setCompletedQuantity(count.getCompletedQuantity()); itemCount.setAllQuantity(count.getAllQuantity()); itemCount.setCompletedPercentage(count.getCompletedPercentage()); itemCount.setTemplateid(count.getTemplateid()); //计算选择比例 int chosenQuantity = ObjectUtils.isNotEmpty(itemCount.getChosenQuantity())?itemCount.getChosenQuantity():0; int completedQuantity = itemCount.getCompletedQuantity(); if(ObjectUtils.isNotEmpty(completedQuantity) && completedQuantity != 0){ BigDecimal chosenPercentage = (new BigDecimal(chosenQuantity)).divide(new BigDecimal(completedQuantity), 2, RoundingMode.HALF_UP); itemCount.setChosenPercentage(chosenPercentage.toString()); } itemCountMap.put(itemCount.getOptionText(), itemCount); } } }); List<ServiceSubtaskScriptCount> details = new ArrayList<>(itemCountMap.values()); count.setDetails(details); result.put(scriptid, count); } } return result; } } smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -1013,7 +1013,7 @@ where 1=1 and del_flag = 0 and service_type=2 and is_visit_again = 0 and is_visit_again = 2 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
@@ -418,7 +418,7 @@ FROM service_subtask_detail JOIN service_task ON service_task.taskid = service_subtask_detail.taskid JOIN ivr_liba_target ON ivr_liba_target.id = service_subtask_detail.targetid JOIN ivr_liba_target ON ivr_liba_target.id = service_subtask_detail.targetid WHERE targetid = #{targetid} GROUP BY service_task.taskid, smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -1452,6 +1452,10 @@ <if test="configValue != null and configValue != ''"> AND ssd.categoryid IN (${configValue}) </if> <!-- 适用单条查询 --> <if test="scriptids != null"> AND ssd.scriptid in (${scriptids}) </if> group by ssd.scriptid) b ON a.id = b.scriptid </select>