已修改10个文件
184 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTemplateScriptController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/CollectHISMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/resources/mapper/quartz/CollectHISMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/ISvyLibTemplateScriptService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateScriptServiceImpl.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>