From 6895fdb185bd720463062147db1ca913ceffc475 Mon Sep 17 00:00:00 2001 From: weishengyou <2454197255@qq.com> Date: Fri, 28 Nov 2025 16:35:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E5=B9=B4=E7=AE=A1=E7=90=86-=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=A8=A1=E5=9D=97=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comprehensive/SrsStuYearController.java | 28 ++++ srs-admin/src/main/resources/application.yml | 8 +- .../srs/comprehensive/domain/SrsStuYear.java | 14 ++ .../mapper/SrsStuYearMapper.java | 19 +++ .../service/ISrsStuYearService.java | 22 +++ .../service/impl/SrsStuYearServiceImpl.java | 140 +++++++++++++++++- .../mapper/comprehensive/SrsStuYearMapper.xml | 46 +++++- 7 files changed, 270 insertions(+), 7 deletions(-) diff --git a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SrsStuYearController.java b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SrsStuYearController.java index 6f2ad56..fd702f6 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SrsStuYearController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/comprehensive/SrsStuYearController.java @@ -35,6 +35,9 @@ public class SrsStuYearController extends BaseController public AjaxResult listAllYear(){ return srsStuYearService.listAllYear(); } + /** + * 所有启用的学年 + */ @GetMapping("/listQiyongYear") public AjaxResult listQiyongYear(){ return srsStuYearService.listQiyongYear(); @@ -148,4 +151,29 @@ public class SrsStuYearController extends BaseController return success("解析成功").put("导入失败的数据",srsStuYearService.addStuYear()); } + /** + * 为学年分配标签 + */ + @PostMapping("/{yearId}/assign-tag") + public AjaxResult assignTag(@PathVariable Long yearId, @RequestParam String tag) { + return srsStuYearService.assignTagToYear(tag, yearId); + } + + /** + * 根据标签查询学年 + */ + @GetMapping("/by-tag") + public AjaxResult getByTag(@RequestParam String tag) { + List years = srsStuYearService.getYearsByTag(tag); + return AjaxResult.success(years); + } + + /** + * 移除年份中的标签 + */ + /*@PostMapping("/{yearId}/removeTag") + public AjaxResult removeTag(@PathVariable Long yearId, @RequestParam List tags) { + return srsStuYearService.removeTagFromYear(tags, yearId); + }*/ + } diff --git a/srs-admin/src/main/resources/application.yml b/srs-admin/src/main/resources/application.yml index f9ee5ec..e874272 100644 --- a/srs-admin/src/main/resources/application.yml +++ b/srs-admin/src/main/resources/application.yml @@ -81,15 +81,15 @@ spring: # redis 配置 redis: # 地址 - host: localhost #正式环境redis -# host: 47.112.118.149 #测试开发地址 +# host: localhost #正式环境redis + host: 47.112.118.149 #测试开发地址 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 密码SSSS -# password: Houpuyfb #测试开发密码 - password: #正式环境密码 + password: Houpuyfb #测试开发密码 +# password: #正式环境密码 # 连接超时时间 timeout: 10s lettuce: diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/SrsStuYear.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/SrsStuYear.java index 3daba4b..800315b 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/SrsStuYear.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/domain/SrsStuYear.java @@ -36,6 +36,10 @@ public class SrsStuYear extends BaseEntity @Excel(name = "学年名称") private String stuYearName; + /** 模块标签 */ + @Excel(name = "模块标签") + private String moduleTags; + /** 开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") @@ -69,6 +73,15 @@ public class SrsStuYear extends BaseEntity { return stuYearName; } + + + public void setModuleTags(String moduleTags) { + this.moduleTags = moduleTags; + } + + public String getModuleTags() { + return moduleTags; + } public void setStartTime(Date startTime) { this.startTime = startTime; @@ -102,6 +115,7 @@ public class SrsStuYear extends BaseEntity return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) .append("stuYearName", getStuYearName()) + .append("moduleTags", getModuleTags()) .append("startTime", getStartTime()) .append("endTime", getEndTime()) .append("delFlag", getDelFlag()) diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SrsStuYearMapper.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SrsStuYearMapper.java index 21bb233..f8aea83 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SrsStuYearMapper.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/mapper/SrsStuYearMapper.java @@ -74,5 +74,24 @@ public interface SrsStuYearMapper extends BaseMapper */ public int deleteSrsStuYearByIds(Long[] ids); + /** + * 根据标签查询学年 + * @param tag + * @return + */ + public List selectYearsByTag(String tag); + + // 直接移除指定标签(不考虑其他标签) + public int removeTagDirectly(String tag); + + // 获取包含特定标签的学年列表 + public List getYearsContainingTag(String tag); + + // 获取所有包含特定标签的学年 + public List getYearsWithTags(); + + // 获取包含指定标签的所有学年(用于标签移除) + //public List getYearsContainingTag(String tag); + } diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ISrsStuYearService.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ISrsStuYearService.java index d4d5444..c15d8f5 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ISrsStuYearService.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/ISrsStuYearService.java @@ -75,4 +75,26 @@ public interface ISrsStuYearService //中间表数据导入 List addStuYear(); + /** + * 为学年分配标签 + * @param tag + * @param yearId + * @return + */ + AjaxResult assignTagToYear(String tag, Long yearId); + + /** + * 根据标签查询学年 + * @param tag + * @return + */ + List getYearsByTag(String tag); + + /** + * 删除标签 + * @param tags + * @param yearId + * @return + */ + /*AjaxResult removeTagFromYear(List tags, Long yearId);*/ } diff --git a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SrsStuYearServiceImpl.java b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SrsStuYearServiceImpl.java index 7ea5670..a1d88c9 100644 --- a/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SrsStuYearServiceImpl.java +++ b/srs-comprehensive/src/main/java/com/srs/comprehensive/service/impl/SrsStuYearServiceImpl.java @@ -1,7 +1,6 @@ package com.srs.comprehensive.service.impl; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.srs.common.core.domain.AjaxResult; @@ -14,6 +13,7 @@ import com.srs.comprehensive.service.ISrsStuYearService; import org.apache.ibatis.annotations.Mapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 【学年表】Service业务层处理 @@ -170,5 +170,141 @@ public class SrsStuYearServiceImpl implements ISrsStuYearService return strings; } + /** + * 给指定标签的学年分配标签 + * @param tag + * @param yearId + * @return + */ + @Override + @Transactional + public AjaxResult assignTagToYear(String tag, Long yearId) { + try { + // 参数校验 + if (tag == null || tag.trim().isEmpty() || yearId == null) { + return AjaxResult.error("参数无效"); + } + // 支持批量标签处理,按逗号分割 + String[] tags = tag.split(","); + List tagList = new ArrayList<>(); + for (String t : tags) { + if (t != null && !t.trim().isEmpty()) { + tagList.add(t.trim()); + } + } + + if (tagList.isEmpty()) { + return AjaxResult.error("未提供有效标签"); + } + + // 对每个标签执行分配操作 + for (String singleTag : tagList) { + // 从所有包含该标签的学年中移除该标签 + srsStuYearMapper.removeTagDirectly(singleTag); + } + + // 将所有标签添加到目标学年 + SrsStuYear targetYear = srsStuYearMapper.selectSrsStuYearById(yearId); + if (targetYear != null) { + String currentTags = targetYear.getModuleTags(); + Set tagSet = new LinkedHashSet<>(); + + // 保留现有标签 + if (currentTags != null && !currentTags.isEmpty()) { + String[] existingTags = currentTags.split(","); + for (String existingTag : existingTags) { + String cleanTag = existingTag.trim(); + if (!cleanTag.isEmpty()) { + tagSet.add(cleanTag); + } + } + } + + // 添加所有新标签 + tagSet.addAll(tagList); + + // 更新标签 + String newTags = String.join(",", tagSet); + targetYear.setModuleTags(newTags); + srsStuYearMapper.updateSrsStuYear(targetYear); + + return AjaxResult.success("标签分配成功"); + } else { + return AjaxResult.error("指定的学年不存在"); + } + } catch (Exception e) { + e.printStackTrace(); + return AjaxResult.error("标签分配失败:" + e.getMessage()); + } + } + + /** + * 获取指定标签的学年列表 + * @param tag + * @return + */ + @Override + public List getYearsByTag(String tag) { + return srsStuYearMapper.selectYearsByTag(tag); + } + + /** + * 删除指定标签的指定学年 + * @param tags + * @param yearId + * @return + */ + /* @Override + public AjaxResult removeTagFromYear(List tags, Long yearId) { + try { + // 参数校验 + if (tags == null || tags.isEmpty() || yearId == null) { + return AjaxResult.error("参数无效"); + } + // 获取指定学年 + SrsStuYear targetYear = srsStuYearMapper.selectSrsStuYearById(yearId); + if (targetYear == null) { + return AjaxResult.error("指定的学年不存在"); + } + System.out.println("找到学年: " + targetYear.getStuYearName() + ", 当前标签: " + targetYear.getModuleTags()); + String currentTags = targetYear.getModuleTags(); + if (currentTags == null || currentTags.isEmpty()) { + return AjaxResult.success("该学年没有标签"); + } + // 分割标签并移除指定标签 + String[] tagsArray = currentTags.split(","); + List remainingTags = new ArrayList<>(); + Set tagsToRemove = new HashSet<>(); + // 清理标签列表,去除空格 + for (String tag : tags) { + if (tag != null && !tag.trim().isEmpty()) { + tagsToRemove.add(tag.trim()); + } + } + int removedCount = 0; + for (String existingTag : tagsArray) { + String trimmedTag = existingTag.trim(); + if (tagsToRemove.contains(trimmedTag)) { + removedCount++; // 找到要移除的标签 + } else { + remainingTags.add(trimmedTag); // 保留其他标签 + } + } + if (removedCount == 0) { + return AjaxResult.success("该学年未包含指定标签"); + } + // 更新标签 + String newTags = remainingTags.isEmpty() ? null : String.join(",", remainingTags); + targetYear.setModuleTags(newTags); + int result = srsStuYearMapper.updateSrsStuYear(targetYear); + if (result > 0) { + return AjaxResult.success("成功移除" + removedCount + "个标签"); + } else { + return AjaxResult.error("标签移除失败"); + } + } catch (Exception e) { + return AjaxResult.error("标签移除失败:" + e.getMessage()); + } + }*/ } diff --git a/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsStuYearMapper.xml b/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsStuYearMapper.xml index 954b455..9273b98 100644 --- a/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsStuYearMapper.xml +++ b/srs-comprehensive/src/main/resources/mapper/comprehensive/SrsStuYearMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -18,7 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id,xndm, stu_year_name, start_time, end_time, del_flag,status, create_by, create_time, update_by, update_time from srs_stu_year + select id,xndm, stu_year_name,module_tags, start_time, end_time, del_flag,status, create_by, create_time, update_by, update_time from srs_stu_year select id,stu_year_name from srs_stu_year where status in (1,3) order by stu_year_name desc + + + + + + + + + + UPDATE srs_stu_year + SET module_tags = CASE + WHEN module_tags = #{tag} THEN NULL + WHEN module_tags LIKE concat(#{tag}, ',%') THEN REPLACE(module_tags, concat(#{tag}, ','), '') + WHEN module_tags LIKE concat('%,', #{tag}) THEN REPLACE(module_tags, concat(',', #{tag}), '') + WHEN module_tags LIKE concat('%,', #{tag}, ',%') THEN REPLACE(module_tags, concat(',', #{tag}, ','), ',') + ELSE module_tags + END + WHERE module_tags = #{tag} + OR module_tags LIKE concat(#{tag}, ',%') + OR module_tags LIKE concat('%,', #{tag}) + OR module_tags LIKE concat('%,', #{tag}, ',%') + + + + insert into srs_stu_year @@ -57,6 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" id, xndm, stu_year_name, + module_tags, start_time, end_time, `status`, @@ -70,6 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id}, #{xndm}, #{stuYearName}, + #{moduleTags}, #{startTime}, #{endTime}, #{status}, @@ -86,6 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" xndm = #{xndm}, stu_year_name = #{stuYearName}, + module_tags = #{moduleTags}, start_time = #{startTime}, end_time = #{endTime}, del_flag = #{delFlag},