linjiawei 2 months ago
parent
commit
9c7467a0ab

+ 4 - 0
sql/zfjq_2024120201.sql

@@ -0,0 +1,4 @@
+alter table enforce_obj_architecture_relate_his ADD INDEX `enforce_obj_id_IDX`(`enforce_obj_id`) USING BTREE;
+alter table enforce_obj_architecture_relate_his ADD INDEX `after_architecture_uuid_IDX`(`after_architecture_uuid`) USING BTREE;
+alter table enforce_obj_architecture_relate ADD INDEX `enforce_obj_id_IDX`(`enforce_obj_id`) USING BTREE;
+

+ 3 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/search/other/EnforceObjArchitectureRelateQuery.java

@@ -15,4 +15,7 @@ public class EnforceObjArchitectureRelateQuery extends PageQuery {
     @ApiModelProperty("单位和建筑的关系类型:0入驻关系 ,1管理关系")
     private Integer relateType;
 
+    @ApiModelProperty("区域id")
+    private String regionId;
+
 }

+ 2 - 1
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/mapper/other/EnforceObjArchitectureRelateMapper.java

@@ -22,7 +22,8 @@ import java.util.List;
  */
 @Mapper
 public interface EnforceObjArchitectureRelateMapper extends BaseMapper<EnforceObjArchitectureRelate> {
-    List<EnforceObjCheckDTO> getEnforceObjList(@Param("pm")EnforceObjArchitectureRelateQuery query);
+    List<String> getEnforceObjIds(@Param("pm")EnforceObjArchitectureRelateQuery query);
+    List<EnforceObjCheckDTO> getEnforceObjList(@Param("enforceObjIds")List<String> enforceObjIds);
 
     List<EnforceJobObjDTO> getEnforceJobList(@Param("enforceObjIds")List<String> enforceObjIds);
 

+ 25 - 4
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/service/impl/other/EnforceObjArchitectureRelateServiceImpl.java

@@ -15,6 +15,7 @@ import com.zfjg.manage.api.dto.other.EnforceObjArchitectureRelateAdd;
 import com.zfjg.manage.api.dto.other.EnforceObjArchitectureRelateUpdate;
 import com.zfjg.manage.api.dto.other.EnforceObjChangeArchitectureDTO;
 import com.zfjg.manage.api.dto.other.EnforceObjCheckDTO;
+import com.zfjg.manage.api.factory.EnforceObjChangeHisFallbackFactory;
 import com.zfjg.manage.api.search.other.EnforceObjArchitectureRelateQuery;
 import com.zfjg.manage.api.vo.other.ArchitectureVO;
 import com.zfjg.manage.mapper.other.EnforceObjArchitectureRelateMapper;
@@ -25,6 +26,8 @@ import com.zfjg.system.api.domain.SysDept;
 import com.zfjg.system.api.domain.SysUser;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,10 +47,14 @@ import java.util.stream.Collectors;
  */
 @Service
 public class EnforceObjArchitectureRelateServiceImpl extends ServiceImpl<EnforceObjArchitectureRelateMapper, EnforceObjArchitectureRelate> implements IEnforceObjArchitectureRelateService {
+    private static final Logger log = LoggerFactory.getLogger(EnforceObjArchitectureRelateServiceImpl.class);
+
     @Autowired
     private  IEnforceObjArchitectureRelateHisService enforceObjArchitectureRelateHisService;
     @Autowired
     private  EnforceObjArchitectureRelateMapper enforceObjArchitectureRelateMapper;
+    @Autowired
+    private  DeptMapper deptMapper;
 
     @Override
     public boolean insertEnforceObjArchitectureRelate(EnforceObjArchitectureRelateAdd add) {
@@ -79,7 +86,8 @@ public class EnforceObjArchitectureRelateServiceImpl extends ServiceImpl<Enforce
         EnforceObjArchitectureRelate dt = this.getOne(new LambdaQueryWrapper<EnforceObjArchitectureRelate>()
                 .eq(EnforceObjArchitectureRelate::getEnforceObjId, param.getEnforceObjId()));
         if (Objects.equals(param.getArchitectureUuid(), dt.getArchitectureUuid()) && Objects.equals(param.getRelateType(),dt.getRelateType())) {
-            throw new ServerException("选择建筑与之前一样!");
+            log.info("选择建筑与之前一样!");
+            return true;
         }
         EnforceObjArchitectureRelateHis his = new EnforceObjArchitectureRelateHis();
         his.setEnforceObjId(dt.getEnforceObjId());
@@ -105,10 +113,23 @@ public class EnforceObjArchitectureRelateServiceImpl extends ServiceImpl<Enforce
 
     @Override
     public List<EnforceObjCheckDTO> getEnforceObjList(EnforceObjArchitectureRelateQuery query) {
-        List<EnforceObjCheckDTO> list = enforceObjArchitectureRelateMapper.getEnforceObjList(query);
-        if (CollectionUtils.isNotEmpty(list)) {
+        List<EnforceObjCheckDTO> list = new ArrayList<>();
+        String orgId = SecurityUtils.getOrgId();
+        SysDept userLoginDept = Optional.ofNullable(deptMapper.selectOne(Wrappers.<SysDept>lambdaQuery()
+                .eq(SysDept::getEnforceOrgId, orgId)
+                .last("limit 1")
+        )).orElse(new SysDept());
+        if (StrUtil.isBlank(userLoginDept.getRegionCode())) return list;
+
+        //非建筑所属辖区或非总队无权限查看
+        if (!Objects.equals(query.getRegionId(), userLoginDept.getRegionCode() + "000000") && !Objects.equals(0L, userLoginDept.getParentId())) {
+            return list;
+        }
+
+        List<String> enforceObjIds = enforceObjArchitectureRelateMapper.getEnforceObjIds(query);
+        if (CollectionUtils.isNotEmpty(enforceObjIds)) {
+            list = enforceObjArchitectureRelateMapper.getEnforceObjList(enforceObjIds);
             //任务记录列表
-            List<String> enforceObjIds = list.stream().map(EnforceObjCheckDTO::getEnforceObjId).collect(Collectors.toList());
             List<EnforceJobObjDTO> enforceJobObjDTOS = enforceObjArchitectureRelateMapper.getEnforceJobList(enforceObjIds);
             if (CollectionUtils.isNotEmpty(enforceJobObjDTOS)) {
                 Map<String, List<EnforceJobObjDTO>> jobMap = enforceJobObjDTOS.stream().collect(Collectors.groupingBy(EnforceJobObjDTO::getEnforceObjId));

+ 29 - 17
zfjg-modules/zfjg-manage/src/main/resources/mapper/other/EnforceObjArchitectureRelateMapper.xml

@@ -2,18 +2,9 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zfjg.manage.mapper.other.EnforceObjArchitectureRelateMapper">
 
-    <!-- 高楼码关联的单位(包含历史变更记录)   -->
-    <select id="getEnforceObjList" resultType="com.zfjg.manage.api.dto.other.EnforceObjCheckDTO">
+    <select id="getEnforceObjIds" resultType="java.lang.String">
         SELECT
-            eo.id enforceObjId,
-            eo.enforce_obj_name
-        FROM
-        enforce_obj eo
-        WHERE
-        eo.is_deleted = 0
-        AND eo.id IN (
-        SELECT
-        eoarh.enforce_obj_id
+        distinct eoarh.enforce_obj_id
         FROM
         enforce_obj_architecture_relate_his eoarh
         LEFT JOIN enforce_obj_architecture_relate eora ON eoarh.enforce_obj_id = eora.enforce_obj_id
@@ -25,8 +16,22 @@
                 and eora.relate_type = #{pm.relateType}
             </if>
         </where>
-        )
-
+        order by eoarh.id desc
+    </select>
+    <!-- 高楼码关联的单位(包含历史变更记录)   -->
+    <select id="getEnforceObjList" resultType="com.zfjg.manage.api.dto.other.EnforceObjCheckDTO">
+        SELECT
+            eo.id enforceObjId,
+            eo.enforce_obj_name
+        FROM
+        enforce_obj eo
+        WHERE
+        eo.is_deleted = 0
+        AND eo.id IN
+        <foreach collection="enforceObjIds" item="enforceObjId" open="(" separator="," close=")">
+            #{enforceObjId}
+        </foreach>
+        order by eo.id desc
     </select>
 
 <!--    查询单位的所有检查记录-->
@@ -48,10 +53,17 @@
 
 <!--    查询单位的所有变更记录-->
     <select id="getEnforceObjChangeArchitectureDTOList" resultType="com.zfjg.manage.api.dto.other.EnforceObjChangeArchitectureDTO">
-        select   enforce_obj_id,create_time,before_architecture_uuid,after_architecture_uuid from enforce_obj_architecture_relate_his
-        where (before_architecture_id is  null or before_architecture_id!=after_architecture_id )
-        and (before_architecture_uuid =#{uuid} or after_architecture_uuid = #{uuid})
-        and enforce_obj_id in
+        SELECT
+            enforce_obj_id,
+            create_time,
+            before_architecture_uuid,
+            after_architecture_uuid
+        FROM
+            enforce_obj_architecture_relate_his
+        WHERE
+        ( before_architecture_uuid IS NULL OR before_architecture_uuid != after_architecture_uuid )
+        AND (before_architecture_uuid = #{uuid} or after_architecture_uuid = #{uuid})
+        AND enforce_obj_id IN
         <foreach collection="enforceObjIds" item="enforceObjId" open="(" separator="," close=")">
             #{enforceObjId}
         </foreach>