diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/WxController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/WxController.java new file mode 100644 index 0000000..53681d6 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/WxController.java @@ -0,0 +1,153 @@ +package org.jeecg.modules.api.controller; + + +import java.security.AlgorithmParameters; +import java.security.Key; +import java.security.Security; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +import com.alibaba.fastjson.JSONObject; +import com.xkcoding.http.HttpUtil; +import io.swagger.annotations.Api; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.common.util.*; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.model.WxModel; +import org.jeecg.modules.system.service.ISysUserService; +import org.jeecg.modules.yx.service.IYxUserScoreService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.security.spec.AlgorithmParameterSpec; +import java.util.Map; + +/** + * @Description + * @Author ZhouWenTao + * @Date 2024/2/6 21:19 + */ +@RequestMapping("/wx") +@RestController +@Api(tags = "微信接口") +public class WxController { + @Value("${wx.appId}") + private String wxAppId; + @Value("${wx.appSecret}") + private String wxAppSecret; + @Autowired + private RedisUtil redisUtil; + @Autowired + private ISysUserService sysUserService; + @Autowired + private IYxUserScoreService yxUserScoreService; + public static final String AES = "AES"; + public static final String AES_CBC_PADDING = "AES/CBC/PKCS7Padding"; + + @PostMapping("/login") + public Result wechatLogin(@RequestBody WxModel wxModel) { + String url = "https://api.weixin.qq.com/sns/jscode2session" + + "?appid=" + wxAppId + + "&secret=" + wxAppSecret + + "&grant_type=authorization_code" + + "&js_code=" + wxModel.code; + String s = HttpUtil.get(url); + JSONObject jsonObject = JSONObject.parseObject(s); + AssertUtils.notNull(jsonObject, "登录失败"); + String openId = jsonObject.getString("openid"); + String sessionKey = jsonObject.getString("session_key"); + SysUser user = sysUserService.getByWxOpenId(openId); + if (user == null) { + String salt = oConvertUtils.randomGen(8); + //新用户 + user = new SysUser(); + user.setWxOpenId(openId); + user.setUsername(salt); + user.setRealname("用户+" + salt); + user.setSalt(salt); + String encryptPassword = PasswordUtil.encrypt(salt, "123456", salt); + user.setPassword(encryptPassword); + user.setStatus(1); + //解密手机号 + user.setPhone(phoneDecrypt(wxModel.getEncryptedData(), sessionKey, wxModel.getIv())); + user.setUserIdentity(CommonConstant.USER_IDENTITY_1); + user.setDelFlag(CommonConstant.DEL_FLAG_0); + user.setOrgCode(null); + sysUserService.saveUser(user, null, null, null); + //默认用户有一个 分数信息 + yxUserScoreService.setDefaultScore(user.getId()); + } + String username = user.getUsername(); + String syspassword = user.getPassword(); + //1.生成token + String token = JwtUtil.sign(username, syspassword); + // 设置token缓存有效时间 + redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); + redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); + JSONObject obj = new JSONObject(); + obj.put("token", token); + obj.put("openId",openId); + obj.put("sessionKey",sessionKey); + obj.put("userInfo", user); + return Result.OK(obj); + } + + /** + * 解密手机号 + */ + @PostMapping("/phoneNumberDecrypt") + public Result phoneDecrypt(@RequestBody WxModel wxModel){ + //判断密文信息是否为空 + if (StringUtils.isNotBlank(wxModel.getSessionKey()) && StringUtils.isNotBlank(wxModel.getEncryptedData()) && StringUtils.isNotBlank(wxModel.getIv())) { + //解密出手机号 + String phoneNumber = phoneDecrypt(wxModel.getEncryptedData(), wxModel.getSessionKey(), wxModel.getIv()); + //获取该用户 + SysUser sysUser = sysUserService.getByWxOpenId(wxModel.getOpenId()); + if (sysUser!=null) { + //更新用户手机号 + sysUser.setPhone(phoneNumber); + sysUserService.updateById(sysUser); + } + } + return Result.OK(); + } + + public static String phoneDecrypt(String encrypted, String sessionKey, String iv) { + String phoneNumber = null; + try { + byte[] encrypdata = cn.hutool.core.codec.Base64.decode(encrypted); + byte[] ivData = cn.hutool.core.codec.Base64.decode(iv); + byte[] sessionKeyByte = cn.hutool.core.codec.Base64.decode(sessionKey); + AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivData); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + SecretKeySpec keySpec = new SecretKeySpec(sessionKeyByte, "AES"); + cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); + //解析解密后的手机号 + String data = new String(cipher.doFinal(encrypdata), "UTF-8"); + JSONObject jsonObject = JSONObject.parseObject(data); + phoneNumber = jsonObject.getString("phoneNumber"); + } catch (Exception e) { + throw new RuntimeException("解密与微信绑定的手机号失败", e); + } + return phoneNumber; + } + + /** + * * 初始化密钥 + */ + public static void init() throws Exception { + Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); + KeyGenerator.getInstance(AES).init(128); + } + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtMajorController.java index 848682d..c92a297 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtMajorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtMajorController.java @@ -30,4 +30,13 @@ public class ArtMajorController { String majorCode = queryRecommendMajorVO.getMajorCode(); return Result.OK(yxMajorService.findByMajorCode(majorCode)); } + + /** + * 小程序端 查专业 列表 + */ + @ApiOperation(value = "小程序端查专业列表") + @GetMapping("/miniMajorList") + public Result miniMajorList(QueryRecommendMajorVO queryRecommendMajorVO){ + return Result.OK(yxMajorService.miniMajorList(queryRecommendMajorVO)); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java index 815fc08..f7d23f9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java @@ -1,21 +1,37 @@ package org.jeecg.modules.art.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.AssertUtils; +import org.jeecg.modules.art.dto.ArtCalculateInvestmentDTO; import org.jeecg.modules.art.dto.ArtRecommendMajorBaseDTO; +import org.jeecg.modules.art.dto.ArtTestCulturalDTO; import org.jeecg.modules.art.dto.RecommendMajorDTO; +import org.jeecg.modules.art.vo.QueryCalculateInvestmentVO; import org.jeecg.modules.art.vo.QueryRecommendMajorVO; +import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll; +import org.jeecg.modules.yx.entity.YxHistoryScoreControlLine; +import org.jeecg.modules.yx.entity.YxSchool; +import org.jeecg.modules.yx.entity.YxSchoolMajor; +import org.jeecg.modules.yx.service.IYxHistoryMajorEnrollService; +import org.jeecg.modules.yx.service.IYxHistoryScoreControlLineService; import org.jeecg.modules.yx.service.IYxSchoolMajorService; +import org.jeecg.modules.yx.util.ScoreUtil; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; /** * @Description 艺术类接口 @@ -28,17 +44,132 @@ import java.util.List; public class ArtRecommendMajorController { @Resource IYxSchoolMajorService yxSchoolMajorService; + @Resource + IYxHistoryMajorEnrollService yxHistoryMajorEnrollService; + @Resource + IYxHistoryScoreControlLineService yxHistoryScoreControlLineService; + + @ApiOperation(value = "小程序端-推荐专业列表") + @GetMapping("/mini/page") + public Result miniRecommendMajorPage(QueryRecommendMajorVO queryRecommendMajorVO) { + if (StringUtils.isNotBlank(queryRecommendMajorVO.getProvince())) { + queryRecommendMajorVO.setAddressList(Collections.singletonList(queryRecommendMajorVO.getProvince())); + } + ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = yxSchoolMajorService.recommendMajorPage(queryRecommendMajorVO); + return Result.OK(artRecommendMajorBaseDTO); + } @ApiOperation(value = "推荐专业列表") @GetMapping("/page") - public Result recommendMajorPage(QueryRecommendMajorVO queryRecommendMajorVO){ + public Result recommendMajorPage(QueryRecommendMajorVO queryRecommendMajorVO) { ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = yxSchoolMajorService.recommendMajorPage(queryRecommendMajorVO); return Result.OK(artRecommendMajorBaseDTO); } @ApiOperation(value = "学院专业列表") @GetMapping("/list") - public Result recommendMajorList(QueryRecommendMajorVO queryRecommendMajorVO){ + public Result recommendMajorList(QueryRecommendMajorVO queryRecommendMajorVO) { return Result.OK(yxSchoolMajorService.otherMajorList(queryRecommendMajorVO)); } + + @ApiOperation(value = "投档分测算") + @GetMapping("/calculateInvestment") + public Result calculateInvestment(QueryCalculateInvestmentVO queryCalculateInvestmentVO) { + //获取 院校专业信息列表,录取方式notnull + LambdaQueryWrapper yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>(); + yxSchoolMajorLambdaQueryWrapper.isNotNull(YxSchoolMajor::getRulesEnrollProbability); + //字段匹配: batch 批次,category 文理分科,majorType 专业类型 + yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getBatch()), YxSchoolMajor::getBatch, queryCalculateInvestmentVO.getBatch()); + yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getCategory()), YxSchoolMajor::getCategory, queryCalculateInvestmentVO.getCategory()); + yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getProfessionalCategory()), YxSchoolMajor::getMajorType, queryCalculateInvestmentVO.getProfessionalCategory()); + List schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper); + List calculateInvestmentDTOList = new ArrayList<>(); + try { + if (CollectionUtils.isEmpty(schooMajorList)) { + return Result.OK(); + } + ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null; + Integer schoolNum = 0; + //遍历 院校专业列表,将录取方式,院校代码储存起来 + //map,key:录取方式,value: array[院校代码] + Map> maps = new LinkedHashMap<>(); + Set schoolCodeSet = null; + for (YxSchoolMajor yxSchoolMajor : schooMajorList) { + schoolCodeSet = maps.getOrDefault(yxSchoolMajor.getRulesEnrollProbability(), new HashSet<>()); + schoolCodeSet.add(yxSchoolMajor.getSchoolCode()); + maps.put(yxSchoolMajor.getRulesEnrollProbability(), schoolCodeSet); + } + if (maps.isEmpty()) { + return Result.OK(); + } + BigDecimal culturalScore = new BigDecimal(queryCalculateInvestmentVO.getCulturalScore()); + BigDecimal professionalScore = new BigDecimal(queryCalculateInvestmentVO.getProfessionalScore()); + //根据录取方式,计算折合分数 + for (String rulesEnrollProbability : maps.keySet()) { + Optional any = schooMajorList.stream().filter(s -> s.getRulesEnrollProbability().equals(rulesEnrollProbability)).findAny(); + if (any.isPresent()) { + YxSchoolMajor yxSchoolMajor = any.get(); + artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO(); + artCalculateInvestmentDTO.setSchoolNum(maps.get(rulesEnrollProbability).size()); + artCalculateInvestmentDTO.setRulesEnrollProbability(rulesEnrollProbability); + artCalculateInvestmentDTO.setProbabilityOperator(yxSchoolMajor.getProbabilityOperator()); + artCalculateInvestmentDTO.setScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, culturalScore, professionalScore, null, yxSchoolMajor.getProbabilityOperator())); + calculateInvestmentDTOList.add(artCalculateInvestmentDTO); + } + } + } catch (Exception e) { + return Result.error("计算折合分出错,请联系管理员"); + } + return Result.OK(calculateInvestmentDTOList); + } + + @ApiOperation(value = "文化分测算") + @GetMapping(value = "/testCultural") + public Result testCultural(QueryRecommendMajorVO queryRecommendMajorVO) { + //根据 院校代码,获取 院校的招生专业,计算各专业的录取分数 + String schoolCode = queryRecommendMajorVO.getSchoolCode(); + String year = queryRecommendMajorVO.getYear(); + AssertUtils.notNull(year, "请选择年份"); + String a_ = "_"; + List yxSchoolMajorList = yxSchoolMajorService.list(new LambdaQueryWrapper().eq(YxSchoolMajor::getSchoolCode, schoolCode)); + Set majorNameSet = yxSchoolMajorList.stream().map(YxSchoolMajor::getMajorName).collect(Collectors.toSet()); + + //获取 历年分数信息 + List yxHistoryMajorEnrollList = yxHistoryMajorEnrollService.list(new LambdaQueryWrapper().eq(YxHistoryMajorEnroll::getYear, year).eq(YxHistoryMajorEnroll::getSchoolCode, schoolCode).in(YxHistoryMajorEnroll::getMajorName, majorNameSet)); + Map historyMajorEnrollMap = yxHistoryMajorEnrollList.stream().collect(Collectors.toMap(h -> h.getCategory() + a_ + h.getMajorName() + a_ + h.getBatch(), h -> h)); + + //获取 省控线 + List historyScoreControlLineList = yxHistoryScoreControlLineService.list(new LambdaQueryWrapper().eq(YxHistoryScoreControlLine::getYear, year)); + Map yxHistoryScoreControlLineMap = new LinkedHashMap<>();//key:文科_美术学_提前批 + String key = null; + YxHistoryScoreControlLine yxHistoryScoreControlLine = null; + if (CollectionUtils.isNotEmpty(historyScoreControlLineList)) { + yxHistoryScoreControlLineMap = historyScoreControlLineList.stream().collect(Collectors.toMap(h -> h.getCategory() + a_ + h.getProfessionalCategory() + a_ + h.getBatch(), h -> h)); + } + List artTestCulturalDtoList = new ArrayList<>(); + ArtTestCulturalDTO artTestCulturalDto = new ArtTestCulturalDTO(); + for (YxSchoolMajor yxSchoolMajor : yxSchoolMajorList) { + artTestCulturalDto = new ArtTestCulturalDTO(); + key = yxSchoolMajor.getCategory() + a_ + yxSchoolMajor.getMajorType() + a_ + (yxSchoolMajor.getBatch().equals("提前批")?"本科A段":yxSchoolMajor.getBatch()); + yxHistoryScoreControlLine = yxHistoryScoreControlLineMap.get(key); + if (yxHistoryScoreControlLine != null) { + //文化分控线 + artTestCulturalDto.setCulturalScore(yxHistoryScoreControlLine.getCulturalScore()); + //专业分控线 + artTestCulturalDto.setSpecialScore(yxHistoryScoreControlLine.getSpecialScore()); + } + artTestCulturalDto.setYear(year); + artTestCulturalDto.setMajorName(yxSchoolMajor.getMajorName()); + artTestCulturalDto.setCategory(yxSchoolMajor.getCategory()); + artTestCulturalDto.setBatch(yxSchoolMajor.getBatch()); + artTestCulturalDto.setDetail(yxSchoolMajor.getDetail()); + artTestCulturalDto.setProbabilityOperator(yxSchoolMajor.getProbabilityOperator()); + artTestCulturalDto.setRulesEnrollProbability(yxSchoolMajor.getRulesEnrollProbability()); + key = yxSchoolMajor.getCategory() + a_ + yxSchoolMajor.getMajorName() + a_ + yxSchoolMajor.getBatch(); + artTestCulturalDto.setMajorNameAll(yxSchoolMajor.getMajorName()+"["+yxSchoolMajor.getCategory()+"]"+"("+yxSchoolMajor.getBatch()+")"); + artTestCulturalDto.setScore(historyMajorEnrollMap.get(key).getAdmissionLine()); + artTestCulturalDtoList.add(artTestCulturalDto); + } + return Result.OK(artTestCulturalDtoList); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtVolunteerController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtVolunteerController.java index ea2a6e5..12cc3d8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtVolunteerController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtVolunteerController.java @@ -41,16 +41,16 @@ import java.text.SimpleDateFormat; import java.util.*; /** -* @Description: 填报志愿表 -* @Author: jeecg-boot -* @Date: 2023-10-18 -* @Version: V1.0 -*/ -@Api(tags="前台-填报志愿") + * @Description: 填报志愿表 + * @Author: jeecg-boot + * @Date: 2023-10-18 + * @Version: V1.0 + */ +@Api(tags = "前台-填报志愿") @RestController @RequestMapping("/art/volunteer") @Slf4j -public class ArtVolunteerController{ +public class ArtVolunteerController { @Autowired private IYxUserScoreService yxUserScoreService; @Autowired @@ -61,117 +61,128 @@ public class ArtVolunteerController{ private TemplateEngine templateEngine; @Resource private ISysUserService sysUserService; + /** - * 分页列表查询 - * - * @param yxVolunteer - * @param pageNo - * @param pageSize - * @param req - * @return - */ - //@AutoLog(value = "分页列表查询") - @ApiOperation(value="分页列表查询", notes="分页列表查询") - @GetMapping(value = "/page") - public Result> queryPageList(YxVolunteer yxVolunteer, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - List list = yxVolunteerService.artVolunteerList(yxVolunteer); - return Result.OK(list); - } + * 分页列表查询 + * + * @param yxVolunteer + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "分页列表查询") + @ApiOperation(value = "分页列表查询", notes = "分页列表查询") + @GetMapping(value = "/page") + public Result> queryPageList(YxVolunteer yxVolunteer, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + List list = yxVolunteerService.artVolunteerList(yxVolunteer); + return Result.OK(list); + } - - @ApiOperation(value = "获取当前用户的志愿表") - @GetMapping(value = "/info") - public Result info(YxVolunteerRecord yxVolunteerRecord){ - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - AssertUtils.notNull(sysUser,"请先登录!"); - yxVolunteerRecord.setCreateBy(sysUser.getId()); - return Result.OK(yxVolunteerService.getActiveByCreate(sysUser.getId())); - } + @ApiOperation(value = "获取当前用户的志愿表") + @GetMapping(value = "/info") + public Result info(YxVolunteerRecord yxVolunteerRecord) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + AssertUtils.notNull(sysUser, "请先登录!"); + yxVolunteerRecord.setCreateBy(sysUser.getId()); + return Result.OK(yxVolunteerService.getActiveByCreate(sysUser.getId())); + } @ApiOperation(value = "根据志愿表id获取志愿信息") @GetMapping(value = "/artVolunteerDetail") - public Result artVolunteerDetail(YxVolunteer volunteer){ + public Result artVolunteerDetail(YxVolunteer volunteer) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - AssertUtils.notNull(sysUser,"请先登录!"); - VolunteerDTO volunteerDTO=null; + AssertUtils.notNull(sysUser, "请先登录!"); + VolunteerDTO volunteerDTO = null; if (StringUtils.isNotBlank(volunteer.getId())) { //根据id获取志愿单 volunteerDTO = yxVolunteerService.findById(volunteer.getId()); - }else{ + } else { //如果没有传id,则直接获取当前激活的志愿表 volunteerDTO = yxVolunteerService.getActiveByCreate(sysUser.getId()); } return Result.OK(volunteerDTO); } - /** - * 保存志愿 - * @param saveVolunteerVO - * @return - */ - @ApiOperation(value="保存", notes="保存") - @PostMapping(value = "/save") - public Result save(@RequestBody SaveVolunteerVO saveVolunteerVO) { - AssertUtils.notNull(saveVolunteerVO.getMajorCode(),"专业编码不可为空"); - AssertUtils.notNull(saveVolunteerVO.getSchoolCode(),"学校编码不可为空"); - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - AssertUtils.notNull(sysUser,"请先登录!"); - saveVolunteerVO.setCreateBy(sysUser.getId()); - boolean b = yxVolunteerService.artVolunteerSave(saveVolunteerVO); - return Result.OK("添加成功!"); - } + /** + * 保存志愿 + * + * @param saveVolunteerVO + * @return + */ + @ApiOperation(value = "保存", notes = "保存") + @PostMapping(value = "/save") + public Result save(@RequestBody SaveVolunteerVO saveVolunteerVO) { + AssertUtils.notNull(saveVolunteerVO.getMajorCode(), "专业编码不可为空"); + AssertUtils.notNull(saveVolunteerVO.getSchoolCode(), "学校编码不可为空"); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + AssertUtils.notNull(sysUser, "请先登录!"); + saveVolunteerVO.setCreateBy(sysUser.getId()); + return Result.OK(yxVolunteerService.artVolunteerSave(saveVolunteerVO)); + } + + /** + * 新建志愿 + */ + @ApiOperation(value = "新建志愿", notes = "新建志愿") + @PostMapping(value = "/addNew") + public Result addNew() { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + AssertUtils.notNull(sysUser, "请先登录!"); + return Result.OK(yxVolunteerService.addNew()); + } @ApiOperation(value = "删除志愿明细") @DeleteMapping("/delete") - public Result delete(YxVolunteer volunteer){ + public Result delete(YxVolunteer volunteer) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - AssertUtils.notNull(sysUser,"请先登录!"); - AssertUtils.notNull(volunteer.getId(),"请求参数有误!"); + AssertUtils.notNull(sysUser, "请先登录!"); + AssertUtils.notNull(volunteer.getId(), "请求参数有误!"); yxVolunteerService.deleteById(volunteer.getId()); return Result.OK("删除成功!"); } /** - * 替换志愿顺序 + * 替换志愿顺序 */ - @ApiOperation(value="保存", notes="保存") + @ApiOperation(value = "保存", notes = "保存") @PostMapping(value = "/replaceVolunteer") public Result replaceVolunteer(@RequestBody SaveVolunteerVO saveVolunteerVO) { - AssertUtils.notNull(saveVolunteerVO.getIndexs(),"志愿顺序不可为空"); - AssertUtils.notNull(saveVolunteerVO.getBatch(),"学校批次不可为空"); - AssertUtils.notNull(saveVolunteerVO.getMajorCode(),"专业编码不可为空"); - AssertUtils.notNull(saveVolunteerVO.getSchoolCode(),"学校编码不可为空"); + AssertUtils.notNull(saveVolunteerVO.getIndexs(), "志愿顺序不可为空"); + AssertUtils.notNull(saveVolunteerVO.getBatch(), "学校批次不可为空"); + AssertUtils.notNull(saveVolunteerVO.getMajorCode(), "专业编码不可为空"); + AssertUtils.notNull(saveVolunteerVO.getSchoolCode(), "学校编码不可为空"); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - AssertUtils.notNull(sysUser,"请先登录!"); + AssertUtils.notNull(sysUser, "请先登录!"); saveVolunteerVO.setCreateBy(sysUser.getId()); //根据batch,indexs,替换 majorCode,schoolCode LambdaUpdateWrapper yxVolunteerRecordLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); - yxVolunteerRecordLambdaUpdateWrapper.eq(YxVolunteerRecord::getBatch,saveVolunteerVO.getBatch()); - yxVolunteerRecordLambdaUpdateWrapper.eq(YxVolunteerRecord::getIndexs,saveVolunteerVO.getIndexs()); - yxVolunteerRecordLambdaUpdateWrapper.set(YxVolunteerRecord::getMajorCode,saveVolunteerVO.getMajorCode()); - yxVolunteerRecordLambdaUpdateWrapper.set(YxVolunteerRecord::getSchoolCode,saveVolunteerVO.getSchoolCode()); + yxVolunteerRecordLambdaUpdateWrapper.eq(YxVolunteerRecord::getBatch, saveVolunteerVO.getBatch()); + yxVolunteerRecordLambdaUpdateWrapper.eq(YxVolunteerRecord::getIndexs, saveVolunteerVO.getIndexs()); + yxVolunteerRecordLambdaUpdateWrapper.set(YxVolunteerRecord::getMajorCode, saveVolunteerVO.getMajorCode()); + yxVolunteerRecordLambdaUpdateWrapper.set(YxVolunteerRecord::getSchoolCode, saveVolunteerVO.getSchoolCode()); yxVolunteerRecordService.update(yxVolunteerRecordLambdaUpdateWrapper); return Result.OK("操作成功!"); } @ApiOperation(value = "删除志愿明细") @DeleteMapping("/recordDel") - public Result volunteerRecordDel(@RequestBody SaveVolunteerVO saveVolunteerVO){ + public Result volunteerRecordDel(@RequestBody SaveVolunteerVO saveVolunteerVO) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - AssertUtils.notNull(sysUser,"请先登录!"); + AssertUtils.notNull(sysUser, "请先登录!"); VolunteerDTO volunteerDTO = yxVolunteerService.getActiveByCreate(sysUser.getId()); - AssertUtils.notNull(volunteerDTO,"删除失败,未找到志愿单"); - AssertUtils.notNull(saveVolunteerVO.getIndexs(),"删除失败,请选择志愿意向"); + AssertUtils.notNull(volunteerDTO, "删除失败,未找到志愿单"); + AssertUtils.notNull(saveVolunteerVO.getIndexs(), "删除失败,请选择志愿意向"); try { - LambdaQueryWrapper lambdaQueryWrapper=new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(YxVolunteerRecord::getVolunteerId,volunteerDTO.getId()); - lambdaQueryWrapper.eq(YxVolunteerRecord::getIndexs,saveVolunteerVO.getIndexs()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(YxVolunteerRecord::getVolunteerId, volunteerDTO.getId()); + lambdaQueryWrapper.eq(YxVolunteerRecord::getIndexs, saveVolunteerVO.getIndexs()); yxVolunteerRecordService.remove(lambdaQueryWrapper); - }catch (Exception e){ + } catch (Exception e) { throw new JeecgBootException(e); } return Result.OK("删除成功!"); @@ -179,51 +190,51 @@ public class ArtVolunteerController{ @ApiOperation(value = "删除志愿明细") @DeleteMapping("/volunteerRecordDelete") - public Result volunteerRecordDelete(SaveVolunteerVO saveVolunteerVO){ + public Result volunteerRecordDelete(SaveVolunteerVO saveVolunteerVO) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - AssertUtils.notNull(sysUser,"请先登录!"); + AssertUtils.notNull(sysUser, "请先登录!"); /*String volunteerId = saveVolunteerVO.getVolunteerId(); Integer indexs = saveVolunteerVO.getIndexs(); String batch = saveVolunteerVO.getBatch(); AssertUtils.notNull(volunteerId,"请求参数有误");*/ String id = saveVolunteerVO.getId(); - AssertUtils.notNull(id,"请求参数有误"); + AssertUtils.notNull(id, "请求参数有误"); try { yxVolunteerRecordService.removeById(id); - }catch (Exception e){ + } catch (Exception e) { throw new JeecgBootException(e); } return Result.OK("删除成功!"); } @GetMapping(value = "/preview") - public void preview(@RequestParam(value = "id") String id,HttpServletResponse response) throws IOException { - VolunteerDTO volunteerDTO= yxVolunteerService.findById(id); - if (volunteerDTO==null) { + public void preview(@RequestParam(value = "id") String id, HttpServletResponse response) throws IOException { + VolunteerDTO volunteerDTO = yxVolunteerService.findById(id); + if (volunteerDTO == null) { response.setContentType("text/html;charset=utf-8"); response.getWriter().print("未找到志愿表!"); - }else{ + } else { String scoreId = volunteerDTO.getScoreId(); YxUserScore yxUserScore = yxUserScoreService.findById(scoreId); Date date = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // 构造freemarker模板引擎参数,listVars.size()个数对应pdf页数 List> listVars = new ArrayList<>(); Map variables = new HashMap<>(); BigDecimal professionalScore = yxUserScore.getProfessionalScore(); BigDecimal culturalScore = yxUserScore.getCulturalScore(); - variables.put("professionalScore",professionalScore); - variables.put("culturalScore",culturalScore); + variables.put("professionalScore", professionalScore); + variables.put("culturalScore", culturalScore); //获取用户信息 SysUser sysUser = sysUserService.getById(yxUserScore.getCreateBy()); - variables.put("userName",sysUser.getRealname()); + variables.put("userName", sysUser.getRealname()); String apply = ""; - variables.put("nowDate",sdf.format(date)); - variables.put("lastUpdateDate",sdf.format(volunteerDTO.getUpdateTime()==null?volunteerDTO.getCreateTime():volunteerDTO.getUpdateTime())); + variables.put("nowDate", sdf.format(date)); + variables.put("lastUpdateDate", sdf.format(volunteerDTO.getUpdateTime() == null ? volunteerDTO.getCreateTime() : volunteerDTO.getUpdateTime())); variables.put("apply", apply); - variables.put("volunteer",volunteerDTO); + variables.put("volunteer", volunteerDTO); listVars.add(variables); PdfUtil.preview(templateEngine, "preview.html", listVars, response); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtCalculateInvestmentDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtCalculateInvestmentDTO.java new file mode 100644 index 0000000..078b1c8 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtCalculateInvestmentDTO.java @@ -0,0 +1,26 @@ +package org.jeecg.modules.art.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 投档分测算 返回参数 + * @Author ZhouWenTao + * @Date 2024/2/18 16:58 + */ +@Data +@ApiModel(value = "投档分测算返回参数") +public class ArtCalculateInvestmentDTO implements Serializable { + @ApiModelProperty(value = "类型") + private String rulesEnrollProbability; + @ApiModelProperty(value = "分数运算符") + private String probabilityOperator; + @ApiModelProperty("综合分") + private BigDecimal score; + @ApiModelProperty(value = "院校数量") + private Integer schoolNum = 0; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtMiniMajorDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtMiniMajorDTO.java new file mode 100644 index 0000000..e506db9 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtMiniMajorDTO.java @@ -0,0 +1,31 @@ +package org.jeecg.modules.art.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.modules.yx.entity.YxMajor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description 小程序端专业列表返回对象 + * @Author ZhouWenTao + * @Date 2024/2/10 20:55 + */ +@Data +@ApiModel(value = "小程序端专业列表返回对象") +public class ArtMiniMajorDTO implements Serializable { + @ApiModelProperty(value = "学科类型") + private String majorTypeName; + @ApiModelProperty(value = "专业列表") + private List majorList; + + public ArtMiniMajorDTO() { + } + + public ArtMiniMajorDTO(String majorTypeName, List majorList) { + this.majorTypeName = majorTypeName; + this.majorList = majorList; + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtRecommendMajorBaseDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtRecommendMajorBaseDTO.java index 11648a8..e91b7c6 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtRecommendMajorBaseDTO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtRecommendMajorBaseDTO.java @@ -19,7 +19,7 @@ public class ArtRecommendMajorBaseDTO implements Serializable { private IPage pageList; private List list; @ApiModelProperty(value = "是否是vip 0-否,1-是") - private Integer isVip=0;//是否是vip + private Integer isVip=1;//是否是vip private Integer kcj=0;//可冲击 private Integer jwt=0;//较稳妥 private Integer kbd=0;//可保底 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtTestCulturalDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtTestCulturalDTO.java new file mode 100644 index 0000000..9e28240 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtTestCulturalDTO.java @@ -0,0 +1,41 @@ +package org.jeecg.modules.art.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description + * @Author ZhouWenTao + * @Date 2024/2/19 11:10 + */ +@Data +@ApiModel(value = "文化分测算数据对象") +public class ArtTestCulturalDTO implements Serializable { + @ApiModelProperty(value = "年份") + private String year; + @ApiModelProperty("专业名称") + private String majorName; + @ApiModelProperty("专业名称+文理+批次") + private String majorNameAll; + @ApiModelProperty("文理分科") + private String category; + @ApiModelProperty("批次") + private String batch; + @ApiModelProperty("院校限制") + private String detail; + @ApiModelProperty(value = "类型") + private String rulesEnrollProbability; + @ApiModelProperty(value = "分数运算符") + private String probabilityOperator; + @ApiModelProperty("综合分") + private BigDecimal score; + @ApiModelProperty("省文化分控线") + private BigDecimal culturalScore; + @ApiModelProperty("省专业分控线") + private BigDecimal SpecialScore; + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/MiniMajorDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/MiniMajorDTO.java new file mode 100644 index 0000000..4e4510e --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/MiniMajorDTO.java @@ -0,0 +1,24 @@ +package org.jeecg.modules.art.dto; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.modules.yx.entity.YxMajor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description + * @Author ZhouWenTao + * @Date 2024/2/11 15:44 + */ +@Data +@ApiModel(value = "小程序端专业信息对象") +public class MiniMajorDTO extends YxMajor { + @ApiModelProperty(value = "开设院校数量") + private Integer schoolNum; + //@ApiModelProperty(value = "开设院校数量") + //private IPage schoolList; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryCalculateInvestmentVO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryCalculateInvestmentVO.java new file mode 100644 index 0000000..279dabf --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryCalculateInvestmentVO.java @@ -0,0 +1,29 @@ +package org.jeecg.modules.art.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 投档分测算 请求参数 + * @Author ZhouWenTao + * @Date 2024/2/18 16:53 + */ +@Data +@ApiModel(value = "投档分测算") +public class QueryCalculateInvestmentVO implements Serializable { + @ApiModelProperty(value = "文化分") + private Integer culturalScore; + @ApiModelProperty(value = "统考分") + private Integer professionalScore; + @ApiModelProperty(value = "省份") + private String province; + @ApiModelProperty(value = "批次") + private String batch; + @ApiModelProperty(value = "文理分科") + private String category; + @ApiModelProperty(value = "专业类型") + private String professionalCategory; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryRecommendMajorVO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryRecommendMajorVO.java index 3e47a3f..ce0e90e 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryRecommendMajorVO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryRecommendMajorVO.java @@ -20,10 +20,14 @@ import java.util.List; @Data @ApiModel(value = "查询学院专业列表对象") public class QueryRecommendMajorVO extends ArtBaseDTO { + @ApiModelProperty(value = "年份") + private String year; @ApiModelProperty(value = "专业编码") private String majorCode; @ApiModelProperty(value = "专业名称") private String majorName; + @ApiModelProperty(value = "地区") + private String province; @ApiModelProperty(value = "专业类别") private String professionalCategory; @ApiModelProperty(value = "学历层次") @@ -32,8 +36,9 @@ public class QueryRecommendMajorVO extends ArtBaseDTO { private List addressList; @ApiModelProperty(value = "标签") private List tagsList; - @ApiModelProperty(value = "办学性质") + private String schoolNature; + @ApiModelProperty(value = "办学性质List") private List schoolNatureList; @ApiModelProperty(value = "院校类型") diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java index 3b882b7..9bdd1e9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java @@ -19,12 +19,15 @@ import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.SysThirdAccount; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.model.ThirdLoginModel; +import org.jeecg.modules.system.model.WxModel; import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.system.service.ISysThirdAccountService; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.service.impl.ThirdAppDingtalkServiceImpl; import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl; +import org.jeecg.modules.yx.service.IYxUserScoreService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; @@ -64,13 +67,8 @@ public class ThirdLoginController { private ThirdAppWechatEnterpriseServiceImpl thirdAppWechatEnterpriseService; @Autowired private ThirdAppDingtalkServiceImpl thirdAppDingtalkService; - - - - @RequestMapping("/wechat/login") - public void wechatLogin(){ - - } + @Autowired + private IYxUserScoreService yxUserScoreService; @RequestMapping("/render/{source}") public void render(@PathVariable("source") String source, HttpServletResponse response) throws IOException { diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java index 7f9f457..364ba7e 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java @@ -204,4 +204,9 @@ public class SysUser implements Serializable { * 流程状态 */ private String bpmStatus; + + /** + * 微信openId + */ + private String wxOpenId; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/model/WxModel.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/model/WxModel.java new file mode 100644 index 0000000..fb3f255 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/model/WxModel.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.system.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 操作 + */ +@Data +public class WxModel implements Serializable { + public String code; + public String sessionKey; + public String encryptedData; + public String iv; + + public String openId; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java index 7e4d6ac..cb6d0d4 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java @@ -31,10 +31,13 @@ import java.util.Set; * @since 2018-12-20 */ public interface ISysUserService extends IService { - + /** + * 根据openId获取 + */ + SysUser getByWxOpenId(String wxOpenId); /** * 查询用户数据列表 - * + * * @param req * @param queryWrapper * @param pageSize @@ -42,7 +45,7 @@ public interface ISysUserService extends IService { * @return */ Result> queryPageList(HttpServletRequest req, QueryWrapper queryWrapper, Integer pageSize, Integer pageNo); - + /** * 重置密码 * @@ -82,15 +85,15 @@ public interface ISysUserService extends IService { * @return SysUser */ public SysUser getUserByName(String username); - + /** * 添加用户和用户角色关系 * @param user * @param roles */ public void addUserWithRole(SysUser user,String roles); - - + + /** * 修改用户和用户角色关系 * @param user @@ -113,7 +116,7 @@ public interface ISysUserService extends IService { * @return */ public SysRoleIndex getDynamicIndexByUserRole(String username,String version); - + /** * 查询用户信息包括 部门信息 * @param username @@ -193,14 +196,14 @@ public interface ISysUserService extends IService { * @return 权限集合 */ Set getUserPermissionsSet(String username); - + /** * 根据用户名设置部门ID * @param username * @param orgCode */ void updateUserDepart(String username,String orgCode,Integer loginTenantId); - + /** * 根据手机号获取用户名和密码 * @param phone 手机号 @@ -230,7 +233,7 @@ public interface ISysUserService extends IService { * @param departs */ void editUserWithDepart(SysUser user, String departs); - + /** * 校验用户是否有效 * @param sysUser @@ -381,7 +384,7 @@ public interface ISysUserService extends IService { */ void changeDepartChargePerson(JSONObject json); //--- author:taoyan date:20221231 for: QQYUN-3515【应用】应用下的组织机构管理功能,细节实现 --- - + /** * 编辑租户用户 * @param sysUser diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 369e859..864ace2 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -63,7 +63,7 @@ import java.util.stream.Collectors; @Service @Slf4j public class SysUserServiceImpl extends ServiceImpl implements ISysUserService { - + @Autowired private SysUserMapper userMapper; @Autowired @@ -96,7 +96,12 @@ public class SysUserServiceImpl extends ServiceImpl impl private SysUserTenantMapper relationMapper; @Autowired private SysUserTenantMapper userTenantMapper; - + + @Override + public SysUser getByWxOpenId(String wxOpenId) { + return this.getOne(new LambdaQueryWrapper().eq(SysUser::getWxOpenId,wxOpenId)); + } + @Override public Result> queryPageList(HttpServletRequest req, QueryWrapper queryWrapper, Integer pageSize, Integer pageNo) { Result> result = new Result>(); @@ -224,8 +229,8 @@ public class SysUserServiceImpl extends ServiceImpl impl } return sysUser; } - - + + @Override @Transactional(rollbackFor = Exception.class) public void addUserWithRole(SysUser user, String roles) { @@ -286,7 +291,7 @@ public class SysUserServiceImpl extends ServiceImpl impl roleIndex = list.get(0); } } - + //如果componentUrl为空,则返回空 if(oConvertUtils.isEmpty(roleIndex.getComponent())){ return null; @@ -352,7 +357,7 @@ public class SysUserServiceImpl extends ServiceImpl impl info.setSysUserName(sysUser.getRealname()); info.setSysOrgCode(sysUser.getOrgCode()); } - + //多部门支持in查询 List list = sysDepartMapper.queryUserDeparts(sysUser.getId()); List sysMultiOrgCode = new ArrayList(); @@ -368,7 +373,7 @@ public class SysUserServiceImpl extends ServiceImpl impl } } info.setSysMultiOrgCode(sysMultiOrgCode); - + return info; } @@ -586,7 +591,7 @@ public class SysUserServiceImpl extends ServiceImpl impl //6. 删除租户用户中间表的数据 line += userTenantMapper.delete(new LambdaQueryWrapper().in(SysUserTenant::getUserId,userIds)); - + return line != 0; } @@ -788,7 +793,7 @@ public class SysUserServiceImpl extends ServiceImpl impl queryWrapper.eq(SysTenant::getStatus, Integer.valueOf(CommonConstant.STATUS_1)); tenantList = sysTenantMapper.selectList(queryWrapper); //------------------------------------------------------------------------------------- - + if (tenantList.size() == 0) { return result.error500("与该用户关联的租户均已被冻结,无法登录!"); } else { @@ -896,7 +901,7 @@ public class SysUserServiceImpl extends ServiceImpl impl //找到新的租户id与原来的租户id不同之处,进行删除 String[] relTenantIdArray = relTenantIds.split(SymbolConstant.COMMA); List relTenantIdList = Arrays.asList(relTenantIdArray); - + List deleteTenantIdList = oldTenantIds.stream().filter(item -> !relTenantIdList.contains(item.toString())).collect(Collectors.toList()); for (Integer tenantId : deleteTenantIdList) { this.deleteTenantByUserId(userId, tenantId); @@ -964,9 +969,9 @@ public class SysUserServiceImpl extends ServiceImpl impl .in(SysUserDepart::getUserId, idList) .in(SysUserDepart::getDepId, departIdList); sysUserDepartMapper.delete(query); - + String[] arr = selecteddeparts.split(","); - + //再新增 for (String deaprtId : arr) { for(String userId: idList){ @@ -1104,7 +1109,7 @@ public class SysUserServiceImpl extends ServiceImpl impl } } } - + } } } @@ -1135,7 +1140,7 @@ public class SysUserServiceImpl extends ServiceImpl impl } return result; } - + /** * 变更父级部门 修改编码 * @param parentId @@ -1208,7 +1213,7 @@ public class SysUserServiceImpl extends ServiceImpl impl getParentDepart(temp, orgName, orgId); } } - + @Override @Transactional(rollbackFor = Exception.class) @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) @@ -1221,7 +1226,7 @@ public class SysUserServiceImpl extends ServiceImpl impl //修改租户用户下的部门 this.updateTenantDepart(user, tenantId, departs); } - + /** * 修改租户下的部门 * @param departs diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxMajorController.java index 9b49839..f363dd7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxMajorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxMajorController.java @@ -1,6 +1,10 @@ package org.jeecg.modules.yx.controller; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -11,6 +15,7 @@ import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.yx.dto.MajorImport; import org.jeecg.modules.yx.entity.YxFirstLevelDisciplines; import org.jeecg.modules.yx.entity.YxMajor; import org.jeecg.modules.yx.service.IYxFirstLevelDisciplinesService; @@ -24,6 +29,7 @@ import lombok.extern.slf4j.Slf4j; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ImportParams; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -234,4 +240,63 @@ public class YxMajorController extends JeecgController } return Result.error("文件导入失败!"); } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("yx:yx_major:importExcel") + @RequestMapping(value = "/importExcel2", method = RequestMethod.POST) + public Result importExcel2(HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + for (Map.Entry entity : fileMap.entrySet()) { + // 获取上传文件对象 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(0); + params.setNeedSave(true); + FileInputStream fileInputStream = new FileInputStream(new File("C:\\Users\\Denim\\Desktop\\艺术本科.xlsx")); + try { + List list = ExcelImportUtil.importExcel(fileInputStream, MajorImport.class, params); + Map majorMap = list.stream().collect(Collectors.toMap(MajorImport::getMajorCode, l -> l)); + List majorList = yxMajorService.list(); + Map yxMajorMap = majorList.stream().collect(Collectors.toMap(m -> m.getMajorName() + "_" + m.getMajorCode(), m -> m)); + MajorImport yxMajor1=null; + List list2=new ArrayList<>(); + List list3=new ArrayList<>(); + /*for (YxMajor yxMajor : majorList) { + yxMajor1 = majorMap.get(yxMajor.getMajorCode()); + if (yxMajor1==null) { + list3.add(yxMajor); + continue; + } + BeanUtils.copyProperties(yxMajor1,yxMajor); + }*/ + + for (MajorImport majorImport : list) { + YxMajor yxMajor = yxMajorMap.get(majorImport.getMajorName() + "_" + majorImport.getMajorCode()); + if (yxMajor == null) { + list2.add(majorImport); + continue; + } + } + yxMajorService.updateBatchById(majorList); + return Result.ok("文件导入成功!数据行数:" + list.size()); + } catch (Exception e) { + String msg = e.getMessage(); + log.error(msg, e); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.error("文件导入失败!"); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolController.java index f88f39d..8a1fac2 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolController.java @@ -10,6 +10,7 @@ import java.net.URLDecoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import antlr.collections.impl.LList; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.commons.collections.CollectionUtils; @@ -421,18 +422,19 @@ public class YxSchoolController extends JeecgController schoolList = yxSchoolService.list(); + List schoolList = yxSchoolService.list(new LambdaQueryWrapper().isNotNull(YxSchool::getSchoolCode)); //本科(职业教育) Map majorNameZyMap = new LinkedHashMap<>(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (file.getName().contains("专科")) { //高职高专 queryWrapper.eq(YxMajor::getEducationalLevel, "2"); @@ -454,8 +456,7 @@ public class YxSchoolController extends JeecgController list = yxMajorService.list(queryWrapper); majorNameZyMap = list.stream().collect(Collectors.toMap(m -> m.getMajorName(), m -> m)); + }else if(file.getName().contains("本科")){ + batch = "本科"; + batch2 = "本科"; } String majorType=""; @@ -500,8 +504,892 @@ public class YxSchoolController extends JeecgController historyScoreControlLineList = yxHistoryScoreControlLineService.list(yxHistoryScoreControlLineLambdaQueryWrapper); Map scoreControlLineMap = historyScoreControlLineList.stream().collect(Collectors.toMap(h -> h.getYear()+ h.getBatch() +h.getProfessionalCategory() + h.getCategory(), h -> h)); - Map schoolNameMap = schoolList.stream().collect(Collectors.toMap(s -> s.getSchoolName(), s -> s)); - Map majorNameMap = majorList.stream().collect(Collectors.toMap(m -> m.getMajorName(), m -> m)); + Map schoolNameMap = schoolList.stream().collect(Collectors.toMap(YxSchool::getSchoolCode, s -> s)); + Map majorNameMap = majorList.stream().collect(Collectors.toMap(YxMajor::getMajorName, m -> m)); + Set notSchoolList = new HashSet<>(); + List yxHistoryMajorEnrollList = new ArrayList<>(); + try { + fileInputStream = new FileInputStream(file); + List list = ExcelImportUtil.importExcel(fileInputStream, LiNianShuJuDTO.class, params); + String schoolCode = null; + String schoolName = null; + String zhuanye = null; + String zhuanyeName = null; + String zhuanyeCode = null; + String zhuanyeNameLast = null; + String nianfen = null; + String kelei = null; + String wenhuaBili = null; + String zhuanyeBili = null; + String jihuashu = null; + String luqushu = null; + String shijitoudangrenshu = null; + String yizhiyuanluqushu = null; + String yizhiyuanzuidipaixuchengji = null; + String sortType = null; + int i = 0, ii1 = 0, i2 = 0, i3 = 0; + YxHistoryScoreControlLine yxHistoryScoreControlLine = null; + BigDecimal bigDecimal100 = new BigDecimal(100); + + + //识别专业名称 库中没有则创建 + if (batch2.equals("专科")) { + for (LiNianShuJuDTO liNianShuJuDTO : list) { + index++; + zhuanye = liNianShuJuDTO.getZhuanye(); + zhuanye = zhuanye.replace(" ", "") + .replace(".", "") + .replace("(", "(") + .replace(")", ")") + .replace("離", "雕") + .replace("朔", "塑") + .replace("美末", "美术") + .replace("艺采", "艺术") + .replace("艺末", "艺术") + .replace("艺未", "艺术") + .replace("设讦", "设计") + .replace("设评", "设计") + .replace("搬影", "摄影") + .replace("室内艺术设计", "室内艺术设") + .replace("室内艺术设", "室内艺术设计") + .replace("数字媒体艺术设计", "数字媒体艺术设") + .replace("数字媒体艺术设", "数字媒体艺术设计").replace("\n", ""); + i2 = zhuanye.indexOf(")"); + zhuanyeCode = zhuanye.substring(1, i2); + zhuanyeName = zhuanye.substring(i2 + 1, zhuanye.length()); + i3 = zhuanyeName.indexOf("("); + YxMajor yxMajor = null; + + + if (isB && liNianShuJuDTO.getYuanxiao().contains("职业") && ! liNianShuJuDTO.getYuanxiao().contains("陶瓷")) { + if (i3 == -1) { + yxMajor = majorNameZyMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameZyMap.get(zhuanyeName.substring(0, i3)); + } + //如果 没有从 职业本科中找到,那就去找普通本科 + if (yxMajor == null) { + if (i3 == -1) { + yxMajor = majorNameMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameMap.get(zhuanyeName.substring(0, i3)); + } + } + } else { + if (i3 == -1) { + yxMajor = majorNameMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameMap.get(zhuanyeName.substring(0, i3)); + } + } + + if (zhuanyeName.contains("广告设计与制作")) { + yxMajor = majorNameMap.get("广告艺术设计"); + } + if (yxMajor==null) { + yxMajor=new YxMajor(); + yxMajor.setMajorCode(zhuanyeCode); + yxMajor.setMajorName(zhuanyeName); + + if (batch2.contains("本")) { + yxMajor.setEducationalLevel("1"); + yxMajor.setSemester("4"); + if (zhuanyeName.contains("表演")) { + yxMajor.setFirstLevelDiscipline("1731184290459099137");//表演艺术 + } + }else{ + yxMajor.setEducationalLevel("2"); + yxMajor.setSemester("3"); + if (zhuanyeName.contains("表演")) { + yxMajor.setFirstLevelDiscipline("1729376091326214145");//表演艺术 + }else if(zhuanyeName.contains("媒体")){ + yxMajor.setFirstLevelDiscipline("1731488738330918913");//广播影视类 + }else if(zhuanyeName.contains("设计")){ + yxMajor.setFirstLevelDiscipline("1729376034648584193");//艺术设计类 + }else if(zhuanyeName.contains("美术")){ + yxMajor.setFirstLevelDiscipline("1729376034648584193");//艺术设计类 + } + } + yxMajor.setIsVte(0); + yxMajorService.save(yxMajor); + majorNameMap.put(zhuanyeName,yxMajor); + } + } + majorList = yxMajorService.list(queryWrapper); + majorNameMap = majorList.stream().collect(Collectors.toMap(m -> m.getMajorName(), m -> m)); + index=0; + } + for (LiNianShuJuDTO liNianShuJuDTO : list) { + index++; + //获取专业名 + zhuanye = liNianShuJuDTO.getZhuanye(); + //院校 + String yuanxiao = liNianShuJuDTO.getYuanxiao(); + if (StringUtils.isBlank(yuanxiao)) { + continue; + } + yuanxiao = yuanxiao.replace(" ", "").replace("\n", "").replace("(", "(").replace(")", ")"); + i = yuanxiao.indexOf(")"); + schoolCode = yuanxiao.substring(1, i); + schoolName = yuanxiao.substring(i + 1, yuanxiao.length()); + + + if (schoolName.contains("中外合作") || schoolName.contains("(原") || schoolName.contains("(源")) { + ii1 = schoolName.indexOf("("); + if (ii1 != -1) { + schoolName = schoolName.substring(0, ii1); + } + } + + + YxSchool school = schoolNameMap.get(schoolCode); + + if (schoolName.contains("漂河职业技术学院")) { + school = schoolNameMap.get("漯河职业技术学院"); + } + + if (school == null) { + //学校库没有这个学校 + notSchoolList.add(liNianShuJuDTO); + continue; + } + school.setInstitutionCode(schoolCode);//院校编码 + schoolNameMap.put(schoolName, school);//再保存到map,等最后循环完后,一起修改 + + zhuanye = zhuanye.replace(" ", "") + .replace(".", "") + .replace("(", "(") + .replace(")", ")") + .replace("離", "雕") + .replace("朔", "塑") + .replace("美末", "美术") + .replace("艺采", "艺术") + .replace("艺末", "艺术") + .replace("艺未", "艺术") + .replace("设讦", "设计") + .replace("设评", "设计") + .replace("搬影", "摄影") + .replace("室内艺术设计", "室内艺术设") + .replace("室内艺术设", "室内艺术设计") + .replace("数字媒体艺术设计", "数字媒体艺术设") + .replace("数字媒体艺术设", "数字媒体艺术设计").replace("\n", ""); + i2 = zhuanye.indexOf(")"); + zhuanyeCode = zhuanye.substring(1, i2); + zhuanyeName = zhuanye.substring(i2 + 1, zhuanye.length()); + i3 = zhuanyeName.indexOf("("); + YxMajor yxMajor = null; + + + if (isB && schoolName.contains("职业") && !zhuanyeName.contains("陶瓷")) { + if (i3 == -1) { + yxMajor = majorNameZyMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameZyMap.get(zhuanyeName.substring(0, i3)); + } + //如果 没有从 职业本科中找到,那就去找普通本科 + if (yxMajor == null) { + if (i3 == -1) { + yxMajor = majorNameMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameMap.get(zhuanyeName.substring(0, i3)); + } + } + } else { + if (i3 == -1) { + yxMajor = majorNameMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameMap.get(zhuanyeName.substring(0, i3)); + } + } + + if (zhuanyeName.contains("广告设计与制作")) { + yxMajor = majorNameMap.get("广告艺术设计"); + } + if (yxMajor == null) { + notSchoolList.add(liNianShuJuDTO); + continue; + } + sortType = liNianShuJuDTO.getSortType(); + //科类 + kelei = liNianShuJuDTO.getKelei(); + //获取年份 + nianfen = liNianShuJuDTO.getNianfen(); + //文化成绩比例 + wenhuaBili = liNianShuJuDTO.getWenhuaBili(); + //专业成绩比例 + zhuanyeBili = liNianShuJuDTO.getZhuanyeBili(); + //计划数 + jihuashu = liNianShuJuDTO.getJihuashu(); + //录取数 + luqushu = liNianShuJuDTO.getLuqushu(); + //实际投档人数 + shijitoudangrenshu = liNianShuJuDTO.getShijitoudangrenshu(); + //一志愿录取数 + yizhiyuanluqushu = liNianShuJuDTO.getYizhiyuanluqushu(); + + jihuashu = jihuashu == null ? "0" : jihuashu; + luqushu = luqushu == null ? "0" : luqushu; + shijitoudangrenshu = shijitoudangrenshu == null ? "0" : shijitoudangrenshu; + yizhiyuanluqushu = yizhiyuanluqushu == null ? "0" : yizhiyuanluqushu; + + //一志愿最低排序成绩 + yizhiyuanzuidipaixuchengji = liNianShuJuDTO.getYizhiyuanzuidipaixuchengji(); + if (yizhiyuanzuidipaixuchengji == null) { + continue; + //yizhiyuanzuidipaixuchengji = "0"; + } + yizhiyuanzuidipaixuchengji= yizhiyuanzuidipaixuchengji.replace("g","9"); + + YxHistoryMajorEnroll yxHistoryMajorEnroll = new YxHistoryMajorEnroll(); + yxHistoryMajorEnroll.setInstitutionCode(schoolCode); + yxHistoryMajorEnroll.setSchoolCode(school.getSchoolCode()); + yxHistoryMajorEnroll.setSchoolName(schoolName); + yxHistoryMajorEnroll.setEnrollmentCode(zhuanyeCode);//招生代码 + yxHistoryMajorEnroll.setMajorCode(yxMajor.getMajorCode());//专业编号 + yxHistoryMajorEnroll.setMajorName(zhuanyeName);//专业名称 + yxHistoryMajorEnroll.setYear(nianfen);//年份 + yxHistoryMajorEnroll.setCategory(kelei);//文科/理科 + yxHistoryMajorEnroll.setAdmissionLine(new BigDecimal(yizhiyuanzuidipaixuchengji));//一志愿最低排序成绩 + yxHistoryMajorEnroll.setEnrollNum(new BigDecimal(jihuashu).intValue());//计划人数 + yxHistoryMajorEnroll.setActualPitcherNum(Integer.valueOf(shijitoudangrenshu));//实际投递人数 + yxHistoryMajorEnroll.setAdmissionNum(Integer.valueOf(luqushu));//录取数 + yxHistoryMajorEnroll.setOneVolunteerAdmissionNum(Integer.valueOf(yizhiyuanluqushu));//录取数 + yxHistoryMajorEnroll.setMajorType(majorType);//专业类别 + //排序方法 + yxHistoryScoreControlLine = scoreControlLineMap.get(nianfen+batch2+majorType+kelei); + //文化成绩分 + BigDecimal culturalScore = yxHistoryScoreControlLine.getCulturalScore(); + //专业成绩分 + BigDecimal specialScore = yxHistoryScoreControlLine.getSpecialScore(); + if (sortType.equals("专业课上线,文化课排队")) { + //专过文排 + yxHistoryMajorEnroll.setRulesEnrollProbability("专过文排"); + BigDecimal wenhuaBl = new BigDecimal(wenhuaBili).divide(bigDecimal100, 4, RoundingMode.HALF_UP); + yxHistoryMajorEnroll.setControlLine(wenhuaBl.multiply(culturalScore)); + } + else if (sortType.equals("文化课上线,专业课排队")) { + //文过专排 + yxHistoryMajorEnroll.setRulesEnrollProbability("文过专排"); + BigDecimal zhuanyeBl = new BigDecimal(zhuanyeBili).divide(bigDecimal100, 4, RoundingMode.HALF_UP); + yxHistoryMajorEnroll.setControlLine(zhuanyeBl.multiply(specialScore)); + } + else if (sortType.equals("其他计算办法")) { + continue; + } + else { + BigDecimal wenhuaBl = new BigDecimal(wenhuaBili).divide(bigDecimal100, 4, RoundingMode.HALF_UP); + BigDecimal zhuanyeBl = new BigDecimal(zhuanyeBili).divide(bigDecimal100, 4, RoundingMode.HALF_UP); + BigDecimal controlLine = wenhuaBl.multiply(culturalScore).add(zhuanyeBl.multiply(specialScore)); + yxHistoryMajorEnroll.setControlLine(controlLine); + yxHistoryMajorEnroll.setRulesEnrollProbability("文" + wenhuaBl.toString() + "专" + zhuanyeBl.toString()); + yxHistoryMajorEnroll.setProbabilityOperator("文*" + wenhuaBl.toString() + "专*" + zhuanyeBl.toString()); + } + yxHistoryMajorEnroll.setBatch(batch); + yxHistoryMajorEnrollList.add(yxHistoryMajorEnroll); + } + + Set renameYuanxiaos = new HashSet<>(); + for (LiNianShuJuDTO liNianShuJuDTO : notSchoolList) { + if (liNianShuJuDTO.getYuanxiao().contains("原")) { + renameYuanxiaos.add(liNianShuJuDTO.getYuanxiao().replace(" ", "").replace("\n", "")); + } + } + if (CollectionUtils.isNotEmpty(renameYuanxiaos)) { + for (String renameYuanxiao : renameYuanxiaos) { + System.out.println(renameYuanxiao); + } + } + } + catch (FileNotFoundException fileNotFoundException) { + log.error("文件不存在," + file.getAbsolutePath()); + throw new RuntimeException(fileNotFoundException); + } catch (Exception e) { + System.out.println(index); + throw new RuntimeException(e); + } + //yxHistoryMajorEnrollService.saveBatch(yxHistoryMajorEnrollList); + System.out.println("未找到学校及专业的数据数量:" + notSchoolList.size()); + return Result.error("文件导入成功!"); + } + + @RequestMapping(value = "/importExcel32", method = RequestMethod.POST) + public Result importExcel32(HttpServletRequest request, HttpServletResponse response) { + // 获取上传文件对象 + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\表演提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\表演A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\表演B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\表演专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\播音提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\播音A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\播音B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\播音专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\国标舞提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\国标舞A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\国标舞B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\国标舞专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\美术提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\美术A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\美术B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\美术专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\书法提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\书法A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\书法B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\书法专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\艺术舞蹈提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\艺术舞蹈A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\艺术舞蹈B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\艺术舞蹈专科.xlsx"); + + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\音乐提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\音乐A段2.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\音乐B段.xlsx"); + File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\体育本科2021.xlsx"); +// File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\体育专科2021.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\体育专科1.xlsx"); + FileInputStream fileInputStream = null; + ImportParams params = new ImportParams(); + params.setTitleRows(0); + params.setNeedSave(true); + int index = 0; + List schoolList = yxSchoolService.list(new LambdaQueryWrapper().isNotNull(YxSchool::getSchoolCode)); + + //本科(职业教育) + Map majorNameZyMap = new LinkedHashMap<>(); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (file.getName().contains("专科")) { + //高职高专 + queryWrapper.eq(YxMajor::getEducationalLevel, "2"); + } else { + //本科 + queryWrapper.eq(YxMajor::getEducationalLevel, "1"); + queryWrapper.eq(YxMajor::getIsVte, "0"); + } + List majorList = yxMajorService.list(queryWrapper); + boolean isB = false; + String batch = null; + String batch2 = null; + if (file.getName().contains("A段")) { + batch = "本科A段"; + batch2 = "本科A段"; + } else if (file.getName().contains("提前批")) { + batch = "提前批"; + batch2 = "本科A段"; + } else if (file.getName().contains("专科")) { + batch = "高职高专"; + batch2 = "专科"; + }else if (file.getName().contains("B段")) { + batch = "本科B段"; + batch2 = "本科B段"; + isB = true; + //获取职业本科 + queryWrapper.clear(); + queryWrapper.eq(YxMajor::getEducationalLevel, "1"); + queryWrapper.eq(YxMajor::getIsVte, "1"); + List list = yxMajorService.list(queryWrapper); + majorNameZyMap = list.stream().collect(Collectors.toMap(m -> m.getMajorName(), m -> m)); + }else if(file.getName().contains("本科")){ + batch = "本科"; + batch2 = "本科"; + } + + String majorType=""; + LambdaQueryWrapper yxHistoryScoreControlLineLambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (file.getName().contains("美术")) { + majorType="美术类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "美术类"); + } else if (file.getName().contains("音乐")) { + majorType="音乐类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "音乐类"); + } else if (file.getName().contains("艺术舞蹈")) { + majorType="艺术舞蹈类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "艺术舞蹈类"); + } else if (file.getName().contains("国标舞")) { + majorType="国际标准舞类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "国际标准舞类"); + } else if (file.getName().contains("编导")) { + majorType="编导制作类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "编导制作类"); + } else if (file.getName().contains("播音")) { + majorType="播音与主持类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "播音与主持类"); + } else if (file.getName().contains("表演")) { + majorType="表演类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "表演类"); + } else if (file.getName().contains("书法")) { + majorType="书法类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "书法类"); + } else if (file.getName().contains("体育")) { + majorType="体育类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "体育类"); + } + + List historyScoreControlLineList = yxHistoryScoreControlLineService.list(yxHistoryScoreControlLineLambdaQueryWrapper); + Map scoreControlLineMap = historyScoreControlLineList.stream().collect(Collectors.toMap(h -> h.getYear()+ h.getBatch() +h.getProfessionalCategory() + h.getCategory(), h -> h)); + Map schoolNameMap = schoolList.stream().collect(Collectors.toMap(YxSchool::getSchoolCode, s -> s)); + Map majorNameMap = majorList.stream().collect(Collectors.toMap(YxMajor::getMajorName, m -> m)); + Set notSchoolList = new HashSet<>(); + List yxHistoryMajorEnrollList = new ArrayList<>(); + try { + fileInputStream = new FileInputStream(file); + List list = ExcelImportUtil.importExcel(fileInputStream, LiNianShuJuDTO.class, params); + String schoolCode = null; + String schoolName = null; + String zhuanye = null; + String detail = null; + String zhuanyeName = null; + String zhuanyeCode = null; + String zhuanyeNameLast = null; + String nianfen = null; + String kelei = null; + String wenhuaBili = null; + String zhuanyeBili = null; + String jihuashu = null; + String luqushu = null; + String shijitoudangrenshu = null; + String yizhiyuanluqushu = null; + String yizhiyuanzuidipaixuchengji = null; + String sortType = null; + int i = 0, ii1 = 0, i2 = 0, i3 = 0; + YxHistoryScoreControlLine yxHistoryScoreControlLine = null; + BigDecimal bigDecimal100 = new BigDecimal(100); + + + //识别专业名称 库中没有则创建 + if (1==2&& batch2.equals("专科")) { + for (LiNianShuJuDTO liNianShuJuDTO : list) { + index++; + zhuanye = liNianShuJuDTO.getZhuanye(); + if (StringUtils.isBlank(zhuanye)) { + continue; + } + zhuanye = zhuanye.replace(" ", "") + .replace(".", "") + .replace("(", "(") + .replace(")", ")") + .replace("離", "雕") + .replace("朔", "塑") + .replace("美末", "美术") + .replace("艺采", "艺术") + .replace("艺末", "艺术") + .replace("艺未", "艺术") + .replace("设讦", "设计") + .replace("设评", "设计") + .replace("搬影", "摄影") + .replace("室内艺术设计", "室内艺术设") + .replace("室内艺术设", "室内艺术设计") + .replace("数字媒体艺术设计", "数字媒体艺术设") + .replace("数字媒体艺术设", "数字媒体艺术设计").replace("\n", ""); + i3 = zhuanye.indexOf("("); + zhuanyeCode = liNianShuJuDTO.getZhuanyeCode(); + if (i3!=-1) { + zhuanyeName = zhuanye.substring(0,i3); + }else{ + zhuanyeName = zhuanye; + } + //i3 = zhuanyeName.indexOf("("); + YxMajor yxMajor = null; + + + if (isB && liNianShuJuDTO.getYuanxiao().contains("职业") && ! liNianShuJuDTO.getYuanxiao().contains("陶瓷")) { + if (i3 == -1) { + yxMajor = majorNameZyMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameZyMap.get(zhuanyeName.substring(0, i3)); + } + //如果 没有从 职业本科中找到,那就去找普通本科 + if (yxMajor == null) { + if (i3 == -1) { + yxMajor = majorNameMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameMap.get(zhuanyeName.substring(0, i3)); + } + } + } else { + if (i3 == -1) { + yxMajor = majorNameMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameMap.get(zhuanyeName.substring(0, i3)); + } + } + + if (zhuanyeName.contains("广告设计与制作")) { + yxMajor = majorNameMap.get("广告艺术设计"); + } + if (yxMajor==null) { + yxMajor=new YxMajor(); + yxMajor.setMajorCode(zhuanyeCode); + yxMajor.setMajorName(zhuanyeName); + + if (batch2.contains("本")) { + yxMajor.setEducationalLevel("1"); + yxMajor.setSemester("4"); + if (zhuanyeName.contains("表演")) { + yxMajor.setFirstLevelDiscipline("1731184290459099137");//表演艺术 + } + }else{ + yxMajor.setEducationalLevel("2"); + yxMajor.setSemester("3"); + if (zhuanyeName.contains("表演")) { + yxMajor.setFirstLevelDiscipline("1729376091326214145");//表演艺术 + }else if(zhuanyeName.contains("媒体")){ + yxMajor.setFirstLevelDiscipline("1731488738330918913");//广播影视类 + }else if(zhuanyeName.contains("设计")){ + yxMajor.setFirstLevelDiscipline("1729376034648584193");//艺术设计类 + }else if(zhuanyeName.contains("美术")){ + yxMajor.setFirstLevelDiscipline("1729376034648584193");//艺术设计类 + } + } + yxMajor.setIsVte(0); + yxMajorService.save(yxMajor); + majorNameMap.put(zhuanyeName,yxMajor); + } + } + majorList = yxMajorService.list(queryWrapper); + majorNameMap = majorList.stream().collect(Collectors.toMap(m -> m.getMajorName(), m -> m)); + index=0; + } + for (LiNianShuJuDTO liNianShuJuDTO : list) { + index++; + //获取专业名 + zhuanye = liNianShuJuDTO.getZhuanye(); + detail = liNianShuJuDTO.getDetail(); + //院校 + String yuanxiao = liNianShuJuDTO.getYuanxiao(); + if (StringUtils.isBlank(yuanxiao)) { + continue; + } + schoolCode = liNianShuJuDTO.getYuanxiaoCode(); + yuanxiao = yuanxiao.replace(" ", "").replace("\n", "").replace("(", "(").replace(")", ")"); + i = yuanxiao.indexOf(")"); + //schoolCode = yuanxiao.substring(1, i); + schoolName = yuanxiao.substring(i + 1, yuanxiao.length()); + + + if (schoolName.contains("中外合作") || schoolName.contains("(原") || schoolName.contains("(源")) { + ii1 = schoolName.indexOf("("); + if (ii1 != -1) { + schoolName = schoolName.substring(0, ii1); + } + } + + + YxSchool school = schoolNameMap.get(schoolCode); + + if (schoolName.contains("漂河职业技术学院")) { + school = schoolNameMap.get("漯河职业技术学院"); + } + + if (school == null) { + //学校库没有这个学校 + notSchoolList.add(liNianShuJuDTO); + continue; + } + school.setInstitutionCode(schoolCode);//院校编码 + schoolNameMap.put(schoolName, school);//再保存到map,等最后循环完后,一起修改 + if (StringUtils.isBlank(zhuanye)) { + continue; + } + zhuanye = zhuanye.replace(" ", "") + .replace(".", "") + .replace("(", "(") + .replace(")", ")") + .replace("離", "雕") + .replace("朔", "塑") + .replace("美末", "美术") + .replace("艺采", "艺术") + .replace("艺末", "艺术") + .replace("艺未", "艺术") + .replace("设讦", "设计") + .replace("设评", "设计") + .replace("搬影", "摄影") + .replace("室内艺术设计", "室内艺术设") + .replace("室内艺术设", "室内艺术设计") + .replace("数字媒体艺术设计", "数字媒体艺术设") + .replace("数字媒体艺术设", "数字媒体艺术设计").replace("\n", ""); + i2 = zhuanye.indexOf(")"); + //zhuanyeCode = zhuanye.substring(1, i2); + zhuanyeCode = liNianShuJuDTO.getZhuanyeCode(); + i3 = zhuanye.indexOf("("); + if (i3 != -1) { + zhuanyeName = zhuanye.substring(0,i3); + }else{ + zhuanyeName = zhuanye; + } + //zhuanyeName = zhuanye.substring(i3 + 1, zhuanye.length()); + YxMajor yxMajor = null; + + yxMajor = majorNameMap.get(zhuanyeName); + /*if (isB && schoolName.contains("职业") && !zhuanyeName.contains("陶瓷")) { + if (i3 == -1) { + yxMajor = majorNameZyMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameZyMap.get(zhuanyeName.substring(0, i3)); + } + //如果 没有从 职业本科中找到,那就去找普通本科 + if (yxMajor == null) { + if (i3 == -1) { + yxMajor = majorNameMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameMap.get(zhuanyeName.substring(0, i3)); + } + } + } else { + if (i3 == -1) { + yxMajor = majorNameMap.get(zhuanyeName); + } else { + //专业名称后半段 + zhuanyeNameLast = zhuanyeName.replace(zhuanyeName.substring(0, i3), ""); + yxMajor = majorNameMap.get(zhuanyeName.substring(0, i3)); + } + }*/ + + if (zhuanyeName.contains("广告设计与制作")) { + yxMajor = majorNameMap.get("广告艺术设计"); + } + if (yxMajor == null) { + notSchoolList.add(liNianShuJuDTO); + continue; + } + sortType = liNianShuJuDTO.getSortType(); + //科类 + kelei = liNianShuJuDTO.getKelei(); + //获取年份 + nianfen = liNianShuJuDTO.getNianfen(); + //文化成绩比例 + wenhuaBili = liNianShuJuDTO.getWenhuaBili(); + //专业成绩比例 + zhuanyeBili = liNianShuJuDTO.getZhuanyeBili(); + //计划数 + jihuashu = liNianShuJuDTO.getJihuashu(); + //录取数 + luqushu = liNianShuJuDTO.getLuqushu(); + //实际投档人数 + shijitoudangrenshu = liNianShuJuDTO.getShijitoudangrenshu(); + //一志愿录取数 + yizhiyuanluqushu = liNianShuJuDTO.getYizhiyuanluqushu(); + + jihuashu = jihuashu == null ? "0" : jihuashu; + luqushu = luqushu == null ? "0" : luqushu; + shijitoudangrenshu = shijitoudangrenshu == null ? "0" : shijitoudangrenshu; + yizhiyuanluqushu = yizhiyuanluqushu == null ? "0" : yizhiyuanluqushu; + + //一志愿最低排序成绩 + yizhiyuanzuidipaixuchengji = liNianShuJuDTO.getYizhiyuanzuidipaixuchengji(); + if (yizhiyuanzuidipaixuchengji == null) { + continue; + //yizhiyuanzuidipaixuchengji = "0"; + } + yizhiyuanzuidipaixuchengji= yizhiyuanzuidipaixuchengji.replace("g","9"); + + YxHistoryMajorEnroll yxHistoryMajorEnroll = new YxHistoryMajorEnroll(); + yxHistoryMajorEnroll.setInstitutionCode(schoolCode); + yxHistoryMajorEnroll.setSchoolCode(school.getSchoolCode()); + yxHistoryMajorEnroll.setSchoolName(schoolName); + yxHistoryMajorEnroll.setEnrollmentCode(zhuanyeCode);//招生代码 + yxHistoryMajorEnroll.setMajorCode(yxMajor.getMajorCode());//专业编号 + yxHistoryMajorEnroll.setMajorName(zhuanyeName);//专业名称 + yxHistoryMajorEnroll.setYear(nianfen);//年份 + yxHistoryMajorEnroll.setCategory(kelei);//文科/理科 + yxHistoryMajorEnroll.setAdmissionLine(new BigDecimal(yizhiyuanzuidipaixuchengji));//一志愿最低排序成绩 + yxHistoryMajorEnroll.setEnrollNum(new BigDecimal(jihuashu).intValue());//计划人数 + yxHistoryMajorEnroll.setActualPitcherNum(Integer.valueOf(shijitoudangrenshu));//实际投递人数 + yxHistoryMajorEnroll.setAdmissionNum(Integer.valueOf(luqushu));//录取数 + yxHistoryMajorEnroll.setOneVolunteerAdmissionNum(Integer.valueOf(yizhiyuanluqushu));//录取数 + yxHistoryMajorEnroll.setMajorType(majorType);//专业类别 + yxHistoryMajorEnroll.setDetail(detail); + //排序方法 + yxHistoryScoreControlLine = scoreControlLineMap.get(nianfen+batch2+majorType+kelei); + //文化成绩分 + BigDecimal culturalScore = yxHistoryScoreControlLine.getCulturalScore(); + //专业成绩分 + BigDecimal specialScore = yxHistoryScoreControlLine.getSpecialScore(); + if (sortType.equals("专业课上线,文化课排队")) { + //专过文排 + yxHistoryMajorEnroll.setRulesEnrollProbability("专过文排"); + BigDecimal wenhuaBl = new BigDecimal(wenhuaBili).divide(bigDecimal100, 4, RoundingMode.HALF_UP); + yxHistoryMajorEnroll.setControlLine(wenhuaBl.multiply(culturalScore)); + } + else if (sortType.equals("文化课上线,专业课排队")) { + //文过专排 + yxHistoryMajorEnroll.setRulesEnrollProbability("文过专排"); + BigDecimal zhuanyeBl = new BigDecimal(zhuanyeBili).divide(bigDecimal100, 4, RoundingMode.HALF_UP); + yxHistoryMajorEnroll.setControlLine(zhuanyeBl.multiply(specialScore)); + } + else if (sortType.equals("其他计算办法")) { + continue; + } + else { + BigDecimal wenhuaBl = new BigDecimal(wenhuaBili).divide(bigDecimal100, 4, RoundingMode.HALF_UP); + BigDecimal zhuanyeBl = new BigDecimal(zhuanyeBili).divide(bigDecimal100, 4, RoundingMode.HALF_UP); + BigDecimal controlLine = wenhuaBl.multiply(culturalScore).add(zhuanyeBl.multiply(specialScore)); + yxHistoryMajorEnroll.setControlLine(controlLine); + yxHistoryMajorEnroll.setRulesEnrollProbability("文" + wenhuaBl.toString() + "专" + zhuanyeBl.toString()); + yxHistoryMajorEnroll.setProbabilityOperator("文*" + wenhuaBl.toString() + "专*" + zhuanyeBl.toString()); + } + yxHistoryMajorEnroll.setBatch(batch); + yxHistoryMajorEnrollList.add(yxHistoryMajorEnroll); + } + + Set renameYuanxiaos = new HashSet<>(); + for (LiNianShuJuDTO liNianShuJuDTO : notSchoolList) { + if (liNianShuJuDTO.getYuanxiao().contains("原")) { + renameYuanxiaos.add(liNianShuJuDTO.getYuanxiao().replace(" ", "").replace("\n", "")); + } + } + if (CollectionUtils.isNotEmpty(renameYuanxiaos)) { + for (String renameYuanxiao : renameYuanxiaos) { + System.out.println(renameYuanxiao); + } + } + } + catch (FileNotFoundException fileNotFoundException) { + log.error("文件不存在," + file.getAbsolutePath()); + throw new RuntimeException(fileNotFoundException); + } catch (Exception e) { + System.out.println(index); + throw new RuntimeException(e); + } + //yxHistoryMajorEnrollService.saveBatch(yxHistoryMajorEnrollList); + System.out.println("未找到学校及专业的数据数量:" + notSchoolList.size()); + return Result.error("文件导入成功!"); + } + + public Result importExcel33(HttpServletRequest request, HttpServletResponse response) { + // 获取上传文件对象 + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\表演提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\表演A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\表演B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\表演专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\播音提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\播音A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\播音B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\播音专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\国标舞提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\国标舞A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\国标舞B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\国标舞专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\美术提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\美术A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\美术B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\艺术录取分数线2022-2020\\美术专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\书法提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\书法A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\书法B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\书法专科.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\艺术舞蹈提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\艺术舞蹈A段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\艺术舞蹈B段.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\艺术舞蹈专科.xlsx"); + + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\音乐提前批.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\音乐A段2.xlsx"); + //File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\音乐B段.xlsx"); + File file = new File("C:\\Users\\Denim\\Desktop\\书法、艺术舞蹈、音乐、体育\\体育本科1.xlsx"); + FileInputStream fileInputStream = null; + ImportParams params = new ImportParams(); + params.setTitleRows(0); + params.setNeedSave(true); + int index = 0; + List schoolList = yxSchoolService.list(); + + //本科(职业教育) + Map majorNameZyMap = new LinkedHashMap<>(); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (file.getName().contains("专科")) { + //高职高专 + queryWrapper.eq(YxMajor::getEducationalLevel, "2"); + } else { + //本科 + queryWrapper.eq(YxMajor::getEducationalLevel, "1"); + queryWrapper.eq(YxMajor::getIsVte, "0"); + } + List majorList = yxMajorService.list(queryWrapper); + boolean isB = false; + String batch = null; + String batch2 = null; + if (file.getName().contains("A段")) { + batch = "本科A段"; + batch2 = "本科A段"; + } else if (file.getName().contains("提前批")) { + batch = "提前批"; + batch2 = "本科A段"; + } else if (file.getName().contains("专科")) { + batch = "高职高专"; + batch2 = "专科"; + }else if (file.getName().contains("B段")) { + batch = "本科B段"; + batch2 = "本科B段"; + isB = true; + //获取职业本科 + queryWrapper.clear(); + queryWrapper.eq(YxMajor::getEducationalLevel, "1"); + queryWrapper.eq(YxMajor::getIsVte, "1"); + List list = yxMajorService.list(queryWrapper); + majorNameZyMap = list.stream().collect(Collectors.toMap(m -> m.getMajorName(), m -> m)); + }else if(file.getName().contains("本科")){ + batch = "本科"; + batch2 = "本科"; + } + + String majorType=""; + LambdaQueryWrapper yxHistoryScoreControlLineLambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (file.getName().contains("美术")) { + majorType="美术类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "美术类"); + } else if (file.getName().contains("音乐")) { + majorType="音乐类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "音乐类"); + } else if (file.getName().contains("艺术舞蹈")) { + majorType="艺术舞蹈类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "艺术舞蹈类"); + } else if (file.getName().contains("国标舞")) { + majorType="国际标准舞类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "国际标准舞类"); + } else if (file.getName().contains("编导")) { + majorType="编导制作类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "编导制作类"); + } else if (file.getName().contains("播音")) { + majorType="播音与主持类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "播音与主持类"); + } else if (file.getName().contains("表演")) { + majorType="表演类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "表演类"); + } else if (file.getName().contains("书法")) { + majorType="书法类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "书法类"); + } else if (file.getName().contains("体育")) { + majorType="体育类"; + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "体育类"); + } + + List historyScoreControlLineList = yxHistoryScoreControlLineService.list(yxHistoryScoreControlLineLambdaQueryWrapper); + Map scoreControlLineMap = historyScoreControlLineList.stream().collect(Collectors.toMap(h -> h.getYear()+ h.getBatch() +h.getProfessionalCategory() + h.getCategory(), h -> h)); + Map schoolNameMap = schoolList.stream().collect(Collectors.toMap(YxSchool::getSchoolName, s -> s)); + Map majorNameMap = majorList.stream().collect(Collectors.toMap(YxMajor::getMajorName, m -> m)); Set notSchoolList = new HashSet<>(); List yxHistoryMajorEnrollList = new ArrayList<>(); try { @@ -1293,193 +2181,211 @@ public class YxSchoolController extends JeecgController historyMajorEnrollList = yxHistoryMajorEnrollService.list(new LambdaQueryWrapper().eq(YxHistoryMajorEnroll::getYear, "2022")); - List yxSchoolMajorList = yxSchoolMajorService.list(); + List historyMajorEnrollList =null; + List yxSchoolMajorList = yxSchoolMajorService.list(new LambdaQueryWrapper().isNull(YxSchoolMajor::getMajorType)); Map yxHistoryMajorEnrollMap=new LinkedHashMap<>(); - for (YxHistoryMajorEnroll yxHistoryMajorEnroll : historyMajorEnrollList) { - String key = yxHistoryMajorEnroll.getMajorType()+"_"+ yxHistoryMajorEnroll.getBatch()+"_"+yxHistoryMajorEnroll.getCategory()+"_"+yxHistoryMajorEnroll.getSchoolCode()+"_"+yxHistoryMajorEnroll.getMajorName(); - yxHistoryMajorEnrollMap.put(key,yxHistoryMajorEnroll); - } + LambdaQueryWrapper yxHistoryMajorEnrollLambdaQueryWrapper = new LambdaQueryWrapper<>(); for (YxSchoolMajor yxSchoolMajor : yxSchoolMajorList) { - String key = yxSchoolMajor.getMajorType()+"_"+ yxSchoolMajor.getBatch()+"_"+yxSchoolMajor.getCategory()+ "_"+ yxSchoolMajor.getSchoolCode()+"_"+ yxSchoolMajor.getMajorName(); - YxHistoryMajorEnroll yxHistoryMajorEnroll = yxHistoryMajorEnrollMap.get(key); - + yxHistoryMajorEnrollLambdaQueryWrapper.clear(); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getBatch,yxSchoolMajor.getBatch()); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getCategory,yxSchoolMajor.getCategory()); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getSchoolCode,yxSchoolMajor.getSchoolCode()); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getMajorName,yxSchoolMajor.getMajorName()); + yxHistoryMajorEnrollLambdaQueryWrapper.orderByDesc(YxHistoryMajorEnroll::getYear); + historyMajorEnrollList = yxHistoryMajorEnrollService.list(yxHistoryMajorEnrollLambdaQueryWrapper); + //String key =yxSchoolMajor.getBatch()+"_"+yxSchoolMajor.getCategory()+"_"+yxSchoolMajor.getSchoolCode()+"_"+yxSchoolMajor.getMajorName(); + /*if (CollectionUtils.isEmpty(historyMajorEnrollList)) { + continue; + }*/ + if (CollectionUtils.isNotEmpty(historyMajorEnrollList)) { + YxHistoryMajorEnroll yxHistoryMajorEnroll = historyMajorEnrollList.get(0); + yxSchoolMajor.setRulesEnrollProbability(yxHistoryMajorEnroll.getRulesEnrollProbability()); + yxSchoolMajor.setProbabilityOperator(yxHistoryMajorEnroll.getProbabilityOperator()); + yxSchoolMajor.setMajorType(yxHistoryMajorEnroll.getMajorType()); + }else{ + yxHistoryMajorEnrollLambdaQueryWrapper.clear(); + yxHistoryMajorEnrollLambdaQueryWrapper.last("limit 0,1"); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getMajorCode,yxSchoolMajor.getMajorCode()); + YxHistoryMajorEnroll one = yxHistoryMajorEnrollService.getOne(yxHistoryMajorEnrollLambdaQueryWrapper); + if (one!=null) { + yxSchoolMajor.setMajorType(one.getMajorType()); + } + } String batch=yxSchoolMajor.getBatch(); if (yxSchoolMajor.getBatch().equals("提前批")) { batch="本科A段"; }else if(yxSchoolMajor.getBatch().equals("高职高专")){ batch="专科"; } - YxHistoryScoreControlLine yxHistoryScoreControlLine = historyScoreControlLineMap.get("2023_"+batch + "_" + yxSchoolMajor.getCategory() + "_" + yxSchoolMajor.getMajorType()); - BigDecimal culturalScore = yxHistoryScoreControlLine.getCulturalScore(); - BigDecimal specialScore = yxHistoryScoreControlLine.getSpecialScore(); - yxSchoolMajor.setCulturalControlLine(culturalScore); - yxSchoolMajor.setSpecialControlLine(specialScore); - if (yxHistoryMajorEnroll!=null) { - yxSchoolMajor.setRulesEnrollProbability(yxHistoryMajorEnroll.getRulesEnrollProbability()); - yxSchoolMajor.setProbabilityOperator(yxHistoryMajorEnroll.getProbabilityOperator()); - }else{ - yxSchoolMajor.setRulesEnrollProbability(null); - yxSchoolMajor.setProbabilityOperator(null); + if (yxSchoolMajor.getMajorType()!=null) { + YxHistoryScoreControlLine yxHistoryScoreControlLine = historyScoreControlLineMap.get("2023_"+batch + "_" + yxSchoolMajor.getCategory() + "_" + yxSchoolMajor.getMajorType()); + BigDecimal culturalScore = yxHistoryScoreControlLine.getCulturalScore(); + BigDecimal specialScore = yxHistoryScoreControlLine.getSpecialScore(); + yxSchoolMajor.setCulturalControlLine(culturalScore); + yxSchoolMajor.setSpecialControlLine(specialScore); } - } yxSchoolMajorService.updateBatchById(yxSchoolMajorList); - }else{ - /*if(true){ - File file = new File("C:\\Users\\Denim\\Desktop\\数据信息\\2023河南招生计划统计.xlsx"); - FileInputStream fileInputStream = null; - ImportParams params = new ImportParams(); - params.setTitleRows(0); - params.setNeedSave(true); - int i =0; - try { - fileInputStream = new FileInputStream(file); - List list = ExcelImportUtil.importExcel(fileInputStream, SchoolMajorImport3.class, params); - List schoolList = yxSchoolService.list(new LambdaQueryWrapper().isNotNull(YxSchool::getInstitutionCode)); - List majorList = yxMajorService.list(new LambdaQueryWrapper().isNotNull(YxMajor::getMajorCode)); - Map schoolMap= schoolList.stream().collect(Collectors.toMap(YxSchool::getInstitutionCode, c -> c)); - Map majorMap=new LinkedHashMap<>(); - Map majorZhuanMap=new LinkedHashMap<>(); - for (YxMajor yxMajor : majorList) { - if (yxMajor.getEducationalLevel().equals("1")) { - //本科 - majorMap.put(yxMajor.getMajorName(),yxMajor); - }else{ - //专 - majorZhuanMap.put(yxMajor.getMajorName(),yxMajor); - } + } + else{ + File file = new File("C:\\Users\\Denim\\Desktop\\数据信息\\2023河南招生计划统计.xlsx"); + FileInputStream fileInputStream = null; + ImportParams params = new ImportParams(); + params.setTitleRows(0); + params.setNeedSave(true); + int i =0; + try { + fileInputStream = new FileInputStream(file); + List list = ExcelImportUtil.importExcel(fileInputStream, SchoolMajorImport3.class, params); + List schoolList = yxSchoolService.list(new LambdaQueryWrapper().isNotNull(YxSchool::getSchoolCode)); + List majorList = yxMajorService.list(new LambdaQueryWrapper().isNotNull(YxMajor::getMajorCode)); + Map schoolMap= schoolList.stream().collect(Collectors.toMap(YxSchool::getSchoolCode, c -> c)); + Map majorMap=new LinkedHashMap<>(); + Map majorZhuanMap=new LinkedHashMap<>(); + for (YxMajor yxMajor : majorList) { + if (yxMajor.getEducationalLevel().equals("1")) { + //本科 + majorMap.put(yxMajor.getMajorName(),yxMajor); + }else{ + //专 + majorZhuanMap.put(yxMajor.getMajorName(),yxMajor); } - YxSchool school=null; - LambdaQueryWrapper yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>(); - List schoolMajorList=new ArrayList<>(); - YxSchoolMajor schoolMajor=null; - //同步 学校专业关联信息 - if(true){ - Set notSchoolList=new HashSet<>(); - YxSchool school1=null; - String batch=null; - String category=null; - String jhs=null; - String yxmc = null; - String yxdm = null; - String zymc = null; - String zydm = null; - String zspc = null; - String xf = null; - String zybz = null; - String zyyx = null; - YxMajor major = null; - String majorType = null; - boolean wenli = false; - LambdaQueryWrapper schoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>(); - for (SchoolMajorImport3 schoolMajorImport3 : list) { - wenli = false; - i++; - yxmc = schoolMajorImport3.getYxmc();//院校名称 - yxdm = schoolMajorImport3.getYxdm();//院校代码 - zymc = schoolMajorImport3.getZymc();//专业名称 - zydm = schoolMajorImport3.getZydm();//专业代码 - zspc = schoolMajorImport3.getZspc();//招生批次 - jhs = schoolMajorImport3.getJhs();//计划数 - xf = schoolMajorImport3.getXf();//学费 - zybz = schoolMajorImport3.getZybz();//专业备注 - - zymc = zymc.replace("(","("); - zymc = zymc.replace(")",")"); - //先屏蔽体育 - if (!zspc.contains("体育")) { - continue; - } - - school1 = schoolMap.get(yxdm); - //获取没找到的学校 - if (school1==null) { - notSchoolList.add(schoolMajorImport3); - continue; - } - - //判断批次 - if(true){ - if(zspc.contains("本科提前批")){ - batch="提前批"; - }else if (zspc.contains("本科A段")) { - batch="本科A段"; - }else if (zspc.contains("本科B段")) { - batch="本科B段"; - }else if (zspc.contains("本科")) { - batch="本科"; - }else if (zspc.contains("高职高专")) { - batch="高职高专"; - }else{ - notSchoolList.add(schoolMajorImport3); - continue; - } - } - - //文理分科 - if(true){ - if (zspc.contains("文科") && zspc.contains("理科")) { - wenli = true; - //文理同招 - }else if(zspc.contains("文科")){ - category="文科"; - }else if(zspc.contains("理科")){ - category="理科"; - }else{ - notSchoolList.add(schoolMajorImport3); - continue; - } - if (yxmc.contains("河南大学") && zydm.equals("01")) { - System.out.println("111"); - } - } - //获取专业信息表数据 - String majorName=zymc; - int start = zymc.indexOf("("); - int lasti = zymc.indexOf(")"); - if (start!=-1) { - majorName = majorName.substring(0,start); - } - major = null; - if (batch.equals("高职高专")) { - //专科 - major = majorZhuanMap.get(majorName); - }else{ - //本科 - major = majorMap.get(majorName); - } - if (major == null) { - notSchoolList.add(schoolMajorImport3); - continue; - } - - schoolMajor = new YxSchoolMajor(); - schoolMajor.setSchoolCode(school1.getSchoolCode());//院校代码 - schoolMajor.setMajorCode(major.getMajorCode());//专业代码 - schoolMajor.setMajorName(zymc);//专业名称 - schoolMajor.setTuition(xf.contains("待定")?new BigDecimal("0"):new BigDecimal(xf));//学费 - schoolMajor.setDetail(zybz);//专业备注 - schoolMajor.setCategory(category);//科类 - //schoolMajor.setRulesEnrollProbability() - schoolMajor.setBatch(batch); - schoolMajor.setEnrollmentCode(zydm);//专业代码 - schoolMajor.setMajorType(null); - schoolMajorList.add(schoolMajor); - } - System.out.println("没找到的学校"); - System.out.println(notSchoolList.size()); - if (CollectionUtils.isEmpty(notSchoolList) && CollectionUtils.isNotEmpty(schoolMajorList)) { - yxSchoolMajorService.saveBatch(schoolMajorList); - } - } - } catch (FileNotFoundException fileNotFoundException) { - log.error("文件不存在," + file.getAbsolutePath()); - throw new RuntimeException(fileNotFoundException); - } catch (Exception e) { - System.out.println("错误index:"+i); - throw new RuntimeException(e); } + YxSchool school=null; + List schoolMajorList=new ArrayList<>(); + List historyMajorEnrollList2023=new ArrayList<>(); + YxSchoolMajor schoolMajor=null; + //同步 学校专业关联信息 + if(true){ + Set notSchoolList=new HashSet<>(); + YxSchool school1=null; + String batch=null; + String category=null; + String jhs=null; + String yxmc = null; + String yxdm = null; + String zymc = null; + String zydm = null; + String zspc = null; + String xf = null; + String zybz = null; + String zyyx = null; + YxMajor major = null; + String majorType = null; + boolean wenli = false; + for (SchoolMajorImport3 schoolMajorImport3 : list) { + wenli = false; + i++; + yxmc = schoolMajorImport3.getYxmc();//院校名称 + yxdm = schoolMajorImport3.getYxdm();//院校代码 + zymc = schoolMajorImport3.getZymc();//专业名称 + zydm = schoolMajorImport3.getZydm();//专业代码 + zspc = schoolMajorImport3.getZspc();//招生批次 + jhs = schoolMajorImport3.getJhs();//计划数 + xf = schoolMajorImport3.getXf();//学费 + zybz = schoolMajorImport3.getZybz();//专业备注 + + zymc = zymc.replace("(","("); + zymc = zymc.replace(")",")"); + //先屏蔽体育 + //if (zymc.contains("体育") || zspc.contains("体育")) { + if (!zymc.contains("体育") || !zspc.contains("体育")) { + continue; + } + + school1 = schoolMap.get(yxdm); + //获取没找到的学校 + if (school1==null) { + notSchoolList.add(schoolMajorImport3); + continue; + } + + //判断批次 + if(true){ + if(zspc.contains("本科提前批")){ + batch="提前批"; + }else if (zspc.contains("本科A段")) { + batch="本科A段"; + }else if (zspc.contains("本科B段")) { + batch="本科B段"; + }else if (zspc.contains("本科")) { + batch="本科"; + }else if (zspc.contains("高职高专")) { + batch="高职高专"; + }else{ + notSchoolList.add(schoolMajorImport3); + continue; + } + } + + //文理分科 + if(true){ + if (zspc.contains("文科") && zspc.contains("理科")) { + wenli = true; + //文理同招 + }else if(zspc.contains("文科")){ + category="文科"; + }else if(zspc.contains("理科")){ + category="理科"; + }else{ + notSchoolList.add(schoolMajorImport3); + continue; + } + if (yxmc.contains("河南大学") && zydm.equals("01")) { + System.out.println("111"); + } + } + //获取专业信息表数据 + String majorName=zymc; + int start = zymc.indexOf("("); + int lasti = zymc.indexOf(")"); + if (start!=-1) { + majorName = majorName.substring(0,start); + } + major = null; + if (batch.equals("高职高专")) { + //专科 + major = majorZhuanMap.get(majorName); + }else{ + //本科 + major = majorMap.get(majorName); + } + if (major == null) { + notSchoolList.add(schoolMajorImport3); + continue; + } + + schoolMajor = new YxSchoolMajor(); + schoolMajor.setSchoolCode(school1.getSchoolCode());//院校代码 + schoolMajor.setMajorCode(major.getMajorCode());//专业代码 + schoolMajor.setMajorName(zymc);//专业名称 + schoolMajor.setTuition(xf.contains("待定")?new BigDecimal("0"):new BigDecimal(xf));//学费 + schoolMajor.setDetail(zybz);//专业备注 + schoolMajor.setCategory(category);//科类 + //schoolMajor.setRulesEnrollProbability() + schoolMajor.setBatch(batch); + schoolMajor.setEnrollmentCode(zydm);//专业代码 + schoolMajor.setMajorType(null); + if (StringUtils.isNotBlank(jhs)) { + schoolMajor.setPlanNum(Integer.valueOf(jhs)); + } + schoolMajorList.add(schoolMajor); + } + System.out.println("没找到的学校"); + System.out.println(notSchoolList.size()); + if (CollectionUtils.isEmpty(notSchoolList) && CollectionUtils.isNotEmpty(schoolMajorList)) { + yxSchoolMajorService.saveBatch(schoolMajorList); + } + } + } catch (FileNotFoundException fileNotFoundException) { + log.error("文件不存在," + file.getAbsolutePath()); + throw new RuntimeException(fileNotFoundException); + } catch (Exception e) { + System.out.println("错误index:"+i); + throw new RuntimeException(e); + } + /*if(true){ + } else{ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreSegmentController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreSegmentController.java new file mode 100644 index 0000000..fd092f0 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreSegmentController.java @@ -0,0 +1,256 @@ +package org.jeecg.modules.yx.controller; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.commons.collections.CollectionUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.AssertUtils; +import org.jeecg.modules.yx.dto.HistoryScoreSegmentDTO; +import org.jeecg.modules.yx.entity.YxScoreSegment; +import org.jeecg.modules.yx.service.IYxScoreSegmentService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + +/** + * @Description: 分数段位表 + * @Author: jeecg-boot + * @Date: 2024-02-16 + * @Version: V1.0 + */ +@Api(tags = "分数段位表") +@RestController +@RequestMapping("/yx/yxScoreSegment") +@Slf4j +public class YxScoreSegmentController extends JeecgController { + @Autowired + private IYxScoreSegmentService yxScoreSegmentService; + + + /** + * 分数段位表-根据专业分数查询 + */ + @ApiOperation(value = "分数段位表-根据专业分数查询") + @GetMapping(value = "/searchByScore") + public Result> searchByScore(YxScoreSegment yxScoreSegment, + HttpServletRequest req) { + AssertUtils.notNull(yxScoreSegment.getProvince(), "请选择省份"); + + List yearList = Arrays.asList("2024", "2023", "2022", "2021"); + BigDecimal userScore = yxScoreSegment.getScore();//用户输入的分数 + BigDecimal one = null; + BigDecimal two = null; + BigDecimal three = null; + BigDecimal bigDecimal1 = new BigDecimal("1"); + BigDecimal bigDecimal100 = new BigDecimal("100"); + BigDecimal bigDecimal5 = new BigDecimal("5"); + List historyScoreSegmentDTOList = new ArrayList<>(); + HistoryScoreSegmentDTO historyScoreSegmentDto = null; + for (String year : yearList) { + //当前年所有分数 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(YxScoreSegment::getYear, year); + lambdaQueryWrapper.eq(YxScoreSegment::getProvince, yxScoreSegment.getProvince()); + lambdaQueryWrapper.eq(YxScoreSegment::getProfessionalCategory, yxScoreSegment.getProfessionalCategory()); + lambdaQueryWrapper.orderByDesc(YxScoreSegment::getScore); + List list = yxScoreSegmentService.list(lambdaQueryWrapper); + if (CollectionUtils.isEmpty(list)) { + continue; + } + //获取最低分 + lambdaQueryWrapper.clear(); + lambdaQueryWrapper.eq(YxScoreSegment::getYear, year); + lambdaQueryWrapper.eq(YxScoreSegment::getProvince, yxScoreSegment.getProvince()); + lambdaQueryWrapper.eq(YxScoreSegment::getProfessionalCategory, yxScoreSegment.getProfessionalCategory()); + lambdaQueryWrapper.orderByAsc(YxScoreSegment::getScore); + lambdaQueryWrapper.last("limit 0,1"); + YxScoreSegment lowScoreSegment = yxScoreSegmentService.getOne(lambdaQueryWrapper); + historyScoreSegmentDto = new HistoryScoreSegmentDTO(); + historyScoreSegmentDto.setYear(year); + historyScoreSegmentDto.setType(1); + //循环分段信息 + int i = 0; + for (YxScoreSegment scoreSegment : list) { + //当前分数~当前分数+5 是否包含 输入的分数 + one = scoreSegment.getScore(); + two = scoreSegment.getScore().add(bigDecimal5); + // 如果分数 + // 例: one:285,two:290, userScore:286 + if (one.compareTo(userScore)<=0 && i==0) { + historyScoreSegmentDto.setBeginScore(one);//开始分数 + historyScoreSegmentDto.setRank(scoreSegment.getPersonNum());//排名 + // 算占比 + BigDecimal divide = new BigDecimal(scoreSegment.getPersonNum()).divide(new BigDecimal(lowScoreSegment.getPersonNum()), 4, RoundingMode.HALF_UP); + historyScoreSegmentDto.setRate(bigDecimal1.subtract(divide).multiply(bigDecimal100)); + break; + }else if (one.compareTo(userScore)<=0 || (one.compareTo(userScore)<=0 && two.compareTo(userScore)>=0)) { + historyScoreSegmentDto.setBeginScore(one);//开始分数 + historyScoreSegmentDto.setEndScore(two);//结束分数 + historyScoreSegmentDto.setRank(scoreSegment.getPersonNum());//排名 + // 算占比 + BigDecimal divide = new BigDecimal(scoreSegment.getPersonNum()).divide(new BigDecimal(lowScoreSegment.getPersonNum()), 4, RoundingMode.HALF_UP); + historyScoreSegmentDto.setRate(bigDecimal1.subtract(divide).multiply(bigDecimal100)); + break; + } + i++; + } + if (historyScoreSegmentDto.getRank()==null) { + //低于历年分 + historyScoreSegmentDto.setType(2); + historyScoreSegmentDto.setBeginScore(lowScoreSegment.getScore()); + historyScoreSegmentDto.setRank(lowScoreSegment.getPersonNum()); + } + historyScoreSegmentDTOList.add(historyScoreSegmentDto); + } + + + //计算百分占比 + return Result.OK(historyScoreSegmentDTOList); + } + + + /** + * 分页列表查询 + * + * @param yxScoreSegment + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "分数段位表-分页列表查询") + @ApiOperation(value = "分数段位表-分页列表查询", notes = "分数段位表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(YxScoreSegment yxScoreSegment, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(yxScoreSegment, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = yxScoreSegmentService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param yxScoreSegment + * @return + */ + @AutoLog(value = "分数段位表-添加") + @ApiOperation(value = "分数段位表-添加", notes = "分数段位表-添加") + @RequiresPermissions("yx:yx_score_segment:add") + @PostMapping(value = "/add") + public Result add(@RequestBody YxScoreSegment yxScoreSegment) { + yxScoreSegmentService.save(yxScoreSegment); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param yxScoreSegment + * @return + */ + @AutoLog(value = "分数段位表-编辑") + @ApiOperation(value = "分数段位表-编辑", notes = "分数段位表-编辑") + @RequiresPermissions("yx:yx_score_segment:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody YxScoreSegment yxScoreSegment) { + yxScoreSegmentService.updateById(yxScoreSegment); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "分数段位表-通过id删除") + @ApiOperation(value = "分数段位表-通过id删除", notes = "分数段位表-通过id删除") + @RequiresPermissions("yx:yx_score_segment:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + yxScoreSegmentService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "分数段位表-批量删除") + @ApiOperation(value = "分数段位表-批量删除", notes = "分数段位表-批量删除") + @RequiresPermissions("yx:yx_score_segment:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.yxScoreSegmentService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "分数段位表-通过id查询") + @ApiOperation(value = "分数段位表-通过id查询", notes = "分数段位表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + YxScoreSegment yxScoreSegment = yxScoreSegmentService.getById(id); + if (yxScoreSegment == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(yxScoreSegment); + } + + /** + * 导出excel + * + * @param request + * @param yxScoreSegment + */ + @RequiresPermissions("yx:yx_score_segment:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, YxScoreSegment yxScoreSegment) { + return super.exportXls(request, yxScoreSegment, YxScoreSegment.class, "分数段位表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("yx:yx_score_segment:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, YxScoreSegment.class); + } + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/HistoryScoreSegmentDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/HistoryScoreSegmentDTO.java new file mode 100644 index 0000000..a562c57 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/HistoryScoreSegmentDTO.java @@ -0,0 +1,31 @@ +package org.jeecg.modules.yx.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description + * @Author ZhouWenTao + * @Date 2024/2/16 20:08 + */ +@Data +@ApiModel(value = "检索历年统考排名对象") +public class HistoryScoreSegmentDTO implements Serializable { + @ApiModelProperty(value = "年份") + private String year; + @ApiModelProperty(value = "开始分数") + private BigDecimal beginScore; + @ApiModelProperty(value = "结束分数") + private BigDecimal endScore; + @ApiModelProperty(value = "超越占比") + private BigDecimal rate; + + @ApiModelProperty(value = "排名") + private Integer rank; + + private Integer type; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/LiNianShuJuDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/LiNianShuJuDTO.java index 1136b68..738be83 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/LiNianShuJuDTO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/LiNianShuJuDTO.java @@ -24,6 +24,9 @@ public class LiNianShuJuDTO implements Serializable { @Excel(name = "院校", width = 15) @ApiModelProperty(value = "院校") private java.lang.String yuanxiao; + @Excel(name = "院校代码", width = 15) + @ApiModelProperty(value = "院校代码") + private java.lang.String yuanxiaoCode; @Excel(name = "科类", width = 15) @ApiModelProperty(value = "科类") private java.lang.String kelei; @@ -33,6 +36,9 @@ public class LiNianShuJuDTO implements Serializable { @Excel(name = "专业", width = 15) @ApiModelProperty(value = "专业") private java.lang.String zhuanye; + @Excel(name = "专业代码", width = 15) + @ApiModelProperty(value = "专业代码") + private java.lang.String zhuanyeCode; @Excel(name = "排序方法", width = 15) @ApiModelProperty(value = "排序方法") private java.lang.String sortType; @@ -73,4 +79,7 @@ public class LiNianShuJuDTO implements Serializable { @ApiModelProperty(value = "一志愿最低排序成绩") private java.lang.String yizhiyuanzuidipaixuchengji; + @Excel(name = "专业备注", width = 15) + @ApiModelProperty(value = "专业备注") + private String detail; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/MajorImport.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/MajorImport.java new file mode 100644 index 0000000..9b742ff --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/MajorImport.java @@ -0,0 +1,47 @@ +package org.jeecg.modules.yx.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; + +/** + * @Description + * @Author ZhouWenTao + * @Date 2024/2/10 17:27 + */ +@Data +public class MajorImport implements Serializable { + /**专业名称*/ + @ApiModelProperty(value = "专业名称") + @Excel(name = "专业名称") + private java.lang.String majorName; + /**专业代码*/ + @ApiModelProperty(value = "专业代码") + @Excel(name = "专业代码") + private java.lang.String majorCode; + @Excel(name = "选考(学科)建议") + private String subjectAdvice; + @Excel(name = "第一印象") + private String firstImpression; + @Excel(name = "性别比例") + private String sexRatio; + @Excel(name = "就业率") + private String employmentRate; + @Excel(name = "是什么") + private String ssm; + @Excel(name = "学什么") + private String xsm; + @Excel(name = "干什么") + private String gsm; + @Excel(name = "就业去向") + private String employmentDestination; + @Excel(name = "就业地区分布") + private String regionDistribution; + @Excel(name = "就业行业分布") + private String industryDistribution; + @Excel(name = "就业岗位分布") + private String jobDistribution; + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxMajor.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxMajor.java index f1f57da..3e3503e 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxMajor.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxMajor.java @@ -107,22 +107,39 @@ public class YxMajor implements Serializable { /**是否是职教*/ @ApiModelProperty(value = "是否是职教(1-是,0-否)") private Integer isVte; - public static void main(String[] args) { - String ss="军事\n" + - "综合\n" + - "师范\n" + - "理工\n" + - "其他\n" + - "农林\n" + - "医药\n" + - "语言\n" + - "财经\n" + - "政法\n" + - "体育\n" + - "艺术\n" + - "民族"; - for (String s : ss.split("\n")) { - System.out.println("{name:\""+s+"\",code:\""+s+"\"},"); - } - } + + + /**选考(学科)建议*/ + @ApiModelProperty(value = "选考(学科)建议") + private String subjectAdvice; + /**第一印象*/ + @ApiModelProperty(value = "第一印象") + private String firstImpression; + /**性别比例*/ + @ApiModelProperty(value = "性别比例") + private String sexRatio; + /**就业率*/ + @ApiModelProperty(value = "就业率") + private String employmentRate; + /**是什么*/ + @ApiModelProperty(value = "是什么") + private String ssm; + /**学什么*/ + @ApiModelProperty(value = "学什么") + private String xsm; + /**干什么*/ + @ApiModelProperty(value = "干什么") + private String gsm; + /**就业去向*/ + @ApiModelProperty(value = "就业去向") + private String employmentDestination; + /**就业地区分布*/ + @ApiModelProperty(value = "就业地区分布") + private String regionDistribution; + /**就业行业分布*/ + @ApiModelProperty(value = "就业行业分布") + private String industryDistribution; + /**就业岗位分布*/ + @ApiModelProperty(value = "就业岗位分布") + private String jobDistribution; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxSchoolMajor.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxSchoolMajor.java index 1523795..7e508ce 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxSchoolMajor.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxSchoolMajor.java @@ -106,4 +106,9 @@ public class YxSchoolMajor implements Serializable { */ @ApiModelProperty(value = "专业类型") private String majorType; + /** + * 计划招生人数 + */ + @ApiModelProperty(value = "计划招生人数") + private Integer planNum; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxScoreSegment.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxScoreSegment.java new file mode 100644 index 0000000..5df0443 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxScoreSegment.java @@ -0,0 +1,78 @@ +package org.jeecg.modules.yx.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 分数段位表 + * @Author: jeecg-boot + * @Date: 2024-02-16 + * @Version: V1.0 + */ +@Data +@TableName("yx_score_segment") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="yx_score_segment对象", description="分数段位表") +public class YxScoreSegment implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**分数*/ + @Excel(name = "分数", width = 15) + @ApiModelProperty(value = "分数") + private java.math.BigDecimal score; + /**省份*/ + @Excel(name = "省份", width = 15) + @ApiModelProperty(value = "省份") + private java.lang.String province; + /**专业类别*/ + @Excel(name = "专业类别", width = 15) + @ApiModelProperty(value = "专业类别") + private java.lang.String professionalCategory; + /**年份*/ + @Excel(name = "年份", width = 15) + @ApiModelProperty(value = "年份") + private java.lang.String year; + /**累计人数*/ + @Excel(name = "累计人数", width = 15) + @ApiModelProperty(value = "累计人数") + private java.lang.Integer personNum; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxScoreSegmentMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxScoreSegmentMapper.java new file mode 100644 index 0000000..6d11633 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxScoreSegmentMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.yx.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.yx.entity.YxScoreSegment; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 分数段位表 + * @Author: jeecg-boot + * @Date: 2024-02-16 + * @Version: V1.0 + */ +public interface YxScoreSegmentMapper extends BaseMapper { + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMajorMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMajorMapper.xml index cd379f8..c6b1b60 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMajorMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMajorMapper.xml @@ -11,12 +11,12 @@ s.school_nature as propertyName, s.institution_type as institutionType, s.school_icon as schoolIcon, - sm.major_name, - sm.detail as majorDetail, m.major_desc as majorRemarks, m.semester as studyYear, m.first_level_discipline as firstLevelDiscipline, + sm.major_name, + sm.detail as majorDetail, sm.school_code, sm.batch as batch, sm.enrollment_code as enrollmentCode, @@ -29,7 +29,8 @@ sm.batch as batch, sm.enrollment_code as enrollmentCode, sm.major_code, - sm.tuition as studyCost + sm.tuition as studyCost, + sm.plan_num as planNum FROM yx_school_major sm LEFT JOIN yx_major m ON m.major_code = sm.major_code LEFT JOIN yx_school s ON s.school_code = sm.school_code @@ -101,6 +102,10 @@ AND s.institution_type= #{queryvo.institutionType} + /*办学性质*/ + + AND s.school_nature= #{queryvo.schoolNature} +