diff --git a/src/main/java/com/sztzjy/linkCommerce/config/Constant.java b/src/main/java/com/sztzjy/linkCommerce/config/Constant.java index 8241226..4863070 100644 --- a/src/main/java/com/sztzjy/linkCommerce/config/Constant.java +++ b/src/main/java/com/sztzjy/linkCommerce/config/Constant.java @@ -25,6 +25,25 @@ public class Constant { public static final String MODULE_CPWTZD="产品问题诊断"; public static final String MODULE_PNJGYH="品类结构优化"; + public static final String PRO_SCXQWJ="市场需求挖掘"; + public static final String MODULE_HYXQFX="行业需求分析"; + public static final String MODULE_JZHJFX="竞争环境分析"; + public static final String MODULE_XFRQFX="消费人群分析"; + public static final String MODULE_YHSJFX="用户数据分析"; + + public static final String PRO_CPGH="产品规划"; + public static final String MODULE_SJHCP="数据化产品"; + public static final String MODULE_CPDJ="产品定金"; + public static final String MODULE_CPCYHDW="产品差异化定位"; + public static final String MODULE_CPJGGH="产品结构规划"; + + public static final String PRO_CPTFCS="产品投放测试"; + public static final String MODULE_FBQDPG="发布渠道评估"; + public static final String MODULE_CPTGCS="产品推广测试"; + public static final String MODULE_QDBXFX="渠道表现分析"; + public static final String MODULE_CPYXDW="产品营销定位"; + + public static final String YONGHUSHUXINGBIAO= "客户细分数据表"; public static final String YONGHUDENGLUHUOYUEBIAO= "销售预测数据表"; diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/IndustryDemandAnalysisController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/IndustryDemandAnalysisController.java index a47ac8c..aa624c7 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/IndustryDemandAnalysisController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/IndustryDemandAnalysisController.java @@ -2,34 +2,28 @@ 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.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.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.service.ScoreService; 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.*; @@ -55,6 +49,9 @@ public class IndustryDemandAnalysisController { @Autowired private StuGradeMapper stuGradeMapper; + @Autowired + private ScoreService scoreService; + @@ -120,7 +117,7 @@ public class IndustryDemandAnalysisController { } } - + //学生答案 String jsonString = JSONObject.toJSONString(analysisDTO); HyxqfxStuAnswer hyxqfxStuAnswer = new HyxqfxStuAnswer(); hyxqfxStuAnswer.setId(IdUtil.randomUUID()); @@ -130,54 +127,19 @@ public class IndustryDemandAnalysisController { hyxqfxStuAnswerMapper.insertSelective(hyxqfxStuAnswer); + BigDecimal subtract = BigDecimal.valueOf(100).subtract(Convert.toBigDecimal(count)); + StuGrade stuGrade = new StuGrade(Constant.PRO_SCXQWJ, + Constant.MODULE_HYXQFX, + Convert.toBigDecimal(subtract), + analysisDTO.getSchoolId(), + analysisDTO.getUserId(), + analysisDTO.getName(), + analysisDTO.getClassId(), + analysisDTO.getClassName(), + analysisDTO.getContext()); - //插入主观题 - 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 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); - - } + scoreService.submitScoreCalculation(stuGrade); return new ResultEntity<>(HttpStatus.OK, "上传成功"); diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/StuGrade.java b/src/main/java/com/sztzjy/linkCommerce/entity/StuGrade.java index b7d4eb2..e52d440 100644 --- a/src/main/java/com/sztzjy/linkCommerce/entity/StuGrade.java +++ b/src/main/java/com/sztzjy/linkCommerce/entity/StuGrade.java @@ -3,13 +3,17 @@ package com.sztzjy.linkCommerce.entity; import java.math.BigDecimal; import java.util.Date; +import cn.hutool.core.util.IdUtil; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + /** * 学生成绩表 * * @author whb * stu_grade */ +@Data public class StuGrade { @ApiModelProperty(notes = "成绩ID(主键,建议格式:GRD_用户ID_时间戳,例:GRD_U1001_202311051230)") private String id; @@ -44,6 +48,21 @@ public class StuGrade { @ApiModelProperty(notes = "主观题答卷内容(建议存储为JSON格式)") private String content; + + public StuGrade( String project, String module, BigDecimal score, String schoolId, String userId, String name, String schoolClassId, String className, String content) { + this.id = IdUtil.randomUUID(); + this.project = project; + this.module = module; + this.createTime = new Date(); + this.score = score; + this.schoolId = schoolId; + this.userId = userId; + this.name = name; + this.schoolClassId = schoolClassId; + this.className = className; + this.content = content; + } + public String getId() { return id; } diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/dto/StuIndustryAnalysisDTO.java b/src/main/java/com/sztzjy/linkCommerce/entity/dto/StuIndustryAnalysisDTO.java index bfd724a..a6c40c4 100644 --- a/src/main/java/com/sztzjy/linkCommerce/entity/dto/StuIndustryAnalysisDTO.java +++ b/src/main/java/com/sztzjy/linkCommerce/entity/dto/StuIndustryAnalysisDTO.java @@ -37,6 +37,7 @@ import java.util.List; private String name; + @ApiModelProperty(notes = "学校ID") private String schoolId; diff --git a/src/main/java/com/sztzjy/linkCommerce/service/ScoreService.java b/src/main/java/com/sztzjy/linkCommerce/service/ScoreService.java new file mode 100644 index 0000000..62e620d --- /dev/null +++ b/src/main/java/com/sztzjy/linkCommerce/service/ScoreService.java @@ -0,0 +1,12 @@ +package com.sztzjy.linkCommerce.service; + +import com.sztzjy.linkCommerce.entity.StuGrade; + +/** + * @author 17803 + * @date 2025-04-25 09:31 + */ + +public interface ScoreService { + void submitScoreCalculation(StuGrade stuGrade); +} diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/ScoreServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/ScoreServiceImpl.java new file mode 100644 index 0000000..0b6ad2d --- /dev/null +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/ScoreServiceImpl.java @@ -0,0 +1,70 @@ +package com.sztzjy.linkCommerce.service.impl; + +import com.sztzjy.linkCommerce.entity.StuGrade; +import com.sztzjy.linkCommerce.entity.StuGradeExample; +import com.sztzjy.linkCommerce.mapper.StuGradeMapper; +import com.sztzjy.linkCommerce.service.ScoreService; +import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author 17803 + * @date 2025-04-25 09:31 + */ +@Service +public class ScoreServiceImpl implements ScoreService { + + @Autowired + private StuGradeMapper stuGradeMapper; + + + @Override + public void submitScoreCalculation(StuGrade stuGrade) { + + StuGradeExample stuGradeExample = new StuGradeExample(); + stuGradeExample.createCriteria() + .andModuleEqualTo(stuGrade.getModule()) + .andProjectEqualTo(stuGrade.getProject()) + .andUserIdEqualTo(stuGrade.getUserId()) + .andSchoolIdEqualTo(stuGrade.getSchoolId()) + .andSchoolClassIdEqualTo(stuGrade.getSchoolClassId()); + List stuGradeList = stuGradeMapper.selectByExampleWithBLOBs(stuGradeExample); + + //首次插入 + if (CollectionUtils.isEmpty(stuGradeList)) { + + //传过来的得分 + + + + stuGrade = scoreCalculation(stuGrade); + + + stuGradeMapper.insertSelective(stuGrade); + + + } + + + } + + public StuGrade scoreCalculation(StuGrade stuGrade) { + + BigDecimal info = stuGrade.getScore(); + if (info.compareTo(new BigDecimal(0)) < 0) { + stuGrade.setScore(BigDecimal.ZERO); + } + + if (info.compareTo(new BigDecimal(100)) > 0) { + + stuGrade.setScore(BigDecimal.valueOf(100)); + } + return stuGrade; + } + +}