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 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>
... ...