package com.sztzjy.linkCommerce.controller.stu; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONObject; import com.sztzjy.linkCommerce.annotation.AnonymousAccess; import com.sztzjy.linkCommerce.config.Constant; import com.sztzjy.linkCommerce.entity.*; import com.sztzjy.linkCommerce.entity.dto.MonthlyCakeIndex; import com.sztzjy.linkCommerce.entity.dto.StuIndustryAnalysisDTO; import com.sztzjy.linkCommerce.entity.dto.YearCakeIndexDto; import com.sztzjy.linkCommerce.mapper.HyxqfxDataMapper; import com.sztzjy.linkCommerce.mapper.HyxqfxStuAnswerMapper; import com.sztzjy.linkCommerce.mapper.StuGradeMapper; import com.sztzjy.linkCommerce.service.IndustryDemandAnalysisService; import com.sztzjy.linkCommerce.service.ScoreService; import com.sztzjy.linkCommerce.util.ResultEntity; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.*; /** * @author 17803 * @date 2025-04-24 13:30 */ @Api(tags = "行业需求分析") @RestController @RequestMapping("api/industryAnalysis") public class IndustryDemandAnalysisController { @Autowired private IndustryDemandAnalysisService service; @Autowired private HyxqfxDataMapper hyxqfxDataMapper; @Autowired private HyxqfxStuAnswerMapper hyxqfxStuAnswerMapper; @Autowired private StuGradeMapper stuGradeMapper; @Autowired private ScoreService scoreService; //数据查询 @ApiOperation("行业需求分析提交") @PostMapping("/analysisSubmit") @AnonymousAccess @Transactional(rollbackFor = Exception.class) public ResultEntity uploadExcel(@RequestBody StuIndustryAnalysisDTO analysisDTO) { //读取文件内容 批量导入excel中 以文件名区分 Map yearMap = new HashMap<>(); yearMap.put("2018年",0.28); yearMap.put("2019年",0.25); yearMap.put("2020年",0.24); yearMap.put("2021年",0.22); yearMap.put("2022年",0.21); yearMap.put("2023年",0.22); yearMap.put("2024年",0.20); Map monthMap = new HashMap<>(); monthMap.put("2024年4月",0.21); monthMap.put("2024年5月",0.20); monthMap.put("2024年6月",0.20); monthMap.put("2024年7月",0.22); monthMap.put("2024年8月",0.33); monthMap.put("2024年9月",0.30); monthMap.put("2024年10月",0.33); monthMap.put("2024年11月",0.23); monthMap.put("2024年12月",0.22); monthMap.put("2025年1月",0.22); monthMap.put("2025年2月",0.15); monthMap.put("2025年3月",0.27); int count = 0; List yearCakeIndexDtoList = analysisDTO.getYearCakeIndexDtoList(); for (YearCakeIndexDto yearCakeIndexDto : yearCakeIndexDtoList) { Double v = yearMap.get(yearCakeIndexDto.getYear()); if (yearCakeIndexDto.getYearAnswer() == null || v != yearCakeIndexDto.getYearAnswer()) { count ++; } } //分别将两个字段转为json格式 List monthlyCakeIndexList = analysisDTO.getMonthlyCakeIndexList(); for (MonthlyCakeIndex yearCakeIndexDto : monthlyCakeIndexList) { Double v = monthMap.get(yearCakeIndexDto.getYear()); if (yearCakeIndexDto.getMonthAnswer() == null || v != yearCakeIndexDto.getMonthAnswer()) { count ++; } } BigDecimal subtract = BigDecimal.ZERO; //查询数据 HyxqfxStuAnswerExample example = new HyxqfxStuAnswerExample(); example.createCriteria().andUserIdEqualTo(analysisDTO.getUserId()); List hyxqfxStuAnswerList = hyxqfxStuAnswerMapper.selectByExample(example); if (!CollectionUtils.isEmpty(hyxqfxStuAnswerList)) { HyxqfxStuAnswer hyxqfxStuAnswer = hyxqfxStuAnswerList.get(0); hyxqfxStuAnswer.setErrorNumber(count); String jsonString = JSONObject.toJSONString(analysisDTO); hyxqfxStuAnswer.setAnswer(jsonString); hyxqfxStuAnswerMapper.updateByPrimaryKeyWithBLOBs(hyxqfxStuAnswer); }else { //学生答案 String jsonString = JSONObject.toJSONString(analysisDTO); HyxqfxStuAnswer hyxqfxStuAnswer = new HyxqfxStuAnswer(); hyxqfxStuAnswer.setId(IdUtil.randomUUID()); hyxqfxStuAnswer.setUserId(analysisDTO.getUserId()); hyxqfxStuAnswer.setAnswer(jsonString); hyxqfxStuAnswer.setErrorNumber(count); hyxqfxStuAnswerMapper.insertSelective(hyxqfxStuAnswer); } subtract = BigDecimal.valueOf(100).subtract(Convert.toBigDecimal(count)); Boolean aBoolean = scoreService.insertScore(analysisDTO.getUserId(), Constant.PRO_SCXQWJ,Constant.MODULE_HYXQFX,subtract,analysisDTO.getContext()); // scoreService.insertScore(userId, Constant.PRO_GYQDGL, Constant.MODULE_CGXQYC, BigDecimal.valueOf(100 - errorCount), null); if(aBoolean){ return new ResultEntity<>(HttpStatus.OK, "提交成功"); }else { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "提交失败"); } } @ApiOperation("行业需求分析根据用户ID查询") @GetMapping("/selectByUserId") @AnonymousAccess public ResultEntity selectByUserId(@ApiParam("用户ID") String userId) { //读取文件内容 批量导入excel中 以文件名区分\ HyxqfxStuAnswerExample hyxqfxStuAnswer = new HyxqfxStuAnswerExample(); hyxqfxStuAnswer.createCriteria().andUserIdEqualTo(userId); List hyxqfxStuAnswersList = hyxqfxStuAnswerMapper.selectByExampleWithBLOBs(hyxqfxStuAnswer); if (CollectionUtils.isEmpty(hyxqfxStuAnswersList)) { return new ResultEntity<>(HttpStatus.OK); }else { JSONObject jsonObject = JSONObject.parseObject(hyxqfxStuAnswersList.get(0).getAnswer()); return new ResultEntity<>(HttpStatus.OK,jsonObject); } } @ApiOperation("重新实训") @GetMapping("/restartExperment") @AnonymousAccess public ResultEntity restartExperment(@ApiParam("用户ID") String userId) { //查询学生答题数据,删除成绩 HyxqfxStuAnswerExample example = new HyxqfxStuAnswerExample(); example.createCriteria().andUserIdEqualTo(userId); hyxqfxStuAnswerMapper.deleteByExample(example); return null; } }