Browse Source

信件查询部门搜索逻辑优化,查看权限调整

dev_ycq
21819 2 years ago
parent
commit
2a45a55e14
  1. 2
      mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailQuery.java
  2. 48
      mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java
  3. 2
      mailbox-lan/src/main/resources/mapper/WorkMapper.xml

2
mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailQuery.java

@ -30,6 +30,8 @@ public class MailQuery {
private String mailCategory; private String mailCategory;
private String deptId;
private String threeDeptName; private String threeDeptName;
private String flowKey; private String flowKey;

48
mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biutag.core.AjaxResult; import com.biutag.core.AjaxResult;
import com.biutag.entity.system.Dept;
import com.biutag.enums.RoleEnum; import com.biutag.enums.RoleEnum;
import com.biutag.lan.config.AdminThreadLocal; import com.biutag.lan.config.AdminThreadLocal;
import com.biutag.lan.domain.Mail; import com.biutag.lan.domain.Mail;
@ -24,6 +25,7 @@ import com.biutag.lan.flow.FlowNodeEnum;
import com.biutag.lan.mapper.MailLabelMapper; import com.biutag.lan.mapper.MailLabelMapper;
import com.biutag.lan.mapper.MailMapper; import com.biutag.lan.mapper.MailMapper;
import com.biutag.lan.mapper.WorkMapper; import com.biutag.lan.mapper.WorkMapper;
import com.biutag.mapper.system.DeptMapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -53,6 +55,9 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
@Resource @Resource
private MailMapper mailMapper; private MailMapper mailMapper;
@Resource
private DeptMapper deptMapper;
public boolean saveBatch(List<MailSource> mailSources) { public boolean saveBatch(List<MailSource> mailSources) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
List<Work> list = mailSources.stream().map(mail -> { List<Work> list = mailSources.stream().map(mail -> {
@ -310,8 +315,20 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
.eq(StrUtil.isNotBlank(mailQuery.getSource()), "m.source", mailQuery.getSource()) .eq(StrUtil.isNotBlank(mailQuery.getSource()), "m.source", mailQuery.getSource())
.eq(StrUtil.isNotBlank(mailQuery.getMailLevel()), "m.mail_level", mailQuery.getMailLevel()) .eq(StrUtil.isNotBlank(mailQuery.getMailLevel()), "m.mail_level", mailQuery.getMailLevel())
.eq(StrUtil.isNotBlank(mailQuery.getMailCategory()), "m.mail_category", mailQuery.getMailCategory()) .eq(StrUtil.isNotBlank(mailQuery.getMailCategory()), "m.mail_category", mailQuery.getMailCategory())
.like(StrUtil.isNotBlank(mailQuery.getThreeDeptName()), "m.three_dept_name", mailQuery.getThreeDeptName())
.eq(StrUtil.isNotBlank(mailQuery.getFlowKey()), "m.flow_key", mailQuery.getFlowKey()); .eq(StrUtil.isNotBlank(mailQuery.getFlowKey()), "m.flow_key", mailQuery.getFlowKey());
if (StrUtil.isNotBlank(mailQuery.getDeptId())) {
Dept dept = deptMapper.selectById(mailQuery.getDeptId());
switch (dept.getLevel()) {
case 1:
break;
case 2:
queryWrapper.eq("m.second_dept_id", dept.getId());
break;
case 3:
queryWrapper.eq("m.three_dept_id", dept.getId());
break;
}
}
if (StrUtil.isNotBlank(mailQuery.getMailLabels())) { if (StrUtil.isNotBlank(mailQuery.getMailLabels())) {
List<String> labelIds = mailQuery.handleMailLabels(); List<String> labelIds = mailQuery.handleMailLabels();
for (String labelId : labelIds) { for (String labelId : labelIds) {
@ -373,11 +390,23 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
.eq(StrUtil.isNotBlank(mailQuery.getSource()), "m.source", mailQuery.getSource()) .eq(StrUtil.isNotBlank(mailQuery.getSource()), "m.source", mailQuery.getSource())
.eq(StrUtil.isNotBlank(mailQuery.getMailLevel()), "m.mail_level", mailQuery.getMailLevel()) .eq(StrUtil.isNotBlank(mailQuery.getMailLevel()), "m.mail_level", mailQuery.getMailLevel())
.eq(StrUtil.isNotBlank(mailQuery.getMailCategory()), "m.mail_category", mailQuery.getMailCategory()) .eq(StrUtil.isNotBlank(mailQuery.getMailCategory()), "m.mail_category", mailQuery.getMailCategory())
.like(StrUtil.isNotBlank(mailQuery.getThreeDeptName()), "m.three_dept_name", mailQuery.getThreeDeptName())
// .eq(StrUtil.isNotBlank(todoQuery.getAppealState()), "m.appeal_state", todoQuery.getAppealState()) // .eq(StrUtil.isNotBlank(todoQuery.getAppealState()), "m.appeal_state", todoQuery.getAppealState())
.eq("m.satisfaction_status", "不满意") .eq("m.satisfaction_status", "不满意")
.or() .or()
.eq("m.verify_feedback", "不满意"); .eq("m.verify_feedback", "不满意");
if (StrUtil.isNotBlank(mailQuery.getDeptId())) {
Dept dept = deptMapper.selectById(mailQuery.getDeptId());
switch (dept.getLevel()) {
case 1:
break;
case 2:
queryWrapper.eq("m.second_dept_id", dept.getId());
break;
case 3:
queryWrapper.eq("m.three_dept_id", dept.getId());
break;
}
}
roleCheck(queryWrapper); roleCheck(queryWrapper);
if (StrUtil.isNotBlank(mailQuery.getContactField()) && StrUtil.isNotBlank(mailQuery.getContactFieldValue())) { if (StrUtil.isNotBlank(mailQuery.getContactField()) && StrUtil.isNotBlank(mailQuery.getContactFieldValue())) {
switch (mailQuery.getContactField()) { switch (mailQuery.getContactField()) {
@ -406,20 +435,13 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
private void roleCheck(QueryWrapper<Mail> queryWrapper) { private void roleCheck(QueryWrapper<Mail> queryWrapper) {
Integer roleId = AdminThreadLocal.getRoleId(); Integer roleId = AdminThreadLocal.getRoleId();
// 与角色相关的件 // 与角色相关的件
if (roleId.equals(RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId()) || if (roleId.equals(RoleEnum.MUNICIPAL_DEPT_LEADER.getRoleId()) || roleId.equals(RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId())) {
roleId.equals(RoleEnum.SECOND_DEPT_CLASSES.getRoleId()) || //市局领导和市局专班可以看到所有数据
roleId.equals(RoleEnum.THREE_DEPT_CLASSES.getRoleId())) { } else if (roleId.equals(RoleEnum.SECOND_DEPT_LEADER.getRoleId()) || roleId.equals(RoleEnum.SECOND_DEPT_CLASSES.getRoleId())) {
Integer deptId = AdminThreadLocal.getDeptId();
queryWrapper.eq("w.sign_role_id", roleId)
// 如果不是市局专班,则需要查询签收部门ID
.eq(!RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId().equals(roleId), "w.sign_dept_id", deptId);
} else if (roleId.equals(RoleEnum.MUNICIPAL_DEPT_LEADER.getRoleId())) {
//空操作
} else if (roleId.equals(RoleEnum.SECOND_DEPT_LEADER.getRoleId())) {
//数据,领导只能看到自己管辖的部门 //数据,领导只能看到自己管辖的部门
Integer deptId = AdminThreadLocal.getDeptId(); Integer deptId = AdminThreadLocal.getDeptId();
queryWrapper.eq("m.second_dept_id", deptId); queryWrapper.eq("m.second_dept_id", deptId);
} else if (roleId.equals(RoleEnum.THREE_DEPT_LEADER.getRoleId())) { } else if (roleId.equals(RoleEnum.THREE_DEPT_LEADER.getRoleId()) || roleId.equals(RoleEnum.THREE_DEPT_CLASSES.getRoleId())) {
Integer deptId = AdminThreadLocal.getDeptId(); Integer deptId = AdminThreadLocal.getDeptId();
queryWrapper.eq("m.three_dept_id", deptId); queryWrapper.eq("m.three_dept_id", deptId);
} else { } else {

2
mailbox-lan/src/main/resources/mapper/WorkMapper.xml

@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectQueryPage" resultType="com.biutag.lan.domain.vo.QueryMailVo"> <select id="selectQueryPage" resultType="com.biutag.lan.domain.vo.QueryMailVo">
select m.contact_name,m.contact_phone,m.contact_id_card,m.contact_sex,m.content,m.source,m.mail_time,m.id,m.mail_state, select distinct m.contact_name,m.contact_phone,m.contact_id_card,m.contact_sex,m.content,m.source,m.mail_time,m.id,m.mail_state,
m.mail_category ,m.mail_level,m.three_dept_id,m.three_dept_name,m.flow_key,m.flow_before_name,m.mail_labels, m.mail_category ,m.mail_level,m.three_dept_id,m.three_dept_name,m.flow_key,m.flow_before_name,m.mail_labels,
f.limited_time - ROUND(EXTRACT(EPOCH FROM (CURRENT_TIMESTAMP - m.flow_limited_last_handler_time))) flow_limited_remaining_time f.limited_time - ROUND(EXTRACT(EPOCH FROM (CURRENT_TIMESTAMP - m.flow_limited_last_handler_time))) flow_limited_remaining_time
from mail m from mail m

Loading…
Cancel
Save