ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -10,6 +10,7 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUserDept; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.redis.RedisCache; @@ -24,6 +25,7 @@ import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserDeptService; import com.smartor.domain.*; import com.smartor.domain.VO.ServiceSubtaskVO; import com.smartor.domain.entity.ServiceSubtaskEntity; @@ -32,6 +34,7 @@ import com.smartor.service.IServiceSubtaskRecordService; import com.smartor.service.IServiceSubtaskService; import com.smartor.service.IServiceTaskService; import com.smartor.service.impl.ServiceSubtaskServiceImpl; import com.sun.org.apache.bcel.internal.generic.NEW; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -71,6 +74,9 @@ @Autowired private IServiceTaskService serviceTaskService; @Autowired private ISysUserDeptService sysUserDeptService; @Autowired private IServiceSubtaskRecordService serviceSubtaskRecordService; @@ -651,4 +657,45 @@ return map; } /** * 统计任务各种状态的数量(优化版) * @return Map<String, Object> 包含各状态统计数据 * pendingVisitCount: 当前登录人截止今日待随访总量 * failedVisitCount: 当前登录人随访任务失败总量 * abnormalVisitVount: 当前登录人随访任务异常总量 * allVisitCount: 当前登录人随访任务总量 */ @ApiOperation("获取当前用户随访数量统计") @PostMapping("/getCurrentUserServiceSubtaskCount") public Map<String, Object> getCurrentUserServiceSubtaskCount() { Map<String, Object> map = new HashMap<>(); LoginUser loginUser = getLoginUser(); SysUser sysUser = loginUser.getUser(); SysUserDept sysUserDept = new SysUserDept(); sysUserDept.setUserId(sysUser.getUserId()); sysUserDept.setOrgid(sysUser.getOrgid()); sysUserDept.setDeptType("1"); List<SysUserDept> sysUserDepts = sysUserDeptService.selectSysUserDeptList(sysUserDept); SysUserDept sysUserWard = new SysUserDept(); sysUserWard.setUserId(sysUser.getUserId()); sysUserWard.setOrgid(sysUser.getOrgid()); sysUserWard.setDeptType("2"); List<SysUserDept> sysUserWards = sysUserDeptService.selectSysUserDeptList(sysUserWard); List<String> deptCodes = sysUserDepts.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList()); List<String> wardCodes = sysUserWards.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList()); ServiceSubtaskEntity entity = new ServiceSubtaskEntity(); entity.setOrgid(sysUser.getOrgid()); entity.setLeaveldeptcodes(deptCodes); entity.setLeavehospitaldistrictcodes(wardCodes); if(ObjectUtils.isNotEmpty(sysUser)){ if(!("admin").equals(sysUser.getUserName())){ if(ObjectUtils.isNotEmpty(sysUserWards) && ObjectUtils.isNotEmpty(sysUserDepts)){ map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity); } }else { map = serviceSubtaskService.getCurrentUserServiceSubtaskCount(entity); } } return map; } } ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -39,7 +39,7 @@ */ public SysDept selectDeptById(Long deptId); public SysDept selectDeptByCode(@Param("orgid") String orgid, @Param("deptCode") String deptCode); public SysDept selectDeptByCode(@Param("deptType") String deptType, @Param("orgid") String orgid, @Param("deptCode") String deptCode); /** * 根据ID查询所有子部门 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -564,7 +564,7 @@ // } if (!CollectionUtils.isEmpty(user.getDeptCodes())) { for (String deptCode : user.getDeptCodes()) { SysDept sysDept = sysDeptMapper.selectDeptByCode(user.getOrgid(), deptCode); SysDept sysDept = sysDeptMapper.selectDeptByCode("1", user.getOrgid(), deptCode); if (ObjectUtils.isEmpty(sysDept)) { continue; } @@ -590,7 +590,7 @@ } if (!CollectionUtils.isEmpty(user.getWardCodes())) { for (String wardCode : user.getWardCodes()) { SysDept sysDept = sysDeptMapper.selectDeptByCode(user.getOrgid(), wardCode); SysDept sysDept = sysDeptMapper.selectDeptByCode("2", user.getOrgid(), wardCode); if (ObjectUtils.isEmpty(sysDept)) { continue; } @@ -673,7 +673,7 @@ // } if (!CollectionUtils.isEmpty(user.getDeptCodes())) { for (String deptCode : user.getDeptCodes()) { SysDept sysDept = sysDeptMapper.selectDeptByCode(user.getOrgid(), deptCode); SysDept sysDept = sysDeptMapper.selectDeptByCode("1", user.getOrgid(), deptCode); if (ObjectUtils.isEmpty(sysDept)) { continue; } @@ -699,7 +699,7 @@ } if (!CollectionUtils.isEmpty(user.getWardCodes())) { for (String wardCode : user.getWardCodes()) { SysDept sysDept = sysDeptMapper.selectDeptByCode(user.getOrgid(), wardCode); SysDept sysDept = sysDeptMapper.selectDeptByCode("2", user.getOrgid(), wardCode); if (ObjectUtils.isEmpty(sysDept)) { continue; } ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -144,6 +144,9 @@ <if test="orgid != null and orgid != ''"> and d.orgid = #{orgid} </if> <if test="deptType != null and deptType != ''"> and d.dept_type = #{deptType} </if> limit 1 </select> smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -526,7 +526,7 @@ /** * 长期任务,给患者发送的时间 * 长期任务,给患者发送的时间 弃用 */ @Excel(name = " 长期任务,给患者发送的时间") @ApiModelProperty(value = "长期任务,给患者发送的时间") smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -166,4 +166,14 @@ */ public Map<String, Object> countByCondition(ServiceSubtaskEntity serviceSubtaskVO); /** * 统计任务各种状态的数量(优化版) * @param serviceSubtaskVO 查询条件 * @return Map<String, Object> 包含各状态统计数据 * pendingVisitCount: 当前登录人截止今日待随访总量 * failedVisitCount: 当前登录人随访任务失败总量 * abnormalVisitVount: 当前登录人随访任务异常总量 * allVisitCount: 当前登录人随访任务总量 */ public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity serviceSubtaskVO); } smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -147,4 +147,6 @@ public List<PatArchiveSrmVO> sendMsgTemplate(List<PatArchiveSrmVO> patArchiveSrmVOS); public List<ServiceSubtaskDiagname> convertToDiagnameList(List<ServiceSubtask> subtaskList) ; public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity); } smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -189,7 +189,6 @@ @Override public Boolean addUserDeptInfo(Map dataMap) { //todo log.info("ServiceExternalServiceImpl---addUserDeptInfo的新增的值为:{}", dataMap); Map yeWuXX = (Map) dataMap.get("YeWuXX"); Map<String, Object> keShiYH = (Map<String, Object>) yeWuXX.get("KeShiYH"); smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -3543,4 +3543,7 @@ }).collect(Collectors.toList()); } public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity){ return serviceSubtaskMapper.getCurrentUserServiceSubtaskCount(entity); } } smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -318,10 +318,10 @@ AND date_format(endtime,'%y%m%d') <= date_format(#{endOutHospTime},'%y%m%d') </if> <if test="startSendDateTime != null"> AND date_format(long_send_time,'%y%m%d') >= date_format(#{startSendDateTime},'%y%m%d') AND date_format(visit_time,'%y%m%d') >= date_format(#{startSendDateTime},'%y%m%d') </if> <if test="endSendDateTime != null"> AND date_format(long_send_time,'%y%m%d') <= date_format(#{endSendDateTime},'%y%m%d') AND date_format(visit_time,'%y%m%d') <= date_format(#{endSendDateTime},'%y%m%d') </if> <if test="longSendTime != null"> @@ -2205,10 +2205,10 @@ AND DATE_FORMAT(endtime,'%y%m%d') <= DATE_FORMAT(#{endOutHospTime},'%y%m%d') </if> <if test="startSendDateTime != null"> AND DATE_FORMAT(long_send_time,'%y%m%d') >= DATE_FORMAT(#{startSendDateTime},'%y%m%d') AND DATE_FORMAT(visit_time,'%y%m%d') >= DATE_FORMAT(#{startSendDateTime},'%y%m%d') </if> <if test="endSendDateTime != null"> AND DATE_FORMAT(long_send_time,'%y%m%d') <= DATE_FORMAT(#{endSendDateTime},'%y%m%d') AND DATE_FORMAT(visit_time,'%y%m%d') <= DATE_FORMAT(#{endSendDateTime},'%y%m%d') </if> <if test="longSendTime != null"> AND DATE_FORMAT(long_send_time,'%y%m%d') <= DATE_FORMAT(#{longSendTime},'%y%m%d') @@ -2257,4 +2257,35 @@ </if> </select> <select id="getCurrentUserServiceSubtaskCount" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity" resultType="map"> SELECT COUNT(CASE WHEN sendstate IN (1, 2) AND date_format(visit_time,'%y%m%d') <= date_format(CURDATE(),'%y%m%d') THEN 1 END) AS pendingVisitCount, COUNT(CASE WHEN sendstate = 5 THEN 1 END) AS failedVisitCount, SUM(CASE WHEN excep IS NOT NULL AND excep = '1' THEN 1 ELSE 0 END) AS abnormalVisitCount, SUM(CASE WHEN excep IS NOT NULL AND excep = '2' THEN 1 ELSE 0 END) AS warnningVisitCount, COUNT(*) AS allVisitCount FROM service_subtask WHERE del_flag = '0' AND service_type = '2' AND visit_count = 1 <if test="orgid != null and orgid != ''"> AND orgid = #{orgid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," close=")"> #{leavehospitaldistrictcode} </foreach> </if> <if test=" leaveldeptcodes != null and leaveldeptcodes.size()>0"> AND deptcode IN <foreach collection="leaveldeptcodes" item="leaveldeptcode" open="(" separator="," close=")"> #{leaveldeptcode} </foreach> </if> </select> </mapper> smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml
@@ -84,6 +84,9 @@ <if test="hisParentId != null and hisParentId != ''"> AND his_parent_id = #{hisParentId} </if> <if test="orgid != null and orgid != ''"> AND orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> AND campusid = #{campusid} </if>