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 @@