|
|
|
|
package com.sztzjy.linkCommerce.controller.stu;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.nimbusds.jose.shaded.gson.Gson;
|
|
|
|
|
import com.sztzjy.linkCommerce.annotation.AnonymousAccess;
|
|
|
|
|
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.HyxqfxAnswerMapper;
|
|
|
|
|
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.util.ResultEntity;
|
|
|
|
|
import com.sztzjy.linkCommerce.util.excel.DataListener;
|
|
|
|
|
import com.sztzjy.linkCommerce.util.excel.DemoDataListener;
|
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
|
|
import org.checkerframework.checker.units.qual.A;
|
|
|
|
|
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 org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//数据查询
|
|
|
|
|
@ApiOperation("行业需求分析提交")
|
|
|
|
|
@PostMapping("/analysisSubmit")
|
|
|
|
|
@AnonymousAccess
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public ResultEntity uploadExcel(@RequestBody StuIndustryAnalysisDTO analysisDTO) {
|
|
|
|
|
|
|
|
|
|
//查询数据
|
|
|
|
|
HyxqfxStuAnswerExample example = new HyxqfxStuAnswerExample();
|
|
|
|
|
example.createCriteria().andUserIdEqualTo(analysisDTO.getUserId());
|
|
|
|
|
|
|
|
|
|
List<HyxqfxStuAnswer> hyxqfxStuAnswerList = hyxqfxStuAnswerMapper.selectByExample(example);
|
|
|
|
|
if (!CollectionUtils.isEmpty(hyxqfxStuAnswerList)) {
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//读取文件内容 批量导入excel中 以文件名区分
|
|
|
|
|
Map<String, Double> 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<String, Double> 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<YearCakeIndexDto> yearCakeIndexDtoList = analysisDTO.getYearCakeIndexDtoList();
|
|
|
|
|
|
|
|
|
|
for (YearCakeIndexDto yearCakeIndexDto : yearCakeIndexDtoList) {
|
|
|
|
|
Double v = yearMap.get(yearCakeIndexDto.getYear());
|
|
|
|
|
if (yearCakeIndexDto.getYearAnswer() == null || v != yearCakeIndexDto.getYearAnswer()) {
|
|
|
|
|
count ++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//分别将两个字段转为json格式
|
|
|
|
|
List<MonthlyCakeIndex> monthlyCakeIndexList = analysisDTO.getMonthlyCakeIndexList();
|
|
|
|
|
|
|
|
|
|
for (MonthlyCakeIndex yearCakeIndexDto : monthlyCakeIndexList) {
|
|
|
|
|
Double v = monthMap.get(yearCakeIndexDto.getYear());
|
|
|
|
|
if (yearCakeIndexDto.getMonthAnswer() == null || v != yearCakeIndexDto.getMonthAnswer()) {
|
|
|
|
|
count ++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//插入主观题
|
|
|
|
|
SubjectiveQuestions subjectiveQuestions = new SubjectiveQuestions();
|
|
|
|
|
subjectiveQuestions.setId(IdUtil.randomUUID());
|
|
|
|
|
subjectiveQuestions.setUserId(analysisDTO.getUserId());
|
|
|
|
|
subjectiveQuestions.setModule("行业需求分析");
|
|
|
|
|
subjectiveQuestions.setProject("市场需求挖掘");
|
|
|
|
|
subjectiveQuestions.setCreateTime(new Date());
|
|
|
|
|
subjectiveQuestions.setSubjectiveContent(analysisDTO.getContext());
|
|
|
|
|
subjectiveQuestions.setSubjectiveContent(analysisDTO.getContext());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查询是否已经有成绩
|
|
|
|
|
StuGradeExample stuGradeExample = new StuGradeExample();
|
|
|
|
|
stuGradeExample.createCriteria().andUserIdEqualTo(analysisDTO.getUserId()).andProjectEqualTo("市场需求挖掘").andModuleEqualTo("行业需求分析");
|
|
|
|
|
List<StuGrade> stuGradeList = stuGradeMapper.selectByExample(stuGradeExample);
|
|
|
|
|
if (!CollectionUtils.isEmpty(stuGradeList)) {
|
|
|
|
|
StuGrade stuGrade = stuGradeList.get(0);
|
|
|
|
|
BigDecimal score = stuGrade.getScore();
|
|
|
|
|
BigDecimal error = Convert.toBigDecimal(count);
|
|
|
|
|
score = score.subtract(error);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (score.compareTo(BigDecimal.valueOf(100)) > 0)
|
|
|
|
|
{
|
|
|
|
|
stuGrade.setScore(BigDecimal.valueOf(100));
|
|
|
|
|
}else {
|
|
|
|
|
stuGrade.setScore(score);
|
|
|
|
|
}
|
|
|
|
|
stuGradeMapper.updateByPrimaryKeySelective(stuGrade);
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
//将分数写入成绩表
|
|
|
|
|
StuGrade stuGrade = new StuGrade();
|
|
|
|
|
stuGrade.setId(IdUtil.randomUUID());
|
|
|
|
|
stuGrade.setUserId(analysisDTO.getUserId());
|
|
|
|
|
stuGrade.setCreateTime(new Date());
|
|
|
|
|
stuGrade.setModule("行业需求分析");
|
|
|
|
|
stuGrade.setProject("市场需求挖掘");
|
|
|
|
|
stuGrade.setClassName(analysisDTO.getClassName());
|
|
|
|
|
stuGrade.setContent(analysisDTO.getContext());
|
|
|
|
|
stuGrade.setName(analysisDTO.getName());
|
|
|
|
|
stuGrade.setSchoolId(analysisDTO.getSchoolId());
|
|
|
|
|
stuGrade.setScore(BigDecimal.valueOf(100-count));
|
|
|
|
|
stuGradeMapper.insertSelective(stuGrade);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return new ResultEntity<>(HttpStatus.OK, "上传成功");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiOperation("行业需求分析根据用户ID查询")
|
|
|
|
|
@GetMapping("/selectByUserId")
|
|
|
|
|
@AnonymousAccess
|
|
|
|
|
public ResultEntity selectByUserId(@ApiParam("用户ID") String userId) {
|
|
|
|
|
//读取文件内容 批量导入excel中 以文件名区分\
|
|
|
|
|
|
|
|
|
|
HyxqfxStuAnswerExample hyxqfxStuAnswer = new HyxqfxStuAnswerExample();
|
|
|
|
|
hyxqfxStuAnswer.createCriteria().andUserIdEqualTo(userId);
|
|
|
|
|
|
|
|
|
|
List<HyxqfxStuAnswer> 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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void jiaoYanCodeSize(String code){
|
|
|
|
|
String[] strings = code.split(",");
|
|
|
|
|
if (strings.length>=20)
|
|
|
|
|
{
|
|
|
|
|
//计分规则
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|