From 8f2dafbc5a852facdc9e790a2ae37c4dec1a0d40 Mon Sep 17 00:00:00 2001 From: "@t2652009480" <2652009480@qq.com> Date: Thu, 22 Aug 2024 14:37:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E5=AD=97=E8=90=A5=E9=94=80=E5=AE=9E?= =?UTF-8?q?=E8=AE=AD=E7=AE=97=E6=B3=95=E7=AC=AC=E5=9B=9B=E8=BD=AE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/stu/StuPythonController.java | 14 +++- .../entity/dto/SentimentAnalyDTO.java | 13 +++ .../marketing/mapper/StuTableNameMapper.java | 2 + .../mapper/StuUploadExcelUserMapper.java | 1 + .../StuDigitalMarketingModelServiceImpl.java | 82 ++++++++++++++++++- .../sztzjy/marketing/util/StringUtils.java | 24 ++++++ .../util/algorithm/KMeansResult.java | 8 +- .../resources/mappers/StuTableNameMapper.xml | 7 ++ .../mappers/StuUploadExcelUserMapper.xml | 3 + 9 files changed, 145 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/sztzjy/marketing/entity/dto/SentimentAnalyDTO.java create mode 100644 src/main/java/com/sztzjy/marketing/util/StringUtils.java diff --git a/src/main/java/com/sztzjy/marketing/controller/stu/StuPythonController.java b/src/main/java/com/sztzjy/marketing/controller/stu/StuPythonController.java index 2883870..ce9079c 100644 --- a/src/main/java/com/sztzjy/marketing/controller/stu/StuPythonController.java +++ b/src/main/java/com/sztzjy/marketing/controller/stu/StuPythonController.java @@ -3,6 +3,7 @@ package com.sztzjy.marketing.controller.stu; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONObject; import com.sztzjy.marketing.annotation.AnonymousAccess; +import com.sztzjy.marketing.entity.dto.SentimentAnalyDTO; import com.sztzjy.marketing.util.ResultEntity; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -105,8 +106,19 @@ public class StuPythonController { // 等待进程执行完成 int exitCode = process.waitFor(); if (exitCode == 0) { + JSONObject jsonObject = new JSONObject(Boolean.parseBoolean(output.toString())); + + // 访问JSON对象的属性 + String pos = jsonObject.getString("pos"); + String neg = jsonObject.getString("neg"); + + SentimentAnalyDTO sentimentAnalyDTO=new SentimentAnalyDTO(); + sentimentAnalyDTO.setPos(pos); + sentimentAnalyDTO.setNeg(neg); + + System.out.println("Python code output:\n" + output.toString()); - return new ResultEntity(HttpStatus.OK, output.toString()); + return new ResultEntity(HttpStatus.OK, sentimentAnalyDTO); } else { System.err.println("Error executing Python code:\n" + errors.toString()); return new ResultEntity(HttpStatus.INTERNAL_SERVER_ERROR, errors.toString()); diff --git a/src/main/java/com/sztzjy/marketing/entity/dto/SentimentAnalyDTO.java b/src/main/java/com/sztzjy/marketing/entity/dto/SentimentAnalyDTO.java new file mode 100644 index 0000000..4fe48a5 --- /dev/null +++ b/src/main/java/com/sztzjy/marketing/entity/dto/SentimentAnalyDTO.java @@ -0,0 +1,13 @@ +package com.sztzjy.marketing.entity.dto; + +import lombok.Data; + +/** + * @author tz + * @date 2024/8/22 10:32 + */ +@Data +public class SentimentAnalyDTO { + private String pos; + private String neg; +} diff --git a/src/main/java/com/sztzjy/marketing/mapper/StuTableNameMapper.java b/src/main/java/com/sztzjy/marketing/mapper/StuTableNameMapper.java index 3a82a34..aa5a3cd 100644 --- a/src/main/java/com/sztzjy/marketing/mapper/StuTableNameMapper.java +++ b/src/main/java/com/sztzjy/marketing/mapper/StuTableNameMapper.java @@ -34,4 +34,6 @@ public interface StuTableNameMapper { List getTableName(String userId); List> selectByFields(@Param("fieldList")List fieldList, String table); + + List> selectBuildTable(List fieldList, String table, String userId, String tableName); } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/marketing/mapper/StuUploadExcelUserMapper.java b/src/main/java/com/sztzjy/marketing/mapper/StuUploadExcelUserMapper.java index f39796d..ba940b7 100644 --- a/src/main/java/com/sztzjy/marketing/mapper/StuUploadExcelUserMapper.java +++ b/src/main/java/com/sztzjy/marketing/mapper/StuUploadExcelUserMapper.java @@ -34,4 +34,5 @@ public interface StuUploadExcelUserMapper { List selectDistModuleName(String userId); + List selectByString(String userId, String tableName); } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/marketing/service/impl/StuDigitalMarketingModelServiceImpl.java b/src/main/java/com/sztzjy/marketing/service/impl/StuDigitalMarketingModelServiceImpl.java index 65d39e2..aaecd0c 100644 --- a/src/main/java/com/sztzjy/marketing/service/impl/StuDigitalMarketingModelServiceImpl.java +++ b/src/main/java/com/sztzjy/marketing/service/impl/StuDigitalMarketingModelServiceImpl.java @@ -1,6 +1,7 @@ package com.sztzjy.marketing.service.impl; +import com.alibaba.fastjson.JSON; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.hankcs.hanlp.HanLP; @@ -30,6 +31,7 @@ import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; +import static com.sztzjy.marketing.util.StringUtils.convertCamelCaseToUnderscore; import static com.sztzjy.marketing.util.algorithm.BaiDuZhiNengYun.getAccessToken; /** @@ -45,6 +47,9 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM @Resource StuTableNameMapper stuTableNameMapper; + @Resource + StuUploadExcelUserMapper uploadExcelUserMapper; + @Resource StuSelectIndicatorsMapper indicatorsMapper; @Resource @@ -346,6 +351,31 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM list.add("id"); list.add("user_behavior_type"); } + }else { + //查询导入的表数据 + + + List stringList=uploadExcelUserMapper.selectByString(userId,tableName); + + + for (String s : stringList) { + + List rightList = JSON.parseArray(s, String.class); + + List strings=new ArrayList<>(); + for (int i = 0; i < rightList.size(); i++) { //转为驼峰命名 + String string = convertCamelCaseToUnderscore(rightList.get(i)); + strings.add(string); + } + if(!list.isEmpty()){ + if(list.size() fieldList = analyzeDataDTO.getFieldList(); + String userId = analyzeDataDTO.getUserId(); + String tableName = analyzeDataDTO.getTableName(); + + List> attributes = stuTableNameMapper.selectBuildTable(fieldList,table,userId,tableName); + + + for (int i = 0; i < attributes.size(); i++) { + if(attributes.get(i).size() fieldList = analyzeDataDTO.getFieldList(); + List> attributes = stuTableNameMapper.selectByFields(fieldList,table); + for (int i = 0; i < attributes.size(); i++) { + if(attributes.get(i).size() record.containsValue(null)); @@ -493,5 +552,20 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM } return mode != null ? mode : ""; // 如果存在众数则返回,否则返回空字符串 } - + public static List> filterEmptyValues(List> dataList) { + List> filteredList = new ArrayList<>(); + for (Map map : dataList) { + boolean allValuesEmpty = true; + for (Object value : map.values()) { + if (value != null) { + allValuesEmpty = false; + break; + } + } + if (!allValuesEmpty) { + filteredList.add(map); + } + } + return filteredList; + } } diff --git a/src/main/java/com/sztzjy/marketing/util/StringUtils.java b/src/main/java/com/sztzjy/marketing/util/StringUtils.java new file mode 100644 index 0000000..e9e9199 --- /dev/null +++ b/src/main/java/com/sztzjy/marketing/util/StringUtils.java @@ -0,0 +1,24 @@ +package com.sztzjy.marketing.util; + +public class StringUtils { + + /** + * 将驼峰命名法的字符串转换为下划线命名法的字符串。 + * @param camelCaseStr 驼峰命名的字符串。 + * @return 下划线命名法的字符串。 + */ + public static String convertCamelCaseToUnderscore(String camelCaseStr) { + // 使用Pattern和Matcher处理字符串 + StringBuilder underscoreStr = new StringBuilder(); + for (int i = 0; i < camelCaseStr.length(); i++) { + char c = camelCaseStr.charAt(i); + if (Character.isUpperCase(c) && i > 0) { + // 如果当前字符是大写,并且不是第一个字符,则添加下划线 + underscoreStr.append("_"); + } + // 将字符添加到结果字符串中,如果是大写,则转换为小写 + underscoreStr.append(Character.toLowerCase(c)); + } + return underscoreStr.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/sztzjy/marketing/util/algorithm/KMeansResult.java b/src/main/java/com/sztzjy/marketing/util/algorithm/KMeansResult.java index 2b5e36f..a96eca2 100644 --- a/src/main/java/com/sztzjy/marketing/util/algorithm/KMeansResult.java +++ b/src/main/java/com/sztzjy/marketing/util/algorithm/KMeansResult.java @@ -199,10 +199,10 @@ public class KMeansResult { } } - System.out.println("最终聚类结果:"); - for (int i = 0; i < k; i++) { - System.out.println("簇 " + i + ": " + clusters.get(i)); - } +// System.out.println("最终聚类结果:"); +// for (int i = 0; i < k; i++) { +// System.out.println("簇 " + i + ": " + clusters.get(i)); +// } return clusters; } diff --git a/src/main/resources/mappers/StuTableNameMapper.xml b/src/main/resources/mappers/StuTableNameMapper.xml index da0b640..d8b2254 100644 --- a/src/main/resources/mappers/StuTableNameMapper.xml +++ b/src/main/resources/mappers/StuTableNameMapper.xml @@ -222,6 +222,13 @@ FROM ${table} + \ No newline at end of file diff --git a/src/main/resources/mappers/StuUploadExcelUserMapper.xml b/src/main/resources/mappers/StuUploadExcelUserMapper.xml index c0e2dbd..cd58099 100644 --- a/src/main/resources/mappers/StuUploadExcelUserMapper.xml +++ b/src/main/resources/mappers/StuUploadExcelUserMapper.xml @@ -962,5 +962,8 @@ FROM stu_upload_excel_user WHERE user_id = #{userId} + \ No newline at end of file