瀏覽代碼

Merge remote-tracking branch 'origin/V0.0.6-iot' into V0.0.6-iot

jingyuanchao 1 年之前
父節點
當前提交
c05b6c3fc7
共有 50 個文件被更改,包括 642 次插入276 次删除
  1. 38 2
      project_data/sql/0.0.6-iot/soc/soc.sql
  2. 11 5
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskReportVo.java
  3. 7 5
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/vo/CoreEduTrainingTaskReportVo.java
  4. 3 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  5. 26 12
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  6. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingTaskController.java
  7. 17 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  8. 58 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/ValueCellWriteHandler.java
  9. 39 25
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/controller/CoreEvaluateTaskController.java
  10. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/dto/EvaluateTaskStatisticsDTO.java
  11. 19 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/service/impl/CoreEvaluateTaskServiceImpl.java
  12. 11 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/vo/EvaluateTaskExportVO.java
  13. 13 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreIntroduceLetterServiceImpl.java
  14. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreOutInRecordServiceImpl.java
  15. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/monitor/controller/MonitorAccessReportController.java
  16. 11 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/monitor/service/impl/MonitorAccessReportServiceImpl.java
  17. 15 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/monitor/vo/MonitoringAccessVO.java
  18. 24 18
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/controller/ResumptionReportController.java
  19. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/dto/ResumptionDTO.java
  20. 26 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/impl/ResumptionReportServiceImpl.java
  21. 10 10
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/vo/IntrusionTestReportVO.java
  22. 13 13
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/vo/ResumptionDayVO.java
  23. 25 11
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/controller/SafetyInspectReportController.java
  24. 17 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/service/impl/SafetyInspectServiceImpl.java
  25. 12 12
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/vo/SafetyInspectVO.java
  26. 11 11
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/vo/SelfInspectVO.java
  27. 3 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java
  28. 7 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/DvrDiskController.java
  29. 1 4
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotSensorController.java
  30. 8 2
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDiagnosisController.java
  31. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotDvrChannelMapper.java
  32. 32 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/VideoIntegrityCheckLogMapper.java
  33. 2 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotDvsDiskService.java
  34. 1 1
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoDiagnosisService.java
  35. 13 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotCommonSensorServiceImpl.java
  36. 11 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotDvrDiskServiceImpl.java
  37. 22 13
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoDiagnosisServiceImpl.java
  38. 0 1
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/dvrDisk/DvrDiskAppPageVo.java
  39. 12 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/dvrDisk/DvrDiskPageVo.java
  40. 9 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/sensor/SensorPageVo.java
  41. 2 2
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisIntegrityVo.java
  42. 17 5
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisWebPageVo.java
  43. 5 0
      soc-modules/soc-modules-iot/src/main/resources/mapper/DvrDiskMapper.xml
  44. 20 5
      soc-modules/soc-modules-iot/src/main/resources/mapper/IotDvrChannelMapper.xml
  45. 1 1
      soc-modules/soc-modules-iot/src/main/resources/mapper/IotSensorMapper.xml
  46. 38 68
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrChannelServiceImpl.java
  47. 13 5
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoIntegrityCheckServiceImpl.java
  48. 2 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/util/RedisCheckRepeatDataUtil.java
  49. 4 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java
  50. 2 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

文件差異過大導致無法顯示
+ 38 - 2
project_data/sql/0.0.6-iot/soc/soc.sql


+ 11 - 5
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillTaskReportVo.java

@@ -18,22 +18,28 @@ import lombok.Data;
 public class CoreDrillTaskReportVo {
 
     @ColumnWidth(15)
-    @ExcelProperty(index = 0,value = "序号")
+    @ExcelProperty(index = 0,value = {"${cellWriterValue}","序号"})
     private Integer no;
+
     @ColumnWidth(15)
-    @ExcelProperty(index = 1,value = "单位名称")
+    @ExcelProperty(index = 1,value = {"${cellWriterValue}","地区"})
+    @ApiModelProperty(value = "地区")
+    private String city;
+
+    @ColumnWidth(25)
+    @ExcelProperty(value = {"${cellWriterValue}","单位名称"})
     @ApiModelProperty(value = "机构名称")
     private String orgName;
     @ColumnWidth(15)
-    @ExcelProperty(index = 2,value = "应完成数")
+    @ExcelProperty(value = {"${cellWriterValue}","应完成数"})
     @ApiModelProperty(value = "应演练数量")
     private Integer shouldFinish;
     @ColumnWidth(15)
-    @ExcelProperty(index = 3,value = "已完成数")
+    @ExcelProperty(value = {"${cellWriterValue}","已完成数"})
     @ApiModelProperty(value = "已培演练数量")
     private Integer finish;
     @ColumnWidth(15)
-    @ExcelProperty(index = 4,value = "评分")
+    @ExcelProperty(value = {"${cellWriterValue}","评分"})
     @ApiModelProperty(value = "评分")
     private String score;
 

+ 7 - 5
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/vo/CoreEduTrainingTaskReportVo.java

@@ -19,24 +19,26 @@ public class CoreEduTrainingTaskReportVo {
 
 
 
-    @ExcelProperty(index = 0,value = "序号")
+    @ExcelProperty(index = 0,value = {"${cellWriterValue}","序号"})
     @ApiModelProperty(value = "机构")
     private Integer no;
 
+    @ExcelProperty(index = 1,value = {"${cellWriterValue}","地区"})
+    private String city;
 
-    @ExcelProperty(index = 1,value = "单位名称")
+    @ExcelProperty(value = {"${cellWriterValue}","单位名称"})
     @ApiModelProperty(value = "机构名称")
     private String orgName;
 
-    @ExcelProperty(index = 2,value = "应完成数")
+    @ExcelProperty(value = {"${cellWriterValue}","应完成数"})
     @ApiModelProperty(value = "应培训数量")
     private Integer shouldFinish;
 
-    @ExcelProperty(index = 3,value = "已完成数")
+    @ExcelProperty(value = {"${cellWriterValue}","已完成数"})
     @ApiModelProperty(value = "已培训数量")
     private Integer finish;
 
-    @ExcelProperty(index = 4,value = "完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","完成率"})
     @ApiModelProperty(value = "培训完成率")
     private String finishRate;
 

+ 3 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java

@@ -44,6 +44,7 @@ import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.*;
 
+import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -995,7 +996,8 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
             dataVos.add(v);
         }
         accessPdf.setDataVos(dataVos);
-        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.MONITOR_ACCESS, accessPdfVO.getOrgName());
+        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> remoteOrgService.selectOrgById(accessPdfVO.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.MONITOR_ACCESS, sysOrg.getName());
         accessPdf.setDest(fileName);
         return accessPdf;
     }

+ 26 - 12
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -49,6 +49,7 @@ import com.xunmei.core.drill.mapper.CoreDrillTaskToRoleMapper;
 import com.xunmei.core.drill.mapper.CoreDrillTaskToUserMapper;
 import com.xunmei.core.drill.service.ICoreDrillTaskService;
 import com.xunmei.core.drill.service.ICoreDrillTaskToUserService;
+import com.xunmei.core.edu.service.impl.ValueCellWriteHandler;
 import com.xunmei.core.registerbook.service.ICoreRegisterBookPdfService;
 import com.xunmei.common.core.thread.ThreadPoolConfig;
 import com.xunmei.system.api.*;
@@ -572,6 +573,13 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 
     @Override
     public void exportReport(CoreDrillTaskReportDto request, HttpServletResponse response) {
+        if (ObjectUtil.isEmpty(request.getRange())) {
+            request.setStartTime(DateUtil.beginOfMonth(request.getStartTime()));
+            request.setEndTime(DateUtil.endOfMonth(request.getEndTime()));
+        } else {
+            request.setStartTime(DateUtil.beginOfMonth(request.getRange()[0]));
+            request.setEndTime(DateUtil.endOfMonth(request.getRange()[1]));
+        }
         final List<CoreDrillTaskReportVo> list = this.selectCoreDrillTaskReport(request);
         if (ObjectUtil.isEmpty(list)) {
             throw new SystemException("未获取到数据");
@@ -580,13 +588,15 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             task.setNo(list.indexOf(task) + 1);
         }
         try {
+            String baseHeaderName="预案演练情况表";
             // 设置响应头
-            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("预案演练统计报表", "utf-8"));
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(baseHeaderName, "utf-8"));
             response.setContentType("application/octet-stream;charset=UTF-8");
             response.setCharacterEncoding("utf-8");
+            String header=baseHeaderName+"("+DateUtil.format( request.getStartTime(),"yyyy-MM")+"~"+DateUtil.format( request.getEndTime(),"yyyy-MM")+")";
             // 数据导出
             EasyExcel.write(response.getOutputStream(), CoreDrillTaskReportVo.class)
-                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("预案演练统计报表").doWrite(list);
+                    .registerWriteHandler(new ValueCellWriteHandler(header)).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet(baseHeaderName).doWrite(list);
         } catch (Exception e) {
             e.printStackTrace();
             // 重置response
@@ -611,24 +621,27 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         if (ObjectUtil.isAllEmpty(planId, planIdList)) {
             return new ArrayList<>();
         }
-        if (ObjectUtil.isEmpty(request.getRange())) {
-            request.setStartTime(DateUtil.beginOfMonth(request.getStartTime()));
-            request.setEndTime(DateUtil.endOfMonth(request.getEndTime()));
-        } else {
-            request.setStartTime(DateUtil.beginOfMonth(request.getRange()[0]));
-            request.setEndTime(DateUtil.endOfMonth(request.getRange()[0]));
-        }
-
 
         Long orgId = request.getOrgId();
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         request.setOrgPath(sysOrg.getPath());
 
-        List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgTreeListByCurOrgId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        List<SysOrg> sysOrgList;
+        if (null==sysOrg.getType()){
+            return Collections.emptyList();
+        }
+        if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社")) {
+            sysOrgList = orgService.selectSysOrgByPathAndType(sysOrg.getPath(), 3, SecurityConstants.INNER);
+        } else if (sysOrg.getType() == 3) {
+            sysOrgList = orgService.selectSysOrgByPathAndType(sysOrg.getPath(), 4, SecurityConstants.INNER);
+        } else {
+            sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgTreeListByCurOrgId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        }
         if (ObjectUtil.isEmpty(sysOrgList)) {
             //这种情况一般来查询到网点了,网点无下级机构,需要展示网点自己的数据
             sysOrgList.add(sysOrg);
         }
+
         List<CoreDrillTaskReportVo> result = new ArrayList<>();
         List<CoreDrillTaskReportVo> list = coreDrillTaskMapper.selectReport(request, planId, planIdList);
         if (list.isEmpty()) {
@@ -658,6 +671,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 //                List<CoreDrillTaskReportVo> childrenOrgData = list.stream().filter(vo -> vo.getOrgPath().startsWith(org.getPath())).collect(Collectors.toList());
                 CoreDrillTaskReportVo reportVo = new CoreDrillTaskReportVo();
                 reportVo.setOrgId(org.getId());
+                reportVo.setCity(org.getAffiliatedArea());
                 reportVo.setOrgName(org.getShortName());
                 if (ObjectUtil.isEmpty(childrenOrgData)) {
                     reportVo.setShouldFinish(0);
@@ -754,7 +768,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     public AjaxResult buildDrillTaskPdf(Long id) {
         CoreDrillTaskDetailVo task = this.selectCoreDrillTaskById(id);
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(task.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.SAFETY_DRILL, task.getOrgName());
+        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.SAFETY_DRILL, sysOrg.getName());
         Map<String, Object> data = this.getFtlDrill(task);
         data.put("fileName", fileName);
         data.put("id", id);

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingTaskController.java

@@ -83,14 +83,14 @@ public class CoreEduTrainingTaskController extends BaseController {
         return toAjax(coreEduTrainingTaskService.deleteCoreEduTrainingTaskByIds(ids));
     }
 
-    @ApiOperation(value = "教育培训统计表")
+    @ApiOperation(value = "教育培训统计情况表")
     @RequiresPermissions("core:eduTask:list")
     @PostMapping("report")
     public AjaxResult report(@RequestBody @Validated CoreEduTrainingTaskReportDto request) {
         return success(coreEduTrainingTaskService.selectCoreEduTrainingTaskReport(request));
     }
 
-    @ApiOperation(value = "导出教育培训统计表")
+    @ApiOperation(value = "导出教育培训统计情况表")
     @RequiresPermissions("core:eduTask:list")
     @PostMapping("exportReport")
     public void exportReport(CoreEduTrainingTaskReportDto request,HttpServletResponse response) {

+ 17 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -613,13 +613,15 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             task.setNo(list.indexOf(task) + 1);
         }
         try {
+            String baseHeaderName="教育培训情况表";
             // 设置响应头
-            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("教育培训统计报表", "utf-8"));
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(baseHeaderName, "utf-8"));
             response.setContentType("application/octet-stream;charset=UTF-8");
             response.setCharacterEncoding("utf-8");
+            String header=baseHeaderName+"("+DateUtil.format( request.getDate(),"yyyy-MM")+")";
             // 数据导出
             EasyExcel.write(response.getOutputStream(), CoreEduTrainingTaskReportVo.class)
-                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("教育培训统计报表").doWrite(list);
+                    .registerWriteHandler(new ValueCellWriteHandler(header)).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet(baseHeaderName).doWrite(list);
         } catch (Exception e) {
             // 重置response
             response.reset();
@@ -651,7 +653,17 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         request.setOrgPath(sysOrg.getPath());
 
-        List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgTreeListByCurOrgId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        List<SysOrg> sysOrgList;
+        if (null==sysOrg.getType()){
+            return Collections.emptyList();
+        }
+        if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社")) {
+            sysOrgList = orgService.selectSysOrgByPathAndType(sysOrg.getPath(), 3, SecurityConstants.INNER);
+        } else if (sysOrg.getType() == 3) {
+            sysOrgList = orgService.selectSysOrgByPathAndType(sysOrg.getPath(), 4, SecurityConstants.INNER);
+        } else {
+            sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgTreeListByCurOrgId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        }
         if (ObjectUtil.isEmpty(sysOrgList)) {
             //这种情况一般来查询到网点了,网点无下级机构,需要展示网点自己的数据
             sysOrgList.add(sysOrg);
@@ -693,6 +705,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
 
             CoreEduTrainingTaskReportVo reportVo = new CoreEduTrainingTaskReportVo();
             reportVo.setOrgId(org.getId());
+            reportVo.setCity(org.getAffiliatedArea());
             reportVo.setOrgName(org.getName());
             reportVo.setShouldFinish(totalShouldFinish);
             reportVo.setFinish(totalFinish);
@@ -767,7 +780,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     public AjaxResult buildEduPdf(Long id) {
         CoreEduTrainingTaskDetailVo task = this.selectCoreEduTrainingTaskById(id);
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(task.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.EDUCATION_TRAINING, sysOrg.getShortName());
+        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.EDUCATION_TRAINING, sysOrg.getName());
         Map<String, Object> data = this.getFtlEdu(task);
         data.put("fileName", fileName);
         data.put("id", id);

+ 58 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/ValueCellWriteHandler.java

@@ -0,0 +1,58 @@
+package com.xunmei.core.edu.service.impl;
+
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.write.handler.CellWriteHandler;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.springframework.util.PropertyPlaceholderHelper;
+
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @author 冥河教主
+ * @Date 2021/02/08 16:00
+ */
+public class ValueCellWriteHandler implements CellWriteHandler {
+    private String cellWritervalue;
+    PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper("${","}");
+
+    public ValueCellWriteHandler(String cellvalue) {
+        this.cellWritervalue = cellvalue;
+    }
+
+    @Override
+    public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
+                                 Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+        if (head != null) {
+            List<String> headNameList = head.getHeadNameList();
+            if (CollectionUtils.isNotEmpty(headNameList)) {
+                Properties properties = new Properties();
+                properties.setProperty("cellWriterValue", cellWritervalue);
+                for (int i = 0; i < headNameList.size(); i++) {
+                    headNameList.set(i, propertyPlaceholderHelper.replacePlaceholders(headNameList.get(i), properties));
+                }
+            }
+        }
+    }
+
+    @Override
+    public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+
+    }
+
+    @Override
+    public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+
+    }
+
+    @Override
+    public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+
+    }
+
+}

+ 39 - 25
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/controller/CoreEvaluateTaskController.java

@@ -89,30 +89,37 @@ public class CoreEvaluateTaskController extends BaseController {
     @Log(title = "外包履职评价导出", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(EvaluateTaskStatisticsDTO evaluateTaskStatisticsDTO, HttpServletResponse response) throws IOException {
+        SysOrg sysOrg = remoteOrgService.selectSysOrgById(evaluateTaskStatisticsDTO.getOrgId(), SecurityConstants.INNER);
+        evaluateTaskStatisticsDTO.setType(sysOrg.getType());
+        evaluateTaskStatisticsDTO.setOrgPath(sysOrg.getPath());
+        evaluateTaskStatisticsDTO.setOrgShortName(sysOrg.getShortName());
+
         if (null != evaluateTaskStatisticsDTO.getPlanId()) {
             CoreEvaluatePlanVO coreEvaluatePlanVO = coreEvaluatePlanService.selectCoreEvaluatePlanById(evaluateTaskStatisticsDTO.getPlanId());
             LocalDate localDate = LocalDate.now();
-            try {
-                switch (coreEvaluatePlanVO.getEvaluateCycle()) {
-                    case "0":
-                        evaluateTaskStatisticsDTO.setStartTime(DateUtils.parseDate(localDate.getYear() + "-" + localDate.getMonthValue() + FORMAT_FIRST, FORMAT_SECOND, FORMAT_MILLISECOND));
-                        String lastDay = coreMonitoringRetrievalTaskService.getLastDay(localDate.getYear(), localDate.getMonthValue(), FORMAT_DAY);
-                        evaluateTaskStatisticsDTO.setEndTime(DateUtils.parseDate(lastDay + FORMAT_LAST, FORMAT_SECOND, FORMAT_MILLISECOND));
-                        break;
-                    case "1":
-                        DateTime beginOfQuarter = DateUtil.beginOfQuarter(new java.util.Date());
-                        DateTime endOfQuarter = DateUtil.endOfQuarter(new Date());
-                        evaluateTaskStatisticsDTO.setStartTime(beginOfQuarter);
-                        evaluateTaskStatisticsDTO.setEndTime(endOfQuarter);
-                        break;
-                    default:
-                        evaluateTaskStatisticsDTO.setStartTime(DateUtils.parseDate(localDate.getYear() + FORMAT_DAY_FIRST, FORMAT_SECOND, FORMAT_MILLISECOND));
-                        evaluateTaskStatisticsDTO.setEndTime(DateUtils.parseDate(localDate.getYear() + FORMAT_DAY_LAST, FORMAT_SECOND, FORMAT_MILLISECOND));
-                        break;
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+            evaluateTaskStatisticsDTO.setEvaluateName(coreEvaluatePlanVO.getEvaluateName());
+            evaluateTaskStatisticsDTO.setTitle(buildStatisticeTitle(evaluateTaskStatisticsDTO,coreEvaluatePlanVO));
+//            try {
+//                switch (coreEvaluatePlanVO.getEvaluateCycle()) {
+//                    case "0":
+//                        evaluateTaskStatisticsDTO.setStartTime(DateUtils.parseDate(localDate.getYear() + "-" + localDate.getMonthValue() + FORMAT_FIRST, FORMAT_SECOND, FORMAT_MILLISECOND));
+//                        String lastDay = coreMonitoringRetrievalTaskService.getLastDay(localDate.getYear(), localDate.getMonthValue(), FORMAT_DAY);
+//                        evaluateTaskStatisticsDTO.setEndTime(DateUtils.parseDate(lastDay + FORMAT_LAST, FORMAT_SECOND, FORMAT_MILLISECOND));
+//                        break;
+//                    case "1":
+//                        DateTime beginOfQuarter = DateUtil.beginOfQuarter(new java.util.Date());
+//                        DateTime endOfQuarter = DateUtil.endOfQuarter(new Date());
+//                        evaluateTaskStatisticsDTO.setStartTime(beginOfQuarter);
+//                        evaluateTaskStatisticsDTO.setEndTime(endOfQuarter);
+//                        break;
+//                    default:
+//                        evaluateTaskStatisticsDTO.setStartTime(DateUtils.parseDate(localDate.getYear() + FORMAT_DAY_FIRST, FORMAT_SECOND, FORMAT_MILLISECOND));
+//                        evaluateTaskStatisticsDTO.setEndTime(DateUtils.parseDate(localDate.getYear() + FORMAT_DAY_LAST, FORMAT_SECOND, FORMAT_MILLISECOND));
+//                        break;
+//                }
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
         }
         coreEvaluateTaskService.export(evaluateTaskStatisticsDTO, response);
     }
@@ -130,6 +137,16 @@ public class CoreEvaluateTaskController extends BaseController {
         if (null != evaluateTaskStatisticsDTO.getPlanId()) {
             CoreEvaluatePlanVO coreEvaluatePlanVO = coreEvaluatePlanService.selectCoreEvaluatePlanById(evaluateTaskStatisticsDTO.getPlanId());
             LocalDate localDate = LocalDate.now();
+            String dateTitle =buildStatisticeTitle(evaluateTaskStatisticsDTO,coreEvaluatePlanVO);
+            ajaxResult.put("tittle", coreEvaluatePlanVO.getEvaluateName() + "(" + dateTitle);
+        }
+        ajaxResult.put(AjaxResult.DATA_TAG, coreEvaluateTaskService.statistics(evaluateTaskStatisticsDTO));
+        return ajaxResult;
+    }
+
+    private String buildStatisticeTitle(EvaluateTaskStatisticsDTO evaluateTaskStatisticsDTO,CoreEvaluatePlanVO coreEvaluatePlanVO)
+    {
+            LocalDate localDate = LocalDate.now();
             String dateTitle = null;
             String year;
             String month;
@@ -199,10 +216,7 @@ public class CoreEvaluateTaskController extends BaseController {
             } catch (Exception e) {
                 e.printStackTrace();
             }
-            ajaxResult.put("tittle", coreEvaluatePlanVO.getEvaluateName() + "(" + dateTitle);
-        }
-        ajaxResult.put(AjaxResult.DATA_TAG, coreEvaluateTaskService.statistics(evaluateTaskStatisticsDTO));
-        return ajaxResult;
+            return dateTitle;
     }
 
     /**

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/dto/EvaluateTaskStatisticsDTO.java

@@ -30,4 +30,6 @@ public class EvaluateTaskStatisticsDTO {
     private Date startTime;
     private Date endTime;
     private String searchTime;
+
+    private String title;
 }

+ 19 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/service/impl/CoreEvaluateTaskServiceImpl.java

@@ -18,6 +18,7 @@ import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.edu.service.impl.ValueCellWriteHandler;
 import com.xunmei.core.evaluate.domain.CoreEvaluateContent;
 import com.xunmei.core.evaluate.domain.CoreEvaluateTask;
 import com.xunmei.core.evaluate.domain.CoreEvaluateTaskContent;
@@ -26,6 +27,7 @@ import com.xunmei.core.evaluate.dto.EvaluateTaskContentDTO;
 import com.xunmei.core.evaluate.dto.EvaluateTaskDTO;
 import com.xunmei.core.evaluate.dto.EvaluateTaskStatisticsDTO;
 import com.xunmei.core.evaluate.mapper.*;
+import com.xunmei.core.evaluate.service.ICoreEvaluatePlanService;
 import com.xunmei.core.evaluate.service.ICoreEvaluateTaskService;
 import com.xunmei.core.evaluate.vo.*;
 import com.xunmei.system.api.RemoteOrgService;
@@ -68,6 +70,9 @@ public class CoreEvaluateTaskServiceImpl extends ServiceImpl<CoreEvaluateTaskMap
     @Autowired
     private CoreEvaluateTaskUserMapper coreEvaluateTaskUserMapper;
 
+    @Autowired
+    private ICoreEvaluatePlanService coreEvaluatePlanService;
+
     @Override
     public TableDataInfo<CoreEvaluateTaskVO> selectPage(EvaluateTaskDTO evaluateTaskDTO) {
         Page<CoreEvaluateTaskVO> page;
@@ -147,7 +152,12 @@ public class CoreEvaluateTaskServiceImpl extends ServiceImpl<CoreEvaluateTaskMap
             SysOrg sysOrg = remoteOrgService.selectSysOrgById(evaluateTaskStatisticsDTO.getOrgId(), SecurityConstants.INNER);
             orgName = sysOrg.getName();
         }
-        List<SysOrg> sysOrgs = remoteOrgService.selectSysOrgByParentId(evaluateTaskStatisticsDTO.getOrgId(), SecurityConstants.INNER);
+        List<SysOrg> sysOrgs =new ArrayList<>();
+        if (evaluateTaskStatisticsDTO.getType() < 3 || evaluateTaskStatisticsDTO.getOrgShortName().endsWith("地区行社")) {
+            sysOrgs = orgService.selectSysOrgByPathAndType(evaluateTaskStatisticsDTO.getOrgPath(), 3, SecurityConstants.INNER);
+        } else if (evaluateTaskStatisticsDTO.getType() == 3) {
+            sysOrgs = orgService.selectSysOrgByPathAndType(evaluateTaskStatisticsDTO.getOrgPath(), 4, SecurityConstants.INNER);
+        }
         List<EvaluateTaskExportVO> list = new ArrayList<>();
         Double all = 0d;
         for (int i = 0; i < sysOrgs.size(); i++) {
@@ -189,12 +199,18 @@ public class CoreEvaluateTaskServiceImpl extends ServiceImpl<CoreEvaluateTaskMap
         if (list.size() > 10000) {
             throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
         }
+
+        String baseHeaderName=evaluateTaskStatisticsDTO.getEvaluateName();
+        String header=baseHeaderName+"(" + evaluateTaskStatisticsDTO.getTitle();
+
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("【" + orgName + "】-监控调阅报表" + DateHelper.getDateString(new Date()), "UTF-8");
+        String fileName = URLEncoder.encode("【" + orgName + "】-外包履职评价情况表" + DateHelper.getDateString(new Date()), "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         // 调用EasyExcel的导出方法
-        EasyExcel.write(response.getOutputStream(), EvaluateTaskExportVO.class).sheet("Sheet1").doWrite(list);
+        EasyExcel.write(response.getOutputStream(), EvaluateTaskExportVO.class)
+                .registerWriteHandler(new ValueCellWriteHandler(header))
+                .sheet(baseHeaderName).doWrite(list);
     }
 
     @Override

+ 11 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/vo/EvaluateTaskExportVO.java

@@ -1,6 +1,7 @@
 package com.xunmei.core.evaluate.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import lombok.Data;
 
 /**
@@ -9,12 +10,18 @@ import lombok.Data;
  */
 @Data
 public class EvaluateTaskExportVO {
-    @ExcelProperty("序号")
+    @ExcelProperty(value = {"${cellWriterValue}","序号"})
     private Integer orderNum;
-    @ExcelProperty("评价机构")
+
+    @ColumnWidth(25)
+    @ExcelProperty(value = {"${cellWriterValue}","评价机构"})
     private String orgName;
-    @ExcelProperty("被评价机构名称")
+
+    @ColumnWidth(25)
+    @ExcelProperty(value = {"${cellWriterValue}","被评价机构名称"})
     private String evaluatedOrgName;
-    @ExcelProperty("评价得分")
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"${cellWriterValue}","评价得分"})
     private Double score;
 }

+ 13 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreIntroduceLetterServiceImpl.java

@@ -33,6 +33,7 @@ import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
+import io.netty.util.internal.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -154,7 +155,18 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet
             List<CoreOutInRecord> letterOutInRecordList = coreOutInRecordMapper.findLetterOutInRecordList(records.stream().map(x -> x.getId()).collect(Collectors.toList()).toArray(new Long[records.size()]));
             for (CoreIntroduceLetterVo record : records) {
                 List<Long> orgIds = toOrgList.stream().filter(toOrg -> toOrg.getLetterId().equals(record.getId())).map(CoreIntroduceLetterToOrg::getOrgId).collect(Collectors.toList());
-                String orgNames = orgIds.stream().map(orgId -> orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get().getShortName()).collect(Collectors.joining(","));
+                String orgNames = orgIds.stream().map(orgId ->{
+                    final SysOrg sysOrg = orgList.stream().filter(org -> org.getId().equals(orgId)).findFirst().get();
+                    if(ObjectUtil.isNotEmpty(sysOrg))
+                    {
+                        if(StringUtil.isNullOrEmpty(sysOrg.getAffiliatedArea()) || sysOrg.getType()<4 || sysOrg.getShortName().endsWith("地区行社"))
+                        {
+                            return sysOrg.getShortName();
+                        }
+                        return sysOrg.getAffiliatedBank()+"-"+ sysOrg.getShortName();
+                    }
+                    return StringUtil.EMPTY_STRING;
+                }).collect(Collectors.joining(","));
                 record.setReceptionOrgIds(orgIds);
                 record.setReceptionOrgNames(orgNames);
                 record.setHaveOutInRecord(letterOutInRecordList.stream().anyMatch(x -> ObjectUtil.equal(x.getLetterId(), record.getId())));

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/letter/service/impl/CoreOutInRecordServiceImpl.java

@@ -195,7 +195,7 @@ public class CoreOutInRecordServiceImpl extends ServiceImpl<CoreOutInRecordMappe
         final CoreOutInRecordVo record = selectCoreOutInRecordById(id);
         final List<SysOrgVO> orgList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
         final SysOrgVO sysOrg = orgList.stream().filter(org -> ObjectUtil.equal(record.getOrgId(), org.getId())).findFirst().get();
-        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.VISIT_RECORD, record.getOrgName());
+        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.VISIT_RECORD, sysOrg.getName());
         Map<String, Object> data = this.getFtlEdu(record, orgList);
         data.put("fileName", fileName);
         data.put("id", id);

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/monitor/controller/MonitorAccessReportController.java

@@ -58,9 +58,9 @@ public class MonitorAccessReportController {
     /**
      * 导出excel
      */
-    @ApiOperation(value = "监控调阅表导出")
+    @ApiOperation(value = "监控调阅情况表导出")
     @RequiresPermissions("core:monitorAccessReport:export")
-    @Log(title = "监控调阅表", businessType = BusinessType.EXPORT)
+    @Log(title = "监控调阅情况表", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(MonitoringAccessDTO request, HttpServletResponse response) throws IOException {
         if (null==request.getStartDate()||null==request.getEndDate()){

+ 11 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/monitor/service/impl/MonitorAccessReportServiceImpl.java

@@ -9,6 +9,7 @@ import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.edu.service.impl.ValueCellWriteHandler;
 import com.xunmei.core.reportForms.monitor.dto.MonitoringAccessDTO;
 import com.xunmei.core.reportForms.monitor.mapper.MonitorAccessReportMapper;
 import com.xunmei.core.reportForms.monitor.service.MonitorAccessReportService;
@@ -173,12 +174,17 @@ public class MonitorAccessReportServiceImpl implements MonitorAccessReportServic
         if (monitoringAccessVOS.size() > 10000) {
             throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
         }
+        String baseHeaderName="监控调阅情况表";
+        String header=getTitle(monitoringAccessDTO);
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("【" + orgName + "】-监控调阅报表" + DateHelper.getDateString(new Date()), "UTF-8");
+        String fileName = URLEncoder.encode("【" + orgName + "】-"+baseHeaderName + DateHelper.getDateString(new Date()), "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         // 调用EasyExcel的导出方法
-        EasyExcel.write(response.getOutputStream(), MonitoringAccessVO.class).sheet("Sheet1").doWrite(monitoringAccessVOS);
+        EasyExcel.write(response.getOutputStream(), MonitoringAccessVO.class)
+                .registerWriteHandler(new ValueCellWriteHandler(header))
+                .sheet(baseHeaderName)
+                .doWrite(monitoringAccessVOS);
     }
 
     @Override
@@ -186,7 +192,7 @@ public class MonitorAccessReportServiceImpl implements MonitorAccessReportServic
         if (null == monitoringAccessDTO.getOrgId()) {
             monitoringAccessDTO.setOrgId(SecurityUtils.getLoginUser().getOrgId());
         }
-        SysOrg sysOrg = remoteOrgService.selectSysOrgById(monitoringAccessDTO.getOrgId(), SecurityConstants.INNER);
+//        SysOrg sysOrg = remoteOrgService.selectSysOrgById(monitoringAccessDTO.getOrgId(), SecurityConstants.INNER);
         String st = null;
         String en = null;
         try {
@@ -197,7 +203,8 @@ public class MonitorAccessReportServiceImpl implements MonitorAccessReportServic
         } catch (Exception e) {
             e.printStackTrace();
         }
-        String title = sysOrg.getShortName() + "监控调阅情况表" + "(" + st + "~" + en + ")";
+//        String title = sysOrg.getShortName() + "监控调阅情况表" + "(" + st + "~" + en + ")";
+        String title =  "监控调阅情况表" + "(" + st + "~" + en + ")";
         return title;
     }
 

+ 15 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/monitor/vo/MonitoringAccessVO.java

@@ -2,6 +2,7 @@ package com.xunmei.core.reportForms.monitor.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -16,30 +17,36 @@ public class MonitoringAccessVO {
     /**
      * 序号
      */
-    @ExcelProperty("序号")
+    @ExcelProperty(value = {"${cellWriterValue}","序号"})
     private Integer orderNum;
-    @ExcelProperty("地区")
+    @ExcelProperty(value = {"${cellWriterValue}","地区"})
     private String city;
 
-    @ExcelProperty("单位名称")
+    @ColumnWidth(25)
+    @ExcelProperty(value = {"${cellWriterValue}","单位名称"})
     @ApiModelProperty(value = "机构名称")
     private String orgName;
 
-    @ExcelProperty("网点数量")
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"${cellWriterValue}","网点数量"})
     @ApiModelProperty(value = "网点数量")
     private Integer networkNumber;
 
-    @ExcelProperty("应调阅次数")
+    @ColumnWidth(17)
+    @ExcelProperty(value = {"${cellWriterValue}","应调阅次数"})
     @ApiModelProperty(value = "应调阅次数")
     private Integer planAccessNumber;
 
-    @ExcelProperty("调阅次数")
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"${cellWriterValue}","调阅次数"})
     @ApiModelProperty(value = "实际调阅次数")
     private Integer realityAccessNumber;
-    @ExcelProperty("平均调阅时长(小时)")
+
+    @ExcelProperty(value = {"${cellWriterValue}","平均调阅时长(小时)"})
     @ApiModelProperty(value = "平均调阅时长(小时)")
     private String duration;
-    @ExcelProperty("完成率")
+
+    @ExcelProperty(value = {"${cellWriterValue}","完成率"})
     @ApiModelProperty(value = "完成率")
     private String accessRate;
     @ExcelIgnore

+ 24 - 18
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/controller/ResumptionReportController.java

@@ -114,7 +114,7 @@ public class ResumptionReportController {
         AjaxResult ajaxResult = AjaxResult.success();
         List<IntrusionTestReportVO> intrusionTestReportVOList = resumptionReportService.intrusionTest(resumptionDTO);
         ajaxResult.put(AjaxResult.DATA_TAG, intrusionTestReportVOList);
-        ajaxResult.put(TITLE, "报警测试表(" + resumptionDTO.getSearchTime() + ")");
+        ajaxResult.put(TITLE, "报警测试情况表(" + resumptionDTO.getSearchTime() + ")");
         SysOrg sysOrg = remoteOrgService.selectSysOrgById(resumptionDTO.getOrgId(), SecurityConstants.INNER);
         ajaxResult.put("orgName", sysOrg.getShortName());
         return ajaxResult;
@@ -124,12 +124,14 @@ public class ResumptionReportController {
     @RequiresPermissions("core:resumptionReport:export")
     @PostMapping("/standbyPowerExport")
     public void standbyPowerExport(ResumptionDTO request, HttpServletResponse response) throws IOException {
-        if (null == request.getSearchTime()) {
-            DateTime beginOfQuarter = DateUtil.beginOfQuarter(new java.util.Date());
-            DateTime endOfQuarter = DateUtil.endOfQuarter(new Date());
-            request.setStartTime(beginOfQuarter);
-            request.setEndTime(endOfQuarter);
-        }
+//        if (null == request.getSearchTime()) {
+//            DateTime beginOfQuarter = DateUtil.beginOfQuarter(new java.util.Date());
+//            DateTime endOfQuarter = DateUtil.endOfQuarter(new Date());
+//            request.setStartTime(beginOfQuarter);
+//            request.setEndTime(endOfQuarter);
+//        }
+        String dateTitle=getStandbyPowerExportTitle(request);
+        request.setExportDateTitle(dateTitle);
         resumptionReportService.standbyPowerExport(request, response);
     }
 
@@ -137,7 +139,18 @@ public class ResumptionReportController {
     @RequiresPermissions("core:resumptionReport:list")
     @GetMapping("/standbyPower")
     public AjaxResult standbyPower(ResumptionDTO resumptionDTO) {
-        String time;
+        String time=getStandbyPowerExportTitle(resumptionDTO);
+        AjaxResult ajaxResult = AjaxResult.success();
+        List<IntrusionTestReportVO> intrusionTestReportVOList = resumptionReportService.standbyPower(resumptionDTO);
+        ajaxResult.put(AjaxResult.DATA_TAG, intrusionTestReportVOList);
+        ajaxResult.put(TITLE, "备用电源维护报表(" + time + ")");
+        SysOrg sysOrg = remoteOrgService.selectSysOrgById(resumptionDTO.getOrgId(), SecurityConstants.INNER);
+        ajaxResult.put("orgName", sysOrg.getShortName());
+        return ajaxResult;
+    }
+
+    private String getStandbyPowerExportTitle(ResumptionDTO resumptionDTO)
+    {
         if (null == resumptionDTO.getSearchTime()) {
             DateTime beginOfQuarter = DateUtil.beginOfQuarter(new java.util.Date());
             DateTime endOfQuarter = DateUtil.endOfQuarter(new Date());
@@ -146,19 +159,12 @@ public class ResumptionReportController {
             LocalDate currentDate = LocalDate.now();
             int month = currentDate.getMonthValue();
             int quarter = (month - 1) / 3 + 1;
-            time = currentDate.getYear() + "年第" + quarter + "季度";
+            return currentDate.getYear() + "年第" + quarter + "季度";
         } else {
             String[] split = resumptionDTO.getSearchTime().split("-");
             Integer month = (Integer.valueOf(split[1]) - 1) / 3 + 1;
-            time = split[0] + "年第" + month + "季度";
+            return  split[0] + "年第" + month + "季度";
         }
-        AjaxResult ajaxResult = AjaxResult.success();
-        List<IntrusionTestReportVO> intrusionTestReportVOList = resumptionReportService.standbyPower(resumptionDTO);
-        ajaxResult.put(AjaxResult.DATA_TAG, intrusionTestReportVOList);
-        ajaxResult.put(TITLE, "备用电源维护报表(" + time + ")");
-        SysOrg sysOrg = remoteOrgService.selectSysOrgById(resumptionDTO.getOrgId(), SecurityConstants.INNER);
-        ajaxResult.put("orgName", sysOrg.getShortName());
-        return ajaxResult;
     }
 
     @ApiOperation(value = "离行式自助银行巡检报表导出")
@@ -187,7 +193,7 @@ public class ResumptionReportController {
         AjaxResult ajaxResult = AjaxResult.success();
         List<IntrusionTestReportVO> intrusionTestReportVOList = resumptionReportService.serviceBank(resumptionDTO);
         ajaxResult.put(AjaxResult.DATA_TAG, intrusionTestReportVOList);
-        ajaxResult.put(TITLE, "离行式自助银行巡检表(" + resumptionDTO.getSearchTime() + ")");
+        ajaxResult.put(TITLE, "离行式自助银行巡检情况表(" + resumptionDTO.getSearchTime() + ")");
         SysOrg sysOrg = remoteOrgService.selectSysOrgById(resumptionDTO.getOrgId(), SecurityConstants.INNER);
         ajaxResult.put("orgName", sysOrg.getShortName());
         return ajaxResult;

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/dto/ResumptionDTO.java

@@ -18,4 +18,6 @@ public class ResumptionDTO {
     private Date startTime;
     private Date endTime;
     private Integer cycle;
+
+    private String exportDateTitle;
 }

+ 26 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/impl/ResumptionReportServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.excel.EasyExcel;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.edu.service.impl.ValueCellWriteHandler;
 import com.xunmei.core.reportForms.monitor.mapper.MonitorAccessReportMapper;
 import com.xunmei.core.reportForms.monitor.vo.MonitoringAccessVO;
 import com.xunmei.core.reportForms.resumption.dto.ResumptionDTO;
@@ -144,12 +145,17 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
             ResumptionDayVO resumptionDayVO = report.get(i);
             resumptionDayVO.setOrderNum(i + 1);
         }
+        String baseHeaderName="营业网点安全保卫履职情况表";
+        String header=baseHeaderName+"(" + resumptionDTO.getSearchTime() + ")";
+
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("【" + orgName + "】-履职报表" + DateHelper.getDateString(new Date()), "UTF-8");
+        String fileName = URLEncoder.encode("【" + orgName + "】-履职情况表" + DateHelper.getDateString(new Date()), "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         // 调用EasyExcel的导出方法
-        EasyExcel.write(response.getOutputStream(), ResumptionDayVO.class).sheet("Sheet1").doWrite(report);
+        EasyExcel.write(response.getOutputStream(), ResumptionDayVO.class)
+                .registerWriteHandler(new ValueCellWriteHandler(header))
+                .sheet("baseHeaderName").doWrite(report);
     }
 
     @Override
@@ -170,12 +176,16 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
             IntrusionTestReportVO intrusionTestReportVO = report.get(i);
             intrusionTestReportVO.setOrderNum(i + 1);
         }
+        String baseHeaderName="报警测试情况表";
+        String header=baseHeaderName+"(" + resumptionDTO.getSearchTime() + ")";
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("【" + orgName + "】-报警测试报表" + DateHelper.getDateString(new Date()), "UTF-8");
+        String fileName = URLEncoder.encode("【" + orgName + "】-"+baseHeaderName + DateHelper.getDateString(new Date()), "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         // 调用EasyExcel的导出方法
-        EasyExcel.write(response.getOutputStream(), IntrusionTestReportVO.class).sheet("Sheet1").doWrite(report);
+        EasyExcel.write(response.getOutputStream(), IntrusionTestReportVO.class)
+                .registerWriteHandler(new ValueCellWriteHandler(header))
+                .sheet(baseHeaderName).doWrite(report);
     }
 
     @Override
@@ -250,12 +260,16 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
             IntrusionTestReportVO intrusionTestReportVO = report.get(i);
             intrusionTestReportVO.setOrderNum(i + 1);
         }
+        String baseHeaderName="备用电源维护情况表";
+        String header=baseHeaderName+"(" + resumptionDTO.getExportDateTitle() + ")";
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("【" + orgName + "】-备用电源维护报表" + DateHelper.getDateString(new Date()), "UTF-8");
+        String fileName = URLEncoder.encode("【" + orgName + "】-"+baseHeaderName + DateHelper.getDateString(new Date()), "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         // 调用EasyExcel的导出方法
-        EasyExcel.write(response.getOutputStream(), IntrusionTestReportVO.class).sheet("Sheet1").doWrite(report);
+        EasyExcel.write(response.getOutputStream(), IntrusionTestReportVO.class)
+                .registerWriteHandler(new ValueCellWriteHandler(header))
+                .sheet(baseHeaderName).doWrite(report);
     }
 
 
@@ -388,12 +402,16 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
             IntrusionTestReportVO intrusionTestReportVO = report.get(i);
             intrusionTestReportVO.setOrderNum(i + 1);
         }
+        String baseHeaderName="离行式自助银行巡检情况表";
+        String header=baseHeaderName+"(" + resumptionDTO.getSearchTime() + ")";
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("【" + orgName + "】-离行式自助银行巡检报表" + DateHelper.getDateString(new Date()), "UTF-8");
+        String fileName = URLEncoder.encode("【" + orgName + "】-" + baseHeaderName + DateHelper.getDateString(new Date()), "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         // 调用EasyExcel的导出方法
-        EasyExcel.write(response.getOutputStream(), IntrusionTestReportVO.class).sheet("Sheet1").doWrite(report);
+        EasyExcel.write(response.getOutputStream(), IntrusionTestReportVO.class)
+                .registerWriteHandler(new ValueCellWriteHandler(header))
+                .sheet(baseHeaderName).doWrite(report);
     }
 
 

+ 10 - 10
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/vo/IntrusionTestReportVO.java

@@ -13,31 +13,31 @@ import lombok.Data;
  */
 @Data
 public class IntrusionTestReportVO {
-    @ExcelProperty("序号")
+    @ExcelProperty(value = {"${cellWriterValue}","序号"})
     private Integer orderNum;
-    @ExcelProperty("地区")
+    @ExcelProperty(value = {"${cellWriterValue}","地区"})
     private String city;
-    @ExcelProperty("单位名称")
+    @ExcelProperty(value = {"${cellWriterValue}","单位名称"})
     private String orgName;
-    @ExcelProperty("网点数量")
+    @ExcelProperty(value = {"${cellWriterValue}","网点数量"})
     @ApiModelProperty(value = "网点数量")
     private Integer networkNumber;
-    @ExcelProperty("应履职次数")
+    @ExcelProperty(value = {"${cellWriterValue}","应履职次数"})
     @ApiModelProperty(value = "应履职次数")
     private Integer planNumber;
-    @ExcelProperty("已履职次数")
+    @ExcelProperty(value = {"${cellWriterValue}","已履职次数"})
     @ApiModelProperty(value = "已履职次数")
     private Integer realityNumber;
-    @ExcelProperty("履职完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","履职完成率"})
     @ApiModelProperty(value = "履职完成率")
     private String realityRate;
-    @ExcelProperty("隐患数量")
+    @ExcelProperty(value = {"${cellWriterValue}","隐患数量"})
     @ApiModelProperty(value = "隐患数量")
     private Integer abnormalNumber;
-    @ExcelProperty("已整改数量")
+    @ExcelProperty(value = {"${cellWriterValue}","已整改数量"})
     @ApiModelProperty(value = "已整改数量")
     private Integer realityRectificationNumber;
-    @ExcelProperty("整改完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","整改完成率"})
     @ApiModelProperty(value = "整改完成率")
     private String realityRectificationRate;
 }

+ 13 - 13
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/vo/ResumptionDayVO.java

@@ -11,31 +11,31 @@ import lombok.Data;
  */
 @Data
 public class ResumptionDayVO {
-    @ExcelProperty("序号")
+    @ExcelProperty(value = {"${cellWriterValue}","序号"})
     private Integer orderNum;
-    @ExcelProperty("地区")
+    @ExcelProperty(value = {"${cellWriterValue}","地区"})
     private String city;
-    @ExcelProperty("单位名称")
+    @ExcelProperty(value = {"${cellWriterValue}","单位名称"})
     private String orgName;
-    @ExcelProperty("网点数量")
+    @ExcelProperty(value = {"${cellWriterValue}","网点数量"})
     @ApiModelProperty(value = "网点数量")
     private Integer networkNumber;
-    @ExcelProperty(value = {"总计","应履职次数"})
+    @ExcelProperty(value = {"${cellWriterValue}","总计","应履职次数"})
     @ApiModelProperty(value = "总计应履职次数")
     private Integer totalPlanNumber;
-    @ExcelProperty(value = {"总计","已履职次数"})
+    @ExcelProperty(value = {"${cellWriterValue}","总计","已履职次数"})
     @ApiModelProperty(value = "总计实际履职次数")
     private Integer totalRealityNumber;
-    @ExcelProperty(value = {"总计","履职完成率"})
+    @ExcelProperty(value = {"${cellWriterValue}","总计","履职完成率"})
     @ApiModelProperty(value = "总计检查率")
     private String totalRate;
-    @ExcelProperty(value = {"总计","隐患数量"})
+    @ExcelProperty(value = {"${cellWriterValue}","总计","隐患数量"})
     @ApiModelProperty(value = "总计隐患问题数")
     private Integer totalAbnormalNumber;
-    @ExcelProperty(value = {"总计","已整改数量"})
+    @ExcelProperty(value = {"${cellWriterValue}","总计","已整改数量"})
     @ApiModelProperty(value = "总计已整改数量")
     private Integer totalRealityRectificationNumber;
-    @ExcelProperty(value = {"总计","整改完成率"})
+    @ExcelProperty(value = {"${cellWriterValue}","总计","整改完成率"})
     @ApiModelProperty(value = "总计整改完成率")
     private String totalRealityRectificationRate;
 
@@ -45,7 +45,7 @@ public class ResumptionDayVO {
     @ExcelIgnore
     @ApiModelProperty(value = "前实际履职次数")
     private Integer frontRealityNumber;
-    @ExcelProperty(value = "营业前完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","营业前完成率"})
     @ApiModelProperty(value = "前检查率")
     private String frontRate;
     @ExcelIgnore
@@ -57,7 +57,7 @@ public class ResumptionDayVO {
     @ExcelIgnore
     @ApiModelProperty(value = "中实际履职次数")
     private Integer centreRealityNumber;
-    @ExcelProperty(value = "营业期间完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","营业期间完成率"})
     @ApiModelProperty(value = "中检查率")
     private String centreRate;
     @ExcelIgnore
@@ -69,7 +69,7 @@ public class ResumptionDayVO {
     @ExcelIgnore
     @ApiModelProperty(value = "中实际履职次数")
     private Integer afterRealityNumber;
-    @ExcelProperty(value = "营业终了完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","营业终了完成率"})
     @ApiModelProperty(value = "中检查率")
     private String afterRate;
     @ExcelIgnore

+ 25 - 11
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/controller/SafetyInspectReportController.java

@@ -36,7 +36,7 @@ public class SafetyInspectReportController {
     @Resource
     private RemoteOrgService remoteOrgService;
 
-    @ApiOperation(value = "行社全面检查表")
+    @ApiOperation(value = "行社全面检查情况表")
     @RequiresPermissions("core:safetyInspectReport:list")
     @GetMapping("/list")
     public AjaxResult list(SafetyInspectDTO safetyInspectDTO) {
@@ -52,11 +52,11 @@ public class SafetyInspectReportController {
         }
         SysOrg sysOrg = remoteOrgService.selectSysOrgById(safetyInspectDTO.getOrgId(), SecurityConstants.INNER);
         ajax.put("orgName", sysOrg.getShortName());
-        ajax.put("title", "行社全面检查统计报表(" + safetyInspectDTO.getYear() + ")");
+        ajax.put("title", "行社全面检查情况表(" + safetyInspectDTO.getYear() + ")");
         return ajax;
     }
 
-    @ApiOperation(value = "网点负责人自查表")
+    @ApiOperation(value = "网点负责人自查情况表")
     @RequiresPermissions("core:safetyInspectReport:list")
     @GetMapping("/selfInspectList")
     public AjaxResult selfInspectList(SafetyInspectDTO safetyInspectDTO) {
@@ -82,7 +82,7 @@ public class SafetyInspectReportController {
         }
         SysOrg sysOrg = remoteOrgService.selectSysOrgById(safetyInspectDTO.getOrgId(), SecurityConstants.INNER);
         ajax.put("orgName", sysOrg.getShortName());
-        ajax.put("title", "网点负责人自查表(" + safetyInspectDTO.getYear() + ")");
+        ajax.put("title", "网点负责人自查情况表(" + safetyInspectDTO.getYear() + ")");
         return ajax;
     }
 
@@ -94,9 +94,9 @@ public class SafetyInspectReportController {
     /**
      * 导出excel
      */
-    @ApiOperation(value = "行社全面检查表导出")
+    @ApiOperation(value = "行社全面检查情况表导出")
     @RequiresPermissions("core:safetyInspectReport:export")
-    @Log(title = "行社全面检查表", businessType = BusinessType.EXPORT)
+    @Log(title = "行社全面检查情况表", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(SafetyInspectDTO request, HttpServletResponse response) throws IOException {
         if (null == request.getYear()) {
@@ -106,15 +106,29 @@ public class SafetyInspectReportController {
         safetyInspectService.export(request, response);
     }
 
-    @ApiOperation(value = "网点负责人自查表导出")
+    @ApiOperation(value = "网点负责人自查情况表导出")
     @RequiresPermissions("core:safetyInspectReport:export")
-    @Log(title = "网点负责人自查表导出", businessType = BusinessType.EXPORT)
+    @Log(title = "网点负责人自查情况表导出", businessType = BusinessType.EXPORT)
     @PostMapping("/selfInspectExport")
     public void selfInspectExport(SafetyInspectDTO request, HttpServletResponse response) throws IOException {
+//        if (null == request.getYear()) {
+//            request.setCycle(1);
+//            LocalDate localDate = LocalDate.now();
+//            request.setYear(localDate.getYear() + "-" + localDate.getMonthValue());
+//        }
         if (null == request.getYear()) {
-            request.setCycle(1);
-            LocalDate localDate = LocalDate.now();
-            request.setYear(localDate.getYear() + "-" + localDate.getMonthValue());
+            if (request == null || request.getCycle() == 1) {
+                request.setCycle(1);
+                LocalDate localDate = LocalDate.now();
+                String m = String.valueOf(localDate.getMonthValue());
+                if (m.length() == 1) {
+                    m = "0" + localDate.getMonthValue();
+                }
+                request.setYear(localDate.getYear() + "-" + m);
+            } else {
+                LocalDate localDate = LocalDate.now();
+                request.setYear(localDate.getYear() + "");
+            }
         }
         safetyInspectService.selfInspectExport(request, response);
     }

+ 17 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/service/impl/SafetyInspectServiceImpl.java

@@ -8,6 +8,7 @@ import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.edu.service.impl.ValueCellWriteHandler;
 import com.xunmei.core.reportForms.monitor.mapper.MonitorAccessReportMapper;
 import com.xunmei.core.reportForms.safetyInspect.dto.SafetyInspectDTO;
 import com.xunmei.core.reportForms.safetyInspect.mapper.SafetyInspectMapper;
@@ -183,12 +184,18 @@ public class SafetyInspectServiceImpl implements SafetyInspectService {
         if (safetyInspectVOS.size() > 10000) {
             throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
         }
+
+        String baseHeaderName="行社全面检查情况表";
+        String header=baseHeaderName+"(" + safetyInspectDTO.getYear() + ")";
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("【" + orgName + "】-检查统计报表" + DateHelper.getDateString(new Date()), "UTF-8");
+        String fileName = URLEncoder.encode("【" + orgName + "】-"+baseHeaderName + DateHelper.getDateString(new Date()), "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         // 调用EasyExcel的导出方法
-        EasyExcel.write(response.getOutputStream(), SafetyInspectVO.class).sheet("Sheet1").doWrite(safetyInspectVOS);
+        EasyExcel.write(response.getOutputStream(), SafetyInspectVO.class)
+                .registerWriteHandler(new ValueCellWriteHandler(header))
+                .sheet(baseHeaderName)
+                .doWrite(safetyInspectVOS);
     }
 
     @Override
@@ -213,12 +220,18 @@ public class SafetyInspectServiceImpl implements SafetyInspectService {
         if (safetyInspectVOS.size() > 10000) {
             throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
         }
+        String baseHeaderName="网点负责人自查情况表";
+        String header=baseHeaderName+"(" + safetyInspectDTO.getYear() + ")";
+
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
-        String fileName = URLEncoder.encode("【" + orgName + "】-网点负责人自查报表" + DateHelper.getDateString(new Date()), "UTF-8");
+        String fileName = URLEncoder.encode("【" + orgName + "】-"+baseHeaderName + DateHelper.getDateString(new Date()), "UTF-8");
         response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
         // 调用EasyExcel的导出方法
-        EasyExcel.write(response.getOutputStream(), SelfInspectVO.class).sheet("Sheet1").doWrite(safetyInspectVOS);
+        EasyExcel.write(response.getOutputStream(), SelfInspectVO.class)
+                .registerWriteHandler(new ValueCellWriteHandler(header))
+                .sheet(baseHeaderName)
+                .doWrite(safetyInspectVOS);
     }
 
     @Override

+ 12 - 12
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/vo/SafetyInspectVO.java

@@ -12,40 +12,40 @@ import lombok.Data;
  */
 @Data
 public class SafetyInspectVO {
-    @ExcelProperty("序号")
+    @ExcelProperty(value = {"${cellWriterValue}","序号"})
     private Integer orderNum;
-    @ExcelProperty("地区")
+    @ExcelProperty(value = {"${cellWriterValue}","地区"})
     private String city;
-    @ExcelProperty("单位名称")
+    @ExcelProperty(value = {"${cellWriterValue}","单位名称"})
     @ApiModelProperty(value = "单位名称")
     private String orgName;
-    @ExcelProperty("被查机构数量")
+    @ExcelProperty(value = {"${cellWriterValue}","被查机构数量"})
     @ApiModelProperty(value = "网点数量")
     private Integer planInspectOrg;
-    @ExcelProperty("已查机构数量")
+    @ExcelProperty(value = {"${cellWriterValue}","已查机构数量"})
     @ApiModelProperty(value = "已查机构数量")
     private Integer realityInspectOrg;
-    @ExcelProperty("检查覆盖率")
+    @ExcelProperty(value = {"${cellWriterValue}","检查覆盖率"})
     @ApiModelProperty(value = "检查覆盖率")
     private String inspectCoverRate;
 
 
-    @ExcelProperty("应检次数")
+    @ExcelProperty(value = {"${cellWriterValue}","应检次数"})
     @ApiModelProperty(value = "应检查次数")
     private Integer planInspectNumber;
-    @ExcelProperty("已检次数")
+    @ExcelProperty(value = {"${cellWriterValue}","已检次数"})
     @ApiModelProperty(value = "实际检查次数")
     private Integer realityInspectNumber;
-    @ExcelProperty("检查完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","检查完成率"})
     @ApiModelProperty(value = "检查率")
     private String inspectRate;
-    @ExcelProperty("隐患数量")
+    @ExcelProperty(value = {"${cellWriterValue}","隐患数量"})
     @ApiModelProperty(value = "隐患数量")
     private Integer pitfallNumber;
-    @ExcelProperty("已整改数量")
+    @ExcelProperty(value = {"${cellWriterValue}","已整改数量"})
     @ApiModelProperty(value = "已整改数量")
     private Integer rectificationNumber;
-    @ExcelProperty("整改完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","整改完成率"})
     @ApiModelProperty(value = "整改完成率")
     private String rectificationRate;
     @ExcelIgnore

+ 11 - 11
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/vo/SelfInspectVO.java

@@ -11,14 +11,14 @@ import lombok.Data;
  */
 @Data
 public class SelfInspectVO {
-    @ExcelProperty("序号")
+    @ExcelProperty(value = {"${cellWriterValue}","序号"})
     private Integer orderNum;
-    @ExcelProperty("地区")
+    @ExcelProperty(value = {"${cellWriterValue}","地区"})
     private String city;
-    @ExcelProperty("单位名称")
+    @ExcelProperty(value = {"${cellWriterValue}","单位名称"})
     @ApiModelProperty(value = "单位名称")
     private String orgName;
-    @ExcelProperty("网点数量")
+    @ExcelProperty(value = {"${cellWriterValue}","网点数量"})
     @ApiModelProperty(value = "网点数量")
     private Integer planInspectOrg;
     @ExcelIgnore
@@ -29,25 +29,25 @@ public class SelfInspectVO {
     private String inspectCoverRate;
 
 
-    @ExcelProperty("应检次数")
+    @ExcelProperty(value = {"${cellWriterValue}","应检次数"})
     @ApiModelProperty(value = "应检查次数")
     private Integer planInspectNumber;
-    @ExcelProperty("已检次数")
+    @ExcelProperty(value = {"${cellWriterValue}","已检次数"})
     @ApiModelProperty(value = "实际检查次数")
     private Integer realityInspectNumber;
-    @ExcelProperty("检查完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","检查完成率"})
     @ApiModelProperty(value = "检查率")
     private String inspectRate;
-    @ExcelProperty("隐患数量")
+    @ExcelProperty(value = {"${cellWriterValue}","隐患数量"})
     @ApiModelProperty(value = "隐患数量")
     private Integer pitfallNumber;
-    @ExcelProperty("已整改数量")
+    @ExcelProperty(value = {"${cellWriterValue}","已整改数量"})
     @ApiModelProperty(value = "已整改数量")
     private Integer rectificationNumber;
-    @ExcelProperty("整改完成率")
+    @ExcelProperty(value = {"${cellWriterValue}","整改完成率"})
     @ApiModelProperty(value = "整改完成率")
     private String rectificationRate;
     @ExcelIgnore
-    @ExcelProperty("机构路径")
+    @ExcelProperty(value = {"${cellWriterValue}","机构路径"})
     private String path;
 }

+ 3 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java

@@ -52,6 +52,7 @@ import com.xunmei.system.api.domain.SafeCheckTaskRegisterBookVo;
 import com.xunmei.core.safetyCheck.vo.ruleItem.SafetyCheckRulePointVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import io.netty.util.internal.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -1050,8 +1051,8 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         }
 
         registerBookVo.setCheckDatas(pointCheckDataList);
-
-        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.SAFE_CHECK_REPORT, registerBookVo.getOrgName());
+        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(registerBookVo.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        String fileName = registerBookPdfService.getPdfFileName(RegisterBookType.SAFE_CHECK_REPORT, sysOrg.getName());
         registerBookVo.setDest(fileName);
         return registerBookVo;
     }

+ 7 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/DvrDiskController.java

@@ -64,4 +64,11 @@ class DvrDiskController {
         TableDataInfo<DvrDiskAppPageVo> page = this.dvrDiskService.appPage(request);
         return page;
     }
+
+    @ApiOperation("有异常的硬盘数量")
+    @GetMapping({"/app/badge/{orgId}"})
+    AjaxResult badge(@PathVariable("orgId") Long orgId) {
+        Integer count = this.dvrDiskService.badge(orgId);
+        return AjaxResult.success(count);
+    }
 }

+ 1 - 4
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotSensorController.java

@@ -44,11 +44,8 @@ public class IotSensorController {
         return page;
     }
 
-    /**
-     * 导出excel
-     */
+
     @ApiOperation(value = "导出动环设备")
-    //@RequiresPermissions("core:eduTask:export")
     @Log(title = "导出动环设备", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(SensorPageDto request, HttpServletResponse response) throws IOException {

+ 8 - 2
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDiagnosisController.java

@@ -6,16 +6,15 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisAppPageDto;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
 import com.xunmei.iot.service.VideoDiagnosisService;
-import com.xunmei.iot.vo.videoDays.VideoDayCheckWebDetailVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisIntegrityVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebVo;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.text.SimpleDateFormat;
-import java.util.Date;
 
 /**
  * 录像诊断
@@ -55,6 +54,13 @@ public class VideoDiagnosisController {
         return page;
     }
 
+    @ApiOperation("有异常的硬盘数量")
+    @GetMapping({"/app/badge/{orgId}"})
+    AjaxResult badge(@PathVariable("orgId") Long orgId) {
+        Integer count = this.videoDiagnosisService.appBadge(orgId);
+        return AjaxResult.success(count);
+    }
+
 //    @PostMapping("/app/detail/{hostCode}/{channelCode}")
 //    public TableDataInfo<VideoDiagnosisAppPageVo> appInfo(@PathVariable("hostCode") String hostCode, @PathVariable("channelCode") String channelCode) {
 //        TableDataInfo<VideoDiagnosisAppPageVo> page = this.videoDiagnosisService.getAppPageData(pageDto);

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotDvrChannelMapper.java

@@ -35,4 +35,6 @@ public interface IotDvrChannelMapper extends BaseMapper<IotDvrChannel> {
     Page<VideoDiagnosisAppPageVo> selectAppPage(@Param("page") Page<VideoDiagnosisAppPageVo> page,
                                                 @Param("pageDto") VideoDiagnosisAppPageDto pageDto,
                                                 @Param("orgPath") String orgPath);
+
+    Integer selectBadge(Long orgId);
 }

+ 32 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/VideoIntegrityCheckLogMapper.java

@@ -0,0 +1,32 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
+import com.xunmei.iot.dto.videoIntegrity.VideoIntegrityCheckPageDto;
+import com.xunmei.iot.dto.videoIntegrity.VideoIntegrityCheckWebPageDto;
+import com.xunmei.iot.vo.ChannelSingleDetailVo;
+import com.xunmei.iot.vo.videoIntegrity.VideoIntegrityCheckPageVo;
+import com.xunmei.iot.vo.videoIntegrity.VideoIntegrityCheckWebDeviceVo;
+import com.xunmei.iot.vo.videoIntegrity.VideoIntegrityCheckWebPageVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 录像机完整性检查表 Mapper 接口
+ * </p>
+ *
+ * @author yzl
+ * @since 2022-07-26
+ */
+@Mapper
+public interface VideoIntegrityCheckLogMapper extends BaseMapper<MediatorVideoIntegrityCheckLog> {
+
+}

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotDvsDiskService.java

@@ -25,4 +25,6 @@ public interface IotDvsDiskService extends IService<IotDvrDisk> {
     DvrDiskStatisticVo diskStatistic(DvrDiskPageDto request);
 
     TableDataInfo<DvrDiskAppPageVo> appPage(DvrDiskAppPageDto request);
+
+    Integer badge(Long orgId);
 }

+ 1 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoDiagnosisService.java

@@ -7,7 +7,6 @@ import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisAppPageDto;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
 import com.xunmei.iot.vo.videoDiagnosis.*;
 import org.apache.http.annotation.Obsolete;
-import org.springframework.web.bind.annotation.PathVariable;
 
 import java.util.Date;
 
@@ -29,4 +28,5 @@ public interface VideoDiagnosisService extends IService<IotDvrChannel> {
 
     TableDataInfo<VideoDiagnosisAppPageVo> getAppPageData(VideoDiagnosisAppPageDto request);
 
+    Integer appBadge(Long orgId);
 }

+ 13 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotCommonSensorServiceImpl.java

@@ -8,12 +8,15 @@ import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.DictConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.bean.BeanUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.iot.dto.sensor.SensorAppPageDto;
 import com.xunmei.iot.vo.sensor.SensorAppStateVo;
@@ -28,6 +31,7 @@ import com.xunmei.iot.vo.sensor.SensorExportVo;
 import com.xunmei.iot.vo.sensor.SensorPageVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.SysOrgVO;
 import io.netty.util.internal.StringUtil;
 import org.springframework.stereotype.Service;
 
@@ -35,8 +39,10 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -63,8 +69,15 @@ public class IotCommonSensorServiceImpl extends ServiceImpl<IotCommonSensorMappe
         dealPageParam(request);
 
         Page<SensorPageVo> page = sensorMapper.selectPageData(request.getPageRequest(), request);
+        final List<SysOrgVO> cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
+
         for (SensorPageVo record : page.getRecords()) {
             final String info = record.getInfo();
+            final List<Long> collect = Arrays.stream(record.getOrgPath().split("-")).map(Long::parseLong).collect(Collectors.toList());
+            //地区名称
+            cacheList.stream().filter(org->collect.contains(org.getId())&&OrgTypeEnum.DIQU_HANG_SHE.getCode().equals(org.getType())).findFirst().ifPresent(org->record.setFirstOrgName(org.getShortName()));
+            //行社名称
+            cacheList.stream().filter(org->collect.contains(org.getId())&&OrgTypeEnum.HANG_SHE.getCode().equals(org.getType())).findFirst().ifPresent(org->record.setSecondOrgName(org.getShortName()));
             record.setInfo(dealInfoData(info));
             record.setDeviceType(DictUtils.getDictLabel(DictConstants.SENSOR_DEVICE_TYPE, Integer.parseInt(record.getDeviceType())));
             record.setStateText(DictUtils.getDictLabel(DictConstants.SENSOR_ALARM_STATUS, record.getState()));

+ 11 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotDvrDiskServiceImpl.java

@@ -5,10 +5,12 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
+import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
@@ -125,4 +127,13 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
         });
         return TableDataInfo.success(page);
     }
+
+    @Override
+    public Integer badge(Long orgId) {
+        Long count = baseMapper.selectCount(new LambdaQueryWrapper<IotDvrDisk>()
+                .eq(IotDvrDisk::getOrgId, orgId)
+                .eq(IotDvrDisk::getState, 1)
+                .eq(IotDvrDisk::getDeleted, 0));
+        return count.intValue();
+    }
 }

+ 22 - 13
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoDiagnosisServiceImpl.java

@@ -8,13 +8,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
-import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
 import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.enums.iot.VideoIntegrityStatus;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisAppPageDto;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
 import com.xunmei.iot.mapper.IotDvrChannelMapper;
+import com.xunmei.iot.mapper.VideoIntegrityCheckLogMapper;
 import com.xunmei.iot.mapper.VideoIntegrityCheckMapper;
 import com.xunmei.iot.service.VideoDiagnosisService;
 import com.xunmei.iot.vo.videoDiagnosis.*;
@@ -23,7 +24,6 @@ import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.validation.constraints.AssertFalse;
 import java.text.SimpleDateFormat;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -40,6 +40,8 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
     @Autowired
     VideoIntegrityCheckMapper videoIntegrityCheckMapper;
 
+    @Autowired
+    VideoIntegrityCheckLogMapper videoIntegrityCheckLogMapper;
     @Override
     public TableDataInfo<VideoDiagnosisWebPageVo> getPageData(VideoDiagnosisWebPageDto request) {
         String orgPath = "";
@@ -92,12 +94,12 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
         }
 
         if (ObjectUtil.isNotNull(vo) && ObjectUtil.isNotNull(vo.getStorage()) && ObjectUtil.isNotNull(vo.getStorage().getEarliestTime())) {
-            LambdaQueryWrapper<MediatorVideoIntegrityCheck> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(MediatorVideoIntegrityCheck::getEquipmentCode, hostCode)
-                    .eq(MediatorVideoIntegrityCheck::getChannelCode, channelCode)
-                    .ge(MediatorVideoIntegrityCheck::getRecordDate, vo.getStorage().getEarliestTime())
-                    .select(MediatorVideoIntegrityCheck::getRecordDate, MediatorVideoIntegrityCheck::getStatus);
-            Map<Integer, List<MediatorVideoIntegrityCheck>> days = videoIntegrityCheckMapper.selectList(wrapper)
+            LambdaQueryWrapper<MediatorVideoIntegrityCheckLog> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(MediatorVideoIntegrityCheckLog::getEquipmentCode, hostCode)
+                    .eq(MediatorVideoIntegrityCheckLog::getChannelCode, channelCode)
+                    .ge(MediatorVideoIntegrityCheckLog::getRecordDate,DateUtil.beginOfDay(vo.getStorage().getEarliestTime()) )
+                    .select(MediatorVideoIntegrityCheckLog::getRecordDate, MediatorVideoIntegrityCheckLog::getStatus);
+            Map<Integer, List<MediatorVideoIntegrityCheckLog>> days = videoIntegrityCheckLogMapper.selectList(wrapper)
                     .stream().collect(Collectors.groupingBy(d -> d.getStatus()));
 
             DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@@ -131,6 +133,12 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
         return vo;
     }
 
+    @Override
+    public Integer appBadge(Long orgId) {
+        Integer count = baseMapper.selectBadge(orgId);
+        return count;
+    }
+
     private void setUnknownDate(VideoDiagnosisStorageVo storage, Date earliest) {
         storage.setUnknownDates(new ArrayList<>());
         Date start = DateUtil.beginOfDay(earliest);
@@ -148,12 +156,13 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
 
     @Override
     public VideoDiagnosisIntegrityVo getIntegrity(String hostCode, String channelCode, Date date) {
-        LambdaQueryWrapper<MediatorVideoIntegrityCheck> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(MediatorVideoIntegrityCheck::getEquipmentCode, hostCode)
-                .eq(MediatorVideoIntegrityCheck::getChannelCode, channelCode)
-                .eq(MediatorVideoIntegrityCheck::getRecordDate, date);
+        LambdaQueryWrapper<MediatorVideoIntegrityCheckLog> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(MediatorVideoIntegrityCheckLog::getEquipmentCode, hostCode)
+                .eq(MediatorVideoIntegrityCheckLog::getChannelCode, channelCode)
+                .eq(MediatorVideoIntegrityCheckLog::getRecordDate, date);
+
 
-        MediatorVideoIntegrityCheck entity = videoIntegrityCheckMapper.selectOne(wrapper);
+        MediatorVideoIntegrityCheckLog entity = videoIntegrityCheckLogMapper.selectOne(wrapper);
         return VideoDiagnosisIntegrityVo.of(entity);
     }
 }

+ 0 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/dvrDisk/DvrDiskAppPageVo.java

@@ -24,7 +24,6 @@ public class DvrDiskAppPageVo {
     @ApiModelProperty("磁盘信息")
     private List<IotDvrDisk> diskInfos;
 
-    @JsonIgnore
     private Integer state;
 
     @ApiModelProperty("异常数量")

+ 12 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/dvrDisk/DvrDiskPageVo.java

@@ -1,5 +1,7 @@
 package com.xunmei.iot.vo.dvrDisk;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -33,6 +35,16 @@ public class DvrDiskPageVo {
 //   @JsonSerialize(using = ToStringSerializer.class)
 //   private Long orgId;
 
+   @ApiModelProperty("地区")
+   @ExcelProperty(value="地区",index = 2)
+   @ColumnWidth(20)
+   private String affiliatedArea;
+
+   @ApiModelProperty("行社名称")
+   @ExcelProperty(value="行社名称",index = 3)
+   @ColumnWidth(20)
+   private String affiliatedBank;
+
    @ApiModelProperty("所属机构")
    private String orgName;
 

+ 9 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/sensor/SensorPageVo.java

@@ -1,6 +1,7 @@
 package com.xunmei.iot.vo.sensor;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.Constants;
 import io.swagger.annotations.ApiModelProperty;
@@ -26,6 +27,10 @@ public class SensorPageVo {
     @ApiModelProperty("机构id")
     private Long orgId;
 
+    @JsonIgnore
+    @ApiModelProperty("机构路径")
+    private String orgPath;
+
     @ApiModelProperty("所属机构")
     private String orgName;
 
@@ -45,4 +50,8 @@ public class SensorPageVo {
     @ApiModelProperty("设备code")
     private String deviceCode;
 
+    private String firstOrgName;
+
+    private String secondOrgName;
+
 }

+ 2 - 2
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisIntegrityVo.java

@@ -8,7 +8,7 @@ import java.util.List;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
 import com.xunmei.common.core.utils.bean.BeanUtils;
 import lombok.Data;
 
@@ -51,7 +51,7 @@ public class VideoDiagnosisIntegrityVo {
         return JSON.parseArray(checkSpan, TimeRangeVo.class);
     }
 
-    public static VideoDiagnosisIntegrityVo of(MediatorVideoIntegrityCheck entity) {
+    public static VideoDiagnosisIntegrityVo of(MediatorVideoIntegrityCheckLog entity) {
         if (ObjectUtil.isNull(entity)) {
             return null;
         }

+ 17 - 5
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/videoDiagnosis/VideoDiagnosisWebPageVo.java

@@ -1,5 +1,7 @@
 package com.xunmei.iot.vo.videoDiagnosis;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -11,6 +13,16 @@ public class VideoDiagnosisWebPageVo {
     @ApiModelProperty("通道code")
     private String channelCode;
 
+    @ApiModelProperty("地区")
+    @ExcelProperty(value="地区",index = 2)
+    @ColumnWidth(20)
+    private String affiliatedArea;
+
+    @ApiModelProperty("行社名称")
+    @ExcelProperty(value="行社名称",index = 3)
+    @ColumnWidth(20)
+    private String affiliatedBank;
+
     @ApiModelProperty("组织机构")
     private String orgName;
 
@@ -29,11 +41,11 @@ public class VideoDiagnosisWebPageVo {
     @ApiModelProperty("实际存储(天)")
     private String realDays;
 
-    @ApiModelProperty("无视频信号")
-    private Integer signalLost;
-
-    @ApiModelProperty("视频遮挡")
-    private Integer occlude;
+//    @ApiModelProperty("无视频信号")
+//    private Integer signalLost;
+//
+//    @ApiModelProperty("视频遮挡")
+//    private Integer occlude;
 
     @ApiModelProperty("视频质量")
     private Integer quality;

+ 5 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/DvrDiskMapper.xml

@@ -8,6 +8,8 @@
         <result column="ip" property="ip"/>
         <result column="orgId" property="orgId"/>
         <result column="orgName" property="orgName"/>
+        <result column="affiliated_area" property="affiliatedArea"/>
+        <result column="affiliated_bank" property="affiliatedBank"/>
         <result column="netState" property="netState"/>
         <!--        <result column="status" property="status"/>-->
         <!--        <result column="alarmTime" property="alarmTime"/>-->
@@ -49,6 +51,8 @@
         d.equipment_name AS equipmentName,
         d.net_address as ip,
         d.org_name AS orgName,
+        o.affiliated_area,
+        o.affiliated_bank,
         d.producer as brand,
         dd.state as netState
         <!--        dhd.check_status AS `status`,-->
@@ -56,6 +60,7 @@
         <!--        dhd.detail_info as detailInfo-->
         FROM
         iot_device d
+        inner  join sys_org o on d.org_id =o.id and o.deleted=0 and o.is_lock='0'
         left join iot_device_detection dd on d.equipment_code =dd.equipment_code
 <!--        LEFT JOIN iot_dvr_hard_disk_detection dhd ON d.equipment_code = dhd.equipment_code-->
         WHERE

+ 20 - 5
soc-modules/soc-modules-iot/src/main/resources/mapper/IotDvrChannelMapper.xml

@@ -49,17 +49,19 @@
         c.host_code,
         c.channel_code,
         c.org_name,
+        o.affiliated_area,
+        o.affiliated_bank,
         c.channel_name,
         c.channel_addr as channelIP,
         vic.lose_duration,
         vdc.plan_days,
         vdc.real_days,
-        vdr.signal_lost,
-        vdr.occlude,
-        if(vdr.id is null,null,if(vdr.brightness+vdr.color_cast+vdr.snowflake+vdr.stripe+vdr.contrast+vdr.blurry>=1,1,0))
+        if(vdr.id is
+        null,null,if(vdr.signal_lost+vdr.occlude+vdr.brightness+vdr.color_cast+vdr.snowflake+vdr.stripe+vdr.contrast+vdr.blurry>=1,1,0))
         as quality
         from iot_dvr_channel c
         INNER JOIN iot_device d on c.host_code=d.equipment_code
+        inner  join sys_org o on c.org_id =o.id and o.deleted=0 and o.is_lock='0'
         left JOIN mediator_video_days_check vdc on c.host_code=vdc.equipment_code and c.channel_code=vdc.channel_code
         left JOIN mediator_video_integrity_check vic on c.host_code=vic.equipment_code and
         c.channel_code=vic.channel_code
@@ -128,7 +130,8 @@
 
     <select id="selectAppChannels" resultType="com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageChannelVo">
         select dc.channel_code,
-        if(vdc.status=0 and vic.status=0 and vdr.is_alarm=0,0,if(vdc.status =1 or vic.status>0 or vdr.is_alarm=1,1,2)) as state
+        if(vdc.status=0 and vic.status=0 and vdr.is_alarm=0,0,if(vdc.status =1 or vic.status>0 or vdr.is_alarm=1,1,2))
+        as state
         FROM iot_dvr_channel dc
         LEFT JOIN mediator_video_days_check vdc on dc.host_code=vdc.equipment_code and dc.channel_code
         =vdc.channel_code
@@ -146,7 +149,7 @@
         <if test="state==2">
             and (vdc.`status` is null or vic.`status` is null or vdr.is_alarm is null)
         </if>
-        order by  dc.channel_code asc
+        order by dc.channel_code asc
     </select>
     <select id="selectAppPage" resultMap="appPageMap">
         SELECT equipment_code,
@@ -192,4 +195,16 @@
             )
         </if>
     </select>
+    <select id="selectBadge" resultType="java.lang.Integer">
+        SELECT sum(vdc.`status` > 0 or vic.`status` > 0 or vdc.`status` > 0) as count
+        FROM iot_dvr_channel dc
+                 LEFT JOIN mediator_video_days_check vdc
+                           on vdc.equipment_code = dc.host_code and vdc.channel_code = dc.channel_code
+                 LEFT JOIN mediator_video_integrity_check vic
+                           on vic.equipment_code = dc.host_code and vic.channel_code = dc.channel_code
+                 LEFT JOIN mediator_video_diagnosis_record vdr
+                           on vdr.equipment_code = dc.host_code and vdr.channel_code = dc.channel_code
+        WHERE dc.org_id = #{orgId}
+          AND dc.deleted = 0
+    </select>
 </mapper>

+ 1 - 1
soc-modules/soc-modules-iot/src/main/resources/mapper/IotSensorMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xunmei.iot.mapper.IotCommonSensorMapper">
     <select id="selectPageData" resultType="com.xunmei.iot.vo.sensor.SensorPageVo">
-        select s.id, org_id, org_name, device_name, device_type, infos as info,device_code, update_time,state
+        select s.id, org_id, org_name,org_path, device_name, device_type, infos as info,device_code, state_update_time as updateTime,state
         from iot_sensor s
         where s.deleted=0
         <if test="request.orgId!= null">

+ 38 - 68
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrChannelServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xunmei.mediator.api.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.Constants;
@@ -44,8 +45,7 @@ import java.util.stream.Collectors;
  */
 @Service
 public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, IotDvrChannel> implements IIotDvrChannelService {
-    @Resource
-    private IMediatorCategoryService categoryService;
+
     @Resource
     private RemoteOrgService orgService;
     @Resource
@@ -74,8 +74,6 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
         if (ObjectUtil.isEmpty(deviceDtoList)) {
             return ReceiveErrorDto.error("通道数据为空");
         }
-        MediatorCategory category = categoryService.findCategoryByCodeAndParentId("18", -1L);
-
         DeviceDto deviceDto;
         List<NorthError> errors = new ArrayList<>();
         List<IotDvrChannel> list = new ArrayList<>();
@@ -85,7 +83,7 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
         if (org != null) {
             //制作一个随时变化的key
             Boolean flag = redisTemplate.hasKey(CacheConstants.CHANNEL_KEY);
-            if (!flag) {
+            if (Boolean.FALSE.equals(flag)) {
                 //判断是否存在这个key
                 this.redisTemplate.opsForValue().set(CacheConstants.CHANNEL_KEY, UK);
             } else {
@@ -139,7 +137,7 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
 
 
             /**
-             * 先不做数据处理,先缓存所有待处理的数据,然后每5分钟处理一次缓存数据
+             * 先不做数据处理,先缓存所有待处理的数据,然后每10分钟处理一次缓存数据 http://localhost:8080/mediator/channelCacheDeal
              */
 
 
@@ -152,7 +150,7 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
                 continue;
             }
 
-            IotDvrChannel device = getChannelDevice(deviceDto, category);
+            IotDvrChannel device = getChannelDevice(deviceDto);
 
             list.add(device);
 
@@ -163,15 +161,17 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
             redisTemplate.expire(UK + CacheConstants.AFTER_DATA, 1, TimeUnit.HOURS);
         }
         northErrorService.saveErrorData(errors);
-
         return ReceiveErrorDto.success();
     }
 
-    private IotDvrChannel getChannelDevice(DeviceDto deviceDto, MediatorCategory category) {
+    private IotDvrChannel getChannelDevice(DeviceDto deviceDto) {
         IotDvrChannel device = new IotDvrChannel();
-        IotDvrChannel old = this.findChannel(deviceDto.getEquipmentCode(), deviceDto.getChannelCode(), deviceDto.getOrg().getId());
+        final LocalDateTime now = LocalDateTime.now();
+        IotDvrChannel old = this.findChannel(deviceDto.getChannelCode(), deviceDto.getEquipmentCode(), deviceDto.getOrg().getId());
         if (old != null) {
             device = old;
+        }else {
+            device.setCreateTime(now);
         }
         device.setChannelName(deviceDto.getChannelName());
         device.setHostCode(deviceDto.getEquipmentCode());
@@ -180,10 +180,7 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
         device.setOrgName(deviceDto.getOrg().getShortName());
         device.setChannelCode(Integer.parseInt(deviceDto.getChannelCode()));
         device.setChannelAddr(deviceDto.getNetAddress());
-        final LocalDateTime now = LocalDateTime.now();
         device.setUpdateTime(now);
-        device.setCreateTime(now);
-
         device.setSource(1);
         device.setDeleted(0);
         return device;
@@ -194,12 +191,7 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
     public void channelCacheDeal() {
         try {
             Boolean flag = redisTemplate.hasKey(CacheConstants.CHANNEL_KEY);
-            if (!flag) {
-                return;
-            }
-
-            Boolean isData = this.redisTemplate.hasKey(CacheConstants.CHANNEL_KEY);
-            if (!isData) {
+            if (Boolean.FALSE.equals(flag)) {
                 return;
             }
 
@@ -207,33 +199,17 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
 
             ListOperations<String, EquipmentOrgVo> lso = this.redisTemplate.opsForList();
             List<EquipmentOrgVo> list = lso.range(UK, 0, -1);
-            int voSize = list.size();
-            if (voSize > 0) {
-                lso.trim(UK, voSize, -1L);
+            if (ObjectUtil.isEmpty(list)) {
+                return;
             }
-
+            lso.trim(UK, list.size(), -1L);
             ListOperations<String, IotDvrChannel> cso = this.redisTemplate.opsForList();
             List<IotDvrChannel> devices = cso.range(UK + RedisKey.AFTER_DATA, 0, -1);
-            int devSize = devices.size();
-            if (devSize > 0) {
-                cso.trim(UK + RedisKey.AFTER_DATA, devSize, -1L);
-            }
-
-            if (list.size() == 0) {
+            if (ObjectUtil.isEmpty(devices)) {
                 return;
             }
-            /**
-             * 获取要逻辑删除的主机code和orgId
-             */
-            Set<EquipmentOrgVo> eos = new HashSet<>();
-            eos.addAll(list);
-
-            List<EquipmentOrgVo> eosList = new ArrayList<>();
-            eosList.addAll(eos);
-            /**
-             * 获取要进行批量处理的通道信息
-             * 并通过主机code,通道id,机构id进行去重
-             */
+            cso.trim(UK + RedisKey.AFTER_DATA, devices.size(), -1L);
+            //获取要进行批量处理的通道信息,并通过主机code,通道id,机构id进行去重
             List<IotDvrChannel> devis = devices.stream().collect(Collectors.collectingAndThen(
                     Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getChannelCode() + ";" + o.getHostCode() + ";" + o.getOrgId()))), ArrayList::new));
 
@@ -242,36 +218,18 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
              * 第一步 逻辑删除对应 主机的 通道数据
              * 第二步 批量更新数据
              */
-            this.batchUpdateDel(eosList);
-
-            /**
-             * 自己写批量插入,更新方法,保证效率
-             */
-            //批量更新列表
-            List<IotDvrChannel> upList = new ArrayList<>();
+            final List<EquipmentOrgVo> collect = list.stream().distinct().collect(Collectors.toList());
+            this.batchUpdateDel(collect);
             //批量插入列表
-            List<IotDvrChannel> inList = new ArrayList<>();
-            if (devis.size() > 0) {
-                for (IotDvrChannel dev : devis) {
-                    if (ObjectUtil.isNotEmpty(dev.getId())) {
-                        upList.add(dev);
-                    } else {
-                        inList.add(dev);
-                    }
-                }
-            }
-
-            if (upList.size() > 0) {
-                this.batchUpdateDevice(upList);
-            }
-
-            if (inList.size() > 0) {
-                this.batchInsertDevice(inList);
-            }
+            final List<IotDvrChannel> inList = devis.stream().filter(d -> ObjectUtil.isEmpty(d.getId())).collect(Collectors.toList());
+            //批量更新列表
+            final List<IotDvrChannel> upList = devis.stream().filter(d -> ObjectUtil.isNotEmpty(d.getId())).collect(Collectors.toList());
+            this.batchUpdateDevice(upList);
+            this.batchInsertDevice(inList);
 
         } catch (Exception e) {
             e.printStackTrace();
-            LogUtils.BASE_INFO_CHANNEL.error("【北向定时任务:{} 执行异常】【异常原因:{}】", "通道信息-DataDealJobService", e);
+            LogUtils.BASE_INFO_CHANNEL.error("【北向定时任务:{} 执行异常】【异常原因:{}】", "通道信息-DataDealJobService", e.getMessage());
             throw new RuntimeException(e.getMessage());
         }
     }
@@ -279,18 +237,30 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void batchUpdateDel(List<EquipmentOrgVo> eosList) {
-        baseMapper.batchUpdateDel(eosList);
+        for (EquipmentOrgVo equipmentOrgVo : eosList) {
+            LambdaUpdateWrapper<IotDvrChannel> wrapper = new LambdaUpdateWrapper<IotDvrChannel>();
+            wrapper.eq(IotDvrChannel::getHostCode, equipmentOrgVo.getEquipmentCode());
+            wrapper.set(IotDvrChannel::getOrgId, equipmentOrgVo.getOrgId());
+            wrapper.set(IotDvrChannel::getDeleted, 1);
+            update(wrapper);
+        }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void batchUpdateDevice(List<IotDvrChannel> upList) {
+        if (ObjectUtil.isEmpty(upList)) {
+            return;
+        }
         updateBatchById(upList);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void batchInsertDevice(List<IotDvrChannel> inList) {
+        if (ObjectUtil.isEmpty(inList)) {
+            return;
+        }
         saveBatch(inList);
     }
 }

+ 13 - 5
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoIntegrityCheckServiceImpl.java

@@ -24,6 +24,7 @@ import com.xunmei.mediator.domain.dto.videoIntegrityCheck.VideoIntegrityCheckDto
 import com.xunmei.mediator.util.RedisUtil;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.util.LogUtils;
 import io.netty.util.internal.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -77,7 +78,7 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
         }
         //与上次接收到的数据进行比较,如果相同则不进行处理
         if (redisUtil.compareWithCache(videoIntegrityCheckDto)) {
-             return ReceiveErrorDto.error(RedisKey.REPORT_DATA_REFUSE_MSG);
+            return ReceiveErrorDto.error(RedisKey.REPORT_DATA_REFUSE_MSG);
         }
 
         String organizationGuid = videoIntegrityCheckDto.getOrganizationGuid();
@@ -98,8 +99,13 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
 
         MediatorVideoIntegrityCheck old = this.findByOrgIdAndEquipmentCodeAndAndChannelCodeAndRecordDate(org.getId(), videoIntegrityCheckDto.getEquipmentCode(), videoIntegrityCheckDto.getChannelCode());
         MediatorVideoIntegrityCheck videoIntegrityCheck = new MediatorVideoIntegrityCheck();
+        boolean isCompensate = false;
         if (old != null) {
             videoIntegrityCheck = old;
+            if (LocalDate.parse(videoIntegrityCheckDto.getRecordDate(), DateTimeFormatter.ISO_DATE).isBefore(old.getRecordDate())) {
+                isCompensate = true;
+                LogUtils.STATUS_INFO_VIDEO_COMPLETE.info("接收到录像完整性补录数据,仅修改日志消息,消息内容:{}", JSON.toJSONString(videoIntegrityCheckDto));
+            }
         } else {
             videoIntegrityCheck.setCreateTime(new Date());
         }
@@ -135,7 +141,10 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
         videoIntegrityCheck.setOrgPath(org.getPath());
         videoIntegrityCheck.setStatus(getStatus(videoIntegrityCheckDto));
         videoIntegrityCheck.setLoseDuration(calculateLoseMinute(videoIntegrityCheck.getLoseSpan()));
-        this.saveOrUpdate(videoIntegrityCheck);
+        if (!isCompensate) {
+            //不是补录才进行保存数据
+            this.saveOrUpdate(videoIntegrityCheck);
+        }
         saveLog(videoIntegrityCheck);
 
         return ReceiveErrorDto.success();
@@ -144,13 +153,12 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
     private void saveLog(MediatorVideoIntegrityCheck videoIntegrityCheck) {
         MediatorVideoIntegrityCheckLog newLog = new MediatorVideoIntegrityCheckLog();
         MediatorVideoIntegrityCheckLog logData = integrityCheckLogService.findByOrgIdAndEquipmentCodeAndChannelCode(videoIntegrityCheck.getOrgId(), videoIntegrityCheck.getEquipmentCode(), videoIntegrityCheck.getChannelCode(), videoIntegrityCheck.getRecordDate());
-
         if (logData != null) {
-            BeanUtils.copyProperties(videoIntegrityCheck,logData,"id");
+            BeanUtils.copyProperties(videoIntegrityCheck, logData, "id");
             integrityCheckLogService.updateById(logData);
             return;
         }
-        BeanUtils.copyProperties(videoIntegrityCheck,newLog);
+        BeanUtils.copyProperties(videoIntegrityCheck, newLog);
         newLog.setId(IdWorker.getId());
         newLog.setVideoIntegrityCheckId(videoIntegrityCheck.getId());
         integrityCheckLogService.save(newLog);

+ 2 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/util/RedisCheckRepeatDataUtil.java

@@ -1,5 +1,6 @@
 package com.xunmei.mediator.util;
 
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.xunmei.common.core.utils.SpringUtils;
@@ -108,7 +109,7 @@ public class RedisCheckRepeatDataUtil {
         //判断是否拿到所有的数据
         final List<Boolean> list = allPageKeyList.stream().map(redisTemplate::hasKey).distinct().collect(Collectors.toList());
         if (list.contains(Boolean.FALSE)) {
-            // return ListUtil.empty();
+             return ListUtil.empty();
         }
 
         return allPageKeyList.stream().map(k -> {

+ 4 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java

@@ -25,6 +25,10 @@ public class UserExport {
     private String username;
     @ExcelProperty(value = "姓名")
     private String name;
+    @ExcelProperty(value = "地区")
+    private String affiliatedArea;
+    @ExcelProperty(value = "行社名称")
+    private String affiliatedBank;
     @ExcelProperty(value = "所属机构")
     private String orgName;
     @ExcelProperty(value = "用户角色")

+ 2 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -644,6 +644,8 @@
         u.last_time,
         o.NAME AS org_name,
         o.path AS org_path,
+        o.affiliated_area,
+        o.affiliated_bank,
         u.image,
         u.card,
         u.gender,

部分文件因文件數量過多而無法顯示