| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665 |
- package com.ydtech.modules.inv.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.ydtech.core.page.PageRequest;
- import com.ydtech.modules.esm.model.EsmInsCompany;
- import com.ydtech.modules.inv.dao.InvReceivableMapper;
- import com.ydtech.modules.inv.dao.InvSettlementSourceMapper;
- import com.ydtech.modules.inv.dao.InvSourceMapper;
- import com.ydtech.modules.inv.model.po.InvSettlementSource;
- import com.ydtech.modules.inv.model.po.InvSource;
- import com.ydtech.modules.inv.model.vo.*;
- import com.ydtech.modules.inv.service.InvReceivableService;
- import com.ydtech.modules.inv.service.InvSourceService;
- import com.ydtech.utils.idgen.IdGenerate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.time.YearMonth;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * @author Administrator
- * @description 针对表【inv_channel_account(渠道账户表)】的数据库操作Service实现
- * @createDate 2024-01-20 10:29:30
- */
- @Service
- public class InvReceivableServiceImpl implements InvReceivableService {
- @Autowired
- InvReceivableMapper invReceivableMapper;
- @Autowired
- InvSourceService invSourceService;
- @Autowired
- InvSourceMapper invSourceMapper;
- @Autowired
- InvSettlementSourceMapper invSettlementSourceMapper;
- @Override
- public List<ReceivableResultVo> getReceivableList(String startTime, String endTime, String insuranceId) {
- return invReceivableMapper.getReceivableList(startTime, endTime, insuranceId);
- }
- @Override
- public List<SigningSourceResultVo> getSigningSourceResult(String yearMonthStr, String insuranceId, String startTime, String endTime) {
- List<SigningSourceResultVo> signingSources = invReceivableMapper.getSigningSourceResult(startTime, endTime, insuranceId);
- List<SigningSourceResultVo> signingSourceResult = new ArrayList<>();
- Float jqPremiumTax = 0f;
- Float syPremiumTax = 0f;
- Float nonCarPremiumTax = 0f;
- Float writtenPremium = 0f;
- Float settlementAmount = 0f;
- for (int i = 1; i <= 12; i++) {
- //查找day是否有数据
- String finalI = i < 10 ? "0" + String.valueOf(i) : String.valueOf(i);
- boolean countBol = signingSources.stream().filter(x -> finalI.equals(x.getDay())).count() > 0 ? true : false;
- if (countBol) {
- signingSourceResult.add(signingSources.stream().filter(x -> String.valueOf(finalI).equals(x.getDay())).findFirst().get());
- } else {
- SigningSourceResultVo signingSourceResultVo = new SigningSourceResultVo();
- signingSourceResultVo.setDay(finalI);
- signingSourceResultVo.setYearmonth(yearMonthStr + "-" + finalI);
- signingSourceResult.add(signingSourceResultVo);
- }
- }
- //处理合计
- for (SigningSourceResultVo vo : signingSourceResult) {
- jqPremiumTax = Float.parseFloat(vo.getJqPremiumTax()) + jqPremiumTax;
- syPremiumTax = Float.parseFloat(vo.getSyPremiumTax()) + syPremiumTax;
- nonCarPremiumTax = Float.parseFloat(vo.getNonCarPremiumTax()) + nonCarPremiumTax;
- writtenPremium = Float.parseFloat(vo.getWrittenPremium()) + writtenPremium;
- settlementAmount = Float.parseFloat(vo.getTotalAmountReceivable()) + settlementAmount;
- }
- SigningSourceResultVo vo = new SigningSourceResultVo();
- vo.setYearmonth("合计");
- vo.setJqPremiumTax(String.format("%.2f", jqPremiumTax));
- vo.setSyPremiumTax(String.format("%.2f", syPremiumTax));
- vo.setNonCarPremiumTax(String.format("%.2f", nonCarPremiumTax));
- vo.setWrittenPremium(String.format("%.2f", writtenPremium));
- vo.setTotalAmountReceivable(String.format("%.2f", settlementAmount));
- signingSourceResult.add(vo);
- return signingSourceResult;
- }
- @Override
- public List<SigningSourceResultVo> getSigningSourceDayResult(String yearMonthStr, String startTime, String endTime,
- String insuranceId) {
- List<SigningSourceResultVo> signingSources = invReceivableMapper.getSigningSourceDayResult(startTime, endTime, insuranceId);
- List<SigningSourceResultVo> signingSourceResult = new ArrayList<>();
- // 定义日期时间格式
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
- // 将字符串解析为YearMonth对象
- YearMonth yearMonth = YearMonth.parse(yearMonthStr, formatter);
- int maxDays = yearMonth.lengthOfMonth();
- Float jqPremiumTax = 0f;
- Float syPremiumTax = 0f;
- Float nonCarPremiumTax = 0f;
- Float writtenPremium = 0f;
- Float settlementAmount = 0f;
- for (int i = 1; i <= maxDays; i++) {
- //查找day是否有数据
- String finalI = i < 10 ? "0" + String.valueOf(i) : String.valueOf(i);
- boolean countBol = signingSources.stream().filter(x -> finalI.equals(x.getDay())).count() > 0 ? true : false;
- if (countBol) {
- signingSourceResult.add(signingSources.stream().filter(x -> String.valueOf(finalI).equals(x.getDay())).findFirst().get());
- } else {
- SigningSourceResultVo signingSourceResultVo = new SigningSourceResultVo();
- signingSourceResultVo.setDay(finalI);
- signingSourceResultVo.setYearmonth(yearMonthStr + "-" + finalI);
- signingSourceResult.add(signingSourceResultVo);
- }
- }
- //处理合计
- for (SigningSourceResultVo vo : signingSourceResult) {
- jqPremiumTax = Float.parseFloat(vo.getJqPremiumTax()) + jqPremiumTax;
- syPremiumTax = Float.parseFloat(vo.getSyPremiumTax()) + syPremiumTax;
- nonCarPremiumTax = Float.parseFloat(vo.getNonCarPremiumTax()) + nonCarPremiumTax;
- writtenPremium = Float.parseFloat(vo.getWrittenPremium()) + writtenPremium;
- settlementAmount = Float.parseFloat(vo.getTotalAmountReceivable()) + settlementAmount;
- }
- SigningSourceResultVo vo = new SigningSourceResultVo();
- vo.setYearmonth("合计");
- vo.setJqPremiumTax(String.format("%.2f", jqPremiumTax));
- vo.setSyPremiumTax(String.format("%.2f", syPremiumTax));
- vo.setNonCarPremiumTax(String.format("%.2f", nonCarPremiumTax));
- vo.setWrittenPremium(String.format("%.2f", writtenPremium));
- vo.setTotalAmountReceivable(String.format("%.2f", settlementAmount));
- signingSourceResult.add(vo);
- return signingSourceResult;
- }
- public static String[] getNext12MonthsDates(YearMonth startYearMonth) {
- String[] next12MonthsDates = new String[12];
- for (int i = 0; i < 12; i++) {
- YearMonth nextYearMonth = startYearMonth.plusMonths(i);
- String formattedDate = nextYearMonth.format(DateTimeFormatter.ofPattern("yyyy-MM"));
- next12MonthsDates[i] = formattedDate;
- }
- return next12MonthsDates;
- }
- @Override
- public List<SettlementSourceResultVo> getSettlementSourceResult(String yearMonthStr, String insuranceId) {
- // 定义日期时间格式
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
- // 将字符串解析为YearMonth对象
- YearMonth yearMonth = YearMonth.parse(yearMonthStr, formatter);
- String[] next12MonthsDates = getNext12MonthsDates(yearMonth);
- int maxDays = yearMonth.lengthOfMonth();
- //获取签单数据
- List<SigningSourceResultVo> signingSources = invReceivableMapper.getSigningSourceDayResult(yearMonthStr + "-01", yearMonthStr +
- "-" + maxDays, insuranceId);
- //转换类型
- List<SettlementSourceResultVo> settlementSourcesTmp = new ArrayList<>();
- List<SettlementSourceResultVo> settlementSources = new ArrayList<>();
- signingSources.forEach(signing -> {
- SettlementSourceResultVo settlementSourceResultVo = new SettlementSourceResultVo();
- settlementSourceResultVo.setDay(signing.getDay());
- settlementSourceResultVo.setSignDate(signing.getYearmonth());
- settlementSourceResultVo.setSignPremium(new BigDecimal(signing.getWrittenPremium()));
- settlementSourceResultVo.setSignReceivableAmount(new BigDecimal(signing.getTotalAmountReceivable()));
- settlementSourceResultVo.setSettlementData(new ArrayList<>());
- settlementSourcesTmp.add(settlementSourceResultVo);
- });
- for (int i = 1; i <= maxDays; i++) {
- //查找day是否有数据
- String finalI = i < 10 ? "0" + String.valueOf(i) : String.valueOf(i);
- boolean countBol = settlementSourcesTmp.stream().filter(x -> finalI.equals(x.getDay())).count() > 0 ? true : false;
- if (!countBol) {
- SettlementSourceResultVo settlementSourceResultVo = new SettlementSourceResultVo();
- settlementSourceResultVo.setDay(finalI);
- settlementSourceResultVo.setSignDate(yearMonthStr + "-" + finalI);
- settlementSources.add(settlementSourceResultVo);
- } else {
- settlementSources.add(settlementSourcesTmp.stream().filter(x -> finalI.equals(x.getDay())).findFirst().get());
- }
- }
- int year = yearMonth.getYear();
- //遍历结算数据
- settlementSources.forEach(signing -> {
- // String startTime = String.valueOf(year) + "-01-01";
- // String endTime = String.valueOf(year) + "-12-31";
- String startTime = next12MonthsDates[0] + "-01";
- int day = YearMonth.parse(next12MonthsDates[11], formatter).lengthOfMonth();
- String endTime = next12MonthsDates[11] + "-" + day;
- List<SettlementSourceDataVo> settlementSourceResultTmp =
- invReceivableMapper.getSettlementSourceResult(signing.getSignDate(), startTime, endTime, insuranceId);
- List<SettlementSourceDataVo> settlementSourceResult = new ArrayList<>();
- System.out.printf("1");
- //补齐数据
- for (int i = 0; i < 12; i++) {
- //查找day是否有数据
- String month = next12MonthsDates[i];
- boolean countBol = settlementSourceResultTmp.stream().filter(x -> month.equals(x.getSettlementDate())).count() > 0 ?
- true : false;
- if (!countBol) {
- SettlementSourceDataVo settlementSourceData = new SettlementSourceDataVo();
- settlementSourceData.setDay(month);
- settlementSourceData.setSettlementDate(next12MonthsDates[i]);
- settlementSourceResult.add(settlementSourceData);
- } else {
- settlementSourceResult.add(settlementSourceResultTmp.stream().filter(x -> month.equals(x.getSettlementDate())).findFirst().get());
- }
- }
- signing.setSettlementData(settlementSourceResult);
- });
- //计算每个日期的签单保费 和代理人佣金
- settlementSources.forEach(settlementSource -> {
- int length = settlementSource.getSettlementData().size();
- BigDecimal settlementPremium = new BigDecimal(0);
- BigDecimal agentCommission = new BigDecimal(0);
- //横向计算
- for (int i = 0; i < length; i++) {
- SettlementSourceDataVo settlementSourceData = settlementSource.getSettlementData().get(i);
- settlementPremium = settlementPremium.add(settlementSourceData.getSettlementPremium());
- agentCommission = agentCommission.add(settlementSourceData.getAgentCommission());
- }
- SettlementSourceDataVo settlementSourceData = new SettlementSourceDataVo();
- settlementSourceData.setSettlementPremium(settlementPremium);
- settlementSourceData.setAgentCommission(agentCommission);
- settlementSourceData.setSettlementDate("合计");
- settlementSource.getSettlementData().add(settlementSourceData);
- //竖向计算
- // settlementSource.getSettlementData().stream().filter(x-> x.getDay().equals("01")).count()
- });
- // 计算每个日期的签单保费 和代理人佣金 竖向计算
- List<SettlementSourceDataVo> settlementSourceDataSum = new ArrayList<>();
- for (int i = 0; i < 12; i++) {
- //提取每个月的数据
- // String finalI = i < 10 ? "0" + String.valueOf(i) : String.valueOf(i);
- String month = next12MonthsDates[i];
- List<SettlementSourceDataVo> settlementSourceDataVos = new ArrayList<>();
- BigDecimal settlementPremium = new BigDecimal(0);
- BigDecimal agentCommission = new BigDecimal(0);
- for (int j = 0; j < settlementSources.size(); j++) {
- List<SettlementSourceDataVo> collect =
- settlementSources.get(j).getSettlementData().stream().filter(x -> x.getSettlementDate() != null && x.getSettlementDate().equals(month)).collect(Collectors.toList());
- for (int k = 0; k < collect.size(); k++) {
- settlementPremium = settlementPremium.add(collect.get(k).getAgentCommission());
- agentCommission = agentCommission.add(collect.get(k).getAgentCommission());
- }
- }
- SettlementSourceDataVo settlementSourceDataVo = new SettlementSourceDataVo();
- settlementSourceDataVo.setDay(month);
- settlementSourceDataVo.setSettlementPremium(settlementPremium);
- settlementSourceDataVo.setAgentCommission(agentCommission);
- settlementSourceDataSum.add(settlementSourceDataVo);
- }
- //未结算签单保费 与 已结算利润计算
- settlementSources.forEach(settlementSource -> {
- SettlementSourceDataVo settlementSourceDataVo =
- settlementSource.getSettlementData().stream().filter(x -> !"合计".equals(x.getSettlementDate())).findFirst().get();
- settlementSource.setUnCalculatedAmount(settlementSource.getSignPremium().subtract(settlementSourceDataVo.getSettlementPremium()));
- settlementSource.setSettledProfit(settlementSource.getSignReceivableAmount().subtract(settlementSourceDataVo.getAgentCommission()));
- });
- //计算代理人佣金
- List<HashMap> maxReceivable = invReceivableMapper.getMaxReceivable(yearMonthStr + "-01", yearMonthStr + "-" + maxDays);
- settlementSources.forEach(settlementSource -> {
- Boolean b =
- maxReceivable.stream().filter(x -> settlementSource.getSignDate().equals(x.get("yeatmonth"))).findFirst().isPresent();
- if (!b) {
- settlementSource.setAgentAmount(new BigDecimal(0));
- } else {
- HashMap max =
- maxReceivable.stream().filter(x -> settlementSource.getSignDate().equals(x.get("yeatmonth"))).findFirst().get();
- SettlementSourceDataVo settlementSourceDataVo =
- settlementSource.getSettlementData().get(settlementSource.getSettlementData().size() - 1);
- settlementSource.setAgentAmount(new BigDecimal(max.get("receivable").toString()).subtract(settlementSourceDataVo.getAgentCommission()));
- }
- });
- //计算未结算利润测算
- List<HashMap> unsettledProfitCalculation = invReceivableMapper.getUnsettledProfitCalculation(yearMonthStr + "-01",
- yearMonthStr + "-" + maxDays);
- settlementSources.forEach(settlementSource -> {
- Boolean b =
- unsettledProfitCalculation.stream().filter(x -> settlementSource.getSignDate().equals(x.get("yeatmonth"))).findFirst().isPresent();
- if (!b) {
- settlementSource.setUnsettledProfitCalculation(new BigDecimal(0));
- } else {
- HashMap max =
- unsettledProfitCalculation.stream().filter(x -> settlementSource.getSignDate().equals(x.get("yeatmonth"))).findFirst().get();
- settlementSource.setUnsettledProfitCalculation(new BigDecimal(max.get("unsettled_profit_calculation").toString()));
- }
- });
- //计算签单合计 (第一层)
- int length = settlementSources.size();
- BigDecimal signPremium = new BigDecimal(0);
- BigDecimal signReceivableAmount = new BigDecimal(0);
- BigDecimal unCalculatedAmount = new BigDecimal(0);
- BigDecimal settledProfit = new BigDecimal(0);
- BigDecimal agentAmount = new BigDecimal(0);
- BigDecimal unsettledProfitCalculationSum = new BigDecimal(0);
- for (int i = 0; i < length; i++) {
- SettlementSourceResultVo settlementSource = settlementSources.get(i);
- signPremium = signPremium.add(settlementSource.getSignPremium());
- signReceivableAmount = signReceivableAmount.add(settlementSource.getSignReceivableAmount());
- unCalculatedAmount = unCalculatedAmount.add(settlementSource.getUnCalculatedAmount());
- settledProfit = settledProfit.add(settlementSource.getSettledProfit());
- agentAmount = agentAmount.add(settlementSource.getAgentAmount());
- unsettledProfitCalculationSum = unsettledProfitCalculationSum.add(settlementSource.getUnsettledProfitCalculation());
- }
- //合计
- SettlementSourceResultVo settlementSourceResultVo = new SettlementSourceResultVo();
- settlementSourceResultVo.setSignDate("合计");
- settlementSourceResultVo.setSignPremium(signPremium);
- settlementSourceResultVo.setSettlementData(settlementSourceDataSum);
- settlementSourceResultVo.setSignReceivableAmount(signReceivableAmount);
- settlementSourceResultVo.setUnCalculatedAmount(unCalculatedAmount);
- settlementSourceResultVo.setSettledProfit(settledProfit);
- settlementSourceResultVo.setAgentAmount(agentAmount);
- settlementSourceResultVo.setUnsettledProfitCalculation(unsettledProfitCalculationSum);
- settlementSources.add(settlementSourceResultVo);
- return settlementSources;
- }
- @Override
- public IPage<InvSource> getRecivablePage(InvSourceQueryVo invSourceQueryVo) {
- PageRequest pageRequest = new PageRequest();
- pageRequest.setPageNum(invSourceQueryVo.getPageNum());
- pageRequest.setPageSize(invSourceQueryVo.getPageSize());
- Page page = PageRequest.buildPageRequest(pageRequest);
- if (invSourceQueryVo.getSigningTime() != null && !"".equals(invSourceQueryVo.getSigningTime())) {
- String[] split = invSourceQueryVo.getSigningTime().split(",");
- invSourceQueryVo.setSigningTimeStartTime(split[0]);
- invSourceQueryVo.setSigningTimeEndTime(split[1]);
- }
- if (invSourceQueryVo.getClearingTime() != null && !"".equals(invSourceQueryVo.getClearingTime())) {
- String[] split1 = invSourceQueryVo.getClearingTime().split(",");
- invSourceQueryVo.setClearingTimeStartTime(split1[0]);
- invSourceQueryVo.setClearingTimeEndTime(split1[1]);
- }
- Page<InvSource> pageData = invSourceMapper.getRecivablePage(page, invSourceQueryVo);
- List<InvSource> records = pageData.getRecords();
- records.forEach(x -> {
- x.setClearingState("0".equals(x.getClearingState()) ? "未结算" : "1".equals(x.getClearingState()) ? "已结算" :
- "2".equals(x.getClearingState()) ? "孤儿单" : x.getClearingState());
- x.setInsuranceClearingState("0".equals(x.getInsuranceClearingState()) ? "未结算" :
- "1".equals(x.getInsuranceClearingState()) ? "已结算" : x.getInsuranceClearingState());
- });
- pageData.setRecords(records);
- return pageData;
- }
- @Override
- public List<InvSource> getRecivableList(InvSourceQueryVo invSourceQueryVo) {
- if (invSourceQueryVo.getSigningTime() != null && !"".equals(invSourceQueryVo.getSigningTime())) {
- String[] split = invSourceQueryVo.getSigningTime().split(",");
- invSourceQueryVo.setSigningTimeStartTime(split[0]);
- invSourceQueryVo.setSigningTimeEndTime(split[1]);
- }
- if (invSourceQueryVo.getClearingTime() != null && !"".equals(invSourceQueryVo.getClearingTime())) {
- String[] split1 = invSourceQueryVo.getClearingTime().split(",");
- invSourceQueryVo.setClearingTimeStartTime(split1[0]);
- invSourceQueryVo.setClearingTimeEndTime(split1[1]);
- }
- List<InvSource> pageData = invSourceMapper.getRecivableList(invSourceQueryVo);
- pageData.forEach(x -> {
- x.setClearingState("0".equals(x.getClearingState()) ? "未结算" : "1".equals(x.getClearingState()) ? "已结算" :
- "2".equals(x.getClearingState()) ? "孤儿单" : x.getClearingState());
- x.setInsuranceClearingState("0".equals(x.getInsuranceClearingState()) ? "未结算" :
- "1".equals(x.getInsuranceClearingState()) ? "已结算" : x.getInsuranceClearingState());
- });
- return pageData;
- }
- @Override
- public Boolean updateRecivable(InvSource invSource) {
- BigDecimal tax = BigDecimal.valueOf(1.06);
- //处理交强不含税
- invSource.setJqPremium(invSource.getJqPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
- //处理商业不含税
- invSource.setSyPremium(invSource.getSyPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
- //处理非车不含税
- invSource.setNonCarPremium(invSource.getNonCarPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
- //处理非跟单比例
- invSource.setJqNonCopyingRatio(invSource.getJqReceivableRatio().subtract(invSource.getJqPremiumRatio()));
- invSource.setSyNonCopyingRatio(invSource.getSyReceivableRatio().subtract(invSource.getSyPremiumRatio()));
- invSource.setNonCarNonCopyingRatio(invSource.getNonCarReceivableRatio().subtract(invSource.getNonCarPremiumRatio()));
- //处理手续费金额
- invSource.setPremium(
- invSource.getJqPremium().multiply(invSource.getJqPremiumRatio())
- .add(invSource.getSyPremium().multiply(invSource.getSyPremiumRatio()))
- .add(invSource.getNonCarPremium().multiply(invSource.getNonCarPremiumRatio())));
- //处理非跟单金额
- invSource.setNonCopying(
- invSource.getJqPremium().multiply(invSource.getJqNonCopyingRatio())
- .add(invSource.getSyPremium().multiply(invSource.getSyNonCopyingRatio()))
- .add(invSource.getNonCarPremium().multiply(invSource.getNonCarNonCopyingRatio())));
- //处理保司应收金额
- invSource.setReceivable(
- invSource.getJqPremium().multiply(invSource.getJqReceivableRatio())
- .add(invSource.getSyPremium().multiply(invSource.getSyReceivableRatio()))
- .add(invSource.getNonCarPremium().multiply(invSource.getNonCarReceivableRatio())));
- //处理补贴金额
- invSource.setSubsidyAmount(
- invSource.getJqPremiumTax().multiply(invSource.getSubsidyRatio())
- .add(invSource.getSyPremiumTax().multiply(invSource.getSubsidyRatio()))
- .add(invSource.getNonCarPremiumTax().multiply(invSource.getSubsidyRatio())));
- //处理应收总金额
- invSource.setTotalReceivableAmount(
- invSource.getReceivable().add(invSource.getSubsidyAmount()));
- //处理最大应付金额
- invSource.setMaxReceivable(
- invSource.getJqPremiumTax().multiply(invSource.getMaxJqReceivableRatio())
- .add(invSource.getSyPremiumTax().multiply(invSource.getMaxSyReceivableRatio()))
- .add(invSource.getNonCarPremiumTax().multiply(invSource.getMaxNonCarReceivableRatio())));
- invSource.setClearingState("未结算".equals(invSource.getClearingState()) ? "0" :
- "已结算".equals(invSource.getClearingState()) ? "1" : invSource.getClearingState());
- invSource.setInsuranceClearingState("未结算".equals(invSource.getInsuranceClearingState()) ? "0" :
- "已结算".equals(invSource.getInsuranceClearingState()) ? "1" : invSource.getInsuranceClearingState());
- return invSourceMapper.updateById(invSource) > 0;
- }
- @Override
- public IPage<InvSettlementSource> getSettlementPage(InvSettlementSourceQueryVo invSettlementSourceQueryVo) {
- PageRequest pageRequest = new PageRequest();
- pageRequest.setPageNum(invSettlementSourceQueryVo.getPageNum());
- pageRequest.setPageSize(invSettlementSourceQueryVo.getPageSize());
- Page page = PageRequest.buildPageRequest(pageRequest);
- LambdaQueryWrapper<InvSettlementSource> queryWrapper = new LambdaQueryWrapper<>();
- if (invSettlementSourceQueryVo.getLicenseno() != null && !"".equals(invSettlementSourceQueryVo.getLicenseno())) {
- queryWrapper.eq(InvSettlementSource::getLicenseno, invSettlementSourceQueryVo.getLicenseno());
- }
- if (invSettlementSourceQueryVo.getJqPolicyId() != null && !"".equals(invSettlementSourceQueryVo.getJqPolicyId())) {
- queryWrapper.eq(InvSettlementSource::getJqPolicyId, invSettlementSourceQueryVo.getJqPolicyId());
- }
- if (invSettlementSourceQueryVo.getSyPolicyId() != null && !"".equals(invSettlementSourceQueryVo.getSyPolicyId())) {
- queryWrapper.eq(InvSettlementSource::getSyPolicyId, invSettlementSourceQueryVo.getSyPolicyId());
- }
- if (invSettlementSourceQueryVo.getNonCarPolicyId() != null && !"".equals(invSettlementSourceQueryVo.getNonCarPolicyId())) {
- queryWrapper.eq(InvSettlementSource::getNonCarPolicyId, invSettlementSourceQueryVo.getNonCarPolicyId());
- }
- if (invSettlementSourceQueryVo.getInsuranceId() != null && !"".equals(invSettlementSourceQueryVo.getInsuranceId())) {
- queryWrapper.in(InvSettlementSource::getInsuranceId, invSettlementSourceQueryVo.getInsuranceId());
- }
- if (invSettlementSourceQueryVo.getInsuranceType() != null && !"".equals(invSettlementSourceQueryVo.getInsuranceType())) {
- queryWrapper.eq(InvSettlementSource::getInsuranceType, invSettlementSourceQueryVo.getInsuranceType());
- }
- if (invSettlementSourceQueryVo.getSignDate() != null && !"".equals(invSettlementSourceQueryVo.getSignDate())) {
- String[] split = invSettlementSourceQueryVo.getSignDate().split(",");
- queryWrapper.between(InvSettlementSource::getSignDate, split[0], split[1]);
- }
- if (invSettlementSourceQueryVo.getAgencySettlementTime() != null && !"".equals(invSettlementSourceQueryVo.getAgencySettlementTime())) {
- String[] split = invSettlementSourceQueryVo.getAgencySettlementTime().split(",");
- queryWrapper.between(InvSettlementSource::getAgencySettlementTime, split[0], split[1]);
- }
- if (invSettlementSourceQueryVo.getChannel() != null && !"".equals(invSettlementSourceQueryVo.getChannel())) {
- queryWrapper.eq(InvSettlementSource::getChannel, invSettlementSourceQueryVo.getChannel());
- }
- if (invSettlementSourceQueryVo.getChannelClassification() != null && !"".equals(invSettlementSourceQueryVo.getChannelClassification())) {
- queryWrapper.eq(InvSettlementSource::getChannelClassification, invSettlementSourceQueryVo.getChannelClassification());
- }
- if (invSettlementSourceQueryVo.getInsuredName() != null && !"".equals(invSettlementSourceQueryVo.getInsuredName())) {
- queryWrapper.like(InvSettlementSource::getInsuredName, invSettlementSourceQueryVo.getInsuredName());
- }
- Page pageData = invSettlementSourceMapper.selectPage(page, queryWrapper);
- return pageData;
- }
- @Override
- public List<InvSettlementSource> getSettlementList(InvSettlementSourceQueryVo invSettlementSourceQueryVo) {
- LambdaQueryWrapper<InvSettlementSource> queryWrapper = new LambdaQueryWrapper<>();
- if (invSettlementSourceQueryVo.getLicenseno() != null && !"".equals(invSettlementSourceQueryVo.getLicenseno())) {
- queryWrapper.eq(InvSettlementSource::getLicenseno, invSettlementSourceQueryVo.getLicenseno());
- }
- if (invSettlementSourceQueryVo.getJqPolicyId() != null && !"".equals(invSettlementSourceQueryVo.getJqPolicyId())) {
- queryWrapper.eq(InvSettlementSource::getJqPolicyId, invSettlementSourceQueryVo.getJqPolicyId());
- }
- if (invSettlementSourceQueryVo.getSyPolicyId() != null && !"".equals(invSettlementSourceQueryVo.getSyPolicyId())) {
- queryWrapper.eq(InvSettlementSource::getSyPolicyId, invSettlementSourceQueryVo.getSyPolicyId());
- }
- if (invSettlementSourceQueryVo.getNonCarPolicyId() != null && !"".equals(invSettlementSourceQueryVo.getNonCarPolicyId())) {
- queryWrapper.eq(InvSettlementSource::getNonCarPolicyId, invSettlementSourceQueryVo.getNonCarPolicyId());
- }
- if (invSettlementSourceQueryVo.getInsuranceId() != null && !"".equals(invSettlementSourceQueryVo.getInsuranceId())) {
- queryWrapper.in(InvSettlementSource::getInsuranceId, invSettlementSourceQueryVo.getInsuranceId());
- }
- if (invSettlementSourceQueryVo.getInsuranceType() != null && !"".equals(invSettlementSourceQueryVo.getInsuranceType())) {
- queryWrapper.eq(InvSettlementSource::getInsuranceType, invSettlementSourceQueryVo.getInsuranceType());
- }
- if (invSettlementSourceQueryVo.getSignDate() != null && !"".equals(invSettlementSourceQueryVo.getSignDate())) {
- String[] split = invSettlementSourceQueryVo.getSignDate().split(",");
- queryWrapper.between(InvSettlementSource::getSignDate, split[0], split[1]);
- }
- List<InvSettlementSource> pageData = invSettlementSourceMapper.selectList(queryWrapper);
- return pageData;
- }
- @Override
- public Boolean updateSettlement(InvSettlementSource invSettlementSource) {
- //处理结算金额
- BigDecimal settlementAmount = invSettlementSource.getJqPremiumTax().multiply(invSettlementSource.getCompulsoryExportRatio())
- .add(invSettlementSource.getSyPremiumTax().multiply(invSettlementSource.getCommercialExportRatio()))
- .add(invSettlementSource.getNonCarPremiumTax().multiply(invSettlementSource.getNonVehicleExportRatio()));
- invSettlementSource.setSettlementAmount(settlementAmount);
- return invSettlementSourceMapper.updateById(invSettlementSource) > 0 ? true : false;
- }
- @Override
- public Integer syncStatus() {
- Integer i = invSourceMapper.syncStatus();
- return i;
- }
- @Override
- public List<EsmInsCompany> getInsureCompany() {
- List<EsmInsCompany> insureCompany = invReceivableMapper.getInsureCompany();
- return insureCompany;
- }
- @Override
- public Page<ReceivableAndSettlementVo> getReceivableAndSettlementPage(ReceivableAndSettlementQueryVo receivableAndSettlementQueryVo) {
- Page page = new Page();
- page.setCurrent(receivableAndSettlementQueryVo.getPageNum());
- page.setSize(receivableAndSettlementQueryVo.getPageSize());
- Page<ReceivableAndSettlementVo> receivableAndSettlementPage = invReceivableMapper.getReceivableAndSettlementPage(page,
- receivableAndSettlementQueryVo);
- return receivableAndSettlementPage;
- }
- @Override
- public List<ReceivableAndSettlementVo> getReceivableAndSettlementList(ReceivableAndSettlementQueryVo receivableAndSettlementQueryVo) {
- List<ReceivableAndSettlementVo> receivableAndSettlementVoList =
- invReceivableMapper.getReceivableAndSettlementPage(receivableAndSettlementQueryVo);
- return receivableAndSettlementVoList;
- }
- @Override
- public Boolean deleteReceivable(String[] ids) {
- return invReceivableMapper.deleteReceivable(String.join(",", ids));
- }
- @Override
- public Boolean updateRecivableBatch(InvSource invSource) {
- List<String> list = Arrays.asList(invSource.getIds());
- List<InvSource> invSources = invSourceMapper.selectBatchIds(list);
- invSources.forEach(x -> {
- x.setInsuranceClearingState(invSource.getInsuranceClearingState());
- invSourceMapper.updateById(x);
- });
- return true;
- }
- @Override
- public Boolean updateSettlementBatch(InvSettlementSource invSettlementSource) {
- List<String> list = Arrays.asList(invSettlementSource.getIds());
- List<InvSettlementSource> invSettlementSources = invSettlementSourceMapper.selectBatchIds(list);
- invSettlementSources.forEach(x -> {
- x.setBusinessOwner(invSettlementSource.getBusinessOwner());
- x.setCompulsoryExportRatio(invSettlementSource.getCompulsoryExportRatio());
- x.setCommercialExportRatio(invSettlementSource.getCommercialExportRatio());
- x.setNonVehicleExportRatio(invSettlementSource.getNonVehicleExportRatio());
- invSettlementSourceMapper.updateById(x);
- });
- return true;
- }
- @Override
- public Boolean addReceivable(InvSource invSource) {
- invSource.setId(IdGenerate.nextId());
- invSource.builder();
- BigDecimal tax = new BigDecimal(1.06);
- //处理交强不含税
- invSource.setJqPremium(invSource.getJqPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
- //处理商业不含税
- invSource.setSyPremium(invSource.getSyPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
- //处理非车不含税
- invSource.setNonCarPremium(invSource.getNonCarPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
- //处理非跟单比例
- invSource.setJqNonCopyingRatio(invSource.getJqReceivableRatio().subtract(invSource.getJqPremiumRatio()));
- invSource.setSyNonCopyingRatio(invSource.getSyReceivableRatio().subtract(invSource.getSyPremiumRatio()));
- invSource.setNonCarNonCopyingRatio(invSource.getNonCarReceivableRatio().subtract(invSource.getNonCarPremiumRatio()));
- //处理手续费金额
- invSource.setPremium(
- invSource.getJqPremium().multiply(invSource.getJqPremiumRatio())
- .add(invSource.getSyPremium().multiply(invSource.getSyPremiumRatio()))
- .add(invSource.getNonCarPremium().multiply(invSource.getNonCarPremiumRatio())));
- //处理非跟单金额
- invSource.setNonCopying(
- invSource.getJqPremium().multiply(invSource.getJqNonCopyingRatio())
- .add(invSource.getSyPremium().multiply(invSource.getSyNonCopyingRatio()))
- .add(invSource.getNonCarPremium().multiply(invSource.getNonCarNonCopyingRatio())));
- //处理保司应收金额
- invSource.setReceivable(
- invSource.getJqPremium().multiply(invSource.getJqReceivableRatio())
- .add(invSource.getSyPremium().multiply(invSource.getSyReceivableRatio()))
- .add(invSource.getNonCarPremium().multiply(invSource.getNonCarReceivableRatio())));
- //处理补贴金额
- invSource.setSubsidyAmount(
- invSource.getJqPremiumTax().multiply(invSource.getSubsidyRatio())
- .add(invSource.getSyPremiumTax().multiply(invSource.getSubsidyRatio()))
- .add(invSource.getNonCarPremiumTax().multiply(invSource.getSubsidyRatio())));
- //处理应收总金额
- invSource.setTotalReceivableAmount(
- invSource.getReceivable().add(invSource.getSubsidyAmount()));
- //处理最大应付金额
- invSource.setMaxReceivable(
- invSource.getJqPremiumTax().multiply(invSource.getMaxJqReceivableRatio())
- .add(invSource.getSyPremiumTax().multiply(invSource.getMaxSyReceivableRatio()))
- .add(invSource.getNonCarPremiumTax().multiply(invSource.getMaxNonCarReceivableRatio())));
- boolean save = invSourceMapper.insert(invSource) > 0 ? true : false;
- return save;
- }
- @Override
- public List<String> dataMatching() {
- List<String> data = invSourceMapper.dataMatching();
- return data;
- }
- @Override
- public Boolean deleteSettlement(String[] ids) {
- List<String> list = Arrays.asList(ids);
- int i = invSettlementSourceMapper.deleteBatchIds(list);
- return i > 0 ? true : false;
- }
- }
|