Browse Source

信件查询统计部分实现

master
21819 2 years ago
parent
commit
309db3e0db
  1. 4
      mailbox-lan/src/main/java/com/biutag/lan/controller/work/WorkController.java
  2. 4
      mailbox-lan/src/main/java/com/biutag/lan/domain/bo/MailQuery.java
  3. 2
      mailbox-lan/src/main/java/com/biutag/lan/mapper/WorkMapper.java
  4. 38
      mailbox-lan/src/main/java/com/biutag/lan/service/WorkService.java
  5. 46
      mailbox-lan/src/main/resources/mapper/WorkMapper.xml

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

@ -39,8 +39,8 @@ public class WorkController {
@NotPower
@GetMapping("query")
public AjaxResult<Page<QueryMailVo>> list(Page<Mail> page, MailQuery todoQuery) {
return AjaxResult.success(workService.queryPage(page, todoQuery));
public AjaxResult<Page<QueryMailVo>> list(Page<Mail> page, MailQuery mailQuery) {
return AjaxResult.success(workService.queryPage(page, mailQuery));
}
@NotPower

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

@ -56,6 +56,10 @@ public class MailQuery {
* Work表 签收部门id
*/
private Integer signDeptId;
/**
* 信件查询界面新建统计字段
*/
private String countMails;
public List<String> handleMailLabels() {
if (mailLabels == null) {

2
mailbox-lan/src/main/java/com/biutag/lan/mapper/WorkMapper.java

@ -17,7 +17,7 @@ public interface WorkMapper extends BaseMapper<Work> {
Page<WorkVo> selectPageBy(@Param("page") Page<Work> page, @Param(Constants.WRAPPER) QueryWrapper<Work> queryWrapper);
Page<QueryMailVo> selectQueryPage(@Param("page") Page<Mail> page, @Param(Constants.WRAPPER) QueryWrapper<Mail> queryWrapper);
Page<QueryMailVo> selectQueryPage(@Param("page") Page<Mail> page, @Param(Constants.WRAPPER) QueryWrapper<Mail> queryWrapper, @Param("countMails") String countMails);
Page<QueryMailVo> selectDissatisfiedPage(@Param("page") Page<Mail> page, @Param(Constants.WRAPPER) QueryWrapper<Mail> queryWrapper);

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

@ -376,23 +376,25 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
.eq(Objects.nonNull(mailQuery.getSignRoleId()), "w.sign_role_id", mailQuery.getSignRoleId())
.eq(Objects.nonNull(mailQuery.getSignDeptId()), "w.sign_dept_id", mailQuery.getSignDeptId());
//剔除终止操作的信件类别方便统计
// if (StrUtil.isNotBlank(mailQuery.getMailState())) {
// switch (mailQuery.getMailState()) {
// case "terminated":
// queryWrapper.nested(i -> i.eq("m.mail_first_category", "终止类")
// .or().eq("m.mail_first_category", "感谢信类")
// .or().eq("m.mail_first_category", "无效类"));
// break;
// case "completion":
// queryWrapper.ne("m.mail_first_category", "终止类")
// .ne("m.mail_first_category", "感谢信类")
// .ne("m.mail_first_category", "无效类");
// break;
// default:
// queryWrapper.eq("m.mail_state", mailQuery.getMailState());
// }
// }
if (StrUtil.isNotBlank(mailQuery.getCountMails())) {
switch (mailQuery.getCountMails()) {
case "1":
queryWrapper.and(i -> i.ne("m.flow_key","first_sign")//防止二级专班退回市局专班的信件未被签收,但是仍然存在于mail表中
.ne("m.mail_first_category","无效类")
.ne("m.mail_first_category","终止类")
.ne("m.mail_first_category","感谢信类"));
break;
case "2":
queryWrapper.nested(i->i.eq("mm.completed", "1"));
break;
case "3":
queryWrapper.nested(i->i.eq("mm.satisfied", "1"));
break;
case "4":
queryWrapper.nested(i->i.eq("mm.resolved", "1"));
break;
}
}
if (StrUtil.isNotBlank(mailQuery.getFlowKey())) {
List<String> flowKeyList = StrUtil.split(mailQuery.getFlowKey(), ',', true, true);
@ -433,7 +435,7 @@ public class WorkService extends ServiceImpl<WorkMapper, Work> {
}
// 排序
queryWrapper.orderByDesc("m.mail_time");
Page<QueryMailVo> result = baseMapper.selectQueryPage(page, queryWrapper);
Page<QueryMailVo> result = baseMapper.selectQueryPage(page, queryWrapper, mailQuery.getCountMails());
for (QueryMailVo workVo : result.getRecords()) {
List<MailLabel> labelNames = mailLabelMapper.selectList(null);
if (StrUtil.isNotBlank(workVo.getMailLabels())) {

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

@ -45,28 +45,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectQueryPage" resultType="com.biutag.lan.domain.vo.QueryMailVo">
-- 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.flow_name,m.current_operator,
-- f.limited_time - ROUND(EXTRACT(EPOCH FROM (CURRENT_TIMESTAMP - m.flow_limited_last_handler_time))) flow_limited_remaining_time
-- from mail m
-- left join work w on m.id = w.mail_id
-- left join flow_node f on m.flow_key = f.key
SELECT DISTINCT
m.*,f.limited_time - ROUND(extract(EPOCH FROM (CURRENT_TIMESTAMP - m.flow_limited_last_handler_time))) AS flow_limited_remaining_time
FROM
(SELECT
COALESCE(a.contact_name, ms.contact_name) AS contact_name,COALESCE(a.contact_phone, ms.contact_phone) AS contact_phone,
COALESCE(a.contact_id_card, ms.contact_id_card) AS contact_id_card,COALESCE(a.contact_sex, ms.contact_sex) AS contact_sex,
COALESCE(a.content, ms.content) AS content,COALESCE(a.source, ms.source) AS source,
COALESCE(a.mail_time, ms.mail_time) AS mail_time,COALESCE(a.id, ms.id) AS id,
a.mail_state,a.mail_category,a.mail_level,a.three_dept_id,a.three_dept_name,a.flow_key,a.flow_before_name,
a.mail_labels,a.flow_name,a.current_operator,a.flow_limited_last_handler_time,a.second_dept_id,a.mail_first_category,
a.mail_second_category,a.mail_three_category
FROM
mail_source ms
LEFT JOIN mail a ON ms.id = a.id
) AS m
<choose>
<when test="countMails != null">
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.flow_name,m.current_operator,
m.flow_limited_last_handler_time,m.second_dept_id,m.mail_first_category,m.mail_second_category,m.mail_three_category,
f.limited_time - ROUND(EXTRACT(EPOCH FROM (CURRENT_TIMESTAMP - m.flow_limited_last_handler_time))) flow_limited_remaining_time
from mail m
</when>
<otherwise>
m.*,f.limited_time - ROUND(extract(EPOCH FROM (CURRENT_TIMESTAMP - m.flow_limited_last_handler_time))) AS flow_limited_remaining_time
FROM
(SELECT
COALESCE(a.contact_name, ms.contact_name) AS contact_name,COALESCE(a.contact_phone, ms.contact_phone) AS contact_phone,
COALESCE(a.contact_id_card, ms.contact_id_card) AS contact_id_card,COALESCE(a.contact_sex, ms.contact_sex) AS contact_sex,
COALESCE(a.content, ms.content) AS content,COALESCE(a.source, ms.source) AS source,
COALESCE(a.mail_time, ms.mail_time) AS mail_time,COALESCE(a.id, ms.id) AS id,
a.mail_state,a.mail_category,a.mail_level,a.three_dept_id,a.three_dept_name,a.flow_key,a.flow_before_name,
a.mail_labels,a.flow_name,a.current_operator,a.flow_limited_last_handler_time,a.second_dept_id,a.mail_first_category,
a.mail_second_category,a.mail_three_category
FROM
mail_source ms
LEFT JOIN mail a ON ms.id = a.id
) AS m
</otherwise>
</choose>
LEFT JOIN work w ON m.id = w.mail_id
LEFT JOIN mail_mark mm on mm.mail_id = m.id
LEFT JOIN flow_node f ON m.flow_key = f.key
${ew.getCustomSqlSegment}
</select>

Loading…
Cancel
Save