From 762e4757a8f62d02ce52d56839340074724d5093 Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Fri, 25 Jul 2025 09:35:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A1=B9=E7=9B=AE=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/project/ProjectController.java | 17 ++++---------- .../admin/project/vo/ProjectPageReqVO.java | 8 +++++++ .../admin/project/vo/ProjectRespVO.java | 4 ++-- .../dal/mysql/project/ProjectMapper.java | 22 ++++++++++++++----- .../service/project/ProjectService.java | 3 ++- .../service/project/ProjectServiceImpl.java | 3 ++- 6 files changed, 35 insertions(+), 22 deletions(-) diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/ProjectController.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/ProjectController.java index a212ba5..08a669d 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/ProjectController.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/ProjectController.java @@ -17,7 +17,6 @@ import org.agt.module.license.controller.admin.project.vo.ProjectListReqVO; import org.agt.module.license.controller.admin.project.vo.ProjectPageReqVO; import org.agt.module.license.controller.admin.project.vo.ProjectRespVO; import org.agt.module.license.controller.admin.project.vo.ProjectSaveReqVO; -import org.agt.module.license.dal.dataobject.license.LicenseDO; import org.agt.module.license.dal.dataobject.project.ProjectDO; import org.agt.module.license.dal.mysql.license.LicenseMapper; import org.agt.module.license.service.project.ProjectService; @@ -34,7 +33,6 @@ import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import java.util.List; -import java.util.Optional; import static org.agt.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static org.agt.framework.common.pojo.CommonResult.success; @@ -88,15 +86,8 @@ public class ProjectController { @Operation(summary = "获得项目分页") @PreAuthorize("@ss.hasPermission('license:project:query')") public CommonResult> getProjectPage(@Valid ProjectPageReqVO pageReqVO) { - PageResult doPageResult = projectService.getProjectPage(pageReqVO); - PageResult pageResult = BeanUtils.toBean(doPageResult, ProjectRespVO.class); - List projects = pageResult.getList(); - for (ProjectRespVO project : projects) { - List licenseDOS = licenseMapper.selectList(LicenseDO::getProjectId, project.getId()); - Optional first = licenseDOS.stream().findFirst(); - first.ifPresent(licenseDO -> project.setSn(licenseDO.getSerialNo())); - } - return success(BeanUtils.toBean(pageResult, ProjectRespVO.class)); + PageResult pageResult = projectService.getProjectPage(pageReqVO); + return success(pageResult); } @GetMapping("/list") @@ -114,10 +105,10 @@ public class ProjectController { public void exportProjectExcel(@Valid ProjectPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = projectService.getProjectPage(pageReqVO).getList(); + List list = projectService.getProjectPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "项目.xls", "数据", ProjectRespVO.class, - TranslateUtils.translate(BeanUtils.toBean(list, ProjectRespVO.class))); + TranslateUtils.translate(list)); } @GetMapping("/name-unique") diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/vo/ProjectPageReqVO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/vo/ProjectPageReqVO.java index 13087b2..d624ee4 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/vo/ProjectPageReqVO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/vo/ProjectPageReqVO.java @@ -35,6 +35,9 @@ public class ProjectPageReqVO extends PageParam { @Schema(description = "客户对接人") private String customerOwner; + @Schema(description = "技术负责人") + private String technicalOwner; + @Schema(description = "技术负责人1") private String technicalOwnerA; @@ -62,4 +65,9 @@ public class ProjectPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + @Schema(description = "sn") + private String serialNo; + + @Schema(description = "客户ID", example = "111") + private Long customerId; } \ No newline at end of file diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/vo/ProjectRespVO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/vo/ProjectRespVO.java index 959745b..70865dc 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/vo/ProjectRespVO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/project/vo/ProjectRespVO.java @@ -92,7 +92,7 @@ public class ProjectRespVO implements VO { @ExcelProperty("创建时间") private LocalDateTime createTime; - @Schema(description = "SN", example = "随便") + @Schema(description = "serialNo", example = "随便") @ExcelProperty("SN") - private String sn; + private String serialNo; } \ No newline at end of file diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/mysql/project/ProjectMapper.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/mysql/project/ProjectMapper.java index f91b39f..2851da3 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/mysql/project/ProjectMapper.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/mysql/project/ProjectMapper.java @@ -1,10 +1,15 @@ package org.agt.module.license.dal.mysql.project; + +import cn.hutool.core.util.StrUtil; import org.agt.framework.common.pojo.PageResult; import org.agt.framework.mybatis.core.mapper.BaseMapperX; import org.agt.framework.mybatis.core.query.LambdaQueryWrapperX; +import org.agt.framework.mybatis.core.query.MPJLambdaWrapperX; import org.agt.module.license.controller.admin.project.vo.ProjectListReqVO; import org.agt.module.license.controller.admin.project.vo.ProjectPageReqVO; +import org.agt.module.license.controller.admin.project.vo.ProjectRespVO; +import org.agt.module.license.dal.dataobject.license.LicenseDO; import org.agt.module.license.dal.dataobject.project.ProjectDO; import org.apache.ibatis.annotations.Mapper; @@ -18,25 +23,32 @@ import java.util.List; @Mapper public interface ProjectMapper extends BaseMapperX { - default PageResult selectPage(ProjectPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() + default PageResult selectPage(ProjectPageReqVO reqVO) { + return selectJoinPage(reqVO, ProjectRespVO.class, new MPJLambdaWrapperX() + .selectAll(ProjectDO.class) + .selectAs(LicenseDO::getSerialNo, ProjectRespVO::getSerialNo) + .leftJoin(LicenseDO.class, LicenseDO::getProjectId, ProjectDO::getId) + .eqIfPresent(ProjectDO::getCustomerId, reqVO.getCustomerId()) .likeIfPresent(ProjectDO::getName, reqVO.getName()) .likeIfPresent(ProjectDO::getCode, reqVO.getCode()) .likeIfPresent(ProjectDO::getContractCode, reqVO.getContractCode()) .eqIfPresent(ProjectDO::getBusinessStatus, reqVO.getBusinessStatus()) .eqIfPresent(ProjectDO::getBusinessOwner, reqVO.getBusinessOwner()) .eqIfPresent(ProjectDO::getCustomerOwner, reqVO.getCustomerOwner()) - .eqIfPresent(ProjectDO::getTechnicalOwnerA, reqVO.getTechnicalOwnerA()) - .eqIfPresent(ProjectDO::getTechnicalOwnerB, reqVO.getTechnicalOwnerB()) - .eqIfPresent(ProjectDO::getTechnicalOwnerC, reqVO.getTechnicalOwnerC()) .betweenIfPresent(ProjectDO::getStartTime, reqVO.getStartTime()) .betweenIfPresent(ProjectDO::getEndTime, reqVO.getEndTime()) .eqIfPresent(ProjectDO::getStatus, reqVO.getStatus()) .likeIfPresent(ProjectDO::getEnvInfo, reqVO.getEnvInfo()) .betweenIfPresent(ProjectDO::getCreateTime, reqVO.getCreateTime()) + .likeIfPresent(LicenseDO::getSerialNo, reqVO.getSerialNo()) + .and(StrUtil.isNotBlank(reqVO.getTechnicalOwner()), + c -> c.like(ProjectDO::getTechnicalOwnerA, reqVO.getTechnicalOwner()) + .or().like(ProjectDO::getTechnicalOwnerB, reqVO.getTechnicalOwner()) + .or().like(ProjectDO::getTechnicalOwnerC, reqVO.getTechnicalOwner())) .orderByDesc(ProjectDO::getId)); } + default List selectList(ProjectListReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(ProjectDO::getCustomerId, reqVO.getCustomerId()) diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/project/ProjectService.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/project/ProjectService.java index b2ad92d..ce72b68 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/project/ProjectService.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/project/ProjectService.java @@ -4,6 +4,7 @@ import jakarta.validation.Valid; import org.agt.framework.common.pojo.PageResult; import org.agt.module.license.controller.admin.project.vo.ProjectListReqVO; import org.agt.module.license.controller.admin.project.vo.ProjectPageReqVO; +import org.agt.module.license.controller.admin.project.vo.ProjectRespVO; import org.agt.module.license.controller.admin.project.vo.ProjectSaveReqVO; import org.agt.module.license.dal.dataobject.project.ProjectDO; @@ -52,7 +53,7 @@ public interface ProjectService { * @param pageReqVO 分页查询 * @return 项目分页 */ - PageResult getProjectPage(ProjectPageReqVO pageReqVO); + PageResult getProjectPage(ProjectPageReqVO pageReqVO); /** * 获得项目列表 diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/project/ProjectServiceImpl.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/project/ProjectServiceImpl.java index 406b416..4130da4 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/project/ProjectServiceImpl.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/project/ProjectServiceImpl.java @@ -6,6 +6,7 @@ import org.agt.framework.common.pojo.PageResult; import org.agt.framework.common.util.object.BeanUtils; import org.agt.module.license.controller.admin.project.vo.ProjectListReqVO; import org.agt.module.license.controller.admin.project.vo.ProjectPageReqVO; +import org.agt.module.license.controller.admin.project.vo.ProjectRespVO; import org.agt.module.license.controller.admin.project.vo.ProjectSaveReqVO; import org.agt.module.license.dal.dataobject.project.ProjectDO; import org.agt.module.license.dal.mysql.project.ProjectMapper; @@ -84,7 +85,7 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public PageResult getProjectPage(ProjectPageReqVO pageReqVO) { + public PageResult getProjectPage(ProjectPageReqVO pageReqVO) { return projectMapper.selectPage(pageReqVO); }