/*
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
|
*
|
* Redistribution and use in source and binary forms, with or without
|
* modification, are permitted provided that the following conditions are met:
|
*
|
* Redistributions of source code must retain the above copyright notice,
|
* this list of conditions and the following disclaimer.
|
* Redistributions in binary form must reproduce the above copyright
|
* notice, this list of conditions and the following disclaimer in the
|
* documentation and/or other materials provided with the distribution.
|
* Neither the name of the dreamlu.net developer nor the names of its
|
* contributors may be used to endorse or promote products derived from
|
* this software without specific prior written permission.
|
* Author: Chill 庄骞 (smallchill@163.com)
|
*/
|
package org.springblade.modules.answerRecord.service.impl;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.springblade.common.utils.SpringUtils;
|
import org.springblade.modules.answerRecord.dto.AnswerRecordDTO;
|
import org.springblade.modules.answerRecord.entity.AnswerRecordEntity;
|
import org.springblade.modules.answerRecord.mapper.AnswerRecordMapper;
|
import org.springblade.modules.answerRecord.service.IAnswerRecordService;
|
import org.springblade.modules.answerRecord.vo.AnswerRecordVO;
|
import org.springblade.modules.property.entity.PropertyCompanyEntity;
|
import org.springblade.modules.property.service.IPropertyCompanyService;
|
import org.springblade.modules.subjectChoices.vo.SubjectChoicesVO;
|
import org.springblade.modules.subjectOption.vo.SubjectOptionVO;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 答题记录表 服务实现类
|
*
|
* @author BladeX
|
* @since 2024-01-17
|
*/
|
@Service
|
public class AnswerRecordServiceImpl extends ServiceImpl<AnswerRecordMapper, AnswerRecordEntity> implements IAnswerRecordService {
|
|
@Override
|
public IPage<AnswerRecordVO> selectAnswerRecordPage(IPage<AnswerRecordVO> page, AnswerRecordVO answerRecord) {
|
return page.setRecords(baseMapper.selectAnswerRecordPage(page, answerRecord));
|
}
|
|
/**
|
* 查询答题记录表
|
*
|
* @param id 答题记录表ID
|
* @return 答题记录表
|
*/
|
@Override
|
public AnswerRecordDTO selectAnswerRecordById(Long id) {
|
return this.baseMapper.selectAnswerRecordById(id);
|
}
|
|
/**
|
* 查询答题记录表列表
|
*
|
* @param answerRecordDTO 答题记录表
|
* @return 答题记录表集合
|
*/
|
@Override
|
public List<AnswerRecordDTO> selectAnswerRecordList(AnswerRecordDTO answerRecordDTO) {
|
return this.baseMapper.selectAnswerRecordList(answerRecordDTO);
|
}
|
|
@Override
|
public Boolean saveAnswer(List<SubjectChoicesVO> subjectChoicesVO) {
|
BigDecimal bigDecimal = BigDecimal.valueOf(0);
|
List<AnswerRecordEntity> objects = new ArrayList<>();
|
// 遍历题目和选项
|
for (SubjectChoicesVO choicesVO : subjectChoicesVO) {
|
List<SubjectOptionVO> subjectOptionList = choicesVO.getSubjectOptionList();
|
if (choicesVO.getChoicesType().intValue() == 3) {
|
bigDecimal = bigDecimal.add(choicesVO.getScore());
|
}
|
for (SubjectOptionVO subjectOptionVO : subjectOptionList) {
|
// 删除掉之前保存的记录
|
remove(Wrappers.<AnswerRecordEntity>lambdaQuery()
|
.eq(AnswerRecordEntity::getPropertyId, choicesVO.getPropertyId())
|
.eq(AnswerRecordEntity::getSubjectChoicesId, choicesVO.getId()));
|
if (subjectOptionVO.getIds() != null) {
|
AnswerRecordDTO answerRecordDTO = new AnswerRecordDTO();
|
answerRecordDTO.setPropertyId(choicesVO.getPropertyId());
|
answerRecordDTO.setAnswerOption(subjectOptionVO.getId().toString());
|
answerRecordDTO.setSubjectChoicesId(choicesVO.getId());
|
answerRecordDTO.setSubjectOptionId(subjectOptionVO.getId());
|
objects.add(answerRecordDTO);
|
bigDecimal = bigDecimal.add(subjectOptionVO.getScore());
|
}
|
if (subjectOptionVO.getNumbers() != null) {
|
AnswerRecordDTO answerRecordDTO = new AnswerRecordDTO();
|
answerRecordDTO.setPropertyId(choicesVO.getPropertyId());
|
answerRecordDTO.setAnswerOption(subjectOptionVO.getId().toString());
|
answerRecordDTO.setSubjectChoicesId(choicesVO.getId());
|
answerRecordDTO.setAnswer(subjectOptionVO.getNumbers());
|
answerRecordDTO.setSubjectOptionId(subjectOptionVO.getId());
|
objects.add(answerRecordDTO);
|
BigDecimal multiply = BigDecimal.valueOf(subjectOptionVO.getNumbers()).multiply(subjectOptionVO.getScore());
|
bigDecimal = bigDecimal.subtract(multiply);
|
}
|
}
|
}
|
// 保存得分
|
IPropertyCompanyService bean = SpringUtils.getBean(IPropertyCompanyService.class);
|
PropertyCompanyEntity one = bean.getOne(Wrappers.<PropertyCompanyEntity>lambdaQuery().eq(PropertyCompanyEntity::getId, subjectChoicesVO.get(0).getPropertyId()));
|
if (subjectChoicesVO.get(0).getSubclassName().equals("基础信息")) {
|
one.setBaseInfoScore(bigDecimal);
|
} else if (subjectChoicesVO.get(0).getSubclassName().equals("经营信息")) {
|
one.setOperateinfoScore(bigDecimal);
|
} else if (subjectChoicesVO.get(0).getSubclassName().equals("纳税信息")) {
|
one.setTaxInfoScore(bigDecimal);
|
} else if (subjectChoicesVO.get(0).getSubclassName().equals("党建信息")) {
|
one.setPartyBuildingInfoScore(bigDecimal);
|
bean.update(Wrappers.<PropertyCompanyEntity>lambdaUpdate().set(PropertyCompanyEntity::getPartyBuildingInfoScore, bigDecimal)
|
.eq(PropertyCompanyEntity::getId, subjectChoicesVO.get(0).getPropertyId()));
|
} else if (subjectChoicesVO.get(0).getSubclassName().equals("企业良好行为")) {
|
one.setGoodCorporateScore(bigDecimal);
|
} else if (subjectChoicesVO.get(0).getSubclassName().equals("项目良好行为")) {
|
one.setGoodProjectScore(bigDecimal);
|
} else if (subjectChoicesVO.get(0).getSubclassName().equals("违法违规行为惩戒")) {
|
one.setLllegalAndIrregularScore(bigDecimal);
|
}
|
// 计算总分
|
BigDecimal add = one.getBaseInfoScore()
|
.add(one.getOperateinfoScore())
|
.add(one.getOperateinfoScore())
|
.add(one.getPartyBuildingInfoScore())
|
.add(one.getGoodCorporateScore())
|
.add(one.getGoodProjectScore())
|
.add(one.getLllegalAndIrregularScore())
|
.add(one.getEvaluateScore());
|
one.setAllScore(getAllScore(add));
|
bean.updateById(one);
|
return saveBatch(objects);
|
}
|
|
/**
|
* 判断结果,如果大于100 则设置100 小于/等于0 设置为0
|
*
|
* @param allScore
|
* @return
|
*/
|
private BigDecimal getAllScore(BigDecimal allScore) {
|
if (allScore.compareTo(BigDecimal.valueOf(0)) > 100) {
|
return BigDecimal.valueOf(100);
|
}
|
if (allScore.compareTo(BigDecimal.valueOf(0)) > 0) {
|
return allScore;
|
}
|
return BigDecimal.valueOf(0);
|
}
|
|
|
}
|