Commit 964266668b47e4b7dfe424dc3dd8150702b1a065
1 parent
eaed0fad
app首页修改
Showing
4 changed files
with
148 additions
and
47 deletions
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/homepage/AppHomepageSummaryController.java
| ... | ... | @@ -45,7 +45,7 @@ public class AppHomepageSummaryController { |
| 45 | 45 | return success(homepageSummaryService.queryTaskDetails(req)); |
| 46 | 46 | } |
| 47 | 47 | @GetMapping("/countTask") |
| 48 | - @Operation(summary = "任务待办已办") | |
| 48 | + @Operation(summary = "定时统计任务信息") | |
| 49 | 49 | @PermitAll |
| 50 | 50 | public void countTaskNumberByUserId(String busiDate) { |
| 51 | 51 | homepageSummaryService.countTaskNumberByUserId(busiDate); | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java
| ... | ... | @@ -137,7 +137,7 @@ public interface HomepageSummaryMapper extends BaseMapperX<DepartmentCostDO> { |
| 137 | 137 | * @param userId |
| 138 | 138 | * @Return com.baomidou.mybatisplus.core.metadata.IPage<com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo> |
| 139 | 139 | */ |
| 140 | - IPage<TaskDetailsRspVo> queryPendingTaskDetails(IPage<TaskDetailsRspVo> page, @Param("roleIds") List<Long> roleIds, @Param("userId") Long userId); | |
| 140 | + IPage<TaskDetailsRspVo> queryPendingTaskDetails(IPage<TaskDetailsRspVo> page, @Param("roleIds") List<Long> roleIds, @Param("userId") Long userId, @Param("deptId") Long deptId); | |
| 141 | 141 | |
| 142 | 142 | /** |
| 143 | 143 | * @Author wangqian |
| ... | ... | @@ -168,7 +168,7 @@ public interface HomepageSummaryMapper extends BaseMapperX<DepartmentCostDO> { |
| 168 | 168 | * @param endTime |
| 169 | 169 | * @Return java.util.List<com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo> |
| 170 | 170 | */ |
| 171 | - List<CommonTaskStatusVo> countInspPendingTask(@Param("beginTime") String beginTime, @Param("endTime") String endTime); | |
| 171 | + List<CommonTaskStatusVo> countInspPendingTask(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("deptId") Long deptId); | |
| 172 | 172 | /** |
| 173 | 173 | * @Author wangqian |
| 174 | 174 | * @Description 养护数量 |
| ... | ... | @@ -178,7 +178,7 @@ public interface HomepageSummaryMapper extends BaseMapperX<DepartmentCostDO> { |
| 178 | 178 | * @param endTime |
| 179 | 179 | * @Return java.util.List<com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo> |
| 180 | 180 | */ |
| 181 | - List<CommonTaskStatusVo> countMtPendingTask(@Param("beginTime") String beginTime, @Param("endTime") String endTime); | |
| 181 | + List<CommonTaskStatusVo> countMtPendingTask(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("deptId") Long deptId); | |
| 182 | 182 | |
| 183 | 183 | /** |
| 184 | 184 | * @Author wangqian | ... | ... |
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/HomepageSummaryServiceImpl.java
| ... | ... | @@ -60,7 +60,11 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 60 | 60 | @Override |
| 61 | 61 | public List<TaskCompletionStatusRspVo> taskCompletionSummary(AppHomePageSummaryReqVO req) { |
| 62 | 62 | Long userId = SecurityFrameworkUtils.getLoginUserId(); |
| 63 | - List<TaskCompletionStatusRspVo> respVo = new ArrayList<>(); | |
| 63 | + //巡查任务和养护任务已完成,未完成数量统计 | |
| 64 | + //返回数据初始化 | |
| 65 | + List<String> days = getDays(req.getBeginTime(), req.getEndTime()); | |
| 66 | + List<TaskCompletionStatusRspVo> respVo = addTaskDefaultData(days); | |
| 67 | + | |
| 64 | 68 | // 优化后的完整代码(含空值判断、泛型指定) |
| 65 | 69 | LambdaQueryWrapper<TaskStatisticsDO> queryWrapper = new LambdaQueryWrapper<>(); |
| 66 | 70 | queryWrapper.eq(TaskStatisticsDO::getUserId, userId); |
| ... | ... | @@ -68,14 +72,32 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 68 | 72 | queryWrapper.eq(TaskStatisticsDO::getDeleted, 0); |
| 69 | 73 | List<TaskStatisticsDO> taskStatisticsDOList = taskStatisticsMapper.selectList(queryWrapper); |
| 70 | 74 | if (CollectionUtils.isNotEmpty(taskStatisticsDOList)) { |
| 75 | + Map<String, TaskStatisticsDO> countpendingMap = taskStatisticsDOList.stream() | |
| 76 | + .filter(doObj -> Objects.nonNull(doObj) && Objects.nonNull(doObj.getBusiDate())) | |
| 77 | + .collect(Collectors.toMap( | |
| 78 | + TaskStatisticsDO::getBusiDate, | |
| 79 | + // Map的value:DO对象本身 | |
| 80 | + doObj -> doObj, | |
| 81 | + // 重复key(同一日期)的处理策略:用新值覆盖旧值(可根据业务调整为合并) | |
| 82 | + (oldDo, newDo) -> newDo, | |
| 83 | + // 指定Map实现类为HashMap(显式指定更可控) | |
| 84 | + HashMap::new | |
| 85 | + )); | |
| 71 | 86 | //1、日期赋值 |
| 72 | - taskStatisticsDOList.forEach(dayVo->{ | |
| 73 | - TaskCompletionStatusRspVo vo = new TaskCompletionStatusRspVo(); | |
| 74 | - vo.setCommitDate(dayVo.getBusiDate()); | |
| 75 | - vo.setCurrentDate(dayVo.getBusiDate().substring(5).replace("-",".")); | |
| 76 | - vo.setCompletedNum(dayVo.getMtTotal() + dayVo.getInspTotal() + dayVo.getWoTotal()); | |
| 77 | - vo.setCountpendingNum(dayVo.getMtUnfinished() + dayVo.getInspUnfinished() +dayVo.getWoUnfinished()); | |
| 78 | - respVo.add(vo); | |
| 87 | + respVo.forEach(vo -> { | |
| 88 | + TaskStatisticsDO dayVo = countpendingMap.get(vo.getCommitDate()); | |
| 89 | + if (dayVo != null) { | |
| 90 | + Integer mtTotal = Objects.isNull(dayVo.getMtTotal()) ? 0 : dayVo.getMtTotal(); | |
| 91 | + Integer inspTotal = Objects.isNull(dayVo.getInspTotal()) ? 0 : dayVo.getInspTotal(); | |
| 92 | + Integer woTotal = Objects.isNull(dayVo.getWoTotal()) ? 0 : dayVo.getWoTotal(); | |
| 93 | + | |
| 94 | + Integer mtUnfinished = Objects.isNull(dayVo.getMtUnfinished()) ? 0 : dayVo.getMtUnfinished(); | |
| 95 | + Integer inspUnfinished = Objects.isNull(dayVo.getInspUnfinished()) ? 0 : dayVo.getInspUnfinished(); | |
| 96 | + Integer woUnfinished = Objects.isNull(dayVo.getWoUnfinished()) ? 0 : dayVo.getWoUnfinished(); | |
| 97 | + // 计算赋值 | |
| 98 | + vo.setCompletedNum(mtTotal + inspTotal + woTotal); | |
| 99 | + vo.setCountpendingNum(mtUnfinished + inspUnfinished + woUnfinished); | |
| 100 | + } | |
| 79 | 101 | }); |
| 80 | 102 | } |
| 81 | 103 | return respVo; |
| ... | ... | @@ -90,8 +112,9 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 90 | 112 | mpPage = homepageSummaryMapper.queryCompletedTaskDetails(mpPage,userId); |
| 91 | 113 | } else { |
| 92 | 114 | //待办 |
| 115 | + Long deptId = SecurityFrameworkUtils.getDeptId(); | |
| 93 | 116 | List<Long> roleIds = roleApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId()); |
| 94 | - mpPage = homepageSummaryMapper.queryPendingTaskDetails(mpPage,roleIds, userId); | |
| 117 | + mpPage = homepageSummaryMapper.queryPendingTaskDetails(mpPage, roleIds, userId, deptId); | |
| 95 | 118 | } |
| 96 | 119 | return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); |
| 97 | 120 | } |
| ... | ... | @@ -166,46 +189,47 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 166 | 189 | (oldVo, newVo) -> newVo, |
| 167 | 190 | HashMap::new |
| 168 | 191 | )); |
| 169 | - //巡查计划数 | |
| 170 | - List<CommonTaskStatusVo> inspTotal = homepageSummaryMapper.countInspPendingTask(beginTime, endTime); | |
| 171 | - Map<Long, CommonTaskStatusVo> inspTotalMap = inspTotal.stream() | |
| 172 | - .filter(vo -> Objects.nonNull(vo)) | |
| 173 | - .collect(Collectors.toMap( | |
| 174 | - // Map的key:从VO中提取Long类型的roleId(核心修正点) | |
| 175 | - CommonTaskStatusVo::getRoleId, | |
| 176 | - vo -> vo, | |
| 177 | - (oldVo, newVo) -> newVo, | |
| 178 | - HashMap::new | |
| 179 | - )); | |
| 180 | - //养护计划数量 | |
| 181 | - List<CommonTaskStatusVo> mtTotal = homepageSummaryMapper.countMtPendingTask(beginTime, endTime); | |
| 182 | - Map<Long, CommonTaskStatusVo> mtTotalMap = mtTotal.stream() | |
| 183 | - .filter(vo -> Objects.nonNull(vo)) | |
| 184 | - .collect(Collectors.toMap( | |
| 185 | - // Map的key:从VO中提取Long类型的roleId(核心修正点) | |
| 186 | - CommonTaskStatusVo::getRoleId, | |
| 187 | - vo -> vo, | |
| 188 | - (oldVo, newVo) -> newVo, | |
| 189 | - HashMap::new | |
| 190 | - )); | |
| 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 | +// )); | |
| 191 | 214 | List<TaskStatisticsDO> taskStatisticsDOList = new ArrayList<>(); |
| 192 | 215 | //根据用户查询任务数量 |
| 193 | 216 | for (AdminUserRespDTO adminUserRespDTO : userList) { |
| 194 | 217 | Long userId = adminUserRespDTO.getId(); |
| 218 | + Long deptId = adminUserRespDTO.getDeptId(); | |
| 195 | 219 | List<Long> roles = roleApi.getRoleIdsByUserId(userId); |
| 196 | 220 | if (CollectionUtils.isEmpty(roles)) { |
| 197 | 221 | continue; |
| 198 | 222 | } |
| 199 | - if (roles.contains(1L)) { | |
| 223 | + if (roles.contains(1L)) {//超级管理员 | |
| 200 | 224 | continue; |
| 201 | 225 | } |
| 202 | - if (roles.contains(2L)) { | |
| 226 | + if (roles.contains(2L)) {//普通角色 | |
| 203 | 227 | continue; |
| 204 | 228 | } |
| 205 | - if (roles.contains(159L)) { | |
| 229 | + if (roles.contains(159L)) {//管理员 | |
| 206 | 230 | continue; |
| 207 | 231 | } |
| 208 | - if (roles.contains(168L)) { | |
| 232 | + if (roles.contains(168L)) {//子公司管理员 | |
| 209 | 233 | continue; |
| 210 | 234 | } |
| 211 | 235 | //deptApi.get |
| ... | ... | @@ -217,17 +241,41 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 217 | 241 | statisticsDO.setDeptId(adminUserRespDTO.getDeptId()); |
| 218 | 242 | //2、查询巡查任务数量及已完成数量 |
| 219 | 243 | Integer inspTotalCount = 0; |
| 244 | + List<CommonTaskStatusVo> inspTotal = homepageSummaryMapper.countInspPendingTask(beginTime, endTime, deptId); | |
| 245 | + Map<Long, CommonTaskStatusVo> inspTotalMap = inspTotal.stream() | |
| 246 | + .filter(vo -> Objects.nonNull(vo)) | |
| 247 | + .collect(Collectors.toMap( | |
| 248 | + // Map的key:从VO中提取Long类型的roleId(核心修正点) | |
| 249 | + CommonTaskStatusVo::getRoleId, | |
| 250 | + vo -> vo, | |
| 251 | + (oldVo, newVo) -> newVo, | |
| 252 | + HashMap::new | |
| 253 | + )); | |
| 220 | 254 | for (Long role : roles) { |
| 221 | 255 | CommonTaskStatusVo countVo = inspTotalMap.get(role); |
| 222 | 256 | if (null != countVo) { |
| 223 | 257 | inspTotalCount = countVo.getTotalCount(); |
| 224 | 258 | } |
| 225 | 259 | } |
| 226 | - statisticsDO.setInspCompleted(inspCompMap.get(userId) == null? 0: inspCompMap.get(userId).getTotalCount()); | |
| 260 | + Integer inspCompCount = Optional.ofNullable(inspCompMap) | |
| 261 | + .map(map -> map.get(userId)) | |
| 262 | + .map(CommonTaskStatusVo::getTotalCount) | |
| 263 | + .orElse(0); | |
| 264 | + statisticsDO.setInspCompleted(inspCompCount); | |
| 227 | 265 | statisticsDO.setInspUnfinished(inspTotalCount); |
| 228 | 266 | statisticsDO.setInspTotal(statisticsDO.getInspUnfinished() + statisticsDO.getInspCompleted()); |
| 229 | 267 | |
| 230 | 268 | Integer mtTotalCount = 0; |
| 269 | + List<CommonTaskStatusVo> mtTotal = homepageSummaryMapper.countMtPendingTask(beginTime, endTime, deptId); | |
| 270 | + Map<Long, CommonTaskStatusVo> mtTotalMap = mtTotal.stream() | |
| 271 | + .filter(vo -> Objects.nonNull(vo)) | |
| 272 | + .collect(Collectors.toMap( | |
| 273 | + // Map的key:从VO中提取Long类型的roleId(核心修正点) | |
| 274 | + CommonTaskStatusVo::getRoleId, | |
| 275 | + vo -> vo, | |
| 276 | + (oldVo, newVo) -> newVo, | |
| 277 | + HashMap::new | |
| 278 | + )); | |
| 231 | 279 | //3、查询养护计划任务数量 |
| 232 | 280 | for (Long role : roles) { |
| 233 | 281 | CommonTaskStatusVo countVo = mtTotalMap.get(role); |
| ... | ... | @@ -236,12 +284,24 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 236 | 284 | } |
| 237 | 285 | } |
| 238 | 286 | statisticsDO.setMtUnfinished(mtTotalCount); |
| 239 | - statisticsDO.setMtCompleted(mtCmpMap.get(userId) == null ? 0 : mtCmpMap.get(userId).getTotalCount()); | |
| 287 | + Integer mtComppCount = Optional.ofNullable(mtCmpMap) | |
| 288 | + .map(map -> map.get(userId)) | |
| 289 | + .map(CommonTaskStatusVo::getTotalCount) | |
| 290 | + .orElse(0); | |
| 291 | + statisticsDO.setMtCompleted(mtComppCount); | |
| 240 | 292 | statisticsDO.setMtTotal(statisticsDO.getMtUnfinished() + statisticsDO.getMtCompleted()); |
| 241 | 293 | |
| 242 | 294 | //4、工单任务数量 |
| 243 | - statisticsDO.setWoCompleted(woCompletedMap.get(userId) == null ? 0 : woCompletedMap.get(userId).getTotalCount()); | |
| 244 | - statisticsDO.setWoUnfinished(woPendingMap.get(userId) == null ? 0: woPendingMap.get(userId).getTotalCount()); | |
| 295 | + Integer woCompCount = Optional.ofNullable(woCompletedMap) | |
| 296 | + .map(map -> map.get(userId)) | |
| 297 | + .map(CommonTaskStatusVo::getTotalCount) | |
| 298 | + .orElse(0); | |
| 299 | + statisticsDO.setWoCompleted(woCompCount); | |
| 300 | + Integer woUnfiCount = Optional.ofNullable(woPendingMap) | |
| 301 | + .map(map -> map.get(userId)) | |
| 302 | + .map(CommonTaskStatusVo::getTotalCount) | |
| 303 | + .orElse(0); | |
| 304 | + statisticsDO.setWoUnfinished(woUnfiCount); | |
| 245 | 305 | statisticsDO.setWoTotal(statisticsDO.getWoCompleted() + statisticsDO.getWoUnfinished()); |
| 246 | 306 | |
| 247 | 307 | statisticsDO.setCreator("1"); |
| ... | ... | @@ -255,4 +315,45 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ |
| 255 | 315 | //批量保存 |
| 256 | 316 | taskStatisticsMapper.insertBatch(taskStatisticsDOList); |
| 257 | 317 | } |
| 318 | + | |
| 319 | + private List<TaskCompletionStatusRspVo> addTaskDefaultData(List<String> days){ | |
| 320 | + List<TaskCompletionStatusRspVo> newList = new ArrayList<>(); | |
| 321 | + //1、日期赋值 | |
| 322 | + days.forEach(dayy->{ | |
| 323 | + TaskCompletionStatusRspVo vo = new TaskCompletionStatusRspVo(); | |
| 324 | + vo.setCommitDate(dayy); | |
| 325 | + vo.setCurrentDate(dayy.substring(5).replace("-",".")); | |
| 326 | + vo.setCompletedNum(0); | |
| 327 | + vo.setCountpendingNum(0); | |
| 328 | + newList.add(vo); | |
| 329 | + }); | |
| 330 | + return newList; | |
| 331 | + } | |
| 332 | + public static List<String> getDays(String startTime, String endTime) { | |
| 333 | + | |
| 334 | + // 返回的日期集合 | |
| 335 | + List<String> days = new ArrayList<String>(); | |
| 336 | + | |
| 337 | + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); | |
| 338 | + try { | |
| 339 | + Date start = dateFormat.parse(startTime); | |
| 340 | + Date end = dateFormat.parse(endTime); | |
| 341 | + | |
| 342 | + Calendar tempStart = Calendar.getInstance(); | |
| 343 | + tempStart.setTime(start); | |
| 344 | + | |
| 345 | + Calendar tempEnd = Calendar.getInstance(); | |
| 346 | + tempEnd.setTime(end); | |
| 347 | + tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束) | |
| 348 | + while (tempStart.before(tempEnd)) { | |
| 349 | + days.add(dateFormat.format(tempStart.getTime())); | |
| 350 | + tempStart.add(Calendar.DAY_OF_YEAR, 1); | |
| 351 | + } | |
| 352 | + | |
| 353 | + } catch (ParseException e) { | |
| 354 | + e.printStackTrace(); | |
| 355 | + } | |
| 356 | + | |
| 357 | + return days; | |
| 358 | + } | |
| 258 | 359 | } | ... | ... |
urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml
| ... | ... | @@ -417,7 +417,7 @@ |
| 417 | 417 | SELECT a.plan_name as taskName,a.begin_time as busiDateTime,null as pressingType |
| 418 | 418 | from garden_inspection_plan a |
| 419 | 419 | INNER JOIN garden_inspection_plan_role b on a.batch_no=b.batch_no |
| 420 | - where a.finish_state in(1,3) | |
| 420 | + where a.finish_state in(1,3) and a.dept_id = #{deptId} | |
| 421 | 421 | AND b.role_id IN |
| 422 | 422 | <foreach collection='roleIds' item='roleId' open='(' close=')' separator=','> |
| 423 | 423 | #{roleId} |
| ... | ... | @@ -426,7 +426,7 @@ |
| 426 | 426 | SELECT a.plan_name as taskName,a.begin_time as busiDateTime, null as pressingType |
| 427 | 427 | from garden_maintain_plan a |
| 428 | 428 | INNER JOIN garden_maintain_plan_role b on a.batch_no=b.batch_no |
| 429 | - where a.finish_state in(1,3) | |
| 429 | + where a.finish_state in(1,3) and a.dept_id = #{deptId} | |
| 430 | 430 | AND b.role_id IN |
| 431 | 431 | <foreach collection='roleIds' item='roleId' open='(' close=')' separator=','> |
| 432 | 432 | #{roleId} |
| ... | ... | @@ -481,7 +481,7 @@ |
| 481 | 481 | FROM |
| 482 | 482 | garden_maintain_plan_detail a |
| 483 | 483 | INNER JOIN garden_maintain_plan_role b ON a.batch_no = b.batch_no |
| 484 | - WHERE a.finish_state IN (1, 3) -- 1:未完成;3:已过期 | |
| 484 | + WHERE a.finish_state IN (1, 3) and a.dept_id = #{deptId} -- 1:未完成;3:已过期 | |
| 485 | 485 | <if test="beginTime != null and beginTime != ''"> |
| 486 | 486 | AND a.begin_time <= #{beginTime} |
| 487 | 487 | </if> |
| ... | ... | @@ -498,7 +498,7 @@ |
| 498 | 498 | FROM |
| 499 | 499 | garden_inspection_plan_detail a |
| 500 | 500 | INNER JOIN garden_inspection_plan_role b ON a.batch_no = b.batch_no |
| 501 | - WHERE a.finish_state IN (1, 3) -- 1:未完成;3:已过期 | |
| 501 | + WHERE a.finish_state IN (1, 3) and a.dept_id = #{deptId} -- 1:未完成;3:已过期 | |
| 502 | 502 | <if test="beginTime != null and beginTime != ''"> |
| 503 | 503 | AND a.begin_time <= #{beginTime} |
| 504 | 504 | </if> | ... | ... |