linjiawei 2 mesiacov pred
rodič
commit
ac9ece8a2b

+ 2 - 0
sql/zfjq_2024113001.sql

@@ -0,0 +1,2 @@
+ALTER TABLE enforce_obj_architecture_relate_his ADD `before_relate_type` int(1) DEFAULT null COMMENT '关系类型:0入驻关系 ,1管理关系';
+ALTER TABLE enforce_obj_architecture_relate_his ADD `after_relate_type` int(1) DEFAULT null COMMENT '关系类型:0入驻关系 ,1管理关系';

+ 8 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/domain/other/EnforceObjArchitectureRelateHis.java

@@ -42,12 +42,20 @@ public class EnforceObjArchitectureRelateHis implements Serializable {
     @ApiModelProperty("更正前建筑uuid")
     private String beforeArchitectureUuid;
 
+
+    @ApiModelProperty("关系类型:0入驻关系 ,1管理关系")
+    private Integer beforeRelateType;
+
     @ApiModelProperty("更正后建筑id")
     private Long afterArchitectureId;
 
     @ApiModelProperty("更正后建筑uuid")
     private String afterArchitectureUuid;
 
+
+    @ApiModelProperty("关系类型:0入驻关系 ,1管理关系")
+    private Integer afterRelateType;
+
     private String createUserId;
 
     private String createUserName;

+ 21 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/dto/enforce/job/EnforceJobObjDTO.java

@@ -0,0 +1,21 @@
+package com.zfjg.manage.api.dto.enforce.job;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@ApiModel("单位和任务")
+@Data
+public class EnforceJobObjDTO {
+
+    @ApiModelProperty(value = "单位id")
+    private String enforceObjId;
+
+    @ApiModelProperty(value = "任务id")
+    private Long enforceJobId;
+
+    @ApiModelProperty(value = "监督检查记录表生成时间")
+    private Date createTime;
+}

+ 3 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/dto/other/EnforceObjArchitectureRelateUpdate.java

@@ -27,4 +27,7 @@ public class EnforceObjArchitectureRelateUpdate implements Serializable {
     @ApiModelProperty("建筑uuid")
     private String architectureUuid;
 
+    @ApiModelProperty("关系类型:0入驻关系 ,1管理关系")
+    private Integer relateType;
+
 }

+ 24 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/dto/other/EnforceObjChangeArchitectureDTO.java

@@ -0,0 +1,24 @@
+package com.zfjg.manage.api.dto.other;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@ApiModel("建筑变更记录列表")
+@Data
+public class EnforceObjChangeArchitectureDTO {
+
+    @ApiModelProperty(value = "单位id")
+    private String enforceObjId;
+
+    @ApiModelProperty("更正前建筑uuid")
+    private String beforeArchitectureUuid;
+
+    @ApiModelProperty("更正后建筑uuid")
+    private String afterArchitectureUuid;
+
+    @ApiModelProperty(value = "监督检查记录表生成时间")
+    private Date createTime;
+}

+ 3 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/dto/other/EnforceObjCheckDTO.java

@@ -27,4 +27,7 @@ public class EnforceObjCheckDTO implements Serializable {
     @ApiModelProperty("被检查次数")
     private Integer times;
 
+    @ApiModelProperty("检查记录id")
+    private String checkIds;
+
 }

+ 6 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/search/enforce/job/EnforceJobQuery.java

@@ -863,4 +863,10 @@ public class EnforceJobQuery extends PageQuery  {
 
     @ApiModelProperty(value = "受理超时状态1:已超时,0:未超时")
     private Integer acceptTimeOut;
+
+    @ApiModelProperty(value = "记录ids")
+    private String checkIds;
+
+    @ApiModelProperty(value = "记录List")
+    private List<String> checkIdList;
 }

+ 5 - 0
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/controller/other/EnforceObjArchitectureRelateController.java

@@ -38,6 +38,11 @@ public class EnforceObjArchitectureRelateController extends BaseController {
     @ApiOperation(value="保存单位与建筑的关联")
     @PostMapping("/enforceObjArchitectureRelate")
     public R<Boolean> save(@RequestBody EnforceObjArchitectureRelateAdd add) {
+        EnforceObjArchitectureRelate enforceObjArchitectureRelate = enforceObjArchitectureRelateService.getOne(new LambdaQueryWrapper<EnforceObjArchitectureRelate>()
+                .eq(EnforceObjArchitectureRelate::getEnforceObjId, add.getEnforceObjId()));
+        if (null != enforceObjArchitectureRelate) {
+            return R.fail("该单位已关联过建筑");
+        }
         return R.ok(enforceObjArchitectureRelateService.insertEnforceObjArchitectureRelate(add));
     }
 

+ 8 - 0
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/mapper/other/EnforceObjArchitectureRelateMapper.java

@@ -3,8 +3,11 @@ package com.zfjg.manage.mapper.other;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zfjg.manage.api.domain.other.EnforceObjArchitectureRelate;
+import com.zfjg.manage.api.dto.enforce.job.EnforceJobObjDTO;
+import com.zfjg.manage.api.dto.other.EnforceObjChangeArchitectureDTO;
 import com.zfjg.manage.api.dto.other.EnforceObjCheckDTO;
 import com.zfjg.manage.api.search.other.EnforceObjArchitectureRelateQuery;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -17,6 +20,11 @@ import java.util.List;
  * @author ljw
  * @since 2024-11-27
  */
+@Mapper
 public interface EnforceObjArchitectureRelateMapper extends BaseMapper<EnforceObjArchitectureRelate> {
     List<EnforceObjCheckDTO> getEnforceObjList(@Param("pm")EnforceObjArchitectureRelateQuery query);
+
+    List<EnforceJobObjDTO> getEnforceJobList(@Param("enforceObjIds")List<String> enforceObjIds);
+
+    List<EnforceObjChangeArchitectureDTO> getEnforceObjChangeArchitectureDTOList(@Param("enforceObjIds")List<String> enforceObjIds);
 }

+ 3 - 0
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/service/impl/enforce/job/EnforceJobServiceImpl.java

@@ -598,6 +598,9 @@ public class EnforceJobServiceImpl extends ServiceImpl<EnforceJobMapper, Enforce
             enforceJobQuery.setJobTypeStr(enforceJobQuery.getJobType());
             enforceJobQuery.setJobType(null);
         }
+        if (StringUtils.isNotEmpty(enforceJobQuery.getCheckIds())) {
+            enforceJobQuery.setCheckIdList(Arrays.asList(enforceJobQuery.getCheckIds().split(",")));
+        }
         checkType(enforceJobQuery);
 
         String fromPlace = ServletUtils.getFromPlace();

+ 83 - 8
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/service/impl/other/EnforceObjArchitectureRelateServiceImpl.java

@@ -1,18 +1,29 @@
 package com.zfjg.manage.service.impl.other;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zfjg.common.core.web.page.TableInfo;
 import com.zfjg.common.security.utils.SecurityUtils;
 import com.zfjg.manage.api.domain.other.EnforceObjArchitectureRelate;
 import com.zfjg.manage.api.domain.other.EnforceObjArchitectureRelateHis;
+import com.zfjg.manage.api.dto.Random.RandomUserLimitDTO;
+import com.zfjg.manage.api.dto.enforce.job.EnforceJobObjDTO;
 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.search.other.EnforceObjArchitectureRelateQuery;
+import com.zfjg.manage.api.vo.other.ArchitectureVO;
 import com.zfjg.manage.mapper.other.EnforceObjArchitectureRelateMapper;
+import com.zfjg.manage.mapper.sys.DeptMapper;
 import com.zfjg.manage.service.other.IEnforceObjArchitectureRelateHisService;
 import com.zfjg.manage.service.other.IEnforceObjArchitectureRelateService;
+import com.zfjg.system.api.domain.SysDept;
 import com.zfjg.system.api.domain.SysUser;
+import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -20,9 +31,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.rmi.ServerException;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -35,9 +45,9 @@ import java.util.Objects;
 @Service
 public class EnforceObjArchitectureRelateServiceImpl extends ServiceImpl<EnforceObjArchitectureRelateMapper, EnforceObjArchitectureRelate> implements IEnforceObjArchitectureRelateService {
     @Autowired
-    private IEnforceObjArchitectureRelateHisService enforceObjArchitectureRelateHisService;
-    @Autowired(required = false)
-    private EnforceObjArchitectureRelateMapper enforceObjArchitectureRelateMapper;
+    private  IEnforceObjArchitectureRelateHisService enforceObjArchitectureRelateHisService;
+    @Autowired
+    private  EnforceObjArchitectureRelateMapper enforceObjArchitectureRelateMapper;
 
     @Override
     public boolean insertEnforceObjArchitectureRelate(EnforceObjArchitectureRelateAdd add) {
@@ -56,6 +66,7 @@ public class EnforceObjArchitectureRelateServiceImpl extends ServiceImpl<Enforce
         //第一次记录,没有变更前的原始值
         his.setAfterArchitectureId(param.getArchitectureId());
         his.setAfterArchitectureUuid(param.getArchitectureUuid());
+        his.setAfterRelateType(param.getRelateType());
         enforceObjArchitectureRelateHisService.save(his);
         return super.save(param);
     }
@@ -67,7 +78,7 @@ public class EnforceObjArchitectureRelateServiceImpl extends ServiceImpl<Enforce
         SysUser user = SecurityUtils.getLoginUser().getSysUser();
         EnforceObjArchitectureRelate dt = this.getOne(new LambdaQueryWrapper<EnforceObjArchitectureRelate>()
                 .eq(EnforceObjArchitectureRelate::getEnforceObjId, param.getEnforceObjId()));
-        if (Objects.equals(param.getArchitectureUuid(), dt.getArchitectureUuid())) {
+        if (Objects.equals(param.getArchitectureUuid(), dt.getArchitectureUuid()) && Objects.equals(param.getRelateType(),dt.getRelateType())) {
             throw new ServerException("选择建筑与之前一样!");
         }
         dt.setArchitectureId(param.getArchitectureId());
@@ -75,6 +86,7 @@ public class EnforceObjArchitectureRelateServiceImpl extends ServiceImpl<Enforce
         dt.setUpdateUserId(user.getUid());
         dt.setUpdateUserName(user.getUserName());
         dt.setUpdateTime(new Date());
+        dt.setRelateType(param.getRelateType());
 
         EnforceObjArchitectureRelateHis his = new EnforceObjArchitectureRelateHis();
         his.setEnforceObjId(dt.getEnforceObjId());
@@ -83,16 +95,79 @@ public class EnforceObjArchitectureRelateServiceImpl extends ServiceImpl<Enforce
         his.setCreateTime(new Date());
         his.setBeforeArchitectureId(dt.getArchitectureId());
         his.setBeforeArchitectureUuid(dt.getArchitectureUuid());
+        his.setBeforeRelateType(dt.getRelateType());
         his.setAfterArchitectureId(param.getArchitectureId());
         his.setAfterArchitectureUuid(param.getArchitectureUuid());
+        his.setAfterRelateType(param.getRelateType());
         enforceObjArchitectureRelateHisService.save(his);
         return super.updateById(dt);
     }
 
     @Override
     public List<EnforceObjCheckDTO> getEnforceObjList(EnforceObjArchitectureRelateQuery query) {
-        return enforceObjArchitectureRelateMapper.getEnforceObjList(query);
+        List<EnforceObjCheckDTO> list = enforceObjArchitectureRelateMapper.getEnforceObjList(query);
+        if (CollectionUtils.isNotEmpty(list)) {
+            //任务记录列表
+            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));
+                //单位变更记录列表
+                List<EnforceObjChangeArchitectureDTO> hisList = enforceObjArchitectureRelateMapper.getEnforceObjChangeArchitectureDTOList(enforceObjIds);
+                Map<String, List<EnforceObjChangeArchitectureDTO>> hisMap = hisList.stream().collect(Collectors.groupingBy(EnforceObjChangeArchitectureDTO::getEnforceObjId));
+                List<String> chekckIdsList = new ArrayList<>();
+                list.forEach(e->{
+                    String enforceObjId = e.getEnforceObjId();
+                    List<EnforceJobObjDTO> jobList = jobMap.get(enforceObjId);
+                    if (CollectionUtils.isEmpty(jobList)) {//不存在任务记录
+                        e.setTimes(0);
+                    }else{
+                        List<EnforceObjChangeArchitectureDTO> changeList = hisMap.get(enforceObjId);
+                        int changeListSize = changeList.size();
+                        if (changeListSize % 2 == 0) {//偶数
+                            for (int i = 0; i < changeListSize; i++) {
+                                if (i % 2 == 0) {
+                                    for (int j = 0; j < jobList.size(); j++) {
+                                        Date jobTime = jobList.get(j).getCreateTime();
+                                        if (jobTime.compareTo(changeList.get(i).getCreateTime())>0 && changeList.get(i+1).getCreateTime().compareTo(jobTime)>0) {
+                                            chekckIdsList.add(String.valueOf(jobList.get(j).getEnforceJobId()));
+                                        }
+                                    }
+                                }
+                            }
+                        }else{//奇数
+                            for (int i = 0; i < changeListSize; i++) {
+                                if (i == changeListSize - 1) {//最后一个
+                                    for (int j = 0; j < jobList.size(); j++) {
+                                        Date jobTime = jobList.get(j).getCreateTime();
+                                        if (jobTime.compareTo(changeList.get(i).getCreateTime())>0) {
+                                            chekckIdsList.add(String.valueOf(jobList.get(j).getEnforceJobId()));
+                                        }
+                                    }
+                                }else{
+                                    if (i % 2 == 0) {
+                                        for (int j = 0; j < jobList.size(); j++) {
+                                            Date jobTime = jobList.get(j).getCreateTime();
+                                            if (jobTime.compareTo(changeList.get(i).getCreateTime())>0 && changeList.get(i+1).getCreateTime().compareTo(jobTime)>0) {
+                                                chekckIdsList.add(String.valueOf(jobList.get(j).getEnforceJobId()));
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+
+                    }
+                    e.setTimes(chekckIdsList.size());
+                    e.setCheckIds(chekckIdsList.stream().collect(Collectors.joining(",")));
+                });
+
+
+            }
+        }
+        return list;
     }
 
 
+
 }

+ 12 - 0
zfjg-modules/zfjg-manage/src/main/resources/mapper/enforce/job/EnforceJobMapper.xml

@@ -172,6 +172,12 @@
         <if test="isEffect != null and isEffect != ''">
             and e.is_effect = #{isEffect}
         </if>
+        <if test="checkIdList != null and checkIdList.size>0">
+            and e.id  in
+            <foreach collection="checkIdList" index="index" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
         ${params.dataScope}
         order by CASE e.job_status WHEN 'DOING' THEN 1 WHEN 'TODO' THEN 2 WHEN 'ARCHIVED' THEN 3 END ASC,e.create_time DESC
     </select>
@@ -880,6 +886,12 @@
         <if test="isFireAccess==true">
             and e.report_complaint_type like CONCAT('%', '144' , '%')
         </if>
+        <if test="checkIdList != null and checkIdList.size>0">
+            and e.id  in
+            <foreach collection="checkIdList" index="index" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
         ORDER BY e.create_time DESC
     </select>
     <select id="pageSpecialList" resultMap="EnforceJobDTO">

+ 31 - 6
zfjg-modules/zfjg-manage/src/main/resources/mapper/other/EnforceObjArchitectureRelateMapper.xml

@@ -6,23 +6,48 @@
     <select id="getEnforceObjList" resultType="com.zfjg.manage.api.dto.other.EnforceObjCheckDTO">
         SELECT
         eo.id enforceObjId,
-        eo.enforce_obj_name,
-        COUNT( ej.id ) AS times
+        eo.enforce_obj_name
         FROM
         enforce_obj_architecture_relate_his eoarh
         LEFT JOIN enforce_obj_architecture_relate eora ON eoarh.enforce_obj_id = eora.enforce_obj_id
         INNER JOIN enforce_obj eo ON eoarh.enforce_obj_id = eo.id
-        LEFT JOIN enforce_job ej ON ej.enforce_obj_id = eo.id
         where eo.is_deleted = 0
-              and ej.job_type in ('NORMAL','SPECIAL','REPORT','REVIEW','BRIGADE','OTHER')
         <if test="pm.architectureUuid  != null  and pm.architectureUuid != ''">
                 and eoarh.after_architecture_uuid = #{pm.architectureUuid}
             </if>
             <if test="pm.relateType  != null">
                 and eora.relate_type = #{pm.relateType}
             </if>
-        GROUP BY eo.id,
-        eo.enforce_obj_name
+        GROUP BY eo.id
         order by eoarh.create_time desc
     </select>
+
+<!--    查询单位的所有检查记录-->
+    <select id="getEnforceJobList" resultType="com.zfjg.manage.api.dto.enforce.job.EnforceJobObjDTO">
+        SELECT
+            id enforceJobId,
+            enforce_obj_id enforceObjId,
+            create_time createTime
+        FROM
+            enforce_job
+        WHERE
+         job_type in ('NORMAL','SPECIAL','REPORT','REVIEW','BRIGADE','OTHER')
+         and enforce_obj_id in
+        <foreach collection="enforceObjIds" item="enforceObjId" open="(" separator="," close=")">
+            #{enforceObjIds}
+        </foreach>
+
+    </select>
+
+<!--    查询单位的所有变更记录-->
+    <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!=after_architecture_id
+        and (before_architecture_uuid =#{uuid} or after_architecture_uuid = #{uuid})
+        and enforce_obj_id in
+        <foreach collection="enforceObjIds" item="enforceObjId" open="(" separator="," close=")">
+            #{enforceObjIds}
+        </foreach>
+        order by create_time desc
+    </select>
 </mapper>