From 2d368b1f587edfe4e1c87e9dc1d5345cd43b8841 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 21 一月 2026 17:20:37 +0800
Subject: [PATCH] update
---
admin-server/src/main/java/com/estate/expert/admin/controller/admin/DeviceController.java | 5
admin-server/src/main/resources/mapper/CheckMapper.xml | 28 ++
admin-server/src/main/java/com/estate/expert/admin/service/ReportService.java | 18 +
admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfoDto.java | 5
admin-server/src/main/java/com/estate/expert/admin/MainApplication.java | 4
admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectUsageType.java | 36 +-
admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDutyVo.java | 14 +
admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectType.java | 50 +---
admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java | 2
admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfo.java | 5
admin-server/src/main/java/com/estate/expert/admin/utils/WebUtils.java | 170 +++++++++++++++
admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java | 49 ++++
admin-server/src/main/java/com/estate/expert/admin/controller/admin/OnDutyController.java | 47 ++++
admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectController.java | 3
admin-server/src/main/java/com/estate/expert/admin/controller/stat/ReportController.java | 45 ++++
admin-server/src/main/java/com/estate/expert/admin/enums/BizResultCode.java | 7
admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java | 1
admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java | 12 +
admin-server/src/main/resources/mapper/OnDutyMapper.xml | 24 ++
admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectInfoController.java | 2
admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java | 12 +
admin-server/src/main/java/com/estate/expert/admin/domain/repository/OnDutyMapper.java | 2
admin-server/pom.xml | 21 +
admin-server/src/main/java/com/estate/expert/admin/domain/project/info/HazardSourceType.java | 24 -
admin-server/src/main/java/com/estate/expert/admin/domain/repository/CheckMapper.java | 1
admin-server/src/main/java/com/estate/expert/admin/controller/admin/CheckController.java | 43 +++
admin-server/src/main/java/com/estate/expert/admin/domain/business/check/CheckVo.java | 5
27 files changed, 556 insertions(+), 79 deletions(-)
diff --git a/admin-server/pom.xml b/admin-server/pom.xml
index 1164b63..ad8acca 100644
--- a/admin-server/pom.xml
+++ b/admin-server/pom.xml
@@ -21,6 +21,18 @@
</properties>
<dependencies>
+
+ <dependency>
+ <groupId>cn.afterturn</groupId>
+ <artifactId>easypoi-spring-boot-starter</artifactId>
+ <version>4.0.0</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>guava</artifactId>
+ <groupId>com.google.guava</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
@@ -145,7 +157,14 @@
<artifactId>spring-expression</artifactId>
<version>5.3.18</version>
</dependency>
-
+
+ <!-- Word to PDF conversion -->
+ <dependency>
+ <groupId>fr.opensagres.xdocreport</groupId>
+ <artifactId>fr.opensagres.poi.xwpf.converter.pdf</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+
<!-- MyBatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
diff --git a/admin-server/src/main/java/com/estate/expert/admin/MainApplication.java b/admin-server/src/main/java/com/estate/expert/admin/MainApplication.java
index 870f235..42f670e 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/MainApplication.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/MainApplication.java
@@ -8,7 +8,9 @@
/**
* 涓诲簲鐢ㄧ▼搴? */
-@SpringBootApplication(scanBasePackages = {"com.estate.expert.admin"})
+@SpringBootApplication(scanBasePackages = {"com.estate.expert.admin"},exclude = {
+ org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration.class
+})
@EnableConfigurationProperties()
@EnableAsync
@MapperScan("com.estate.expert.admin.domain.repository")
diff --git a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/CheckController.java b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/CheckController.java
index 7419d28..ed37fd1 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/CheckController.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/CheckController.java
@@ -1,19 +1,27 @@
package com.estate.expert.admin.controller.admin;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.estate.expert.admin.domain.business.check.CheckVo;
import com.estate.expert.admin.domain.business.onduty.OnDutyVo;
import com.estate.expert.admin.domain.common.request.OnDutyRequest;
import com.estate.expert.admin.service.CheckService;
import com.estate.expert.admin.service.OnDutyService;
+import com.estate.expert.admin.utils.WebUtils;
import com.estate.expert.common.rpc.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
import java.util.List;
@Slf4j
@@ -46,6 +54,41 @@
}
+ @ApiOperation(value = "批量删除")
+ @PostMapping("/delete")
+ public Result delete(@RequestBody List<Integer> ids) {
+ return Result.success(checkService.removeByIds(ids));
+ }
+
+ @ApiOperation(value = "导出")
+ @PostMapping(value = "/export")
+ public void export(@RequestBody OnDutyRequest query){
+ List<CheckVo> list = checkService.exportList(query);
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), CheckVo.class, list);
+ HttpServletResponse response = WebUtils.response();
+ assert response != null;
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("检查情况导出信息.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
// @ApiOperation(value = "新增故事简讯")
// @PostMapping("/add")
// public Result add(@Validated @RequestBody AccidentBrief dto) {
diff --git a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/DeviceController.java b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/DeviceController.java
index e37ac99..7a09425 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/DeviceController.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/DeviceController.java
@@ -6,16 +6,20 @@
import com.estate.expert.admin.domain.common.request.PageReq;
import com.estate.expert.admin.domain.user.User;
import com.estate.expert.admin.service.DeviceService;
+import com.estate.expert.common.auth.IgnoreAuth;
import com.estate.expert.common.domain.Session;
import com.estate.expert.common.rpc.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
@Api(tags = "管理后台/设备管理")
@Slf4j
@@ -28,6 +32,7 @@
@Resource
private DeviceService deviceService;
+
@ApiOperation(value = "设备列表")
@PostMapping("/list")
public Result list(@RequestParam(value = "keyword", required = false) String keyword,
diff --git a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/OnDutyController.java b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/OnDutyController.java
index 5c4f3e1..3c4bb2f 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/OnDutyController.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/OnDutyController.java
@@ -1,5 +1,7 @@
package com.estate.expert.admin.controller.admin;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.estate.expert.admin.domain.business.accidentbrief.AccidentBrief;
@@ -9,17 +11,26 @@
import com.estate.expert.admin.domain.common.request.PageReq;
import com.estate.expert.admin.service.AccidentBriefService;
import com.estate.expert.admin.service.OnDutyService;
+import com.estate.expert.admin.utils.WebUtils;
import com.estate.expert.common.rpc.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
+import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
@Slf4j
@CrossOrigin
@@ -51,6 +62,42 @@
}
+ @ApiOperation(value = "批量删除")
+ @PostMapping("/delete")
+ public Result delete(@RequestBody List<Integer> ids) {
+ return Result.success(onDutyService.removeByIds(ids));
+ }
+
+ @ApiOperation(value = "导出")
+ @PostMapping(value = "/export")
+ public void export(@RequestBody OnDutyRequest query){
+ List<OnDutyVo> list = onDutyService.exportList(query);
+
+ Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), OnDutyVo.class, list);
+ HttpServletResponse response = WebUtils.response();
+ assert response != null;
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("在岗情况导出信息.xls", "utf-8");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ outputStream = response.getOutputStream();
+ workbook.write(outputStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
// @ApiOperation(value = "新增故事简讯")
// @PostMapping("/add")
// public Result add(@Validated @RequestBody AccidentBrief dto) {
diff --git a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectController.java b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectController.java
index d0a3a1d..852eb64 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectController.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectController.java
@@ -7,6 +7,7 @@
import com.estate.expert.admin.domain.user.User;
import com.estate.expert.admin.service.ClientParamService;
import com.estate.expert.admin.service.ProjectService;
+import com.estate.expert.common.auth.IgnoreAuth;
import com.estate.expert.common.domain.Session;
import com.estate.expert.common.rpc.Result;
import io.swagger.annotations.Api;
@@ -16,6 +17,8 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
@Api(tags = "管理后台/项目管理")
@Slf4j
diff --git a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectInfoController.java b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectInfoController.java
index 6651204..27d99ee 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectInfoController.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/ProjectInfoController.java
@@ -2,6 +2,7 @@
import com.estate.expert.admin.domain.common.request.BatchReq;
import com.estate.expert.admin.domain.common.request.PageReq;
+import com.estate.expert.admin.domain.common.response.PageResp;
import com.estate.expert.admin.domain.project.info.ProjectInfoDto;
import com.estate.expert.admin.domain.project.info.ProjectInfoMapper;
import com.estate.expert.admin.domain.user.User;
@@ -17,6 +18,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.List;
@Api(tags = "管理后台/项目信息")
@Slf4j
diff --git a/admin-server/src/main/java/com/estate/expert/admin/controller/stat/ReportController.java b/admin-server/src/main/java/com/estate/expert/admin/controller/stat/ReportController.java
index eca6144..d5786ba 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/controller/stat/ReportController.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/controller/stat/ReportController.java
@@ -73,6 +73,24 @@
}
}
+ @ApiOperation("模糊评价报告PDF下载")
+ @GetMapping("/fuzzyReportPdf")
+ @IgnoreAuth
+ public void fuzzyReportPdf(@ApiParam("检查任务ID") @RequestParam(value = "checkTaskId") Integer checkTaskId,
+ @ApiParam("报告模版ID") @RequestParam(value = "templateId") Integer templateId,
+ HttpServletResponse response) throws IOException {
+ downloadPdf(checkTaskId, templateId, response, "模糊评价", true);
+ }
+
+ @ApiOperation("打分评价报告PDF下载")
+ @GetMapping("/scoreReportPdf")
+ @IgnoreAuth
+ public void scoreReportPdf(@ApiParam("检查任务ID") @RequestParam(value = "checkTaskId") Integer checkTaskId,
+ @ApiParam("报告模版ID") @RequestParam(value = "templateId") Integer templateId,
+ HttpServletResponse response) throws IOException {
+ downloadPdf(checkTaskId, templateId, response, "打分评价", false);
+ }
+
private void download(XWPFTemplate doc, HttpServletResponse response, String typeName,
Integer checkTaskId, Integer templateId) throws IOException {
OutputStream out;
@@ -95,4 +113,31 @@
out.flush();
}
+ private void downloadPdf(Integer checkTaskId, Integer templateId, HttpServletResponse response,
+ String typeName, boolean isFuzzy) throws IOException {
+ OutputStream out;
+ BufferedOutputStream bos;
+
+ var checkTask = checkTaskService.get(checkTaskId, true);
+ var reportTemplate = reportTemplateService.get(templateId);
+ BizResultCode.TASK_NOT_FOUND.check(checkTask == null);
+
+ var docName = checkTask.getProject().getName() + "_" + reportTemplate.getName() + "_" + typeName;
+ String encodedFileName = URLEncoder.encode(docName, "UTF-8");
+ response.setContentType("application/pdf");
+ response.setHeader("Content-disposition", "attachment;filename=\"" + encodedFileName + ".pdf\"");
+
+ out = response.getOutputStream();
+ bos = new BufferedOutputStream(out);
+
+ if (isFuzzy) {
+ reportService.fuzzyReportPdf(checkTaskId, templateId, bos);
+ } else {
+ reportService.scoreReportPdf(checkTaskId, templateId, bos);
+ }
+
+ bos.flush();
+ out.flush();
+ }
+
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/business/check/CheckVo.java b/admin-server/src/main/java/com/estate/expert/admin/domain/business/check/CheckVo.java
index 94d05e2..22a39a0 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/business/check/CheckVo.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/business/check/CheckVo.java
@@ -1,6 +1,7 @@
package com.estate.expert.admin.domain.business.check;
+import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -36,6 +37,7 @@
@ApiModelProperty("计划名称")
+ @Excel(name = "计划名称")
private String planName;
@@ -43,12 +45,14 @@
private Integer projectId;
@ApiModelProperty("项目名称")
+ @Excel(name = "项目")
private String projectName;
@ApiModelProperty("委托方id")
private Integer clientId;
@ApiModelProperty("委托方名称")
+ @Excel(name = "委托方")
private String clientName;
@ApiModelProperty("安全告知单")
@@ -61,6 +65,7 @@
private String integrityNotification;
@ApiModelProperty("检查时间")
+ @Excel(name = "检查时间",format = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date time;
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDutyVo.java b/admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDutyVo.java
index ec699b4..7ce7fbb 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDutyVo.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDutyVo.java
@@ -1,6 +1,7 @@
package com.estate.expert.admin.domain.business.onduty;
+import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -38,6 +39,7 @@
@ApiModelProperty("计划名称")
+ @Excel(name = "计划名称")
private String planName;
@@ -45,7 +47,12 @@
private Integer projectId;
@ApiModelProperty("项目名称")
+ @Excel(name = "项目")
private String projectName;
+
+ @ApiModelProperty("人员在岗(固定)")
+ @Excel(name = "检查内容")
+ private String content="人员在岗";
@ApiModelProperty("委托方id")
private Integer clientId;
@@ -53,16 +60,17 @@
@ApiModelProperty("委托方名称")
private String clientName;
- @ApiModelProperty("人员在岗(固定)")
- private String content;
+
@ApiModelProperty("岗位id")
private Integer positionId;
@ApiModelProperty("岗位名称")
+ @Excel(name = "岗位")
private String positionName;
@ApiModelProperty("问题备注")
+ @Excel(name = "问题备注")
private String remark;
@ApiModelProperty("图片")
@@ -71,9 +79,11 @@
@ApiModelProperty("检查时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @Excel(name = "检查时间",format = "yyyy-MM-dd")
private Date time;
@ApiModelProperty("1在岗 2未在岗 3请假")
+ @Excel(name = "在岗情况",replace = {"在岗_1","未在岗_2","请假_3"})
private Integer state;
@ApiModelProperty("创建时间")
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectType.java b/admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectType.java
index 4326449..c909c73 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectType.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectType.java
@@ -11,19 +11,11 @@
@Getter
public enum ProjectType implements IOptionVo {
- HOUSE_CONSTRUCTION("房建"), // 房建
+ HOUSE_CONSTRUCTION("房建工程"), // 房建工程
- MUNICIPAL_ADMINISTRATION("市政"), // 市政
+ MUNICIPAL_ADMINISTRATION("市政工程"), // 市政工程
- CONSTRUCTION_WORK("建筑工程"), // 建筑工程
-
- CIVIL_WORKS("土木工程"), // 土木工程
-
- ELECTRICAL_ENGINEERING("机电工程"),// 机电工程
-
- SUBSIDIARY("子公司"),// 子公司
-
- DECORATION("装饰装修"); //装饰装修
+ FIXED_ASSETS("固定资产"); // 固定资产
final String desc;
@@ -49,34 +41,26 @@
}
static {
+ // 房建工程关联用途类型
HOUSE_CONSTRUCTION.linkPurposeType(ProjectUsageType.RESIDENTIAL);
HOUSE_CONSTRUCTION.linkPurposeType(ProjectUsageType.COMMERCIAL);
+ // 市政工程关联用途类型
MUNICIPAL_ADMINISTRATION.linkPurposeType(ProjectUsageType.ROAD);
MUNICIPAL_ADMINISTRATION.linkPurposeType(ProjectUsageType.BRIDGE);
+ MUNICIPAL_ADMINISTRATION.linkPurposeType(ProjectUsageType.TUNNEL_WORKS);
- CONSTRUCTION_WORK.linkPurposeType(ProjectUsageType.CIVIL_WORKS);
- CONSTRUCTION_WORK.linkPurposeType(ProjectUsageType.INDUSTRIAL_WORKS);
- CONSTRUCTION_WORK.linkPurposeType(ProjectUsageType.STRUCTURE_WORKS);
-
- CIVIL_WORKS.linkPurposeType(ProjectUsageType.ROAD_WORKS);
- CIVIL_WORKS.linkPurposeType(ProjectUsageType.RAIL_TRANSPORTATION);
- CIVIL_WORKS.linkPurposeType(ProjectUsageType.BRIDGE_WORKS);
- CIVIL_WORKS.linkPurposeType(ProjectUsageType.TUNNEL_WORKS);
- CIVIL_WORKS.linkPurposeType(ProjectUsageType.HYDRAULIC_WORKS);
- CIVIL_WORKS.linkPurposeType(ProjectUsageType.MINING_WORKS);
- CIVIL_WORKS.linkPurposeType(ProjectUsageType.CABLE_PIPE_WORKS);
-
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.MECHANICAL_EQUIPMENT);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.STATIC_EQUIPMENT);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.ELECTRICAL);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.BUILDING_AUTOMATION);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.PIPELINE);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.FIRE_PROTECTION);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.PURIFICATION);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.VENTILATION_AIR_CONDITIONING);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.EQUIPMENT_PIPE_ANTICORROSION_INSULATION);
- ELECTRICAL_ENGINEERING.linkPurposeType(ProjectUsageType.INDUSTRIAL_FURNACE);
+ // 固定资产关联用途类型
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.RETAIL);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.FOOD);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.EDUCATION);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.MEDICAL_BEAUTY);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.ENTERTAINMENT);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.HOTEL);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.REFIT);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.PUBLIC_PLACE);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.ENERGY_STATION);
+ FIXED_ASSETS.linkPurposeType(ProjectUsageType.MULTI_FUNCTION_COMPLEX);
}
@Override
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectUsageType.java b/admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectUsageType.java
index 7020276..9a6e461 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectUsageType.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/project/enums/ProjectUsageType.java
@@ -7,30 +7,26 @@
@ApiModel("项目用途类型")
@Getter
public enum ProjectUsageType implements IOptionVo {
+ // 房建工程用途类型
RESIDENTIAL("住宅"),
COMMERCIAL("商业"),
+
+ // 市政工程用途类型
ROAD("道路"),
BRIDGE("桥梁"),
- CIVIL_WORKS("民用建筑工程"),
- INDUSTRIAL_WORKS("工业建筑工程"),
- STRUCTURE_WORKS("构筑物工程"),
- ROAD_WORKS("道路工程"),
- RAIL_TRANSPORTATION("轨道交通工程"),
- BRIDGE_WORKS("桥涵工程"),
- TUNNEL_WORKS("隧道工程"),
- HYDRAULIC_WORKS("水工工程"),
- MINING_WORKS("矿山工程"),
- CABLE_PIPE_WORKS("架线与管沟工程"),
- MECHANICAL_EQUIPMENT("机械设备工程"),
- STATIC_EQUIPMENT("静置设备与工艺技术结构工程"),
- ELECTRICAL("电气工程"),
- BUILDING_AUTOMATION("建筑智能化工程"),
- PIPELINE("管道工程"),
- FIRE_PROTECTION("消防工程"),
- PURIFICATION("净化工程"),
- VENTILATION_AIR_CONDITIONING("通风与空调工程"),
- EQUIPMENT_PIPE_ANTICORROSION_INSULATION("设备及管道防腐蚀与绝热工程"),
- INDUSTRIAL_FURNACE("工业炉工程");
+ TUNNEL_WORKS("隧道"),
+
+ // 固定资产用途类型
+ RETAIL("仓储"),
+ FOOD("餐饮"),
+ EDUCATION("教育"),
+ MEDICAL_BEAUTY("医疗美容"),
+ ENTERTAINMENT("娱乐"),
+ HOTEL("酒店"),
+ REFIT("翻新改造"),
+ PUBLIC_PLACE("公共场所"),
+ ENERGY_STATION("能源站"),
+ MULTI_FUNCTION_COMPLEX("综合体");
private final String desc;
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/HazardSourceType.java b/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/HazardSourceType.java
index 4b232e7..68c84ee 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/HazardSourceType.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/HazardSourceType.java
@@ -12,23 +12,13 @@
@Getter
public enum HazardSourceType implements IOptionVo {
- FOUNDATION_PIT("基坑工程"),
- FORMWORK_SUPPORT("模板支撑工程"),
- STEEL_STRUCTURE_INSTALLATION_SUPPORT_SYSTEM("钢结构安装满堂支撑体系"),
- HOISTING_AND_LIFTING("起重吊装工程"),
- CRANE_INSTALLATION("起重机械进行安装的工程"),
- CRANE_INSTALLATION_AND_DISMANTLING("起重机械安装和拆卸工程"),
- GROUND_PIPE_SCAFFOLD("落地式钢管脚手架工程"),
- SUSPENDED_SCAFFOLD("附着式升降脚手架工程"),
- CANTILEVER_SCAFFOLD("悬挑式脚手架工程"),
- HIGH_ALTITUDE_OPERATION_GONDOLA("高处作业吊篮"),
- UNLOADING_PLATFORM_OPERATION_PLATFORM("卸料平台操作平台工程"),
- IRREGULAR_SCAFFOLD("异型脚手架工程"),
- DEMOLITION("拆除工程"),
- BUILDING_CURTAIN_WALL_INSTALLATION("建筑幕墙安装工程"),
- STEEL_STRUCTURE_GRID_AND_MEMBRANE_STRUCTURE_INSTALLATION("钢结构网架和索膜结构安装工程"),
- MANUAL_BORED_PILE("人工挖孔桩工程"),
- PREFABRICATED_COMPONENT_INSTALLATION("装配式建筑混凝土预制构件安装工程");
+ HIGH_ALTITUDE_OPERATION("高处作业"),
+ FIRE_OPERATION("动火作业"),
+ LARGE_CONCRETE_CONSTRUCTION("大体积混凝土浇筑"),
+ LIMITED_SPACE_OPERATION("有限空间作业"),
+ OCCUPY_CONSTRUCTION("占道施工"),
+ SINGLE_PERSON_OPERATION("单人操作及作业"),
+ SPACE_INTERSECTION_OPERATION("空间交叉作业");
private final String desc;
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfo.java b/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfo.java
index 670625e..590d3fa 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfo.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfo.java
@@ -59,7 +59,10 @@
*/
@Type(type = "io.hypersistence.utils.hibernate.type.json.JsonType")
@Column(columnDefinition = "json")
- private HazardSourceType[] hazardSourceTypes;
+ private HazardSourceType[] hazardSource;
+
+
+
/**
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfoDto.java b/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfoDto.java
index 164bd3d..8fdc5d4 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfoDto.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/project/info/ProjectInfoDto.java
@@ -11,6 +11,7 @@
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.util.List;
/**
* DTO for {@link ProjectInfo}
@@ -43,6 +44,10 @@
@ApiModelProperty("超大危工程选项")
ProjectSuperDangerousType[] superDangerousOptions;
+ @ApiModelProperty("风险源")
+ HazardSourceType[] hazardSource;
+
+
@ApiModelProperty("更新时间")
@NotNull
LocalDate updateDate;
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/repository/CheckMapper.java b/admin-server/src/main/java/com/estate/expert/admin/domain/repository/CheckMapper.java
index 0e17d53..ff8db91 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/repository/CheckMapper.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/repository/CheckMapper.java
@@ -25,4 +25,5 @@
CheckVo detail(@Param("id") Integer id);
+ List<CheckVo> exportList(@Param("request") OnDutyRequest request, @Param("sTime") String sTime, @Param("eTime") String eTime);
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/repository/OnDutyMapper.java b/admin-server/src/main/java/com/estate/expert/admin/domain/repository/OnDutyMapper.java
index 3cfd13e..1ea86d1 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/repository/OnDutyMapper.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/repository/OnDutyMapper.java
@@ -24,4 +24,6 @@
OnDutyVo detail(Integer id);
+ List<OnDutyVo> exportList(@Param("request") OnDutyRequest query, @Param("sTime") String sTime, @Param("eTime") String eTime);
+
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/enums/BizResultCode.java b/admin-server/src/main/java/com/estate/expert/admin/enums/BizResultCode.java
index 3b8a5d3..8b90b73 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/enums/BizResultCode.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/enums/BizResultCode.java
@@ -157,13 +157,16 @@
DEVICE_USAGE_NOT_EXISTED("设备使用记录不存在"),
PASSWORD_ERROR("密码输入错误"),
PASSWORD_FORMAT_ERROR("密码需要6到16位长度"),
-
+
// License相关错误码
LICENSE_NOT_CONFIGURED("License密钥未配置"),
LICENSE_INVALID_FORMAT("License格式错误"),
LICENSE_SIGNATURE_INVALID("License签名验证失败"),
LICENSE_EXPIRED("License已过期"),
- LICENSE_VALIDATION_FAILED("License验证失败");
+ LICENSE_VALIDATION_FAILED("License验证失败"),
+
+ // 报告生成相关错误码
+ BIZ_REPORT_GENERATE_FAILED("报告生成失败");
private final String errorMsg;
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java b/admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java
index 0fab467..17c04d0 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java
@@ -61,4 +61,5 @@
*/
void deleteCheckInfoByIds(List<Integer> ids);
+ List<CheckVo> exportList(OnDutyRequest query);
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java b/admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java
index e6b16a3..8b90467 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java
@@ -64,4 +64,6 @@
*/
void deleteByIds(List<Integer> ids);
+ List<OnDutyVo> exportList(OnDutyRequest query);
+
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/ReportService.java b/admin-server/src/main/java/com/estate/expert/admin/service/ReportService.java
index 06fe465..9764752 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/ReportService.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/ReportService.java
@@ -3,6 +3,8 @@
import com.alibaba.fastjson.JSONObject;
import com.deepoove.poi.XWPFTemplate;
+import java.io.OutputStream;
+
/**
* 报告服务
**/
@@ -25,6 +27,14 @@
XWPFTemplate fuzzyReport(Integer checkTaskId, Integer templateId);
/**
+ * 模糊评价PDF
+ * @param checkTaskId 检查任务ID
+ * @param templateId 模板ID
+ * @param outputStream 输出流
+ */
+ void fuzzyReportPdf(Integer checkTaskId, Integer templateId, OutputStream outputStream);
+
+ /**
* 打分评价
* @param checkTaskId 检查任务ID
* @param templateId 模板ID
@@ -39,4 +49,12 @@
* @return 打分评价模板
*/
XWPFTemplate scoreReport(Integer checkTaskId, Integer templateId);
+
+ /**
+ * 打分评价PDF
+ * @param checkTaskId 检查任务ID
+ * @param templateId 模板ID
+ * @param outputStream 输出流
+ */
+ void scoreReportPdf(Integer checkTaskId, Integer templateId, OutputStream outputStream);
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java b/admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java
index 4ba9085..ed45298 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java
@@ -118,4 +118,16 @@
// 使用 MyBatis Plus 的批量删除方法(逻辑删除,因为 Check 实体有 @TableLogic 注解)
removeByIds(ids);
}
+
+ @Override
+ public List<CheckVo> exportList(OnDutyRequest request) {
+ String sTime =null;
+ String eTime =null;
+ if(request.getTime()!=null && !request.getTime().isEmpty()){
+ sTime = request.getTime().split(" - ")[0] + " 00:00:00";
+ eTime = request.getTime().split(" - ")[1] + " 23:59:59";
+ }
+ List<CheckVo> list = this.baseMapper.exportList( request,sTime,eTime);
+ return list;
+ }
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java b/admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java
index 35b588a..6ba51d3 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java
@@ -166,5 +166,17 @@
// 使用 MyBatis-Plus 的批量删除方法(物理删除)
this.removeByIds(ids);
}
+
+ @Override
+ public List<OnDutyVo> exportList(OnDutyRequest query) {
+ String sTime =null;
+ String eTime =null;
+ if(query.getTime()!=null && !query.getTime().isEmpty()){
+ sTime = query.getTime().split(" - ")[0] + " 00:00:00";
+ eTime = query.getTime().split(" - ")[1] + " 23:59:59";
+ }
+ List<OnDutyVo> list = this.baseMapper.exportList( query,sTime,eTime);
+ return list;
+ }
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java b/admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java
index 2f20254..0ca1df7 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/impl/ReportServiceImpl.java
@@ -18,10 +18,15 @@
import com.estate.expert.admin.stat.report.data.impl.SystemFuzzyReportData;
import com.estate.expert.admin.stat.report.data.impl.SystemScoreReportData;
import com.estate.expert.common.exception.BizException;
+import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;
+import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
/**
* 报告数据服务实现类
@@ -116,6 +121,50 @@
return builder.buildReport(reportData, template.getConfig());
}
+ @Override
+ public void fuzzyReportPdf(Integer checkTaskId, Integer templateId, OutputStream outputStream) {
+ try (var doc = fuzzyReport(checkTaskId, templateId)) {
+ convertToPdf(doc, outputStream);
+ } catch (Exception e) {
+ log.error("生成模糊评价PDF报告失败", e);
+ throw new BizException("生成模糊评价PDF报告失败");
+ }
+ }
+
+ @Override
+ public void scoreReportPdf(Integer checkTaskId, Integer templateId, OutputStream outputStream) {
+ try (var doc = scoreReport(checkTaskId, templateId)) {
+ convertToPdf(doc, outputStream);
+ } catch (Exception e) {
+ log.error("生成打分评价PDF报告失败", e);
+ throw new BizException("生成打分评价PDF报告失败");
+ }
+ }
+
+ /**
+ * 将Word文档转换为PDF
+ * @param template Word模板
+ * @param outputStream 输出流
+ */
+ private void convertToPdf(XWPFTemplate template, OutputStream outputStream) throws Exception {
+ // 先将Word模板写入字节数组
+ ByteArrayOutputStream docOutputStream = new ByteArrayOutputStream();
+ template.write(docOutputStream);
+
+ // 从字节数组读取Word文档
+ ByteArrayInputStream docInputStream = new ByteArrayInputStream(docOutputStream.toByteArray());
+ org.apache.poi.xwpf.usermodel.XWPFDocument document = new org.apache.poi.xwpf.usermodel.XWPFDocument(docInputStream);
+
+ // 转换为PDF
+ PdfOptions options = PdfOptions.create();
+ PdfConverter.getInstance().convert(document, outputStream, options);
+
+ // 关闭资源
+ document.close();
+ docInputStream.close();
+ docOutputStream.close();
+ }
+
private ReportBuilderBase getReportBuilder(Integer templateId) {
var reportTemplate = reportTemplateService.get(templateId);
BizResultCode.BIZ_REPORT_TEMPLATE_NOT_EXIST.check(reportTemplate == null);
diff --git a/admin-server/src/main/java/com/estate/expert/admin/utils/WebUtils.java b/admin-server/src/main/java/com/estate/expert/admin/utils/WebUtils.java
new file mode 100644
index 0000000..5178e64
--- /dev/null
+++ b/admin-server/src/main/java/com/estate/expert/admin/utils/WebUtils.java
@@ -0,0 +1,170 @@
+package com.estate.expert.admin.utils;
+
+
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * web工具类
+ *
+ * @author liheng
+ */
+public final class WebUtils extends org.springframework.web.util.WebUtils {
+
+ /**
+ * 当前请求
+ */
+ public static HttpServletRequest request() {
+ return contextHolder() == null ? null : contextHolder().getRequest();
+ }
+
+ /**
+ * 当前响应
+ */
+ public static HttpServletResponse response() {
+ return contextHolder() == null ? null : contextHolder().getResponse();
+ }
+
+ /**
+ * 当前session
+ */
+ public static HttpSession session() {
+ return request() == null ? null : request().getSession();
+ }
+
+ /**
+ * 当前ServletRequest
+ */
+ public static ServletRequestAttributes contextHolder() {
+ return (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ }
+
+ /**
+ * 判断请求是否为 AJAX
+ *
+ * @param request 当前请求
+ */
+ public static boolean isAjax(HttpServletRequest request) {
+ return "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
+ }
+
+ /**
+ * 获取操作系统,浏览器及浏览器版本信息
+ *
+ * @param request
+ * @return
+ */
+ public static Map<String, String> getOsAndBrowserInfo(HttpServletRequest request) {
+ Map<String, String> map = new HashMap<>(2);
+ String browserDetails = request.getHeader("User-Agent");
+ String userAgent = browserDetails;
+ String user = userAgent.toLowerCase();
+
+ String os = "";
+ String browser = "";
+ //=================OS Info=======================
+ if (userAgent.toLowerCase().contains("windows")) {
+ os = "Windows";
+ } else if (userAgent.toLowerCase().contains("mac")) {
+ os = "Mac";
+ } else if (userAgent.toLowerCase().contains("x11")) {
+ os = "Unix";
+ } else if (userAgent.toLowerCase().contains("android")) {
+ os = "Android";
+ } else if (userAgent.toLowerCase().contains("iphone")) {
+ os = "IPhone";
+ } else {
+ os = "UnKnown, More-Info: " + userAgent;
+ }
+ //===============Browser===========================
+ if (user.contains("edge")) {
+ browser = (userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-");
+ } else if (user.contains("msie")) {
+ String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0];
+ browser = substring.split(" ")[0].replace("MSIE", "IE") + "-" + substring.split(" ")[1];
+ } else if (user.contains("safari") && user.contains("version")) {
+ browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0]
+ + "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
+ } else if (user.contains("opr") || user.contains("opera")) {
+ if (user.contains("opera")) {
+ browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0]
+ + "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
+ } else if (user.contains("opr")) {
+ browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-"))
+ .replace("OPR", "Opera");
+ }
+ } else if (user.contains("chrome")) {
+ browser = (userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-");
+ } else if ((user.contains("mozilla/7.0")) || (user.contains("netscape6")) ||
+ (user.contains("mozilla/4.7")) || (user.contains("mozilla/4.78")) ||
+ (user.contains("mozilla/4.08")) || (user.contains("mozilla/3"))) {
+ browser = "Netscape-?";
+ } else if (user.contains("firefox")) {
+ browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
+ } else if (user.contains("rv")) {
+ String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-");
+ browser = "IE" + IEVersion.substring(0, IEVersion.length() - 1);
+ } else {
+ browser = "UnKnown, More-Info: " + userAgent;
+ }
+ map.put("os", os);
+ map.put("browser", browser);
+ return map;
+ }
+
+ /**
+ * 读取cookie
+ *
+ * @param name cookie name
+ * @return cookie value
+ */
+ public String getCookieVal(String name) {
+ return getCookieVal(request(), name);
+ }
+
+ /**
+ * 读取cookie
+ *
+ * @param request HttpServletRequest
+ * @param name cookie name
+ * @return cookie value
+ */
+ public String getCookieVal(HttpServletRequest request, String name) {
+ Cookie cookie = getCookie(request, name);
+ return cookie != null ? cookie.getValue() : null;
+ }
+
+ /**
+ * 清除 某个指定的cookie
+ *
+ * @param response HttpServletResponse
+ * @param key cookie key
+ */
+ public void removeCookie(HttpServletResponse response, String key) {
+ setCookie(response, key, null, 0);
+ }
+
+ /**
+ * 设置cookie
+ *
+ * @param response HttpServletResponse
+ * @param name cookie name
+ * @param value cookie value
+ * @param maxAgeInSeconds maxage
+ */
+ public void setCookie(HttpServletResponse response, String name, String value, int maxAgeInSeconds) {
+ Cookie cookie = new Cookie(name, value);
+ cookie.setPath("/");
+ cookie.setMaxAge(maxAgeInSeconds);
+ //cookie.setHttpOnly(true);
+ response.addCookie(cookie);
+ }
+}
diff --git a/admin-server/src/main/resources/mapper/CheckMapper.xml b/admin-server/src/main/resources/mapper/CheckMapper.xml
index 646f463..6983a5e 100644
--- a/admin-server/src/main/resources/mapper/CheckMapper.xml
+++ b/admin-server/src/main/resources/mapper/CheckMapper.xml
@@ -8,7 +8,7 @@
t2.name as plan_name,
t3.name as project_name,
t4.name as client_name
- from check t1
+ from check_info t1
left join plan t2 on t1.plan_id = t2.id
left join project t3 on t1.project_id = t3.id
left join client t4 on t1.client_id = t4.id
@@ -32,10 +32,34 @@
t2.name as plan_name,
t3.name as project_name,
t4.name as client_name
- from check t1
+ from check_info t1
left join plan t2 on t1.plan_id = t2.id
left join project t3 on t1.project_id = t3.id
left join client t4 on t1.client_id = t4.id
where t1.id = #{id}
</select>
+ <select id="exportList" resultType="com.estate.expert.admin.domain.business.check.CheckVo">
+ select t1.id,t1.plan_id,t1.project_id,t1.client_id,t1.safety_slip,t1.check_user_img,t1.integrity_notification,t1.time,t1.create_time,
+ t2.name as plan_name,
+ t3.name as project_name,
+ t4.name as client_name
+ from check_info t1
+ left join plan t2 on t1.plan_id = t2.id
+ left join project t3 on t1.project_id = t3.id
+ left join client t4 on t1.client_id = t4.id
+ where 1=1
+ <if test="request.planId != null">
+ and t1.plan_id = #{request.planId}
+ </if>
+ <if test="request.projectId != null">
+ and t1.project_id = #{request.projectId}
+ </if>
+ <if test="request.clientId != null">
+ and t1.client_id = #{request.clientId}
+ </if>
+ <if test="sTime !=null">
+ and t1.time between #{sTime} and #{eTime}
+ </if>
+ order by t1.time desc
+ </select>
</mapper>
diff --git a/admin-server/src/main/resources/mapper/OnDutyMapper.xml b/admin-server/src/main/resources/mapper/OnDutyMapper.xml
index 44ab32c..7bc7cb9 100644
--- a/admin-server/src/main/resources/mapper/OnDutyMapper.xml
+++ b/admin-server/src/main/resources/mapper/OnDutyMapper.xml
@@ -38,4 +38,28 @@
left join client t4 on t1.client_id = t4.id
where t1.id = #{id}
</select>
+ <select id="exportList" resultType="com.estate.expert.admin.domain.business.onduty.OnDutyVo">
+ select t1.id,t1.plan_id,t1.project_id,t1.client_id,t1.content,t1.position_id,t1.position_name,t1.remark,t1.img,t1.time,t1.state,t1.create_time,
+ t2.name as plan_name,
+ t3.name as project_name,
+ t4.name as client_name
+ from on_duty t1
+ left join plan t2 on t1.plan_id = t2.id
+ left join project t3 on t1.project_id = t3.id
+ left join client t4 on t1.client_id = t4.id
+ where 1=1
+ <if test="request.planId != null">
+ and t1.plan_id = #{request.planId}
+ </if>
+ <if test="request.projectId != null">
+ and t1.project_id = #{request.projectId}
+ </if>
+ <if test="request.clientId != null">
+ and t1.client_id = #{request.clientId}
+ </if>
+ <if test="sTime !=null">
+ and t1.time between #{sTime} and #{eTime}
+ </if>
+ order by t1.time desc
+ </select>
</mapper>
--
Gitblit v1.7.1