瀏覽代碼

添加已未读状态

fuyuchuan 1 天之前
父節點
當前提交
376a2ddc30

+ 2 - 2
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DemReportInfoController.java

@@ -90,8 +90,8 @@ public class DemReportInfoController {
      * @return
      */
     @Log(title = "报告读取状态更新", businessType = BusinessType.UPDATE)
-    @PatchMapping("/updateReadStatus/{id}")
-    public ApiResult<Void> updateReadStatus(@PathVariable(value = "id") String id) {
+    @PostMapping("/updateReadStatus")
+    public ApiResult<Void> updateReadStatus(@RequestParam(value = "id") String id) {
         demReportInfoService.updateReadStatus(id);
         return ApiResult.success();
     }

+ 15 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportResult.java

@@ -1,10 +1,15 @@
 package com.usky.fire.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+
 import java.time.LocalDate;
+
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.time.LocalDateTime;
 import java.io.Serializable;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -78,5 +83,15 @@ public class ReportResult implements Serializable {
      */
     private Integer tenantId;
 
+    /**
+     * 报告状态
+     */
+    @TableField(exist = false)
+    private Integer reportStatus;
 
+    /**
+     * 阅读时间
+     */
+    @TableField(exist = false)
+    private LocalDateTime readTime;
 }

+ 67 - 12
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportResultServiceImpl.java

@@ -6,9 +6,9 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
-import com.usky.fire.domain.BaseCompanyPerson;
-import com.usky.fire.domain.ReportConfig;
-import com.usky.fire.domain.ReportResult;
+import com.usky.fire.domain.*;
+import com.usky.fire.mapper.BaseCompanyMapper;
+import com.usky.fire.mapper.DemReportInfoMapper;
 import com.usky.fire.mapper.ReportResultMapper;
 import com.usky.fire.service.ReportConfigService;
 import com.usky.fire.service.ReportResultService;
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -33,23 +34,77 @@ import java.util.Map;
 public class ReportResultServiceImpl extends AbstractCrudService<ReportResultMapper, ReportResult> implements ReportResultService {
     @Autowired
     private ReportConfigService reportConfigService;
+    @Autowired
+    private BaseCompanyMapper baseCompanyMapper;
+    @Autowired
+    private DemReportInfoMapper demReportInfoMapper;
 
     @Override
-    public CommonPage<ReportResult> reportResultList(Integer companyId, String sourceType, Integer pageNum,
-                                                     Integer pageSize) {
-        IPage<ReportResult> page = new Page<>(pageNum, pageSize);
+    public CommonPage<ReportResult> reportResultList(Integer companyId, String sourceType, Integer pageNum, Integer pageSize) {
+        Page<ReportResult> page = new Page<>(pageNum, pageSize);
+
         LambdaQueryWrapper<ReportResult> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(ReportResult::getObjectId, companyId)
-                    .orderByDesc(ReportResult::getId);
-        page = this.page(page, queryWrapper);
-        return ToCommonPage(page);
+                .orderByDesc(ReportResult::getId);
+        IPage<ReportResult> resultPage = this.page(page, queryWrapper);
+        List<ReportResult> resultList = resultPage.getRecords();
+
+        List<Integer> objectIdList = resultList.stream()
+                .map(ReportResult::getObjectId)
+                .distinct()
+                .collect(Collectors.toList());
+
+        if (objectIdList.isEmpty()) {
+            return ToCommonPage(resultPage);
+        }
+
+        LambdaQueryWrapper<BaseCompany> baseCompanyQuery = Wrappers.lambdaQuery();
+        baseCompanyQuery.select(BaseCompany::getId, BaseCompany::getCompanyId)
+                .in(BaseCompany::getId, objectIdList);
+        List<BaseCompany> baseCompanyList = baseCompanyMapper.selectList(baseCompanyQuery);
+
+        List<String> companyIdList = baseCompanyList.stream()
+                .map(BaseCompany::getCompanyId)
+                .distinct()
+                .collect(Collectors.toList());
+
+        if (companyIdList.isEmpty()) {
+            return ToCommonPage(resultPage);
+        }
+
+        LambdaQueryWrapper<DemReportInfo> demReportQuery = Wrappers.lambdaQuery();
+        demReportQuery.select(DemReportInfo::getIsRead, DemReportInfo::getReadTime, DemReportInfo::getCompanyId)
+                .in(DemReportInfo::getCompanyId, companyIdList);
+        List<DemReportInfo> demReportInfoList = demReportInfoMapper.selectList(demReportQuery);
+
+        Map<String, DemReportInfo> demReportMap = demReportInfoList.stream()
+                .collect(Collectors.toMap(DemReportInfo::getCompanyId, info -> info, (existing, replacement) -> existing));
+
+        Map<Integer, String> baseCompanyMap = baseCompanyList.stream()
+                .collect(Collectors.toMap(BaseCompany::getId, BaseCompany::getCompanyId, (existing, replacement) -> existing));
+
+        for (ReportResult reportResult : resultList) {
+            Integer objectId = reportResult.getObjectId();
+            String relatedCompanyId = baseCompanyMap.get(objectId);
+
+            if (relatedCompanyId != null) {
+                DemReportInfo demReportInfo = demReportMap.get(relatedCompanyId);
+                if (demReportInfo != null) {
+                    reportResult.setReportStatus(demReportInfo.getIsRead());
+                    reportResult.setReadTime(demReportInfo.getReadTime());
+                }
+            }
+        }
+
+        return ToCommonPage(resultPage);
     }
+
     @Override
     public CommonPage<Object> newReportResultList(String reportObject, Integer pageNum, Integer pageSize) {
         List<Object> list = new ArrayList<>();
         IPage<ReportResult> page = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<ReportResult> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.like(StringUtils.isNotBlank(reportObject),ReportResult::getReportObject, reportObject)
+        queryWrapper.like(StringUtils.isNotBlank(reportObject), ReportResult::getReportObject, reportObject)
                 .orderByDesc(ReportResult::getId);
         page = this.page(page, queryWrapper);
         LambdaQueryWrapper<ReportConfig> queryWrapper1 = Wrappers.lambdaQuery();
@@ -61,8 +116,8 @@ public class ReportResultServiceImpl extends AbstractCrudService<ReportResultMap
                 map.put("reportObject", page.getRecords().get(i).getReportObject());
                 map.put("overallScore", page.getRecords().get(i).getOverallScore());
                 map.put("createDate", page.getRecords().get(i).getCreateDate());
-                for (int j = 0; j < list1.size(); j++){
-                    if (page.getRecords().get(i).getConfigId().equals(list1.get(j).getId())){
+                for (int j = 0; j < list1.size(); j++) {
+                    if (page.getRecords().get(i).getConfigId().equals(list1.get(j).getId())) {
                         map.put("reportName", list1.get(j).getReportName());
                     }
                 }