Browse Source

巡检填报速度优化-保养标准优化

guarantee-lsq 1 year ago
parent
commit
92eedc493f

+ 3 - 0
platform-dao/src/main/java/com/platform/dao/bean/MyPage.java

@@ -17,6 +17,9 @@ public class MyPage<T> extends AbstractPageResultBean<T> {
         super(rows);
     }
 
+    public MyPage() {
+    }
+
     @Override
     protected void init(List rows) {
         if (rows instanceof Page) {

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/entity/check/CheckStandard.java

@@ -172,4 +172,6 @@ public class CheckStandard implements Serializable {
      * 保养标准关联备件
      */
     private List<CheckStandardSpareVO> detailList;
+
+    private String positionNo; // 设备位号
 }

+ 2 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/check/CheckStandardVO.java

@@ -192,4 +192,6 @@ public class CheckStandardVO extends BaseVO implements Serializable{
      * 更换备件
      */
     private List<CheckStandardSpareVO> detailList;
+
+    private String positionNo; // 设备位号
 }

+ 1 - 1
platform-dao/src/main/resources/mapper/check/CheckStandardMapper.xml

@@ -138,7 +138,7 @@ checkstandard.last_date,
     <select id="selectList" parameterType="com.platform.dao.dto.check.CheckStandardDTO"
             resultType="com.platform.dao.vo.query.check.CheckStandardVO">
         select checkstandard.*, sbInfo.name as sbName, sbInfo.no as sbNo,
-        sbInfo.level as sbLevel,
+        sbInfo.level as sbLevel,sbInfo.position_no as positionNo,
         sbInfo.repair_user as repairUser,
         partInfo.name as partName
         from t_check_standard as checkstandard

+ 24 - 0
platform-rest/src/main/java/com/platform/rest/task/FillGatherTaskTask.java

@@ -8,6 +8,8 @@ import com.platform.dao.entity.fill.FillGatherInfo;
 import com.platform.dao.entity.fill.FillGatherTask;
 import com.platform.dao.entity.fill.FillGatherTaskDetail;
 import com.platform.dao.entity.fill.FillInfo;
+import com.platform.dao.entity.sb.SbInfo;
+import com.platform.dao.entity.sb.SbPosition;
 import com.platform.dao.entity.upms.SysUser;
 import com.platform.dao.enums.FillGatherTaskStatusEnum;
 import com.platform.dao.enums.SysConfigEnum;
@@ -16,8 +18,11 @@ import com.platform.dao.enums.WorkplaceBacklogTypeEnum;
 import com.platform.dao.mapper.fill.FillGatherInfoMapper;
 import com.platform.dao.mapper.fill.FillGatherTaskDetailMapper;
 import com.platform.dao.mapper.fill.FillInfoMapper;
+import com.platform.dao.mapper.sb.SbInfoMapper;
+import com.platform.dao.mapper.sb.SbPositionMapper;
 import com.platform.dao.mapper.upms.SysUserMapper;
 import com.platform.dao.util.MessageTemplateUtil;
+import com.platform.dao.vo.query.fill.FillGatherTaskDetailVO;
 import com.platform.dao.vo.query.fill.FillInfoVO;
 import com.platform.service.event.WorkplaceBacklogEvent;
 import com.platform.service.fill.FillGatherTaskService;
@@ -47,6 +52,8 @@ public class FillGatherTaskTask {
     private FillGatherInfoMapper fillGatherInfoMapper;
     private FillInfoMapper fillInfoMapper;
     private FillGatherTaskDetailMapper fillGatherTaskDetailMapper;
+    private SbInfoMapper sbInfoMapper;
+    private SbPositionMapper sbPositionMapper;
 
     /**
      * 定时生成巡检任务
@@ -152,6 +159,23 @@ public class FillGatherTaskTask {
             details.add(detail);
         }
         fillGatherTaskDetailMapper.insertListforComplex(details);
+        // 往redis中存储巡检任务明细,并设置日期
+        List<FillGatherTaskDetailVO> detailRedis = ListUtils.newArrayList();
+        details.forEach(item->{
+            FillGatherTaskDetailVO vo = BeanConverterUtil.copyObjectProperties(item,FillGatherTaskDetailVO.class);
+            SbInfo sb = sbInfoMapper.selectByPrimaryKey(item.getSbId());
+            vo.setSbName(sb.getName());
+            vo.setSbNo(sb.getNo());
+            vo.setPositionNo(sb.getPositionNo());
+            if(StringUtils.isNotBlank(sb.getPositionId())){
+                SbPosition sbPosition = sbPositionMapper.selectByPrimaryKey(sb.getPositionId());
+                if(sbPosition != null){
+                    vo.setPositionName(sbPosition.getName());
+                }
+            }
+            detailRedis.add(vo);
+        });
+        RedisUtils.setList(newTaskId,detailRedis,24*60*60);
     }
 
 

+ 1 - 1
platform-rest/src/main/resources/application-dev.yml

@@ -98,4 +98,4 @@ remove:
   companyId: 5e902722d762f008b01b9ee1
 
 scheduling:
-  enabled: false
+  enabled: true

+ 67 - 7
platform-service/src/main/java/com/platform/service/fill/impl/FillGatherTaskDetailServiceImpl.java

@@ -1,19 +1,21 @@
 package com.platform.service.fill.impl;
+
+import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
+import com.platform.common.util.ListUtils;
+import com.platform.common.util.RedisUtils;
 import com.platform.common.util.StringUtils;
 import com.platform.dao.bean.MyPage;
-import com.github.pagehelper.PageHelper;
-import com.platform.dao.vo.query.fill.FillGatherTaskDetailVO;
 import com.platform.dao.dto.fill.FillGatherTaskDetailDTO;
 import com.platform.dao.entity.fill.FillGatherTaskDetail;
 import com.platform.dao.mapper.fill.FillGatherTaskDetailMapper;
+import com.platform.dao.vo.query.fill.FillGatherTaskDetailVO;
+import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.fill.FillGatherTaskDetailService;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
-import com.platform.service.base.impl.BaseServiceImpl;
-import org.springframework.transaction.annotation.Transactional;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
-import lombok.AllArgsConstructor;
 
 import java.util.List;
 
@@ -38,11 +40,69 @@ public class FillGatherTaskDetailServiceImpl extends BaseServiceImpl<FillGatherT
 
     @Override
     public AbstractPageResultBean<FillGatherTaskDetailVO> selectPageList(FillGatherTaskDetailDTO record, int pageNum, int pageSize) {
-        PageHelper.startPage(pageNum, pageSize);
+        /*PageHelper.startPage(pageNum, pageSize);
         if(StringUtils.isNotBlank(record.getKeyword())){
             record.setKeyword(record.getKeyword().trim());
         }
-        return new MyPage(mapper.selectList(record));
+        return new MyPage(mapper.selectList(record));*/
+        AbstractPageResultBean<FillGatherTaskDetailVO> pageInfos = new MyPage();
+        // 根据taskId获取数据
+        List<FillGatherTaskDetailVO> list = RedisUtils.getList(record.getTaskId(),0,-1);
+        if(list == null || list.size() == 0){
+            list = mapper.selectList(record);
+            RedisUtils.del(record.getTaskId());
+            RedisUtils.setList(record.getTaskId(),list,24*60*60);
+        }
+        // 根据检索条件获取最终的list
+        List<FillGatherTaskDetailVO> finalList = validateList(list,record);
+        pageInfos.setTotal((long)finalList.size());
+        pageInfos.setPageSize(pageSize);
+        pageInfos.setPageNum(pageNum);
+        // 计算分页页数
+        int pages = 0;
+        if(pageInfos.getTotal() > 0){
+            int pageTotal = pageInfos.getTotal().intValue();
+            pages = pageTotal/pageSize;
+            if(pageTotal%pageSize > 0){
+                pages++;
+            }
+        }
+        pageInfos.setPages(pages);
+        int startPage = (pageNum-1)*pageSize;
+        int endPage = pageSize*pageNum;
+        List<FillGatherTaskDetailVO> retList = ListUtils.newArrayList();
+        endPage = endPage > pageInfos.getTotal().intValue() ? pageInfos.getTotal().intValue() : endPage;
+        for(int i=startPage;i<endPage;i++){
+            retList.add(finalList.get(i));
+        }
+        pageInfos.setRows(retList);
+        return pageInfos;
+    }
+
+    /**
+     * 获取最终结果list
+     * @param list
+     * @param record
+     * @return
+     */
+    private List<FillGatherTaskDetailVO> validateList(List<FillGatherTaskDetailVO> list,FillGatherTaskDetailDTO record){
+        List<FillGatherTaskDetailVO> finalList = ListUtils.newArrayList();
+        for(FillGatherTaskDetailVO item : list){
+            if(record.getStatus() != null){
+                // 状态校验
+                if(item.getStatus() != record.getStatus()){
+                    continue;
+                }
+            }
+            // 关键字校验
+            if(StringUtils.isNotBlank(record.getKeyword())){
+                if(!item.getSbName().contains(record.getKeyword().trim()) && !item.getPositionNo().equals(record.getKeyword().trim())){
+                    continue;
+                }
+            }
+            finalList.add(item);
+        }
+        return finalList;
     }
 
 

+ 27 - 6
platform-service/src/main/java/com/platform/service/fill/impl/FillGatherTaskServiceImpl.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
-import com.mysql.cj.x.protobuf.MysqlxDatatypes;
 import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.common.cache.ConfigCache;
 import com.platform.common.constant.RedisKeyConstants;
@@ -22,13 +21,10 @@ import com.platform.dao.mapper.fill.*;
 import com.platform.dao.mapper.upms.SysRoleMapper;
 import com.platform.dao.mapper.upms.SysUserMapper;
 import com.platform.dao.util.MessageTemplateUtil;
-import com.platform.dao.vo.SysRoleVO;
 import com.platform.dao.vo.query.fill.FillGatherTaskDetailVO;
 import com.platform.dao.vo.query.fill.FillGatherTaskVO;
 import com.platform.dao.vo.query.fill.FillInfoVO;
-import com.platform.dao.vo.repair.RepairApplicationFormVO;
 import com.platform.dao.vo.report.FillGatherTaskReportVO;
-import com.platform.dao.vo.report.RepairReport24VO;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.event.WorkplaceBacklogEvent;
 import com.platform.service.fill.FillGatherTaskService;
@@ -42,6 +38,7 @@ import tk.mybatis.mapper.weekend.WeekendCriteria;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -381,7 +378,7 @@ public class FillGatherTaskServiceImpl extends BaseServiceImpl<FillGatherTaskMap
         FillGatherTask task = mapper.selectByPrimaryKey(model.getId());
         FillGatherTask updTask = new FillGatherTask();
         // 本轮填写数据
-        int fillNum = getFilledDataNum(model.getDetails());
+        int fillNum = getFilledDataNum(model.getDetails(),model.getId());
         int waitNum = task.getWaitNum() - fillNum;
         updTask.setId(task.getId());
         updTask.setWaitNum(waitNum);
@@ -397,8 +394,9 @@ public class FillGatherTaskServiceImpl extends BaseServiceImpl<FillGatherTaskMap
      * @param details
      * @return
      */
-    private int getFilledDataNum(List<FillGatherTaskDetailDTO> details){
+    private int getFilledDataNum(List<FillGatherTaskDetailDTO> details,String taskId){
         int num = 0;
+        Map<String, FillGatherTaskDetail> maps = new HashMap<>();
         for(FillGatherTaskDetailDTO detail : details){
             FillGatherTaskDetail updDetail = new FillGatherTaskDetail();
             updDetail.setId(detail.getId());
@@ -411,9 +409,32 @@ public class FillGatherTaskServiceImpl extends BaseServiceImpl<FillGatherTaskMap
             if(isCompleted(detail.getContent())){
                 updDetail.setStatus(1);
                 num++;
+                maps.put(detail.getId(),updDetail);
             }
             fillGatherTaskDetailMapper.updateByPrimaryKeySelective(updDetail);
         }
+        // 修改redis中巡检任务明细的状态
+        if(maps.size() > 0){
+            List<FillGatherTaskDetailVO> list = RedisUtils.getList(taskId,0,-1);
+            if(list != null && list.size() > 0){
+                for(Map.Entry<String,FillGatherTaskDetail> entry : maps.entrySet()){
+                    String item = entry.getKey();
+                    FillGatherTaskDetail updDetail = entry.getValue();
+                    list.forEach(vo->{
+                        if(vo.getId().equals(item)){
+                            vo.setStatus(1);
+                            vo.setContent(updDetail.getContent());
+                            vo.setUpdateUserName(updDetail.getUpdateUserName());
+                            vo.setUpdateUserId(updDetail.getUpdateUserId());
+                            vo.setUpdateTime(updDetail.getUpdateTime());
+                        }
+                    });
+                }
+            }
+            // 修改
+            RedisUtils.del(taskId);
+            RedisUtils.setList(taskId,list,24*60*60);
+        }
         return num;
     }