From b4059112f69b869dd60d42c686c272539fad810f Mon Sep 17 00:00:00 2001 From: wangqian <1406304305@qq.com> Date: Sun, 4 Jan 2026 20:25:08 +0800 Subject: [PATCH] 子公司工单分布按来源统计 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/MaintainSummaryController.java | 7 +++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/vo/CommitWorkOrderSourceRespVo.java | 30 ++++++++++++++++++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java | 8 ++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryService.java | 9 +++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml | 32 ++++++++++++++++++++++++++++++++ 6 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/vo/CommitWorkOrderSourceRespVo.java diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/MaintainSummaryController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/MaintainSummaryController.java index 62d8428..a3cd1c0 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/MaintainSummaryController.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/MaintainSummaryController.java @@ -2,6 +2,7 @@ package com.zteits.urbanops.module.garden.controller.admin.homepage; import com.zteits.urbanops.framework.common.pojo.CommonResult; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderRespVo; +import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderSourceRespVo; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.HomePageSummaryReqVO; import com.zteits.urbanops.module.garden.service.homepage.MaintainSummaryService; import io.swagger.v3.oas.annotations.Operation; @@ -48,6 +49,12 @@ public class MaintainSummaryController { public CommonResult> getWorkOrderDistribution(@Valid @RequestBody HomePageSummaryReqVO req) { return success(maintainSummaryService.getWorkOrderDistribution(req)); } + + @PostMapping("/getWorkOrderDistributionBySource") + @Operation(summary = "子公司工单分布") + public CommonResult> getWorkOrderDistributionBySource(@Valid @RequestBody HomePageSummaryReqVO req) { + return success(maintainSummaryService.getWorkOrderDistributionBySource(req)); + } @PostMapping("/getWorkOrderHeatmap") @Operation(summary = "工单热力图") public CommonResult>> getWorkOrderHeatmap() { diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/vo/CommitWorkOrderSourceRespVo.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/vo/CommitWorkOrderSourceRespVo.java new file mode 100644 index 0000000..4ca6a70 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/admin/homepage/vo/CommitWorkOrderSourceRespVo.java @@ -0,0 +1,30 @@ +package com.zteits.urbanops.module.garden.controller.admin.homepage.vo; + +import lombok.Data; + +/** + * @Classname CommitWorkOrderRespVo + * @Description 子公司分布返回 + * @Date 2025/12/30 22:01 + * @Created by wangqian + */ +@Data +public class CommitWorkOrderSourceRespVo { + + private Long companyId; + + private String companyName; + //巡查 + private Integer patrolCount; + // + private Integer touristResidentCount; + //12345 + private Integer otherCount; + //网格 + private Integer gridCount; + //大区经理 + private Integer regionalManagerCount; + //ai + private Integer aiCount; + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java index 60b0dce..8d90e62 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/homepage/HomepageSummaryMapper.java @@ -3,6 +3,7 @@ package com.zteits.urbanops.module.garden.dal.mysql.homepage; import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitTaskStatisticsRespVo; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderRespVo; +import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderSourceRespVo; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.WorkOrderTrendRespVo; import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO; import org.apache.ibatis.annotations.Mapper; @@ -77,6 +78,13 @@ public interface HomepageSummaryMapper extends BaseMapperX { List countWorkOrderDistribution(@Param("companyId") Long companyId, @Param("beginTime") String beginTime, @Param("endTime") String endTime); /** * @Author wangqian + * @Description 公司+问题来源 + * @Date 2025/12/30 21:52 + */ + List countWorkOrderDistributionBySource(@Param("companyId") Long companyId, @Param("beginTime") String beginTime, @Param("endTime") String endTime); + + /** + * @Author wangqian * @Description 热力图 * @Date 2025/12/31 14:29 */ diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryService.java index f0ab4f6..95ccd8b 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryService.java @@ -1,6 +1,7 @@ package com.zteits.urbanops.module.garden.service.homepage; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderRespVo; +import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderSourceRespVo; import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.HomePageSummaryReqVO; import java.util.List; @@ -37,6 +38,14 @@ public interface MaintainSummaryService { * @Param req */ Map getWorkOrderDistribution(HomePageSummaryReqVO req); + + /** + * @Author wangqian + * @Description 按公司、问题来源统计 + * @Date 2025/12/30 21:50 + * @Param req + */ + Map getWorkOrderDistributionBySource(HomePageSummaryReqVO req); /** * @Author wangqian * @Description 工单热量图 diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java index 279c0fc..4f03c92 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/homepage/MaintainSummaryServiceImpl.java @@ -5,10 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.zteits.urbanops.framework.common.biz.system.dict.dto.DictDataRespDTO; import com.zteits.urbanops.framework.common.util.object.BeanUtils; import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; -import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitTaskStatisticsRespVo; -import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.CommitWorkOrderRespVo; -import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.HomePageSummaryReqVO; -import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.WorkOrderTrendRespVo; +import com.zteits.urbanops.module.garden.controller.admin.homepage.vo.*; import com.zteits.urbanops.module.garden.dal.mysql.homepage.HomepageSummaryMapper; import com.zteits.urbanops.module.garden.enums.CommonConstants; import com.zteits.urbanops.module.system.api.dept.DeptApi; @@ -345,6 +342,76 @@ public class MaintainSummaryServiceImpl implements MaintainSummaryService { return orderedMap; } + + @Override + public Map getWorkOrderDistributionBySource(HomePageSummaryReqVO req) { + Long companyId = SecurityFrameworkUtils.getLoginUserDeptId(); + if(null == companyId || companyId == 0L || companyId == 100L){ + companyId = null; + } + Map respMap = new HashMap<>(); + //初始化对象 + List respList = new ArrayList<>(); + List deptRespVOList = deptApi.getCompanyList(); + for (DeptRespVO deptRespVO : deptRespVOList) { + CommitWorkOrderSourceRespVo vo = new CommitWorkOrderSourceRespVo(); + vo.setCompanyId(deptRespVO.getId()); + vo.setCompanyName(deptRespVO.getName()); + vo.setPatrolCount(0); + vo.setTouristResidentCount(0); + vo.setGridCount(0); + vo.setOtherCount(0); + vo.setAiCount(0); + vo.setRegionalManagerCount(0); + respList.add(vo); + } + + List countList = homepageSummaryMapper.countWorkOrderDistributionBySource(companyId,req.getBeginTime(), req.getEndTime()); + Map companyIdMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(countList)) { + companyIdMap = countList.stream() + .collect(Collectors.toMap( + CommitWorkOrderSourceRespVo::getCompanyId, + item -> item, + (existing, newValue) -> existing + )); + } + for (CommitWorkOrderSourceRespVo respVo : respList) { + if (!companyIdMap.isEmpty()) { + CommitWorkOrderSourceRespVo vo = companyIdMap.get(respVo.getCompanyId()); + if(vo != null) { + respVo.setPatrolCount(vo.getPatrolCount()); + respVo.setTouristResidentCount(vo.getTouristResidentCount()); + respVo.setGridCount(vo.getGridCount()); + respVo.setAiCount(vo.getAiCount()); + respVo.setOtherCount(vo.getOtherCount()); + respVo.setRegionalManagerCount(vo.getRegionalManagerCount()); + } + } + } + // 排序 + String[] companyNames = {"蓟城广安", "蓟城德胜", "西城园林", "三海投资", "绿美园林"}; + Map companyIndexMap = new HashMap<>(); + for (int i = 0; i < companyNames.length; i++) { + companyIndexMap.put(companyNames[i], i); + } + List sortedList = respList.stream() + // 过滤:仅保留companyNames中存在的单位 + .filter(item -> companyIndexMap.containsKey(item.getCompanyName())) + // 按预定义顺序排序 + .sorted(Comparator.comparing(item -> companyIndexMap.get(item.getCompanyName()))) + .collect(Collectors.toList()); + + Map orderedMap = sortedList.stream() + .collect(Collectors.toMap( + CommitWorkOrderSourceRespVo::getCompanyName, + Function.identity(), + (existing, replacement) -> existing, + LinkedHashMap::new + )); + + return orderedMap; + } /** * @Author wangqian * @Description 热力图 diff --git a/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml b/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml index a7168c6..0e74f1c 100644 --- a/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/homepage/HomepageSummaryMapper.xml @@ -205,6 +205,38 @@ GROUP BY t.worker_company_id +