From 92fb41f41981b3aa7a77ca4ed11e45670166529f 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: Sun, 10 Aug 2025 15:30:13 +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 --- manager-admin/src/main/demo.html | 421 +++++++----------- .../hshh/data/controller/DataController.java | 1 + .../controller/IndicatorController.java | 204 ++++++++- .../IndicatorEvalItemController.java | 18 - .../com/hshh/indicator/entity/Indicator.java | 8 +- .../indicator/service/IndicatorService.java | 10 + .../service/impl/IndicatorServiceImpl.java | 17 + .../model/controller/FormValueController.java | 18 - .../controller/ModelDefineController.java | 1 + .../com/hshh/model/entity/ModelDefine.java | 6 +- .../impl/FormFieldConfigServiceImpl.java | 1 + .../main/resources/templates/data/list.html | 9 +- .../resources/templates/fragments/dialog.html | 12 + .../templates/indicator/add_indicator.html | 8 +- .../templates/indicator/evaluation_list.html | 14 +- .../resources/templates/indicator/list.html | 9 +- .../resources/templates/indicator/mapper.html | 246 ++++++++++ .../main/resources/templates/model/list.html | 9 +- .../resources/templates/system/dict/list.html | 9 +- .../resources/templates/system/menu/list.html | 9 +- .../templates/system/permission/list.html | 9 +- .../resources/templates/system/role/list.html | 9 +- .../resources/templates/system/user/list.html | 9 +- .../base/controller/DictItemController.java | 2 + .../base/controller/DictTypeController.java | 3 + .../base/controller/MenuController.java | 5 +- .../base/controller/PermissionController.java | 1 + .../base/controller/RoleController.java | 1 + .../controller/TableRelationsController.java | 18 - .../base/controller/UserController.java | 1 + .../system/base/service/MenusService.java | 8 + .../base/service/impl/MenusServiceImpl.java | 35 ++ .../com/hshh/system/common/bean/BaseBean.java | 2 +- .../system/common/bean/BaseController.java | 13 + .../hshh/system/common/bean/CheckedBean.java | 18 + .../src/main/java/CodeGenerator.java | 2 +- 36 files changed, 753 insertions(+), 413 deletions(-) delete mode 100644 manager-admin/src/main/java/com/hshh/indicator/controller/IndicatorEvalItemController.java delete mode 100644 manager-admin/src/main/java/com/hshh/model/controller/FormValueController.java create mode 100644 manager-admin/src/main/resources/templates/indicator/mapper.html delete mode 100644 manager-system/src/main/java/com/hshh/system/base/controller/TableRelationsController.java create mode 100644 manager-system/src/main/java/com/hshh/system/common/bean/CheckedBean.java diff --git a/manager-admin/src/main/demo.html b/manager-admin/src/main/demo.html index beb253f..50ef561 100644 --- a/manager-admin/src/main/demo.html +++ b/manager-admin/src/main/demo.html @@ -1,274 +1,189 @@ - - - - -
+
- + + -
-
+ +
+
+
+
指标数据映射集设置
+
+
+ + +
+
+
1. 选择指标(根指标)
+
+
+
+
+ +
+
+ +
+
+
切换根指标会刷新下面的“子指标映射表”。
+
+
+ + +
+
+
2. 上传 CSV 文件
+
+
+ +
已解析表头(模拟 50 列)
+
+
+
+ + +
+
+
3. 子指标映射设置
+
+
+ + +
+
+
+ +
+
+ + + + + + + + + + + +
#子指标名称来源表单字段CSV 表头
+
+
+
+ +
+
- -
+ + + + + + \ No newline at end of file + // 根指标选择(下拉) + document.getElementById('rootSelect').addEventListener('change', (e)=>{ + renderTable(e.target.value); + }); + + // 初始 + renderTable('quality'); + diff --git a/manager-admin/src/main/java/com/hshh/data/controller/DataController.java b/manager-admin/src/main/java/com/hshh/data/controller/DataController.java index c14c09e..af7d5ad 100644 --- a/manager-admin/src/main/java/com/hshh/data/controller/DataController.java +++ b/manager-admin/src/main/java/com/hshh/data/controller/DataController.java @@ -73,6 +73,7 @@ public class DataController extends BaseController { @GetMapping("/list") @Operation(summary = "导航到数据管理页面", description = "导航到数据管理页面") public String index(PaginationBean request, Model model) { + setNavigateTitle(model, "/data/list"); List modelDefineList = modelDefineService.list(); //查询所有数据模型列表 modelDefineList.sort(Comparator.comparing(ModelDefine::getSortOrder)); //对模型数据列表排序 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 d797bae..1a3c4ea 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 @@ -1,19 +1,35 @@ 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.entity.IndicatorBottomCsvMapper; +import com.hshh.indicator.entity.IndicatorBottomFormMapper; +import com.hshh.indicator.entity.IndicatorCsv; +import com.hshh.indicator.entity.IndicatorFormMapper; +import com.hshh.indicator.service.IndicatorBottomCsvMapperService; +import com.hshh.indicator.service.IndicatorBottomFormMapperService; +import com.hshh.indicator.service.IndicatorCsvColumnService; +import com.hshh.indicator.service.IndicatorCsvService; +import com.hshh.indicator.service.IndicatorFromMapperService; import com.hshh.indicator.service.IndicatorService; +import com.hshh.model.entity.FormFieldConfig; import com.hshh.model.entity.ModelDefine; +import com.hshh.model.service.FormFieldConfigService; import com.hshh.model.service.ModelDefineService; import com.hshh.system.common.bean.BaseController; +import com.hshh.system.common.bean.CheckedBean; 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 io.swagger.v3.oas.annotations.tags.Tag; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -23,7 +39,9 @@ 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.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; /** * 指标接口服务接口. @@ -37,20 +55,46 @@ import org.springframework.web.bind.annotation.ResponseBody; public class IndicatorController extends BaseController { /** - * 指标服务类. + * 指标服务类. 查询所有指标列表 */ @Resource private IndicatorService indicatorService; /** - * 模型定义服务类. + * 模型定义服务类. 查询所有表单 */ @Resource private ModelDefineService modelDefineService; /** - * 评价集服务类. + * 顶级指标对应的form和csv记录服务. */ @Resource - private IndicatorEvalItemService indicatorEvalItemService; + private IndicatorFromMapperService indicatorTopMapperService; + /** + * 表单中字段服务类. + */ + @Resource + private FormFieldConfigService formFieldConfigService; + /** + * 顶级指标和csv的对应服务类. + */ + @Resource + private IndicatorCsvService indicatorCsvService; + + /** + * 指标csv列服务. + */ + @Resource + private IndicatorCsvColumnService indicatorCsvColumnService; + /** + * 底部指标和表单的的对应服务类. + */ + @Resource + private IndicatorBottomFormMapperService bottomFormMapperService; + /** + * 底部指标和csv的对应关系. + */ + @Resource + private IndicatorBottomCsvMapperService bottomCsvMapperService; /** * 导航到列表页面. 获取所有的root指标,显示到页面左侧. @@ -61,6 +105,7 @@ public class IndicatorController extends BaseController { */ @RequestMapping("/list") public String list(Model model, Indicator indicator) { + setNavigateTitle(model, "/indicator/list"); List rootList = indicatorService.queryRootList(); if (rootList != null && !rootList.isEmpty()) { if (indicator.getId() != null) { @@ -179,6 +224,7 @@ public class IndicatorController extends BaseController { */ @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) { @@ -227,16 +273,142 @@ public class IndicatorController extends BaseController { } /** - * 保存评价集. + * 导航到mapper页面. 1. 顶级指标放入session . 2. 底层指标放入session容器. 3. form表单字段放入session容器 . + * 4.form表单列表放入session容器 5. csv对应session容器 6. csv字段session容器 7. 底部指标对应form字段session容器 8. + * 底部指标对应csv列session容器. * - * @param item - * @param bindingResult - * @return + * @param model session容器 + * @param formId 表单ID + * @param csvId csvID + * @param indicatorTopId 指标顶级ID + * @return /indicator/mapper.html */ -// @PostMapping("/evalItem/save") -// @ResponseBody -// public OperateResult saveEval(@Valid @RequestBody IndicatorEvalItem item, -// BindingResult bindingResult) { -// -// } + + @GetMapping("/mapper") + public String mapper(Model model, final Integer indicatorTopId, final Integer formId, + final Integer csvId) { + + setNavigateTitle(model, "/indicator/mapper"); //设置导航 + + List rootList = indicatorService.queryRootList(); //查询所有根指标 + setChecked(rootList, indicatorTopId); //设置根指标的选中状态 + model.addAttribute("rootList", rootList); // 1. 顶级指标放入session容器 + model.addAttribute("childrenIndicator", + indicatorService.selectNoChildByTopId(indicatorTopId)); // 2. 底层指标放入session容器 + //处理form表单 + modelForm(model, indicatorTopId, formId); // 3. form表单字段放入session容器.4.form表单列表放入session容器 + //处理csv file + csvFile(model, indicatorTopId); // 5. csv对应session容器 6. csv字段session容器 + + //放入底部指标和form表单字段对应关系到容器 + List bottomList = bottomFormMapperService.queryListByIndicatorId( + indicatorTopId); + Map bottomFormMap = bottomList.stream() + .collect(Collectors.toMap(IndicatorBottomFormMapper::getFormFieldId, a -> a)); + model.addAttribute("bottomFormMap", bottomFormMap); // 7. 底部指标对应form字段session容器 + + //放入底部指标和csv列对应关系到容器 + List bottomCsvColumnList = bottomCsvMapperService.queryListByIndicatorTopId( + indicatorTopId); + Map bottomCsvColumnMap = bottomCsvColumnList.stream() + .collect(Collectors.toMap(IndicatorBottomCsvMapper::getCsvColumnId, a -> a)); + model.addAttribute("bottomCsvColumnMap", bottomCsvColumnMap); // 8.底部指标对应csv列session容器 + + return "/indicator/mapper"; + } + + private void modelForm(Model model, final Integer indicatorTopId, Integer formId) { + //表单相关 + List mapperList = indicatorTopMapperService.selectModelAndCsvNameByIndicator( + indicatorTopId); //查看form和顶指标映射关系 + //查询form表单字段 + if (formId != null) { + + model.addAttribute("formFieldList", + formFieldConfigService.getFormFieldConfigByModelId(formId));//3.form表单字段放入session容器 + } else if (!mapperList.isEmpty()) { + List formFieldList = formFieldConfigService.getFormFieldConfigByModelId( + mapperList.get(0).getIndicatorModelId()); + model.addAttribute("formFieldList", formFieldList); //3.form表单字段放入session容器 + } + List modelList = modelDefineService.list(); //查询所有form表单列表 + setChecked(modelList, mapperList.isEmpty() ? null + : (formId != null ? formId : mapperList.get(0).getIndicatorModelId())); //设置form表单列表的选中状态 + model.addAttribute("modelList", modelList); //4.所有form表单放入session容器 + } + + private void csvFile(Model model, final Integer id) { + IndicatorCsv csvMapper = indicatorCsvService.selectByIndicatorId(id); //5.csv对应放入session + model.addAttribute("csvMapper", csvMapper); + //查询csv列的列表 + model.addAttribute("csvColumns", + indicatorCsvColumnService.listByIdOrderByColumn(csvMapper == null ? 0 : csvMapper.getId())); + } + + /** + * 下载上一次的csv模板. + * + * @param id csv映射ID + * @param response 响应 + * @throws IOException 异常 + */ + @GetMapping("/download/{id}") + public void downloadFile(@PathVariable Integer id, HttpServletResponse response) + throws IOException { + IndicatorCsv csvFile = indicatorCsvService.getById(id); + + // 设置响应头 + response.setContentType("text/csv; charset=UTF-8"); + response.setHeader("Content-Disposition", + "attachment; filename=\"" + java.net.URLEncoder.encode(csvFile.getCsvName(), + StandardCharsets.UTF_8) + "\""); + + // 写入文件流 + try (OutputStream os = response.getOutputStream()) { + os.write(csvFile.getCsvData()); + os.flush(); + } + } + + /** + * 上传csv文件.记录顶级指标和文件及表单id的映射关系,记录在表m_data_indicator_top_mapper. + * + * @param file 文件 + * @param indicatorTopId 指标 + * @param formId modelID + * @return 操作结果 + */ + @PostMapping("/uploadCsvAndSetTopMapper") + public OperateResult uploadCsvAndSetTopMapper(@RequestParam("file") MultipartFile file, + Integer indicatorTopId, Integer formId) { + indicatorService.saveIndicatorTopCsvMapper(indicatorTopId, formId, file); + return OperateResult.success(); + } + + /** + * 保存指标和form表单ID的映射关系. + * + * @param indicatorTopId 指标顶级ID + * @param formId 表单ID + * @return 操作结果 + */ + @PostMapping("/indicatorFormMapper") + public OperateResult saveIndicatorFormMapper(Integer indicatorTopId, Integer formId) { + indicatorTopMapperService.saveFormMapper(indicatorTopId, formId); + return OperateResult.success(); + } + + private void setChecked(List list, Integer id) { + if (list != null && !list.isEmpty()) { + if (id == null || id.equals(0)) { + list.get(0).setChecked(true); + return; + } + for (T bean : list) { + if (bean.getId().equals(id)) { + bean.setChecked(true); + } + } + } + } } diff --git a/manager-admin/src/main/java/com/hshh/indicator/controller/IndicatorEvalItemController.java b/manager-admin/src/main/java/com/hshh/indicator/controller/IndicatorEvalItemController.java deleted file mode 100644 index 30f1217..0000000 --- a/manager-admin/src/main/java/com/hshh/indicator/controller/IndicatorEvalItemController.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.hshh.indicator.controller; - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.stereotype.Controller; - -/** - *

- * 指标规则表 前端控制器 - *

- * - * @author liDongYu - * @since 2025-08-04 - */ -@Controller -@RequestMapping("/indicator/indicatorEvalItem") -public class IndicatorEvalItemController { - -} 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 64dc7ac..2b0401f 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 @@ -4,6 +4,7 @@ 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.CheckedBean; import java.io.Serializable; import java.util.List; import javax.validation.constraints.NotBlank; @@ -20,7 +21,7 @@ import lombok.Data; */ @TableName("m_data_indicator") @Data -public class Indicator implements Serializable { +public class Indicator extends CheckedBean { private static final long serialVersionUID = 1L; @@ -39,9 +40,8 @@ public class Indicator implements Serializable { private Integer topId; //顶级父ID private Integer sortOrder; - @TableField(exist = false) - private boolean checked; - private Integer modelId; + + } 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 1116e97..9a6535a 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 @@ -3,6 +3,7 @@ package com.hshh.indicator.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hshh.indicator.entity.Indicator; import java.util.List; +import org.springframework.web.multipart.MultipartFile; /** * 指标表 服务类. @@ -53,4 +54,13 @@ public interface IndicatorService extends IService { * @return 指标集 */ List selectNoChildByTopId(Integer topId); + + /** + * 保存顶级映射关系;记录对应的表单ID和csv信息. + * + * @param topId 顶级指标ID + * @param modelId 表单ID + * @param file csv文件 + */ + void saveIndicatorTopCsvMapper(Integer topId, Integer modelId, MultipartFile file); } 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 2365ddc..e4cf4f4 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 @@ -10,6 +10,8 @@ import java.util.Map; import java.util.stream.Collectors; import javax.validation.constraints.NotNull; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; /** *

@@ -82,4 +84,19 @@ public class IndicatorServiceImpl extends ServiceImpl selectNoChildByTopId(Integer topId) { return this.baseMapper.selectNoChildByTopId(topId); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void saveIndicatorTopCsvMapper(Integer topId, Integer modelId, MultipartFile file) { + //删除表中m_data_indicator_csv原来topID对应记录 + + + //添加m_data_indicator_csv记录 + + //删除m_data_indicator_csv_column 原topID对应的记录 + + + //添加对应记录 + + } } diff --git a/manager-admin/src/main/java/com/hshh/model/controller/FormValueController.java b/manager-admin/src/main/java/com/hshh/model/controller/FormValueController.java deleted file mode 100644 index 3f10a13..0000000 --- a/manager-admin/src/main/java/com/hshh/model/controller/FormValueController.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.hshh.model.controller; - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.stereotype.Controller; - -/** - *

- * 动态表单实际对象记录表 前端控制器 - *

- * - * @author liDongYu - * @since 2025-08-01 - */ -@Controller -@RequestMapping("/model/formValue") -public class FormValueController { - -} diff --git a/manager-admin/src/main/java/com/hshh/model/controller/ModelDefineController.java b/manager-admin/src/main/java/com/hshh/model/controller/ModelDefineController.java index 88e895d..269d6a5 100644 --- a/manager-admin/src/main/java/com/hshh/model/controller/ModelDefineController.java +++ b/manager-admin/src/main/java/com/hshh/model/controller/ModelDefineController.java @@ -82,6 +82,7 @@ public class ModelDefineController extends BaseController { @Operation(summary = "导航到数据模型定义页面", description = "导航到数据模型定义页面") @GetMapping("/list") public String list(ModelDefine modelDefine, Model model) { + setNavigateTitle(model, "/model/list"); List modelList = modelDefineService.list(); List fieldList = new ArrayList<>(); if (modelList != null) { diff --git a/manager-admin/src/main/java/com/hshh/model/entity/ModelDefine.java b/manager-admin/src/main/java/com/hshh/model/entity/ModelDefine.java index ccaaaba..2f162aa 100644 --- a/manager-admin/src/main/java/com/hshh/model/entity/ModelDefine.java +++ b/manager-admin/src/main/java/com/hshh/model/entity/ModelDefine.java @@ -4,6 +4,7 @@ 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.CheckedBean; import java.io.Serializable; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; @@ -20,7 +21,7 @@ import lombok.Data; */ @TableName("m_data_model_define") @Data -public class ModelDefine implements Serializable { +public class ModelDefine extends CheckedBean { private static final long serialVersionUID = 1L; @@ -37,8 +38,7 @@ public class ModelDefine implements Serializable { private String modelName; - @TableField(exist = false) - private boolean checked; + private Integer sortOrder; /** * 每行显示几个字段. 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 8df4d85..0b5ec72 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 @@ -23,6 +23,7 @@ public class FormFieldConfigServiceImpl extends public List getFormFieldConfigByModelId(Integer modelId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("data_model_id", modelId); + queryWrapper.orderByAsc("sort_order"); return this.list(queryWrapper); } diff --git a/manager-admin/src/main/resources/templates/data/list.html b/manager-admin/src/main/resources/templates/data/list.html index 98c18ec..5386364 100644 --- a/manager-admin/src/main/resources/templates/data/list.html +++ b/manager-admin/src/main/resources/templates/data/list.html @@ -2,14 +2,7 @@
- +
diff --git a/manager-admin/src/main/resources/templates/fragments/dialog.html b/manager-admin/src/main/resources/templates/fragments/dialog.html index 25794d7..cd7ef93 100644 --- a/manager-admin/src/main/resources/templates/fragments/dialog.html +++ b/manager-admin/src/main/resources/templates/fragments/dialog.html @@ -184,4 +184,16 @@
+ diff --git a/manager-admin/src/main/resources/templates/indicator/add_indicator.html b/manager-admin/src/main/resources/templates/indicator/add_indicator.html index 5184c15..16aa86a 100644 --- a/manager-admin/src/main/resources/templates/indicator/add_indicator.html +++ b/manager-admin/src/main/resources/templates/indicator/add_indicator.html @@ -4,13 +4,7 @@ -
- - -
-
+
- +
@@ -35,13 +28,16 @@
+ +
说明: 切换不同的指标可以设置当前指标子项的评价标准
-

指标子集

+

[[${item.name}]]子集

diff --git a/manager-admin/src/main/resources/templates/indicator/list.html b/manager-admin/src/main/resources/templates/indicator/list.html index 77f966b..5495cc2 100644 --- a/manager-admin/src/main/resources/templates/indicator/list.html +++ b/manager-admin/src/main/resources/templates/indicator/list.html @@ -128,14 +128,7 @@
- +
diff --git a/manager-admin/src/main/resources/templates/indicator/mapper.html b/manager-admin/src/main/resources/templates/indicator/mapper.html new file mode 100644 index 0000000..2d45f0c --- /dev/null +++ b/manager-admin/src/main/resources/templates/indicator/mapper.html @@ -0,0 +1,246 @@ + +
+
+ + +
+ +
+
+
+
指标数据映射集设置
+ +
+ +
+ + +
+
+
1. 选择指标(根指标)
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
2. 选择form表单
+
+
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+
3. 上传 CSV 文件
+
+
+ + +
+ 上次上传文件: + +
+
+
+ + +
+
+
4. 子指标映射设置
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
#子指标名称表单字段CSV 表头
+
+
说明:选择子指标,对应表单字段或者CSV某列
+
+
+ +
+
+
+
+
+ + + + diff --git a/manager-admin/src/main/resources/templates/model/list.html b/manager-admin/src/main/resources/templates/model/list.html index 309143d..167719d 100644 --- a/manager-admin/src/main/resources/templates/model/list.html +++ b/manager-admin/src/main/resources/templates/model/list.html @@ -2,14 +2,7 @@
- +
diff --git a/manager-admin/src/main/resources/templates/system/dict/list.html b/manager-admin/src/main/resources/templates/system/dict/list.html index b3f6a04..99023e9 100644 --- a/manager-admin/src/main/resources/templates/system/dict/list.html +++ b/manager-admin/src/main/resources/templates/system/dict/list.html @@ -2,14 +2,7 @@
- +
diff --git a/manager-admin/src/main/resources/templates/system/menu/list.html b/manager-admin/src/main/resources/templates/system/menu/list.html index c279576..ad67f61 100644 --- a/manager-admin/src/main/resources/templates/system/menu/list.html +++ b/manager-admin/src/main/resources/templates/system/menu/list.html @@ -2,14 +2,7 @@
- +
diff --git a/manager-admin/src/main/resources/templates/system/permission/list.html b/manager-admin/src/main/resources/templates/system/permission/list.html index 16c6287..6a6767b 100644 --- a/manager-admin/src/main/resources/templates/system/permission/list.html +++ b/manager-admin/src/main/resources/templates/system/permission/list.html @@ -2,14 +2,7 @@
- +
diff --git a/manager-admin/src/main/resources/templates/system/role/list.html b/manager-admin/src/main/resources/templates/system/role/list.html index cdc5f3d..f03ded5 100644 --- a/manager-admin/src/main/resources/templates/system/role/list.html +++ b/manager-admin/src/main/resources/templates/system/role/list.html @@ -2,14 +2,7 @@
- +
diff --git a/manager-admin/src/main/resources/templates/system/user/list.html b/manager-admin/src/main/resources/templates/system/user/list.html index e823175..f97b1c2 100644 --- a/manager-admin/src/main/resources/templates/system/user/list.html +++ b/manager-admin/src/main/resources/templates/system/user/list.html @@ -2,14 +2,7 @@
- +
diff --git a/manager-system/src/main/java/com/hshh/system/base/controller/DictItemController.java b/manager-system/src/main/java/com/hshh/system/base/controller/DictItemController.java index dc054c5..6cdd9c5 100644 --- a/manager-system/src/main/java/com/hshh/system/base/controller/DictItemController.java +++ b/manager-system/src/main/java/com/hshh/system/base/controller/DictItemController.java @@ -14,6 +14,7 @@ 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; @@ -46,6 +47,7 @@ public class DictItemController extends BaseController { @Operation(summary = "获取字典条目增加页面内容", description = "用户点击新增字典条目时执行") @GetMapping("/add") public String add() { + return "system/dict/add_dict_item"; } diff --git a/manager-system/src/main/java/com/hshh/system/base/controller/DictTypeController.java b/manager-system/src/main/java/com/hshh/system/base/controller/DictTypeController.java index f8042b4..ead1cd9 100644 --- a/manager-system/src/main/java/com/hshh/system/base/controller/DictTypeController.java +++ b/manager-system/src/main/java/com/hshh/system/base/controller/DictTypeController.java @@ -58,6 +58,9 @@ public class DictTypeController extends BaseController { @GetMapping("/") @Operation(summary = "导航到列表页面", description = "用户点击菜单时,执行") public String index(Model model, DictType type) { + + setNavigateTitle(model, "/base/dict/"); + List dictList = dictTypeService.list(); dictList.sort(Comparator.comparingInt(DictType::getSortOrder)); diff --git a/manager-system/src/main/java/com/hshh/system/base/controller/MenuController.java b/manager-system/src/main/java/com/hshh/system/base/controller/MenuController.java index 563444b..e3f676c 100644 --- a/manager-system/src/main/java/com/hshh/system/base/controller/MenuController.java +++ b/manager-system/src/main/java/com/hshh/system/base/controller/MenuController.java @@ -19,6 +19,7 @@ import javax.validation.Valid; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.web.context.HttpSessionSecurityContextRepository; 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; @@ -53,7 +54,9 @@ public class MenuController extends BaseController { */ @GetMapping("/") @Operation(summary = "菜单首页", description = "导航到默认页") - public String list() { + public String list(Model model) { + setNavigateTitle(model, "/base/menu/"); + return "system/menu/list"; } diff --git a/manager-system/src/main/java/com/hshh/system/base/controller/PermissionController.java b/manager-system/src/main/java/com/hshh/system/base/controller/PermissionController.java index ac91cba..80fc7fe 100644 --- a/manager-system/src/main/java/com/hshh/system/base/controller/PermissionController.java +++ b/manager-system/src/main/java/com/hshh/system/base/controller/PermissionController.java @@ -55,6 +55,7 @@ public class PermissionController extends BaseController { @GetMapping("/") @Operation(summary = "权限首页", description = "导航到默认页") public String list(PaginationBean request, Model model) { + setNavigateTitle(model, "/base/permission/"); List list = permissionsService.list(request); Long total = permissionsService.count(request); //设置分页信息 diff --git a/manager-system/src/main/java/com/hshh/system/base/controller/RoleController.java b/manager-system/src/main/java/com/hshh/system/base/controller/RoleController.java index 7b2bda7..ce488ce 100644 --- a/manager-system/src/main/java/com/hshh/system/base/controller/RoleController.java +++ b/manager-system/src/main/java/com/hshh/system/base/controller/RoleController.java @@ -55,6 +55,7 @@ public class RoleController extends BaseController { @GetMapping("/") @Operation(summary = "角色首页", description = "导航到默认页") public String list(PaginationBean request, Model model) { + setNavigateTitle(model, "/base/role/"); List list = rolesService.list(request); Long total = rolesService.count(request); //设置分页信息 diff --git a/manager-system/src/main/java/com/hshh/system/base/controller/TableRelationsController.java b/manager-system/src/main/java/com/hshh/system/base/controller/TableRelationsController.java deleted file mode 100644 index 6ae5807..0000000 --- a/manager-system/src/main/java/com/hshh/system/base/controller/TableRelationsController.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.hshh.system.base.controller; - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.stereotype.Controller; - -/** - *

- * 前端控制器 - *

- * - * @author liDongYu - * @since 2025-07-29 - */ -@Controller -@RequestMapping("/base/tableRelations") -public class TableRelationsController { - -} diff --git a/manager-system/src/main/java/com/hshh/system/base/controller/UserController.java b/manager-system/src/main/java/com/hshh/system/base/controller/UserController.java index d18ca00..810dde6 100644 --- a/manager-system/src/main/java/com/hshh/system/base/controller/UserController.java +++ b/manager-system/src/main/java/com/hshh/system/base/controller/UserController.java @@ -66,6 +66,7 @@ public class UserController extends BaseController { @GetMapping("/") @Operation(summary = "用户首页", description = "导航到默认页") public String list(PaginationBean request, Model model) { + setNavigateTitle(model, "/base/user/"); List list = usersService.list(request); Long total = usersService.count(request); //设置分页信息 diff --git a/manager-system/src/main/java/com/hshh/system/base/service/MenusService.java b/manager-system/src/main/java/com/hshh/system/base/service/MenusService.java index f39e127..8c4befb 100644 --- a/manager-system/src/main/java/com/hshh/system/base/service/MenusService.java +++ b/manager-system/src/main/java/com/hshh/system/base/service/MenusService.java @@ -42,4 +42,12 @@ public interface MenusService extends IService { * @return 菜单列表 */ List queryListByPid(Integer parentId); + + /** + * 根据菜单地址获取菜单对象. 比如,菜单A,父亲时B,B的父亲是C.则返回列表 C,B,A. + * + * @param href 菜单连接地址 + * @return 菜单对象列表;从父-父...-孩子 + */ + List getMenus(String href); } diff --git a/manager-system/src/main/java/com/hshh/system/base/service/impl/MenusServiceImpl.java b/manager-system/src/main/java/com/hshh/system/base/service/impl/MenusServiceImpl.java index ad5471c..cd403cd 100644 --- a/manager-system/src/main/java/com/hshh/system/base/service/impl/MenusServiceImpl.java +++ b/manager-system/src/main/java/com/hshh/system/base/service/impl/MenusServiceImpl.java @@ -6,6 +6,7 @@ import com.hshh.system.base.entity.Menus; import com.hshh.system.base.mapper.MenusMapper; import com.hshh.system.base.service.MenusService; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -125,4 +126,38 @@ public class MenusServiceImpl extends ServiceImpl implements queryWrapper.eq("parent_id", parentId); return this.list(queryWrapper); } + + @Override + public List getMenus(String href) { + List resultList = new ArrayList<>(); + List menuList = this.list(); + menuList.forEach(a -> { + if (a.getParentId() == null) { + a.setParentId(0); + } + }); + //用key=path + Map keyIsPathMenusMap = menuList.stream().filter(a -> a.getPath() != null) + .collect(Collectors.toMap(Menus::getPath, a -> a)); + Menus menus = keyIsPathMenusMap.get(href); + if (menus == null) { + return resultList; + } + resultList.add(menus); + //key=id + Map idMap = menuList.stream() + .collect(Collectors.toMap(Menus::getId, a -> a)); + addParent(resultList, menus.getParentId(), idMap); + //反转 + Collections.reverse(resultList); + + return resultList; + } + + private void addParent(List resultList, Integer parentId, Map allMenuMap) { + if (parentId != null && allMenuMap.get(parentId) != null) { + resultList.add(allMenuMap.get(parentId)); + addParent(resultList, allMenuMap.get(parentId).getParentId(), allMenuMap); + } + } } diff --git a/manager-system/src/main/java/com/hshh/system/common/bean/BaseBean.java b/manager-system/src/main/java/com/hshh/system/common/bean/BaseBean.java index 41ae10c..1be40f1 100644 --- a/manager-system/src/main/java/com/hshh/system/common/bean/BaseBean.java +++ b/manager-system/src/main/java/com/hshh/system/common/bean/BaseBean.java @@ -6,7 +6,7 @@ import lombok.Getter; import lombok.Setter; /** - * 分页基础参数 + * 分页基础参数. */ public class BaseBean implements Serializable { diff --git a/manager-system/src/main/java/com/hshh/system/common/bean/BaseController.java b/manager-system/src/main/java/com/hshh/system/common/bean/BaseController.java index 26bc9c2..c5b6374 100644 --- a/manager-system/src/main/java/com/hshh/system/common/bean/BaseController.java +++ b/manager-system/src/main/java/com/hshh/system/common/bean/BaseController.java @@ -1,6 +1,8 @@ package com.hshh.system.common.bean; +import com.hshh.system.base.entity.Menus; +import com.hshh.system.base.service.impl.MenusServiceImpl; import java.util.ArrayList; import java.util.List; import org.springframework.ui.Model; @@ -45,4 +47,15 @@ public class BaseController { model.addAttribute("condition", request); } + /** + * 设置页面上的导航信息. + * + * @param model session容器. + * @param href 页面地址 + */ + protected void setNavigateTitle(Model model, String href) { + MenusServiceImpl menuService = SpringContextHolder.getBean(MenusServiceImpl.class); + List menuList = menuService.getMenus(href); + model.addAttribute("chainMenuList", menuList); + } } diff --git a/manager-system/src/main/java/com/hshh/system/common/bean/CheckedBean.java b/manager-system/src/main/java/com/hshh/system/common/bean/CheckedBean.java new file mode 100644 index 0000000..6f207d0 --- /dev/null +++ b/manager-system/src/main/java/com/hshh/system/common/bean/CheckedBean.java @@ -0,0 +1,18 @@ +package com.hshh.system.common.bean; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +/** + * 标记checked. + * + * @author LiDongYU + * @since 2025/7/22 + */ +@Data +public class CheckedBean { + + @TableField(exist = false) + private boolean checked; + private Integer id; +} diff --git a/manager-z-generation/src/main/java/CodeGenerator.java b/manager-z-generation/src/main/java/CodeGenerator.java index f4bf642..6be7b1c 100644 --- a/manager-z-generation/src/main/java/CodeGenerator.java +++ b/manager-z-generation/src/main/java/CodeGenerator.java @@ -29,7 +29,7 @@ public class CodeGenerator { basePath + "/src/main/resources/mapper")); // 设置mapperXml生成路径 }) .strategyConfig(builder -> { - builder.addInclude("m_data_indicator_eval_item") // 设置需要生成的表名(多个用逗号分隔) + builder.addInclude("m_data_indicator_bottom_csv_mapper") // 设置需要生成的表名(多个用逗号分隔) .addTablePrefix("m_data_"); // 设置过滤表前缀 }) .execute();