From 85f9ba60b55be46520f6646ff0d092409a411f61 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 05 六月 2023 17:51:39 +0800
Subject: [PATCH] (个税)税前代码提交
---
ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml | 5 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java | 25 ++++----
ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java | 66 ++++++++++++++++++++++
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java | 11 ++-
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyVO.java | 24 ++++++++
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java | 18 ++++-
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java | 24 ++++++++
7 files changed, 154 insertions(+), 19 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
index 7c749f2..e75e0ff 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
@@ -3,16 +3,8 @@
import java.io.*;
import java.util.*;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.constant.HttpStatus;
-import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.domain.FunddetailReqVo;
-import com.ruoyi.project.domain.ServiceFund;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-import io.lettuce.core.dynamic.annotation.Param;
+import com.ruoyi.project.domain.vo.TaxMoneyVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -137,12 +129,21 @@
@ApiOperation("鏍规嵁鍙楃泭浜虹紪鍙疯幏鍙栬垂鐢ㄧ敵璇锋槑缁嗕俊鎭�")
@PostMapping("/getDataBybeneficiaryNo")
public AjaxResult getDataBybeneficiaryNo(@RequestBody FunddetailReqVo funddetailReqVo) {
-// if (StringUtils.isEmpty(funddetailReqVo.getBeneficiaryNo())) {
-// return AjaxResult.error("鍙楃泭浜虹紪鍙蜂笉鑳戒负绌�");
-// }
List<ServiceFunddetail> dataBybeneficiaryNo = serviceFunddetailService.getDataBybeneficiaryNo(funddetailReqVo);
return AjaxResult.success(dataBybeneficiaryNo);
}
+ /**
+ * 鏍规嵁鍙楃泭浜虹紪鍙疯幏鍙栫◣璐归噾棰�
+ *
+ * @param taxMoneyVo 鍙楃泭浜虹紪鍙�
+ * @return
+ */
+ @ApiOperation("鏍规嵁鍙楃泭浜虹紪鍙疯幏鍙栫◣璐归噾棰�")
+ @PostMapping("/getTaxBeforeByBeneFiciaryNo")
+ public AjaxResult getTaxBeforeByBeneFiciaryNo(@RequestBody TaxMoneyVO taxMoneyVo) {
+ return AjaxResult.success(serviceFunddetailService.getTaxBeforeByBeneFiciaryNo(taxMoneyVo));
+ }
+
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
new file mode 100644
index 0000000..3a78e57
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
@@ -0,0 +1,66 @@
+package com.ruoyi.common.tax;
+
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鍔冲姟鎶ラ叕涓◣璁$畻瑙勫垯 (鍙兘涓嶇瓟鍏叡鐢ㄦ硶锛岀敤鍓嶅厛鐪嬬湅鏄惁閫傚悎)
+ *
+ * @author ls
+ */
+public class TaxtUtils {
+ /**
+ * 鍒嗛殧绗�
+ */
+ public static final String SEPARATOR = ",";
+
+ /**
+ * 鑾峰彇绋庨噾
+ *
+ * @param money 鎶ラ叕 (绋庡墠)
+ */
+ public static String getTaxation(BigDecimal money) {
+ //褰揦<=800鏃讹紝涓◣T=0
+ BigDecimal taxMoney = new BigDecimal(0.0);
+
+ //褰�800<X<=4000鏃讹紝涓◣T=(X-800)*20%
+ if (money.doubleValue() > 800 && money.doubleValue() <= 4000) {
+ BigDecimal subtract = money.subtract(new BigDecimal(800));
+ taxMoney = subtract.multiply(new BigDecimal(0.2));
+ }
+
+ BigDecimal multiply = money.multiply(new BigDecimal(0.8));
+ // 褰揦>4000鏃�
+ //(1)褰揦*(1-20%)<=20000鏃讹紝涓◣T=X*(1-20%)*20%
+ if (money.doubleValue() > 4000 && multiply.doubleValue() <= 20000) {
+ taxMoney = multiply.multiply(new BigDecimal(0.8));
+ }
+
+ //(2)褰�20000<X*(1-20%)<=50000鏃讹紝涓◣T=X*(1-20%)*30%-2000
+ if (multiply.doubleValue() > 20000 && multiply.doubleValue() <= 50000) {
+ taxMoney = multiply.multiply(new BigDecimal(0.3)).subtract(new BigDecimal(2000));
+ }
+
+ //X*(1-20%)>50000鏃讹紝涓◣T=X*(1-20%)*40%-7000
+ if (multiply.doubleValue() > 50000) {
+ taxMoney = multiply.multiply(new BigDecimal(0.4)).subtract(new BigDecimal(7000));
+ }
+ DecimalFormat decimalFormat = new DecimalFormat("#.00");
+ String format = decimalFormat.format(taxMoney);
+ return format;
+ }
+
+ public static void main(String[] args) {
+ String taxation = getTaxation(new BigDecimal(70000));
+ System.out.println(taxation);
+ }
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyVO.java
new file mode 100644
index 0000000..0debe77
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyVO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.project.domain.vo;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class TaxMoneyVO extends BaseEntity {
+
+ /**
+ * 鍙楃泭浜虹紪鍙�
+ */
+ private String beneficiaryNo;
+
+ /**
+ * 宸ヨ祫
+ */
+ private Double money;
+
+ /**
+ * 璐圭敤鍒涘缓鏃堕棿
+ */
+ private String startTime;
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
index f7099c6..4ab866a 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
@@ -2,20 +2,23 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
import java.util.List;
import com.ruoyi.project.domain.FunddetailReqVo;
import com.ruoyi.project.domain.ServiceFunddetail;
+import com.ruoyi.project.domain.vo.TaxMoneyVO;
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 璐圭敤鐢宠鏄庣粏Mapper鎺ュ彛
- *
+ *
* @author ruoyi
* @date 2022-01-25
*/
-public interface ServiceFunddetailMapper extends BaseMapper<ServiceFunddetail>
-{
+@Mapper
+public interface ServiceFunddetailMapper extends BaseMapper<ServiceFunddetail> {
/**
* 鏌ヨ璐圭敤鐢宠鏄庣粏鍒楄〃
*
@@ -41,4 +44,6 @@
int countItem(@Param("fundid") Long fundid, @Param("itemid") Long itemid);
public List<ServiceFunddetail> getDataBybeneficiaryNo(FunddetailReqVo funddetailReqVo);
+
+ List<ServiceFunddetail> getTaxBeforeByBeneFiciaryNo(TaxMoneyVO taxMoneyV);
}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java
index 1d18a27..27ef39d 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java
@@ -1,24 +1,26 @@
package com.ruoyi.project.service;
import java.util.List;
+
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.project.domain.FunddetailReqVo;
import com.ruoyi.project.domain.ServiceFunddetail;
+import com.ruoyi.project.domain.vo.TaxMoneyVO;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 璐圭敤鐢宠鏄庣粏Service鎺ュ彛
- *
+ *
* @author ruoyi
* @date 2022-01-25
*/
-public interface IServiceFunddetailService extends IService<ServiceFunddetail>
-{
+public interface IServiceFunddetailService extends IService<ServiceFunddetail> {
/**
* 鏌ヨ璐圭敤鐢宠鏄庣粏鍒楄〃
- *
+ *
* @param serviceFunddetail 璐圭敤鐢宠鏄庣粏
* @return 璐圭敤鐢宠鏄庣粏闆嗗悎
*/
@@ -29,6 +31,14 @@
*/
List<ServiceFunddetail> getDataBybeneficiaryNo(FunddetailReqVo funddetailReqVo);
+ /**
+ * 鏍规嵁鍙楃泭浜虹紪鍙疯幏鍙栫◣璐归噾棰�
+ *
+ * @param taxMoneyVo
+ * @return
+ */
+ Double getTaxBeforeByBeneFiciaryNo(TaxMoneyVO taxMoneyVo);
+
List<ServiceFunddetail> getAllDetailsByFDIDLW(Long id);
List<ServiceFunddetail> getAllDetailsByFDIDSH(Long id);
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
index 35637c2..32b0637 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
@@ -1,11 +1,16 @@
package com.ruoyi.project.service.impl;
+import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
+import java.util.Date;
import java.util.List;
+import com.ruoyi.common.tax.TaxtUtils;
import com.ruoyi.project.domain.*;
+import com.ruoyi.project.domain.vo.TaxMoneyVO;
import com.ruoyi.project.mapper.ServiceFundMapper;
+import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -89,6 +94,25 @@
}
@Override
+ public Double getTaxBeforeByBeneFiciaryNo(TaxMoneyVO taxMoneyVo) {
+ List<ServiceFunddetail> taxationByBeneFiciaryNo = serviceFunddetailMapper.getTaxBeforeByBeneFiciaryNo(taxMoneyVo);
+ if (CollectionUtils.isEmpty(taxationByBeneFiciaryNo) && taxMoneyVo.getMoney() == 0) {
+ //閮戒负0浜嗭紝灏辨病鏈夊繀瑕佸啀璁$畻浜�
+ return 0.00;
+ }
+ double sum = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getAmount).sum();
+ sum = sum + new Double(taxMoneyVo.getMoney());
+ //鍔犱笂鏈钖叕鐨勪釜绋�
+ String taxation = TaxtUtils.getTaxation(new BigDecimal(sum));
+ //涓嶅姞鏈钖叕鐨勪釜绋�
+ Double totalScore = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getTaxamount).sum();
+
+ Double tax = Double.valueOf(taxation) - totalScore;
+ return tax;
+ }
+
+
+ @Override
public List<ServiceFunddetail> getAllDetailsByFDIDLW(Long id) {
return serviceFunddetailMapper.getAllDetailsByFDIDLW(id);
}
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
index 3090737..94e6adc 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
@@ -229,5 +229,10 @@
</select>
+ <select id="getTaxBeforeByBeneFiciaryNo" parameterType="com.ruoyi.project.domain.vo.TaxMoneyVO"
+ resultMap="ServiceFunddetailResult">
+ <include refid="selectServiceFunddetailVo"/>
+ where create_time like concat(#{startTime}, '%') and beneficiaryNo=#{beneficiaryNo}
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3