Commit 964266668b47e4b7dfe424dc3dd8150702b1a065

Authored by wangqian
1 parent eaed0fad

app首页修改

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&lt;DepartmentCostDO&gt; {
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&lt;DepartmentCostDO&gt; {
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 &lt;= #{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 &lt;= #{beginTime}
504 504 </if>
... ...