diff --git a/manager-admin/pom.xml b/manager-admin/pom.xml index a0564a5..73a4041 100644 --- a/manager-admin/pom.xml +++ b/manager-admin/pom.xml @@ -5,7 +5,7 @@ com.hshh manager - 1.0-SNAPSHOT + 1.0 manager-admin @@ -22,8 +22,8 @@ com.hshh - manager-system - 1.0-SNAPSHOT + system + org.springframework.boot @@ -32,4 +32,19 @@ true + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + diff --git a/manager-admin/src/main/demo.html b/manager-admin/src/main/demo.html index 50ef561..3148b76 100644 --- a/manager-admin/src/main/demo.html +++ b/manager-admin/src/main/demo.html @@ -1,189 +1,241 @@ -
-
+ + + + + AHP 两两比较矩阵(Tabler风格) + + + + + + +
+
+
- - - -
-
指标数据映射集设置
+

两两比较矩阵

+
+ 选择“行 相对 列”的重要性(1=同等,3/5/7/9=逐级更重要) +
+
- - -
-
-
1. 选择指标(根指标)
-
-
-
-
- -
-
- -
-
-
切换根指标会刷新下面的“子指标映射表”。
-
+
+ + +
- -
-
-
2. 上传 CSV 文件
-
-
- -
已解析表头(模拟 50 列)
-
-
+
+ + + + CR: --
- - -
-
-
3. 子指标映射设置
-
-
- - -
-
-
- -
-
- - - - - - - - - - - -
#子指标名称来源表单字段CSV 表头
-
-
-
- -
+
+
- - - - - - - + + + + diff --git a/manager-admin/src/main/java/com/hshh/Application.java b/manager-admin/src/main/java/com/hshh/Application.java index 38e59f2..16e1eb9 100644 --- a/manager-admin/src/main/java/com/hshh/Application.java +++ b/manager-admin/src/main/java/com/hshh/Application.java @@ -10,9 +10,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @author LiDongYU * @since 2025/7/16 */ + @SpringBootApplication -@MapperScan({"com.hshh.system.**.mapper", "com.hshh.model.**.mapper", - "com.hshh.indicator.**.mapper"}) +@MapperScan({"com.hshh.**.mapper"}) public class Application { /** diff --git a/manager-admin/src/main/java/com/hshh/data/controller/TestController.java b/manager-admin/src/main/java/com/hshh/data/controller/TestController.java new file mode 100644 index 0000000..cc4210c --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/data/controller/TestController.java @@ -0,0 +1,14 @@ +package com.hshh.data.controller; + +/** + * [类的简要说明] + *

+ * [详细描述,可选] + *

+ * + * @author LiDongYU + * @since 2025/7/22 + */ +public class TestController { + +} 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 new file mode 100644 index 0000000..83f18a4 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/controller/EvaluationProjectController.java @@ -0,0 +1,140 @@ +package com.hshh.evaluation.controller; + +import com.hshh.evaluation.entity.EvaluationProject; +import com.hshh.evaluation.service.EvaluationProjectService; +import com.hshh.indicator.entity.Indicator; +import com.hshh.indicator.service.IndicatorService; +import com.hshh.system.common.bean.BaseController; +import com.hshh.system.common.bean.JsTree; +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.time.LocalDateTime; +import java.util.List; +import javax.annotation.Resource; +import javax.validation.Valid; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 评估工程. + * + * @author liDongYu + * @since 2025-08-11 + */ +@Controller +@RequestMapping("/evaluation/project") +public class EvaluationProjectController extends BaseController { + + @Resource + private EvaluationProjectService evaluationProjectService; + @Resource + private IndicatorService indicatorService; + + /** + * 默认页. + * + * @return evaluation/list.html + */ + @GetMapping("/") + @Operation(summary = "评价工程首页", description = "导航到评价工程首页") + public String list(PaginationBean request, Model model) { + setNavigateTitle(model, "/evaluation/project/"); + List list = evaluationProjectService.list(request); + Long total = evaluationProjectService.count(request); + //设置分页信息 + setPaginationInfo(request, list, total, model); + return "evaluation/list"; + } + + /** + * 导航到增加页面. + * + * @param model session容器 + * @return evaluation/add.html + */ + @GetMapping("/add") + public String add(Model model) { + List rootList = indicatorService.queryRootList(); + model.addAttribute("rootList", rootList); + return "evaluation/add"; + } + + /** + * 保存评估工程. + * + * @param project 评估工程数据 + * @param bindingResult 绑定的错误信息 + * @return 操作结果 + */ + @ResponseBody + @PostMapping("/save") + public OperateResult save(@Valid @RequestBody EvaluationProject project, + BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return errorsInputHandle(bindingResult); + } + List projectList = evaluationProjectService.queryListByName( + project.getProjectName()); + if (project.getId() == null) { + if (!projectList.isEmpty()) { + return OperateResult.error(null, ErrorMessage.NAME_OR_CODE_EXIT.getMessage(), + ErrorCode.BUSINESS_ERROR.getCode()); + } + project.setCreateDate(LocalDateTime.now()); + evaluationProjectService.save(project); + } else { + if (!projectList.isEmpty()) { + if (!project.getId().equals(projectList.get(0).getId())) { + return OperateResult.error(null, ErrorMessage.NAME_OR_CODE_EXIT.getMessage(), + ErrorCode.BUSINESS_ERROR.getCode()); + } + evaluationProjectService.updateById(project); + } + } + return OperateResult.success(); + } + + /** + * 开始评估页面. + * + * @return 开始评估页面 + */ + @GetMapping("/startEvaluation/{id}") + public String startEvaluation(@PathVariable("id") Integer projectId, Model model) { + + EvaluationProject project = evaluationProjectService.getById(projectId); + + List children = indicatorService.queryChildren(project.getIndicatorTopId()); + model.addAttribute("children", children); + return "evaluation/start_weight_evaluation"; + } + + /** + * 获取指标树. + * + * @param projectId 项目ID + * @return 指标树 + */ + @GetMapping("/metricTree/{id}") + @ResponseBody + public OperateResult> metricTree(@PathVariable("id") Integer projectId) { + EvaluationProject project = evaluationProjectService.getById(projectId); + if (project == null) { + return OperateResult.error(null, ErrorMessage.ID_NOT_EXIT.getMessage(), + ErrorCode.BUSINESS_ERROR.getCode()); + } + + return OperateResult.success(indicatorService.metricTree(project.getIndicatorTopId()) + ); + } +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationProject.java b/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationProject.java new file mode 100644 index 0000000..a7ce6c1 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/entity/EvaluationProject.java @@ -0,0 +1,44 @@ +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 javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 工程服务类. + * + * @author liDongYu + * @since 2025-08-11 + */ +@EqualsAndHashCode(callSuper = true) +@TableName("m_data_evaluation_project") +@Data +public class EvaluationProject extends BaseBean { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @NotBlank(message = "工程名称不能为空") + @Size(max = 50, message = "名称不能超过50字符") + private String projectName; + + @Size(max = 255, message = "备注不能超过255字符") + private String projectMemo; + + + private Integer indicatorTopId; + + @TableField(exist = false) + private String indicatorTopName; + + private LocalDateTime createDate; +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationProjectMapper.java b/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationProjectMapper.java new file mode 100644 index 0000000..abdbf2e --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/mapper/EvaluationProjectMapper.java @@ -0,0 +1,31 @@ +package com.hshh.evaluation.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hshh.evaluation.entity.EvaluationProject; +import com.hshh.system.common.bean.PaginationBean; +import java.util.List; + +/** + * Mapper 接口. + * + * @author liDongYu + * @since 2025-08-11 + */ +public interface EvaluationProjectMapper extends BaseMapper { + + /** + * 获取查询你结果列表. + * + * @param paginationBean 查询参数 + * @return 结果列表 + */ + List list(PaginationBean paginationBean); + + /** + * 总条数. + * + * @param paginationBean 查询参数 + * @return 总条数 + */ + Long count(PaginationBean paginationBean); +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationProjectService.java b/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationProjectService.java new file mode 100644 index 0000000..dbaf578 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/service/EvaluationProjectService.java @@ -0,0 +1,39 @@ +package com.hshh.evaluation.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hshh.evaluation.entity.EvaluationProject; +import com.hshh.system.common.bean.PaginationBean; +import java.util.List; + +/** + * 评价工程服务服务类. + * + * @author liDongYu + * @since 2025-08-11 + */ +public interface EvaluationProjectService extends IService { + + /** + * 获取查询你结果列表. + * + * @param paginationBean 查询参数 + * @return 结果列表 + */ + List list(PaginationBean paginationBean); + + /** + * 总条数. + * + * @param paginationBean 查询参数 + * @return 总条数 + */ + Long count(PaginationBean paginationBean); + + /** + * 按名称查询. + * + * @param name 工程名称 + * @return 查询结果 + */ + List queryListByName(String name); +} diff --git a/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationProjectServiceImpl.java b/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationProjectServiceImpl.java new file mode 100644 index 0000000..db1e801 --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/evaluation/service/impl/EvaluationProjectServiceImpl.java @@ -0,0 +1,40 @@ +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.EvaluationProject; +import com.hshh.evaluation.mapper.EvaluationProjectMapper; +import com.hshh.evaluation.service.EvaluationProjectService; +import com.hshh.system.common.bean.PaginationBean; +import java.util.List; +import org.springframework.stereotype.Service; + +/** + * 服务实现类. + * + * @author liDongYu + * @since 2025-08-11 + */ +@Service +public class EvaluationProjectServiceImpl extends + ServiceImpl implements + EvaluationProjectService { + + @Override + public List list(PaginationBean paginationBean) { + return this.baseMapper.list(paginationBean); + } + + @Override + public Long count(PaginationBean paginationBean) { + return this.baseMapper.count(paginationBean); + } + + @Override + public List queryListByName(String name) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("project_name", name); + return this.list(queryWrapper); + } + +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/controller/EvaluationController.java b/manager-admin/src/main/java/com/hshh/indicator/controller/EvaluationController.java new file mode 100644 index 0000000..3dd172c --- /dev/null +++ b/manager-admin/src/main/java/com/hshh/indicator/controller/EvaluationController.java @@ -0,0 +1,157 @@ +package com.hshh.indicator.controller; + +import com.hshh.indicator.entity.Indicator; +import com.hshh.indicator.entity.IndicatorEvalItem; +import com.hshh.indicator.service.IndicatorEvalItemService; +import com.hshh.indicator.service.IndicatorService; +import com.hshh.system.common.bean.BaseController; +import com.hshh.system.common.bean.OperateResult; +import com.hshh.system.common.enums.ErrorCode; +import com.hshh.system.common.enums.ErrorMessage; +import io.swagger.v3.oas.annotations.Operation; +import java.util.List; +import javax.annotation.Resource; +import javax.validation.Valid; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 评价集处理类. + * + * @author LiDongYU + * @since 2025/7/22 + */ +@Controller +@RequestMapping("/evaluation") +public class EvaluationController extends BaseController { + + /** + * 指标服务类. 查询所有指标列表 + */ + @Resource + private IndicatorService indicatorService; + /** + * 评价服务类. + */ + @Resource + private IndicatorEvalItemService indicatorEvalItemService; + + /** + * 导航到评价集设置页面. + * + * @return indicator/evaluation_list.html + */ + @GetMapping("/evaluationList") + public String evaluationList(Integer topIndicatorId, Integer indicatorId, Model model) { + setNavigateTitle(model, "/indicator/evaluationList"); + List rootList = indicatorService.queryRootList(); + if (rootList != null && !rootList.isEmpty()) { + if (topIndicatorId != null) { + for (Indicator indicator : rootList) { + if (indicator.getId().equals(topIndicatorId)) { + indicator.setChecked(true); + } + } + + } else { + topIndicatorId = rootList.get(0).getId(); + rootList.get(0).setChecked(true); + + } + } + //查询所有没有孩子的子节点 + List indicatorListWithoutChildren = indicatorService.selectNoChildByTopId( + topIndicatorId); + if (!indicatorListWithoutChildren.isEmpty()) { + if (indicatorId != null) { + for (Indicator indicator : indicatorListWithoutChildren) { + if (indicator.getId().equals(indicatorId)) { + indicator.setChecked(true); + } + } + } else { + indicatorListWithoutChildren.get(0).setChecked(true); + + } + } + //查询子指标的评价集 + List evaluationList = indicatorEvalItemService.queryListByIndicatorId( + indicatorId == null ? (indicatorListWithoutChildren.isEmpty() ? 0 + : indicatorListWithoutChildren.get(0).getId()) : indicatorId); + model.addAttribute("evaluationList", evaluationList); + model.addAttribute("rootList", rootList); + model.addAttribute("indicatorListWithoutChildren", indicatorListWithoutChildren); + return "indicator/evaluation_list"; + } + + /** + * 导航到评价集增加页面. + * + * @return indicator/add_evaluation.html + */ + @RequestMapping("/evaluationAdd") + @Operation(summary = "导航到评价集增加页面", description = "导航到评价集增加页面") + public String evaluationAdd() { + return "indicator/add_evaluation"; + } + + /** + * 保存评价集. + * + * @param item 评价集数据 + * @param bindingResult 字段错误信息 + * @return 操作结果 + */ + @PostMapping("/save") + @ResponseBody + public OperateResult save(@Valid @RequestBody IndicatorEvalItem item, + BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return errorsInputHandle(bindingResult); + } + indicatorEvalItemService.saveOrUpdate(item); + return OperateResult.success(); + } + + /** + * 根据id删除评价. + * + * @param id 要删除的id + * @return 操作结果 + */ + @GetMapping("/remove/{id}") + @ResponseBody + public OperateResult remove(@PathVariable("id") Integer id) { + IndicatorEvalItem evaluation = indicatorEvalItemService.getById(id); + if (evaluation == null) { + return OperateResult.error(null, ErrorMessage.ID_NOT_EXIT.getMessage(), + ErrorCode.BUSINESS_ERROR.getCode()); + } + indicatorEvalItemService.removeById(id); + return OperateResult.success(); + } + + /** + * 根据ID查询评价信息. + * + * @param id 评价ID + * @return id对应的评价 + */ + @GetMapping("/{id}") + @ResponseBody + public OperateResult view(@PathVariable("id") Integer id) { + IndicatorEvalItem evaluation = indicatorEvalItemService.getById(id); + if (evaluation == null) { + return OperateResult.error(null, ErrorMessage.ID_NOT_EXIT.getMessage(), + ErrorCode.BUSINESS_ERROR.getCode()); + } + return OperateResult.success(evaluation, ErrorMessage.SUCCESS.getMessage()); + } +} diff --git a/manager-admin/src/main/java/com/hshh/indicator/controller/IndicatorController.java b/manager-admin/src/main/java/com/hshh/indicator/controller/IndicatorController.java index 6d9b4ba..7a2263c 100644 --- a/manager-admin/src/main/java/com/hshh/indicator/controller/IndicatorController.java +++ b/manager-admin/src/main/java/com/hshh/indicator/controller/IndicatorController.java @@ -219,60 +219,6 @@ public class IndicatorController extends BaseController { } - /** - * 导航到评价集设置页面. - * - * @return indicator/evaluation_list.html - */ - @GetMapping("/evaluationList") - public String evaluationList(Integer topIndicatorId, Integer indicatorId, Model model) { - setNavigateTitle(model, "/indicator/evaluationList"); - List rootList = indicatorService.queryRootList(); - if (rootList != null && !rootList.isEmpty()) { - if (topIndicatorId != null) { - for (Indicator indicator : rootList) { - if (indicator.getId().equals(topIndicatorId)) { - indicator.setChecked(true); - } - } - - } else { - topIndicatorId = rootList.get(0).getId(); - rootList.get(0).setChecked(true); - - } - } - //查询所有没有孩子的子节点 - List indicatorListWithoutChildren = indicatorService.selectNoChildByTopId( - topIndicatorId); - if (!indicatorListWithoutChildren.isEmpty()) { - if (indicatorId != null) { - for (Indicator indicator : indicatorListWithoutChildren) { - if (indicator.getId().equals(indicatorId)) { - indicator.setChecked(true); - } - } - } else { - indicatorListWithoutChildren.get(0).setChecked(true); - - } - } - - model.addAttribute("rootList", rootList); - model.addAttribute("indicatorListWithoutChildren", indicatorListWithoutChildren); - return "indicator/evaluation_list"; - } - - /** - * 导航到评价集增加页面. - * - * @return indicator/add_evaluation.html - */ - @RequestMapping("/evaluationAdd") - @Operation(summary = "导航到评价集增加页面", description = "导航到评价集增加页面") - public String evaluationAdd() { - return "indicator/add_evaluation"; - } /** * 导航到mapper页面. diff --git a/manager-admin/src/main/java/com/hshh/indicator/entity/Indicator.java b/manager-admin/src/main/java/com/hshh/indicator/entity/Indicator.java index 2b0401f..f65ce5e 100644 --- a/manager-admin/src/main/java/com/hshh/indicator/entity/Indicator.java +++ b/manager-admin/src/main/java/com/hshh/indicator/entity/Indicator.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.hshh.system.common.bean.CheckedBean; -import java.io.Serializable; import java.util.List; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @@ -42,6 +41,9 @@ public class Indicator extends CheckedBean { private Integer sortOrder; + public String getTitle() { + return this.name; + } } diff --git a/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorBottomCsvMapper.java b/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorBottomCsvMapper.java index 0ad46b3..886f65a 100644 --- a/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorBottomCsvMapper.java +++ b/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorBottomCsvMapper.java @@ -1,5 +1,7 @@ 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; @@ -16,7 +18,7 @@ import java.io.Serializable; public class IndicatorBottomCsvMapper implements Serializable { private static final long serialVersionUID = 1L; - + @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorEvalItem.java b/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorEvalItem.java index 5316ac9..c3b4cf7 100644 --- a/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorEvalItem.java +++ b/manager-admin/src/main/java/com/hshh/indicator/entity/IndicatorEvalItem.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; +import lombok.Data; /** *

@@ -16,7 +17,7 @@ import javax.validation.constraints.Size; * @since 2025-08-04 */ @TableName("m_data_indicator_eval_item") - +@Data public class IndicatorEvalItem implements Serializable { private static final long serialVersionUID = 1L; @@ -52,90 +53,5 @@ public class IndicatorEvalItem implements Serializable { @Size(max = 10, message = "值不能超过10字符") private String maxValue; - public Integer getId() { - return id; - } - public void setId(Integer id) { - this.id = id; - } - - public Integer getIndicatorTopId() { - return indicatorTopId; - } - - public void setIndicatorTopId(Integer indicatorTopId) { - this.indicatorTopId = indicatorTopId; - } - - public Integer getIndicatorId() { - return indicatorId; - } - - public void setIndicatorId(Integer indicatorId) { - this.indicatorId = indicatorId; - } - - public Integer getSortOrder() { - return sortOrder; - } - - public void setSortOrder(Integer sortOrder) { - this.sortOrder = sortOrder; - } - - public String getEvaluationName() { - return evaluationName; - } - - public void setEvaluationName(String evaluationName) { - this.evaluationName = evaluationName; - } - - public String getMinSymbol() { - return minSymbol; - } - - public void setMinSymbol(String minSymbol) { - this.minSymbol = minSymbol; - } - - public String getMinValue() { - return minValue; - } - - public void setMinValue(String minValue) { - this.minValue = minValue; - } - - public String getMaxSymbol() { - return maxSymbol; - } - - public void setMaxSymbol(String maxSymbol) { - this.maxSymbol = maxSymbol; - } - - public String getMaxValue() { - return maxValue; - } - - public void setMaxValue(String maxValue) { - this.maxValue = maxValue; - } - - @Override - public String toString() { - return "IndicatorEvalItem{" + - "id = " + id + - ", indicatorTopId = " + indicatorTopId + - ", indicatorId = " + indicatorId + - ", sortOrder = " + sortOrder + - ", evaluationName = " + evaluationName + - ", minSymbol = " + minSymbol + - ", minValue = " + minValue + - ", maxSymbol = " + maxSymbol + - ", maxValue = " + maxValue + - "}"; - } } diff --git a/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorEvalItemService.java b/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorEvalItemService.java index f234331..aec20e6 100644 --- a/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorEvalItemService.java +++ b/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorEvalItemService.java @@ -20,4 +20,12 @@ public interface IndicatorEvalItemService extends IService { * @return 记录 */ List queryListByNameAndIndicatorId(Integer indicatorId, String name); + + /** + * 根据子指标查询他的评价集. + * + * @param indicatorId 子指标 + * @return 评价集 + */ + List queryListByIndicatorId(Integer indicatorId); } diff --git a/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorService.java b/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorService.java index 75bdd7d..2f8ab14 100644 --- a/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorService.java +++ b/manager-admin/src/main/java/com/hshh/indicator/service/IndicatorService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.hshh.indicator.bean.IndicatorMapperBean; import com.hshh.indicator.entity.Indicator; import com.hshh.indicator.entity.IndicatorCsvColumn; +import com.hshh.system.common.bean.JsTree; import java.io.IOException; import java.util.List; import org.springframework.web.multipart.MultipartFile; @@ -74,4 +75,12 @@ public interface IndicatorService extends IService { * @param mapperBean 映射数据 */ void saveBottomMapper(IndicatorMapperBean mapperBean); + + /** + * 获取指定ID的树及所有的孩子,及孩子的孩子... + * + * @param topId 根指标ID + * @return 树数据 + */ + List metricTree(Integer topId); } diff --git a/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorEvalItemServiceImpl.java b/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorEvalItemServiceImpl.java index c527c31..4814a6d 100644 --- a/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorEvalItemServiceImpl.java +++ b/manager-admin/src/main/java/com/hshh/indicator/service/impl/IndicatorEvalItemServiceImpl.java @@ -16,14 +16,23 @@ import org.springframework.stereotype.Service; */ @Service public class IndicatorEvalItemServiceImpl extends - ServiceImpl implements - IndicatorEvalItemService { + ServiceImpl implements IndicatorEvalItemService { @Override public List queryListByNameAndIndicatorId(Integer indicatorId, String name) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("indicator_id", indicatorId); queryWrapper.eq("evaluation_name", name); + + return this.list(queryWrapper); + } + + @Override + public List queryListByIndicatorId(Integer indicatorId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("indicator_id", indicatorId); + queryWrapper.orderByAsc("sort_order", "id"); + return this.list(queryWrapper); } } 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 0bd135b..d99d7c7 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 @@ -11,6 +11,7 @@ import com.hshh.indicator.service.IndicatorBottomFormMapperService; import com.hshh.indicator.service.IndicatorCsvColumnService; import com.hshh.indicator.service.IndicatorCsvService; import com.hshh.indicator.service.IndicatorService; +import com.hshh.system.common.bean.JsTree; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; @@ -155,4 +156,13 @@ public class IndicatorServiceImpl extends ServiceImpl metricTree(Integer topId) { + Indicator top = getIndicator(topId); + List rootList = new ArrayList<>(); + rootList.add(top); + + return JsTree.getJsTree(rootList); + } } diff --git a/manager-admin/src/main/java/com/hshh/model/entity/FormFieldConfig.java b/manager-admin/src/main/java/com/hshh/model/entity/FormFieldConfig.java index c5c0343..0678886 100644 --- a/manager-admin/src/main/java/com/hshh/model/entity/FormFieldConfig.java +++ b/manager-admin/src/main/java/com/hshh/model/entity/FormFieldConfig.java @@ -21,7 +21,7 @@ import org.apache.commons.lang3.StringUtils; * @author liDongYu * @since 2025-07-31 */ -@TableName("m_data_form_field_config") +@TableName("m_data_model_field_config") @Data public class FormFieldConfig implements Serializable { diff --git a/manager-admin/src/main/java/com/hshh/model/entity/FormValue.java b/manager-admin/src/main/java/com/hshh/model/entity/FormValue.java index d1eb61e..2e49ee8 100644 --- a/manager-admin/src/main/java/com/hshh/model/entity/FormValue.java +++ b/manager-admin/src/main/java/com/hshh/model/entity/FormValue.java @@ -18,7 +18,7 @@ import lombok.Data; * @author liDongYu * @since 2025-08-01 */ -@TableName("m_data_form_value") +@TableName("m_data_model_field_value") @Data public class FormValue extends BaseBean { diff --git a/manager-admin/src/main/resources/mapper/EvaluationProjectMapper.xml b/manager-admin/src/main/resources/mapper/EvaluationProjectMapper.xml new file mode 100644 index 0000000..ec938b8 --- /dev/null +++ b/manager-admin/src/main/resources/mapper/EvaluationProjectMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + diff --git a/manager-admin/src/main/resources/mapper/FormValueMapper.xml b/manager-admin/src/main/resources/mapper/FormValueMapper.xml index 74a306f..71c326e 100644 --- a/manager-admin/src/main/resources/mapper/FormValueMapper.xml +++ b/manager-admin/src/main/resources/mapper/FormValueMapper.xml @@ -7,7 +7,7 @@ @rownum := @rownum + 1 AS seq, t.* FROM ( - SELECT * FROM m_data_form_value + SELECT * FROM m_data_model_field_value and model_define_id = #{id} @@ -27,7 +27,7 @@ SELECT ROW_NUMBER() OVER (ORDER BY id ASC) AS seq, a.* - FROM m_data_form_value a + FROM m_data_model_field_value a and model_define_id = #{id} @@ -40,7 +40,7 @@ WHERE t.seq > #{start} AND t.seq <= (#{start} + #{pageSize}) + +

+ + +
+
+
+ + +
+
+ + +
+
+ + \ No newline at end of file diff --git a/manager-admin/src/main/resources/templates/evaluation/list.html b/manager-admin/src/main/resources/templates/evaluation/list.html new file mode 100644 index 0000000..91f6227 --- /dev/null +++ b/manager-admin/src/main/resources/templates/evaluation/list.html @@ -0,0 +1,173 @@ + +
+
+ +
+
+ +
+
+
+

评估工程列表

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
No. + + + + + + 工程名称指标名称创建时间
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ \ No newline at end of file diff --git a/manager-admin/src/main/resources/templates/evaluation/start_weight_evaluation.html b/manager-admin/src/main/resources/templates/evaluation/start_weight_evaluation.html new file mode 100644 index 0000000..75cb824 --- /dev/null +++ b/manager-admin/src/main/resources/templates/evaluation/start_weight_evaluation.html @@ -0,0 +1,81 @@ +
+
+
    +
  • 设置/加载 权重
  • +
  • 选择/上传 数据集
  • +
  • 执行评估
  • +
  • 本次结果
  • +
+
+
+
+
+ +
+
+
+
+
权重设置区
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ +
+
+
+ +
+
+
+ + + diff --git a/manager-admin/src/main/resources/templates/home.html b/manager-admin/src/main/resources/templates/home.html index 3ddad23..474faf5 100644 --- a/manager-admin/src/main/resources/templates/home.html +++ b/manager-admin/src/main/resources/templates/home.html @@ -90,6 +90,97 @@ .alert { margin-bottom: 1rem; } + :root { + --col-index-w: 48px; /* 首列宽度(与 th/td 一致) */ + } + + /* CSV 预览区域 */ + .csv-heads { + max-height: 300px; + overflow: auto; + } + + /* 滚动容器 */ + .map-scroller { + max-height: 65vh; + overflow: auto; + border-radius: .5rem; + background: #fff; + } + + /* 表格与单元格 */ + .map-table { + table-layout: fixed; + width: max-content; + min-width: 1200px; + border-collapse: separate; + border-spacing: 0; + } + + .map-table th, .map-table td { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding-top: .55rem; + padding-bottom: .55rem; + } + + /* ===== 表头:粘顶 + 粘左(前两列) —— 层级最高 ===== */ + .sticky-header { + position: sticky; + top: 0; + z-index: 10; + background: #fff; + border-bottom: 1px solid #e9ecef; + box-shadow: 0 2px 0 rgba(0, 0, 0, .04); + font-weight: bold; + } + + .sticky-header.sticky-col-1 { + left: 0; + z-index: 11; + } + + .sticky-header.sticky-col-2 { + left: var(--col-index-w); + z-index: 11; + } + + /* ===== 表体:粘左(前两列) —— 层级低于表头 ===== */ + .sticky-body-col-1 { + position: sticky; + left: 0; + z-index: 4; + background: #fff; + } + + .sticky-body-col-2 { + position: sticky; + left: var(--col-index-w); + z-index: 4; + background: #fff; + box-shadow: 2px 0 0 rgba(0, 0, 0, .06); /* 分隔线效果 */ + } + + /* 自动编号:tbody 开始计数,tr 自增;序号/名称自动输出数值 */ + .autonum { + counter-reset: row; + } + + .autonum tr { + counter-increment: row; + } + + .autonum .col-index::before { + content: counter(row); + } + + .autonum .col-name::after { + + } + .map-table th { + font-weight: bold !important; + } @@ -174,6 +265,7 @@ // htmx等局部刷新后,确保DOM插入再init document.body.addEventListener('htmx:afterSwap', function (evt) { + if (evt.detail.target.id === 'main-content') { if (evt.detail.target.querySelector('[data-page="menu-list"]')) { setTimeout(initMenu, 0); // 保证DOM已插入 @@ -193,6 +285,7 @@ hideContextMenu && hideContextMenu(); }); } + //指标映射 if(evt.detail.target.querySelector('[data-page="indicator_mapper"]')){ if(typeof csvListen === 'function'){ diff --git a/manager-admin/src/main/resources/templates/indicator/add_evaluation.html b/manager-admin/src/main/resources/templates/indicator/add_evaluation.html index 0d5f0ea..09efa42 100644 --- a/manager-admin/src/main/resources/templates/indicator/add_evaluation.html +++ b/manager-admin/src/main/resources/templates/indicator/add_evaluation.html @@ -13,25 +13,39 @@
- - + + +
- +
- - + + +
- +
diff --git a/manager-admin/src/main/resources/templates/indicator/add_weight.html b/manager-admin/src/main/resources/templates/indicator/add_weight.html deleted file mode 100644 index de155ea..0000000 --- a/manager-admin/src/main/resources/templates/indicator/add_weight.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - - - - \ No newline at end of file diff --git a/manager-admin/src/main/resources/templates/indicator/evaluation_list.html b/manager-admin/src/main/resources/templates/indicator/evaluation_list.html index 0c27e69..4abf250 100644 --- a/manager-admin/src/main/resources/templates/indicator/evaluation_list.html +++ b/manager-admin/src/main/resources/templates/indicator/evaluation_list.html @@ -29,7 +29,8 @@
-
说明: 切换不同的指标可以设置当前指标子项的评价标准
+
说明: 切换不同的指标可以设置当前指标子项的评价标准 +
@@ -45,7 +46,7 @@ @@ -57,6 +58,7 @@
+ @@ -93,9 +109,10 @@
+
diff --git a/manager-admin/src/main/resources/templates/indicator/indicator_mapper.html b/manager-admin/src/main/resources/templates/indicator/indicator_mapper.html index 9290a84..37ed766 100644 --- a/manager-admin/src/main/resources/templates/indicator/indicator_mapper.html +++ b/manager-admin/src/main/resources/templates/indicator/indicator_mapper.html @@ -50,12 +50,12 @@
-
2. 选择form表单
+
2. 选择设施
- +