Pārlūkot izejas kodu

实现从后端获取地图位置信息

jiawuxian 1 gadu atpakaļ
vecāks
revīzija
454c354c7a

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/controller/WebCockpitController.java

@@ -123,4 +123,13 @@ public class WebCockpitController extends BaseController {
     public AjaxResult question(TaskStatisticDto dto) {
         return success(cockpitService.question(dto));
     }
+
+    /**
+     * 机构地图
+     */
+    @ApiOperation(value = "机构地图")
+    @GetMapping("/map")
+    public AjaxResult map(Long orgId){
+        return success(cockpitService.map(orgId));
+    }
 }

+ 22 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/dto/web/OrgMapDto.java

@@ -0,0 +1,22 @@
+package com.xunmei.core.board.dto.web;
+
+import lombok.Data;
+
+@Data
+public class OrgMapDto {
+    private Long orgId;
+
+    private  String map;
+
+    /**
+     * 经度
+     */
+    private Double longitude;
+
+    /**
+     * 经度
+     */
+    private Double latitude;
+
+    private String orgName;
+}

+ 7 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/mapper/CockpitMapper.java

@@ -1,12 +1,11 @@
 package com.xunmei.core.board.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.xunmei.core.board.dto.app.AppSyntheticQuestionDto;
+import com.xunmei.core.board.dto.web.OrgMapDto;
 import com.xunmei.core.board.dto.web.WebGA38InfoDto;
 import com.xunmei.core.board.dto.web.WebSyntheticQuestionDto;
 import com.xunmei.core.board.vo.web.*;
 import org.apache.ibatis.annotations.Param;
-import org.omg.CORBA.INTERNAL;
 
 import java.util.List;
 import java.util.Date;
@@ -47,6 +46,12 @@ public interface CockpitMapper extends BaseMapper {
      */
     Map<String,Object> selectOverDueQuestionCount(@Param("orgPath") String orgPath, @Param("startDate") Date startDate,@Param("endDate") Date endDate);
 
+    /**
+     * 地图信息
+     * @param orgId
+     * @return
+     */
+    List<OrgMapDto> map(@Param("orgId") Long orgId);
 }
 
 

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/CockpitService.java

@@ -61,4 +61,6 @@ public interface CockpitService {
      * @param dto
      */
     QuestionStatisticVo question(TaskStatisticDto dto);
+
+    OrgMapInfoVo map(Long orgId);
 }

+ 28 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/CockpitServiceImpl.java

@@ -10,6 +10,7 @@ import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.NumberUtils;
 import com.xunmei.common.core.utils.StringUtils;
+import com.xunmei.core.board.dto.web.OrgMapDto;
 import com.xunmei.core.board.dto.web.TaskStatisticDto;
 import com.xunmei.core.board.dto.web.WebGA38InfoDto;
 import com.xunmei.core.board.dto.web.WebSyntheticQuestionDto;
@@ -25,7 +26,6 @@ import org.apache.http.annotation.Obsolete;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -89,10 +89,10 @@ public class CockpitServiceImpl implements CockpitService {
                             label = "专项检查";
                             break;
                         case "7":
-                            voOpt= list.stream().filter(i->ObjectUtil.isEmpty(i.getType())).findFirst();
-                            if(voOpt.isPresent()){
-                                vo.setTotal(vo.getTotal()+voOpt.get().getTotal());
-                                vo.setCompleted(vo.getCompleted()+voOpt.get().getCompleted());
+                            voOpt = list.stream().filter(i -> ObjectUtil.isEmpty(i.getType())).findFirst();
+                            if (voOpt.isPresent()) {
+                                vo.setTotal(vo.getTotal() + voOpt.get().getTotal());
+                                vo.setCompleted(vo.getCompleted() + voOpt.get().getCompleted());
                             }
                             label = "其它检查";
                             break;
@@ -247,7 +247,7 @@ public class CockpitServiceImpl implements CockpitService {
         SysOrg org = getOrgThrowIfNull(dto.getOrgId());
         DateRange range = getStartAndEnd(dto.getPeriod());
 
-        WebSyntheticQuestionDto questionDto = cockpitMapper.selectQuestion(org.getPath(), range.getStartTime(),range.getEndTime(),DateUtil.beginOfDay(new Date()));
+        WebSyntheticQuestionDto questionDto = cockpitMapper.selectQuestion(org.getPath(), range.getStartTime(), range.getEndTime(), DateUtil.beginOfDay(new Date()));
         if (ObjectUtil.isNull(questionDto)) {
             questionDto = new WebSyntheticQuestionDto();
         }
@@ -272,6 +272,28 @@ public class CockpitServiceImpl implements CockpitService {
         return vo;
     }
 
+    @Override
+    public OrgMapInfoVo map(Long orgId) {
+        List<OrgMapDto> orgMaps = cockpitMapper.map(orgId);
+        OrgMapInfoVo vo = new OrgMapInfoVo();
+        if (ObjectUtil.isEmpty(orgMaps)) {
+            return vo;
+        }
+
+        Optional<OrgMapDto> mapOption = orgMaps.stream().filter(o -> ObjectUtil.equal(orgId, o.getOrgId())).findFirst();
+        if(!mapOption.isPresent()){
+            return vo;
+        }
+
+        vo.setMap(mapOption.get().getMap());
+        List<OrgSiteInfo> sites= orgMaps.stream().filter(o->ObjectUtil.isNotNull(o.getLatitude()) && ObjectUtil.isNotNull(o.getLatitude()) )
+                .map(o->new OrgSiteInfo(o.getLongitude(),o.getLatitude(),o.getOrgName()))
+                .collect(Collectors.toList());
+        vo.setSites(sites);
+
+        return vo;
+    }
+
     private List<TaskStatisticVo> taskStatistic(List<TaskStatisticVo> data, Long orgId) {
         List<TaskStatisticVo> r = getTaskChildren(orgId);
         for (TaskStatisticVo orgVo : data) {

+ 12 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/web/OrgMapInfoVo.java

@@ -0,0 +1,12 @@
+package com.xunmei.core.board.vo.web;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class OrgMapInfoVo {
+    private  String map;
+
+    private List<OrgSiteInfo> sites;
+}

+ 22 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/web/OrgSiteInfo.java

@@ -0,0 +1,22 @@
+package com.xunmei.core.board.vo.web;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class OrgSiteInfo {
+    /**
+     * 经度
+     */
+    private Double longitude;
+
+    /**
+     * 经度
+     */
+    private Double latitude;
+
+    private String orgName;
+}

+ 17 - 6
soc-modules/soc-modules-core/src/main/resources/mapper/board/CockpitMapper.xml

@@ -210,20 +210,20 @@
 
 
     <select id="selectQuestion" resultType="com.xunmei.core.board.dto.web.WebSyntheticQuestionDto">
-        SELECT count(0)                                  as total,
+        SELECT count(0)                                                                  as total,
                sum(
                        IF
-                           (q.confirm_status = 0, 1, 0)) AS unconfirmedCount,
-               sum(qf.count)                             AS dissentCount,
+                           (q.confirm_status = 0, 1, 0))                                 AS unconfirmedCount,
+               sum(qf.count)                                                             AS dissentCount,
                sum(
                        IF
-                           (q.confirm_status = 3, 1, 0)) AS closedCount,
+                           (q.confirm_status = 3, 1, 0))                                 AS closedCount,
                sum(
                        IF
-                           (q.confirm_status = 2, 1, 0)) AS waitReformCount,
+                           (q.confirm_status = 2, 1, 0))                                 AS waitReformCount,
                sum(
                        IF
-                           (q.reform_status = 11, 1, 0)) AS reformedCount,
+                           (q.reform_status = 11, 1, 0))                                 AS reformedCount,
                sum(if(q.confirm_status != 3 and q.reform_deadline &lt;= #{today}, 1, 0)) as overdueCount
         FROM core_question q
                  LEFT JOIN (SELECT question_id, count(0) AS count
@@ -252,4 +252,15 @@
         FROM core_question
         where org_path LIKE CONCAT(#{orgPath}, '%')
     </select>
+
+    <select id="map" resultType="com.xunmei.core.board.dto.web.OrgMapDto">
+        SELECT o.id                                             as orgId,
+               if(o.breviary is null, o.short_name, o.breviary) as orgName,
+               m.map,
+               m.latitude,
+               m.longitude
+        from sys_org o
+                 INNER JOIN sys_org_map m on o.`code` = m.org_code
+        WHERE o.path like CONCAT((SELECT path from sys_org WHERE id = #{orgId}), '%')
+    </select>
 </mapper>