fuliqi
2024-12-08 c2fb54cf6794f250b1746c3f37e8403b516c1549
导入规则
5个文件已修改
83 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/ContractController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java
@@ -87,10 +87,8 @@
    private Integer deleted;
    @TableField(exist = false)
    @NotBlank
    private String ruleList;
    @TableField(exist = false)
    @NotNull
    private MultipartFile file;
}
ycl-server/src/main/java/com/ycl/platform/controller/ContractController.java
@@ -22,6 +22,7 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
/**
@@ -79,6 +80,17 @@
    }
    /**
     * 合同导入规则
     *
     * @return 导入结果
     */
    @Log(title = "合同导入", businessType = BusinessType.IMPORT)
    @PreAuthorize("@ss.hasPermi('system:user:import')")
    @PostMapping("/updateRule")
    public AjaxResult importRule(TContract tContract) throws IOException {
        return tContractService.importRule(tContract.getFile(), tContract);
    }
    /**
     * 获取【请填写功能名称】详细信息
     */
    @PreAuthorize("@ss.hasPermi('system:contract:query')")
ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java
@@ -9,6 +9,7 @@
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
/**
@@ -34,6 +35,13 @@
    AjaxResult importData(MultipartFile file, TContract tContract);
    /**
     * 导入合同规则
     * @param file 文件
     * @param tContract 合同信息
     * @return 导入结果
     */
    AjaxResult importRule(MultipartFile file, TContract tContract) throws IOException;
    /**
     * 分页查询
     *
     * @param query
ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -33,14 +34,13 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -159,6 +159,57 @@
    }
    @Override
    public AjaxResult importRule(MultipartFile file, TContract tContract) throws IOException {
        // 获取合同Excel规则
        List<CalculateRule> list = new ArrayList<>();
        if(file!=null) {
            EasyExcel.read(file.getInputStream(), CalculateRule.class, new PageReadListener<CalculateRule>(list::addAll)).sheet().doRead();
            // 遍历父子关系
            List<CalculateRule> calculateRulesToSave = new ArrayList<>();
            for (CalculateRule calculateRule : list) {
                // 判断数据完整性
                if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.warn("请选择" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "扣分方式");
                }
                if (RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY.equals(calculateRule.getDeductCategory()) && ObjectUtils.isEmpty(calculateRule.getCalcUnit())) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.warn("请填写" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "除以数量");
                }
                if (ObjectUtils.isEmpty(calculateRule.getCalcFraction())) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.warn("请填写" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "扣分数值");
                }
                // 保存规则
                if (StringUtils.isNotBlank(calculateRule.getRuleName())) {
                    calculateRule.setContractId(tContract.getId().intValue());
                    calculateRule.setCreateTime(DateUtils.getNowDate());
                    calculateRule.setUpdateTime(DateUtils.getNowDate());
                    calculateRulesToSave.add(calculateRule);
                }
            }
            if (!CollectionUtils.isEmpty(calculateRulesToSave)) {
                //删除原规则
                calculateRuleService.remove(new QueryWrapper<CalculateRule>().eq("contract_id", tContract.getId()));
                // 批量保存规则
                calculateRuleService.saveBatch(calculateRulesToSave);
            }
        }
        List<CalculateMoneyRule> moneyRule = JSON.parseArray(tContract.getRuleList(), CalculateMoneyRule.class).stream().peek(
                calculateMoneyRule -> calculateMoneyRule.setContractId(tContract.getId().intValue())
        ).collect(Collectors.toList());
        if (!CollectionUtils.isEmpty(moneyRule)) {
            //删除原规则
            calculateMoneyRuleService.remove(new QueryWrapper<CalculateMoneyRule>().eq("contract_id",tContract.getId()));
            //批量保存考核结果应用规则
            calculateMoneyRuleService.saveBatch(moneyRule);
        }
        return AjaxResult.success("操作成功");
    }
    @Override
    public Result selectAll(ContractQuery query) {
        IPage<ContractVO> page = PageUtil.getPage(query, ContractVO.class);
        query.setUnitId(SecurityUtils.getUnitId());
ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
@@ -42,7 +42,7 @@
    <select id="getCalculateRule" resultType="com.ycl.platform.domain.vo.CalculateRuleVO">
        select tc.unit_id ,tcr.*
        from t_contract tc
        left join t_calculate_rule tcr on tc.id = tcr.contract_id
        left join t_calculate_rule tcr on tc.id = tcr.contract_id and tcr.deleted =0
        <where>
            tc.deleted =0 and #{date} between tc.start_time and tc.end_time
        </where>