diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index 8fae928..29d581c 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -27,5 +27,17 @@
$ProjectFileDir$
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://127.0.0.1:3306/yn_img_tool?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+
+
+
+
+
+ $ProjectFileDir$
+
\ No newline at end of file
diff --git a/src/main/java/com/bonus/imgTool/backstage/controller/SynthesisQueryController.java b/src/main/java/com/bonus/imgTool/backstage/controller/SynthesisQueryController.java
index 20a4228..7aeb0b7 100644
--- a/src/main/java/com/bonus/imgTool/backstage/controller/SynthesisQueryController.java
+++ b/src/main/java/com/bonus/imgTool/backstage/controller/SynthesisQueryController.java
@@ -9,6 +9,7 @@ import com.bonus.imgTool.system.vo.EncryptedReq;
import com.bonus.imgTool.utils.ServerResponse;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -31,6 +32,13 @@ public class SynthesisQueryController {
@Resource(name = "SynthesisQueryService")
private SynthesisQueryService synthesisQueryService;
+ @ApiOperation("综合查询-照片综合查询-照片数量")
+ @PostMapping(value = "getImgNum")
+ @DecryptAndVerify(decryptedClass = QueryParamDto.class)
+ public ServerResponse getImgNum(EncryptedReq data) {
+ return synthesisQueryService.getImgNum(data.getData());
+ }
+
@PostMapping(value = "getImgList")
@DecryptAndVerify(decryptedClass = QueryParamDto.class)
@LogAnnotation(operModul = "综合查询-照片综合查询", operation = "查询照片", operDesc = "系统级事件",operType="查询")
diff --git a/src/main/java/com/bonus/imgTool/backstage/dao/SynthesisQueryDao.java b/src/main/java/com/bonus/imgTool/backstage/dao/SynthesisQueryDao.java
index fcc39a2..5be6528 100644
--- a/src/main/java/com/bonus/imgTool/backstage/dao/SynthesisQueryDao.java
+++ b/src/main/java/com/bonus/imgTool/backstage/dao/SynthesisQueryDao.java
@@ -1,6 +1,7 @@
package com.bonus.imgTool.backstage.dao;
import com.bonus.imgTool.backstage.entity.QueryParamDto;
+import com.bonus.imgTool.backstage.entity.SynthesisNumVo;
import com.bonus.imgTool.backstage.entity.SynthesisQueryVo;
import org.springframework.stereotype.Repository;
@@ -15,6 +16,16 @@ import java.util.List;
*/
@Repository(value = "SynthesisQueryDao")
public interface SynthesisQueryDao {
+
+ /**
+ * 综合查询-照片综合查询-照片数量
+ * @param dto
+ * @return SynthesisNumVo
+ * @author cwchen
+ * @date 2025/4/2 15:40
+ */
+ SynthesisNumVo getImgNum(QueryParamDto dto);
+
/**
* 照片综合查询
* @param dto
diff --git a/src/main/java/com/bonus/imgTool/backstage/entity/QueryParamDto.java b/src/main/java/com/bonus/imgTool/backstage/entity/QueryParamDto.java
index 45b422e..7d40eb2 100644
--- a/src/main/java/com/bonus/imgTool/backstage/entity/QueryParamDto.java
+++ b/src/main/java/com/bonus/imgTool/backstage/entity/QueryParamDto.java
@@ -2,6 +2,8 @@ package com.bonus.imgTool.backstage.entity;
import lombok.Data;
+import java.util.List;
+
/**
* @className:QueryParamDto
* @author:cwchen
@@ -16,8 +18,20 @@ public class QueryParamDto {
* 1.我的收藏 2.最近上传
*/
private int queryType;
- /**用户id*/
+ /**
+ * 用户id
+ */
private long userId;
+ /**
+ * 用户管理的工程
+ */
+ private List proIds;
+
+ /**
+ * 角色级别 0.项目部 1.分公司
+ */
+ private String roleLevel;
+
private int pageNum = 1;
private int pageSize = 15;
}
diff --git a/src/main/java/com/bonus/imgTool/backstage/entity/SynthesisNumVo.java b/src/main/java/com/bonus/imgTool/backstage/entity/SynthesisNumVo.java
new file mode 100644
index 0000000..0c8eac2
--- /dev/null
+++ b/src/main/java/com/bonus/imgTool/backstage/entity/SynthesisNumVo.java
@@ -0,0 +1,27 @@
+package com.bonus.imgTool.backstage.entity;
+
+import lombok.Data;
+
+/**
+ * @className:SynthesisNumVo
+ * @author:cwchen
+ * @date:2025-04-02-14:22
+ * @version:1.0
+ * @description:综合查询各类型图片数量
+ */
+@Data
+public class SynthesisNumVo {
+
+ /**总照片数量*/
+ private int totalNum;
+ /**安全违章*/
+ private int safetyVioNum;
+ /**质量检查*/
+ private int qualityInsNum;
+ /**安全措施落实*/
+ private int safetyMeasNum;
+ /**协调照片*/
+ private int coordinatedPhotoNum;
+ /**重要事项及宣传类*/
+ private int importIssuesAndPublicityNum;
+}
diff --git a/src/main/java/com/bonus/imgTool/backstage/entity/SynthesisQueryVo.java b/src/main/java/com/bonus/imgTool/backstage/entity/SynthesisQueryVo.java
index a92c431..5b53f64 100644
--- a/src/main/java/com/bonus/imgTool/backstage/entity/SynthesisQueryVo.java
+++ b/src/main/java/com/bonus/imgTool/backstage/entity/SynthesisQueryVo.java
@@ -15,7 +15,7 @@ import java.util.Date;
@Data
public class SynthesisQueryVo {
- private String id;
+ private Long id;
/**
* 原图图片路径
*/
diff --git a/src/main/java/com/bonus/imgTool/backstage/service/SynthesisQueryService.java b/src/main/java/com/bonus/imgTool/backstage/service/SynthesisQueryService.java
index 1893366..a076da2 100644
--- a/src/main/java/com/bonus/imgTool/backstage/service/SynthesisQueryService.java
+++ b/src/main/java/com/bonus/imgTool/backstage/service/SynthesisQueryService.java
@@ -11,6 +11,16 @@ import com.bonus.imgTool.utils.ServerResponse;
* @description:综合查询
*/
public interface SynthesisQueryService {
+
+ /**
+ * 综合查询-照片综合查询-照片数量
+ * @param data
+ * @return ServerResponse
+ * @author cwchen
+ * @date 2025/4/2 14:59
+ */
+ ServerResponse getImgNum(QueryParamDto data);
+
/**
* 照片综合查询
* @param data
diff --git a/src/main/java/com/bonus/imgTool/backstage/service/impl/SynthesisQueryServiceImpl.java b/src/main/java/com/bonus/imgTool/backstage/service/impl/SynthesisQueryServiceImpl.java
index 0c01fdf..6cf015e 100644
--- a/src/main/java/com/bonus/imgTool/backstage/service/impl/SynthesisQueryServiceImpl.java
+++ b/src/main/java/com/bonus/imgTool/backstage/service/impl/SynthesisQueryServiceImpl.java
@@ -2,10 +2,13 @@ package com.bonus.imgTool.backstage.service.impl;
import com.bonus.imgTool.backstage.dao.SynthesisQueryDao;
import com.bonus.imgTool.backstage.entity.QueryParamDto;
+import com.bonus.imgTool.backstage.entity.SynthesisNumVo;
import com.bonus.imgTool.backstage.entity.SynthesisQueryVo;
import com.bonus.imgTool.backstage.service.SynthesisQueryService;
+import com.bonus.imgTool.system.vo.LoginUser;
import com.bonus.imgTool.utils.ServerResponse;
import com.bonus.imgTool.utils.UserUtil;
+import com.bonus.imgTool.webResult.Constants;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
@@ -14,9 +17,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* @className:SynthesisQueryServiceImpl
@@ -32,11 +34,30 @@ public class SynthesisQueryServiceImpl implements SynthesisQueryService {
@Resource(name = "SynthesisQueryDao")
private SynthesisQueryDao synthesisQueryDao;
+ @Override
+ public ServerResponse getImgNum(QueryParamDto dto) {
+ try {
+ String roleLevel = Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getRoleLevel).orElse("0");
+ String proIds = Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getProIds).orElse("-1");
+ if(Objects.equals(roleLevel, Constants.ROLE_LEVEL)){ // 项目部级
+ List proList = Arrays.stream(proIds.split(",")).map(String::trim).filter(s -> !s.isEmpty()).map(Long::valueOf).collect(Collectors.toList());
+ dto.setProIds(proList);
+ }
+ dto.setRoleLevel(roleLevel);
+ SynthesisNumVo vo = Optional.ofNullable(synthesisQueryDao.getImgNum(dto)).orElseGet(SynthesisNumVo::new);
+ return ServerResponse.createSuccess(vo);
+ } catch (Exception e) {
+ log.error(e.toString(),e);
+ return ServerResponse.createErroe("查询失败");
+ }
+ }
+
@Override
public ServerResponse getImgList(QueryParamDto dto) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
try {
- dto.setUserId(UserUtil.getLoginUser() != null ? UserUtil.getLoginUser().getId() : 0);
+ Long userId = Optional.ofNullable(UserUtil.getLoginUser()).map(LoginUser::getId).orElse(0L);
+ dto.setUserId(userId);
List list = Optional.ofNullable(synthesisQueryDao.getImgList(dto)).orElseGet(ArrayList::new);
PageInfo pageInfo = new PageInfo<>(list);
return ServerResponse.createSuccess(pageInfo);
diff --git a/src/main/java/com/bonus/imgTool/model/SysUser.java b/src/main/java/com/bonus/imgTool/model/SysUser.java
index 1e240ce..68d2bf0 100644
--- a/src/main/java/com/bonus/imgTool/model/SysUser.java
+++ b/src/main/java/com/bonus/imgTool/model/SysUser.java
@@ -150,6 +150,16 @@ public class SysUser extends PageEntity {
*/
private String signImg;
+ /**
+ * 角色级别
+ */
+ private String roleLevel;
+
+ /**
+ * 工程ID
+ */
+ private String proIds;
+
public interface Status {
int DISABLED = 0;
diff --git a/src/main/java/com/bonus/imgTool/utils/HighQualityWatermark.java b/src/main/java/com/bonus/imgTool/utils/HighQualityWatermark.java
index da52cbb..e501419 100644
--- a/src/main/java/com/bonus/imgTool/utils/HighQualityWatermark.java
+++ b/src/main/java/com/bonus/imgTool/utils/HighQualityWatermark.java
@@ -42,18 +42,26 @@ public class HighQualityWatermark {
if (opacity < MIN_OPACITY || opacity > MAX_OPACITY) {
opacity = 0.7f;
}
-
// 读取源图片
- BufferedImage sourceImage = ImageIO.read(new File(sourceImagePath));
+ opacity = Math.max(MIN_OPACITY, Math.min(opacity, MAX_OPACITY));
+ // 读取原始图片并获取其类型
+ BufferedImage originalImage = ImageIO.read(new File(sourceImagePath));
+ int imageType = originalImage.getTransparency() == Transparency.OPAQUE
+ ? BufferedImage.TYPE_INT_RGB
+ : BufferedImage.TYPE_INT_ARGB;
+ // 创建与原始图片相同大小的新图像
+ BufferedImage sourceImage = new BufferedImage(
+ originalImage.getWidth(),
+ originalImage.getHeight(),
+ imageType
+ );
int imageWidth = sourceImage.getWidth();
int imageHeight = sourceImage.getHeight();
-
- // 创建Graphics2D对象
+ // 绘制原始图片到新图像
Graphics2D g2d = sourceImage.createGraphics();
-
+ g2d.drawImage(originalImage, 0, 0, null);
// 设置最高质量的渲染参数
setHighestQuality(g2d);
-
// 计算最大允许宽度(图片宽度的四分之三)
// int maxAllowedWidth = imageWidth / 2;
int maxAllowedWidth = (int) (imageWidth * 3.0 / 4);
@@ -309,8 +317,8 @@ public class HighQualityWatermark {
watermarkLines.add(proName.replaceAll("(.{18})", "$1@@"));
watermarkLines.add("安全违章");
watermarkLines.add("违章照片");
- String localPath = "L:\\其他\\测试图片\\5.jpg";
- String outPath = "L:\\新建文件夹\\output.jpg";
+ String localPath = "C:\\Users\\10488\\Desktop\\3.jpg";
+ String outPath = "C:\\Users\\10488\\Desktop\\output.jpg";
// 添加高质量水印
addHighQualityWatermark(localPath, outPath,
watermarkLines, "bottom-left",
diff --git a/src/main/java/com/bonus/imgTool/webResult/Constants.java b/src/main/java/com/bonus/imgTool/webResult/Constants.java
index 40bf460..19f1416 100644
--- a/src/main/java/com/bonus/imgTool/webResult/Constants.java
+++ b/src/main/java/com/bonus/imgTool/webResult/Constants.java
@@ -182,5 +182,9 @@ public class Constants
public static final Integer TYPE4 = 4;
public static final Integer TRY_COUNT_NUM = 10;
+ /**角色级别*/
+ public static final String ROLE_LEVEL = "0";
+
+
}
diff --git a/src/main/resources/mappers/backstage/SynthesisQueryMapper.xml b/src/main/resources/mappers/backstage/SynthesisQueryMapper.xml
index b49c8f2..a13e2d7 100644
--- a/src/main/resources/mappers/backstage/SynthesisQueryMapper.xml
+++ b/src/main/resources/mappers/backstage/SynthesisQueryMapper.xml
@@ -3,18 +3,53 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+
+
diff --git a/src/main/resources/mappers/system/UserMapper.xml b/src/main/resources/mappers/system/UserMapper.xml
index 867140e..9b404a6 100644
--- a/src/main/resources/mappers/system/UserMapper.xml
+++ b/src/main/resources/mappers/system/UserMapper.xml
@@ -75,12 +75,15 @@