package com.ydtech.modules.fnc.service.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ydtech.core.page.HttpResult; import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity; import com.ydtech.modules.admin.model.po.SysUserAccountHistory; import com.ydtech.modules.fnc.entity.InsPlyIncome; import com.ydtech.modules.fnc.dao.InsPlyIncomeMapper; 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.order.entity.BasePageResult; import com.ydtech.modules.order.entity.InsAreaCompany; 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.protocols.entity.po.InsFeeOrderNew; import com.ydtech.modules.protocols.service.InsFeeOrderNewService; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; import java.util.HashMap; import java.util.List; /** *

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

* * @author gws * @since 2024-01-05 */ @Service public class InsPlyIncomeServiceImpl extends ServiceImpl implements InsPlyIncomeService { @Autowired private InsOrdersService insOrdersService; @Autowired private InsAreaCompanyService insAreaCompanyService; @Autowired private InsFeeOrderNewService insFeeOrderNewService; @Autowired private SettlementDocumentaryFeesService settlementDocumentaryFeesService; @Autowired private SettlementDocumentaryLogService settlementDocumentaryLogService; 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 saveBalance(String companyId, String orderno) { InsOrders insOrders = insOrdersService.getById(orderno); InsAreaCompany insAreaCompany = insAreaCompanyService.getById(companyId); InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getInsFeeOrderNewByCompanyId(companyId); this.saveBalanc(insFeeOrderNew, insOrders, insAreaCompany); } private void saveBalanc(InsFeeOrderNew insFeeOrderNew, InsOrders insOrders, InsAreaCompany insAreaCompany) { StringBuffer stringBuffer = new StringBuffer(); InsPlyIncome insPlyIncome = new InsPlyIncome(); if (ObjectUtils.isNotEmpty(insAreaCompany)) { // 使用链式条件判断来减少嵌套 if (StringUtils.isNotEmpty(insAreaCompany.getJqpolicyno())) { stringBuffer.append(insAreaCompany.getJqpolicyno()); if (StringUtils.isNotEmpty(insAreaCompany.getSypolicyno())) { stringBuffer.append(","); stringBuffer.append(insAreaCompany.getSypolicyno()); } } else if (StringUtils.isNotEmpty(insAreaCompany.getSypolicyno())) { // 如果jqpolicyno为空但sypolicyno不为空,则只添加sypolicyno stringBuffer.append(insAreaCompany.getSypolicyno()); } } String policyno = stringBuffer.toString(); // 保单号 insPlyIncome.setOrderno(insOrders.getOrderno()); insPlyIncome.setPolicyno(policyno); insPlyIncome.setDeptId(insFeeOrderNew.getDeptId()); insPlyIncome.setRiskcode(insOrders.getProductid()); insPlyIncome.setPayDate(insAreaCompany.getPayDate()); insPlyIncome.setSignDate(insAreaCompany.getSigningTime()); insPlyIncome.setCompanyId(insAreaCompany.getCompanyId()); insPlyIncome.setAgreementId(insFeeOrderNew.getAgreementId()); insPlyIncome.setLicenseno(insOrders.getLicenseno()); insPlyIncome.setTaxamount(insAreaCompany.getTaxamount()); BigDecimal bigDecimal = this.sumAmount(insFeeOrderNew.getJqNoTaxPremium(), insFeeOrderNew.getSyNoTaxPremium(), insFeeOrderNew.getNoNoTaxPremium()); // 不含保费 insPlyIncome.setNoTaxPremium(bigDecimal); // 手续费比例 BigDecimal CostsProportion = this.sumAmount(insFeeOrderNew.getJqSuperviseCostsProportion(), insFeeOrderNew.getSySuperviseCostsProportion(), insFeeOrderNew.getNoSuperviseCostsProportion()); insPlyIncome.setCommissionFeerate(CostsProportion); // 其他费用比例 BigDecimal OtherCostsProportion = this.sumAmount(insFeeOrderNew.getJqOtherCostsProportion(), insFeeOrderNew.getSyOtherCostsProportion(), insFeeOrderNew.getNoOtherCostsProportion()); insPlyIncome.setOtherFeerate(OtherCostsProportion); // 手续费金额 BigDecimal SuperviseCostsPremiums = this.sumAmount(insFeeOrderNew.getJqSuperviseCostsPremiums(), insFeeOrderNew.getSySuperviseCostsPremiums(), insFeeOrderNew.getNoSuperviseCostsPremiums()); insPlyIncome.setCommissionFeevalue(SuperviseCostsPremiums); // 其他费用金额 BigDecimal OtherCostsPremiums = this.sumAmount(insFeeOrderNew.getJqOtherCostsPremiums(), insFeeOrderNew.getSyOtherCostsPremiums(), insFeeOrderNew.getNoOtherCostsPremiums()); insPlyIncome.setOtherFeevalue(OtherCostsPremiums); insPlyIncome.setAllFeeValue(SuperviseCostsPremiums.add(OtherCostsPremiums)); insPlyIncome.setCreateTime(LocalDateTime.now()); insPlyIncome.setDocumentaryFeesStatus("0"); insPlyIncome.setHandlingFeesStatus("0"); baseMapper.insert(insPlyIncome); } private BigDecimal sumAmount(BigDecimal amount1, BigDecimal amount2, BigDecimal amount3) { BigDecimal jqNoTaxPremium = (amount1 != null) ? amount1 : BigDecimal.ZERO; BigDecimal syNoTaxPremium = (amount2 != null) ? amount2 : BigDecimal.ZERO; BigDecimal noNoTaxPremium = (amount3 != null) ? amount3 : BigDecimal.ZERO; return jqNoTaxPremium.add(syNoTaxPremium).add(noNoTaxPremium); } 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.put("startDate",insPlyIncomeVo.getStartDate().toString()); params.put("endDate",insPlyIncomeVo.getEndDate().toString()); 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 @Transactional public void uodateBalance(InsPlyIncomeVo insPlyIncomeVo) { InsPlyIncome insPlyIncome = new InsPlyIncome(); BeanUtils.copyProperties(insPlyIncomeVo, insPlyIncome); baseMapper.uopdateByOrderno(insPlyIncome); // 生成记录 SettlementDocumentaryLogEntity settlementDocumentaryLogEntity = new SettlementDocumentaryLogEntity(); settlementDocumentaryLogEntity.setAmount(insPlyIncomeVo.getCommissionFeevalue()); // 手续费金额 settlementDocumentaryLogEntity.setSettlementDocumentaryId(insPlyIncomeVo.getOrderno()); // 关联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; params.put("startDate",insPlyIncomeVo.getStartDate().toString()); params.put("endDate",insPlyIncomeVo.getEndDate().toString()); // 判断非跟单结算日期是否已经存在 String resultDate = this.JudgingDate(params); if(StringUtils.isNotEmpty(resultDate)){ return HttpResult.error("该时间段已近有单据做过结算,请结算"); } 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)); } private String JudgingDate(HashMap params) { if(ObjectUtils.isNotEmpty(params.get("startDate")) && ObjectUtils.isNotEmpty(params.get("endDate")) ){ String checkResult = settlementDocumentaryFeesService.checkDate(params); if(StringUtils.isNotEmpty(checkResult)){ return checkResult; } } return null; } @Override @Transactional public void batchBalance(InsPlyIncomeVo insPlyIncomeVo) { // 生成新数据 SettlementDocumentaryFeesVo settlementDocumentaryFeesVo = new SettlementDocumentaryFeesVo(); settlementDocumentaryFeesVo.setTotalAmount(insPlyIncomeVo.getTotAmount()); settlementDocumentaryFeesVo.setTotalOrders(insPlyIncomeVo.getTotalorders()); settlementDocumentaryFeesVo.setTimeFrame(insPlyIncomeVo.getTimeFrame()); settlementDocumentaryFeesVo.setCreateTime(LocalDateTime.now()); settlementDocumentaryFeesVo.setStartTime(insPlyIncomeVo.getStartDate().atStartOfDay()); settlementDocumentaryFeesVo.setEndTime(insPlyIncomeVo.getEndDate().atStartOfDay()); settlementDocumentaryFeesVo.setSettlementAmount(insPlyIncomeVo.getSettlementAmount());// 结算金额 settlementDocumentaryFeesVo.setUnsettledAmount(insPlyIncomeVo.getTotAmount().subtract(insPlyIncomeVo.getSettlementAmount())); //未结算金额 settlementDocumentaryFeesService.inertSettle(settlementDocumentaryFeesVo); // } }