diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/domain/SltAgreementReduce.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/domain/SltAgreementReduce.java index 9eb9df2a..3146bc06 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/domain/SltAgreementReduce.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/domain/SltAgreementReduce.java @@ -114,7 +114,8 @@ public class SltAgreementReduce extends BaseEntity { @ApiModelProperty(value = "减免天数") private Long reduceDays; - private BmFileInfo file; + @ApiModelProperty(value = "附件列表") + private List bmFileInfos; private List detailList; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/service/impl/SltAgreementReduceServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/service/impl/SltAgreementReduceServiceImpl.java index 67699400..6b278327 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/service/impl/SltAgreementReduceServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/settlement/service/impl/SltAgreementReduceServiceImpl.java @@ -1,5 +1,6 @@ package com.bonus.material.settlement.service.impl; +import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.basic.mapper.BmFileInfoMapper; import com.bonus.material.settlement.domain.SltAgreementReduce; @@ -16,6 +17,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; /** @@ -53,16 +55,40 @@ public class SltAgreementReduceServiceImpl implements ISltAgreementReduceService List applyReduction = applyReduction(sltAgreement); - Long rs = sltAgreementRecudceMapper.insertReduce(sltAgreement); - Long id = sltAgreement.getId(); - if (rs > 0 && list != null) { - // 批量插入明细 - List detailList = list.stream() - .peek(detail -> detail.setId(id)) - .collect(Collectors.toList()); - sltAgreementRecudceMapper.insertBatchReduceDetail(detailList); + if (applyReduction.size() > 0 && applyReduction!= null) { + list = applyReduction; + }else{ + list = null; } + if(list != null){ + Long rs = sltAgreementRecudceMapper.insertReduce(sltAgreement); + Long id = sltAgreement.getId(); + AtomicBoolean addFileInfoResult = new AtomicBoolean(false); + + if(sltAgreement.getBmFileInfos()!=null){ + sltAgreement.getBmFileInfos().forEach(bmFileInfo -> { + bmFileInfo.setModelId(id); + bmFileInfo.setCreateTime(DateUtils.getNowDate()); + addFileInfoResult.set(bmFileInfoMapper.insertBmFileInfo(bmFileInfo) > 0); + }); + + } + + + if (rs > 0 && list != null) { + // 批量插入明细 + List detailList = list.stream() + .peek(detail -> detail.setId(id)) + .collect(Collectors.toList()); + sltAgreementRecudceMapper.insertBatchReduceDetail(detailList); + } + }else{ + AjaxResult.warn("检索历史申请减免区间数据,已申请减免,请勿在提交申请单!"); + } + + + return AjaxResult.success(); } catch (DataAccessException e) { // 记录详细的数据库操作异常日志 @@ -83,66 +109,66 @@ public class SltAgreementReduceServiceImpl implements ISltAgreementReduceService public List applyReduction(SltAgreementReduce sltAgreement) { // 初始化结果列表 - List newReductions = new ArrayList<>(); - + List temp = new ArrayList<>(); // 遍历申请减免的每个区间 - for (SltAgreementReduce detail : sltAgreement.getDetailList()) { - if (detail.getReduceStartTime() != null && detail.getReduceEndTime() != null) { + + for (SltAgreementReduce current : sltAgreement.getDetailList()) { + if (current.getReduceStartTime() != null && current.getReduceEndTime() != null) { // 将当前区间添加到结果列表中 // 查询与当前区间有重叠的历史减免记录 - List historyReductions = sltAgreementRecudceMapper.findOverlappingReductions(detail); + List historyReductions = sltAgreementRecudceMapper.findOverlappingReductions(current); + + if(historyReductions !=null && historyReductions.size()>0){ + // 对比并去掉重叠部分 + for (SltAgreementReduce history : historyReductions) { - // 对比并去掉重叠部分 - for (SltAgreementReduce history : historyReductions) { - List temp = new ArrayList<>(); - for (SltAgreementReduce current : newReductions) { // 如果当前区间与历史区间没有重叠,直接保留 - if (current.getEndTime().before(history.getStartTime()) || current.getStartTime().after(history.getEndTime())) { + if (current.getReduceEndTime().before(history.getReduceStartTime()) || current.getReduceStartTime().after(history.getReduceEndTime())) { temp.add(current); } else { // 如果有重叠,拆分当前区间 - if (current.getStartTime().before(history.getStartTime())) { + if (current.getReduceStartTime().before(history.getReduceStartTime())) { // 生成新的区间:申请开始时间到历史开始时间的前一天 - SltAgreementReduce newReduction = new SltAgreementReduce(); //计算新的租赁情况 - newReduction.setStartTime(current.getStartTime()); - newReduction.setEndTime(new Date(history.getStartTime().getTime() - 86400000)); - long days = (history.getStartTime().getTime() - current.getStartTime().getTime()) / (24 * 60 * 60 * 1000) +1; + current.setReduceStartTime(current.getReduceStartTime()); + current.setReduceEndTime(new Date(history.getReduceStartTime().getTime() - 86400000)); + long days = (history.getReduceStartTime().getTime() - current.getReduceStartTime().getTime()) / (24 * 60 * 60 * 1000) +1; BigDecimal num = current.getNum(); BigDecimal leasePrice = current.getLeasePrice(); - newReduction.setLeasePrice(leasePrice); + current.setLeasePrice(leasePrice); BigDecimal leaseMoney = new BigDecimal(days).multiply(num).multiply(leasePrice); - newReduction.setLeaseMoney(leaseMoney); + current.setLeaseMoney(leaseMoney); temp.add( - newReduction + current ); } - if (current.getEndTime().after(history.getEndTime())) { + if (current.getReduceEndTime().after(history.getReduceEndTime())) { // 生成新的区间:历史结束时间的后一天到申请结束时间 - SltAgreementReduce newReduction = new SltAgreementReduce(); //计算新的租赁情况 - newReduction.setStartTime( new Date(history.getEndTime().getTime() + 86400000)); - newReduction.setEndTime( current.getEndTime()); - long days = (current.getEndTime().getTime() - history.getEndTime().getTime()) / (24 * 60 * 60 * 1000) +1; + current.setStartTime( new Date(history.getReduceEndTime().getTime() + 86400000)); + current.setEndTime( current.getReduceEndTime()); + long days = (current.getReduceEndTime().getTime() - history.getReduceEndTime().getTime()) / (24 * 60 * 60 * 1000) +1; BigDecimal num = current.getNum(); BigDecimal leasePrice = current.getLeasePrice(); - newReduction.setLeasePrice(leasePrice); + current.setLeasePrice(leasePrice); BigDecimal leaseMoney = new BigDecimal(days).multiply(num).multiply(leasePrice); - newReduction.setLeaseMoney(leaseMoney); + current.setLeaseMoney(leaseMoney); temp.add( - newReduction + current ); } } + } - newReductions = temp; + }else{ + temp.add(current); } + } } - - return newReductions; + return temp; } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/settlement/SltAgreementReduceMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/settlement/SltAgreementReduceMapper.xml index 135da83b..d4774eee 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/settlement/SltAgreementReduceMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/settlement/SltAgreementReduceMapper.xml @@ -22,6 +22,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -178,14 +180,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"