From 750639800655562ca5c7498ea9b72002773e88e6 Mon Sep 17 00:00:00 2001 From: "liang.chao" <1360241448@qq.com> Date: Fri, 9 Aug 2024 10:59:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=93=E7=AE=97=E5=8A=9F=E8=83=BD=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/DateTimeHelper.java | 14 ++++++ .../bonus/sgzb/material/remind/Inform.java | 2 +- .../impl/SltAgreementInfoServiceImpl.java | 48 +++++++++++-------- .../mapper/material/CalMonthlyMapper.xml | 10 +++- 4 files changed, 51 insertions(+), 23 deletions(-) diff --git a/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/utils/DateTimeHelper.java b/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/utils/DateTimeHelper.java index fa1177a..9ef7480 100644 --- a/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/utils/DateTimeHelper.java +++ b/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/utils/DateTimeHelper.java @@ -4,6 +4,7 @@ import org.apache.commons.lang3.time.DateUtils; import java.text.*; import java.time.LocalDate; +import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; @@ -795,6 +796,19 @@ public class DateTimeHelper { return lastDayOfMonth; } + // 获取上个月的年月 + public static String getLastMonthYearMonth() { + // 获取当前时间的年月 + YearMonth now = YearMonth.now(); + + // 减去一个月 + YearMonth lastMonth = now.minusMonths(1); + + // 将YearMonth对象格式化为字符串 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + return lastMonth.format(formatter); + } + public static void main(String[] args) { System.err.println(getTimeAfterThirtyDay()); System.err.println(getNowTime()); diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/Inform.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/Inform.java index 308baac..6696637 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/Inform.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/Inform.java @@ -13,7 +13,7 @@ public class Inform { @Autowired private CalcMonthlyService calcfourCostService; - private final int CAL_DAY = 6; + private final int CAL_DAY = 9; // @Scheduled(cron = "0 */1 * * * ? ") // 间隔5分钟执行 // @Scheduled(cron = "0 0 1 22 * ? ") // 每个月22日凌晨1点执行 diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/SltAgreementInfoServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/SltAgreementInfoServiceImpl.java index 14b4d87..6d43965 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/SltAgreementInfoServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/SltAgreementInfoServiceImpl.java @@ -225,7 +225,9 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { // 应结算金额 BigDecimal costs = leasePrice.multiply(num).multiply(leaseDays); bean.setCosts(String.valueOf(costs)); + //实际结算天数 bean.setRealDays(realDays); + // 实际结算金额 bean.setRealCosts(String.valueOf(realCosts)); } return leaseList; @@ -414,12 +416,12 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { Integer num = 0; //租赁费用列表 for (AgreementInfo agreementInfo : list) { - // 如果不选择具体日期或者选择了最新月份则需要查数据 - if (agreementInfo.getStartTime() == null || DateTimeHelper.getNowMonth().equals(DateTimeHelper.getNowMonth(DateTimeHelper.parse(agreementInfo.getEndTime(), "yyyy-MM")))) { + // 如果选择了最新月份则需要查数据 + if (agreementInfo.getStartTime() != null && agreementInfo.getEndTime() != null && DateTimeHelper.getNowMonth().equals(DateTimeHelper.getNowMonth(DateTimeHelper.parse(agreementInfo.getEndTime(), "yyyy-MM")))) { List listMonth = getLeaseListMonth(agreementInfo, num); leaseListMonth.addAll(listMonth); } else { - // 查定时任务记录的数据 + // 如果不传日期或传以往日期 则查定时任务记录的数据 List listMonth = getLeaseJobListMonth(agreementInfo); leaseListMonth.addAll(listMonth); } @@ -428,6 +430,10 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { } private List getLeaseJobListMonth(AgreementInfo agreementInfo) { + if (StringUtils.isBlank(agreementInfo.getEndTime())) { + String lastMonthYearMonth = DateTimeHelper.getLastMonthYearMonth(); + agreementInfo.setEndTime(lastMonthYearMonth); + } List monthCosts = calMonthlyMapper.getMonthCosts(agreementInfo); int num = 0; for (SltAgreementInfo monthCost : monthCosts) { @@ -446,22 +452,22 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { private List getLeaseListMonth(AgreementInfo bean, Integer num) { List leaseList = new ArrayList<>(); // for (AgreementInfo bean : list) { - if (StringUtils.isNotBlank(bean.getStartTime()) && StringUtils.isNotBlank(bean.getEndTime())) { - List monthList = sltAgreementInfoMapper.getLeaseListMonthNotNull(bean); - for (SltAgreementInfo sltAgreementInfo : monthList) { - AgreementInfo agreementInfo = new AgreementInfo(); - agreementInfo.setAgreementId(bean.getAgreementId()); - agreementInfo.setCostBearingParty(sltAgreementInfo.getCostBearingParty()); - agreementInfo.setStartTime(sltAgreementInfo.getBeginTime()); - agreementInfo.setIds(sltAgreementInfo.getIds()); - sltAgreementInfo.setMonth(bean.getMonth()); - sltAgreementInfo.setCodeNum(num++); - agreementInfo.setEndTime(sltAgreementInfo.getOffTime()); - List leaseListOneMonth = getLeaseListOneMonth(agreementInfo, sltAgreementInfo); - sltAgreementInfo.setNode(leaseListOneMonth); - } - leaseList.addAll(monthList); - } else { +// if (StringUtils.isNotBlank(bean.getStartTime()) && StringUtils.isNotBlank(bean.getEndTime())) { + List monthList = sltAgreementInfoMapper.getLeaseListMonthNotNull(bean); + for (SltAgreementInfo sltAgreementInfo : monthList) { + AgreementInfo agreementInfo = new AgreementInfo(); + agreementInfo.setAgreementId(bean.getAgreementId()); + agreementInfo.setCostBearingParty(sltAgreementInfo.getCostBearingParty()); + agreementInfo.setStartTime(sltAgreementInfo.getBeginTime()); + agreementInfo.setIds(sltAgreementInfo.getIds()); + sltAgreementInfo.setMonth(bean.getMonth()); + sltAgreementInfo.setCodeNum(num++); + agreementInfo.setEndTime(sltAgreementInfo.getOffTime()); + List leaseListOneMonth = getLeaseListOneMonth(agreementInfo, sltAgreementInfo); + sltAgreementInfo.setNode(leaseListOneMonth); + } + leaseList.addAll(monthList); + /* } else { List oneOfList = sltAgreementInfoMapper.getLeaseListMonth(bean); for (SltAgreementInfo sltAgreementInfo : oneOfList) { AgreementInfo agreementInfo = new AgreementInfo(); @@ -475,7 +481,7 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { sltAgreementInfo.setNode(leaseListOneMonth); } leaseList.addAll(oneOfList); - } + }*/ // } return leaseList; } @@ -565,7 +571,9 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService { // 应结算金额 BigDecimal costs = leasePrice.multiply(num).multiply(leaseDays); bean.setCosts(String.valueOf(costs)); + //实际结算天数 bean.setRealDays(realDays); + // 实际结算金额 bean.setRealCosts(String.valueOf(realCosts)); } return leaseList; diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/CalMonthlyMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/CalMonthlyMapper.xml index b7c145b..993d1c1 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/CalMonthlyMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/CalMonthlyMapper.xml @@ -40,8 +40,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN bm_agreement_info bai ON pmc.agreement_id = bai.agreement_id LEFT JOIN bm_project_lot bp ON bp.lot_id = bai.project_id LEFT JOIN bm_unit_info bui ON bui.unit_id = bai.unit_id - WHERE - spm.month = DATE_FORMAT(#{endTime}, '%Y-%m') + WHERE 1=1 + + and spm.month = DATE_FORMAT(#{endTime}, '%Y-%m') + + AND pmc.agreement_id = #{agreementId} + + and pmc.cost_bearing_party = #{costBearingParty} +