package com.ydtech.modules.fnc.service.impl; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.text.StrBuilder; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ydtech.constants.enums.dict.agreement.ProductsType; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.esm.model.EsmInsCompany; import com.ydtech.modules.esm.service.EsmInsCompanyService; import com.ydtech.modules.fnc.entity.InsAreaCompany; import com.ydtech.modules.fnc.entity.InsPlyIncome; import com.ydtech.modules.fnc.dao.InsPlyIncomeMapper; import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesEntity; import com.ydtech.modules.fnc.entity.SettlementDocumentaryLogEntity; import com.ydtech.modules.fnc.service.InsPlyIncomeService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.modules.fnc.service.SettlementDocumentaryFeesService; import com.ydtech.modules.fnc.service.SettlementDocumentaryLogService; import com.ydtech.modules.fnc.vo.InsPlyIncomeVo; import com.ydtech.modules.fnc.vo.SettlementDocumentaryFeesVo; import com.ydtech.modules.ins.model.vo.res.*; import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails; import com.ydtech.modules.inv.model.dto.InsBxNoPlyIncomeExcelDto; import com.ydtech.modules.inv.model.dto.InsBxPlyIncomeExcelDto; import com.ydtech.modules.inv.model.dto.InsPlyIncomeExcelDto; import com.ydtech.modules.inv.model.dto.InvChannelExcelDto; import com.ydtech.modules.inv.model.excel.InvDisburseExcel; import com.ydtech.modules.inv.utils.EasyExcelUtils; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.modules.order.entity.InsOrders; import com.ydtech.modules.order.service.InsAreaCompanyService; import com.ydtech.modules.order.service.InsOrdersService; import com.ydtech.modules.protocol.entity.po.PtlAgreement; import com.ydtech.modules.protocol.entity.vo.PtlAgreementQueryVo; import com.ydtech.modules.protocol.service.PtlAgreementService; import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew; import com.ydtech.modules.protocols.service.InsFeeOrderNewService; import com.ydtech.utils.BigDecimalUtils; import com.ydtech.utils.SnowFlakeUtil; import com.ydtech.utils.excel.ExcelEasypoiUtils; import com.ydtech.utils.excel.ExcelStyleUtil; import com.ydtech.utils.excel.ExcelUtils2; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.formula.functions.Now; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import redis.clients.jedis.params.Params; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.image.BandedSampleModel; import java.io.IOException; import java.math.BigDecimal; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; /** *

* 保司结算手续费 服务实现类 *

* * @author gws * @since 2024-01-05 */ @Slf4j @Service public class InsPlyIncomeServiceImpl extends ServiceImpl implements InsPlyIncomeService { @Autowired @Lazy private InsOrdersService insOrdersService; @Autowired private InsAreaCompanyService insAreaCompanyService; @Autowired private InsFeeOrderNewService insFeeOrderNewService; @Autowired private SettlementDocumentaryFeesService settlementDocumentaryFeesService; @Autowired private SettlementDocumentaryLogService settlementDocumentaryLogService; @Autowired private PtlAgreementService ptlAgreementService; @Autowired private EsmInsCompanyService EsmInsCompanyService; @Value("${upload.file.path}") private String uploadPath; @Value("${upload.file.url}") private String uploadUrl; public HttpResult> queryplyIncome(InsPlyIncomeVo insPlyIncomeVo){ try{ Page page = new Page<>(insPlyIncomeVo.getPageNum(), insPlyIncomeVo.getPageSize()); PageInfo> pageHelper = null; PageHelper.startPage(insPlyIncomeVo.getPageNum(),insPlyIncomeVo.getPageSize()); List list= this.baseMapper.selectByCondition(insPlyIncomeVo); pageHelper=new PageInfo(list); BasePageResult pageResult=new BasePageResult(insPlyIncomeVo.getPageNum(), insPlyIncomeVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list); return HttpResult.ok(pageResult); }catch (Exception e){ e.printStackTrace(); return HttpResult.error("查询异常"); } } @Override public void saveBalanceNew(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) { if (ObjectUtils.isEmpty(order) || ObjectUtils.isEmpty(insFeeOrderNew) || ObjectUtils.isEmpty(insAreaCompany)) { return; } String agreeType = this.judgeAgreeType(insAreaCompany.getAgreementId()); if (StringUtils.isNotEmpty(agreeType)) { // 判断协议类型 平台 保险 if ("1".equals(agreeType)) { this.savePinTai(order,insFeeOrderNew,insAreaCompany); //手续费不分非车不非车 跟单也不分 }else { // 保险 逻辑: 手续费生成一条 跟单费生成一条 非车手续费一条 非车跟单费一条 if (((insFeeOrderNew.getJqSuperviseCostsPremiums() != null && insFeeOrderNew.getJqSuperviseCostsPremiums().compareTo(BigDecimal.ZERO) != 0)) || (insFeeOrderNew.getSySuperviseCostsPremiums() != null && insFeeOrderNew.getSySuperviseCostsPremiums().compareTo(BigDecimal.ZERO) != 0)) { //手续费 this.saveInsuranceProcedures(order,insFeeOrderNew,insAreaCompany); } if(insFeeOrderNew.getJqOtherCostsPremiums()!=null && insFeeOrderNew.getJqOtherCostsPremiums().compareTo(BigDecimal.ZERO) != 0){ //跟单费 this.saveOtherAmount(order,insFeeOrderNew,insAreaCompany); } if(insFeeOrderNew.getNoSuperviseCostsPremiums() !=null && insFeeOrderNew.getNoSuperviseCostsPremiums().compareTo(BigDecimal.ZERO) != 0) { // 非车手续费 this.saveNoSupervise(order,insFeeOrderNew,insAreaCompany); } if(insFeeOrderNew.getNoOtherCostsPremiums() !=null && insFeeOrderNew.getNoOtherCostsPremiums().compareTo(BigDecimal.ZERO) != 0){ // 非车跟单费 this.saveNoOtherAmount(order,insFeeOrderNew,insAreaCompany); } } } } private void saveNoOtherAmount(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) { InsPlyIncome insPlyIncome = new InsPlyIncome(); insPlyIncome.setOrderno(insFeeOrderNew.getId()); // 子订单号 String noPolicyno = this.setNoPolicyno(insAreaCompany); if(StringUtils.isNotEmpty(noPolicyno)){ insPlyIncome.setNoPolicyno(noPolicyno); // 非车保单号 } insPlyIncome.setOtherFeevalue(insFeeOrderNew.getNoOtherCostsPremiums()); //非车跟单费 insPlyIncome.setOtherFeerate(insFeeOrderNew.getNoOtherCostsProportion()); //非车跟单费用比例 insPlyIncome.setDeptId(insFeeOrderNew.getDeptId()); this.saveRiskCode(order.getProductid(),insPlyIncome); insPlyIncome.setPayDate(insAreaCompany.getPayDate()); insPlyIncome.setSignDate(insAreaCompany.getSigningTime()); insPlyIncome.setCompanyId(insAreaCompany.getCompanyId()); insPlyIncome.setAgreementId(insFeeOrderNew.getAgreementId()); insPlyIncome.setLicenseno(order.getLicenseno()); insPlyIncome.setTaxamount(insAreaCompany.getTaxamount()); insPlyIncome.setCreateTime(LocalDate.now()); insPlyIncome.setDocumentaryFeesStatus("0"); insPlyIncome.setHandlingFeesStatus("0"); insPlyIncome.setNoNoTaxPremium(insPlyIncome.getNoNoTaxPremium()); insPlyIncome.setNoPremium(insPlyIncome.getNoPremium()); insPlyIncome.setIsNotCar("1"); insPlyIncome.setIsNotDocumentary("1"); insPlyIncome.setAllFeeValue(insFeeOrderNew.getNoOtherCostsPremiums()); this.saveByCompanyId(insFeeOrderNew ,insAreaCompany.getCompanyId(),insPlyIncome); baseMapper.insert(insPlyIncome); } private void saveNoSupervise(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) { InsPlyIncome insPlyIncome = new InsPlyIncome(); insPlyIncome.setOrderno(insFeeOrderNew.getId()); // 子订单号 insPlyIncome.setCommissionFeevalue(insFeeOrderNew.getNoSuperviseCostsPremiums());// 非车手续费 insPlyIncome.setCommissionFeerate(insFeeOrderNew.getNoSuperviseCostsProportion());// 非车手续费比例 String noPolicyno = this.setNoPolicyno(insAreaCompany); if(StringUtils.isNotEmpty(noPolicyno)){ insPlyIncome.setNoPolicyno(noPolicyno); // 非车保单号 } insPlyIncome.setDeptId(insFeeOrderNew.getDeptId()); this.saveRiskCode(order.getProductid(),insPlyIncome); insPlyIncome.setPayDate(insAreaCompany.getPayDate()); insPlyIncome.setSignDate(insAreaCompany.getSigningTime()); insPlyIncome.setCompanyId(insAreaCompany.getCompanyId()); insPlyIncome.setAgreementId(insFeeOrderNew.getAgreementId()); insPlyIncome.setLicenseno(order.getLicenseno()); insPlyIncome.setTaxamount(insAreaCompany.getTaxamount()); insPlyIncome.setCreateTime(LocalDate.now()); insPlyIncome.setDocumentaryFeesStatus("0"); insPlyIncome.setHandlingFeesStatus("0"); insPlyIncome.setIsNotCar("1"); insPlyIncome.setIsNotDocumentary("0"); insPlyIncome.setAllFeeValue(insFeeOrderNew.getNoSuperviseCostsPremiums()); insPlyIncome.setUserId(insFeeOrderNew.getUserId()); insPlyIncome.setInsuredName(order.getInsuredname()); insPlyIncome.setNoPremium(insFeeOrderNew.getNoPremium()); //非车保费 insPlyIncome.setNoNoTaxPremium(insFeeOrderNew.getNoNoTaxPremium()); //非车不含税保费 this.saveByCompanyId(insFeeOrderNew ,insAreaCompany.getCompanyId(),insPlyIncome); baseMapper.insert(insPlyIncome); } private void saveRiskCode(String productid,InsPlyIncome insPlyIncome) { if(ProductsType.PT_0330.getCode().equals(productid)){ insPlyIncome.setRiskcode(ProductsType.PT_0330.getDesc()); } if(ProductsType.PT_034001.getCode().equals(productid)){ insPlyIncome.setRiskcode(ProductsType.PT_034001.getDesc()); } if(ProductsType.PT_034002.getCode().equals(productid)){ insPlyIncome.setRiskcode(ProductsType.PT_034002.getDesc()); } if(ProductsType.PT_0330034002.getCode().equals(productid)){ insPlyIncome.setRiskcode(ProductsType.PT_0330034002.getDesc()); } if(ProductsType.PT_0330034001.getCode().equals(productid)){ insPlyIncome.setRiskcode(ProductsType.PT_0330034001.getDesc()); } } private void saveOtherAmount(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) { BigDecimal otherAmount = this.calculateTotal(insFeeOrderNew.getJqOtherCostsPremiums(), insFeeOrderNew.getSyOtherCostsPremiums(),null); BigDecimal otherProportion = this.calculateTotal(insFeeOrderNew.getSyOtherCostsProportion(), insFeeOrderNew.getJqOtherCostsProportion(),null); BigDecimal allNoTaxPremium = this.calculateTotal(insFeeOrderNew.getJqNoTaxPremium(), insFeeOrderNew.getSyNoTaxPremium(), null); //交强不含税保费 BigDecimal allPremium = this.calculateTotal(insFeeOrderNew.getJqPremium(), insFeeOrderNew.getSyPremium(), null);// 总保费 InsPlyIncome insPlyIncome = new InsPlyIncome(insFeeOrderNew.getId(),insAreaCompany.getJqpolicyno(),insAreaCompany.getSypolicyno(),null,null,insFeeOrderNew.getDeptId(),null,order.getProductid(),insAreaCompany.getPayDate(),insAreaCompany.getSigningTime(),insAreaCompany.getCompanyId(),null,insFeeOrderNew.getAgreementId(),order.getLicenseno(),insAreaCompany.getTaxamount(), allNoTaxPremium,null,otherProportion,null,otherAmount,otherAmount,null,null,LocalDate.now(),null,null,null,"0","0","0","1"); this.saveRiskCode(order.getProductid(),insPlyIncome); insPlyIncome.setTaxPremium(allPremium); insPlyIncome.setJqPremium(insFeeOrderNew.getJqPremium()); insPlyIncome.setSyPremium(insFeeOrderNew.getSyPremium()); insPlyIncome.setJqNoTaxPremium(insFeeOrderNew.getJqNoTaxPremium()); insPlyIncome.setSyNoTaxPremium(insFeeOrderNew.getSyNoTaxPremium()); insPlyIncome.setJqOtherCostsProportion(insFeeOrderNew.getJqOtherCostsProportion()); //交强跟单费比例 insPlyIncome.setSyOtherCostsProportion(insFeeOrderNew.getSyOtherCostsProportion()); //商业跟单费比例 insPlyIncome.setSyOtherCostsPremium(insFeeOrderNew.getSyOtherCostsPremiums()); insPlyIncome.setJqOtherCostsPremium(insFeeOrderNew.getJqOtherCostsPremiums()); insPlyIncome.setUserId(insFeeOrderNew.getUserId()); insPlyIncome.setInsuredName(order.getInsuredname()); this.saveByCompanyId(insFeeOrderNew ,insAreaCompany.getCompanyId(),insPlyIncome); baseMapper.insert(insPlyIncome); } private void saveInsuranceProcedures(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) { // 保险手续费 BigDecimal handlingAmount = this.calculateTotal(insFeeOrderNew.getJqSuperviseCostsPremiums(), insFeeOrderNew.getSySuperviseCostsPremiums(),null); BigDecimal handlingProportion = this.calculateTotal(insFeeOrderNew.getJqSuperviseCostsProportion(), insFeeOrderNew.getSySuperviseCostsProportion(),null); BigDecimal allNoTaxPremium = this.calculateTotal(insFeeOrderNew.getJqNoTaxPremium(), insFeeOrderNew.getSyNoTaxPremium(), null);//不含税保费 InsPlyIncome insPlyIncome = new InsPlyIncome(insFeeOrderNew.getId(),insAreaCompany.getJqpolicyno(),insAreaCompany.getSypolicyno(),null,null,insFeeOrderNew.getDeptId(),null,order.getProductid(),insAreaCompany.getPayDate(),insAreaCompany.getSigningTime(),insAreaCompany.getCompanyId(),null,insFeeOrderNew.getAgreementId(),order.getLicenseno(),insAreaCompany.getTaxamount() ,allNoTaxPremium,handlingProportion,null,handlingAmount,null,handlingAmount,null,null,LocalDate.now(),null,null,null,"0","0","0","0"); BigDecimal allTaxPremium = this.calculateTotal(insFeeOrderNew.getJqPremium(), insFeeOrderNew.getSyPremium(), null); insPlyIncome.setJqPremium(insFeeOrderNew.getJqPremium()); insPlyIncome.setSyPremium(insFeeOrderNew.getSyPremium()); insPlyIncome.setJqNoTaxPremium(insFeeOrderNew.getJqNoTaxPremium()); insPlyIncome.setSyNoTaxPremium(insFeeOrderNew.getSyNoTaxPremium()); insPlyIncome.setJqSuperviseCostsProportion(insFeeOrderNew.getJqSuperviseCostsProportion()); insPlyIncome.setJqSuperviseCostsPremiums(insFeeOrderNew.getJqSuperviseCostsPremiums()); insPlyIncome.setSySuperviseCostsProportion(insFeeOrderNew.getSySuperviseCostsProportion()); insPlyIncome.setSySuperviseCostsPremiums(insFeeOrderNew.getSySuperviseCostsPremiums()); this.saveRiskCode(order.getProductid(),insPlyIncome); insPlyIncome.setTaxPremium(allTaxPremium); insPlyIncome.setUserId(insFeeOrderNew.getUserId()); insPlyIncome.setInsuredName(order.getInsuredname()); this.saveByCompanyId(insFeeOrderNew ,insAreaCompany.getCompanyId(),insPlyIncome); baseMapper.insert(insPlyIncome); } private String setNoPolicyno(com.ydtech.modules.fnc.entity.InsAreaCompany insAreaCompany) { String crossInsurance = insAreaCompany.getCrossInsurance(); if (StringUtils.isEmpty(crossInsurance)) { return null; } try { ObjectMapper objJson = new ObjectMapper(); JsonNode jsonArryNode = objJson.readTree(crossInsurance); if (jsonArryNode.isArray() && jsonArryNode.size() > 0) { JsonNode firstNode = jsonArryNode.get(0); JsonNode policyNumberNode = firstNode.get("policyNumber"); if (policyNumberNode != null) { return policyNumberNode.asText(); } else { return firstNode.get("policy").asText(); } } } catch (IOException e) { e.printStackTrace(); // 可以打印异常信息 } return null; } private void savePinTai(InsOrders order, InsFeeOrderNew insFeeOrderNew, InsAreaCompany insAreaCompany) { BigDecimal handlingAmount = this.calculateTotal(insFeeOrderNew.getJqSuperviseCostsPremiums(), insFeeOrderNew.getSySuperviseCostsPremiums(),insFeeOrderNew.getNoSuperviseCostsPremiums()); //手续费 BigDecimal handlingProportion = this.calculateTotal(insFeeOrderNew.getJqSuperviseCostsProportion(), insFeeOrderNew.getSySuperviseCostsProportion(),insFeeOrderNew.getNoSuperviseCostsProportion());//手续费比例 BigDecimal otherAmount = this.calculateTotal(insFeeOrderNew.getJqOtherCostsPremiums(), insFeeOrderNew.getSyOtherCostsPremiums(),insFeeOrderNew.getNoOtherCostsPremiums());//跟单费 BigDecimal otherProportion = this.calculateTotal(insFeeOrderNew.getSyOtherCostsProportion(), insFeeOrderNew.getJqOtherCostsProportion(),insFeeOrderNew.getNoOtherCostsProportion()); //跟单费比例 // 不含税保费 BigDecimal allNoTaxPremium = this.calculateTotal(insFeeOrderNew.getJqNoTaxPremium(), insFeeOrderNew.getSyNoTaxPremium(), insFeeOrderNew.getNoNoTaxPremium()); BigDecimal allAmount = this.calculateTotal(otherAmount, handlingAmount, null); BigDecimal jqReceivableProportion = this.calculateTotal(insFeeOrderNew.getJqSuperviseCostsProportion(), insFeeOrderNew.getNoSuperviseCostsProportion(), null);// 交强应收 比例 BigDecimal syReceivableProportion = this.calculateTotal(insFeeOrderNew.getSySuperviseCostsProportion(), insFeeOrderNew.getSyOtherCostsProportion(), null);//商业应收比例 BigDecimal noReceivableProportion = this.calculateTotal(insFeeOrderNew.getNoSuperviseCostsProportion(), insFeeOrderNew.getNoOtherCostsProportion(), null); String noPolicyno = this.setNoPolicyno(insAreaCompany); InsPlyIncome insPlyIncome = new InsPlyIncome(insFeeOrderNew.getId(),insAreaCompany.getJqpolicyno(),insAreaCompany.getSypolicyno(), noPolicyno,null,insFeeOrderNew.getDeptId(), null,order.getProductid(),insAreaCompany.getPayDate(),insAreaCompany.getSigningTime(),insAreaCompany.getCompanyId(), null,insFeeOrderNew.getAgreementId(),order.getLicenseno(),insAreaCompany.getTaxamount(),allNoTaxPremium,handlingProportion, otherProportion,handlingAmount,otherAmount,allAmount,null,null,LocalDate.now(),null,null,null,"0","0","0","0"); insPlyIncome.setJqReceivableProportion(jqReceivableProportion); insPlyIncome.setSyReceivableProportion(syReceivableProportion); insPlyIncome.setNoReceivableProportion(noReceivableProportion); // 应收金额 = 商业手续费+商业跟单 + 交强手续费 +交强跟单费 + 非车手续费 + 非车跟单费 = allAmount insPlyIncome.setJqSuperviseCostsPremiums(insFeeOrderNew.getJqSuperviseCostsPremiums()); // 交强手续费 insPlyIncome.setSySuperviseCostsPremiums(insFeeOrderNew.getSySuperviseCostsPremiums()); // 商业手续费 insPlyIncome.setNoSuperviseCostsPremiums(insFeeOrderNew.getNoSuperviseCostsPremiums()); // 非车手续费 insPlyIncome.setJqSuperviseCostsProportion(insFeeOrderNew.getJqSuperviseCostsProportion()); //交强手续费 比例 insPlyIncome.setSySuperviseCostsProportion(insFeeOrderNew.getSySuperviseCostsProportion()); // 商业手续费 比例 insPlyIncome.setNoSuperviseCostsProportion(insFeeOrderNew.getNoSuperviseCostsProportion());// 非车手续费 比例 insPlyIncome.setJqOtherCostsProportion(insFeeOrderNew.getJqOtherCostsProportion()); //交强跟单费比例 insPlyIncome.setSyOtherCostsProportion(insFeeOrderNew.getSyOtherCostsProportion()); //商业跟单费比例 insPlyIncome.setNoOtherCostsProportion(insFeeOrderNew.getNoOtherCostsProportion()); //非车跟单费比例 insPlyIncome.setJqPremium(insFeeOrderNew.getJqPremium()); insPlyIncome.setSyPremium(insFeeOrderNew.getSyPremium()); insPlyIncome.setNoPremium(insFeeOrderNew.getNoPremium()); insPlyIncome.setJqNoTaxPremium(insFeeOrderNew.getJqNoTaxPremium()); insPlyIncome.setSyNoTaxPremium(insFeeOrderNew.getSyNoTaxPremium()); insPlyIncome.setNoNoTaxPremium(insFeeOrderNew.getNoNoTaxPremium()); insPlyIncome.setUserId(insFeeOrderNew.getUserId()); this.saveRiskCode(order.getProductid(),insPlyIncome); insPlyIncome.setInsuredName(order.getInsuredname()); this.saveByCompanyId(insFeeOrderNew ,insAreaCompany.getCompanyId(),insPlyIncome); baseMapper.insert(insPlyIncome); } private void saveByCompanyId(InsFeeOrderNew insFeeOrderNew,String companyId, InsPlyIncome insPlyIncome) { PtlAgreement ptlAgreementQueryVo = this.ptlAgreementService.getByAgreementIdNew(insFeeOrderNew.getAgreementId()); if(ObjectUtils.isNotEmpty(ptlAgreementQueryVo)){ if(StringUtils.isNotEmpty(ptlAgreementQueryVo.getPartnerCompaniesId())){ // 合作公司id String partnerCompaniesId = ptlAgreementQueryVo.getPartnerCompaniesId(); insPlyIncome.setPartnerCompaniesId(partnerCompaniesId); EsmInsCompany esmInsCompany = EsmInsCompanyService.getById(partnerCompaniesId); String name = esmInsCompany.getName(); //合作名称 insPlyIncome.setPartnerCompaniesName(name); insPlyIncome.setPartnerCompaniesId(ptlAgreementQueryVo.getPartnerCompaniesId()); } if(StringUtils.isNotEmpty(ptlAgreementQueryVo.getInsuranceCompanyId())){ String insuranceCompanyId = ptlAgreementQueryVo.getInsuranceCompanyId(); EsmInsCompany esmInsCompany = EsmInsCompanyService.getById(insuranceCompanyId); String name = esmInsCompany.getNamesimple(); //保险公司名称 简称 insPlyIncome.setCompanyName(name); } } } private BigDecimal calculateTotal(BigDecimal value1, BigDecimal value2, BigDecimal value3) { BigDecimal total = BigDecimal.ZERO; if (value1 != null) { total = total.add(value1); } if (value2 != null) { total = total.add(value2); } if (value3 != null) { total = total.add(value3); } return total; } private String judgeAgreeType(Long agreementId) { if (agreementId == null) { return null; } HttpResult byAgreementId = ptlAgreementService.getByAgreementId(agreementId.toString()); if (byAgreementId != null && ObjectUtils.isNotEmpty(byAgreementId.getData())) { PtlAgreement agreement = byAgreementId.getData().getAgreement(); String agreementType = agreement.getAgreementType(); if (StringUtils.isNotEmpty(agreementType)) { return agreementType; } } return null; } public HttpResult> queryNew(InsPlyIncomeVo insPlyIncomeVo){ try{ HashMap params = new HashMap<>(); PageInfo> pageHelper = null; PageHelper.startPage(insPlyIncomeVo.getPageNum(),insPlyIncomeVo.getPageSize()); params.put("pageNum",insPlyIncomeVo.getPageNum()); params.put("pageSize",insPlyIncomeVo.getPageSize()); params =this.saveParams(insPlyIncomeVo,params); List list= this.baseMapper.queryNew(params); pageHelper=new PageInfo(list); BasePageResult pageResult=new BasePageResult(insPlyIncomeVo.getPageNum(), insPlyIncomeVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list); return HttpResult.ok(pageResult); }catch (Exception e){ e.printStackTrace(); return HttpResult.error("查询异常"); } } @Override public HashMap totalAmount(List selectIds) { HashMap params = new HashMap<>(); params.put("selectIds",selectIds); HashMap resultMap =baseMapper.totalAmount(params); return resultMap; } @Override @Transactional public HttpResult batchPinBalance(InsPlyIncomeVo insPlyIncomeVo) { if(!CollectionUtils.isEmpty(insPlyIncomeVo.getSelectIds())){ List selectIds = insPlyIncomeVo.getSelectIds(); for(String id: selectIds){ InsPlyIncome insPlyIncome = new InsPlyIncome(); insPlyIncome.setHandlingFeesStatus("1"); insPlyIncome.setSettlementTime(LocalDate.now()); insPlyIncome.setId(id); baseMapper.updateById(insPlyIncome); } } SettlementDocumentaryLogEntity settlementDocumentaryLogEntity = new SettlementDocumentaryLogEntity(); settlementDocumentaryLogEntity.setIds(insPlyIncomeVo.getIds()); // settlementDocumentaryLogEntity.setCompanyId(insPlyIncomeVo.getCompanyId()); settlementDocumentaryLogEntity.setAmount(insPlyIncomeVo.getOtherFeevalue()); //跟单费金额 settlementDocumentaryLogEntity.setHandingAmount(insPlyIncomeVo.getCommissionFeevalue()); //手续费金额 settlementDocumentaryLogEntity.setCreateTime(new Date()); settlementDocumentaryLogService.save(settlementDocumentaryLogEntity); return HttpResult.ok(); } @Override public List totalPinAmount(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); params = this.saveParams(insPlyIncomeVo,params); List result=baseMapper.totalPinAmount(params); return result; } private HashMap saveParams(InsPlyIncomeVo insPlyIncomeVo, HashMap params) { if(ObjectUtils.isNotEmpty(insPlyIncomeVo.getStartDate())){ params.put("startDate",insPlyIncomeVo.getStartDate().toString()); } if(ObjectUtils.isNotEmpty(insPlyIncomeVo.getEndDate())){ params.put("endDate",insPlyIncomeVo.getEndDate().toString()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getOrderno())){ params.put("orderno",insPlyIncomeVo.getOrderno()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsNotDocumentary())){ params.put("isOther",insPlyIncomeVo.getIsNotDocumentary()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsNotCar())){ params.put("isNotCar",insPlyIncomeVo.getIsNotCar()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getAgreementType())){ params.put("agreementType",insPlyIncomeVo.getAgreementType()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getLicenseno())){ params.put("licenseno", insPlyIncomeVo.getLicenseno()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getUserId())){ params.put("userId",insPlyIncomeVo.getUserId()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getCompanyId())){ params.put("companyId",insPlyIncomeVo.getCompanyId()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getRiskcode())){ params.put("riskcode",insPlyIncomeVo.getRiskcode()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getPolicyno())){ params.put("policyno",insPlyIncomeVo.getPolicyno()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getSyPolicyno())){ params.put("syPolicyno",insPlyIncomeVo.getSyPolicyno()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getNoPolicyno())){ params.put("noPolicyno",insPlyIncomeVo.getNoPolicyno()); } if(insPlyIncomeVo.getCreateTime()!=null){ params.put("createTime",insPlyIncomeVo.getCreateTime().toString()); } if(insPlyIncomeVo.getSettlementTime()!=null){ params.put("settlementTime",insPlyIncomeVo.getSettlementTime().toString()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getHandlingFeesStatus())){ params.put("handlingFeesStatus",insPlyIncomeVo.getHandlingFeesStatus()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getPartnerCompaniesId())){ params.put("partnerCompaniesId",insPlyIncomeVo.getPartnerCompaniesId()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getYear())){ params.put("year",insPlyIncomeVo.getYear()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getMonth())){ params.put("month",insPlyIncomeVo.getMonth()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getDay())){ params.put("day",insPlyIncomeVo.getDay()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getSignDateEnd())){ params.put("signDateEnd",insPlyIncomeVo.getSignDateEnd()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getSignDateStart())){ params.put("signDateStart",insPlyIncomeVo.getSignDateStart()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getCompanyName())){ params.put("companyName",insPlyIncomeVo.getCompanyName()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getInsuredName())){ params.put("insuredName",insPlyIncomeVo.getInsuredName()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getPartnerCompaniesName())){ params.put("partnerCompaniesName",insPlyIncomeVo.getPartnerCompaniesName()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getDockingPerson())){ params.put("dockingPerson",insPlyIncomeVo.getDockingPerson()); } return params; } @Override public HttpResult> nonSettlementQuery(InsPlyIncomeVo insPlyIncomeVo) { try{ HashMap params = new HashMap<>(); PageInfo> pageHelper = null; PageHelper.startPage(insPlyIncomeVo.getPageNum(),insPlyIncomeVo.getPageSize()); params.put("pageNum",insPlyIncomeVo.getPageNum()); params.put("pageSize",insPlyIncomeVo.getPageSize()); if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsNotCar())){ params.put("isNotCar",insPlyIncomeVo.getIsNotCar()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsNotDocumentary())){ params.put("isOther",insPlyIncomeVo.getIsNotDocumentary()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getYear())){ params.put("year",insPlyIncomeVo.getYear()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getMonth())){ params.put("month",insPlyIncomeVo.getMonth()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getDocumentaryFeesStatus())){ params.put("documentaryFeesStatus",insPlyIncomeVo.getDocumentaryFeesStatus()); } List list= this.baseMapper.NonSettlementQuery(params); pageHelper=new PageInfo(list); BasePageResult pageResult=new BasePageResult(insPlyIncomeVo.getPageNum(), insPlyIncomeVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list); return HttpResult.ok(pageResult); }catch (Exception e){ e.printStackTrace(); return HttpResult.error("查询异常"); } } @Override public HttpResult> nonSettldetail(InsPlyIncomeVo insPlyIncomeVo) { try { String ids = insPlyIncomeVo.getIds(); ArrayList resultList = new ArrayList<>(); if (ObjectUtils.isNotEmpty(ids)) { String[] split = ids.split(","); for (int i =0; i importData(MultipartFile multipartFile) { BigDecimal totalAmount=BigDecimal.ZERO; BigDecimal totalHandingAmount=BigDecimal.ZERO; BigDecimal totalOtherAmount=BigDecimal.ZERO; HashMap params = new HashMap<>(); HashMap resultHashMap = new HashMap<>(); ArrayList> resultNoSelect = new ArrayList<>(); StringBuffer strBuilder = new StringBuffer(); try { List dtoList = ExcelEasypoiUtils.importExcel(multipartFile, InsPlyIncomeExcelDto.class, 0, 1, 1); for (InsPlyIncomeExcelDto excelItem : dtoList) { params.clear(); if(StringUtils.isNotEmpty(excelItem.getLicenseno())){ params.put("licenseno",excelItem.getLicenseno());//车牌号 } if(StringUtils.isNotEmpty(excelItem.getPolicyno())){ params.put("policyno",excelItem.getPolicyno()); //交强保单号 } if(StringUtils.isNotEmpty(excelItem.getSyPolicyno())){ params.put("syPolicyno", excelItem.getSyPolicyno());//商业保单号 } if(StringUtils.isNotEmpty(excelItem.getNoPolicyno())){ params.put("noPolicyno",excelItem.getNoPolicyno()); //非车保单号 } InsPlyIncome insPlyIncome=baseMapper.findByLicenseno(params); if(ObjectUtils.isNotEmpty(insPlyIncome)){ strBuilder.append(insPlyIncome.getId()).append(","); if(insPlyIncome.getAllFeeValue()!=null && insPlyIncome.getAllFeeValue().compareTo(BigDecimal.ZERO)!=0){ totalAmount = totalAmount.add(insPlyIncome.getAllFeeValue()); //总金额 } if(insPlyIncome.getCommissionFeevalue()!=null && insPlyIncome.getCommissionFeevalue().compareTo(BigDecimal.ZERO)!=0){ totalHandingAmount=totalHandingAmount.add(insPlyIncome.getCommissionFeevalue()); //总手续费 } if(insPlyIncome.getOtherFeevalue()!=null && insPlyIncome.getOtherFeevalue().compareTo(BigDecimal.ZERO)!=0){ totalOtherAmount=totalOtherAmount.add(insPlyIncome.getOtherFeevalue()); //总跟单费 } }else { resultNoSelect.add(params); // 添加未匹配的车牌号 } } if(strBuilder.length() >0){ String ids = strBuilder.deleteCharAt(strBuilder.length() - 1).toString(); resultHashMap.put("ids",ids); } resultHashMap.put("totalAmount",totalAmount); resultHashMap.put("totalHandingAmount",totalHandingAmount); resultHashMap.put("totalOtherAmount",totalOtherAmount); resultHashMap.put("resultList",resultNoSelect); return resultHashMap; } catch (IOException e) { throw new SystemException("导入失败!"); } } /** * * @param multipartFile * @return resultList 包含总金额 还有 未匹配表中的数据 */ @Override public HashMap bxImportData(MultipartFile multipartFile,String isNotCar) { BigDecimal totalAmount=BigDecimal.ZERO; HashMap params = new HashMap<>(); ArrayList> resultList = new ArrayList<>(); HashMap resultMap = new HashMap<>(); try { List dtoList = ExcelEasypoiUtils.importExcel(multipartFile, InsBxPlyIncomeExcelDto.class, 0, 1, 1); Integer i=0; if(!CollectionUtils.isEmpty(dtoList)){ for (InsBxPlyIncomeExcelDto excelItem : dtoList) { i=i+1; params.clear(); if(StringUtils.isNotEmpty(excelItem.getLicenseno())){ String licenseno = excelItem.getLicenseno();//车牌号 params.put("licenseno",licenseno); } if(StringUtils.isNotEmpty(excelItem.getPolicyno())){ String policyno = excelItem.getPolicyno(); //交强保单号 params.put("policyno",policyno); } if(StringUtils.isNotEmpty(excelItem.getSyPolicyno())){ String syPolicyno = excelItem.getSyPolicyno(); //商业保单号 params.put("syPolicyno",syPolicyno); } // 只查手续费 params.put("isOther","0"); params.put("isNotCar",isNotCar); InsPlyIncome insPlyIncome = baseMapper.findByBxLicenseno(params); if(i==dtoList.size()){ resultMap.put("companyId",insPlyIncome.getCompanyId()); // 保险公司id resultMap.put("partnerCompaniesId",insPlyIncome.getPartnerCompaniesId()); //合作公司id resultMap.put("agreementId",insPlyIncome.getAgreementId()); //协议id } if(ObjectUtils.isNotEmpty(insPlyIncome)){ // 比配上汇总金额 未匹配则返回到数据当中 if( insPlyIncome.getCommissionFeevalue()!=null && insPlyIncome.getCommissionFeevalue().compareTo(BigDecimal.ZERO)!=0){ totalAmount = totalAmount.add(insPlyIncome.getCommissionFeevalue()); //添加总手续费 } }else { HashMap noMatching = new HashMap<>(); if(StringUtils.isNotEmpty(excelItem.getLicenseno())){ noMatching.put("licenseno",excelItem.getLicenseno()); } if(StringUtils.isNotEmpty(excelItem.getPolicyno())){ noMatching.put("policyno",excelItem.getPolicyno()); } if(StringUtils.isNotEmpty(excelItem.getSyPolicyno())){ noMatching.put("syPolicyno",excelItem.getSyPolicyno()); } resultList.add(noMatching); } } } resultMap.put("totalAmount",totalAmount); resultMap.put("resultList",resultList); return resultMap; } catch (IOException e) { throw new SystemException("导入失败!"); } } @Override public HashMap bxImportNoData(MultipartFile multipartFile,String isNotCar) { BigDecimal totalAmount=BigDecimal.ZERO; HashMap params = new HashMap<>(); HashMap resultMap = new HashMap<>(); ArrayList> resultList = new ArrayList<>(); String ids=""; try { Integer i=0; List dtoList = ExcelEasypoiUtils.importExcel(multipartFile, InsBxNoPlyIncomeExcelDto.class, 0, 1, 1); if(!CollectionUtils.isEmpty(dtoList)){ for (InsBxNoPlyIncomeExcelDto excelItem : dtoList) { i=i+1; params.clear(); if(StringUtils.isNotEmpty(excelItem.getLicenseno())){ String licenseno = excelItem.getLicenseno();//车牌号 params.put("licenseno",licenseno); } if(StringUtils.isNotEmpty(excelItem.getNoPolicyno())){ String policyno = excelItem.getNoPolicyno(); //非车保单号 params.put("NoPolicyno",policyno); } // 只查手续费 params.put("isOther","0"); params.put("isNotCar",isNotCar); InsPlyIncome insPlyIncome = baseMapper.findByBxLicenseno(params); if(i==dtoList.size()){ resultMap.put("companyId",insPlyIncome.getCompanyId()); // 保险公司id resultMap.put("partnerCompaniesId",insPlyIncome.getPartnerCompaniesId()); //合作公司id resultMap.put("agreementId",insPlyIncome.getAgreementId()); //协议id } if(ObjectUtils.isNotEmpty(insPlyIncome)){ // 比配上汇总金额 未匹配则返回到数据当中 if( insPlyIncome.getCommissionFeevalue()!=null && insPlyIncome.getCommissionFeevalue().compareTo(BigDecimal.ZERO)!=0){ totalAmount = totalAmount.add(insPlyIncome.getCommissionFeevalue()); //添加总手续费 } }else { HashMap noMatching = new HashMap<>(); if(StringUtils.isNotEmpty(excelItem.getLicenseno())){ noMatching.put("licenseno",excelItem.getLicenseno()); } if(StringUtils.isNotEmpty(excelItem.getNoPolicyno())){ noMatching.put("NoPolicyno",excelItem.getNoPolicyno()); } resultList.add(noMatching); } } resultMap.put("totalAmount",totalAmount); resultMap.put("resultList",resultList); } return resultMap; } catch (IOException e) { throw new SystemException("导入失败!"); } } @Override public HttpResult bxOtherDetailsExcel(InsPlyIncomeVo insPlyIncomeVo, HttpServletRequest request, HttpServletResponse response) { HashMap params = new HashMap<>(); params =this.saveParams(insPlyIncomeVo,params); List insPlyIncomes = baseMapper.queryNew(params); ExportParams exportParams = new ExportParams("保险跟单明细导出", null, ExcelType.HSSF); exportParams.setStyle(ExcelStyleUtil.class); List resultList = new ArrayList<>(); for (InsPlyIncome item :insPlyIncomes){ BxOtherDetailsExcel bxOtherDetailsExcel = new BxOtherDetailsExcel(); BeanUtils.copyProperties(item, bxOtherDetailsExcel); resultList.add(bxOtherDetailsExcel); } String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } String fileName = EasyExcelUtils.downExcel(uploadPath, "保险跟单明细导出", BxOtherDetailsExcel.class, resultList); return HttpResult.ok("",uploadUrl + "excel/" + fileName); } /** * * @param insPlyIncomeVo 传参字段 * ids 通过ids中的id进行开票分组 * * @return */ @Override public HttpResult>> invicdetail(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); params =this.saveParams(insPlyIncomeVo,params); List> resultList = settlementDocumentaryFeesService.getOtherSettldetail(params); if (resultList.size() > 0) { return HttpResult.ok(resultList); } return HttpResult.ok(); } /*** * * @param insPlyIncomeVo * @param request * @param response * @return 保险非车跟单明细导出 */ @Override public HttpResult bxNoOtherDetailsExcel(InsPlyIncomeVo insPlyIncomeVo, HttpServletRequest request, HttpServletResponse response) { HashMap params = new HashMap<>(); params =this.saveParams(insPlyIncomeVo,params); List insPlyIncomes = baseMapper.queryNew(params); ExportParams exportParams = new ExportParams("保险非车跟单明细导出", null, ExcelType.HSSF); exportParams.setStyle(ExcelStyleUtil.class); List resultList = new ArrayList<>(); for (InsPlyIncome item :insPlyIncomes){ BxNoOtherDetailsExcel bxNoOtherDetailsExcel = new BxNoOtherDetailsExcel(); BeanUtils.copyProperties(item, bxNoOtherDetailsExcel); resultList.add(bxNoOtherDetailsExcel); } String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } String fileName = EasyExcelUtils.downExcel(uploadPath, "保险非车跟单明细导出", BxNoOtherDetailsExcel.class, resultList); return HttpResult.ok("",uploadUrl + "excel/" + fileName); } /** * * @param insPlyIncomeVo 开票ids * @return 返回开票号 开票金额 开票时间 */ @Override public HttpResult>> otherSettldetail(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); params =this.saveParams(insPlyIncomeVo,params); List> resultList = settlementDocumentaryFeesService.getOtherSettldetail(params); if (resultList.size() > 0) { return HttpResult.ok(resultList); } return HttpResult.ok(); } @Override public InsPlyIncome getEntityById(String id) { return baseMapper.getEntityById(id); } @Override @Transactional public void updateByEntity(InsPlyIncomeVo insPlyIncomeVo) { // 根据协议 如果是含增值税结算 用保费 * 如果是 不含税保费 InsPlyIncome insPlyIncome = new InsPlyIncome(); BeanUtils.copyProperties(insPlyIncomeVo, insPlyIncome); this.amountCalculate(insPlyIncomeVo,insPlyIncome); baseMapper.updateById(insPlyIncome); insPlyIncomeVo.setCrudStatus("2"); this.saveLog(insPlyIncomeVo); } /** * * @param insPlyIncomeVo * @param insPlyIncome * * 重新计算金额 通过比例 * 计算逻辑 交强不含税保费* 交强跟单比例 = 交强跟单金额 */ private void amountCalculate(InsPlyIncomeVo insPlyIncomeVo,InsPlyIncome insPlyIncome) { if("1".equals(insPlyIncomeVo.getAgreementType())){ //平台 // 平台 手续费 +跟单费 = 应收 手续费 = 手续费比例*保费 应收比例=手续费比例 + 跟单比例 BigDecimal jqSuperviseCostsProportion = initializationBigdecimal(insPlyIncomeVo.getJqSuperviseCostsProportion());//交强手续费比例 BigDecimal sySuperviseCostsProportion = initializationBigdecimal(insPlyIncomeVo.getSySuperviseCostsProportion()); //商业手续费比例 BigDecimal noSuperviseCostsProportion = initializationBigdecimal(insPlyIncomeVo.getNoSuperviseCostsProportion()); //非车手续费比例 BigDecimal jqOtherCostsProportion = initializationBigdecimal(insPlyIncomeVo.getJqOtherCostsProportion()); //交强跟单比例 BigDecimal syOtherCostsProportion = initializationBigdecimal(insPlyIncomeVo.getSyOtherCostsProportion()); //商业跟单比例 BigDecimal noOtherCostsProportion = initializationBigdecimal(insPlyIncomeVo.getNoOtherCostsProportion()); //非车跟单比例 BigDecimal jqPremium = initializationBigdecimal(insPlyIncomeVo.getJqPremium()); //交强保费 BigDecimal syPremium = initializationBigdecimal(insPlyIncomeVo.getSyPremium()); //商业保费 BigDecimal noPremium = initializationBigdecimal(insPlyIncomeVo.getNoPremium()); //非车保费 //手续费比例 insPlyIncome.setCommissionFeerate(this.calculateTotal(jqSuperviseCostsProportion,sySuperviseCostsProportion,noSuperviseCostsProportion)); //手续费比例 = 商业手续费比例 + 交强手续费比例 + 非车手续费比例 if(jqSuperviseCostsProportion !=null && jqPremium!=null ){ insPlyIncome.setJqSuperviseCostsPremiums(this.algorithmAmount(jqPremium,jqSuperviseCostsProportion)); //交强手续费 } if(sySuperviseCostsProportion !=null && syPremium !=null){ insPlyIncome.setSySuperviseCostsPremiums(this.algorithmAmount(syPremium,sySuperviseCostsProportion)); //商业手续费 } if(noSuperviseCostsProportion !=null && noPremium!=null){ insPlyIncome.setNoSuperviseCostsPremiums(this.algorithmAmount(noPremium,noSuperviseCostsProportion)); //非车手续费 } if(jqOtherCostsProportion !=null && jqPremium!=null ){ insPlyIncome.setJqOtherCostsPremium(this.algorithmAmount(jqPremium,jqOtherCostsProportion)); //交强跟单费 } if(syOtherCostsProportion !=null && syPremium !=null ){ insPlyIncome.setSyOtherCostsPremium(this.algorithmAmount(syPremium,syOtherCostsProportion)); //商业跟单费 } if(noOtherCostsProportion !=null && noPremium !=null){ insPlyIncome.setNoOtherCostsPremium(this.algorithmAmount(noPremium,noOtherCostsProportion)); //非车跟单费 } insPlyIncome.setCommissionFeevalue(this.calculateTotal(insPlyIncome.getJqSuperviseCostsPremiums(),insPlyIncome.getSySuperviseCostsPremiums(),insPlyIncome.getNoSuperviseCostsPremiums())); //手续费 insPlyIncome.setCommissionFeerate(this.calculateTotal(jqSuperviseCostsProportion,sySuperviseCostsProportion,noSuperviseCostsProportion)); //手续费比例 insPlyIncome.setOtherFeevalue(this.calculateTotal(insPlyIncome.getJqOtherCostsPremium(),insPlyIncome.getSyOtherCostsPremium(),insPlyIncome.getNoOtherCostsPremium())); //跟单费金额 insPlyIncome.setOtherFeerate(this.calculateTotal(jqOtherCostsProportion,syOtherCostsProportion,noOtherCostsProportion)); //跟单费比例 insPlyIncome.setAllFeeValue(this.calculateTotal(insPlyIncome.getCommissionFeevalue(),insPlyIncome.getOtherFeevalue(),null)); // 总费用 = 手续费+跟单费 //应收比例 交强应收比例=交强手续费比例+交强非跟单比例 insPlyIncome.setJqReceivableProportion(this.calculateTotal(jqSuperviseCostsProportion,jqOtherCostsProportion,null)); //交强应收 insPlyIncome.setSyReceivableProportion(this.calculateTotal(sySuperviseCostsProportion,syOtherCostsProportion,null)); //商业应收 insPlyIncome.setNoReceivableProportion(this.calculateTotal(noSuperviseCostsProportion,noOtherCostsProportion,null)); //非车应收 }else { BigDecimal jqNoTaxPremium = insPlyIncomeVo.getJqNoTaxPremium();// 交强手续费 按照思路 交强不含税保费* 交强手续费比例 =交强手续费 BigDecimal syNoTaxPremium = insPlyIncomeVo.getSyNoTaxPremium();// 商业手续费 按照思路 商业不含税保费* 商业手续费比例 =商业手续费 BigDecimal noNoTaxPremium = insPlyIncomeVo.getNoNoTaxPremium();// 非车手续费 按照思路 非车不含税保费* 非车手续费比例 =非车手续费 if(insPlyIncomeVo.getJqSuperviseCostsProportion().compareTo(BigDecimal.ZERO) != 0){ BigDecimal jqhandingFee = jqNoTaxPremium.multiply(insPlyIncomeVo.getJqSuperviseCostsProportion().divide(new BigDecimal(100))); insPlyIncome.setJqSuperviseCostsPremiums(jqhandingFee); } if(insPlyIncomeVo.getSySuperviseCostsProportion().compareTo(BigDecimal.ZERO) != 0){ BigDecimal syhandingFee = syNoTaxPremium.multiply(insPlyIncomeVo.getSySuperviseCostsProportion().divide(new BigDecimal(100))); insPlyIncome.setSySuperviseCostsPremiums(syhandingFee); } if(insPlyIncomeVo.getNoSuperviseCostsProportion().compareTo(BigDecimal.ZERO) != 0){ BigDecimal nohandingFee = noNoTaxPremium.multiply(insPlyIncomeVo.getNoSuperviseCostsProportion().divide(new BigDecimal(100))); insPlyIncome.setNoSuperviseCostsPremiums(nohandingFee); } if(insPlyIncomeVo.getJqOtherCostsProportion().compareTo(BigDecimal.ZERO) != 0){ BigDecimal jqother = jqNoTaxPremium.multiply(insPlyIncomeVo.getJqOtherCostsProportion().divide(new BigDecimal(100)));//交强跟单费 按照思路 交强不含税保费* 交强跟单比例 = 交强跟单金额 insPlyIncome.setJqOtherCostsPremium(jqother); } if(insPlyIncomeVo.getSyOtherCostsProportion().compareTo(BigDecimal.ZERO) != 0){ BigDecimal syother = syNoTaxPremium.multiply(insPlyIncomeVo.getSyOtherCostsProportion().divide(new BigDecimal(100)));//交强跟单费 按照思路 交强不含税保费* 交强跟单比例 = 交强跟单金额 insPlyIncome.setSyOtherCostsPremium(syother); } if(insPlyIncomeVo.getNoOtherCostsProportion().compareTo(BigDecimal.ZERO) != 0){ BigDecimal syother = syNoTaxPremium.multiply(insPlyIncomeVo.getNoOtherCostsProportion().divide(new BigDecimal(100)));//非车跟单费 按照思路 非车不含税保费* 非车跟单比例 = 非车跟单金额 insPlyIncome.setNoOtherCostsPremium(syother); } if("0".equals(insPlyIncomeVo.getIsNotDocumentary()) && "0".equals(insPlyIncomeVo.getIsNotCar())){ //保险 手续费 =不含税保费* 手续费比例 insPlyIncome.setCommissionFeevalue(this.calculateTotal(insPlyIncome.getJqSuperviseCostsPremiums(),insPlyIncome.getSySuperviseCostsPremiums(),null)); // 手续费 insPlyIncome.setCommissionFeerate(this.calculateTotal(insPlyIncome.getJqSuperviseCostsProportion(),insPlyIncome.getSySuperviseCostsProportion(),null));//手续费比例 insPlyIncome.setAllFeeValue(this.calculateTotal(insPlyIncome.getCommissionFeevalue(),null,null));//总金额 }else if ("1".equals(insPlyIncomeVo.getIsNotDocumentary()) && "0".equals(insPlyIncomeVo.getIsNotCar())){ //保险跟单费 交强跟单+商业跟单 insPlyIncome.setOtherFeevalue(this.calculateTotal(insPlyIncome.getJqOtherCostsPremium(),insPlyIncome.getSyOtherCostsPremium(),null)); insPlyIncome.setOtherFeerate(this.calculateTotal(insPlyIncome.getJqOtherCostsProportion(),insPlyIncome.getSyOtherCostsProportion(),null)); insPlyIncome.setAllFeeValue(this.calculateTotal(insPlyIncome.getOtherFeevalue(),null,null));//总金额 } if("0".equals(insPlyIncomeVo.getIsNotDocumentary()) && "1".equals(insPlyIncomeVo.getIsNotCar())){// 非车 insPlyIncome.setCommissionFeevalue(this.calculateTotal(insPlyIncome.getNoSuperviseCostsPremiums(),null,null)); // 非车手续费 insPlyIncome.setCommissionFeerate(this.calculateTotal(insPlyIncome.getNoSuperviseCostsProportion(),null,null)); //非车比例 insPlyIncome.setAllFeeValue(this.calculateTotal(insPlyIncome.getCommissionFeevalue(),null,null));//总金额 }else if ("1".equals(insPlyIncomeVo.getIsNotDocumentary()) && "1".equals(insPlyIncomeVo.getIsNotCar())){ //非车跟单 insPlyIncome.setOtherFeevalue(this.calculateTotal(insPlyIncome.getNoOtherCostsPremium(),null,null)); //非车跟单金额 insPlyIncome.setOtherFeerate(this.calculateTotal(insPlyIncome.getNoOtherCostsProportion(),null,null)); // 非车跟单比例 insPlyIncome.setAllFeeValue(this.calculateTotal(insPlyIncome.getOtherFeevalue(),null,null));//总金额 } } } /** * * @param value1 保费 * @param value2 比例 * @return 费用 */ private BigDecimal algorithmAmount(BigDecimal value1, BigDecimal value2) { return value1.multiply(value2.divide(new BigDecimal(100))); } private BigDecimal initializationBigdecimal(BigDecimal value) { return value != null ? value : BigDecimal.ZERO; } private void saveLog(InsPlyIncomeVo insPlyIncomeVo) { // 添加记录 SettlementDocumentaryLogEntity settlementDocumentaryLogEntity = new SettlementDocumentaryLogEntity(); settlementDocumentaryLogEntity.setCrudStatus(insPlyIncomeVo.getCrudStatus()); settlementDocumentaryLogEntity.setAmount(insPlyIncomeVo.getOtherFeevalue()); settlementDocumentaryLogEntity.setSettlementDocumentaryId(insPlyIncomeVo.getId()); settlementDocumentaryLogEntity.setAmountType("2"); settlementDocumentaryLogService.save(settlementDocumentaryLogEntity); } @Override @Transactional public HttpResult insertByEntity(InsPlyIncomeVo insPlyIncomeVo) { Long id = new SnowFlakeUtil().nextId(); InsPlyIncome insPlyIncome = new InsPlyIncome(); insPlyIncomeVo.setOrderno(id.toString()); BeanUtils.copyProperties(insPlyIncomeVo, insPlyIncome); insPlyIncome.setDocumentaryFeesStatus("0"); insPlyIncome.setHandlingFeesStatus("0"); insPlyIncome.setIsNotCar("0"); insPlyIncome.setIsNotDocumentary("1"); baseMapper.insert(insPlyIncome); insPlyIncomeVo.setId(insPlyIncome.getId()); insPlyIncomeVo.setCrudStatus("1"); this.saveLog(insPlyIncomeVo); //添加日志 HashMap params = new HashMap<>(); if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsNotCar())){ params.put("isNotCar",insPlyIncomeVo.getIsNotCar()); } params.put("isOther","1"); if(StringUtils.isNotEmpty(insPlyIncomeVo.getYear())){ params.put("year",insPlyIncomeVo.getYear()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getCompanyId())){ params.put("companyId",insPlyIncomeVo.getCompanyId()); } List list= this.baseMapper.NonSettlementQuery(params); if(!CollectionUtils.isEmpty(list)){ for (InsPlyIncome item :list){ return HttpResult.ok(item.getIds()); } } return null; } @Override @Transactional public HttpResult deleteById(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsNotCar())){ params.put("isNotCar",insPlyIncomeVo.getIsNotCar()); } params.put("isOther","1"); if(StringUtils.isNotEmpty(insPlyIncomeVo.getYear())){ params.put("year",insPlyIncomeVo.getYear()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getCompanyId())){ params.put("companyId",insPlyIncomeVo.getCompanyId()); } baseMapper.deleteById(insPlyIncomeVo.getId()); insPlyIncomeVo.setCrudStatus("3"); this.saveLog(insPlyIncomeVo); List list = this.baseMapper.NonSettlementQuery(params); if (!CollectionUtils.isEmpty(list)) { for (InsPlyIncome item : list) { return HttpResult.ok(item.getIds()); } } else { return HttpResult.ok(null); } return HttpResult.ok("删除成功"); } @Override @Transactional public void uodateBalance(InsPlyIncomeVo insPlyIncomeVo) { InsPlyIncome insPlyIncome = new InsPlyIncome(); insPlyIncomeVo.setHandlingFeesStatus("1"); insPlyIncomeVo.setSettlementTime(LocalDate.now()); BeanUtils.copyProperties(insPlyIncomeVo, insPlyIncome); baseMapper.updateById(insPlyIncome); // 生成记录 SettlementDocumentaryLogEntity settlementDocumentaryLogEntity = new SettlementDocumentaryLogEntity(); if(StringUtils.isNotEmpty(insPlyIncomeVo.getAgreementType()) && "1".equals(insPlyIncomeVo.getAgreementType())){ // 只有平台协议 才会跟单费一笔结算 settlementDocumentaryLogEntity.setAmount(insPlyIncomeVo.getOtherFeevalue()); // 跟单费金额 } settlementDocumentaryLogEntity.setHandingAmount(insPlyIncomeVo.getCommissionFeevalue()); // 手续费金额 settlementDocumentaryLogEntity.setSettlementDocumentaryId(insPlyIncomeVo.getId()); // 关联id settlementDocumentaryLogEntity.setAmountType("1"); //手续费结算 settlementDocumentaryLogEntity.setCreateTime(new Date()); settlementDocumentaryLogService.save(settlementDocumentaryLogEntity); } @Override @Transactional public HttpResult> totalQuery(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); PageInfo> pageHelper = null; if(insPlyIncomeVo.getStartDate()!=null){ params.put("startDate",insPlyIncomeVo.getStartDate().toString()); } if(insPlyIncomeVo.getEndDate()!=null){ params.put("endDate",insPlyIncomeVo.getEndDate().toString()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getYear())){ params.put("year",insPlyIncomeVo.getYear()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsNotCar())){ params.put("isNotCar",insPlyIncomeVo.getIsNotCar()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsNotDocumentary())){ params.put("isOther",insPlyIncomeVo.getIsNotDocumentary()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getDocumentaryFeesStatus())){ params.put("documentaryFeesStatus",insPlyIncomeVo.getDocumentaryFeesStatus()); } if(StringUtils.isNotEmpty(insPlyIncomeVo.getCompanyId())){ params.put("companyId",insPlyIncomeVo.getCompanyId()); } params.put("pageNum",insPlyIncomeVo.getPageNum()); params.put("pageSize",insPlyIncomeVo.getPageSize()); List list= this.baseMapper.totalQuery(params); pageHelper=new PageInfo(list); return HttpResult.ok(new BasePageResult<>(insPlyIncomeVo.getPageNum(), insPlyIncomeVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list)); } /** * * @param insPlyIncomeVo ids ins_ply_income 这个表的ids incomeIds settlement_documentary_fees 这个表的ids * @return */ /** * 跟单费结算 有分批结算的情况 * @param insPlyIncomeVo * @return */ @Override @Transactional public HttpResult batchBalance(InsPlyIncomeVo insPlyIncomeVo) { // 通过ids 查出跟单非结算单 BigDecimal allAmount = BigDecimal.ZERO; // 分批结算 SettlementDocumentaryFeesVo settlementDocumentaryFeesVo = new SettlementDocumentaryFeesVo(); if ("0".equals(insPlyIncomeVo.getInvoicingMethod())) { allAmount =insPlyIncomeVo.getInvoicCommissionFeevalue().multiply(BigDecimal.ONE.subtract(insPlyIncomeVo.getTaxPoints().divide(new BigDecimal(100)))); settlementDocumentaryFeesVo.setExpendAmount(insPlyIncomeVo.getInvoicCommissionFeevalue().multiply(BigDecimal.ONE.subtract(insPlyIncomeVo.getTaxPoints().divide(new BigDecimal(100))))); settlementDocumentaryFeesVo.setSettlementAmount(insPlyIncomeVo.getSettlementAmount()); //进账金额 } else { settlementDocumentaryFeesVo.setSettlementAmount(insPlyIncomeVo.getSettlementAmount()); //进账金额 } settlementDocumentaryFeesVo.setInvoiceId(insPlyIncomeVo.getInvoicId()); //开票号 settlementDocumentaryFeesVo.setSettlementTime(insPlyIncomeVo.getSettlementTime()); //结算时间 settlementDocumentaryFeesVo.setSettlementStatus("2"); //2为结算状态 settlementDocumentaryFeesVo.setCompanyId(insPlyIncomeVo.getCompanyId()); // 保险公司id settlementDocumentaryFeesVo.setPartnerCompaniesId(insPlyIncomeVo.getPartnerCompaniesId()); //合作公司id settlementDocumentaryFeesVo.setUnsettledAmount(insPlyIncomeVo.getInvoicCommissionFeevalue().subtract(insPlyIncomeVo.getSettlementAmount())); //未结算金额 settlementDocumentaryFeesVo.setIsNotCar(insPlyIncomeVo.getIsNotCar()); // 是否是非车 settlementDocumentaryFeesVo.setInvoicingMethod(insPlyIncomeVo.getInvoicingMethod()); //开票方式 settlementDocumentaryFeesVo.setTaxPoints(insPlyIncomeVo.getTaxPoints()); //税点 settlementDocumentaryFeesVo.setExpendAmount(insPlyIncomeVo.getExpendAmount()); //税点支出 settlementDocumentaryFeesVo.setHandlingFeesStatus(insPlyIncomeVo.getHandlingFeesStatus()); settlementDocumentaryFeesVo.setTotalAmount(insPlyIncomeVo.getInvoicCommissionFeevalue()); settlementDocumentaryFeesVo.setCreateTime(LocalDate.now()); settlementDocumentaryFeesVo.setParentId(insPlyIncomeVo.getId()); settlementDocumentaryFeesService.inertSettle(settlementDocumentaryFeesVo); return HttpResult.ok(); } /** * * @param insPlyIncomeVo * @return */ @Override public List totalBxAmount(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); params=this.saveParams(insPlyIncomeVo,params); params.remove("handlingFeesStatus"); List resultList = baseMapper.totalBxAmount(params); // 数据库数据太多是 用sql拼接id会丢失 所以只能逻辑拼接 List idList=baseMapper.getIncomeIdList(params); if(!CollectionUtils.isEmpty(idList) && !CollectionUtils.isEmpty(resultList)){ this.splicingIds(idList,resultList); } return resultList; } /** * * @param idList 要开票的数据集合 * @param resultList 总返回数据 */ private void splicingIds(List idList, List resultList) { // 使用Map来存储agreementId到其id列表的映射 Map> idMap = new HashMap<>(); for (InsPlyIncome idItem : idList) { String partnerCompaniesId = idItem.getPartnerCompaniesId(); idMap.computeIfAbsent(partnerCompaniesId, k -> new ArrayList<>()).add(idItem.getId()); } for (InsPlyIncome resultItem : resultList) { List ids = idMap.getOrDefault(resultItem.getPartnerCompaniesId(), Collections.emptyList()); String idsString = String.join(",", ids); resultItem.setIds(idsString); } } /** * * @param insPlyIncomeVo * @return 保险手续费改成多次结算 */ @Override @Transactional public HttpResult batchInvoicing(InsPlyIncomeVo insPlyIncomeVo) { insPlyIncomeVo.setNoInvoicCommissionFeevalue(insPlyIncomeVo.getTotalAmount()); insPlyIncomeVo.setOtherFeevalue(insPlyIncomeVo.getTotalAmount()); insPlyIncomeVo.setHandlingFeesStatus("0"); // 0手续费 1 跟单费 insPlyIncomeVo.setIsNotCar(insPlyIncomeVo.getIsNotCar()); insPlyIncomeVo.setSettlementAmount(insPlyIncomeVo.getTotalAmount()); insPlyIncomeVo.setContractId(insPlyIncomeVo.getInvoicId()); this.batchInvoic(insPlyIncomeVo); return HttpResult.ok(); } @Override public HttpResult queryInvoicing(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); params = this.saveParams(insPlyIncomeVo, params); InsPlyIncome result= baseMapper.queryInvoicing(params); //总金额 params.put("handlingFeesStatus","0"); InsPlyIncome noResult= baseMapper.queryInvoicing(params); //未结算金额 result.setReadyCommissionFeevalue(noResult.getCommissionFeevalue()); return HttpResult.ok(result); } @Override public HttpResult batchBxBalance(InsPlyIncomeVo insPlyIncomeVo) { // 分批结算 SettlementDocumentaryFeesVo settlementDocumentaryFeesVo = new SettlementDocumentaryFeesVo(); if ("0".equals(insPlyIncomeVo.getInvoicingMethod())) { settlementDocumentaryFeesVo.setExpendAmount(insPlyIncomeVo.getInvoicCommissionFeevalue().multiply(BigDecimal.ONE.subtract(insPlyIncomeVo.getTaxPoints().divide(new BigDecimal(100))))); settlementDocumentaryFeesVo.setSettlementAmount(insPlyIncomeVo.getSettlementAmount()); //进账金额 } else { settlementDocumentaryFeesVo.setSettlementAmount(insPlyIncomeVo.getSettlementAmount()); //进账金额 } settlementDocumentaryFeesVo.setInvoiceId(insPlyIncomeVo.getInvoicId()); //开票号 settlementDocumentaryFeesVo.setSettlementTime(insPlyIncomeVo.getSettlementTime()); //结算时间 settlementDocumentaryFeesVo.setSettlementStatus("2"); //2为结算状态 settlementDocumentaryFeesVo.setCompanyId(insPlyIncomeVo.getCompanyId()); // 保险公司id settlementDocumentaryFeesVo.setPartnerCompaniesId(insPlyIncomeVo.getPartnerCompaniesId()); //合作公司id settlementDocumentaryFeesVo.setIsNotCar(insPlyIncomeVo.getIsNotCar()); // 是否是非车 settlementDocumentaryFeesVo.setInvoicingMethod(insPlyIncomeVo.getInvoicingMethod()); //开票方式 settlementDocumentaryFeesVo.setTaxPoints(insPlyIncomeVo.getTaxPoints()); //税点 settlementDocumentaryFeesVo.setExpendAmount(insPlyIncomeVo.getExpendAmount()); //税点支出 settlementDocumentaryFeesVo.setTotalAmount(insPlyIncomeVo.getInvoicCommissionFeevalue()); settlementDocumentaryFeesVo.setHandlingFeesStatus("0"); settlementDocumentaryFeesVo.setParentId(insPlyIncomeVo.getId()); settlementDocumentaryFeesVo.setCreateTime(LocalDate.now()); settlementDocumentaryFeesService.inertSettle(settlementDocumentaryFeesVo); return HttpResult.ok(); } @Override public HttpResult querySettInvoicing(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); params = this.saveParams(insPlyIncomeVo, params); InsPlyIncome insPlyIncome = baseMapper.queryInvoicing(params); //已经开票 return HttpResult.ok(insPlyIncome); } /** * * @param insPlyIncomeVo * @return */ @Override public HttpResult> allOtherAmount(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); params = this.saveParams(insPlyIncomeVo, params); List result = baseMapper.allOtherAmount(params); List> otherIds = baseMapper.getOtherIds(params); List> invoicIds = settlementDocumentaryFeesService.getInvoicIds(params); this.splicingOtherIds(result,otherIds,invoicIds ); return HttpResult.ok(result); } /** * * @param result 返回的数据 * @param otherIds ins_ply_income 跟单费 * @param invoicIds settlement_documentary_fees 开票ids */ private void splicingOtherIds(List result, List> otherIds, List> invoicIds) { // 创建两个映射来分别存储companyId到ids和setIncomeIds的映射 Map> companyIdToIdsMap = new HashMap<>(); Map> companyIdToSetIncomeIdsMap = new HashMap<>(); // 处理otherIds,填充companyId到ids的映射 for (HashMap idMap : otherIds) { String partnerCompaniesId = (String) idMap.get("partnerCompaniesId"); String id = idMap.get("id").toString(); // 假设id是一个String,而不是List if (partnerCompaniesId != null && id != null) { companyIdToIdsMap.computeIfAbsent(partnerCompaniesId, k -> new ArrayList<>()).add(id); // 将id添加到列表中 } } // 处理invoicIds,填充companyId到setIncomeIds的映射(假设结构相同) for (HashMap idMap : invoicIds) { String partnerCompaniesId = (String) idMap.get("partnerCompaniesId"); String setIncomeId = idMap.get("id").toString(); // 假设这里也是单个id,键名可能不同,例如"setIncomeId" if (partnerCompaniesId != null && setIncomeId != null) { companyIdToSetIncomeIdsMap.computeIfAbsent(partnerCompaniesId, k -> new ArrayList<>()).add(setIncomeId); } } // 遍历result列表,为每个InsPlyIncome对象设置拼接后的ids和incomeIds for (InsPlyIncome resultItem : result) { String partnerCompaniesId = resultItem.getPartnerCompaniesId(); List ids = companyIdToIdsMap.getOrDefault(partnerCompaniesId, Collections.emptyList()); List setIncomeIds = companyIdToSetIncomeIdsMap.getOrDefault(partnerCompaniesId, Collections.emptyList()); // 合并ids和setIncomeIds(如果需要,可以先去重),但在此处我们直接拼接 String idsString = String.join(",", ids); String incomeIdsString = String.join(",", setIncomeIds); // 设置拼接后的ids和incomeIds到InsPlyIncome对象中 resultItem.setIds(idsString); resultItem.setIncomeIds(incomeIdsString); // 假设InsPlyIncome有这个方法 } } @Override @Transactional public HttpResult batchInvoic(InsPlyIncomeVo insPlyIncomeVo) { // 通过ids 查出跟单非结算单 String ids = insPlyIncomeVo.getIds(); // if(StringUtils.isNotEmpty(ids)){ // String[] split = ids.split(","); // for (int i =0; i params = new HashMap<>(); params =this.saveParams(insPlyIncomeVo,params); List insPlyIncomes = baseMapper.queryNew(params); ExportParams exportParams = new ExportParams("平台手续费", null, ExcelType.HSSF); exportParams.setStyle(ExcelStyleUtil.class); List resultList = new ArrayList<>(); for (InsPlyIncome item :insPlyIncomes){ SettlementFeesExcel bxSettlementFeesExcel = new SettlementFeesExcel(); BeanUtils.copyProperties(item, bxSettlementFeesExcel); if("1".equals(item.getHandlingFeesStatus())){ bxSettlementFeesExcel.setHandlingFeesStatus("已结算"); }else { bxSettlementFeesExcel.setHandlingFeesStatus("未结算"); } resultList.add(bxSettlementFeesExcel); } String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } String fileName = EasyExcelUtils.downExcel(uploadPath, "平台手续费导出", SettlementFeesExcel.class, resultList); return HttpResult.ok("",uploadUrl + "excel/" + fileName); } @Override public HttpResult bxHandlingexcel(InsPlyIncomeVo insPlyIncomeVo, HttpServletRequest request, HttpServletResponse response) { HashMap params = new HashMap<>(); params =this.saveParams(insPlyIncomeVo,params); List insPlyIncomes = baseMapper.queryNew(params); ExportParams exportParams = new ExportParams("保险手续费", null, ExcelType.HSSF); exportParams.setStyle(ExcelStyleUtil.class); List resultList = new ArrayList<>(); for (InsPlyIncome item :insPlyIncomes){ BxSettlementFeesExcel bxSettlementFeesExcel = new BxSettlementFeesExcel(); LocalDateTime signDate = item.getSignDate(); BeanUtils.copyProperties(item, bxSettlementFeesExcel); resultList.add(bxSettlementFeesExcel); } String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } String fileName = EasyExcelUtils.downExcel(uploadPath, "保险手续费导出", BxSettlementFeesExcel.class, resultList); return HttpResult.ok("",uploadUrl + "excel/" + fileName); } @Override public HttpResult bxOtherExcel(InsPlyIncomeVo insPlyIncomeVo, HttpServletRequest request, HttpServletResponse response) { HashMap params = new HashMap<>(); params =this.saveParams(insPlyIncomeVo,params); params.put("agreementType","2"); params.put("isOther","1"); params.put("isNotCar","0"); List insPlyIncomes = baseMapper.allOtherAmount(params); ExportParams exportParams = new ExportParams("跟单费导出", null, ExcelType.HSSF); exportParams.setStyle(ExcelStyleUtil.class); List resultList = new ArrayList<>(); for (InsPlyIncome item :insPlyIncomes){ BxOtherExcel bxSettlementFeesExcel = new BxOtherExcel(); BeanUtils.copyProperties(item, bxSettlementFeesExcel); resultList.add(bxSettlementFeesExcel); } String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { try { Files.createDirectories(path); } catch (IOException e) { e.printStackTrace(); } } String fileName = EasyExcelUtils.downExcel(uploadPath, "跟单费导出", BxOtherExcel.class, resultList); return HttpResult.ok("",uploadUrl + "excel/" + fileName); } @Override public InsPlyIncome bxTotalAmount(InsPlyIncomeVo insPlyIncomeVo) { HashMap params = new HashMap<>(); params = this.saveParams(insPlyIncomeVo, params); InsPlyIncome totalledAmount =baseMapper.bxTotalAmount(params); //总金额 return totalledAmount; } }