From 516a03e46a5388d12dcec1e4028b814422c0fff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8E=89=E4=B8=9C?= <129883742+liyudong2018@users.noreply.github.com> Date: Wed, 24 Sep 2025 09:25:54 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=8C=87=E6=A0=87=E5=AD=90=E9=9B=86?= =?UTF-8?q?=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/EvaluationIndicatorResult.java | 50 ++++++ .../entity/EvaluationRootResult.java | 56 ++++++ .../EvaluationIndicatorResultMapper.java | 16 ++ .../mapper/EvaluationRootResultMapper.java | 16 ++ .../EvaluationIndicatorResultService.java | 51 ++++++ .../service/EvaluationRootResultService.java | 40 +++++ .../EvaluationIndicatorResultServiceImpl.java | 67 +++++++ .../impl/EvaluationRootResultServiceImpl.java | 128 +++++++++++++ .../indicator/entity/IndicatorTopLevel.java | 43 +++++ .../indicator/entity/IndicatorTopSet.java | 43 +++++ .../mapper/IndicatorTopLevelMapper.java | 16 ++ .../mapper/IndicatorTopSetMapper.java | 16 ++ .../service/IndicatorTopLevelService.java | 31 ++++ .../service/IndicatorTopSetService.java | 30 ++++ .../impl/IndicatorTopLevelServiceImpl.java | 52 ++++++ .../impl/IndicatorTopSetServiceImpl.java | 41 +++++ .../EvaluationIndicatorResultMapper.xml | 5 + .../mapper/EvaluationRootResultMapper.xml | 5 + .../mapper/IndicatorTopLevelMapper.xml | 5 + .../mapper/IndicatorTopSetMapper.xml | 5 + manager-system/d.puml | 168 ++++++++++++++++++ manager-system/src/main/base.puml | 132 ++++++++++++++ .../base/controller/LogsController.java | 63 +++++++ .../com/hshh/system/base/entity/Logs.java | 43 +++++ .../hshh/system/base/mapper/LogsMapper.java | 31 ++++ .../hshh/system/base/service/LogsService.java | 32 ++++ .../base/service/impl/LogsServiceImpl.java | 29 +++ .../src/main/resources/mapper/LogsMapper.xml | 64 +++++++ 28 files changed, 1278 insertions(+) create mode 100644 manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationIndicatorResult.java create mode 100644 manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationRootResult.java create mode 100644 manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationIndicatorResultMapper.java create mode 100644 manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationRootResultMapper.java create mode 100644 manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationIndicatorResultService.java create mode 100644 manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationRootResultService.java create mode 100644 manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationIndicatorResultServiceImpl.java create mode 100644 manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationRootResultServiceImpl.java create mode 100644 manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorTopLevel.java create mode 100644 manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorTopSet.java create mode 100644 manager-admin/src/main/java/com/hshh/indicator/mapper/IndicatorTopLevelMapper.java create mode 100644 manager-admin/src/main/java/com/hshh/indicator/mapper/IndicatorTopSetMapper.java create mode 100644 manager-admin/src/main/java/com/hshh/indicator/service/IndicatorTopLevelService.java create mode 100644 manager-admin/src/main/java/com/hshh/indicator/service/IndicatorTopSetService.java create mode 100644 manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorTopLevelServiceImpl.java create mode 100644 manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorTopSetServiceImpl.java create mode 100644 manager-admin/src/main/resources/mapper/EvaluationIndicatorResultMapper.xml create mode 100644 manager-admin/src/main/resources/mapper/EvaluationRootResultMapper.xml create mode 100644 manager-admin/src/main/resources/mapper/IndicatorTopLevelMapper.xml create mode 100644 manager-admin/src/main/resources/mapper/IndicatorTopSetMapper.xml create mode 100644 manager-system/d.puml create mode 100644 manager-system/src/main/base.puml create mode 100644 manager-system/src/main/java/com/hshh/system/base/controller/LogsController.java create mode 100644 manager-system/src/main/java/com/hshh/system/base/entity/Logs.java create mode 100644 manager-system/src/main/java/com/hshh/system/base/mapper/LogsMapper.java create mode 100644 manager-system/src/main/java/com/hshh/system/base/service/LogsService.java create mode 100644 manager-system/src/main/java/com/hshh/system/base/service/impl/LogsServiceImpl.java create mode 100644 manager-system/src/main/resources/mapper/LogsMapper.xml diff --git a/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationIndicatorResult.java b/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationIndicatorResult.java new file mode 100644 index 0000000..c1e641d --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationIndicatorResult.java @@ -0,0 +1,50 @@ +package com.hshh.evaluation.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; + +/** + *

+ * + *

+ * + * @author liDongYu + * @since 2025-08-24 + */ +@TableName("m_data_evaluation_indicator_result") +@Data +public class EvaluationIndicatorResult implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + + private Integer indicatorId; + + + private Integer indicatorParentId; + + + private Integer indicatorTopId; + + + private String randomKey; + + + private String memberShipScore; + + + private String finalScore; + + private Integer rootId; + + + private String indicatorName; + private Integer level; + private Double weight; +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationRootResult.java b/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationRootResult.java new file mode 100644 index 0000000..37bde96 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationRootResult.java @@ -0,0 +1,56 @@ +package com.hshh.evaluation.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.hshh.system.common.bean.BaseBean; +import java.time.LocalDateTime; +import lombok.Data; + +/** + *

+ * 评估结果表 + *

+ * + * @author liDongYu + * @since 2025-08-24 + */ +@TableName("m_data_evaluation_root_result") +@Data +public class EvaluationRootResult extends BaseBean { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + + private Integer projectId; + + + private String identifier; + + + private LocalDateTime createTime; + @TableField(exist = false) + private String createTimeStr; + + private String randomKey; + + + private String finalScore; + + + private String membershipScore; + + + private String indicatorName; + private Integer indicatorTopId; + private Integer originalId; + private String datasourceType; + //评价集区间名称 + @TableField(exist = false) + private String levelName; + +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationIndicatorResultMapper.java b/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationIndicatorResultMapper.java new file mode 100644 index 0000000..530a39e --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationIndicatorResultMapper.java @@ -0,0 +1,16 @@ +package com.hshh.evaluation.mapper; + +import com.hshh.evaluation.entity.EvaluationIndicatorResult; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author liDongYu + * @since 2025-08-24 + */ +public interface EvaluationIndicatorResultMapper extends BaseMapper { + +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationRootResultMapper.java b/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationRootResultMapper.java new file mode 100644 index 0000000..ae64c9c --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationRootResultMapper.java @@ -0,0 +1,16 @@ +package com.hshh.evaluation.mapper; + +import com.hshh.evaluation.entity.EvaluationRootResult; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 评估结果表 Mapper 接口 + *

+ * + * @author liDongYu + * @since 2025-08-24 + */ +public interface EvaluationRootResultMapper extends BaseMapper { + +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationIndicatorResultService.java b/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationIndicatorResultService.java new file mode 100644 index 0000000..2bb6848 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationIndicatorResultService.java @@ -0,0 +1,51 @@ +package com.hshh.evaluation.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hshh.evaluation.entity.EvaluationIndicatorResult; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author liDongYu + * @since 2025-08-24 + */ +public interface EvaluationIndicatorResultService extends IService { + + /** + * 保存指标详情. + * + * @param list 数据 + * @param rootId 根记录ID + */ + void saveWhole(List list, Integer rootId); + + /** + * 根据根指标查询每个指标的评估数据. + * + * @param rootId 对应的索引值 根指标记录ID + * @return 评估数据列表 + */ + List selectByRootId(Integer rootId); + + /** + * 根据父ID和评估标识key获取数据. + * + * @param parentId 父ID + * @param randomKey 评估本次的 + * @return + */ + List queryListByParentIdAndRandomKey(Integer parentId, + String randomKey, Integer rootId); + + /** + * 根据关联的rootID删除相关记录. + * + * @param rootId 根记录ID + */ + void removeByRootId(Integer rootId); + + void deleteByRandomKey(String randomKey); +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationRootResultService.java b/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationRootResultService.java new file mode 100644 index 0000000..e865c3a --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationRootResultService.java @@ -0,0 +1,40 @@ +package com.hshh.evaluation.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hshh.evaluation.entity.EvaluationRootResult; +import com.hshh.system.algorithm.fuzzy.IndicatorNode; +import java.util.List; + +/** + *

+ * 评估结果表 服务类 + *

+ * + * @author liDongYu + * @since 2025-08-24 + */ +public interface EvaluationRootResultService extends IService { + + /** + * 保存评估数据. + * + * @param indicatorNode 评估结果数据 + */ + void saveWhole(IndicatorNode indicatorNode); + + /** + * 根据评估时临时生成的批次key查询根指标的评估结果. + * + * @param randomKey 生成批次临时key + * @return 根指标评估结果 + */ + List queryListByRandomKey(String randomKey); + + /** + * 删除指标根评估记录. + * + * @param id 评估根指标记录ID + */ + void deleteRootRecord(Integer id); + void deleteByRandomKey(String randomKey); +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationIndicatorResultServiceImpl.java b/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationIndicatorResultServiceImpl.java new file mode 100644 index 0000000..6f8d1a5 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationIndicatorResultServiceImpl.java @@ -0,0 +1,67 @@ +package com.hshh.evaluation.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hshh.evaluation.entity.EvaluationIndicatorResult; +import com.hshh.evaluation.mapper.EvaluationIndicatorResultMapper; +import com.hshh.evaluation.service.EvaluationIndicatorResultService; +import java.util.List; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + *

+ * 服务实现类 + *

+ * + * @author liDongYu + * @since 2025-08-24 + */ +@Service +public class EvaluationIndicatorResultServiceImpl extends + ServiceImpl implements + EvaluationIndicatorResultService { + + @Transactional(rollbackFor = Exception.class) + @Override + public void saveWhole(List list, Integer rootId) { + list.forEach(item -> { + item.setRootId(rootId); + save(item); + }); + } + + @Override + public List selectByRootId(Integer rootId + ) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("root_id", rootId); + + wrapper.orderByAsc("level", "id"); + return this.list(wrapper); + } + + @Override + public List queryListByParentIdAndRandomKey(Integer parentId, + String randomKey, Integer rootId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("indicator_parent_id", parentId); + wrapper.eq("random_key", randomKey); + wrapper.eq("root_id", rootId); + return this.list(wrapper); + } + + @Override + public void removeByRootId(Integer rootId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("root_id", rootId); + remove(wrapper); + } + + @Override + public void deleteByRandomKey(String randomKey) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("random_key", randomKey); + remove(wrapper); + } +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationRootResultServiceImpl.java b/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationRootResultServiceImpl.java new file mode 100644 index 0000000..8975357 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationRootResultServiceImpl.java @@ -0,0 +1,128 @@ +package com.hshh.evaluation.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hshh.evaluation.entity.EvaluationIndicatorResult; +import com.hshh.evaluation.entity.EvaluationRootResult; +import com.hshh.evaluation.mapper.EvaluationRootResultMapper; +import com.hshh.evaluation.service.EvaluationIndicatorResultService; +import com.hshh.evaluation.service.EvaluationRootResultService; +import com.hshh.system.algorithm.fuzzy.IndicatorNode; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + *

+ * 评估结果表 服务实现类 + *

+ * + * @author liDongYu + * @since 2025-08-24 + */ +@Service +public class EvaluationRootResultServiceImpl extends + ServiceImpl implements + EvaluationRootResultService { + + private static final String doubleFormat = "%.2f"; + @Resource + private EvaluationIndicatorResultService evaluationIndicatorResultService; + + + @Transactional(rollbackFor = Exception.class) + @Override + public void saveWhole(IndicatorNode indicatorNode) { + EvaluationRootResult rootResult = new EvaluationRootResult(); + + //设置创建时间 + rootResult.setCreateTime(LocalDateTime.now()); + //设置根指标ID + rootResult.setIndicatorTopId(Integer.parseInt(indicatorNode.getId())); + //原始记录ID + rootResult.setOriginalId(indicatorNode.getOriginalId()); + //数据来源 + rootResult.setDatasourceType(indicatorNode.getType()); + //最终分 + if (indicatorNode.getScore() == null) { + indicatorNode.setScore(0d); + } + rootResult.setFinalScore( + new BigDecimal(indicatorNode.getScore()).setScale(1, RoundingMode.UP).toPlainString()); + StringBuilder membershipBuilder = new StringBuilder(); + indicatorNode.getMembershipDegrees().forEach((k, v) -> { + membershipBuilder.append(k).append(":").append(String.format(doubleFormat, v)).append(";"); + }); + //设置隶属度 + rootResult.setMembershipScore(membershipBuilder.toString()); + //设置工程ID + rootResult.setProjectId(indicatorNode.getProjectId()); + //设置本次评估随机标识 + rootResult.setRandomKey(indicatorNode.getRandomKey()); + //设置标识名称 + rootResult.setIdentifier(indicatorNode.getLogicName()); + //设置指标名称 + rootResult.setIndicatorName(indicatorNode.getName()); + save(rootResult); + + List indicatorResultList = new ArrayList<>(); + fillIndicatorResult(indicatorResultList, indicatorNode, null, + Integer.parseInt(indicatorNode.getId())); + //开始保存详情 + evaluationIndicatorResultService.saveWhole(indicatorResultList, rootResult.getId()); + } + + private void fillIndicatorResult(List indicatorResultList, + IndicatorNode indicatorNode, Integer pid, Integer topId) { + EvaluationIndicatorResult result = new EvaluationIndicatorResult(); + result.setIndicatorId(indicatorNode.getOriginalId()); + result.setWeight(indicatorNode.getWeight()); + result.setLevel(indicatorNode.getLevel()); + result.setRandomKey(indicatorNode.getRandomKey()); + result.setIndicatorTopId(topId); + result.setIndicatorParentId(pid); + result.setIndicatorName(indicatorNode.getName()); + result.setFinalScore( + indicatorNode.getScore() == null ? "" + : String.format(doubleFormat, indicatorNode.getScore())); + StringBuilder membershipBuilder = new StringBuilder(); + indicatorNode.getMembershipDegrees().forEach((k, v) -> { + membershipBuilder.append(k).append(":").append(String.format(doubleFormat, v)).append(";"); + }); + result.setMemberShipScore(membershipBuilder.toString()); + indicatorResultList.add(result); + if (indicatorNode.getChildren() != null && !indicatorNode.getChildren().isEmpty()) { + indicatorNode.getChildren().forEach(child -> { + fillIndicatorResult(indicatorResultList, child, indicatorNode.getOriginalId(), topId); + }); + } + } + + @Override + public List queryListByRandomKey(String randomKey) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("random_key", randomKey); + wrapper.orderByAsc("id"); + return this.list(wrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteRootRecord(Integer id) { + evaluationIndicatorResultService.removeByRootId(id); + removeById(id); + } + + @Override + public void deleteByRandomKey(String randomKey) { + evaluationIndicatorResultService.deleteByRandomKey(randomKey); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("random_key", randomKey); + remove(wrapper); + } +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorTopLevel.java b/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorTopLevel.java new file mode 100644 index 0000000..d8dc58c --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorTopLevel.java @@ -0,0 +1,43 @@ +package com.hshh.indicator.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; + +/** + *

+ * + *

+ * + * @author liDongYu + * @since 2025-08-23 + */ +@TableName("m_data_indicator_top_level") +@Data +public class IndicatorTopLevel implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + + + + private String levelName; + + + private String grade; + + + private Integer levelOrder; + + + + @TableField(exist = false) + private double actualValue; + private String equalValue; +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorTopSet.java b/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorTopSet.java new file mode 100644 index 0000000..f6cdee8 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorTopSet.java @@ -0,0 +1,43 @@ +package com.hshh.indicator.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; + + +/** + *

+ * + *

+ * + * @author liDongYu + * @since 2025-08-23 + */ +@TableName("m_data_indicator_top_set") +@Data +public class IndicatorTopSet implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + + private String membershipFunc; + + + private String softEdgeS; + + + private String gaussianEpsilon; + + + private String triangleOverlapRatio; + + + private String trianglePeakRatio; + private String method; + +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/mapper/IndicatorTopLevelMapper.java b/manager-admin/src/main/java/com/hshh/indicator/mapper/IndicatorTopLevelMapper.java new file mode 100644 index 0000000..7f4dbdd --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/mapper/IndicatorTopLevelMapper.java @@ -0,0 +1,16 @@ +package com.hshh.indicator.mapper; + +import com.hshh.indicator.entity.IndicatorTopLevel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author liDongYu + * @since 2025-08-23 + */ +public interface IndicatorTopLevelMapper extends BaseMapper { + +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/mapper/IndicatorTopSetMapper.java b/manager-admin/src/main/java/com/hshh/indicator/mapper/IndicatorTopSetMapper.java new file mode 100644 index 0000000..340e00a --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/mapper/IndicatorTopSetMapper.java @@ -0,0 +1,16 @@ +package com.hshh.indicator.mapper; + +import com.hshh.indicator.entity.IndicatorTopSet; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author liDongYu + * @since 2025-08-23 + */ +public interface IndicatorTopSetMapper extends BaseMapper { + +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorTopLevelService.java b/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorTopLevelService.java new file mode 100644 index 0000000..cced8be --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorTopLevelService.java @@ -0,0 +1,31 @@ +package com.hshh.indicator.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hshh.indicator.bean.IndicatorEvalBean; +import com.hshh.indicator.bean.IndicatorSetBean; +import com.hshh.indicator.entity.IndicatorTopLevel; +import java.util.List; + +/** + * 指标全局评价名称对应的分集合服务类. + * + * @author liDongYu + * @since 2025-08-23 + */ +public interface IndicatorTopLevelService extends IService { + + /** + * 查询指标的全局评级分分类集合. + * + + * @return 全局评级分分类集合 + */ + List getTopLevel(); + + /** + * 保存全局评价枚举和分值. + * + * @param data 前端数据 + */ + void saveWhole(IndicatorSetBean data); +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorTopSetService.java b/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorTopSetService.java new file mode 100644 index 0000000..9245d60 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorTopSetService.java @@ -0,0 +1,30 @@ +package com.hshh.indicator.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hshh.indicator.bean.IndicatorEvalBean; +import com.hshh.indicator.bean.IndicatorSetBean; +import com.hshh.indicator.entity.IndicatorTopSet; + +/** + * 顶级指标全局隶属函数配置服务类. + * + * @author liDongYu + * @since 2025-08-23 + */ +public interface IndicatorTopSetService extends IService { + + /** + * 根据顶级指标ID查询隶属函数配置. + * + + * @return 配置 + */ + IndicatorTopSet getIndicatorTopSet(); + + /** + * 保存全局隶属度函数设置. + * + * @param data 前端数据 + */ + void saveWhole(IndicatorSetBean data); +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorTopLevelServiceImpl.java b/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorTopLevelServiceImpl.java new file mode 100644 index 0000000..127bd4a --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorTopLevelServiceImpl.java @@ -0,0 +1,52 @@ +package com.hshh.indicator.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hshh.indicator.bean.IndicatorSetBean; +import com.hshh.indicator.entity.IndicatorTopLevel; +import com.hshh.indicator.mapper.IndicatorTopLevelMapper; +import com.hshh.indicator.service.IndicatorTopLevelService; +import com.hshh.indicator.service.IndicatorTopSetService; +import java.util.List; +import javax.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + *

+ * 服务实现类 + *

+ * + * @author liDongYu + * @since 2025-08-23 + */ +@Service +public class IndicatorTopLevelServiceImpl extends + ServiceImpl implements + IndicatorTopLevelService { + + @Resource + private IndicatorTopSetService indicatorTopSetService; + + @Override + public List getTopLevel() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + queryWrapper.orderByAsc("id"); + return this.list(queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void saveWhole(IndicatorSetBean data) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + //先删除表中所有记录 + remove(queryWrapper); + for (int i = 0; i < data.getLevels().size(); i++) { + IndicatorTopLevel topLevel = data.getLevels().get(i); + topLevel.setLevelOrder(i + 1); + save(topLevel); + } + indicatorTopSetService.saveWhole(data); + } +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorTopSetServiceImpl.java b/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorTopSetServiceImpl.java new file mode 100644 index 0000000..f3573ad --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorTopSetServiceImpl.java @@ -0,0 +1,41 @@ +package com.hshh.indicator.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hshh.indicator.bean.IndicatorSetBean; +import com.hshh.indicator.entity.IndicatorTopSet; +import com.hshh.indicator.mapper.IndicatorTopSetMapper; +import com.hshh.indicator.service.IndicatorTopSetService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + *

+ * 服务实现类 + *

+ * + * @author liDongYu + * @since 2025-08-23 + */ +@Service +public class IndicatorTopSetServiceImpl extends + ServiceImpl implements + IndicatorTopSetService { + + @Override + public IndicatorTopSet getIndicatorTopSet() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + return baseMapper.selectOne(queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void saveWhole(IndicatorSetBean data) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + remove(queryWrapper); + save(data.getTopSet()); + + } +} diff --git a/manager-admin/src/main/resources/mapper/EvaluationIndicatorResultMapper.xml b/manager-admin/src/main/resources/mapper/EvaluationIndicatorResultMapper.xml new file mode 100644 index 0000000..f48b4de --- /dev/null +++ b/manager-admin/src/main/resources/mapper/EvaluationIndicatorResultMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/manager-admin/src/main/resources/mapper/EvaluationRootResultMapper.xml b/manager-admin/src/main/resources/mapper/EvaluationRootResultMapper.xml new file mode 100644 index 0000000..4ac8ff5 --- /dev/null +++ b/manager-admin/src/main/resources/mapper/EvaluationRootResultMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/manager-admin/src/main/resources/mapper/IndicatorTopLevelMapper.xml b/manager-admin/src/main/resources/mapper/IndicatorTopLevelMapper.xml new file mode 100644 index 0000000..8840256 --- /dev/null +++ b/manager-admin/src/main/resources/mapper/IndicatorTopLevelMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/manager-admin/src/main/resources/mapper/IndicatorTopSetMapper.xml b/manager-admin/src/main/resources/mapper/IndicatorTopSetMapper.xml new file mode 100644 index 0000000..ceac311 --- /dev/null +++ b/manager-admin/src/main/resources/mapper/IndicatorTopSetMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/manager-system/d.puml b/manager-system/d.puml new file mode 100644 index 0000000..4309ec8 --- /dev/null +++ b/manager-system/d.puml @@ -0,0 +1,168 @@ +@startuml +skinparam rectangle { + BackgroundColor<> #E3F2FD + BorderColor<> #90CAF9 + BackgroundColor<> #F3E5F5 + BorderColor<> #B39DDB + BackgroundColor<> #E8F5E9 + BorderColor<> #A5D6A7 + BackgroundColor<> #FFF3E0 + BorderColor<> #FFB74D + BackgroundColor<> #FFEBEE + BorderColor<> #EF9A9A +} + +title 基础权限管理分层架构依赖关系 + +' --------- Controller 层 ---------- +package "Controller Layer" <> { + class ConfigSetController <> + class DictItemController <> + class DictTypeController <> + class LogsController <> + class MenuController <> + class PermissionController <> + class RoleController <> + class UserController <> +} + +' --------- Service 接口层 ---------- +package "Service Interface Layer" <> { + interface ConfigSetService <> + interface DictItemService <> + interface DictTypeService <> + interface LogsService <> + interface MenusService <> + interface PermissionMenuService <> + interface PermissionsService <> + interface RolePermissionService <> + interface RolesService <> + interface TableRelationsService <> + interface UserRoleService <> + interface UsersService <> +} + +' --------- Service 实现层 ---------- +package "Service Implementation Layer" <> { + class ConfigSetServiceImpl <> + class DictItemServiceImpl <> + class DictTypeServiceImpl <> + class LogsServiceImpl <> + class MenusServiceImpl <> + class PermissionMenuServiceImpl <> + class PermissionsServiceImpl <> + class RolePermissionServiceImpl <> + class RolesServiceImpl <> + class TableRelationsServiceImpl <> + class UserRoleServiceImpl <> + class UsersServiceImpl <> +} + +' --------- Mapper 层 ---------- +package "Mapper Layer" <> { + interface ConfigSetMapper <> + interface DictItemMapper <> + interface DictTypeMapper <> + interface LogsMapper <> + interface MenusMapper <> + interface PermissionMenuMapper <> + interface PermissionsMapper <> + interface RolePermissionMapper <> + interface RolesMapper <> + interface TableRelationsMapper <> + interface UserRoleMapper <> + interface UsersMapper <> +} + +' --------- Entity 层 ---------- +package "Entity Layer" <> { + class ConfigSet + class CreateUser + class DictItem + class DictType + class Logs + class Menus + class PermissionMenu + class Permissions + class RolePermission + class Roles + class TableRelations + class UpdateUser + class UserRole + class Users +} + +' ======== 依赖关系,每组典型主线依赖 ========= +' ConfigSet +ConfigSetController --> ConfigSetService +ConfigSetService <|.. ConfigSetServiceImpl +ConfigSetServiceImpl --> ConfigSetMapper +ConfigSetMapper --> ConfigSet + +' DictItem +DictItemController --> DictItemService +DictItemService <|.. DictItemServiceImpl +DictItemServiceImpl --> DictItemMapper +DictItemMapper --> DictItem + +' DictType +DictTypeController --> DictTypeService +DictTypeService <|.. DictTypeServiceImpl +DictTypeServiceImpl --> DictTypeMapper +DictTypeMapper --> DictType + +' Logs +LogsController --> LogsService +LogsService <|.. LogsServiceImpl +LogsServiceImpl --> LogsMapper +LogsMapper --> Logs + +' Menu +MenuController --> MenusService +MenusService <|.. MenusServiceImpl +MenusServiceImpl --> MenusMapper +MenusMapper --> Menus + +' PermissionMenu +PermissionController --> PermissionMenuService +PermissionMenuService <|.. PermissionMenuServiceImpl +PermissionMenuServiceImpl --> PermissionMenuMapper +PermissionMenuMapper --> PermissionMenu + +' Permissions +PermissionController --> PermissionsService +PermissionsService <|.. PermissionsServiceImpl +PermissionsServiceImpl --> PermissionsMapper +PermissionsMapper --> Permissions + +' RolePermission +RoleController --> RolePermissionService +RolePermissionService <|.. RolePermissionServiceImpl +RolePermissionServiceImpl --> RolePermissionMapper +RolePermissionMapper --> RolePermission + +' Roles +RoleController --> RolesService +RolesService <|.. RolesServiceImpl +RolesServiceImpl --> RolesMapper +RolesMapper --> Roles + +' TableRelations +TableRelationsService <|.. TableRelationsServiceImpl +TableRelationsServiceImpl --> TableRelationsMapper +TableRelationsMapper --> TableRelations + +' UserRole +UserController --> UserRoleService +UserRoleService <|.. UserRoleServiceImpl +UserRoleServiceImpl --> UserRoleMapper +UserRoleMapper --> UserRole + +' Users +UserController --> UsersService +UsersService <|.. UsersServiceImpl +UsersServiceImpl --> UsersMapper +UsersMapper --> Users + +' CreateUser/UpdateUser (通常为DTO/VO,可与Users并列) +@enduml \ No newline at end of file diff --git a/manager-system/src/main/base.puml b/manager-system/src/main/base.puml new file mode 100644 index 0000000..f5958fa --- /dev/null +++ b/manager-system/src/main/base.puml @@ -0,0 +1,132 @@ +@startuml +!define CONTROLLER_COLOR #E1F5FE +!define SERVICE_COLOR #F3E5F5 +!define SERVICEIMPL_COLOR #E8F5E8 +!define MAPPER_COLOR #FFF3E0 +!define ENTITY_COLOR #FFEBEE +!define BEAN_COLOR #FFF8DC + +title 能力评估管理 + +package "Bean Layer" BEAN_COLOR { + class BarData + class CsvUploadBean + class EvalItemToFieldInfo + class PageDatasourceRequest + class pageDynamicTable + class PageEvaluationRequest + class PageIndicatorWeight + class PageMetricComputeRequest + class PageMetricComputerResponse + class PageMetricMapperWeightBean + class PageMetricTableHeaderBean + class PieData + class ReportBean + class ReportIndicatorNodeData + class SingleEvaluationData +} + +package "Controller Layer" CONTROLLER_COLOR { + class AssistantEvaluationProjectController + class AssistantTemplateController + class EvaluationIndicatorResultController + class EvaluationProjectController + class EvaluationRootResultController + class EvaluationTemplateController +} + +package "Entity Layer" ENTITY_COLOR { + class EvaluationCsvData + class EvaluationHistory + class EvaluationIndicatorResult + class EvaluationProject + class EvaluationRootResult + class EvaluationTemplate + class EvaluationTemplateIndicatorWeight + class EvaluationTemplateWeight +} + +package "Mapper Layer" MAPPER_COLOR { + interface EvaluationCsvDataMapper + interface EvaluationHistoryMapper + interface EvaluationIndicatorResultMapper + interface EvaluationProjectMapper + interface EvaluationRootResultMapper + interface EvaluationTemplateIndicatorWeightMapper + interface EvaluationTemplateMapper + interface EvaluationTemplateWeightMapper +} + +package "Service Interface Layer" SERVICE_COLOR { + interface CoreEvaluationService + interface EvaluationCsvDataService + interface EvaluationHistoryService + interface EvaluationIndicatorResultService + interface EvaluationProjectService + interface EvaluationRootResultService + interface EvaluationTemplateIndicatorWeightService + interface EvaluationTemplateService + interface EvaluationTemplateWeightService +} + +package "Service Implementation Layer" SERVICEIMPL_COLOR { + class CoreEvaluationServiceImpl + class EvaluationCsvDataServiceImpl + class EvaluationHistoryServiceImpl + class EvaluationIndicatorResultServiceImpl + class EvaluationProjectServiceImpl + class EvaluationRootResultServiceImpl + class EvaluationTemplateIndicatorWeightServiceImpl + class EvaluationTemplateServiceImpl + class EvaluationTemplateWeightServiceImpl +} + +' ========== 典型依赖关系举例 ========== + +' Controller --> Service +AssistantEvaluationProjectController --> EvaluationProjectService +AssistantTemplateController --> EvaluationTemplateService +EvaluationIndicatorResultController --> EvaluationIndicatorResultService +EvaluationProjectController --> EvaluationProjectService +EvaluationRootResultController --> EvaluationRootResultService +EvaluationTemplateController --> EvaluationTemplateService + +' Service接口到实现 +CoreEvaluationService <|.. CoreEvaluationServiceImpl +EvaluationCsvDataService <|.. EvaluationCsvDataServiceImpl +EvaluationHistoryService <|.. EvaluationHistoryServiceImpl +EvaluationIndicatorResultService <|.. EvaluationIndicatorResultServiceImpl +EvaluationProjectService <|.. EvaluationProjectServiceImpl +EvaluationRootResultService <|.. EvaluationRootResultServiceImpl +EvaluationTemplateIndicatorWeightService <|.. EvaluationTemplateIndicatorWeightServiceImpl +EvaluationTemplateService <|.. EvaluationTemplateServiceImpl +EvaluationTemplateWeightService <|.. EvaluationTemplateWeightServiceImpl + +' ServiceImpl --> Mapper +EvaluationCsvDataServiceImpl --> EvaluationCsvDataMapper +EvaluationHistoryServiceImpl --> EvaluationHistoryMapper +EvaluationIndicatorResultServiceImpl --> EvaluationIndicatorResultMapper +EvaluationProjectServiceImpl --> EvaluationProjectMapper +EvaluationRootResultServiceImpl --> EvaluationRootResultMapper +EvaluationTemplateIndicatorWeightServiceImpl --> EvaluationTemplateIndicatorWeightMapper +EvaluationTemplateServiceImpl --> EvaluationTemplateMapper +EvaluationTemplateWeightServiceImpl --> EvaluationTemplateWeightMapper + +' Mapper --> Entity +EvaluationCsvDataMapper --> EvaluationCsvData +EvaluationHistoryMapper --> EvaluationHistory +EvaluationIndicatorResultMapper --> EvaluationIndicatorResult +EvaluationProjectMapper --> EvaluationProject +EvaluationRootResultMapper --> EvaluationRootResult +EvaluationTemplateIndicatorWeightMapper --> EvaluationTemplateIndicatorWeight +EvaluationTemplateMapper --> EvaluationTemplate +EvaluationTemplateWeightMapper --> EvaluationTemplateWeight + +note right of "Bean Layer" : VO/DTO/BO 层\n用于前后端数据传输和页面展示 +note right of "Controller Layer" : 控制层\n处理 HTTP 请求 +note right of "Service Interface Layer" : 业务接口层\n定义业务契约 +note right of "Service Implementation Layer" : 业务实现层\n具体业务逻辑 +note right of "Mapper Layer" : 数据访问层\n数据库操作 +note right of "Entity Layer" : 实体层\n数据模型 + +@enduml \ No newline at end of file diff --git a/manager-system/src/main/java/com/hshh/system/base/controller/LogsController.java b/manager-system/src/main/java/com/hshh/system/base/controller/LogsController.java new file mode 100644 index 0000000..6c81210 --- /dev/null +++ b/manager-system/src/main/java/com/hshh/system/base/controller/LogsController.java @@ -0,0 +1,63 @@ +package com.hshh.system.base.controller; + +import com.hshh.system.base.entity.Logs; +import com.hshh.system.base.service.LogsService; +import com.hshh.system.common.bean.BaseController; +import com.hshh.system.common.bean.PaginationBean; +import java.util.List; +import javax.annotation.Resource; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + *

+ * 前端控制器 + *

+ * + * @author liDongYu + * @since 2025-08-22 + */ +@Controller +@RequestMapping("/base/logs") +public class LogsController extends BaseController { + + @Resource + private LogsService logsService; + + /** + * 日志查询页面. + * + * @param request 查询请求 + * @param model session容器 + * @return /log/log.html + */ + @GetMapping("/") + public String list(PaginationBean request, Model model) { + setNavigateTitle(model, "/base/logs/"); + List list = logsService.list(request); + for (Logs logs : list) { + if ("LOGIN".equals(logs.getType())) { + logs.setTypeName("登录"); + } + if ("BIZ".equals(logs.getType())) { + logs.setTypeName("业务"); + } + if ("ERROR".equals(logs.getType())) { + logs.setTypeName("错误"); + } + } + Long total = logsService.count(request); + //设置分页信息 + setPaginationInfo(request, list, total, model); + return "system/log/list"; + } + + @GetMapping("/{id}") + public String view(@PathVariable("id") Integer id, Model model) { + model.addAttribute("logData", logsService.getById(id)); + return "system/log/general_detail"; + } +} diff --git a/manager-system/src/main/java/com/hshh/system/base/entity/Logs.java b/manager-system/src/main/java/com/hshh/system/base/entity/Logs.java new file mode 100644 index 0000000..c47f564 --- /dev/null +++ b/manager-system/src/main/java/com/hshh/system/base/entity/Logs.java @@ -0,0 +1,43 @@ +package com.hshh.system.base.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.hshh.system.common.bean.BaseBean; +import java.time.LocalDateTime; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 日志. + * + * @author liDongYu + * @since 2025-08-22 + */ +@EqualsAndHashCode(callSuper = true) +@TableName("s_logs") +@Data +public class Logs extends BaseBean { + + private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + + private String type; + + private String operator; + + private String ip; + + private String msg; + + private LocalDateTime createTime; + @TableField(exist = false) + private String typeName = ""; + private String url; + private String params; + private String errors; + private String httpMethod; +} diff --git a/manager-system/src/main/java/com/hshh/system/base/mapper/LogsMapper.java b/manager-system/src/main/java/com/hshh/system/base/mapper/LogsMapper.java new file mode 100644 index 0000000..2b0dae3 --- /dev/null +++ b/manager-system/src/main/java/com/hshh/system/base/mapper/LogsMapper.java @@ -0,0 +1,31 @@ +package com.hshh.system.base.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hshh.system.base.entity.Logs; +import com.hshh.system.common.bean.PaginationBean; +import java.util.List; + +/** + * 日志查询. + * + * @author liDongYu + * @since 2025-08-22 + */ +public interface LogsMapper extends BaseMapper { + + /** + * 查询列表. + * + * @param bean 查询请求 + * @return 结果列表 + */ + List list(PaginationBean bean); + + /** + * 总条数. + * + * @param bean 查询请求 + * @return 总数 + */ + Long count(PaginationBean bean); +} diff --git a/manager-system/src/main/java/com/hshh/system/base/service/LogsService.java b/manager-system/src/main/java/com/hshh/system/base/service/LogsService.java new file mode 100644 index 0000000..a35c5aa --- /dev/null +++ b/manager-system/src/main/java/com/hshh/system/base/service/LogsService.java @@ -0,0 +1,32 @@ +package com.hshh.system.base.service; + +import com.hshh.system.base.entity.Logs; +import com.baomidou.mybatisplus.extension.service.IService; +import com.hshh.system.common.bean.PaginationBean; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author liDongYu + * @since 2025-08-22 + */ +public interface LogsService extends IService { + /** + * 查询列表. + * + * @param bean 查询请求 + * @return 结果列表 + */ + List list(PaginationBean bean); + + /** + * 总条数. + * + * @param bean 查询请求 + * @return 总数 + */ + Long count(PaginationBean bean); +} diff --git a/manager-system/src/main/java/com/hshh/system/base/service/impl/LogsServiceImpl.java b/manager-system/src/main/java/com/hshh/system/base/service/impl/LogsServiceImpl.java new file mode 100644 index 0000000..5f099ce --- /dev/null +++ b/manager-system/src/main/java/com/hshh/system/base/service/impl/LogsServiceImpl.java @@ -0,0 +1,29 @@ +package com.hshh.system.base.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hshh.system.base.entity.Logs; +import com.hshh.system.base.mapper.LogsMapper; +import com.hshh.system.base.service.LogsService; +import com.hshh.system.common.bean.PaginationBean; +import java.util.List; +import org.springframework.stereotype.Service; + +/** + * 服务实现类. + * + * @author liDongYu + * @since 2025-08-22 + */ +@Service +public class LogsServiceImpl extends ServiceImpl implements LogsService { + + @Override + public List list(PaginationBean bean) { + return this.baseMapper.list(bean); + } + + @Override + public Long count(PaginationBean bean) { + return this.baseMapper.count(bean); + } +} diff --git a/manager-system/src/main/resources/mapper/LogsMapper.xml b/manager-system/src/main/resources/mapper/LogsMapper.xml new file mode 100644 index 0000000..15ade3f --- /dev/null +++ b/manager-system/src/main/resources/mapper/LogsMapper.xml @@ -0,0 +1,64 @@ + + + + + + + +