通告代码
This commit is contained in:
parent
2a7865f308
commit
0839a82b03
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -154,5 +154,9 @@ public class BusiNotice extends DlBaseEntity
|
||||
/** 审核备注 */
|
||||
@Excel(name = "审核备注")
|
||||
private String approvalRemark;
|
||||
/**
|
||||
* 对比后相似的通告id 逗号隔开
|
||||
*/
|
||||
private String similarityIds;
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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();
|
@ -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);
|
||||
}
|
||||
|
@ -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) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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(); // 返回相似度比例
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user