通告代码

This commit is contained in:
13405411873 2025-03-24 10:18:30 +08:00
parent 2a7865f308
commit 0839a82b03
7 changed files with 167 additions and 8 deletions

View File

@ -6,7 +6,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.query.BusiNoticeQuery;
import com.ruoyi.busi.query.BusiNoticeQuery;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -25,7 +25,6 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.busi.domain.BusiNotice;
import com.ruoyi.busi.service.IBusiNoticeService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 通告Controller
@ -112,6 +111,29 @@ public class BusiNoticeController extends BaseController
return toAjax(busiNoticeService.removeByIds(list));
}
/**
* 发布或下架通告
* noticeId 通告主键
* publishTakeDown 1发布0下架
*/
@PreAuthorize("@ss.hasPermi('busi:notice:edit')")
@PostMapping("/publishTakeDown")
public AjaxResult publishTakeDown(@RequestParam("noticeId") String noticeId,@RequestParam("publishTakeDown") String publishTakeDown)
{
busiNoticeService.publishTakeDown(noticeId,publishTakeDown);
return success();
}
/**
* 审核接口
* BusiNoticeQuery 审核参数
*/
@PreAuthorize("@ss.hasPermi('busi:notice:edit')")
@PostMapping("/auditInfo")
public AjaxResult auditInfo(@RequestBody BusiNoticeQuery query)
{
busiNoticeService.auditInfo(query);
return success();
}
}

View File

@ -154,5 +154,9 @@ public class BusiNotice extends DlBaseEntity
/** 审核备注 */
@Excel(name = "审核备注")
private String approvalRemark;
/**
* 对比后相似的通告id 逗号隔开
*/
private String similarityIds;
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.busi.domain.BusiNotice;
import com.ruoyi.busi.query.BusiNoticeQuery;
import com.ruoyi.busi.vo.BusiNoticeVo;
import com.ruoyi.query.BusiNoticeQuery;
import org.apache.ibatis.annotations.Param;

View File

@ -1,4 +1,4 @@
package com.ruoyi.query;
package com.ruoyi.busi.query;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
@ -11,6 +11,7 @@ import java.util.Date;
@Data
public class BusiNoticeQuery {
private String id;
/**发布者名称**/
private String userNickName;
/** 标题 */
@ -31,6 +32,8 @@ public class BusiNoticeQuery {
private Integer isUseCoupon;
/** 审核状态 */
private String approvalStatus;
//审核备注
private String approvalRemark;
private String bloggerTypes;
/** 查询条件 */
private JSONObject params =new JSONObject();

View File

@ -1,12 +1,13 @@
package com.ruoyi.busi.service;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.busi.domain.BusiNotice;
import com.ruoyi.busi.query.BusiNoticeQuery;
import com.ruoyi.busi.vo.BusiNoticeVo;
import com.ruoyi.query.BusiNoticeQuery;
import java.util.List;
/**
* 通告Service接口
@ -35,6 +36,27 @@ public interface IBusiNoticeService extends IService<BusiNotice>
**/
List<BusiNoticeVo> queryListByUserId(Long userId);
/**
* 列表查询
* @param query 查询参数
* @param page 分页参数
*/
IPage<BusiNotice> queryListPage(BusiNoticeQuery query, Page<BusiNotice> page);
/**
* 保存
* @param data 保存参数
*/
void saveVo(BusiNotice data);
/**
* 发布或者下架
* @param noticeId 通告主键
* @param publishTakeDown 1发布0下架
*/
void publishTakeDown(String noticeId, String publishTakeDown);
/**
* 审核接口
* @param query 审核参数
*/
void auditInfo(BusiNoticeQuery query);
}

View File

@ -1,16 +1,22 @@
package com.ruoyi.busi.service.impl;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.busi.vo.BusiNoticeVo;
import com.ruoyi.common.core.domain.DlBaseEntity;
import com.ruoyi.common.utils.DateUtils;
import java.util.Optional;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.busi.utils.JaccardSimilarity;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.query.BusiNoticeQuery;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.busi.query.BusiNoticeQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -35,11 +41,42 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
return busiNoticeMapper.queryListPage(query, page);
}
/**
* 新增通告
* @param data 通告对象
*/
@Override
public void saveVo(BusiNotice data) {
//获取当前登录用户
data.setUserId(SecurityUtils.getUserId());
this.save(data);
if (StringUtils.isNotEmpty(data.getApprovalStatus())&&data.getApprovalStatus().equals("8")){
//草稿数据直接保存
this.save(data);
}else {
//判断 内容重复度 是否大于70%
//先获取 当前系统中截止日期之前的
LambdaQueryWrapper<BusiNotice> queryWrapper =new LambdaQueryWrapper<>();
queryWrapper.gt(BusiNotice::getEndDate, DateUtil.format(new Date(),"yyyy-MM-dd")).eq(BusiNotice::getApprovalStatus,1);
List<BusiNotice> list = this.list(queryWrapper);
//无问题数据直接审核通过
data.setApprovalStatus("1");
//遍历 list的每条数据与data对比如果两条数据相似度大于70% 提出预警
for (BusiNotice busiNotice : list) {
double v1 = JaccardSimilarity.computeJaccardSimilarity(data.getTitle(), busiNotice.getTitle());
double v2 = JaccardSimilarity.computeJaccardSimilarity(data.getDetail(), busiNotice.getDetail());
if (v1>=0.7&&v2>=0.7){
//title detail 相似度大于70% 待审核
data.setApprovalStatus("0");
data.setSimilarityIds(Optional.ofNullable(data.getSimilarityIds()).orElse("")+busiNotice.getId()+",");
}
}
if (StringUtils.isNotEmpty(data.getSimilarityIds())){
//删除结尾的最后一个逗号
data.setSimilarityIds(data.getSimilarityIds().substring(0, data.getSimilarityIds().length() - 1));
}
this.save(data);
}
}
/**
@ -71,4 +108,49 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
public List<BusiNoticeVo> queryListByUserId(Long userId) {
return busiNoticeMapper.queryListByUserId(userId);
}
/**
* 发布或者下架
* @param noticeId 通告主键
* @param publishTakeDown 1发布0下架
*/
@Override
public void publishTakeDown(String noticeId, String publishTakeDown) {
BusiNotice data = this.getById(noticeId);
if (publishTakeDown.equals("1")){
//如果是发布
//判断 内容重复度 是否大于70%
//先获取 当前系统中截止日期之前的
LambdaQueryWrapper<BusiNotice> queryWrapper =new LambdaQueryWrapper<>();
queryWrapper.gt(BusiNotice::getEndDate, DateUtil.format(new Date(),"yyyy-MM-dd")).eq(BusiNotice::getApprovalStatus,1);
List<BusiNotice> list = this.list(queryWrapper);
//无问题数据直接审核通过
data.setApprovalStatus("1");
//遍历 list的每条数据与data对比如果两条数据相似度大于70% 提出预警
for (BusiNotice busiNotice : list) {
double v1 = JaccardSimilarity.computeJaccardSimilarity(data.getTitle(), busiNotice.getTitle());
double v2 = JaccardSimilarity.computeJaccardSimilarity(data.getDetail(), busiNotice.getDetail());
if (v1>=0.7&&v2>=0.7){
//title detail 相似度大于70% 待审核
data.setApprovalStatus("0");
data.setSimilarityIds(Optional.ofNullable(data.getSimilarityIds()).orElse("")+busiNotice.getId()+",");
}
}
if (StringUtils.isNotEmpty(data.getSimilarityIds())){
//删除结尾的最后一个逗号
data.setSimilarityIds(data.getSimilarityIds().substring(0, data.getSimilarityIds().length() - 1));
}
}else {
//如果是下架 回归草稿状态
data.setApprovalStatus("8");
}
this.updateById(data);
}
@Override
public void auditInfo(BusiNoticeQuery query) {
}
}

View File

@ -0,0 +1,25 @@
package com.ruoyi.busi.utils;
import java.util.HashSet;
import java.util.Set;
import java.util.Arrays;
import java.util.stream.Collectors;
/**
* 文本相似度对比
* @author 朱春云
* @version 1.0
*/
public class JaccardSimilarity {
public static double computeJaccardSimilarity(String str1, String str2) {
Set<String> set1 = Arrays.stream(str1.split("\\s+")) // 分词这里按空格分割可以根据需要调整正则表达式
.collect(Collectors.toSet());
Set<String> set2 = Arrays.stream(str2.split("\\s+")) // 分词这里按空格分割可以根据需要调整正则表达式
.collect(Collectors.toSet());
Set<String> intersection = new HashSet<>(set1);
intersection.retainAll(set2); // 取交集
Set<String> union = new HashSet<>(set1);
union.addAll(set2); // 取并集
union.removeAll(intersection); // 从并集中移除交集部分因为我们只计算交集的元素
return (double) intersection.size() / union.size(); // 返回相似度比例
}
}