Commit f4d685a4b657c6bc8a2e3dbc38cfc2245f32597c

Authored by wangqian
1 parent 2de14c23

app首页统计修改

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,14 +32,24 @@ public class TaskStatisticsDO extends BaseDO {
32 */ 32 */
33 private String busiDate; 33 private String busiDate;
34 /** 34 /**
  35 + * 业务线
  36 + */
  37 + private String busiLine;
  38 + /**
35 * 归属(一级部门id) 39 * 归属(一级部门id)
36 */ 40 */
37 - private Integer companyId; 41 + private Long companyId;
  42 +
  43 + private String companyName;
38 /** 44 /**
39 * 部门ID(道路负责部门id) 45 * 部门ID(道路负责部门id)
40 */ 46 */
41 private Long deptId; 47 private Long deptId;
42 /** 48 /**
  49 + * 角色
  50 + */
  51 + private String roleIds;
  52 + /**
43 * 用户id 53 * 用户id
44 */ 54 */
45 private Long userId; 55 private Long userId;
@@ -83,6 +93,7 @@ public class TaskStatisticsDO extends BaseDO { @@ -83,6 +93,7 @@ public class TaskStatisticsDO extends BaseDO {
83 * 工单未完成数 93 * 工单未完成数
84 */ 94 */
85 private Integer woUnfinished; 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,6 +10,7 @@ import com.zteits.urbanops.module.garden.controller.app.homepage.vo.CommonTaskSt
10 import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo; 10 import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskCompletionStatusRspVo;
11 import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo; 11 import com.zteits.urbanops.module.garden.controller.app.homepage.vo.TaskDetailsRspVo;
12 import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO; 12 import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO;
  13 +import com.zteits.urbanops.module.garden.dal.dataobject.taskstatistics.TaskStatisticsDO;
13 import org.apache.ibatis.annotations.Mapper; 14 import org.apache.ibatis.annotations.Mapper;
14 import org.apache.ibatis.annotations.Param; 15 import org.apache.ibatis.annotations.Param;
15 16
@@ -199,5 +200,10 @@ public interface HomepageSummaryMapper extends BaseMapperX<DepartmentCostDO> { @@ -199,5 +200,10 @@ public interface HomepageSummaryMapper extends BaseMapperX<DepartmentCostDO> {
199 * @Return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>> 200 * @Return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>>
200 */ 201 */
201 List<CommonTaskStatusVo> countWorkOrderCompleted(@Param("beginTime") String beginTime, @Param("endTime") String endTime); 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 package com.zteits.urbanops.module.garden.service.homepage; 1 package com.zteits.urbanops.module.garden.service.homepage;
2 2
  3 +import cn.hutool.core.bean.BeanUtil;
3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.core.metadata.IPage; 5 import com.baomidou.mybatisplus.core.metadata.IPage;
5 import com.esotericsoftware.minlog.Log; 6 import com.esotericsoftware.minlog.Log;
@@ -137,13 +138,14 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ @@ -137,13 +138,14 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{
137 if (StringUtils.isEmpty(busiDate)) { 138 if (StringUtils.isEmpty(busiDate)) {
138 busiDate = yesterday.format(formatter); 139 busiDate = yesterday.format(formatter);
139 } 140 }
  141 + List<TaskStatisticsDO> taskStatisticsList = initUserData(busiDate);
  142 +
140 String beginTime = busiDate + " 00:00:00"; 143 String beginTime = busiDate + " 00:00:00";
141 String endTime = busiDate + " 23:59:59"; 144 String endTime = busiDate + " 23:59:59";
142 Log.info("昨天开始时间:" + beginTime); 145 Log.info("昨天开始时间:" + beginTime);
143 Log.info("昨天结束时间:" + endTime); 146 Log.info("昨天结束时间:" + endTime);
144 //获取正常用户 147 //获取正常用户
145 - List<AdminUserRespDTO> userList = userApi.getUserList();  
146 - if (CollectionUtils.isEmpty(userList)){ 148 + if (CollectionUtils.isEmpty(taskStatisticsList)){
147 return; 149 return;
148 } 150 }
149 //巡查已完成 151 //巡查已完成
@@ -189,56 +191,26 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ @@ -189,56 +191,26 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{
189 (oldVo, newVo) -> newVo, 191 (oldVo, newVo) -> newVo,
190 HashMap::new 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 List<TaskStatisticsDO> taskStatisticsDOList = new ArrayList<>(); 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 TaskStatisticsDO statisticsDO = new TaskStatisticsDO(); 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 //2、查询巡查任务数量及已完成数量 214 //2、查询巡查任务数量及已完成数量
243 Integer inspTotalCount = 0; 215 Integer inspTotalCount = 0;
244 List<CommonTaskStatusVo> inspTotal = homepageSummaryMapper.countInspPendingTask(beginTime, endTime, deptId); 216 List<CommonTaskStatusVo> inspTotal = homepageSummaryMapper.countInspPendingTask(beginTime, endTime, deptId);
@@ -251,7 +223,7 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ @@ -251,7 +223,7 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{
251 (oldVo, newVo) -> newVo, 223 (oldVo, newVo) -> newVo,
252 HashMap::new 224 HashMap::new
253 )); 225 ));
254 - for (Long role : roles) { 226 + for (String role : roles) {
255 CommonTaskStatusVo countVo = inspTotalMap.get(role); 227 CommonTaskStatusVo countVo = inspTotalMap.get(role);
256 if (null != countVo) { 228 if (null != countVo) {
257 inspTotalCount = countVo.getTotalCount(); 229 inspTotalCount = countVo.getTotalCount();
@@ -277,7 +249,7 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ @@ -277,7 +249,7 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{
277 HashMap::new 249 HashMap::new
278 )); 250 ));
279 //3、查询养护计划任务数量 251 //3、查询养护计划任务数量
280 - for (Long role : roles) { 252 + for (String role : roles) {
281 CommonTaskStatusVo countVo = mtTotalMap.get(role); 253 CommonTaskStatusVo countVo = mtTotalMap.get(role);
282 if (null != countVo) { 254 if (null != countVo) {
283 mtTotalCount = countVo.getTotalCount(); 255 mtTotalCount = countVo.getTotalCount();
@@ -293,12 +265,12 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ @@ -293,12 +265,12 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{
293 265
294 //4、工单任务数量 266 //4、工单任务数量
295 Integer woCompCount = Optional.ofNullable(woCompletedMap) 267 Integer woCompCount = Optional.ofNullable(woCompletedMap)
296 - .map(map -> map.get(userId)) 268 + .flatMap(map -> Optional.ofNullable(map.get(userId)))
297 .map(CommonTaskStatusVo::getTotalCount) 269 .map(CommonTaskStatusVo::getTotalCount)
298 .orElse(0); 270 .orElse(0);
299 statisticsDO.setWoCompleted(woCompCount); 271 statisticsDO.setWoCompleted(woCompCount);
300 Integer woUnfiCount = Optional.ofNullable(woPendingMap) 272 Integer woUnfiCount = Optional.ofNullable(woPendingMap)
301 - .map(map -> map.get(userId)) 273 + .flatMap(map -> Optional.ofNullable(map.get(userId)))
302 .map(CommonTaskStatusVo::getTotalCount) 274 .map(CommonTaskStatusVo::getTotalCount)
303 .orElse(0); 275 .orElse(0);
304 statisticsDO.setWoUnfinished(woUnfiCount); 276 statisticsDO.setWoUnfinished(woUnfiCount);
@@ -315,6 +287,20 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{ @@ -315,6 +287,20 @@ public class HomepageSummaryServiceImpl implements HomepageSummaryService{
315 //批量保存 287 //批量保存
316 taskStatisticsMapper.insertBatch(taskStatisticsDOList); 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 private List<TaskCompletionStatusRspVo> addTaskDefaultData(List<String> days){ 305 private List<TaskCompletionStatusRspVo> addTaskDefaultData(List<String> days){
320 List<TaskCompletionStatusRspVo> newList = new ArrayList<>(); 306 List<TaskCompletionStatusRspVo> newList = new ArrayList<>();
urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml
@@ -559,4 +559,33 @@ @@ -559,4 +559,33 @@
559 ) t 559 ) t
560 group by t.userId 560 group by t.userId
561 </select> 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 </mapper> 591 </mapper>