浏览代码

优化民用工程查询慢的问题

JX.Li 1 年之前
父节点
当前提交
bc1b34a370

+ 2 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java

@@ -23,6 +23,8 @@ public class BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @TableField(exist = false)
+    private Long total;
     /**
      * 搜索值
      */

+ 1 - 1
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/mapper/ZEngineeringCivilMapper.java

@@ -20,7 +20,7 @@ import java.util.List;
 public interface ZEngineeringCivilMapper extends BaseMapperPlus<ZEngineeringCivilMapper, ZEngineeringCivil, ZEngineeringCivilVo> {
 
 
-    Page<ZEngineeringCivilVo> queryPageList(@Param("p") ZEngineeringCivilBo bo, Page<?> page);
+    Page<ZEngineeringCivilVo> queryPageList(@Param("p") ZEngineeringCivilBo bo,@Param("pa")Page<?> page,@Param("page") Integer pages,@Param("size") Integer size);
 
     List<roomStatusVo> getObtainRoomcCompletionInformationList(ZEngineeringCivilBo bo);
     List<areaWillDoneVo> getAreaCompletionInformationList(@Param("idList") List idList,@Param("enginCycle")String enginCycle);

+ 2 - 1
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringCivilServiceImpl.java

@@ -116,7 +116,8 @@ public class ZEngineeringCivilServiceImpl implements IZEngineeringCivilService {
     @Override
     public TableDataInfo<ZEngineeringCivilVo> queryPageList(ZEngineeringCivilBo bo, PageQuery pageQuery) {
         Page<ZBuildingBo> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
-        Page<ZEngineeringCivilVo> result = baseMapper.queryPageList(bo, page);
+        Page<ZEngineeringCivilVo> result = baseMapper.queryPageList(bo,page,pageQuery.getPageNum(), pageQuery.getPageSize());
+        page.setTotal(result.getRecords() != null ? result.getRecords().get(0).getTotal():0);
         return TableDataInfo.build(result);
     }
 

+ 3 - 2
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringDangerousServiceImpl.java

@@ -29,6 +29,7 @@ import com.ruoyi.zdsz.domain.ZEngineeringDangerous;
 import com.ruoyi.zdsz.mapper.ZEngineeringDangerousMapper;
 import com.ruoyi.zdsz.service.IZEngineeringDangerousService;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -242,11 +243,11 @@ public class ZEngineeringDangerousServiceImpl implements IZEngineeringDangerousS
         if (flag) {
             bo.setId(add.getId());
         }
-        if (!bo.getPics().isEmpty()) {
+        if (!ObjectUtils.isEmpty(bo.getPics())) {
             List<ZEngiineeringPhoto> list = new ArrayList<>();
             bo.getPics().stream().forEach(o -> {
                 ZEngiineeringPhoto pic = new ZEngiineeringPhoto();
-                pic.setParentId(bo.getId());
+                pic.setParentId(add.getId());
                 pic.setPicUrl(o.getPicUrl());
                 pic.setFileName(o.getFileName());
                 pic.setCreateBy(String.valueOf(LoginHelper.getUsername()));

+ 1 - 1
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringInfoServiceImpl.java

@@ -209,7 +209,7 @@ public class ZEngineeringInfoServiceImpl implements IZEngineeringInfoService {
             zEngiineeringPhoto.setUpdateTime(new Date());
             photoList.add(zEngiineeringPhoto);
         });
-        if (!photoList.isEmpty()) {
+        if (photoList.size() > 0 ) {
             izEngiineeringPhotoService.updateBatch(photoList);
         }
         izEngineeringMaterialService.updateList(bo);

+ 2 - 2
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringMaterialServiceImpl.java

@@ -53,7 +53,7 @@ public class ZEngineeringMaterialServiceImpl implements IZEngineeringMaterialSer
 
     @Override
     @DynamicName(spel = "#bo.createTime")
-//    @Async("threadPoolTaskExecutor")
+    //    @Async("threadPoolTaskExecutor")
     public List<ZEngineeringMaterialBo> query(ZEngineeringInfoBo bo) {
         LambdaQueryWrapper<ZEngineeringMaterial> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getId()), ZEngineeringMaterial::getDetailsId, bo.getId()).orderByAsc(ZEngineeringMaterial::getUpdateTime);
@@ -133,7 +133,7 @@ public class ZEngineeringMaterialServiceImpl implements IZEngineeringMaterialSer
     //@Async("threadPoolTaskExecutor")
     public ZEngineeringMaterial insert(ZEngineeringMaterialBo bo) {
         ZEngineeringMaterial add = new ZEngineeringMaterial();
-        BeanUtils.copyProperties(bo,add);
+        BeanUtils.copyProperties(bo, add);
         validEntityBeforeSave(add);
         add.setUpdateTime(new Date());
         boolean flag = baseMapper.insert(add) > 0;

+ 50 - 38
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringNodeServiceImpl.java

@@ -27,6 +27,7 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
 import java.text.ParseException;
@@ -34,6 +35,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 
 import static cn.hutool.core.date.DateUtil.format;
+import static cn.hutool.core.date.DateUtil.offset;
 
 /**
  * 工程节点Service业务层处理
@@ -58,18 +60,19 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
      * 查询工程节点
      */
     @Override
-    public ZEngineeringNodeVo queryById(String id){
+    public ZEngineeringNodeVo queryById(String id) {
         return baseMapper.selectVoById(id);
     }
 
     @Override
     @DynamicName(spel = "#bo.createTime")
-//    @Async("threadPoolTaskExecutor")
-    public ZEngineeringNodeBo query(ZEngineeringNodeBo bo){
+    //    @Async("threadPoolTaskExecutor")
+    public ZEngineeringNodeBo query(ZEngineeringNodeBo bo) {
         LambdaQueryWrapper<ZEngineeringNode> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getCivliId()), ZEngineeringNode::getCivliId, bo.getCivliId());
         lqw.eq(StringUtils.isNotBlank(bo.getType()), ZEngineeringNode::getType, bo.getType());
-        lqw.eq(ZEngineeringNode::getCreateBy, LoginHelper.getLoginUser().getUsername());
+        if (!LoginHelper.isAdmin())
+            lqw.eq(ZEngineeringNode::getCreateBy, LoginHelper.getLoginUser().getUsername());
         ZEngineeringNode zEngineeringNode=baseMapper.selectOne(lqw);
 //        ZEngineeringNode zEngineeringNodeVo=baseMapper.selectById(bo.getId());
         if (zEngineeringNode==null)
@@ -119,7 +122,7 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
      * 查询工程节点列表
      */
     @Override
-//    @DynamicName(spel = "#bo.createTime")
+    //    @DynamicName(spel = "#bo.createTime")
     public List<ZEngineeringNodeVo> queryList(ZEngineeringNodeBo bo) {
         LambdaQueryWrapper<ZEngineeringNode> lqw = buildQueryWrapper(bo);
         return baseMapper.selectVoList(lqw);
@@ -132,19 +135,20 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
         lqw.eq(StringUtils.isNotBlank(bo.getType()), ZEngineeringNode::getType, bo.getType());
         return lqw;
     }
+
     @Override
 
     public String ZEngineeringReview(ZEngineeringNodeBo bo) {
-        String userId=LoginHelper.getLoginUser().getUsername().toString();
-        SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");
+        String userId = LoginHelper.getLoginUser().getUsername().toString();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
         Date date = new Date(System.currentTimeMillis());
-        List<String>dateList= getMonthBetweenDates("2021-12",formatter.format(date));
-        dateList.stream().forEach(item->{
-            Runnable runnable=new Runnable() {
+        List<String> dateList = getMonthBetweenDates("2021-12", formatter.format(date));
+        dateList.stream().forEach(item -> {
+            Runnable runnable = new Runnable() {
                 @Override
-                public void run( ) {
+                public void run() {
                     try {
-                        getZEngineeringNodeList(item,userId,bo);
+                        getZEngineeringNodeList(item, userId, bo);
                         Thread.sleep(30000);
                     } catch (InterruptedException e) {
                         throw new RuntimeException(e);
@@ -184,10 +188,9 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
         return 0;
     }
 
-    public  List getZEngineeringNodeList(String date,String UserId,ZEngineeringNodeBo bo)
-    {
+    public List getZEngineeringNodeList(String date, String UserId, ZEngineeringNodeBo bo) {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
-        List<ZEngineeringNodeVo> list= new ArrayList<>();
+        List<ZEngineeringNodeVo> list = new ArrayList<>();
         try {
             Date startdate = format.parse(date);
             bo.setCreateTime(startdate);
@@ -195,17 +198,16 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
             SimpleDateFormat format2 = new SimpleDateFormat("yyyy_MM");
             MonthTableNameHandler.setData(format2.format(startdate));
             try {
-                list  =queryList(bo);
-            }catch (Exception e)
-            {
-                log.info("没有{}该表",format2.format(startdate));
+                list = queryList(bo);
+            } catch (Exception e) {
+                log.info("没有{}该表", format2.format(startdate));
 
-                return null ;
+                return null;
             }
-            List zEngineeringReviewList=new ArrayList<>();
-            list.stream().forEach(item->{
-                ZEngineeringReviewBo zEngineeringReview =new ZEngineeringReviewBo();
-                zEngineeringReview.setReviewTime( new Date());
+            List zEngineeringReviewList = new ArrayList<>();
+            list.stream().forEach(item -> {
+                ZEngineeringReviewBo zEngineeringReview = new ZEngineeringReviewBo();
+                zEngineeringReview.setReviewTime(new Date());
                 zEngineeringReview.setReviewContent("批量审核");
                 zEngineeringReview.setReviewStatus("1");
                 zEngineeringReview.setReviewUser(UserId);
@@ -236,19 +238,21 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
         }
         return flag;
     }
+
     /**
      * 新增工程节点
+     *
      * @param bo
      * @return ZEngineeringNode
      */
     @Override
-    @Transactional(rollbackFor=Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     @DynamicName(spel = "#bo.createTime")
     public ZEngineeringNode insert(ZEngineeringNodeBo bo) {
         ZEngineeringNode add = BeanUtil.toBean(bo, ZEngineeringNode.class);
         add.setUpdateTime(new Date());
         validEntityBeforeSave(add);
-        if (StringUtils.isEmpty(bo.getId())){
+        if (StringUtils.isEmpty(bo.getId())) {
             boolean flag = baseMapper.insert(add) > 0;
             if (flag) {
                 bo.setId(add.getId());
@@ -263,7 +267,6 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
     }
 
 
-
     /**
      * 修改工程节点
      */
@@ -280,8 +283,15 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
     public Boolean update(ZEngineeringNodeBo bo) {
         ZEngineeringNode update = BeanUtil.toBean(bo, ZEngineeringNode.class);
         validEntityBeforeSave(update);
-        bo.getzEngineeringInfoBo().setCreateTime(bo.getCreateTime());
-        izEngineeringInfoService.update(bo.getzEngineeringInfoBo());
+        if (ObjectUtils.isEmpty(bo.getzEngineeringInfoBo())) {
+            for (ZEngineeringInfoBo zEngineeringInfoBo : bo.getzEngineeringInfoBoList()) {
+                zEngineeringInfoBo.setCreateTime(bo.getCreateTime());
+                izEngineeringInfoService.update(zEngineeringInfoBo);
+            }
+        } else {
+            bo.getzEngineeringInfoBo().setCreateTime(bo.getCreateTime());
+            izEngineeringInfoService.update(bo.getzEngineeringInfoBo());
+        }
         return baseMapper.updateById(update) > 0;
     }
     @Override
@@ -301,8 +311,8 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
     @Transactional(rollbackFor = Exception.class)
     public Boolean delete(ZEngineeringNodeBo bo) {
         LambdaQueryWrapper<ZEngineeringNode> lqw = Wrappers.lambdaQuery();
-        lqw.eq(StringUtils.isNotBlank(bo.getId()), ZEngineeringNode::getId,bo.getId());
-        ZEngineeringNode zEngineeringNode=baseMapper.selectOne(lqw);
+        lqw.eq(StringUtils.isNotBlank(bo.getId()), ZEngineeringNode::getId, bo.getId());
+        ZEngineeringNode zEngineeringNode = baseMapper.selectOne(lqw);
         ZEngineeringNodeBo zEngineeringNodeBo = BeanUtil.toBean(zEngineeringNode, ZEngineeringNodeBo.class);
         if (zEngineeringNodeBo != null) {
             izEngineeringInfoService.delete(zEngineeringNodeBo);
@@ -313,7 +323,7 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
     /**
      * 保存前的数据校验
      */
-    private void validEntityBeforeSave(ZEngineeringNode entity){
+    private void validEntityBeforeSave(ZEngineeringNode entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
@@ -322,7 +332,7 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return baseMapper.deleteBatchIds(ids) > 0;
@@ -331,27 +341,29 @@ public class ZEngineeringNodeServiceImpl implements IZEngineeringNodeService {
 
     /**
      * 获取某个时间段内所有月份
+     *
      * @param minDate
      * @param maxDate
      * @return
      * @throws ParseException
      */
-    public  List<String> getMonthBetweenDates(String minDate, String maxDate){
+    public List<String> getMonthBetweenDates(String minDate, String maxDate) {
         ArrayList<String> result = new ArrayList<String>();
         Calendar min = Calendar.getInstance();
         Calendar max = Calendar.getInstance();
-        min.setTime(parse(minDate,"yyyy-MM"));
+        min.setTime(parse(minDate, "yyyy-MM"));
         min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
-        max.setTime(parse(maxDate,"yyyy-MM"));
+        max.setTime(parse(maxDate, "yyyy-MM"));
         max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
         Calendar curr = min;
         while (curr.before(max)) {
-            result.add(format(curr.getTime(),"yyyy-MM"));
+            result.add(format(curr.getTime(), "yyyy-MM"));
             curr.add(Calendar.MONTH, 1);
         }
         return result;
     }
-    public  Date parse(String date, String pattern) {
+
+    public Date parse(String date, String pattern) {
         try {
             return new SimpleDateFormat(pattern).parse(date);
         } catch (Exception e) {

+ 4 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringPipeJackingServiceImpl.java

@@ -61,6 +61,7 @@ public class ZEngineeringPipeJackingServiceImpl implements IZEngineeringPipeJack
         bo.setCreateTime(jackingVo.getCreateTime());
         bo.setCivliId(jackingVo.getId());
         jackingVo.setZEngineeringNodeBoList(nodeService.queryListDetails(bo));
+
         return jackingVo;
     }
     /**
@@ -69,10 +70,13 @@ public class ZEngineeringPipeJackingServiceImpl implements IZEngineeringPipeJack
     @Override
     public ZEngineeringPipeJackingVo queryByIdType(String id,String type){
         ZEngineeringPipeJackingVo jackingVo = baseMapper.selectVoById(id);
+
         ZEngiineeringPhotoBo bo1 = new ZEngiineeringPhotoBo();
         bo1.setParentId(jackingVo.getId());
         bo1.setCreateTime(jackingVo.getCreateTime());
         jackingVo.setPics(photoService.queryList(bo1));
+
+
         ZEngineeringNodeBo bo = new ZEngineeringNodeBo();
         bo.setCreateTime(jackingVo.getCreateTime());
         bo.setCivliId(jackingVo.getId());

+ 32 - 12
ruoyi-zdsz/src/main/resources/mapper/zdsz/ZEngineeringCivilMapper.xml

@@ -25,19 +25,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime" column="update_time"/>
     </resultMap>
     <select id="queryPageList" resultType="com.ruoyi.zdsz.domain.vo.ZEngineeringCivilVo">
-        select a.*,
-               b.name AS areaName,
-               c.name AS buildingName,
-               d.name AS unitName,
-               e.name AS houseName,
-               f.dict_label AS enginClassificationName
+        select
+        (select count(id)
+        from z_engineering_civil
+        where del_flag = 0
+        <if test="p.district != null and p.district != ''">
+            and district = #{p.district}
+        </if>
+        <if test="p.areaId != null and p.areaId != ''">
+            and area_id = #{p.areaId}
+        </if>
+        <if test="p.buildingId != null and p.buildingId != ''">
+            and building_id = #{p.buildingId}
+        </if>
+        <if test="p.unitId != null and p.unitId != ''">
+            and unit_id = #{p.unitId}
+        </if>
+        ) as total,
+        a.*,
+        b.name AS areaName,
+        c.name AS buildingName,
+        d.name AS unitName,
+        e.name AS houseName,
+        f.dict_label AS enginClassificationName
         from z_engineering_civil a
-                 left join z_area b on b.id = a.area_id
-                 left join z_building c on c.id = a.building_id
-                 left join z_unit d on d.id = a.unit_id
-                 left join z_house e on e.id = a.house_id
-                    left join  sys_dict_data f on f.dict_type = a.engin_type and f.dict_value = a.engin_classification
-        where a.del_flag = 0
+        left join z_area b on b.id = a.area_id
+        left join z_building c on c.id = a.building_id
+        left join z_unit d on d.id = a.unit_id
+        left join z_house e on e.id = a.house_id
+        left join sys_dict_data f on f.dict_type = a.engin_type and f.dict_value = a.engin_classification
+        where a.del_flag = 0 AND a.id in (SELECT at.* FROM (SELECT a.id from z_engineering_civil a
+
         <if test="p.district != null and p.district != ''">
             and a.district = #{p.district}
         </if>
@@ -50,6 +68,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="p.unitId != null and p.unitId != ''">
             and a.unit_id = #{p.unitId}
         </if>
+        LIMIT #{page},#{size}
+        ) AS at)
     </select>
 <select id="getObtainRoomcCompletionInformationList" resultType="com.ruoyi.zdsz.domain.vo.roomStatusVo">
     select