Browse Source

fit: 不满意信件:将列表分为全部、待处理

fix: 调整签收超时,将二级机构、三级机构签收超时改为10分钟
master
wxc 12 months ago
parent
commit
47f3708c2b
  1. 4
      mailbox-lan/src/main/java/com/biutag/lan/controller/MailTimoutController.java
  2. 7
      mailbox-lan/src/main/java/com/biutag/lan/controller/work/WorkController.java
  3. 2
      mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondDistributeFlow.java
  4. 59
      mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java
  5. 25
      mailbox-lan/src/main/resources/mapper/WorkMapper.xml
  6. 2
      mailbox-outer/src/main/java/com/biutag/outer/job/Job.java

4
mailbox-lan/src/main/java/com/biutag/lan/controller/MailTimoutController.java

@ -78,12 +78,12 @@ public class MailTimoutController {
.orderByDesc(MailFlow::getCreateTime));
if (!secondFlows.isEmpty()) {
LocalDateTime firstDistributeTime = mail.getFirstDistributeTime();
long time = Duration.between(firstDistributeTime, secondFlows.get(0).getCreateTime()).getSeconds() - 300;
long time = Duration.between(firstDistributeTime, secondFlows.get(0).getCreateTime()).getSeconds() - 600;
log.info("信件 {} 二级机构签收是否超时 {}", mail.getId(), time > 0 ? "超时": "未超时");
mailMarkService.update(new LambdaUpdateWrapper<MailMark>().eq(MailMark::getMailId, mail.getId()).set(MailMark::getSignTimeout, time > 0)
.set(MailMark::getSecondSignTimeoutDuration, time > 0 ? time : 0));
if (!threeFlows.isEmpty()) {
long time2 = Duration.between(secondFlows.get(0).getCreateTime(), threeFlows.get(0).getCreateTime()).getSeconds() - 300;
long time2 = Duration.between(secondFlows.get(0).getCreateTime(), threeFlows.get(0).getCreateTime()).getSeconds() - 600;
log.info("信件 {} 三级机构签收是否超时 {}", mail.getId(), time2 > 0 ? "超时": "未超时");
mailMarkService.update(new LambdaUpdateWrapper<MailMark>().eq(MailMark::getMailId, mail.getId()).set(MailMark::getSignTimeout, time2 > 0)
.set(MailMark::getThreeTimeoutDuration, time2 > 0 ? time2 : 0));

7
mailbox-lan/src/main/java/com/biutag/lan/controller/work/WorkController.java

@ -87,6 +87,13 @@ public class WorkController {
return AjaxResult.success(workService.dissatisfied(page, todoQuery));
}
@Operation(summary = "不满意信件待办列表")
@NotPower
@GetMapping("dissatisfied/todo")
public AjaxResult<Page<QueryMailVo>> listDissatisfiedByTodo(Page<Mail> page, MailQuery todoQuery) {
return AjaxResult.success(workService.listDissatisfiedByTodo(page, todoQuery));
}
@Operation(summary = "信件详情")
@NotPower
@GetMapping("mail/detail")

2
mailbox-lan/src/main/java/com/biutag/lan/flow/node/SecondDistributeFlow.java

@ -109,7 +109,7 @@ public class SecondDistributeFlow extends Flow {
mail.setMainDeptLevel(mainDeptLevel);
}
MailMark mailMark = mailMarkService.getById(mailId);
long duration = Duration.between(mail.getFlowLimitedLastHandlerTime(), now).getSeconds() - 300;
long duration = Duration.between(mail.getFlowLimitedLastHandlerTime(), now).getSeconds() - 600;
mailMark.setThreeDeptId(mainDeptId)
.setThreeDeptName(deptVo.getName())
.setSecondSignTimeoutDuration(duration < 0 ? 0 : duration);

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

@ -643,7 +643,9 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
// 排序 根据申诉状态排序,依次展示“申诉中、已申诉、未申诉”状态
queryWrapper.orderByAsc("CASE WHEN ma.appeal_state = '1' THEN 1 WHEN ma.appeal_state = '2' or ma.appeal_state = '3' THEN 2 ELSE 3 END")
.orderByDesc("m.mail_time")
.groupBy("m.id, ma.appeal_state");
.groupBy("m.id, ma.appeal_state, m.contact_name, m.contact_phone, m.contact_id_card, m.contact_sex, m.content, M.SOURCE, M.mail_time,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.flow_name, M.current_operator," +
"M.flow_limited_last_handler_time, M.extension_flag, M.extension_days");
Page<QueryMailVo> result = baseMapper.selectDissatisfiedPage(page, queryWrapper);
for (QueryMailVo workVo : result.getRecords()) {
workVo.setNowDeptId(AdminThreadLocal.getDeptId());
@ -673,6 +675,61 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
return result;
}
public Page<QueryMailVo> listDissatisfiedByTodo(Page<Mail> page, MailQuery mailQuery) {
QueryWrapper<Mail> queryWrapper = new QueryWrapper<Mail>()
// 必须是已办结的件才可以申诉
.eq("m.mail_state", "completion")
.ge(StrUtil.isNotBlank(mailQuery.getMailTimeStart()), "m.mail_time", mailQuery.getMailTimeStart())
.le(StrUtil.isNotBlank(mailQuery.getMailTimeEnd()), "m.mail_time", mailQuery.getMailTimeEnd())
.eq(StrUtil.isNotBlank(mailQuery.getSource()), "m.source", mailQuery.getSource())
.eq(StrUtil.isNotBlank(mailQuery.getMailLevel()), "m.mail_level", mailQuery.getMailLevel())
.and(query -> {
query.eq("mm.satisfied", AppConstants.FALSE).or().eq("ma.appeal_state", AppealState.SUCCESS.getValue());
});
if (StrUtil.isNotBlank(mailQuery.getAppealState())) {
if (mailQuery.getAppealState().equals(AppealState.UN_APPEAL.getValue()))
queryWrapper.nested(q -> q.eq("ma.appeal_state", AppealState.UN_APPEAL.getValue()).or().isNull("ma.appeal_state"));
else
queryWrapper.eq("ma.appeal_state", mailQuery.getAppealState());
}
mailCategorySearch(mailQuery, queryWrapper);
deptSearch(mailQuery, queryWrapper);
roleCheck(queryWrapper);
if (StrUtil.isNotBlank(mailQuery.getContactField()) && StrUtil.isNotBlank(mailQuery.getContactFieldValue())) {
switch (mailQuery.getContactField()) {
case "name":
queryWrapper.like("w.contact_name", mailQuery.getContactFieldValue());
break;
case "idCard":
queryWrapper.like("w.contact_id_card", mailQuery.getContactFieldValue());
break;
case "phone":
queryWrapper.like("w.contact_phone", mailQuery.getContactFieldValue());
break;
}
}
// 排序 根据申诉状态排序,依次展示“申诉中、已申诉、未申诉”状态
queryWrapper.orderByAsc("CASE WHEN ma.appeal_state = '1' THEN 1 WHEN ma.appeal_state = '2' or ma.appeal_state = '3' THEN 2 ELSE 3 END")
.orderByDesc("m.mail_time")
.groupBy("m.id, ma.appeal_state, m.contact_name, m.contact_phone, m.contact_id_card, m.contact_sex, m.content, M.SOURCE, M.mail_time,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.flow_name, M.current_operator," +
"M.flow_limited_last_handler_time, M.extension_flag, M.extension_days");
if (AdminThreadLocal.getRoleId().equals(RoleEnum.SECOND_DEPT_CLASSES.getRoleId())) {
queryWrapper.eq("ma.step", "1");
}
if (AdminThreadLocal.getRoleId().equals(RoleEnum.MUNICIPAL_DEPT_CLASSES.getRoleId())) {
queryWrapper.eq("ma.step", "2");
}
if (AdminThreadLocal.getRoleId().equals(RoleEnum.MUNICIPAL_CLASSES_LEADER.getRoleId())) {
queryWrapper.eq("ma.step", "3").eq("ma.first_leader_emp_no", AdminThreadLocal.getEmpNo());
}
Page<QueryMailVo> result = baseMapper.selectDissatisfiedPage(page, queryWrapper);
for (QueryMailVo workVo : result.getRecords()) {
workVo.setNowDeptId(AdminThreadLocal.getDeptId());
}
return result;
}
/**
* 信件查询检查权限并显示
* 感谢信所有人都能查看

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

@ -99,16 +99,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectDissatisfiedPage" resultType="com.biutag.lan.domain.vo.QueryMailVo">
select
m.id,m.contact_name AS contact_name,m.contact_phone AS contact_phone,m.contact_id_card AS contact_id_card,
m.contact_sex AS contact_sex,m.content AS content,m.source AS source,m.mail_time AS mail_time,m.mail_state AS mail_state,
m.mail_category AS mail_category,m.mail_level AS mail_level,m.three_dept_id AS three_dept_id,m.three_dept_name AS three_dept_name,
m.flow_key AS flow_key,m.flow_before_name AS flow_before_name,m.mail_labels AS mail_labels,m.flow_name AS flow_name,
m.id,
m.contact_name AS contact_name,
m.contact_phone AS contact_phone,
m.contact_id_card AS contact_id_card,
m.contact_sex AS contact_sex,
m.content AS content,
m.source AS source,
m.mail_time AS mail_time,
m.mail_state AS mail_state,
m.mail_category AS mail_category,
m.mail_level AS mail_level,
m.three_dept_id AS three_dept_id,
m.three_dept_name AS three_dept_name,
m.flow_key AS flow_key,
m.flow_before_name AS flow_before_name,
m.mail_labels AS mail_labels,
m.flow_name AS flow_name,
m.current_operator AS current_operator,
MAX(ma.appeal_state) AS appeal_state,
MAX(ma.handling_dept) AS handling_dept,
MAX(ma.step) AS step,
MAX(f.limited_time) AS limited_time,
m.flow_limited_last_handler_time AS flow_limited_last_handler_time,m.extension_flag AS extension_flag,m.extension_days AS extension_days,
m.flow_limited_last_handler_time AS flow_limited_last_handler_time,
m.extension_flag AS extension_flag,
m.extension_days AS extension_days,
MAX(w.create_time) AS create_time,
MAX(ma.first_leader_emp_no) first_leader_emp_no
from mail m

2
mailbox-outer/src/main/java/com/biutag/outer/job/Job.java

@ -104,7 +104,7 @@ public class Job {
MailEtl mailEtl = new MailEtl().setMailId(mail.getId()).setSuccess(false).setCreateTime(LocalDateTime.now()).setErrMsg(e.getMessage());
mailEtlMapper.insert(mailEtl);
String key = "errNotification";
if (Objects.isNull(cache.getIfPresent(key)) || !cache.getIfPresent(key)) {
if (Objects.isNull(cache.getIfPresent(key)) || Boolean.FALSE.equals(cache.getIfPresent(key))) {
String message = String.format("局长信箱信件推送异常:%s", e.getMessage());
SmsUtil.sendSms("15608487213", message);
SmsUtil.sendSms("18867391894", message);

Loading…
Cancel
Save