From 929b3d169a78c8f0107a47cd29a0b7356e7d7265 Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Fri, 15 Aug 2025 16:57:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A6=96=E9=A1=B5=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=AD=BE=E5=8D=95=E7=8E=87=EF=BC=9B=E5=91=8A=E8=AD=A6=E6=8F=90?= =?UTF-8?q?=E9=86=92=E7=BB=99=E9=A1=B9=E7=9B=AE=E7=9A=84=E8=B4=9F=E8=B4=A3?= =?UTF-8?q?=E4=BA=BA=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/customer/vo/DashboardRespVO.java | 3 +++ .../service/customer/CustomerServiceImpl.java | 4 ++++ .../license/service/license/LicenseTask.java | 20 ++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/customer/vo/DashboardRespVO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/customer/vo/DashboardRespVO.java index cf2eb3e..13c9401 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/customer/vo/DashboardRespVO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/customer/vo/DashboardRespVO.java @@ -26,4 +26,7 @@ public class DashboardRespVO { @Schema(description = "合同数量") private Long contractCount; + + @Schema(description = "签单率") + private Long signingRate; } diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/customer/CustomerServiceImpl.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/customer/CustomerServiceImpl.java index 8e7234f..57bda9c 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/customer/CustomerServiceImpl.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/customer/CustomerServiceImpl.java @@ -22,6 +22,8 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -63,6 +65,8 @@ public class CustomerServiceImpl implements CustomerService { dashboardRespVO.setLicenseCount(licenseCount); dashboardRespVO.setContractCount(contractCount); dashboardRespVO.setUserCount(customerMapper.selectUserCount()); + dashboardRespVO.setSigningRate(BigDecimal.valueOf(contractCount).multiply(BigDecimal.valueOf(100)) + .divide(BigDecimal.valueOf(projectCount), 0, RoundingMode.HALF_UP).longValue()); return dashboardRespVO; } diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseTask.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseTask.java index 92d6dc3..8e09625 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseTask.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseTask.java @@ -6,8 +6,10 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.agt.module.license.dal.dataobject.alert.AlertDO; 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.alert.AlertMapper; import org.agt.module.license.dal.mysql.license.LicenseMapper; +import org.agt.module.license.dal.mysql.project.ProjectMapper; import org.agt.module.license.enums.LicenseStatusEnum; import org.agt.module.system.api.mail.MailSendApi; import org.agt.module.system.api.mail.dto.MailSendSingleToUserReqDTO; @@ -19,9 +21,11 @@ import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; /** * @description: License 定时任务 @@ -41,6 +45,9 @@ public class LicenseTask { @Resource private LicenseMapper licenseMapper; + @Resource + private ProjectMapper projectMapper; + @Resource private MailSendApi mailSendApi; @@ -61,7 +68,6 @@ public class LicenseTask { AlertDO alertDO = alertOptional.get(); List days = alertDO.getDays(); - List users = alertDO.getUsers(); String templateCode = alertDO.getTemplateCode(); List licenseList = licenseMapper.selectList(Wrappers.lambdaQuery() @@ -69,6 +75,18 @@ public class LicenseTask { .gt(LicenseDO::getExpiryDate, LocalDateTime.now())); for (LicenseDO licenseDO : licenseList) { + + ProjectDO projectDO = projectMapper.selectById(licenseDO.getProjectId()); + Set users = new HashSet<>(); + if (projectDO.getBusinessOwner() != null) { + users.add(projectDO.getBusinessOwner()); + } + if (projectDO.getTechnicalOwnerA() != null) { + users.add(projectDO.getTechnicalOwnerA()); + } + if (licenseDO.getApprover() != null) { + users.add(licenseDO.getApprover()); + } for (Integer day : days) { long between = LocalDateTimeUtil.between(LocalDateTime.now(), licenseDO.getExpiryDate(), ChronoUnit.DAYS) + 1; if (between == day) {