diff --git a/manager-admin/src/main/java/com/hshh/evaluation/controller/AssistantEvaluationProjectController.java b/manager-admin/src/main/java/com/hshh/evaluation/controller/AssistantEvaluationProjectController.java index a213b26..e3e038f 100644 --- a/manager-admin/src/main/java/com/hshh/evaluation/controller/AssistantEvaluationProjectController.java +++ b/manager-admin/src/main/java/com/hshh/evaluation/controller/AssistantEvaluationProjectController.java @@ -76,8 +76,11 @@ public class AssistantEvaluationProjectController extends BaseController { if (levelList.isEmpty()) { return; } + levelList.sort((a, b) -> Integer.compare(Integer.parseInt(b.getGrade()), Integer.parseInt(a.getGrade()))); + rootResult.setLevelName(levelList.get(levelList.size() - 1).getLevelName()); for (IndicatorTopLevel indicatorTopLevel : levelList) { + if (Double.parseDouble(rootResult.getFinalScore()) >= Double.parseDouble( indicatorTopLevel.getGrade())) { rootResult.setLevelName(indicatorTopLevel.getLevelName()); diff --git a/manager-admin/src/main/java/com/hshh/evaluation/controller/EvaluationProjectController.java b/manager-admin/src/main/java/com/hshh/evaluation/controller/EvaluationProjectController.java index 992457a..f853b4e 100644 --- a/manager-admin/src/main/java/com/hshh/evaluation/controller/EvaluationProjectController.java +++ b/manager-admin/src/main/java/com/hshh/evaluation/controller/EvaluationProjectController.java @@ -25,14 +25,14 @@ import com.hshh.model.entity.FormValue; import com.hshh.model.service.FormFieldConfigService; import com.hshh.model.service.FormValueService; import com.hshh.system.annotation.LogOperation; -import com.hshh.system.base.entity.TableRelations; -import com.hshh.system.base.service.TableRelationsService; import com.hshh.system.common.bean.OperateResult; import com.hshh.system.common.bean.PaginationBean; import com.hshh.system.common.enums.ErrorCode; import com.hshh.system.common.enums.ErrorMessage; import io.swagger.v3.oas.annotations.Operation; import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -75,7 +75,6 @@ public class EvaluationProjectController extends AssistantEvaluationProjectContr private EvaluationTemplateService evaluationTemplateService; - /** * 基础设施服务类. */ @@ -453,8 +452,10 @@ public class EvaluationProjectController extends AssistantEvaluationProjectContr if (membershipMap.get(level.getLevelName()) != null) { replaceMemberShipBuilder.append(level.getLevelName()).append(":") .append(membershipMap.get(level.getLevelName())).append(";"); - level.setActualValue( - Double.parseDouble(level.getGrade()) * membershipMap.get(level.getLevelName())); + ; + level.setActualValue(new BigDecimal(level.getGrade()).multiply( + new BigDecimal(membershipMap.get(level.getLevelName()))).setScale(1, + RoundingMode.HALF_UP).doubleValue()); } }); //按照优先级重新覆盖隶属函数对应的值 diff --git a/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorServiceImpl.java b/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorServiceImpl.java index 075ee91..b10ba80 100644 --- a/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorServiceImpl.java +++ b/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorServiceImpl.java @@ -25,6 +25,7 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import javax.annotation.Resource; +import javax.sql.DataSource; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,7 +45,7 @@ public class IndicatorServiceImpl extends ServiceImpl idList = new HashSet<>(); fillIndicatorList(idList, indicator); - Connection connection = sqlSessionTemplate.getConnection(); List sqlList = new ArrayList<>(); - for (int i = 1; i < idList.size(); i++) { - - } idList.forEach(indicatorId -> { if (!Objects.equals(indicatorId, id)) { addSql(sqlList, indicatorId); @@ -248,16 +246,19 @@ public class IndicatorServiceImpl extends ServiceImpl sqlList, Integer id) { sqlList.add( "delete from m_data_evaluation_indicator_result where indicator_id = " + id); diff --git a/manager-admin/src/main/java/com/hshh/model/service/impl/FormFieldConfigServiceImpl.java b/manager-admin/src/main/java/com/hshh/model/service/impl/FormFieldConfigServiceImpl.java index 1f60601..a84b2b5 100644 --- a/manager-admin/src/main/java/com/hshh/model/service/impl/FormFieldConfigServiceImpl.java +++ b/manager-admin/src/main/java/com/hshh/model/service/impl/FormFieldConfigServiceImpl.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hshh.model.entity.FormFieldConfig; import com.hshh.model.mapper.FormFieldConfigMapper; import com.hshh.model.service.FormFieldConfigService; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.springframework.stereotype.Service; @@ -41,8 +41,17 @@ public class FormFieldConfigServiceImpl extends @Override public Map getHeaderMap(Integer modelId) { - Map headerMap = new HashMap<>(); + Map headerMap = new LinkedHashMap<>(); List list = getFormFieldConfigByModelId(modelId); + list.sort((a, b) -> { + if (a.getSortOrder() == null) { + a.setSortOrder(999); + } + if (b.getSortOrder() == null) { + b.setSortOrder(999); + } + return a.getSortOrder().compareTo(b.getSortOrder()); + }); list.forEach(formFieldConfig -> { headerMap.put(formFieldConfig.getFieldName(), formFieldConfig.getFieldLabel()); }); @@ -51,8 +60,8 @@ public class FormFieldConfigServiceImpl extends @Override public void deleteByModelId(Integer modelId) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("data_model_id", modelId); - remove(queryWrapper); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("data_model_id", modelId); + remove(queryWrapper); } } diff --git a/manager-admin/src/main/resources/application.yaml b/manager-admin/src/main/resources/application.yaml index f06a854..17d509e 100644 --- a/manager-admin/src/main/resources/application.yaml +++ b/manager-admin/src/main/resources/application.yaml @@ -13,14 +13,14 @@ spring: thymeleaf: cache: false datasource: -# url: jdbc:dm://192.168.0.53:5236/MANAGER -# username: sysdba -# password: Admin123 -# driver-class-name: dm.jdbc.driver.DmDriver - url: jdbc:mysql://localhost:3306/manager?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC - username: root - password: 123456 - driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:dm://127.0.0.1:5236/MANAGER + username: SYSDBA + password: SYSDBA001 + driver-class-name: dm.jdbc.driver.DmDriver +# url: jdbc:mysql://localhost:3306/manager?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC +# username: root +# password: 123456 +# driver-class-name: com.mysql.cj.jdbc.Driver hikari: minimum-idle: 5 maximum-pool-size: 20 diff --git a/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/LeafFullTriangularMembershipFunction.java b/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/LeafFullTriangularMembershipFunction.java index 5f436b9..e6da084 100644 --- a/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/LeafFullTriangularMembershipFunction.java +++ b/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/LeafFullTriangularMembershipFunction.java @@ -63,10 +63,13 @@ public class LeafFullTriangularMembershipFunction implements MembershipFunction } if (isNumber(value.toString())) { + + double width = widthMiddle(gradeRanges); + for (int i = 0; i < gradeRanges.size(); i++) { GradeRange range = gradeRanges.get(i); - double degree = calculateTriangle(Double.parseDouble(value.toString()) , range, i); + double degree = calculateTriangle(Double.parseDouble(value.toString()), range, i, width); degree = Math.max(0.0, Math.min(1.0, degree)); membership.put(range.getGradeName(), degree); @@ -99,7 +102,7 @@ public class LeafFullTriangularMembershipFunction implements MembershipFunction } // 修正:三角形计算函数 - private double calculateTriangle(double value, GradeRange range, int index) { + private double calculateTriangle(double value, GradeRange range, int index, double width) { double lowerBound = range.getLowerBound(); double upperBound = range.getUpperBound(); @@ -107,31 +110,18 @@ public class LeafFullTriangularMembershipFunction implements MembershipFunction double peakPoint; if (index == gradeRanges.size() - 1) { // 最高等级(优) peakPoint = upperBound; - System.out.println(" 最高等级,峰值设在上边界: " + peakPoint); + } else { peakPoint = lowerBound + (upperBound - lowerBound) * peakRatio; - System.out.println(" 峰值点: " + peakPoint); + } - double rangeWidth = upperBound - lowerBound; - double overlap = rangeWidth * overlapRatio; - double leftBoundary = lowerBound - overlap / 2; - double rightBoundary = upperBound + overlap / 2; - - // 修正:对于边界等级的特殊处理 - if (index == 0) { - // 第一个等级,左边界延伸 - leftBoundary = Math.min(leftBoundary, lowerBound - rangeWidth); - System.out.println(" 第一个等级,左边界大幅延伸: " + leftBoundary); - } - if (index == gradeRanges.size() - 1) { - // 最后一个等级,右边界大幅延伸 - rightBoundary = Math.max(rightBoundary, upperBound + rangeWidth * 2); - System.out.println(" 最后一个等级,右边界大幅延伸: " + rightBoundary); - } + double overlap = width * overlapRatio; + double leftBoundary = lowerBound - overlap; + double rightBoundary = upperBound + overlap; double result; - if (value <= leftBoundary || value >= rightBoundary) { + if (value <= leftBoundary || value > rightBoundary) { result = 0.0; } else if (Math.abs(value - peakPoint) < 0.0001) { // 处理浮点数比较 diff --git a/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/LeafHybridMembershipFunction.java b/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/LeafHybridMembershipFunction.java index 8fd09c3..25bec81 100644 --- a/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/LeafHybridMembershipFunction.java +++ b/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/LeafHybridMembershipFunction.java @@ -153,7 +153,7 @@ public class LeafHybridMembershipFunction implements MembershipFunction { double result; if (value <= leftExtend) { - System.out.println(" 判断: value <= leftExtend → 返回 0.0"); + result = 0.0; } else if (value <= plateauStart) { double slope = 1.0 / (plateauStart - leftExtend); diff --git a/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/MembershipFunction.java b/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/MembershipFunction.java index 237f6fe..8198c45 100644 --- a/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/MembershipFunction.java +++ b/manager-system/src/main/java/com/hshh/system/algorithm/fuzzy/MembershipFunction.java @@ -1,5 +1,7 @@ package com.hshh.system.algorithm.fuzzy; +import java.util.ArrayList; +import java.util.List; import java.util.Map; /** @@ -20,4 +22,14 @@ public interface MembershipFunction { default boolean isNumber(String str) { return str != null && str.matches("^\\d+(\\.\\d+)?$"); } + + default double widthMiddle(List gradeRanges) { + + List middleList = new ArrayList<>(); + for (GradeRange gradeRange : gradeRanges) { + middleList.add(gradeRange.getUpperBound() - gradeRange.getLowerBound()); + } + middleList.sort(Double::compareTo); + return middleList.get(middleList.size() / 2); + } }