Browse Source

湘雅全院临床质控使用统计

chengyao 3 years ago
parent
commit
9b04c766c6

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -264,6 +264,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/medCheckInfo/addMedCheckInfo").permitAll()
                 .antMatchers("/qc/medCheckInfo/getDataEdit").permitAll()
                 .antMatchers("/qc/medCheckInfo/saveDataEdit").permitAll()
+                .antMatchers("/qc/analysis/getQcClick").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -308,6 +308,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/medCheckInfo/addMedCheckInfo", request)
                 || matchers("/qc/dataEdit/getDataEdit", request)
                 || matchers("/qc/dataEdit/saveDataEdit", request)
+                || matchers("/qc/analysis/getQcClick", request)
                 || matchers("/", request)) {
             return true;
         }

+ 33 - 0
src/main/java/com/diagbot/dto/GetQcClickDTO.java

@@ -0,0 +1,33 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Description:
+ * @author: cy
+ * @time: 2020/9/4 14:59
+ */
+@Getter
+@Setter
+public class GetQcClickDTO implements Serializable {
+    /**
+     * 科室名称
+     */
+    private String deptName;
+
+    /**
+     * 科室id
+     */
+    private String deptId;
+
+    /**
+     * 点击次数
+     */
+    private Integer clickNum;
+}

+ 63 - 0
src/main/java/com/diagbot/facade/DataAnalysisFacade.java

@@ -0,0 +1,63 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.GetQcClickDTO;
+import com.diagbot.service.impl.MedClickInfoServiceImpl;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.GetQcClickVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+import java.util.List;
+
+
+/**
+ * @Description:数据分析
+ * @Author: cy
+ * @time: 2021/11/16 18:28
+ */
+@Component
+public class DataAnalysisFacade {
+    @Autowired
+    @Qualifier("medClickInfoServiceImpl")
+    private MedClickInfoServiceImpl medClickInfoService;
+
+    public List<GetQcClickDTO> getQcClick(GetQcClickVO getQcClickVO) {
+        getQcClickVO.setHospitalId(Long.valueOf(SysUserUtils.getCurrentHospitalID()));
+        List<GetQcClickDTO> records = medClickInfoService.getBaseMapper().getQcClick(getQcClickVO);
+        //没有科室过滤时增加全院数据
+        if (StringUtil.isBlank(getQcClickVO.getDeptName()) || getQcClickVO.getDeptName().equals("全院")) {
+            GetQcClickDTO item = getGlobleTitle(records);
+            if (item != null) {
+                records.add(0, item);
+            }
+        }
+        return records;
+    }
+
+    /**
+     * 增加全院记录
+     *
+     * @param records
+     * @return
+     */
+    public GetQcClickDTO getGlobleTitle(List<GetQcClickDTO> records) {
+        GetQcClickDTO item = new GetQcClickDTO();
+        if (ListUtil.isEmpty(records)) {
+            return null;
+        }
+
+        //缺陷总数
+        Integer clickTol = records
+                .stream()
+                .map(GetQcClickDTO::getClickNum)
+                .reduce(0, Integer::sum);
+        if (clickTol == null) {
+            clickTol = 0;
+        }
+        item.setDeptName("全院");
+        item.setClickNum(clickTol);
+        return item;
+    }
+}

+ 5 - 1
src/main/java/com/diagbot/mapper/MedClickInfoMapper.java

@@ -1,7 +1,11 @@
 package com.diagbot.mapper;
 
+import com.diagbot.dto.GetQcClickDTO;
 import com.diagbot.entity.MedClickInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.GetQcClickVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2021-11-10
  */
 public interface MedClickInfoMapper extends BaseMapper<MedClickInfo> {
-
+    public List<GetQcClickDTO> getQcClick(GetQcClickVO getQcClickVO);
 }

+ 56 - 0
src/main/java/com/diagbot/vo/GetQcClickVO.java

@@ -0,0 +1,56 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: cy
+ * @time: 2020/9/4 14:59
+ */
+@Getter
+@Setter
+public class GetQcClickVO{
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+
+    /**
+     * 科室名称
+     */
+    private String deptName;
+
+    /**
+     * 科室id
+     */
+    private String deptId;
+
+    /**
+     * 排序(升序)
+     */
+    private String asc;
+
+    /**
+     * 排序(降序)
+     */
+    private String desc;
+
+
+    @NotNull(message = "请输入起始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd  HH:mm:ss")
+    private String startDate;
+    @DateTimeFormat(pattern = "yyyy-MM-dd  HH:mm:ss")
+    @NotNull(message = "请输入截止时间")
+    private String endDate;
+
+}

+ 42 - 0
src/main/java/com/diagbot/web/DataAnalysisController.java

@@ -0,0 +1,42 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GetQcClickDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.DataAnalysisFacade;
+import com.diagbot.vo.GetQcClickVO;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @Description:数据分析
+ * @Author: cy
+ * @time: 2021/11/16 18:28
+ */
+@RestController
+@RequestMapping("/qc/analysis")
+public class DataAnalysisController {
+
+    @Autowired
+    DataAnalysisFacade dataAnalysisFacade;
+
+    /**
+     * 临床质控使用统计
+     *
+     * @param getQcClickVO
+     * @return
+     */
+    @ApiOperation(value = "临床质控使用统计[by:cy]")
+    @PostMapping("/getQcClick")
+    @SysLogger("getQcClick")
+    public RespDTO<List<GetQcClickDTO>> getQcClick(@RequestBody @Valid GetQcClickVO getQcClickVO) {
+        return RespDTO.onSuc(dataAnalysisFacade.getQcClick(getQcClickVO));
+    }
+}

+ 55 - 13
src/main/resources/mapper/MedClickInfoMapper.xml

@@ -4,19 +4,61 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.MedClickInfo">
-        <id column="id" property="id" />
-        <result column="hospital_id" property="hospitalId" />
-        <result column="dept_id" property="deptId" />
-        <result column="dept_name" property="deptName" />
-        <result column="doctor_id" property="doctorId" />
-        <result column="doctor_name" property="doctorName" />
-        <result column="qcresult_info_id" property="qcresultInfoId" />
-        <result column="behospital_code" property="behospitalCode" />
-        <result column="is_deleted" property="isDeleted" />
-        <result column="gmt_create" property="gmtCreate" />
-        <result column="gmt_modified" property="gmtModified" />
-        <result column="creator" property="creator" />
-        <result column="modifier" property="modifier" />
+        <id column="id" property="id"/>
+        <result column="hospital_id" property="hospitalId"/>
+        <result column="dept_id" property="deptId"/>
+        <result column="dept_name" property="deptName"/>
+        <result column="doctor_id" property="doctorId"/>
+        <result column="doctor_name" property="doctorName"/>
+        <result column="qcresult_info_id" property="qcresultInfoId"/>
+        <result column="behospital_code" property="behospitalCode"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
     </resultMap>
 
+    <select id="getQcClick" resultType="com.diagbot.dto.GetQcClickDTO">
+        select
+        t.deptId,
+        t.deptName,
+        t.clickNum
+        from(
+        SELECT
+        a.dept_id as deptId,
+        a.dept_name as deptName,
+        count(*) as clickNum
+        FROM
+        med_click_info a
+        where
+        a.is_deleted = 'N'
+        <if test="hospitalId != null">
+            and a.hospital_id = #{hospitalId}
+        </if>
+        <if test="deptName != null and deptName != ''">
+            and a.dept_name like CONCAT('%',#{deptName},'%')
+        </if>
+        <if test="deptId != null and deptId != ''">
+            and a.dept_id= #{deptId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ and a.gmt_create >= #{startDate}]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[ and a.gmt_create < #{endDate}]]>
+        </if>
+        group by
+        a.dept_id,
+        a.dept_name
+        order by
+        a.dept_id,
+        a.dept_name)t
+        <if test="asc == 'clickNum'">
+            order by t.clickNum
+        </if>
+        <if test="desc =='clickNum'">
+            order by t.clickNum desc
+        </if>
+    </select>
 </mapper>