ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
@@ -648,6 +648,7 @@ return toAjax(false); } for (ServiceFund sf : infoByInfoIdList) { sf.setApplyTime(new Date()); //如果等于100,说明已经走到医院财务那边了;财务那边取数据是从分享表取,所以,这里直接往分享表里添加数据就行了 if (sf.getBackflowlevel() != null && sf.getBackflowlevel() == 199) { //将fund表的审核状态改成100 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
@@ -221,10 +221,11 @@ //@PreAuthorize("@ss.hasPermi('project:reimbursement:add')") @Log(title = "报销申请", businessType = BusinessType.INSERT) @PostMapping @RepeatSubmit @RepeatSubmit @Options(useGeneratedKeys = true, keyProperty = "id") public AjaxResult add(@RequestBody ServiceReimbursement serviceReimbursement) { if (!Objects.isNull(serviceReimbursement)) { serviceReimbursement.setCreateTime(new Date()); serviceReimbursement.setCheckstatus(serviceReimbursement.getCheckstatus() == null ? 1 : serviceReimbursement.getCheckstatus()); boolean b = serviceReimbursementService.save(serviceReimbursement); Long id = serviceReimbursement.getId(); @@ -242,6 +243,7 @@ @PostMapping("/travelexpensereport") public AjaxResult travelexpensereport(@RequestBody CheckFundVO checkFundVO) { ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid()); serviceReimbursement.setApplyTime(new Date()); //如果等于100,说明已经走到医院财务那边了;财务那边取数据是从分享表取,所以,这里直接往分享表里添加数据就行了; if (!Objects.isNull(serviceReimbursement) && serviceReimbursement.getBackflowlevel() != null) { if (serviceReimbursement.getBackflowlevel() == 100 || serviceReimbursement.getBackflowlevel() == 199) { ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.Collection; import java.util.List; @@ -31,32 +32,35 @@ */ public static String getTaxation(BigDecimal money) { //当X<=800时,个税T=0 BigDecimal taxMoney = new BigDecimal(0.0); BigDecimal taxMoney = BigDecimal.valueOf(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)); taxMoney = subtract.multiply(BigDecimal.valueOf(0.2)); } BigDecimal multiply = money.multiply(new BigDecimal(0.8)); BigDecimal multiply = money.multiply(BigDecimal.valueOf(0.8)); // 当X>4000时 //(1)当X*(1-20%)<=20000时,个税T=X*(1-20%)*20% if (money.doubleValue() > 4000 && multiply.doubleValue() <= 20000) { taxMoney = multiply.multiply(new BigDecimal(0.2)); taxMoney = multiply.multiply(BigDecimal.valueOf(0.2)); } //(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)); taxMoney = multiply.multiply(BigDecimal.valueOf(0.3)).subtract(BigDecimal.valueOf(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)); taxMoney = multiply.multiply(BigDecimal.valueOf(0.4)).subtract(BigDecimal.valueOf(7000)); } DecimalFormat decimalFormat = new DecimalFormat("#.00"); DecimalFormat decimalFormat = new DecimalFormat("#0.00"); //进一法 decimalFormat.setRoundingMode(RoundingMode.CEILING); String format = decimalFormat.format(taxMoney); log.info("税金为:{}", format); return format; } @@ -68,31 +72,33 @@ */ public static String getTaxationBefore(BigDecimal money) { //当X<=800时,个税T=0 BigDecimal taxMoney = new BigDecimal(0.0); BigDecimal taxMoney = BigDecimal.valueOf(0.00); if (money.doubleValue() <= 800) { taxMoney = money; } //第一个参数是除数,第二个参数代表保留几位小数,第三个代表的是使用的模式 if (money.doubleValue() > 800 && money.doubleValue() <= 3360) { taxMoney = money.subtract(new BigDecimal(160)).divide(new BigDecimal(0.8), 2, BigDecimal.ROUND_UP); taxMoney = money.subtract(new BigDecimal(160)).divide(new BigDecimal(0.8), 2, BigDecimal.ROUND_CEILING); } if (money.doubleValue() > 3360 && money.doubleValue() <= 21000) { taxMoney = money.divide(new BigDecimal(0.84), 2, BigDecimal.ROUND_DOWN); taxMoney = money.divide(new BigDecimal(0.84), 2, BigDecimal.ROUND_CEILING); } if (money.doubleValue() > 21000 && money.doubleValue() <= 40000) { money = money.subtract(new BigDecimal(2000)); taxMoney = money.divide(new BigDecimal(0.76), 2, BigDecimal.ROUND_DOWN); taxMoney = money.divide(new BigDecimal(0.76), 2, BigDecimal.ROUND_CEILING); } if (money.doubleValue() > 40000) { money = money.subtract(new BigDecimal(7000)); taxMoney = money.divide(new BigDecimal(0.68), 2, BigDecimal.ROUND_DOWN); taxMoney = money.divide(new BigDecimal(0.68), 2, BigDecimal.ROUND_CEILING); } DecimalFormat decimalFormat = new DecimalFormat("#.00"); DecimalFormat decimalFormat = new DecimalFormat("#0.00"); //进一法 decimalFormat.setRoundingMode(RoundingMode.CEILING); String format = decimalFormat.format(taxMoney); log.info("税前金额为:{}", format); return format; @@ -100,8 +106,8 @@ public static void main(String[] args) { String taxation = getTaxation(new BigDecimal(400)); String taxationBefore = getTaxationBefore(new BigDecimal(400)); String taxation = getTaxation(BigDecimal.valueOf(80589.723)); String taxationBefore = getTaxationBefore(BigDecimal.valueOf(900.531)); System.out.println(taxation + " " + taxationBefore); ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java
@@ -355,5 +355,12 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date fundtaxtime; /** * 上报时间 */ @ApiModelProperty("上报时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "上报时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date applyTime; } ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFundShared.java
@@ -1,6 +1,8 @@ package com.ruoyi.project.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; @@ -388,5 +390,11 @@ @ApiModelProperty("绩效:1、月度、2季度、3年度") @Excel(name = "绩效:1、月度、2季度、3年度") private Integer performancetype; /** 上报时间 */ @ApiModelProperty("上报时间") @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date applyTime; } ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursement.java
@@ -337,8 +337,8 @@ @Excel(name = "绩效:1、月度、2季度、3年度") private Integer performancetype; // @ApiModelProperty("开始时间") // private Date starttime; @ApiModelProperty("上报时间") private Date applyTime; // // @ApiModelProperty("结束时间") // private Date endtime; ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementShared.java
@@ -386,5 +386,8 @@ @ApiModelProperty("绩效:1、月度、2季度、3年度") @Excel(name = "绩效:1、月度、2季度、3年度") private Integer performancetype; @ApiModelProperty("上报时间") private Date applyTime; } ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
@@ -59,6 +59,7 @@ <result property="performancetype" column="performancetype"/> <result property="istax" column="istax"/> <result property="fundtaxtime" column="fundtaxtime"/> <result property="applyTime" column="apply_time"/> </resultMap> ruoyi-project/src/main/resources/mapper/project/ServiceFundSharedMapper.xml
@@ -62,6 +62,7 @@ <result property="bh" column="bh"/> <result property="checkstatus" column="checkstatus"/> <result property="performancetype" column="performancetype"/> <result property="applyTime" column="apply_time"/> </resultMap> <sql id="selectServiceFundSharedVo"> @@ -121,6 +122,7 @@ riqi, bh, checkstatus, applytime, performancetype from service_fund_shared </sql> ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementMapper.xml
@@ -62,6 +62,7 @@ <result property="bh" column="bh"/> <result property="checkstatus" column="checkstatus"/> <result property="performancetype" column="performancetype"/> <result property="applyTime" column="apply_time"/> </resultMap> <sql id="selectServiceReimbursementVo"> @@ -119,6 +120,7 @@ riqi, bh, checkstatus, apply_time, performancetype from service_reimbursement </sql> ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementSharedMapper.xml
@@ -65,6 +65,7 @@ <result property="bh" column="bh"/> <result property="checkstatus" column="checkstatus"/> <result property="performancetype" column="performancetype"/> <result property="applyTime" column="apply_time"/> </resultMap> <sql id="selectServiceReimbursementSharedVo"> @@ -127,6 +128,7 @@ riqi, bh, checkstatus, apply_time, performancetype from service_reimbursement_shared </sql>