This commit is contained in:
zhouwentao 2024-05-18 22:09:40 +08:00
parent 4d0e381880
commit 39a83b732d
19 changed files with 306 additions and 78 deletions

View File

@ -85,6 +85,8 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/wx/user/cancelQrCode/**","anon");//取消微信二维码登录
filterChainDefinitionMap.put("/wx/user/updateQrCodeStatus/**","anon");//
filterChainDefinitionMap.put("/wx/user/getQrCodeStatus/**","anon");//
filterChainDefinitionMap.put("/web/user/checkPhoneAvailable","anon");//判断手机号是否可用
filterChainDefinitionMap.put("/web/user/register","anon");//前台页面注册
filterChainDefinitionMap.put("/mini/user/phoneLogin","anon");//小程序手机号登录

View File

@ -220,4 +220,6 @@ public class SysUser implements Serializable {
* 抖音openId
*/
private String dyOpenId;
private String ip;
}

View File

@ -20,6 +20,8 @@ public class SysLoginModel {
@ApiModelProperty(value = "验证码key")
private String checkKey;
@ApiModelProperty(value = "手机号")
private String phone;
public String getUsername() {
return username;
}
@ -52,4 +54,11 @@ public class SysLoginModel {
this.checkKey = checkKey;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}

View File

@ -426,4 +426,17 @@ public interface ISysUserService extends IService<SysUser> {
*/
void checkUserAdminRejectDel(String ids);
/**
* 判断手机号是否可使用
* @param phone
* @return
*/
boolean checkPhoneAvailable(String phone);
/**
* 判断同ip是否注册过账号
* @param ipAddr
* @return
*/
boolean checkIpAvailable(String ipAddr);
}

View File

@ -47,6 +47,7 @@ import org.jeecg.modules.system.vo.lowapp.DepartAndUserInfo;
import org.jeecg.modules.system.vo.lowapp.DepartInfo;
import org.jeecg.modules.system.vo.lowapp.AppExportUserVo;
import org.jeecg.modules.system.vo.lowapp.UpdateDepartInfo;
import org.jeecg.modules.yx.constant.YxConstant;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
@ -1824,4 +1825,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
throw new JeecgBootException("admin用户不允许删除");
}
}
@Override
public boolean checkPhoneAvailable(String phone) {
if (StringUtils.isBlank(phone)) {
return false;
}
long count = this.count(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhone, phone).eq(SysUser::getStatus, 1).eq(SysUser::getDelFlag, 0));
return count==0;
}
@Override
public boolean checkIpAvailable(String ipAddr){
if (StringUtils.isBlank(ipAddr)) {
return false;
}
long count = this.count(new LambdaQueryWrapper<SysUser>().eq(SysUser::getIp, ipAddr).eq(SysUser::getStatus, 1).eq(SysUser::getDelFlag, 0));
return count<= YxConstant.ipRegisterNum;
}
}

View File

@ -1,16 +1,25 @@
package org.jeecg.modules.web.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.IpUtils;
import org.jeecg.common.util.PasswordUtil;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.mini.wx.model.WeXinConfig;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.model.SysLoginModel;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.web.service.WebUserService;
import org.jeecg.modules.yx.constant.YxConstant;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* @author ZhouWenTao
@ -21,6 +30,8 @@ import javax.annotation.Resource;
@Api(tags = "前台用户接口")
@Slf4j
public class WebUserController {
@Resource
private ISysUserService sysUserService;
@Resource
private WebUserService webUserService;
@Resource
@ -28,6 +39,48 @@ public class WebUserController {
@Resource
private RedisUtil redisUtil;
@RequestMapping(value = "checkPhoneAvailable")
@ApiOperation(value = "判断手机号是否可用")
public Result<?> checkPhoneAvailable(String phone){
return Result.OK(sysUserService.checkPhoneAvailable(phone));
}
@RequestMapping(value = "register",method = RequestMethod.POST)
@ApiOperation(value = "账号注册")
public Result<?> register(@RequestBody SysLoginModel sysLoginModel, HttpServletRequest request){
String ipAddr = IpUtils.getIpAddr(request);
String phone = sysLoginModel.getPhone();
String password = sysLoginModel.getPassword();
if (!sysUserService.checkPhoneAvailable(phone)) {
return Result.error("手机号已被注册");
}
if(!sysUserService.checkIpAvailable(ipAddr)){
return Result.error(String.format("当前IP已注册过%s个用户不可再继续注册",YxConstant.ipRegisterNum));
}
//如果手机号也没有那就说明这个是新用户
String salt = oConvertUtils.randomGen(8);
//新用户
SysUser user = new SysUser();
user.setUsername(phone);
user.setRealname(phone);
user.setSalt(salt);
String encryptPassword = PasswordUtil.encrypt(phone, password, salt);
user.setPassword(encryptPassword);
user.setStatus(1);
user.setPhone(phone);
user.setUserIdentity(CommonConstant.USER_IDENTITY_1);
user.setDelFlag(CommonConstant.DEL_FLAG_0);
user.setOrgCode(null);
user.setIp(ipAddr);
sysUserService.saveUser(user, null, null, null);
//注册成功后直接登录
sysLoginModel.setUsername(sysLoginModel.getPhone());
return webUserService.loginPasswd(sysLoginModel);
//return Result.OK("注册成功!");
}
@RequestMapping(value = "/login/passwd", method = RequestMethod.POST)
@ApiOperation(value = "手机号密码登录")
public Result<?> loginPasswd(@RequestBody SysLoginModel sysLoginModel){

View File

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.math.BigDecimal;
@ -78,6 +79,7 @@ public class RecommendMajorDTO implements Serializable {
private String rulesEnrollProbability;
@ApiModelProperty(value = "录取概率计算规则运算符")
private String probabilityOperator;
@ApiModelProperty(value = "学年制")
private Integer studyYear=0;
private Integer semester;
@ -150,4 +152,11 @@ public class RecommendMajorDTO implements Serializable {
private String xkfl;
@ApiModelProperty(value = "专业类")
private String zyl;
@ApiModelProperty(value = "内部折合分数")
private BigDecimal privateStudentScore;
@ApiModelProperty(value = "内部录取方式")
private String privateRulesEnrollProbability;
@ApiModelProperty(value = "内部录取方式运算符")
private String privateProbabilityOperator;
}

View File

@ -76,4 +76,8 @@ public class YxConstant {
public static BigDecimal bigDecimal025 = new BigDecimal("0.25");
public static final String REDIS_SCORE_KEY="USER_SCORE_";
//同ip仅可注册账户数量
public static final Integer ipRegisterNum = 3;
}

View File

@ -132,4 +132,15 @@ public class YxCalculationMajor implements Serializable {
@Excel(name = "考试类型(统考/校考)", width = 15)
@ApiModelProperty(value = "考试类型(统考/校考)")
private String kslx;
@Excel(name = "内部录取方式", width = 15)
@ApiModelProperty(value = "内部录取方式")
private String privateRulesEnrollProbability;
@Excel(name = "内部录取方式运算符", width = 15)
@ApiModelProperty(value = "内部录取方式运算符")
private String privateProbabilityOperator;
@Excel(name = "内部折合分数", width = 15)
@ApiModelProperty(value = "内部折合分数")
private java.math.BigDecimal privateStudentConvertedScore;
}

View File

@ -64,18 +64,8 @@ public class YxSchoolMajor implements Serializable {
@Excel(name = "科类(文科/理科)", width = 15)
@ApiModelProperty(value = "科类(文科/理科)")
private java.lang.String category;
/**录取方式缩写*/
@Excel(name = "录取方式缩写", width = 15)
@ApiModelProperty(value = "录取方式缩写")
private String rulesEnrollProbabilitySx;
/**录取概率规则*/
@Excel(name = "录取方式", width = 15)
@ApiModelProperty(value = "录取方式")
private String rulesEnrollProbability;
@Excel(name = "录取概率计算规则运算符", width = 15)
@ApiModelProperty(value = "录取概率计算规则运算符")
private String probabilityOperator;
@Excel(name = "文化分省控线", width = 15)
@ApiModelProperty(value = "文化分省控线")
@ -164,4 +154,24 @@ public class YxSchoolMajor implements Serializable {
@Excel(name = "考试类型(统考/校考)", width = 15)
@ApiModelProperty(value = "考试类型(统考/校考)")
private String kslx;
/**录取方式缩写*/
@Excel(name = "录取方式缩写", width = 15)
@ApiModelProperty(value = "录取方式缩写")
private String rulesEnrollProbabilitySx;
/**录取概率规则*/
@Excel(name = "录取方式", width = 15)
@ApiModelProperty(value = "录取方式")
private String rulesEnrollProbability;
@Excel(name = "录取方式运算符", width = 15)
@ApiModelProperty(value = "录取方式运算符")
private String probabilityOperator;
@Excel(name = "内部录取方式", width = 15)
@ApiModelProperty(value = "内部录取方式")
private String privateRulesEnrollProbability;
@Excel(name = "内部录取方式运算符", width = 15)
@ApiModelProperty(value = "内部录取方式运算符")
private String privateProbabilityOperator;
}

View File

@ -19,5 +19,7 @@ public interface YxCalculationMajorMapper extends BaseMapper<YxCalculationMajor>
List<RecommendMajorDTO> recommendMajorListBenOrZhuan(@Param(value = "tableName")String tableName,@Param("queryvo") QueryRecommendMajorVO queryRecommendMajorVO);
List<RecommendMajorDTO> recommendMajorList(@Param(value = "tableName")String tableName,@Param("queryvo") QueryRecommendMajorVO queryRecommendMajorVO);
void insertBatch(@Param("tableName") String tableName,@Param("list") List<YxCalculationMajor> list);
void insertBatch(@Param("tableName") String tableName,@Param("scoreId")String scoreId,@Param("list") List<YxCalculationMajor> list);
void insertBatchNew(@Param("tableName") String tableName,@Param("scoreId")String scoreId,@Param("list") List<YxCalculationMajor> list);
}

View File

@ -4,19 +4,34 @@
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO ${tableName} (id, score_id, school_code, major_code, major_name, enrollment_code, tuition,
detail, category, rules_enroll_probability, batch, student_old_converted_score, student_converted_score,
enroll_probability, probability_operator, create_time, major_type, major_type_child, plan_num, main_subjects,
enroll_probability, probability_operator, major_type, major_type_child, plan_num, main_subjects,
limitation, other_score_limitation,rules_enroll_probability_sx,kslx)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.id}, #{item.scoreId}, #{item.schoolCode}, #{item.majorCode}, #{item.majorName},
(#{item.id},#{item.scoreId}, #{item.schoolCode}, #{item.majorCode}, #{item.majorName},
#{item.enrollmentCode}, #{item.tuition}, #{item.detail}, #{item.category}, #{item.rulesEnrollProbability},
#{item.batch}, #{item.studentOldConvertedScore}, #{item.studentConvertedScore}, #{item.enrollProbability},
#{item.probabilityOperator}, #{item.createTime}, #{item.majorType}, #{item.majorTypeChild}, #{item.planNum},
#{item.probabilityOperator}, #{item.majorType}, #{item.majorTypeChild}, #{item.planNum},
#{item.mainSubjects}, #{item.limitation}, #{item.otherScoreLimitation},#{item.rulesEnrollProbabilitySx},#{item.kslx}
)
</foreach>
</insert>
<insert id="insertBatchNew" parameterType="java.util.List">
INSERT INTO ${tableName} (id,score_id, school_code, major_code, major_name, enrollment_code, tuition,
detail, category, rules_enroll_probability, batch, student_old_converted_score, student_converted_score,
enroll_probability, probability_operator, major_type, major_type_child, plan_num, main_subjects,
limitation, other_score_limitation,rules_enroll_probability_sx,kslx,private_student_converted_score,private_rules_enroll_probability,private_probability_operator)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id},#{item.scoreId}, #{item.schoolCode}, #{item.majorCode}, #{item.majorName},
#{item.enrollmentCode}, #{item.tuition}, #{item.detail}, #{item.category}, #{item.rulesEnrollProbability},
#{item.batch}, #{item.studentOldConvertedScore}, #{item.studentConvertedScore}, #{item.enrollProbability},
#{item.probabilityOperator}, #{item.majorType}, #{item.majorTypeChild}, #{item.planNum},
#{item.mainSubjects}, #{item.limitation}, #{item.otherScoreLimitation},#{item.rulesEnrollProbabilitySx},#{item.kslx},
#{item.privateStudentConvertedScore},#{item.privateRulesEnrollProbability},#{item.privateProbabilityOperator}
)
</foreach>
</insert>
<select id="recommendMajorList" resultType="org.jeecg.modules.web.dto.RecommendMajorDTO">
SELECT
@ -31,6 +46,7 @@
cm.detail as majorDetail,
cm.category,
cm.batch,
cm.private_student_converted_score as privateStudentScore,
cm.student_old_converted_score as studentScore,
cm.student_converted_score,
cm.enroll_probability,

View File

@ -27,6 +27,8 @@
sm.english_score_limitation,
sm.chinese_score_limitation,
sm.cultural_score_limitation,
sm.private_rules_enroll_probability as privateRulesEnrollProbability,
sm.private_probability_operator as privateProbabilityOperator,
sm.rules_enroll_probability as rulesEnrollProbability,
sm.rules_enroll_probability_sx as rulesEnrollProbabilitySx,
sm.probability_operator as probabilityOperator,

View File

@ -97,10 +97,10 @@ public class BiaoyanService {
if (CollectionUtils.isNotEmpty(recommendMajorList)) {
//遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
rulesEnrollProbability = recommendMajorDTO.getRulesEnrollProbability();
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
probabilityOperator = recommendMajorDTO.getProbabilityOperator();
rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability();
probabilityOperator = recommendMajorDTO.getPrivateProbabilityOperator();
culturalControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getCulturalScore();
specialControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getSpecialScore();
//没有计算方式 没有往年录取分数线信息 或者没有过该批次 时跳过
@ -142,10 +142,18 @@ public class BiaoyanService {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//算分数
if ("高职高专".equals(recommendMajorDTO.getBatch())) {
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentScore(studentScore);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setPrivateStudentScore(studentScore);
//算页面展示分数
if (StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())) {
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), recommendMajorDTO.getProbabilityOperator()));
recommendMajorDTO.setStudentConvertedScore(recommendMajorDTO.getStudentScore());
}
//内部算分 专业分用 0.25
/*rulesEnrollProbability = "文*0.067+专*0.25";
probabilityOperator = "文*0.067+专*0.25";
@ -155,8 +163,19 @@ public class BiaoyanService {
}else{
//使用主考科目成绩将当期成绩按照专业录取分数方式折算
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore3, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore2, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator));
recommendMajorDTO.setPrivateStudentScore(studentScore);
//算页面展示分数
if (StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())) {
//计算分
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
professionalScore2, recommendMajorDTO.getFirstLevelDiscipline(), recommendMajorDTO.getProbabilityOperator()));
//折合分
recommendMajorDTO.setStudentConvertedScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
professionalScore3, recommendMajorDTO.getFirstLevelDiscipline(), recommendMajorDTO.getProbabilityOperator()));
}
}
if (CollectionUtils.isEmpty(historyMajorEnrollList)) {

View File

@ -77,17 +77,16 @@ public class BoYinService {
//遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
index ++;
rulesEnrollProbability = recommendMajorDTO.getRulesEnrollProbability();
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
probabilityOperator = recommendMajorDTO.getProbabilityOperator();
rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability();
probabilityOperator = recommendMajorDTO.getPrivateProbabilityOperator();
culturalControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getCulturalScore();
specialControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getSpecialScore();
//没有计算方式 跳过
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList().stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//没有往年录取分数线信息
if (CollectionUtils.isEmpty(historyMajorEnrollList) || !ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch())) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
@ -119,13 +118,29 @@ public class BoYinService {
if ("高职高专".equals(recommendMajorDTO.getBatch())) {
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentScore(studentScore);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setPrivateStudentScore(studentScore);
//展示
if(StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())){
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
activeCurrentUserScore.getProfessionalScore(),
recommendMajorDTO.getProbabilityOperator()));
recommendMajorDTO.setStudentConvertedScore(recommendMajorDTO.getStudentScore());
}
}else{
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(),by, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(),by, probabilityOperator);
recommendMajorDTO.setPrivateStudentScore(studentScore);
//将当期成绩按照专业录取分数方式折算
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator));
recommendMajorDTO.setStudentConvertedScore(studentScore);
if(StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())){
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
professionalScore,
recommendMajorDTO.getProbabilityOperator()));
recommendMajorDTO.setStudentConvertedScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
by,
recommendMajorDTO.getProbabilityOperator()));
}
}

View File

@ -104,10 +104,8 @@ public class MusicService {
if (CollectionUtils.isNotEmpty(recommendMajorList)) {
//遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
rulesEnrollProbability = recommendMajorDTO.getRulesEnrollProbability();
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
probabilityOperator = recommendMajorDTO.getProbabilityOperator();
rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability();
probabilityOperator = recommendMajorDTO.getPrivateProbabilityOperator();
culturalControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getCulturalScore();
specialControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getSpecialScore();
@ -115,7 +113,8 @@ public class MusicService {
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList().stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//没有往年录取分数线信息
if (CollectionUtils.isEmpty(historyMajorEnrollList) || !ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch())) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
@ -198,8 +197,15 @@ public class MusicService {
if ("高职高专".equals(recommendMajorDTO.getBatch())) {
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentScore(studentScore);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setPrivateStudentScore(studentScore);
if(StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())){
//TODO 这里改
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(), activeCurrentUserScore.getCulturalScore(),
activeCurrentUserScore.getProfessionalScore(),
recommendMajorDTO.getFirstLevelDiscipline(),
recommendMajorDTO.getProbabilityOperator()));
recommendMajorDTO.setStudentConvertedScore(recommendMajorDTO.getStudentScore());
}
/*//展示分数 专业分用用 0.167
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore2, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator));
//内部算分 专业分用 0.25
@ -211,8 +217,18 @@ public class MusicService {
}else{
//使用主考科目成绩将当期成绩按照专业录取分数方式折算
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore3, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore2, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator));
recommendMajorDTO.setPrivateStudentScore(studentScore);
if (StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())) {
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
professionalScore2,
recommendMajorDTO.getProbabilityOperator()));
recommendMajorDTO.setStudentConvertedScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
professionalScore3,
recommendMajorDTO.getProbabilityOperator()));
}
}
if ("文过专排主科".equals(rulesEnrollProbability)) {

View File

@ -78,10 +78,10 @@ public class WuDaoService {
//遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
index++;
rulesEnrollProbability = recommendMajorDTO.getRulesEnrollProbability();
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
probabilityOperator = recommendMajorDTO.getProbabilityOperator();
rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability();
probabilityOperator = recommendMajorDTO.getPrivateProbabilityOperator();
//没有计算方式 跳过
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
@ -132,13 +132,30 @@ public class WuDaoService {
if ("高职高专".equals(recommendMajorDTO.getBatch())) {
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentScore(studentScore);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setPrivateStudentScore(studentScore);
//展示
if(StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())){
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
activeCurrentUserScore.getProfessionalScore(),
recommendMajorDTO.getProbabilityOperator()));
recommendMajorDTO.setStudentConvertedScore(recommendMajorDTO.getStudentScore());
}
}else{
//使用主考科目成绩将当期成绩按照专业录取分数方式折算
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator));
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore3, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setPrivateStudentScore(studentScore);
//展示
if(StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())){
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
professionalScore,
recommendMajorDTO.getProbabilityOperator()));
recommendMajorDTO.setStudentConvertedScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
professionalScore3,
recommendMajorDTO.getProbabilityOperator()));
}
}
//判断录取方式分数是否过省控线

View File

@ -72,7 +72,6 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
yxHistoryMajorEnrollService.recommendMajorDTOListSetHistoryInfo(recommendMajorDTOList);
this.checkEnrollProbability(recommendMajorDTOList, userScore);
}
recommendMajorDTOList.stream().filter(r->r.getSchoolCode().equals("1470")).collect(Collectors.toList());
long endTime = new Date().getTime();
log.warn("测算专业录取率-耗费时长:" + (endTime - startTime));
//保存结果到用户的专业结果表
@ -86,6 +85,8 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
yxCalculationMajor.setDetail(recommendMajorDTO.getMajorDetail());
yxCalculationMajor.setScoreId(userScore.getId());
yxCalculationMajor.setStudentOldConvertedScore(recommendMajorDTO.getStudentScore());
yxCalculationMajor.setStudentConvertedScore(recommendMajorDTO.getStudentConvertedScore());
yxCalculationMajor.setPrivateStudentConvertedScore(recommendMajorDTO.getPrivateStudentScore());
//其他分数要求
if(true){
//语文成绩
@ -105,13 +106,14 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
otherScoreLimitation.append("语文成绩不低于").append(recommendMajorDTO.getProfessionalScoreLimitation().doubleValue()).append("分,");
}
if (otherScoreLimitation.length()>0) {
//recommendMajorDTO.setOtherScoreLimitation(otherScoreLimitation.substring(0,otherScoreLimitation.length()-2));
yxCalculationMajor.setOtherScoreLimitation(otherScoreLimitation.substring(0,otherScoreLimitation.length()-2));
}
}
calculationMajorList.add(yxCalculationMajor);
}
long saveStartTime = new Date().getTime();
baseMapper.insertBatch(userScore.getCalculationTableName(),calculationMajorList);
baseMapper.insertBatchNew(userScore.getCalculationTableName(),userScore.getId(),calculationMajorList);
//super.saveBatch(calculationMajorList,500);
long saveEndTime = new Date().getTime();
log.warn("插入数据耗费时长:" + (saveEndTime - saveStartTime));
@ -352,7 +354,7 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
yxCalculationMajor.setId(null);
yxCalculationMajor.setScoreId(newScoreId);
}
baseMapper.insertBatch(newCalculationMajorTableName,list);
baseMapper.insertBatch(newCalculationMajorTableName,newScoreId,list);
}
private void setSchoolTagsList(List<RecommendMajorDTO> recommendMajorList) {
@ -421,26 +423,6 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
} else {
betaRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
}
//zhuanService.zhuanRecommendMajorListSetEnrollProbability(recommendMajorDTOList,userScore);
/*if ("高职高专".equals(batch)) {
} else {
//判断 专业类别
if (YxConstant.betaMajorTypeList.contains(professionalCategory)) {
//如果当前专业是(美术设计类,书法类,体育类)
//不需要换算为往年分数
betaRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("音乐类".equals(professionalCategory)) {
//音乐类的
musicService.musicRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("表演类".equals(professionalCategory)) {
biaoyanService.biaoyanRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("舞蹈类".equals(professionalCategory)) {
wuDaoService.wudaoRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("播音与主持类".equals(professionalCategory)) {
boYinService.boYinRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
}
}*/
}
/**
@ -453,11 +435,13 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();
String rulesEnrollProbability = null;
String probabilityOperator = null;
String showRulesEnrollProbability = null;
String showProbabilityOperator = null;
String nowBatch = activeCurrentUserScore.getBatch();
BigDecimal studentScore = null;//学生折合分
BigDecimal privateStudentScore = null;//学生折合分显示用
BigDecimal culturalScore = activeCurrentUserScore.getCulturalScore();//学生的文化分
BigDecimal professionalScore = activeCurrentUserScore.getProfessionalScore();//学生的专业分
BigDecimal professionalScore2 = null;
BigDecimal nowYearDiff = null;//当前年分差
Map<String, YxHistoryScoreControlLine> historyScoreControlLineMap = yxHistoryScoreControlLineService.mapsBatchByProfessionalCategoryOfYear(Integer.parseInt(YxConstant.nowYear), professionalCategory, activeCurrentUserScore.getCognitioPolyclinic());
BigDecimal culturalControlLine = null;//文化分省控线
@ -471,10 +455,10 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
if (CollectionUtils.isNotEmpty(recommendMajorList)) {
//遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
rulesEnrollProbability = recommendMajorDTO.getRulesEnrollProbability();
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
probabilityOperator = recommendMajorDTO.getProbabilityOperator();
rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability();
probabilityOperator = recommendMajorDTO.getPrivateProbabilityOperator();
culturalControlLine = historyScoreControlLineMap.get(recommendMajorDTO.getBatch()).getCulturalScore();
specialControlLine = historyScoreControlLineMap.get(recommendMajorDTO.getBatch()).getSpecialScore();
//没有计算方式 跳过
@ -508,9 +492,17 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
continue;
}
//算分用
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setStudentScore(studentScore);
recommendMajorDTO.setPrivateStudentScore(studentScore);
if (StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())) {
//recommendMajorDTO.setStudentConvertedScore(studentScore);
//计算展示用分数
recommendMajorDTO.setStudentScore(ScoreUtil.convertIntoScore(recommendMajorDTO.getRulesEnrollProbability(),
activeCurrentUserScore.getCulturalScore(),
activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), recommendMajorDTO.getProbabilityOperator()));
}
//录取方式计算
if (rulesEnrollProbability.equals("文过专排主科")) {
@ -546,9 +538,6 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
enrollProbability = ScoreUtil.commonCheckEnrollProbabilityBeilv(enrollProbability);
recommendMajorDTO.setEnrollProbability(enrollProbability);
// recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
// recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));
//==============================================
}
}
long endTime = new Date().getTime();

View File

@ -231,6 +231,27 @@ public class ScoreUtil {
return activeCurrentUserScore.getProfessionalScore();
}
public static BigDecimal convertIntoScore(String rulesEnrollProbability,BigDecimal culturalScore,BigDecimal professionalScore,String operator){
BigDecimal score=new BigDecimal(0);
if (rulesEnrollProbability==null || culturalScore==null || professionalScore==null) {
return score;
}
if(StringUtils.isNotBlank(operator)) {
score = new BigDecimal("0");
String[] operators = operator.split("\\+");
for (String d : operators) {
String[] split = d.split("\\*");
if (split[0].contains("")) {
score = score.add(culturalScore.multiply(new BigDecimal(split[1])));
} else {
score = score.add(professionalScore.multiply(new BigDecimal(split[1])));
}
}
}
score = score.divide(decimal1,4, RoundingMode.HALF_UP);
return score;
}
/**
* 折合 分数成绩
* @param rulesEnrollProbability 分数折合方式(专过文排/文过专排/+/专7文3/专5文5/专3文7)