Commit d68ef5d3 by lzxry

tkio分摊报表

parent 1335ec2f
...@@ -63,6 +63,7 @@ public class Contract { ...@@ -63,6 +63,7 @@ public class Contract {
private Long incomeExcludingTax; //不含税收入 (*100的结果) private Long incomeExcludingTax; //不含税收入 (*100的结果)
private Long intervaIncomeShare;//区间分摊收入(*100的结果) private Long intervaIncomeShare;//区间分摊收入(*100的结果)
private Long incomeShareAll;//分摊总收入(*100的结果) private Long incomeShareAll;//分摊总收入(*100的结果)
private Long incomeGross;//累计总收入(*100的结果)合同自开始至选择的结束日期(分摊收入+调整金额)
private Integer shareSign;//标记是否计算分摊收入 1 计算 0 不计算 private Integer shareSign;//标记是否计算分摊收入 1 计算 0 不计算
...@@ -94,6 +95,8 @@ public class Contract { ...@@ -94,6 +95,8 @@ public class Contract {
private String belongGroup;//隶属集团 private String belongGroup;//隶属集团
private Double trackFlow;//流量,tkio的 private Double trackFlow;//流量,tkio的
private Double unitPrice;//单价,tkio
private Double clickFlow;//区间点击数,tkio
@Id @Id
@GeneratedValue @GeneratedValue
...@@ -576,6 +579,32 @@ public class Contract { ...@@ -576,6 +579,32 @@ public class Contract {
public void setTrackFlow(Double trackFlow) { public void setTrackFlow(Double trackFlow) {
this.trackFlow = trackFlow; this.trackFlow = trackFlow;
} }
@Transient
public Double getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(Double unitPrice) {
this.unitPrice = unitPrice;
}
@Transient
public Double getClickFlow() {
return clickFlow;
}
public void setClickFlow(Double clickFlow) {
this.clickFlow = clickFlow;
}
@Transient
public Long getIncomeGross() {
return incomeGross;
}
public void setIncomeGross(Long incomeGross) {
this.incomeGross = incomeGross;
}
@Override @Override
public String toString() { public String toString() {
......
package common.service.impl; package common.service.impl;
import com.amazonaws.services.dynamodbv2.xspec.B;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import common.model.*; import common.model.*;
import common.repository.*; import common.repository.*;
import common.service.ShareIncomeService; import common.service.ShareIncomeService;
...@@ -9,17 +7,26 @@ import dic.ContractStatusEnum; ...@@ -9,17 +7,26 @@ import dic.ContractStatusEnum;
import dic.RoleEnum; import dic.RoleEnum;
import net.sf.json.JSONArray; import net.sf.json.JSONArray;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.DateTimeUtils;
import org.joda.time.Days; import org.joda.time.Days;
import org.joda.time.Months; import org.joda.time.Months;
import org.joda.time.format.DateTimeFormatter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import tkio.model.Account;
import tkio.repository.AccountRepository;
import tkio.repository.AppRepository;
import tkio.service.AccountFlowRestrictService;
import util.ContractBranchUtil; import util.ContractBranchUtil;
import util.DateUtil;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
...@@ -41,6 +48,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -41,6 +48,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
private ContractChangeRepository contractChangeRepository; private ContractChangeRepository contractChangeRepository;
@Autowired @Autowired
private BarrioCityRepository barrioCityRepository; private BarrioCityRepository barrioCityRepository;
@Autowired
private AppRepository appRepository;
@Autowired
private AccountRepository accountRepository;
@Autowired
private AccountFlowRestrictService accountFlowRestrictService;
@Override @Override
public List<Contract> shareIncomeList(User loginAccount, String startDate, String endDate, String platform, String bodyCode, String serchName) { public List<Contract> shareIncomeList(User loginAccount, String startDate, String endDate, String platform, String bodyCode, String serchName) {
...@@ -112,10 +125,17 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -112,10 +125,17 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
switch (ContractBranchUtil.getValue(platform)){ switch (ContractBranchUtil.getValue(platform)){
case "type_one":this.shareIncome4Contract(v, start, end);break; case "type_one":this.shareIncome4Contract(v, start, end);break;
case "type_two":this.shareIncome4Contract(v, start, end);break; case "type_two":
if(v.getPriceLevel()==18){
//TKIO不限量套餐
this.shareIncome4Contract(v, start, end);
}else{
//TKIO普通流量套餐
this.shareIncome4ContractTwo(v, start, end);
}
break;
default:this.shareIncome4Contract(v, start, end);break; default:this.shareIncome4Contract(v, start, end);break;
} }
v.setMyBodyName(bodiesNameMap.get(v.getMyBodyCode())); v.setMyBodyName(bodiesNameMap.get(v.getMyBodyCode()));
if(v.getBarrioId()!=null) if(v.getBarrioId()!=null)
v.setBarrioName(barrioCitiesNameMap.get(barrioCitiesNameMap.get(v.getBarrioId()).getParentId()).getName()); v.setBarrioName(barrioCitiesNameMap.get(barrioCitiesNameMap.get(v.getBarrioId()).getParentId()).getName());
...@@ -125,12 +145,311 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -125,12 +145,311 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
return contracts; return contracts;
} }
//需求禅道 1608
public void shareIncome4ContractTwo(Contract contract, DateTime start, DateTime end) {
DateTime[] selected = new DateTime[]{
start,
end};//用户筛选开始/结束日期
DateTime[] contractPart = new DateTime[]{
new DateTime(contract.getStartDate()),
new DateTime(contract.getEndDate())};//合同开始结束 时间
DateTime[] usePart = new DateTime[]{
selected[0].compareTo(contractPart[0]) <= 0 ? contractPart[0] : selected[0],
selected[1].compareTo(contractPart[1]) >= 0 ? contractPart[1] : selected[1]
};
usePart[0] = usePart[0].compareTo(usePart[1]) >= 0 ? usePart[1] : usePart[0];
Long excludTax = new BigDecimal(contract.getMoney() / 1.06)
.setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100L)).longValue();//不含税收入*100
contract.setIncomeExcludingTax(excludTax);
//计算单价,精准保留16位数
BigDecimal unitPriceAccurate = new BigDecimal(contract.getMoney()/1.06/contract.getTrackFlow())
.setScale(16, BigDecimal.ROUND_HALF_UP);
//四舍五入单价
double unitPrice = unitPriceAccurate.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
//不限量套餐会在方法里面重新赋值单价
contract.setUnitPrice(unitPrice);
//查询用户下所有appkey
Account account = accountRepository.findByEmail(contract.getEmail());
List<Account> accountList = accountRepository.findByRootParent(account.getRootParent());
List<Long> idList = new ArrayList<>();
for (Account ac : accountList) {
idList.add(ac.getId());
}
List<String> appkeys = appRepository.findAppkeysNotDebug(idList);
String appkeyStr = String.join("','", appkeys);
appkeyStr= "'"+appkeyStr+"'";
//作废合同 累计收入= 0
//中止合同 累计收入= 如果中止日期在选择日期之内,【合同开始日期-中止日期】,否则【合同开始日期-选择结束日期】,不需要考虑调整金
//晚录合同 累计收入= 同下
//正常合同 累计收入= 如果合同结束日期在选择日期之内,则直接取 [合同金额/1.06]得到总金额 ,否则 【合同开始日期-选择结束日期】
//作废合同处理
Contract cancleContract = this.cancledShareTKIO(contract, appkeyStr, unitPriceAccurate, usePart);
if (cancleContract != null) {
return;
}
//中止合同处理
Contract suspendContract = this.suspendShareTKIO(contract, appkeyStr, unitPriceAccurate,contractPart, usePart, selected);
if (suspendContract != null) {
return;
}
//晚录合同处理//正常合同处理
DateTime create = new DateTime(new DateTime(contract.getCreateTime()).toString("yyyy-MM-dd")); //录入时间点
DateTime[] creatPoints = new DateTime[]{
create, //录入日
create.dayOfMonth().withMinimumValue() //录入月1日
};
this.afterContractTKIO(contract, appkeyStr,unitPriceAccurate, contractPart, usePart, selected, creatPoints);
}
private void afterContractTKIO(Contract contract, String appkeyStr,BigDecimal unitPriceAccurate, DateTime[] contractPart,DateTime[] usePart, DateTime[] selected, DateTime[] creatPoints) {
Long adjustmentFund = 0L;//调整金
contract.setClickFlow(0.0);
boolean isLateContract = false; // 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
if (ContractStatusEnum.LATE.getKey().equals(contract.getStatus())) {
isLateContract = true;
} else if (checkLateContract(contractPart[0], creatPoints[0])) {
isLateContract = true;
contract.setStatus(ContractStatusEnum.LATE.getKey());
}
boolean isLater = true;
if (!isLateContract) {
//非合同晚录
BigInteger clickNum = accountFlowRestrictService.getTotalNum(usePart[0].toString("yyyy-MM-dd"), usePart[1].toString("yyyy-MM-dd"), appkeyStr, "account_track_flow_restrict", "click_sum");
int clickFlow = clickNum==null?0:clickNum.intValue();
BigDecimal clickTenThousand = new BigDecimal(0);
if(clickFlow!=0){
clickTenThousand = new BigDecimal(clickFlow / 10000 * 100);
//区间点击数
contract.setClickFlow(new BigDecimal(clickFlow / 10000).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
}
//区间分摊收入
contract.setIntervaIncomeShare(unitPriceAccurate.multiply(clickTenThousand).setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
contract.setAdjustmentFund(0L);
contract.setIncomeShareAll(contract.getIntervaIncomeShare());
DateTime grossDate;
if(checkTwoTime(selected[0],contractPart[1]) && checkTwoTime(contractPart[1],selected[1])){
grossDate = contractPart[1];
}else{
grossDate = selected[1];
}
//累计总收入
clickNum = accountFlowRestrictService.getTotalNum(contractPart[0].toString("yyyy-MM-dd"), grossDate.toString("yyyy-MM-dd"), appkeyStr, "account_track_flow_restrict", "click_sum");
clickFlow = clickNum==null?0:clickNum.intValue();
contract.setIncomeGross(unitPriceAccurate.multiply(new BigDecimal(clickFlow / 10000 * 100)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
isLater = false;
} else if (selected[1].isBefore(creatPoints[1])) {
//录入月1号之前 调整金为 0 分摊为 0
contract.setIntervaIncomeShare(0L);
contract.setAdjustmentFund(0L);
contract.setIncomeShareAll(contract.getIntervaIncomeShare());
contract.setClickFlow(0.0);
contract.setIncomeGross(0L);
contract.setStatus(ContractStatusEnum.LATE.getKey());
} else {
contract.setStatus(ContractStatusEnum.LATE.getKey());
//合同晚录
//所选时间范围内的分摊收入(录入月1号 即creatPoints[1] 开始计算)
DateTime useStart = creatPoints[1].compareTo(selected[0]) >= 0 ? creatPoints[1] : selected[0];
BigInteger clickNum = accountFlowRestrictService.getTotalNum(useStart.toString("yyyy-MM-dd"), usePart[1].toString("yyyy-MM-dd"), appkeyStr, "account_track_flow_restrict", "click_sum");
int clickFlow = clickNum==null?0:clickNum.intValue();
BigDecimal clickTenThousand = new BigDecimal(0);
if(clickFlow!=0){
clickTenThousand = new BigDecimal(clickFlow / 10000 * 100);
//区间点击数
contract.setClickFlow(new BigDecimal(clickFlow / 10000).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
}
//区间分摊收入
contract.setIntervaIncomeShare(unitPriceAccurate.multiply(clickTenThousand).setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
if (checkTwoTime(selected[0], creatPoints[1]) && checkTwoTime(creatPoints[1], selected[1])) {
//所选时间范围包含 录入月 1 号 显示统计的调整金
//合同开始日期,合同录入日期的一号,-1就是上个月最后一天
//contractPart[0], creatPoints[1].plusDays(-1)
clickNum = accountFlowRestrictService.getTotalNum(contractPart[0].toString("yyyy-MM-dd"),creatPoints[1].plusDays(-1).toString("yyyy-MM-dd"), appkeyStr, "account_track_flow_restrict", "click_sum");
clickFlow = clickNum==null?0:clickNum.intValue();
clickTenThousand = new BigDecimal(0);
if(clickFlow!=0){
clickTenThousand = new BigDecimal(clickFlow / 10000 * 100);
//区间点击数
}
contract.setAdjustmentFund(unitPriceAccurate.multiply(clickTenThousand).setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
} else {
contract.setAdjustmentFund(0L);
}
DateTime grossDate;
if(checkTwoTime(selected[0],contractPart[1]) && checkTwoTime(contractPart[1],selected[1])){
grossDate = contractPart[1];
}else{
grossDate = selected[1];
}
//累计总收入
clickNum = accountFlowRestrictService.getTotalNum(contractPart[0].toString("yyyy-MM-dd"), grossDate.toString("yyyy-MM-dd"), appkeyStr, "account_track_flow_restrict", "click_sum");
clickFlow = clickNum==null?0:clickNum.intValue();
contract.setIncomeGross(unitPriceAccurate.multiply(new BigDecimal(clickFlow / 10000 * 100)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
}
if (checkTwoTime(contractPart[1], selected[1])) {
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
Long lastDay;
DateTime lastDate[];
if (isLater) {
lastDate = new DateTime[]{creatPoints[1],contractPart[1].plusDays(-1)};
} else {
lastDate = new DateTime[]{contractPart[0],contractPart[1].plusDays(-1)};
}
//合同除去最后一天的流量
BigInteger clickNum = accountFlowRestrictService.getTotalNum(lastDate[0].toString("yyyy-MM-dd"), lastDate[1].toString("yyyy-MM-dd"), appkeyStr, "account_track_flow_restrict", "click_sum");
int clickFlow = clickNum==null?0:clickNum.intValue();
BigDecimal clickTenThousand = new BigDecimal(0);
if(clickFlow!=0){
clickTenThousand = new BigDecimal(clickFlow / 10000 * 100);
}
long beforeTheMoney = unitPriceAccurate.multiply(clickTenThousand).setScale(0, BigDecimal.ROUND_HALF_UP).longValue();
//最后一天的流量
clickNum = accountFlowRestrictService.getTotalNum(contractPart[1].toString("yyyy-MM-dd"), contractPart[1].toString("yyyy-MM-dd"), appkeyStr, "account_track_flow_restrict", "click_sum");
clickFlow = clickNum==null?0:clickNum.intValue();
clickTenThousand = new BigDecimal(0);
if(clickFlow!=0)clickTenThousand = new BigDecimal(clickFlow / 10000 * 100);
long lastDayTheMoney = unitPriceAccurate.multiply(clickTenThousand).setScale(0, BigDecimal.ROUND_HALF_UP).longValue();
//合同的税后总金额减去最后合同一日之前的钱和调整金
lastDay = contract.getIncomeExcludingTax() - contract.getAdjustmentFund() - beforeTheMoney;
//最后一日 或 包含最后一日 时
contract.setIntervaIncomeShare(contract.getIntervaIncomeShare() - lastDayTheMoney + lastDay);
}
contract.setIncomeShareAll(contract.getIntervaIncomeShare() + contract.getAdjustmentFund());
}
private Contract suspendShareTKIO(Contract contract, String appkeys, BigDecimal unitPriceAccurate,DateTime[] contractPart, DateTime[] usePart,DateTime[] selected) {
if (!ContractStatusEnum.SUSPEND.getKey().equals(contract.getStatus())) {
return null;
}
ContractChange contractChange = contractChangeRepository.findByContentCode(ContractStatusEnum.SUSPEND.getValue(),
contract.getContractCode());
if (contractChange == null) {
contract.setAdjustmentFund(0L);
contract.setIntervaIncomeShare(0L);
contract.setIncomeShareAll(0L);
contract.setClickFlow(0.0);
return contract;
}
// 合同中止日
DateTime cancelDate = new DateTime(contractChange.getDs());
//中止操作入库时间
DateTime suspendDate = new DateTime(new DateTime(contractChange.getCreateTime()).toString("yyyy-MM-dd"));
contract.setClickFlow(0.0);
//调整金
Long adjustmentFund = 0L;
if (checkTwoTime(suspendDate, cancelDate)) {
adjustmentFund = 0L;
} else {
//查询调整金的点击,日期开始结束时间注意不能颠倒
BigInteger clickNum = accountFlowRestrictService.getTotalNum(cancelDate.toString("yyyy-MM-dd"), suspendDate.toString("yyyy-MM-dd"), appkeys, "account_track_flow_restrict", "click_sum");
int clickFlow = clickNum==null?0:clickNum.intValue();
BigDecimal clickTenThousand = new BigDecimal(0);
if(clickFlow!=0){
clickTenThousand = new BigDecimal(clickFlow / 10000 * 100);
}
adjustmentFund = unitPriceAccurate.multiply(clickTenThousand.multiply(new BigDecimal(-1))).setScale(0, BigDecimal.ROUND_HALF_UP).longValue();
}
//调整金
contract.setAdjustmentFund(adjustmentFund);
DateTime usedEnd = usePart[1].compareTo(cancelDate) <= 0 ? usePart[1] : cancelDate;
//查询开始->中止日期的点击(有收入的点击),不包括调整金
BigInteger clickNum = accountFlowRestrictService.getTotalNum(usePart[0].toString("yyyy-MM-dd"), usedEnd.toString("yyyy-MM-dd"), appkeys, "account_track_flow_restrict", "click_sum");
int clickFlow = clickNum==null?0:clickNum.intValue();
BigDecimal clickTenThousand = new BigDecimal(0);
if(clickFlow!=0){
clickTenThousand = new BigDecimal(clickFlow / 10000 * 100);
//区间点击数
contract.setClickFlow(new BigDecimal(clickFlow / 10000).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
}
//区间分摊收入,乘以100,前端除以100
long share = unitPriceAccurate.multiply(clickTenThousand).setScale(0, BigDecimal.ROUND_HALF_UP).longValue();
contract.setIntervaIncomeShare(share);
contract.setIncomeShareAll(share+adjustmentFund);
DateTime grossDate;
if(checkTwoTime(selected[0],contractPart[1]) && checkTwoTime(contractPart[1],selected[1])){
grossDate = contractPart[1];
}else{
grossDate = selected[1];
}
//累计总收入
clickNum = accountFlowRestrictService.getTotalNum(contractPart[0].toString("yyyy-MM-dd"), grossDate.toString("yyyy-MM-dd"), appkeys, "account_track_flow_restrict", "click_sum");
clickFlow = clickNum==null?0:clickNum.intValue();
contract.setIncomeGross(unitPriceAccurate.multiply(new BigDecimal(clickFlow / 10000 * 100)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
return contract;
}
private Contract cancledShareTKIO(Contract contract, String appkeys, BigDecimal unitPriceAccurate,DateTime[] usePart) {
if (!ContractStatusEnum.CANCEL.getKey().equals(contract.getStatus())) {
return null;
}
ContractChange contractChange = contractChangeRepository.findByContentCode(ContractStatusEnum.CANCEL.getValue(), contract.getContractCode());
if (contractChange == null) {
contract.setAdjustmentFund(0L);
contract.setIntervaIncomeShare(0L);
contract.setIncomeShareAll(0L);
contract.setClickFlow(0.0);
return contract;
}
DateTime cancelDate = new DateTime(contractChange.getDs());//合同作废日
DateTime usedEnd = usePart[1].compareTo(cancelDate) <= 0 ? usePart[1] : cancelDate;
BigInteger clickNum = accountFlowRestrictService.getTotalNum(usePart[0].toString("yyyy-MM-dd"), usedEnd.toString("yyyy-MM-dd"), appkeys, "account_track_flow_restrict", "click_sum");
int clickFlow = clickNum==null?0:clickNum.intValue();
//区间点击数
contract.setClickFlow(0.0);
BigDecimal clickTenThousand = new BigDecimal(0);
if(clickFlow!=0){
clickTenThousand = new BigDecimal(clickFlow / 10000 * 100);
//区间点击数
contract.setClickFlow(new BigDecimal(clickFlow / 10000).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
}
//区间分摊收入,乘以100,前端除以100
long share = unitPriceAccurate.multiply(clickTenThousand).setScale(0, BigDecimal.ROUND_HALF_UP).longValue();
contract.setIntervaIncomeShare(share);
//调整金
contract.setAdjustmentFund(share*-1L);
//分摊总收入
contract.setIncomeShareAll(0L);
contract.setIncomeGross(0L);
return contract;
}
public void shareIncome4Contract(Contract contract, DateTime start, DateTime end) { public void shareIncome4Contract(Contract contract, DateTime start, DateTime end) {
DateTime[] selected = new DateTime[]{ DateTime[] selected = new DateTime[]{
start, start,
end}; end};//用户筛选开始/结束日期
DateTime[] contractPart = new DateTime[]{ DateTime[] contractPart = new DateTime[]{
new DateTime(contract.getStartDate()), new DateTime(contract.getStartDate()),
new DateTime(contract.getEndDate())};//合同开始结束 时间 new DateTime(contract.getEndDate())};//合同开始结束 时间
...@@ -287,6 +606,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -287,6 +606,12 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
} }
} }
if (checkTwoTime(selected[0], contractPart[1]) && checkTwoTime(contractPart[1], selected[1])) {
contract.setIncomeGross(shareMultiply(new BigDecimal(getDayRange(contractPart[0], contractPart[1]) + 1), dayShareIncome, 0));
} else {
contract.setIncomeGross(shareMultiply(new BigDecimal(getDayRange(contractPart[0], selected[1]) + 1), dayShareIncome, 0));
}
if (checkTwoTime(contractPart[1], selected[1])) { if (checkTwoTime(contractPart[1], selected[1])) {
//最后一日分摊金计算处理 //最后一日分摊金计算处理
Long lastDay; Long lastDay;
...@@ -335,7 +660,6 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -335,7 +660,6 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
if (checkTwoTime(suspendDate, cancelDate)) { if (checkTwoTime(suspendDate, cancelDate)) {
adjustmentFund = 0L; adjustmentFund = 0L;
} else { } else {
adjustmentFund = shareMultiply(new BigDecimal((getDayRange(cancelDate, suspendDate) + 1) * -1), dayShareIncome, 0); adjustmentFund = shareMultiply(new BigDecimal((getDayRange(cancelDate, suspendDate) + 1) * -1), dayShareIncome, 0);
} }
...@@ -348,8 +672,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -348,8 +672,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
if (checkTwoTime(selected[0], cancelDate) && checkTwoTime(cancelDate, selected[1])) { if (checkTwoTime(selected[0], cancelDate) && checkTwoTime(cancelDate, selected[1])) {
contract.setAdjustmentFund(adjustmentFund); contract.setAdjustmentFund(adjustmentFund);
contract.setIncomeGross(shareMultiply(new BigDecimal(getDayRange(contractPart[0], cancelDate) + 1), dayShareIncome, 0));
} else { } else {
contract.setAdjustmentFund(0L); contract.setAdjustmentFund(0L);
contract.setIncomeGross(shareMultiply(new BigDecimal(getDayRange(contractPart[0], selected[1]) + 1), dayShareIncome, 0));
} }
contract.setIncomeShareAll(contract.getIntervaIncomeShare() + contract.getAdjustmentFund()); contract.setIncomeShareAll(contract.getIntervaIncomeShare() + contract.getAdjustmentFund());
...@@ -391,7 +717,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -391,7 +717,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
} else { } else {
contract.setAdjustmentFund(0L); contract.setAdjustmentFund(0L);
} }
contract.setIncomeGross(0L);
contract.setIncomeShareAll(contract.getIntervaIncomeShare() + contract.getAdjustmentFund()); contract.setIncomeShareAll(contract.getIntervaIncomeShare() + contract.getAdjustmentFund());
return contract; return contract;
} }
...@@ -416,13 +742,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -416,13 +742,9 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
} }
public static void main(String[] args) { public static void main(String[] args) {
DateTime dateTime = new DateTime("2020-09-25");
//2019.7.24-2020.7.23 DateTime creatTime = new DateTime("2020-10-11");
DateTime[] middlePoiont = new DateTime[]{new DateTime("2019-12-31"), new DateTime("2020-01-01")}; System.out.println(dateTime.isBefore(creatTime));
DateTime[] middlePoiont2 = new DateTime[]{new DateTime("2019-07-24"), new DateTime("2020-07-23")};
System.out.println(Days.daysBetween(middlePoiont2[1], middlePoiont2[0]).getDays());
System.out.println(Days.daysBetween(middlePoiont2[1], middlePoiont[0]).getDays());
System.out.println(Days.daysBetween(middlePoiont[1], middlePoiont2[0]).getDays());
} }
......
...@@ -18,4 +18,7 @@ public interface AppRepository extends JpaRepository<App, Long> { ...@@ -18,4 +18,7 @@ public interface AppRepository extends JpaRepository<App, Long> {
@Query(value = "select appkey from app where account in ?1", nativeQuery = true) @Query(value = "select appkey from app where account in ?1", nativeQuery = true)
List<String> findAppkeys(List<Long> accountId); List<String> findAppkeys(List<Long> accountId);
@Query(value = "select appkey from app where account in ?1 and is_debug is not true", nativeQuery = true)
List<String> findAppkeysNotDebug(List<Long> accountId);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment