fuliqi
2024-11-18 a1969bc264f5842b87205ffc9fa77e56c51d3058
ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
@@ -2,22 +2,23 @@
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.CalculateRule;
import com.ycl.platform.domain.entity.ContractScore;
import com.ycl.platform.mapper.CalculateRuleMapper;
import com.ycl.platform.mapper.ContractScoreMapper;
import com.ycl.platform.mapper.TContractMapper;
import com.ycl.platform.mapper.YwUnitMapper;
import com.ycl.platform.service.IContractScoreService;
import org.apache.commons.lang3.ObjectUtils;
import org.aspectj.weaver.ast.Var;
import com.ycl.system.entity.SysUser;
import com.ycl.utils.DateUtils;
import com.ycl.utils.SecurityUtils;
import enumeration.general.AuditingStatus;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import utils.DateUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 合同打分Service业务层处理
@@ -26,28 +27,13 @@
 * @date 2024-04-01
 */
@Service
public class ContractScoreServiceImpl extends ServiceImpl<ContractScoreMapper, ContractScore> implements IContractScoreService
{
    @Autowired
    private ContractScoreMapper contractScoreMapper;
    @Autowired
    private YwUnitMapper ywunitMapper;
    @Autowired
    private TContractMapper contractMapper;
    @Autowired
    private CalculateRuleMapper calculateRuleMapper;
@RequiredArgsConstructor
public class ContractScoreServiceImpl extends ServiceImpl<ContractScoreMapper, ContractScore> implements IContractScoreService {
    /**
     * 查询合同打分
     *
     * @param id 合同打分主键
     * @return 合同打分
     */
    @Override
    public ContractScore selectDefaultScoreById(Long id)
    {
        return contractScoreMapper.selectDefaultScoreById(id);
    }
    private final ContractScoreMapper contractScoreMapper;
    private final YwUnitMapper ywunitMapper;
    private final TContractMapper contractMapper;
    private final CalculateRuleMapper calculateRuleMapper;
    /**
     * 查询合同打分列表
@@ -56,73 +42,79 @@
     * @return 合同打分
     */
    @Override
    public List<ContractScore> selectDefaultScoreList(ContractScore contractScore)
    {
    public List<ContractScore> selectDefaultScoreList(ContractScore contractScore) {
        //避免搜索条件失效
        if(contractScore.getUnitId()==null) {
            //TODO:数据权限
            Integer unitId = SecurityUtils.getUnitId();
            Long uid = null;
            if (Objects.nonNull(unitId)) {
                uid = Long.valueOf(unitId);
            }
            contractScore.setUnitId(uid);
        }
        if(contractScore.getCreateStartTime()!=null) {
            contractScore.setCreateStartTime(DateUtils.getDayStart(contractScore.getCreateStartTime()));
        }
        if(contractScore.getCreateEndTime()!=null) {
            contractScore.setCreateEndTime(DateUtils.getDayStart(contractScore.getCreateEndTime()));
        }
        if(contractScore.getAuditingStartTime()!=null) {
            contractScore.setAuditingStartTime(DateUtils.getDayStart(contractScore.getAuditingStartTime()));
        }
        if(contractScore.getAuditingEndTime()!=null) {
            contractScore.setAuditingEndTime(DateUtils.getDayStart(contractScore.getAuditingEndTime()));
        }
        return contractScoreMapper.selectDefaultScoreList(contractScore);
    }
    @Override
    public ContractScore getById(Serializable id) {
        //TODO:回显优化
        ContractScore contractScore = super.getById(id);
        List<String> ruleIds = new ArrayList<>();
        ruleIds.add(contractScore.getRuleName().split("/")[0].trim());
        ruleIds.add(contractScore.getRuleId()+"");
        contractScore.setRuleIdsArray(ruleIds);
        return contractScore;
    }
    @Override
    public boolean save(ContractScore contractScore) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        contractScore.setCreateUserId(user.getUserId());
        contractScore.setCreateUser(user.getNickName());
        contractScore.setAuditingStatus(AuditingStatus.WAIT);
//        contractScore.setRuleIds(Arrays.stream(contractScore.getRuleIdsArray()).map(String::valueOf).collect(Collectors.joining(",")));
//        contractScore.setRuleIdsArray(Arrays.stream(contractScore.getRuleIds().split(",")).map(Long::parseLong).toArray(Long[]::new));
        contractScore.setUpdateTime(new Date());
        return super.save(contractScore);
    }
    @Override
    public boolean updateById(ContractScore contractScore) {
        contractScore.setRuleId(Long.parseLong(contractScore.getRuleIdsArray().get(1)));
        contractScore.setUpdateTime(new Date());
        contractScore.setAuditingStatus(AuditingStatus.WAIT);
        return super.updateById(contractScore);
    }
    @Override
    public boolean audit(ContractScore contractScore) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        contractScore.setAuditingTime(com.ycl.utils.DateUtils.getNowDate());
        contractScore.setAuditingUser(user.getNickName());
        contractScore.setAuditingUserId(user.getUserId());
        return super.updateById(contractScore);
    }
    @Override
    public List<ContractScore> getDateRangeScoreByContractId(Long id, String startTime, String endTime) {
        return new LambdaQueryChainWrapper<>(contractScoreMapper)
                .eq(ObjectUtils.isNotEmpty(contractScore.getUnitId()), ContractScore::getUnitId, contractScore.getUnitId())
                .between(ObjectUtils.isNotEmpty(contractScore.getCreateStartTime()), ContractScore::getCreateTime, contractScore.getCreateStartTime(), contractScore.getCreateEndTime())
                .between(ObjectUtils.isNotEmpty(contractScore.getAuditingStartTime()), ContractScore::getAuditingTime, contractScore.getAuditingStartTime(), contractScore.getAuditingEndTime())
                .eq(ObjectUtils.isNotEmpty(contractScore.getAuditingStatus()), ContractScore::getAuditingStatus, contractScore.getAuditingStatus())
                .orderByDesc(ContractScore::getCreateTime)
                .list()
                .stream().peek(
                        item -> {
                            item.setUnitName(ywunitMapper.selectById(item.getUnitId()).getUnitName());
                            item.setContractName(contractMapper.selectById(item.getContractId()).getName());
                            item.setRuleIdsArray(Arrays.stream(item.getRuleIds().split(",")).map(Long::parseLong).toArray(Long[]::new));
                            List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper).in(CalculateRule::getId, item.getRuleIdsArray()).list();
                            item.setRuleName(String.join(" / ", new String[]{list.get(0).getRuleName(), list.get(1).getRuleDesc(), list.get(2).getRuleCondition()}));
                        }
                ).toList();
                .eq(ContractScore::getContractId, id)
                .between(ContractScore::getCreateTime, startTime, endTime)
                .eq(ContractScore::getAuditingStatus, AuditingStatus.PASS)
                .list();
    }
    /**
     * 新增合同打分
     *
     * @param contractScore 合同打分
     * @return 结果
     */
    @Override
    public int insertDefaultScore(ContractScore contractScore)
    {
        contractScore.setCreateTime(DateUtils.getNowDate());
        return contractScoreMapper.insertDefaultScore(contractScore);
    }
    /**
     * 修改合同打分
     *
     * @param contractScore 合同打分
     * @return 结果
     */
    @Override
    public int updateDefaultScore(ContractScore contractScore)
    {
        contractScore.setUpdateTime(DateUtils.getNowDate());
        return contractScoreMapper.updateDefaultScore(contractScore);
    }
    /**
     * 批量删除合同打分
     *
     * @param ids 需要删除的合同打分主键
     * @return 结果
     */
    @Override
    public int deleteDefaultScoreByIds(Long[] ids)
    {
        return contractScoreMapper.deleteDefaultScoreByIds(ids);
    }
    /**
     * 删除合同打分信息
     *
     * @param id 合同打分主键
     * @return 结果
     */
    @Override
    public int deleteDefaultScoreById(Long id)
    {
        return contractScoreMapper.deleteDefaultScoreById(id);
    }
}