Commit f4d685a4b657c6bc8a2e3dbc38cfc2245f32597c
1 parent
2de14c23
app首页统计修改
Showing
4 changed files
with
87 additions
and
55 deletions
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/dataobject/taskstatistics/TaskStatisticsDO.java
| ... | ... | @@ -32,14 +32,24 @@ public class TaskStatisticsDO extends BaseDO { |
| 32 | 32 | */ |
| 33 | 33 | private String busiDate; |
| 34 | 34 | /** |
| 35 | + * 业务线 | |
| 36 | + */ | |
| 37 | + private String busiLine; | |
| 38 | + /** | |
| 35 | 39 | * 归属(一级部门id) |
| 36 | 40 | */ |
| 37 | - private Integer companyId; | |
| 41 | + private Long companyId; | |
| 42 | + | |
| 43 | + private String companyName; | |
| 38 | 44 | /** |
| 39 | 45 | * 部门ID(道路负责部门id) |
| 40 | 46 | */ |
| 41 | 47 | private Long deptId; |
| 42 | 48 | /** |
| 49 | + * 角色 | |
| 50 | + */ | |
| 51 | + private String roleIds; | |
| 52 | + /** | |
| 43 | 53 | * 用户id |
| 44 | 54 | */ |
| 45 | 55 | private Long userId; |
| ... | ... | @@ -83,6 +93,7 @@ public class TaskStatisticsDO extends BaseDO { |
| 83 | 93 | * 工单未完成数 |
| 84 | 94 | */ |
| 85 | 95 | private Integer woUnfinished; |
| 96 | + | |
| 86 | 97 | /** |
| 87 | 98 | * 备注 |
| 88 | 99 | */ | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java
| ... | ... | @@ -10,6 +10,7 @@ import com.zteits.urbanops.module.garden.controller.app.homepage.vo.CommonTaskSt |
| 10 | 10 | import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo; |
| 11 | 11 | import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo; |
| 12 | 12 | import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO; |
| 13 | +import com.zteits.urbanops.module.garden.dal.dataobject.taskstatistics.TaskStatisticsDO; | |
| 13 | 14 | import org.apache.ibatis.annotations.Mapper; |
| 14 | 15 | import org.apache.ibatis.annotations.Param; |
| 15 | 16 | |
| ... | ... | @@ -199,5 +200,10 @@ public interface HomepageSummaryMapper extends BaseMapperX<DepartmentCostDO> { |
| 199 | 200 | * @Return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>> |
| 200 | 201 | */ |
| 201 | 202 | List<CommonTaskStatusVo> countWorkOrderCompleted(@Param("beginTime") String beginTime, @Param("endTime") String endTime); |
| 202 | - | |
| 203 | + /** | |
| 204 | + * @Author wangqian | |
| 205 | + * @Description 获取用户初始化数据 | |
| 206 | + * @Date 2026/1/12 0:45 | |
| 207 | + */ | |
| 208 | + List<TaskStatisticsDO> getUserAll(@Param("busiDate") String busiDate); | |
| 203 | 209 | } | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java
| 1 | 1 | package com.zteits.urbanops.module.garden.service.homepage; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.bean.BeanUtil; | |
| 3 | 4 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 4 | 5 | import com.baomidou.mybatisplus.core.metadata.IPage; |
| 5 | 6 | import com.esotericsoftware.minlog.Log; |
| ... | ... | @@ -137,13 +138,14 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 137 | 138 | if (StringUtils.isEmpty(busiDate)) { |
| 138 | 139 | busiDate = yesterday.format(formatter); |
| 139 | 140 | } |
| 141 | + List<TaskStatisticsDO> taskStatisticsList = initUserData(busiDate); | |
| 142 | + | |
| 140 | 143 | String beginTime = busiDate + " 00:00:00"; |
| 141 | 144 | String endTime = busiDate + " 23:59:59"; |
| 142 | 145 | Log.info("昨天开始时间:" + beginTime); |
| 143 | 146 | Log.info("昨天结束时间:" + endTime); |
| 144 | 147 | //获取正常用户 |
| 145 | - List<AdminUserRespDTO> userList = userApi.getUserList(); | |
| 146 | - if (CollectionUtils.isEmpty(userList)){ | |
| 148 | + if (CollectionUtils.isEmpty(taskStatisticsList)){ | |
| 147 | 149 | return; |
| 148 | 150 | } |
| 149 | 151 | //巡查已完成 |
| ... | ... | @@ -189,56 +191,26 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 189 | 191 | (oldVo, newVo) -> newVo, |
| 190 | 192 | HashMap::new |
| 191 | 193 | )); |
| 192 | -// //巡查计划数 | |
| 193 | -// List<CommonTaskStatusVo> inspTotal = homepageSummaryMapper.countInspPendingTask(beginTime, endTime); | |
| 194 | -// Map<Long, CommonTaskStatusVo> inspTotalMap = inspTotal.stream() | |
| 195 | -// .filter(vo -> Objects.nonNull(vo)) | |
| 196 | -// .collect(Collectors.toMap( | |
| 197 | -// // Map的key:从VO中提取Long类型的roleId(核心修正点) | |
| 198 | -// CommonTaskStatusVo::getRoleId, | |
| 199 | -// vo -> vo, | |
| 200 | -// (oldVo, newVo) -> newVo, | |
| 201 | -// HashMap::new | |
| 202 | -// )); | |
| 203 | -// //养护计划数量 | |
| 204 | -// List<CommonTaskStatusVo> mtTotal = homepageSummaryMapper.countMtPendingTask(beginTime, endTime); | |
| 205 | -// Map<Long, CommonTaskStatusVo> mtTotalMap = mtTotal.stream() | |
| 206 | -// .filter(vo -> Objects.nonNull(vo)) | |
| 207 | -// .collect(Collectors.toMap( | |
| 208 | -// // Map的key:从VO中提取Long类型的roleId(核心修正点) | |
| 209 | -// CommonTaskStatusVo::getRoleId, | |
| 210 | -// vo -> vo, | |
| 211 | -// (oldVo, newVo) -> newVo, | |
| 212 | -// HashMap::new | |
| 213 | -// )); | |
| 194 | + | |
| 214 | 195 | List<TaskStatisticsDO> taskStatisticsDOList = new ArrayList<>(); |
| 215 | 196 | //根据用户查询任务数量 |
| 216 | - for (AdminUserRespDTO adminUserRespDTO : userList) { | |
| 217 | - Long userId = adminUserRespDTO.getId(); | |
| 218 | - Long deptId = adminUserRespDTO.getDeptId(); | |
| 219 | - List<Long> roles = roleApi.getRoleIdsByUserId(userId); | |
| 220 | - if (CollectionUtils.isEmpty(roles)) { | |
| 221 | - continue; | |
| 222 | - } | |
| 223 | - if (roles.contains(1L)) {//超级管理员 | |
| 224 | - continue; | |
| 225 | - } | |
| 226 | - if (roles.contains(2L)) {//普通角色 | |
| 227 | - continue; | |
| 228 | - } | |
| 229 | - if (roles.contains(159L)) {//管理员 | |
| 230 | - continue; | |
| 231 | - } | |
| 232 | - if (roles.contains(168L)) {//子公司管理员 | |
| 233 | - continue; | |
| 234 | - } | |
| 235 | - //deptApi.get | |
| 197 | + for (TaskStatisticsDO statisticsVo : taskStatisticsList) { | |
| 198 | + Long userId = statisticsVo.getUserId(); | |
| 199 | + Long deptId = statisticsVo.getDeptId(); | |
| 200 | + String[] roles = statisticsVo.getRoleIds().split(","); | |
| 236 | 201 | TaskStatisticsDO statisticsDO = new TaskStatisticsDO(); |
| 237 | - statisticsDO.setBusiDate(busiDate); | |
| 238 | - statisticsDO.setUserId(userId); | |
| 239 | - statisticsDO.setUserName(adminUserRespDTO.getNickname()); | |
| 240 | - //statisticsDO.setCompanyId(); | |
| 241 | - statisticsDO.setDeptId(adminUserRespDTO.getDeptId()); | |
| 202 | + BeanUtil.copyProperties(statisticsVo, statisticsDO); | |
| 203 | + //初始化参数 | |
| 204 | + statisticsDO.setInspTotal(0); | |
| 205 | + statisticsDO.setInspUnfinished(0); | |
| 206 | + statisticsDO.setInspCompleted(0); | |
| 207 | + statisticsDO.setMtTotal(0); | |
| 208 | + statisticsDO.setMtCompleted(0); | |
| 209 | + statisticsDO.setMtUnfinished(0); | |
| 210 | + statisticsDO.setWoTotal(0); | |
| 211 | + statisticsDO.setWoCompleted(0); | |
| 212 | + statisticsDO.setWoUnfinished(0); | |
| 213 | + | |
| 242 | 214 | //2、查询巡查任务数量及已完成数量 |
| 243 | 215 | Integer inspTotalCount = 0; |
| 244 | 216 | List<CommonTaskStatusVo> inspTotal = homepageSummaryMapper.countInspPendingTask(beginTime, endTime, deptId); |
| ... | ... | @@ -251,7 +223,7 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 251 | 223 | (oldVo, newVo) -> newVo, |
| 252 | 224 | HashMap::new |
| 253 | 225 | )); |
| 254 | - for (Long role : roles) { | |
| 226 | + for (String role : roles) { | |
| 255 | 227 | CommonTaskStatusVo countVo = inspTotalMap.get(role); |
| 256 | 228 | if (null != countVo) { |
| 257 | 229 | inspTotalCount = countVo.getTotalCount(); |
| ... | ... | @@ -277,7 +249,7 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 277 | 249 | HashMap::new |
| 278 | 250 | )); |
| 279 | 251 | //3、查询养护计划任务数量 |
| 280 | - for (Long role : roles) { | |
| 252 | + for (String role : roles) { | |
| 281 | 253 | CommonTaskStatusVo countVo = mtTotalMap.get(role); |
| 282 | 254 | if (null != countVo) { |
| 283 | 255 | mtTotalCount = countVo.getTotalCount(); |
| ... | ... | @@ -293,12 +265,12 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 293 | 265 | |
| 294 | 266 | //4、工单任务数量 |
| 295 | 267 | Integer woCompCount = Optional.ofNullable(woCompletedMap) |
| 296 | - .map(map -> map.get(userId)) | |
| 268 | + .flatMap(map -> Optional.ofNullable(map.get(userId))) | |
| 297 | 269 | .map(CommonTaskStatusVo::getTotalCount) |
| 298 | 270 | .orElse(0); |
| 299 | 271 | statisticsDO.setWoCompleted(woCompCount); |
| 300 | 272 | Integer woUnfiCount = Optional.ofNullable(woPendingMap) |
| 301 | - .map(map -> map.get(userId)) | |
| 273 | + .flatMap(map -> Optional.ofNullable(map.get(userId))) | |
| 302 | 274 | .map(CommonTaskStatusVo::getTotalCount) |
| 303 | 275 | .orElse(0); |
| 304 | 276 | statisticsDO.setWoUnfinished(woUnfiCount); |
| ... | ... | @@ -315,6 +287,20 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 315 | 287 | //批量保存 |
| 316 | 288 | taskStatisticsMapper.insertBatch(taskStatisticsDOList); |
| 317 | 289 | } |
| 290 | + /** | |
| 291 | + * @Author wangqian | |
| 292 | + * @Description 初始化对象集合 | |
| 293 | + * @Date 2026/1/11 23:55 | |
| 294 | + */ | |
| 295 | + private List<TaskStatisticsDO> initUserData(String busiDate) { | |
| 296 | + List<TaskStatisticsDO> taskStatisticsList = new ArrayList<>(); | |
| 297 | + //获取正常用户 | |
| 298 | + List<TaskStatisticsDO> userList = homepageSummaryMapper.getUserAll(busiDate); | |
| 299 | + if (CollectionUtils.isEmpty(userList)){ | |
| 300 | + return taskStatisticsList; | |
| 301 | + } | |
| 302 | + return userList; | |
| 303 | + } | |
| 318 | 304 | |
| 319 | 305 | private List<TaskCompletionStatusRspVo> addTaskDefaultData(List<String> days){ |
| 320 | 306 | List<TaskCompletionStatusRspVo> newList = new ArrayList<>(); | ... | ... |
urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml
| ... | ... | @@ -559,4 +559,33 @@ |
| 559 | 559 | ) t |
| 560 | 560 | group by t.userId |
| 561 | 561 | </select> |
| 562 | + | |
| 563 | + <!--获取用户信息--> | |
| 564 | + <select id="getUserAll" resultType="com.zteits.urbanops.module.garden.dal.dataobject.taskstatistics.TaskStatisticsDO" > | |
| 565 | + WITH RECURSIVE dept_recursive AS ( | |
| 566 | + -- 基准层:二级公司(parent_id='100') | |
| 567 | + SELECT id, name, parent_id, id as companyId, name as companyName | |
| 568 | + FROM system_dept | |
| 569 | + WHERE parent_id = '100' | |
| 570 | + UNION ALL | |
| 571 | + -- 递归层:子部门关联上级,继承二级公司信息 | |
| 572 | + SELECT d.id, d.name, d.parent_id, dr.companyId, dr.companyName | |
| 573 | + FROM system_dept d | |
| 574 | + INNER JOIN dept_recursive dr ON d.parent_id = dr.id | |
| 575 | + ) | |
| 576 | + -- 关联用户表查询 | |
| 577 | + SELECT | |
| 578 | + #{busiDate} as busiDate, | |
| 579 | + u.busi_line as busiLine, | |
| 580 | + u.dept_id as deptId, | |
| 581 | + dr.companyId, -- 二级归属公司ID | |
| 582 | + dr.companyName, -- 二级归属公司名称 | |
| 583 | + GROUP_CONCAT(r.role_id SEPARATOR ',') AS roleIds, | |
| 584 | + u.id as userId, | |
| 585 | + u.nickname as username | |
| 586 | + FROM system_users u | |
| 587 | + INNER JOIN system_user_role r ON u.id = r.user_id | |
| 588 | + INNER JOIN dept_recursive dr ON u.dept_id = dr.id | |
| 589 | + GROUP BY u.id, u.nickname, u.dept_id, u.busi_line, dr.companyId, dr.companyName; | |
| 590 | + </select> | |
| 562 | 591 | </mapper> | ... | ... |