liusheng
2023-09-27 da3edb56ef670c58f6de09d28fde986d6be5a845
代码提交
已添加8个文件
已修改28个文件
979 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/BaseExpertfeetypeController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceExternalpersonGroupController.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailSharedController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementpayeeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementpayeeSharedController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysStudentController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/tax/PerformanceTaxtUtils.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorgan.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceExternalpersonGroup.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFundShared.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursement.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementEo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementShared.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServicePersonInfoVo.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDocumentfilesMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceExternalpersonGroupMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceExternalpersonGroupService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceExternalpersonGroupServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganMapper.xml 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceExternalpersonGroupMapper.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceFundSharedMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementSharedMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/BaseExpertfeetypeController.java
@@ -1,7 +1,8 @@
package com.ruoyi.project.controller;
package com.ruoyi.web.controller.project;
import java.util.Arrays;
import java.util.List;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -26,15 +27,14 @@
/**
 * ä¸“家费用Controller
 *
 *
 * @author ruoyi
 * @date 2022-04-19
 */
@Api("专家费用")
@RestController
@RequestMapping("/project/expertfeetype")
public class BaseExpertfeetypeController extends BaseController
{
public class BaseExpertfeetypeController extends BaseController {
    @Autowired
    private IBaseExpertfeetypeService baseExpertfeetypeService;
@@ -43,8 +43,7 @@
     */
    @ApiOperation("查询专家费用列表")
    @GetMapping("/list")
    public TableDataInfo list(BaseExpertfeetype baseExpertfeetype)
    {
    public TableDataInfo list(BaseExpertfeetype baseExpertfeetype) {
        startPage();
        List<BaseExpertfeetype> list = baseExpertfeetypeService.queryList(baseExpertfeetype);
        return getDataTable(list);
@@ -56,8 +55,7 @@
    @ApiOperation("导出专家费用列表")
    @Log(title = "专家费用", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(BaseExpertfeetype baseExpertfeetype)
    {
    public AjaxResult export(BaseExpertfeetype baseExpertfeetype) {
        List<BaseExpertfeetype> list = baseExpertfeetypeService.queryList(baseExpertfeetype);
        ExcelUtil<BaseExpertfeetype> util = new ExcelUtil<BaseExpertfeetype>(BaseExpertfeetype.class);
        return util.exportExcel(list, "专家费用数据");
@@ -68,8 +66,7 @@
     */
    @ApiOperation("获取专家费用详细信息")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return AjaxResult.success(baseExpertfeetypeService.getById(id));
    }
@@ -80,8 +77,7 @@
    @Log(title = "专家费用", businessType = BusinessType.INSERT)
    @PostMapping
    @RepeatSubmit
    public AjaxResult add(@RequestBody BaseExpertfeetype baseExpertfeetype)
    {
    public AjaxResult add(@RequestBody BaseExpertfeetype baseExpertfeetype) {
        return toAjax(baseExpertfeetypeService.save(baseExpertfeetype));
    }
@@ -91,9 +87,8 @@
    @ApiOperation("修改专家费用")
    @Log(title = "专家费用", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @RepeatSubmit
    public AjaxResult edit(@RequestBody BaseExpertfeetype baseExpertfeetype)
    {
    @RepeatSubmit
    public AjaxResult edit(@RequestBody BaseExpertfeetype baseExpertfeetype) {
        return toAjax(baseExpertfeetypeService.updateById(baseExpertfeetype));
    }
@@ -103,8 +98,7 @@
    @ApiOperation("删除专家费用")
    @Log(title = "专家费用", businessType = BusinessType.DELETE)
    @DeleteMapping("/remove/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(baseExpertfeetypeService.removeByIds(Arrays.asList(ids)));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java
@@ -1,4 +1,4 @@
package com.ruoyi.project.controller;
package com.ruoyi.web.controller.project;
import java.util.Arrays;
import java.util.List;
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java
@@ -1,4 +1,4 @@
package com.ruoyi.project.controller;
package com.ruoyi.web.controller.project;
import java.util.Arrays;
import java.util.List;
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceExternalpersonGroupController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
package com.ruoyi.web.controller.project;
import java.util.Arrays;
import java.util.List;
import com.ruoyi.project.domain.ServiceExternalpersonGroup;
import com.ruoyi.project.domain.vo.ServicePersonInfoVo;
import com.ruoyi.project.service.IServiceExternalpersonGroupService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
/**
 * äººå‘˜å’Œåˆ†ç»„组别关联Controller
 *
 * @author ruoyi
 * @date 2023-09-26
 */
@Api("人员和分组组别关联")
@RestController
@RequestMapping("/externalperson/group")
public class ServiceExternalpersonGroupController extends BaseController {
    @Autowired
    private IServiceExternalpersonGroupService serviceExternalpersonGroupService;
//    /**
//     * æŸ¥è¯¢äººå‘˜å’Œåˆ†ç»„组别关联列表
//     */
//    @ApiOperation("查询人员和分组组别关联列表")
//    @PreAuthorize("@ss.hasPermi('system:group:list')")
//    @GetMapping("/list")
//    public TableDataInfo list(ServiceExternalpersonGroup serviceExternalpersonGroup) {
//        startPage();
//        List<ServiceExternalpersonGroup> list = serviceExternalpersonGroupService.queryList(serviceExternalpersonGroup);
//        return getDataTable(list);
//    }
    /**
     * æŸ¥è¯¢äººå‘˜å’Œåˆ†ç»„组别关联列表
     * @return
     */
    @ApiOperation("查询人员和分组组别关联列表")
    @GetMapping("/getPersonInfo/{groupId}")
    public AjaxResult getPersonInfo(@PathVariable("groupId") Long groupId) {
        if (groupId == null) {
            return error("组ID不能为空");
        }
        List<ServicePersonInfoVo> personInfo = serviceExternalpersonGroupService.getPersonInfo(groupId);
        return AjaxResult.success(personInfo);
    }
    /**
     * å¯¼å‡ºäººå‘˜å’Œåˆ†ç»„组别关联列表
     */
    @ApiOperation("导出人员和分组组别关联列表")
    @PreAuthorize("@ss.hasPermi('system:group:export')")
    @Log(title = "人员和分组组别关联", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(ServiceExternalpersonGroup serviceExternalpersonGroup) {
        List<ServiceExternalpersonGroup> list = serviceExternalpersonGroupService.queryList(serviceExternalpersonGroup);
        ExcelUtil<ServiceExternalpersonGroup> util = new ExcelUtil<ServiceExternalpersonGroup>(ServiceExternalpersonGroup.class);
        return util.exportExcel(list, "人员和分组组别关联数据");
    }
    /**
     * èŽ·å–äººå‘˜å’Œåˆ†ç»„ç»„åˆ«å…³è”è¯¦ç»†ä¿¡æ¯
     */
    @ApiOperation("获取人员和分组组别关联详细信息")
    @PreAuthorize("@ss.hasPermi('system:group:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return AjaxResult.success(serviceExternalpersonGroupService.getById(id));
    }
    /**
     * æ–°å¢žäººå‘˜å’Œåˆ†ç»„组别关联
     */
    @ApiOperation("新增人员和分组组别关联")
    @PreAuthorize("@ss.hasPermi('system:group:add')")
    @Log(title = "人员和分组组别关联", businessType = BusinessType.INSERT)
    @PostMapping
    @RepeatSubmit
    public AjaxResult add(@RequestBody ServiceExternalpersonGroup serviceExternalpersonGroup) {
        return toAjax(serviceExternalpersonGroupService.save(serviceExternalpersonGroup));
    }
    /**
     * ä¿®æ”¹äººå‘˜å’Œåˆ†ç»„组别关联
     */
    @ApiOperation("修改人员和分组组别关联")
    @PreAuthorize("@ss.hasPermi('system:group:edit')")
    @Log(title = "人员和分组组别关联", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @RepeatSubmit
    public AjaxResult edit(@RequestBody ServiceExternalpersonGroup serviceExternalpersonGroup) {
        return toAjax(serviceExternalpersonGroupService.updateById(serviceExternalpersonGroup));
    }
    /**
     * åˆ é™¤äººå‘˜å’Œåˆ†ç»„组别关联
     */
    @ApiOperation("删除人员和分组组别关联")
    @PreAuthorize("@ss.hasPermi('system:group:remove')")
    @Log(title = "人员和分组组别关联", businessType = BusinessType.DELETE)
    @GetMapping("/remove/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(serviceExternalpersonGroupService.removeByIds(Arrays.asList(ids)));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
@@ -2003,4 +2003,17 @@
    }
    /**
     * ç»©æ•ˆè®¡ç®—
     */
    @ApiOperation("绩效计算")
    @Log(title = "绩效计算", businessType = BusinessType.INSERT)
    @PostMapping("/performance")
    @RepeatSubmit
    public AjaxResult performance(@RequestBody ServiceFundVO serviceFundVO) {
        return AjaxResult.success(serviceFundService.performance(serviceFundVO));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
@@ -3,6 +3,7 @@
import java.io.*;
import java.util.*;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.domain.FunddetailReqVo;
import com.ruoyi.project.domain.vo.TaxMoneyVO;
import io.swagger.annotations.Api;
@@ -167,4 +168,20 @@
    public AjaxResult calculateTax(@RequestBody List<ServiceFunddetail> serviceFunddetails) {
        return AjaxResult.success(serviceFunddetailService.calculateTax(serviceFunddetails));
    }
//    /**
//     * ç»©æ•ˆè®¡ç®—
//     * <p>
//     * beneficiaryNO  å—益人编号
//     */
//    @ApiOperation("绩效计算")
//    @PostMapping(value = "/performance")
//    public AjaxResult performance(@RequestBody ServiceFunddetail serviceFunddetail) {
//        if (StringUtils.isBlank(serviceFunddetail.getBeneficiaryno())) {
//            return AjaxResult.error("受益人编号为空");
//        }
//
//        return AjaxResult.success(serviceFunddetailService.performance(serviceFunddetail));
//    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailSharedController.java
@@ -1,4 +1,4 @@
package com.ruoyi.project.controller;
package com.ruoyi.web.controller.project;
import java.util.Arrays;
import java.util.List;
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementpayeeController.java
@@ -1,4 +1,4 @@
package com.ruoyi.project.controller;
package com.ruoyi.web.controller.project;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementpayeeSharedController.java
@@ -1,4 +1,4 @@
package com.ruoyi.project.controller;
package com.ruoyi.web.controller.project;
import java.util.Arrays;
import java.util.List;
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysStudentController.java
@@ -1,4 +1,4 @@
package com.ruoyi.system.controller;
package com.ruoyi.web.controller.system;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
ruoyi-common/src/main/java/com/ruoyi/common/tax/PerformanceTaxtUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
package com.ruoyi.common.tax;
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
 * ç»©æ•ˆä¸ªç¨Žè®¡ç®—规则
 *
 * @author ls
 */
public class PerformanceTaxtUtils {
    /**
     * åˆ†éš”符
     */
    public static final String SEPARATOR = ",";
    /**
     * èŽ·å–ä¸ªç¨Ž
     *
     * @param wages å·¥èµ„ (扣掉5000元免税 å’Œ æ‰£æŽ‰ç¤¾ä¿çš„金额)
     */
    public static BigDecimal getPersonTaxation(BigDecimal wages) {
        BigDecimal firstTax = new BigDecimal(0.0);
        BigDecimal secondTax = new BigDecimal(0.0);
        BigDecimal thirdTax = new BigDecimal(0.0);
        BigDecimal fourthTax = new BigDecimal(0.0);
        BigDecimal fifthTax = new BigDecimal(0.0);
        BigDecimal sixthTax = new BigDecimal(0.0);
        BigDecimal seventhTax = new BigDecimal(0.0);
        //当X<=36000时的税
        if (wages.doubleValue() <= 36000) {
            firstTax = wages.multiply(BigDecimal.valueOf(0.03));
        } else if (wages.doubleValue() > 36000) {
            firstTax = BigDecimal.valueOf(36000).multiply(BigDecimal.valueOf(0.03));
        }
        // è®¡ç®—36000到144000之间的税
        if (wages.doubleValue() > 36000 && wages.doubleValue() <= 144000) {
            //如果工资小于144000,就直接进行计算,先减去36000的部分,再算税
            BigDecimal subtract = wages.subtract(BigDecimal.valueOf(36000));
            secondTax = subtract.multiply(BigDecimal.valueOf(0.1));
        } else if (wages.doubleValue() > 144000) {
            //如果工资大于144000,就直接用144000进行计算,先减去36000的部分,再算税
            BigDecimal subtract1 = BigDecimal.valueOf(144000).subtract(BigDecimal.valueOf(36000));
            secondTax = subtract1.multiply(BigDecimal.valueOf(0.1));
        }
        // è®¡ç®—300000到144000之间的税
        if (wages.doubleValue() > 144000 && wages.doubleValue() <= 300000) {
            //如果工资小于300000,就直接进行计算,先减去144000的部分,再算税
            BigDecimal subtract = wages.subtract(new BigDecimal(144000));
            thirdTax = subtract.multiply(BigDecimal.valueOf(0.2));
        } else if (wages.doubleValue() > 300000) {
            //如果工资大于300000,就直接用300000进行计算,先减去144000的部分,再算税
            BigDecimal subtract1 = BigDecimal.valueOf(300000).subtract(BigDecimal.valueOf(144000));
            thirdTax = subtract1.multiply(BigDecimal.valueOf(0.2));
        }
        // è®¡ç®—300000到420000之间的税
        if (wages.doubleValue() > 300000 && wages.doubleValue() <= 420000) {
            //如果工资小于420000,就直接进行计算,先减去300000的部分,再算税
            BigDecimal subtract = wages.subtract(BigDecimal.valueOf(300000));
            fourthTax = subtract.multiply(BigDecimal.valueOf(0.25));
        } else if (wages.doubleValue() > 420000) {
            //如果工资大于420000,就直接用420000进行计算,先减去300000的部分,再算税
            BigDecimal subtract1 = BigDecimal.valueOf(420000).subtract(BigDecimal.valueOf(300000));
            fourthTax = subtract1.multiply(BigDecimal.valueOf(0.25));
        }
        //计算660000到420000之间的税
        if (wages.doubleValue() > 420000 && wages.doubleValue() <= 660000) {
            //如果工资小于660000,就直接进行计算,先减去420000的部分,再算税
            BigDecimal subtract = wages.subtract(BigDecimal.valueOf(420000));
            fifthTax = subtract.multiply(BigDecimal.valueOf(0.3));
        } else if (wages.doubleValue() > 660000) {
            //如果工资大于660000,就直接用660000进行计算,先减去420000的部分,再算税
            BigDecimal subtract1 = BigDecimal.valueOf(660000).subtract(BigDecimal.valueOf(420000));
            fifthTax = subtract1.multiply(BigDecimal.valueOf(0.3));
        }
        // è®¡ç®—660000到960000之间的税
        if (wages.doubleValue() > 660000 && wages.doubleValue() <= 960000) {
            //如果工资小于960000,就直接进行计算,先减去660000的部分,再算税
            BigDecimal subtract = wages.subtract(BigDecimal.valueOf(660000));
            sixthTax = subtract.multiply(BigDecimal.valueOf(0.35));
        } else if (wages.doubleValue() > 960000) {
            //如果工资大于960000,就直接用960000进行计算,先减去660000的部分,再算税
            BigDecimal subtract1 = BigDecimal.valueOf(960000).subtract(BigDecimal.valueOf(660000));
            sixthTax = subtract1.multiply(BigDecimal.valueOf(0.35));
        }
        //960000以上的税
        if (wages.doubleValue() > 960000) {
            //如果工资大于960000,就直接进行计算,先减去660000的部分,再算税
            BigDecimal subtract = wages.subtract(BigDecimal.valueOf(960000));
            seventhTax = subtract.multiply(BigDecimal.valueOf(0.45));
        }
        //将计算的税相加
        BigDecimal result = firstTax.add(secondTax).add(thirdTax).add(fourthTax).add(fifthTax).add(sixthTax).add(seventhTax);
        return result;
    }
    public static void main(String[] args) {
        BigDecimal personTaxation = getPersonTaxation(new BigDecimal(7654321));
//        String taxationBefore = getTaxationBefore(new BigDecimal(52000));
        System.out.println(personTaxation);
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorgan.java
@@ -188,47 +188,47 @@
    @ApiModelProperty("申请人编号")
    private String applicantUserID;
    private String applicantuserid;
    @ApiModelProperty("申请人姓名")
    private String applicantUserName;
    private String applicantusername;
    @ApiModelProperty("申请时间")
    private Date applicantTime;
    private Date applicanttime;
    @ApiModelProperty("审核人编号")
    private String checkUserID;
    private String checkuserid;
    @ApiModelProperty("审核人姓名")
    private String checkUserName;
    private String checkusername;
    @ApiModelProperty("审核时间")
    private Date checkTime;
    private Date checktime;
    @ApiModelProperty("审核意见")
    private String checkSuggestion;
    private String checksuggestion;
    @ApiModelProperty("0:提交分配;1:审核通过;2:审核拒绝")
    private Integer allocationStatus;
    private Integer allocationstatus;
    @ApiModelProperty("移植人姓名")
    private String name;
    @ApiModelProperty("移植人性别 æ ¹æ®å­—å…¸sys_user_sex")
    private Integer sexOMMENT;
    private Integer sex;
    @ApiModelProperty("移植人证件类型 æ ¹æ®å­—å…¸sys_IDType")
    private Integer idCardType;
    private Integer idcardtype;
    @ApiModelProperty("移植人证件号码")
    private String idCardNo;
    private String idcardno;
    @ApiModelProperty("移植人年龄")
    private Integer age;
    @ApiModelProperty("移植人年龄单位 æ ¹æ®å­—å…¸sys_AgeUnit")
    private String ageUnit;
    private String ageunit;
    @ApiModelProperty("移植人出生日期")
    private String birthday;
@@ -237,37 +237,37 @@
    private String phone;
    @ApiModelProperty("移植人现住地址")
    private String residenceAddress;
    private String residenceaddress;
    @ApiModelProperty("移植人现住地址省代码")
    private String residenceProvince;
    private String residenceprovince;
    @ApiModelProperty("移植人现住地址省名称")
    private String residenceProvinceName;
    private String residenceprovincename;
    @ApiModelProperty("移植人市编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residenceCity;
    private String residencecity;
    @ApiModelProperty("移植人市名称")
    private String residenceCityName;
    private String residencecityname;
    @ApiModelProperty("移植人所属街道(镇)根据行政区划表")
    private String residenceTown;
    private String residencetown;
    @ApiModelProperty("移植人所属街道(镇)名称")
    private String residenceTownName;
    private String residencetownname;
    @ApiModelProperty("移植人社区(村)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residenceCommunity;
    private String residencecommunity;
    @ApiModelProperty("移植人社区(村)名称")
    private String residenceCommunityName;
    private String residencecommunityname;
    @ApiModelProperty("移植人所属区域编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residenceCountyCode;
    private String residencecountycode;
    @ApiModelProperty("移植人所属区域名称")
    private String residenceCountyName;
    private String residencecountyname;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceExternalpersonGroup.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.ruoyi.project.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * äººå‘˜å’Œåˆ†ç»„组别关联对象 service_externalperson_group
 *
 * @author ruoyi
 * @date 2023-09-26
 */
@Data
@ApiModel("人员和分组组别关联")
public class ServiceExternalpersonGroup extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** id */
    @ApiModelProperty("id")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /** äººå‘˜ID */
    @ApiModelProperty("人员ID")
    @Excel(name = "人员ID")
    private Long userId;
    /** äººå‘˜åˆ†ç»„ID */
    @ApiModelProperty("人员分组ID")
    @Excel(name = "人员分组ID")
    private Long groupId;
    /** ç»„别说明 */
    @ApiModelProperty("组别说明")
    @Excel(name = "组别说明")
    private String groupdesc;
    /** äººå‘˜ç¼–号 */
    @ApiModelProperty("人员编号")
    @Excel(name = "人员编号")
    private String userNo;
    /** äººå‘˜å§“名 */
    @ApiModelProperty("人员姓名")
    @Excel(name = "人员姓名")
    private String userName;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java
@@ -332,5 +332,12 @@
    @ApiModelProperty("预审状态:1、待预审;2、预算通过,等待纸质报销材料;3、收到纸质报销材料")
    @Excel(name = "预审状态:1、待预审;2、预算通过,等待纸质报销材料;3、收到纸质报销材料")
    private Integer checkstatus;
    /**
     * ç»©æ•ˆï¼š1、月度、2季度、3年度
     */
    @ApiModelProperty("绩效:1、月度、2季度、3年度")
    @Excel(name = "绩效:1、月度、2季度、3年度")
    private Integer performancetype;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFundShared.java
@@ -381,5 +381,12 @@
     */
    @ApiModelProperty("预审状态:1、待预审;2、预算通过,等待纸质报销材料;3、收到纸质报销材料")
    private Integer checkstatus;
    /**
     * ç»©æ•ˆï¼š1、月度、2季度、3年度
     */
    @ApiModelProperty("绩效:1、月度、2季度、3年度")
    @Excel(name = "绩效:1、月度、2季度、3年度")
    private Integer performancetype;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java
@@ -341,5 +341,11 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date taxTime;
    /**
     * ç»©æ•ˆæ—¥æœŸ
     */
    @ApiModelProperty("绩效日期")
    private String jxrq;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursement.java
@@ -330,6 +330,13 @@
    @Excel(name = "预审状态:1、待预审;2、预算通过,等待纸质报销材料;3、收到纸质报销材料")
    private Integer checkstatus;
    /**
     * ç»©æ•ˆï¼š1、月度、2季度、3年度
     */
    @ApiModelProperty("绩效:1、月度、2季度、3年度")
    @Excel(name = "绩效:1、月度、2季度、3年度")
    private Integer performancetype;
//    @ApiModelProperty("开始时间")
//    private Date starttime;
//
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementEo.java
@@ -350,5 +350,12 @@
    @ApiModelProperty("市内交通费")
    private BigDecimal cityfee;
    /**
     * ç»©æ•ˆï¼š1、月度、2季度、3年度
     */
    @ApiModelProperty("绩效:1、月度、2季度、3年度")
    @Excel(name = "绩效:1、月度、2季度、3年度")
    private Integer performancetype;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementShared.java
@@ -380,6 +380,11 @@
    @ApiModelProperty("预审状态:1、待预审;2、预算通过,等待纸质报销材料;3、收到纸质报销材料")
    private Integer checkstatus;
    /**
     * ç»©æ•ˆï¼š1、月度、2季度、3年度
     */
    @ApiModelProperty("绩效:1、月度、2季度、3年度")
    @Excel(name = "绩效:1、月度、2季度、3年度")
    private Integer performancetype;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServicePersonInfoVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.ruoyi.project.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * äººå‘˜å’Œåˆ†ç»„组别关联对象 ServicePersonInfoVo
 *
 * @author ruoyi
 * @date 2023-09-26
 */
@Data
@ApiModel("人员和分组组别关联")
public class ServicePersonInfoVo extends BaseEntity
{
    /** äººå‘˜ID */
    @ApiModelProperty("人员ID")
    @Excel(name = "人员ID")
    private Long userId;
    /** äººå‘˜åˆ†ç»„ID */
    @ApiModelProperty("人员分组ID")
    @Excel(name = "人员分组ID")
    private Long groupId;
    /** ç»„别说明 */
    @ApiModelProperty("组别说明")
    @Excel(name = "组别说明")
    private String groupdesc;
    /** äººå‘˜ç¼–号 */
    @ApiModelProperty("人员编号")
    @Excel(name = "人员编号")
    private String userNo;
    /** äººå‘˜å§“名 */
    @ApiModelProperty("人员姓名")
    @Excel(name = "人员姓名")
    private String userName;
    /** èº«ä»½è¯å· */
    @ApiModelProperty("身份证号")
    @Excel(name = "身份证号")
    private String IDCardNo;
    /** æ‰‹æœºå· */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    private String telephone;
    /** æ‰‹æœºå· */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    private String userType;
    /** å•位名称 */
    @ApiModelProperty("单位名称")
    @Excel(name = "单位名称")
    private String unitName;
    /** å•位编号 */
    @ApiModelProperty("单位编号")
    @Excel(name = "单位编号")
    private String unitNo;
    /** æ‰‹æœºå· */
    @ApiModelProperty("职称,见字典sys_professionaltitle")
    @Excel(name = "职称,见字典sys_professionaltitle")
    private String title;
    /** å¼€æˆ·é“¶è¡Œ */
    @ApiModelProperty("开户银行")
    @Excel(name = "开户银行")
    private String depositBank;
    /** æ‰‹æœºå· */
    @ApiModelProperty("卡号")
    @Excel(name = "卡号")
    private String bankCardNo;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java
@@ -11,9 +11,14 @@
public class TaxMoneyByItemEO extends BaseEntity {
    /**
     * å—益人编号
     * å—益人编号(这个不能用了,有重复)
     */
    private String beneficiaryNo;
    /**
     * èº«ä»½è¯å·
     */
    private String IDCard;
    /**
     * è´¹ç”¨åˆ›å»ºæ—¶é—´
@@ -30,7 +35,7 @@
    /**
     * äººå‘˜ç±»åˆ«
     */
    private List<Long> applyTypes;
    private List<String> applyTypes;
    /**
     * èµ„金申请主表ID
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDocumentfilesMapper.java
@@ -2,17 +2,20 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.project.domain.ServiceDocumentfiles;
import org.apache.ibatis.annotations.Mapper;
/**
 * æçŒ®é™„ä»¶Mapper接口
 *
 *
 * @author ruoyi
 * @date 2022-04-08
 */
public interface ServiceDocumentfilesMapper extends BaseMapper<ServiceDocumentfiles>
{
@Mapper
public interface ServiceDocumentfilesMapper extends BaseMapper<ServiceDocumentfiles> {
    /**
     * æŸ¥è¯¢æçŒ®é™„件列表
     *
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceExternalpersonGroupMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.project.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.project.domain.ServiceExternalpersonGroup;
import com.ruoyi.project.domain.vo.ServicePersonInfoVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * äººå‘˜å’Œåˆ†ç»„组别关联Mapper接口
 *
 * @author ruoyi
 * @date 2023-09-26
 */
@Mapper
public interface ServiceExternalpersonGroupMapper extends BaseMapper<ServiceExternalpersonGroup> {
    /**
     * æŸ¥è¯¢äººå‘˜å’Œåˆ†ç»„组别关联列表
     *
     * @param serviceExternalpersonGroup äººå‘˜å’Œåˆ†ç»„组别关联
     * @return äººå‘˜å’Œåˆ†ç»„组别关联集合
     */
    public List<ServiceExternalpersonGroup> selectServiceExternalpersonGroupList(ServiceExternalpersonGroup serviceExternalpersonGroup);
    public List<ServicePersonInfoVo> getPersonInfo(Long groupId);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceExternalpersonGroupService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.ruoyi.project.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceExternalpersonGroup;
import com.ruoyi.project.domain.vo.ServicePersonInfoVo;
import java.util.List;
/**
 * äººå‘˜å’Œåˆ†ç»„组别关联Service接口
 *
 * @author ruoyi
 * @date 2023-09-26
 */
public interface IServiceExternalpersonGroupService extends IService<ServiceExternalpersonGroup> {
    /**
     * æŸ¥è¯¢äººå‘˜å’Œåˆ†ç»„组别关联列表
     *
     * @param serviceExternalpersonGroup äººå‘˜å’Œåˆ†ç»„组别关联
     * @return äººå‘˜å’Œåˆ†ç»„组别关联集合
     */
    public List<ServiceExternalpersonGroup> queryList(ServiceExternalpersonGroup serviceExternalpersonGroup);
    /**
     * æŸ¥è¯¢äººå‘˜å’Œåˆ†ç»„组别关联列表
     * @param groupId
     * @return
     */
    List<ServicePersonInfoVo> getPersonInfo(Long groupId);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundService.java
@@ -1,6 +1,7 @@
package com.ruoyi.project.service;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceFund;
@@ -42,7 +43,6 @@
    List<ServiceFund> selectServiceFundList(ServiceFund serviceFund);
    List<FundVO> selectVOList(FundVO fundVO);
@@ -57,4 +57,12 @@
    int countItem(Long infoid, Long itemid);
    Long addOrUpdateNew(ServiceFundVO serviceFundVO);
    /**
     * ç»©æ•ˆè®¡ç®—
     *
     * @param serviceFundVO
     * @return
     */
    Map<String,Long> performance(ServiceFundVO serviceFundVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java
@@ -1,6 +1,7 @@
package com.ruoyi.project.service;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -67,4 +68,11 @@
     * @param serviceFunddetails
     */
    public Boolean calculateTax(List<ServiceFunddetail> serviceFunddetails);
    /**
     * ç»©æ•ˆè®¡ç®—
     * <p>
     * beneficiaryNO  å—益人编号
     */
    Map<String, Double> performance(ServiceFunddetail serviceFunddetail);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceExternalpersonGroupServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.ruoyi.project.service.impl;
import java.util.List;
import com.ruoyi.project.domain.ServiceExternalpersonGroup;
import com.ruoyi.project.domain.vo.ServicePersonInfoVo;
import com.ruoyi.project.mapper.ServiceExternalpersonGroupMapper;
import com.ruoyi.project.service.IServiceExternalpersonGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
/**
 * äººå‘˜å’Œåˆ†ç»„组别关联Service业务层处理
 *
 * @author ruoyi
 * @date 2023-09-26
 */
@Service
public class ServiceExternalpersonGroupServiceImpl extends ServiceImpl<ServiceExternalpersonGroupMapper, ServiceExternalpersonGroup> implements IServiceExternalpersonGroupService {
    @Autowired
    ServiceExternalpersonGroupMapper serviceExternalpersonGroupMapper;
    /**
     * æŸ¥è¯¢äººå‘˜å’Œåˆ†ç»„组别关联列表
     *
     * @param serviceExternalpersonGroup äººå‘˜å’Œåˆ†ç»„组别关联
     * @return äººå‘˜å’Œåˆ†ç»„组别关联
     */
    @Override
    public List<ServiceExternalpersonGroup> queryList(ServiceExternalpersonGroup serviceExternalpersonGroup) {
        LambdaQueryWrapper<ServiceExternalpersonGroup> wrappers = Wrappers.lambdaQuery();
        if (serviceExternalpersonGroup.getUserId() != null) {
            wrappers.eq(ServiceExternalpersonGroup::getUserId, serviceExternalpersonGroup.getUserId());
        }
        if (serviceExternalpersonGroup.getGroupId() != null) {
            wrappers.eq(ServiceExternalpersonGroup::getGroupId, serviceExternalpersonGroup.getGroupId());
        }
        if (StringUtils.isNotBlank(serviceExternalpersonGroup.getGroupdesc())) {
            wrappers.eq(ServiceExternalpersonGroup::getGroupdesc, serviceExternalpersonGroup.getGroupdesc());
        }
        if (StringUtils.isNotBlank(serviceExternalpersonGroup.getUserNo())) {
            wrappers.eq(ServiceExternalpersonGroup::getUserNo, serviceExternalpersonGroup.getUserNo());
        }
        if (StringUtils.isNotBlank(serviceExternalpersonGroup.getUserName())) {
            wrappers.like(ServiceExternalpersonGroup::getUserName, serviceExternalpersonGroup.getUserName());
        }
        return this.list(wrappers);
    }
    @Override
    public List<ServicePersonInfoVo> getPersonInfo(Long groupId) {
        if (groupId != null) {
            List<ServicePersonInfoVo> personInfo = serviceExternalpersonGroupMapper.getPersonInfo(groupId);
            return personInfo;
        }
        return null;
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
@@ -682,14 +682,8 @@
    public Long addOrUpdateNew(ServiceFundVO serviceFundVO) {
        Long id = null;
        //将数据保存到fund表
        if (ObjectUtils.isNotEmpty(serviceFundVO) && serviceFundVO.getId() == null) {
            serviceFundVO.setCheckstatus(serviceFundVO.getCheckstatus() == null ? 1 : 2);
            save(serviceFundVO);
            id = serviceFundVO.getId();
        } else {
            updateById(serviceFundVO);
            id = serviceFundVO.getId();
        }
        id = saveFund(serviceFundVO);
        List<ServiceFunddetailVO> serviceFunddetails = serviceFundVO.getServiceFunddetails();
        if (CollectionUtils.isEmpty(serviceFunddetails)) {
            System.out.println("serviceFunddetails为空喽");
@@ -712,6 +706,42 @@
        }
        return id;
    }
    @Override
    public Map<String, Long> performance(ServiceFundVO serviceFundVO) {
        Long id = null;
        //将数据保存到fund表
        id = saveFund(serviceFundVO);
        List<ServiceFunddetailVO> serviceFunddetails = serviceFundVO.getServiceFunddetails();
        if (CollectionUtils.isEmpty(serviceFunddetails)) {
            System.out.println("serviceFunddetails为空喽");
            return null;
        }
        //总税前
        Double pretaxcosts = 0.00;
        //总税后
        Double taxedcosts = 0.00;
        for (ServiceFunddetailVO serviceFunddetailVO : serviceFunddetails) {
            serviceFunddetailVO.setFundid(id);
            ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class);
            Map<String, Double> performance = serviceFunddetailService.performance(serviceFunddetail);
            if (!performance.isEmpty()) {
                Double amount = performance.get("amount");
                Double taxedamount = performance.get("taxedamount");
                pretaxcosts = pretaxcosts + amount;
                taxedcosts = taxedcosts + taxedamount;
            }
            serviceFundVO.setPretaxcost(pretaxcosts);
            serviceFundVO.setTaxedcost(taxedcosts);
            updateById(serviceFundVO);
        }
        Map map = new HashMap();
        map.put("fundId", id);
        return map;
    }
    int uploadOAFileAndUpdateDb(ServiceFunddetailShared remShare) {
@@ -869,4 +899,18 @@
//        return 0;
//    }
    public long saveFund(ServiceFundVO serviceFundVO) {
        Long id = null;
        //将数据保存到fund表
        if (ObjectUtils.isNotEmpty(serviceFundVO) && serviceFundVO.getId() == null) {
            serviceFundVO.setCheckstatus(serviceFundVO.getCheckstatus() == null ? 1 : 2);
            save(serviceFundVO);
            id = serviceFundVO.getId();
        } else {
            updateById(serviceFundVO);
            id = serviceFundVO.getId();
        }
        return id;
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
@@ -5,12 +5,11 @@
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.ruoyi.common.tax.PerformanceTaxtUtils;
import com.ruoyi.common.tax.TaxtUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.project.domain.*;
@@ -81,6 +80,18 @@
        }
        if (serviceFunddetail.getUploadtime() != null) {
            wrappers.eq(ServiceFunddetail::getUploadtime, serviceFunddetail.getUploadtime());
        }
        if (serviceFunddetail.getJxrq() != null) {
            wrappers.like(ServiceFunddetail::getJxrq, serviceFunddetail.getJxrq());
        }
        if (StringUtils.isNotBlank(serviceFunddetail.getIdcardno())) {
            wrappers.eq(ServiceFunddetail::getIdcardno, serviceFunddetail.getIdcardno());
        }
        if (StringUtils.isNotBlank(serviceFunddetail.getApplytype())) {
            wrappers.eq(ServiceFunddetail::getApplytype, serviceFunddetail.getApplytype());
        }
        if (serviceFunddetail.getDel_flag() != null) {
            wrappers.eq(ServiceFunddetail::getDel_flag, serviceFunddetail.getDel_flag());
        }
        return this.list(wrappers);
    }
@@ -256,7 +267,8 @@
            taxMoneyVO.setFirstDay(firstDay);
//            taxMoneyVO.setApplyType(Long.valueOf(serviceFunddetail.getApplytype()));
            taxMoneyVO.setFundID(serviceFunddetail.getFundid());
            taxMoneyVO.setBeneficiaryNo(serviceFunddetail.getBeneficiaryno());
//            taxMoneyVO.setBeneficiaryNo(serviceFunddetail.getBeneficiaryno());
            taxMoneyVO.setIDCard(serviceFunddetail.getIdcardno());
            //查出税前、税、税后的总额(不包含本次)
            TaxMoneySumEO taxSum = serviceFunddetailMapper.getTaxSum(taxMoneyVO);
            if (ObjectUtils.isEmpty(taxSum)) {
@@ -329,4 +341,61 @@
        return true;
    }
    @Override
    public Map<String, Double> performance(ServiceFunddetail serviceFunddetail) {
        //根据"受益人编号"和"绩效日期(年份)"查询个人历史绩效
        ServiceFunddetail serviceFunddetailEo = new ServiceFunddetail();
        serviceFunddetailEo.setIdcardno(serviceFunddetail.getIdcardno());
        serviceFunddetailEo.setApplytype("5");
        Calendar cal = Calendar.getInstance();
        //默认本年度
        serviceFunddetailEo.setJxrq(String.valueOf(cal.get(Calendar.YEAR)));
        List<ServiceFunddetail> serviceFunddetails = queryList(serviceFunddetailEo);
        //统计历史的税
        BigDecimal historyTax = BigDecimal.valueOf(0.00);
        //计算扣去每月5000的历史税前金额
        BigDecimal historyTaxBefore = BigDecimal.valueOf(0.00);
        //本月是否已经算过绩效(下面扣除5000需要用到这个,如果本月已经扣过5000,就不再扣了)
        Boolean deduct = false;
        //获取当前月份
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
        String nowMonth = sdf.format(date);
        for (ServiceFunddetail serviceFunddetail1 : serviceFunddetails) {
            historyTaxBefore = historyTaxBefore.add(BigDecimal.valueOf(serviceFunddetail1.getAmount())).subtract(BigDecimal.valueOf(5000));
            historyTax = historyTax.add(BigDecimal.valueOf(serviceFunddetail1.getTaxamount()));
            if (serviceFunddetail1.getJxrq().equals(nowMonth)) {
                deduct = true;
            }
        }
        BigDecimal allValue = BigDecimal.valueOf(0.00);
        //先查询一下本月是否已经算过绩效(一个月只减一次5000,如果上一次已经减过,这一次就不在减了)
        if (deduct == true) {
            //本月已经减过5000了
            allValue = historyTaxBefore.add(BigDecimal.valueOf(serviceFunddetail.getAmount()));
        } else {
            BigDecimal subtract = BigDecimal.valueOf(serviceFunddetail.getAmount()).subtract(BigDecimal.valueOf(5000));
            allValue = historyTaxBefore.add(subtract);
        }
        //计算加上本次的税前金额的总税
        BigDecimal personTaxation = PerformanceTaxtUtils.getPersonTaxation(allValue);
        //计算本次的税
        BigDecimal nowSingleTax = personTaxation.subtract(historyTax);
        //计算本次的税后
        BigDecimal taxAfter = BigDecimal.valueOf(serviceFunddetail.getAmount()).subtract(nowSingleTax);
        //将计算出来的数据放到serviceFunddetail中
        serviceFunddetail.setTaxamount(nowSingleTax.doubleValue());
        serviceFunddetail.setTaxedamount(taxAfter.doubleValue());
        serviceFunddetail.setJxrq(nowMonth);
        save(serviceFunddetail);
        Map map = new HashMap();
        map.put("amount", serviceFunddetail.getAmount());
        map.put("taxedamount", taxAfter.doubleValue());
        return map;
    }
}
ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganMapper.xml
@@ -33,33 +33,33 @@
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="applicantUserID" column="ApplicantUserID"/>
        <result property="applicantUserName" column="ApplicantUserName"/>
        <result property="applicantTime" column="ApplicantTime"/>
        <result property="checkUserID" column="CheckUserID"/>
        <result property="checkUserName" column="CheckUserName"/>
        <result property="checkTime" column="CheckTime"/>
        <result property="checkSuggestion" column="CheckSuggestion"/>
        <result property="allocationStatus" column="AllocationStatus"/>
        <result property="applicantuserid" column="ApplicantUserID"/>
        <result property="applicantusername" column="ApplicantUserName"/>
        <result property="applicanttime" column="ApplicantTime"/>
        <result property="checkuserid" column="CheckUserID"/>
        <result property="checkusername" column="CheckUserName"/>
        <result property="checktime" column="CheckTime"/>
        <result property="checksuggestion" column="CheckSuggestion"/>
        <result property="allocationstatus" column="AllocationStatus"/>
        <result property="name" column="Name"/>
        <result property="sexOMMENT" column="SexOMMENT"/>
        <result property="idCardType" column="IDCardType"/>
        <result property="idCardNo" column="IDCardNo"/>
        <result property="sex" column="Sex"/>
        <result property="idcardtype" column="IDCardType"/>
        <result property="idcardno" column="IDCardNo"/>
        <result property="age" column="Age"/>
        <result property="ageUnit" column="AgeUnit"/>
        <result property="ageunit" column="AgeUnit"/>
        <result property="birthday" column="Birthday"/>
        <result property="phone" column="Phone"/>
        <result property="residenceAddress" column="ResidenceAddress"/>
        <result property="residenceProvince" column="ResidenceProvince"/>
        <result property="residenceProvinceName" column="ResidenceProvinceName"/>
        <result property="residenceCity" column="ResidenceCity"/>
        <result property="residenceCityName" column="ResidenceCityName"/>
        <result property="residenceTown" column="ResidenceTown"/>
        <result property="residenceTownName" column="ResidenceTownName"/>
        <result property="residenceCommunity" column="ResidenceCommunity"/>
        <result property="residenceCommunityName" column="ResidenceCommunityName"/>
        <result property="residenceCountyCode" column="ResidenceCountyCode"/>
        <result property="residenceCountyName" column="ResidenceCountyName"/>
        <result property="residenceaddress" column="ResidenceAddress"/>
        <result property="residenceprovince" column="ResidenceProvince"/>
        <result property="residenceprovincename" column="ResidenceProvinceName"/>
        <result property="residencecity" column="ResidenceCity"/>
        <result property="residencecityname" column="ResidenceCityName"/>
        <result property="residencetown" column="ResidenceTown"/>
        <result property="residencetownname" column="ResidenceTownName"/>
        <result property="residencecommunity" column="ResidenceCommunity"/>
        <result property="residencecommunityname" column="ResidenceCommunityName"/>
        <result property="residencecountycode" column="ResidenceCountyCode"/>
        <result property="residencecountyname" column="ResidenceCountyName"/>
    </resultMap>
    <sql id="selectServiceDonateorganVo">
@@ -103,7 +103,7 @@
               CheckSuggestion,
               AllocationStatus,
               Name,
               SexOMMENT,
               Sex,
               IDCardType,
               IDCardNo,
               Age,
ruoyi-project/src/main/resources/mapper/project/ServiceExternalpersonGroupMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.mapper.ServiceExternalpersonGroupMapper">
    <resultMap type="com.ruoyi.project.domain.ServiceExternalpersonGroup" id="ServiceExternalpersonGroupResult">
        <result property="id" column="id"/>
        <result property="userId" column="user_id"/>
        <result property="groupId" column="group_id"/>
        <result property="groupdesc" column="groupdesc"/>
        <result property="userNo" column="user_no"/>
        <result property="userName" column="user_name"/>
    </resultMap>
    <resultMap type="com.ruoyi.project.domain.vo.ServicePersonInfoVo" id="ServicePersonInfo">
        <result property="userId" column="user_id"/>
        <result property="groupId" column="group_id"/>
        <result property="groupdesc" column="groupdesc"/>
        <result property="userNo" column="user_no"/>
        <result property="userName" column="user_name"/>
        <result property="IDCardNo" column="IDCardNo"/>
        <result property="telephone" column="Telephone"/>
        <result property="userType" column="UserType"/>
        <result property="unitName" column="UnitName"/>
        <result property="unitNo" column="UnitNo"/>
        <result property="title" column="Title"/>
        <result property="depositBank" column="DepositBank"/>
        <result property="bankCardNo" column="BankCardNo"/>
    </resultMap>
    <sql id="selectServiceExternalpersonGroupVo">
        select id, user_id, group_id, groupdesc, user_no, user_name
        from service_externalperson_group
    </sql>
    <select id="selectServiceExternalpersonGroupList"
            parameterType="com.ruoyi.project.domain.ServiceExternalpersonGroup"
            resultMap="ServiceExternalpersonGroupResult">
        <include refid="selectServiceExternalpersonGroupVo"/>
        <where>
            <if test="userId != null ">and user_id = #{userId}</if>
            <if test="groupId != null ">and group_id = #{groupId}</if>
            <if test="groupdesc != null  and groupdesc != ''">and groupdesc = #{groupdesc}</if>
            <if test="userNo != null  and userNo != ''">and user_no = #{userNo}</if>
            <if test="userName != null  and userName != ''">and user_name like concat('%', #{userName}, '%')</if>
        </where>
    </select>
    <select id="getPersonInfo" parameterType="java.lang.Long" resultMap="ServicePersonInfo">
        SELECT user_id,
               group_id,
               groupdesc,
               user_no,
               user_name,
               IDCardNo,
               Telephone,
               UserType,
               UnitName,
               UnitNo,
               Title,
               DepositBank,
               BankCardNo
        FROM service_externalperson_group
                 JOIN service_externalperson ON service_externalperson_group.user_id = service_externalperson.ID
            AND service_externalperson.del_flag = 0 and service_externalperson.userstatus = 1 and group_id = #{groupId}
    </select>
</mapper>
ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
@@ -56,6 +56,7 @@
        <result property="riqi" column="riqi"/>
        <result property="bh" column="bh"/>
        <result property="checkstatus" column="checkstatus"/>
        <result property="performancetype" column="performancetype"/>
    </resultMap>
@@ -111,11 +112,13 @@
               zffs,
               riqi,
               bh,
               checkstatus
               checkstatus,
               performancetype
        from service_fund
    </sql>
    <select id="selectServiceFundList" parameterType="com.ruoyi.project.domain.ServiceFund" resultMap="ServiceFundResult">
    <select id="selectServiceFundList" parameterType="com.ruoyi.project.domain.ServiceFund"
            resultMap="ServiceFundResult">
        <include refid="selectServiceFundVo"/>
        where del_flag = '0'
ruoyi-project/src/main/resources/mapper/project/ServiceFundSharedMapper.xml
@@ -60,7 +60,8 @@
        <result property="zffs" column="zffs"/>
        <result property="riqi" column="riqi"/>
        <result property="bh" column="bh"/>
        <result property="checkstatus" column="checkstatus"/>
        <result property="checkstatus" column="checkstatus"/>
        <result property="performancetype" column="performancetype"/>
    </resultMap>
    <sql id="selectServiceFundSharedVo">
@@ -119,7 +120,8 @@
               zffs,
               riqi,
               bh,
                checkstatus
               checkstatus,
               performancetype
        from service_fund_shared
    </sql>
ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
@@ -58,6 +58,7 @@
        <result property="subjecttypename" column="subjecttypename"/>
        <result property="annexfiles" column="AnnexFiles"/>
        <result property="taxTime" column="tax_time"/>
        <result property="jxrq" column="jxrq"/>
    </resultMap>
    <sql id="selectServiceFunddetailVo">
@@ -113,7 +114,8 @@
               subjecttype,
               subjecttypename,
               AnnexFiles,
               tax_time
               tax_time,
               jxrq
        from service_funddetail
    </sql>
@@ -261,8 +263,7 @@
        where fundID &lt; #{fundID}
          and tax_time &lt; #{taxTime}
          and tax_time >= #{firstDay}
          -- and ApplyType = #{applyType}
          and BeneficiaryNo = #{beneficiaryNo}
          and IDCardNo=#{IDCard}
          and ApplyType in (1, 2)
    </select>
ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementMapper.xml
@@ -61,6 +61,7 @@
        <result property="riqi" column="riqi"/>
        <result property="bh" column="bh"/>
        <result property="checkstatus" column="checkstatus"/>
        <result property="performancetype" column="performancetype"/>
    </resultMap>
    <sql id="selectServiceReimbursementVo">
@@ -117,7 +118,8 @@
               zffs,
               riqi,
               bh,
               checkstatus
               checkstatus,
               performancetype
        from service_reimbursement
    </sql>
ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementSharedMapper.xml
@@ -64,6 +64,7 @@
        <result property="riqi" column="riqi"/>
        <result property="bh" column="bh"/>
        <result property="checkstatus" column="checkstatus"/>
        <result property="performancetype" column="performancetype"/>
    </resultMap>
    <sql id="selectServiceReimbursementSharedVo">
@@ -125,7 +126,8 @@
               zffs,
               riqi,
               bh,
               checkstatus
               checkstatus,
               performancetype
        from service_reimbursement_shared
    </sql>