Commit a9b851b0 authored by gaozhaochen's avatar gaozhaochen

add: 统计智能导诊使用详情

parent e7b4a1b2
......@@ -32,6 +32,11 @@ public class SysUserBase extends Model<SysUserBase> {
@ApiModelProperty(value = "用户id")
private Long id;
/**
* 公众号appId
*/
private String appId;
private String openId;
/**
......
......@@ -108,6 +108,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
*/
private UserInfo getByXszyWoa(String[] infoArray) {
String source = infoArray[0];
String appId = infoArray[1];
String token = infoArray[2];
String hospitalCode = infoArray[3];
......@@ -143,6 +144,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
user.setStatus(Constant.BYTE_NO);
user.setPasswd(ENCODER.encode(Constant.DEFAULT_PASSWORD));
user.setPhone(xszyUserInfo.getMobile());
user.setAppId(appId);
this.save(user);
}
......
package cn.sh.stc.sict.theme.hphy.controller.web;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum;
import cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo;
import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo;
import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo;
import cn.sh.stc.sict.cloud.common.core.util.NumberUtil;
import cn.sh.stc.sict.cloud.common.core.util.R;
import cn.sh.stc.sict.cloud.common.core.util.SsbUtil;
import cn.sh.stc.sict.cloud.common.security.util.SecurityUtils;
import cn.sh.stc.sict.theme.hphy.constant.PatientConstant;
import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase;
import cn.sh.stc.sict.theme.hphy.service.HpStatisticsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 黄埔医导统计
*
* @author gao
* @date 2023/01/06 10:43
*/
@Api(value = "[黄浦]统计使用情况", tags = "[黄浦]统计使用情况")
@RestController
@RequestMapping("hpStatistics")
@AllArgsConstructor
@Slf4j
public class HpStatisticsController {
private final HpStatisticsService hpStatisticsService;
@ApiOperation("统计用户使用情况")
@GetMapping("/usage-overview")
public R statisticsUsage(@RequestParam("startTime") String startTime,
@RequestParam("endTime") String endTime) {
log.error("统计用户使用情况:startTime = {}, token = {}", startTime, endTime);
return new R(hpStatisticsService.getUsageOverviewStatistics(startTime, endTime));
}
}
package cn.sh.stc.sict.theme.hphy.dao;
import cn.sh.stc.sict.theme.hphy.vo.StatisticsUsageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author gao
* @date 2023/01/06 11:09
*/
@Mapper
public interface HpStatisticsMapper {
/**
* 按时间统计各医院预约人数
*
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
List<StatisticsUsageVO.HosUsageStatistics> queryAppointmentUserGroupByHos(@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
* 统计新增用户
*
* @param startTime
* @param endTime
* @return
*/
Long countNewUser(@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
* 统计登录用户
*
* @param startTime
* @param endTime
* @return
*/
Long countLoginUser(@Param("startTime") String startTime,
@Param("endTime") String endTime);
}
package cn.sh.stc.sict.theme.hphy.service;
import cn.sh.stc.sict.theme.hphy.vo.StatisticsUsageVO;
/**
* @author gao
* @date 2023/01/06 11:03
*/
public interface HpStatisticsService {
/**
* 获取使用情况概览统计信息
*
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
StatisticsUsageVO getUsageOverviewStatistics(String startTime,
String endTime);
}
package cn.sh.stc.sict.theme.hphy.service.impl;
import cn.sh.stc.sict.theme.hphy.dao.HpAppointmentMapper;
import cn.sh.stc.sict.theme.hphy.dao.HpStatisticsMapper;
import cn.sh.stc.sict.theme.hphy.dao.HphyPatientBaseMapper;
import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase;
import cn.sh.stc.sict.theme.hphy.service.HpStatisticsService;
import cn.sh.stc.sict.theme.hphy.vo.StatisticsUsageVO;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* 黄埔医导用户使用情况查询
*
* @author gao
* @date 2023/01/06 11:04
*/
@Service("hpStatisticsService")
@AllArgsConstructor
public class HpStatisticsServiceImpl implements HpStatisticsService {
@Autowired
private final HpStatisticsMapper hpStatisticsMapper;
@Autowired
private final HpAppointmentMapper hpAppointmentMapper;
/**
* 获取使用情况概览统计信息
*
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
@Override
public StatisticsUsageVO getUsageOverviewStatistics(String startTime, String endTime) {
Long loginUserCount = hpStatisticsMapper.countLoginUser(startTime, endTime);
Long newUserCount = hpStatisticsMapper.countNewUser(startTime, endTime);
List<StatisticsUsageVO.HosUsageStatistics> hosUsageStatisticsList = hpStatisticsMapper.queryAppointmentUserGroupByHos(startTime, endTime);
return StatisticsUsageVO.builder().newUserCount(newUserCount).loginUserCount(loginUserCount).hosAppointmentStatistics(hosUsageStatisticsList).build();
}
}
package cn.sh.stc.sict.theme.hphy.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.io.Serializable;
import java.util.List;
/**
* 统计用户使用详情
*
* @author gao
* @date 2023/01/06 10:58
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class StatisticsUsageVO implements Serializable {
private static final long serialVersionUID = -279866011612238581L;
@ApiModelProperty(value = "登录总人数")
private Long loginUserCount;
@ApiModelProperty(value = "新增用户总人数")
private Long newUserCount;
@ApiModelProperty(value = "医院预约人数")
private List<HosUsageStatistics> hosAppointmentStatistics;
@Data
public static class HosUsageStatistics implements Serializable {
private static final long serialVersionUID = -1088663393589514198L;
@ApiModelProperty(value = "医院编码")
private String hospitalCode;
@ApiModelProperty(value = "医院名称")
private String hospitalName;
@ApiModelProperty(value = "医院预约人数")
private Long appointmentUserCount;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.sh.stc.sict.theme.hphy.dao.HpStatisticsMapper">
<resultMap type="cn.sh.stc.sict.theme.hphy.vo.StatisticsUsageVO$HosUsageStatistics" id="AppointmentHosCountMap">
<result property="appointmentUserCount" column="appointment_count" jdbcType="INTEGER"/>
<result property="hospitalCode" column="hos_org_code" jdbcType="VARCHAR"/>
<result property="hospitalName" column="hos_name" jdbcType="VARCHAR"/>
</resultMap>
<select id="queryAppointmentUserGroupByHos" resultMap="AppointmentHosCountMap">
SELECT
c.appointment_count,
c.hos_org_code,
h.hos_name
FROM (
SELECT count(1) AS appointment_count, hos_org_code
FROM `hp_appointment`
<where>
<if test="startTime != null and startTime != '' ">
AND create_time >= #{startTime}
</if>
<if test="endTime != null and endTime != '' ">
AND create_time &lt;= #{endTime}
</if>
</where>
GROUP BY hos_org_code
) c
LEFT JOIN hp_hos_info h ON c.hos_org_code = h.hos_org_code
</select>
<select id="countNewUser" resultType="java.lang.Long">
SELECT count(1)
FROM hp_user_base
<where>
<if test="startTime != null and startTime != '' ">
AND create_time >= #{startTime}
</if>
<if test="endTime != null and endTime != '' ">
AND create_time &lt;= #{endTime}
</if>
</where>
</select>
<select id="countLoginUser" resultType="java.lang.Long">
SELECT
count( DISTINCT create_by )
FROM
`sys_log`
<where>
<if test="startTime != null and startTime != '' ">
AND create_time >= #{startTime}
</if>
<if test="endTime != null and endTime != '' ">
AND create_time &lt;= #{endTime}
</if>
AND `title` LIKE '%用户登录%'
AND `exception` = ''
</where>
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment