Merge branch 'feature/REQ-1634' into 'dev'

+通过ID撤销待办

See merge request universal/infrastructure/backend/msg-center-plat!89
This commit is contained in:
邬宇 2023-11-28 02:56:51 +00:00
commit 161288b7b6
7 changed files with 85 additions and 46 deletions

View File

@ -4,20 +4,12 @@ import cn.axzo.msg.center.domain.entity.PendingMessageRecord;
import cn.axzo.msg.center.service.dto.IdentityDTO; import cn.axzo.msg.center.service.dto.IdentityDTO;
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO; import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
import cn.axzo.msg.center.service.dto.PersonDTO; import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.enums.BizCategoryEnum; import cn.axzo.msg.center.service.enums.*;
import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.utils.DateFormatUtil; import cn.axzo.msg.center.utils.DateFormatUtil;
import cn.axzo.msg.center.utils.MessageRouterUtil; import cn.axzo.msg.center.utils.MessageRouterUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -132,6 +124,10 @@ public class PendingMessageDTO implements Serializable {
* 路由参数 * 路由参数
*/ */
private String routerParam; private String routerParam;
/**
* 是否历史待办
*/
private Boolean isOld;
public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) { public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) {
// 代办发起者信息 // 代办发起者信息
@ -174,6 +170,7 @@ public class PendingMessageDTO implements Serializable {
.updateTime(DateFormatUtil.toLocalDateTime(pendingMessageRecord.getUpdateAt())) .updateTime(DateFormatUtil.toLocalDateTime(pendingMessageRecord.getUpdateAt()))
.routerParam(pendingMessageRecord.getRouterParams()) .routerParam(pendingMessageRecord.getRouterParams())
.bizFinalState(pendingMessageRecord.getBizFinalState()) .bizFinalState(pendingMessageRecord.getBizFinalState())
.isOld(pendingMessageRecord.getIsOld())
.build(); .build();
} }
@ -205,6 +202,7 @@ public class PendingMessageDTO implements Serializable {
.detailRouter(MessageRouterUtil.fetchBizDetailRouter(this.msgTemplateRouter, terminalType).orElse(null)) .detailRouter(MessageRouterUtil.fetchBizDetailRouter(this.msgTemplateRouter, terminalType).orElse(null))
.buttonRouters(MessageRouterUtil.fetchMessageRouterButtons(this.msgTemplateRouter, terminalType)) .buttonRouters(MessageRouterUtil.fetchMessageRouterButtons(this.msgTemplateRouter, terminalType))
.bizFinalStateIcon(Optional.ofNullable(bizFinalState).map(BizFinalStateEnum::getIcon).orElse(null)) .bizFinalStateIcon(Optional.ofNullable(bizFinalState).map(BizFinalStateEnum::getIcon).orElse(null))
.isOld(this.isOld)
.build(); .build();
} }

View File

@ -137,4 +137,12 @@ public interface PendingMessageNewService {
* @return 成功返回 {@code true} 失败返回 {@code false} * @return 成功返回 {@code true} 失败返回 {@code false}
*/ */
Boolean revokeByTemplateCodeBizCode(CompletePendingMessageRequest param); Boolean revokeByTemplateCodeBizCode(CompletePendingMessageRequest param);
/**
* 通过ID撤销代办
*
* @param param
* @return 成功返回 {@code true} 失败返回 {@code false}
*/
Boolean revokeById(RevokePendingMessageByIdRequest param);
} }

View File

@ -388,6 +388,17 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
.update(); .update();
} }
@Override
public Boolean revokeById(RevokePendingMessageByIdRequest param) {
log.info("the [{}] record is RevokePendingMessageByIdRequest.", param);
return pendingMessageRecordDao.lambdaUpdate()
.set(PendingMessageRecord::getState, PendingMessageStateEnum.RETRACT)
.eq(PendingMessageRecord::getId, param.getId())
.eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT)
.eq(PendingMessageRecord::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.update();
}
private PendingMessageDTO convert(PendingMessageRecord pendingMessageRecord, List<MessageTemplateDTO> messageTemplates) { private PendingMessageDTO convert(PendingMessageRecord pendingMessageRecord, List<MessageTemplateDTO> messageTemplates) {
PendingMessageDTO pendingMessage = PendingMessageDTO.from(pendingMessageRecord); PendingMessageDTO pendingMessage = PendingMessageDTO.from(pendingMessageRecord);
// 对应模板的路由策略 // 对应模板的路由策略

View File

@ -0,0 +1,25 @@
package cn.axzo.msg.center.service.pending.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
/**
* @author haiyangjin
* @date 2023/11/16
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RevokePendingMessageByIdRequest {
/**
* 关联业务主键
*/
@NotNull(message = "消息ID不能为空")
private Long id;
}

View File

@ -7,11 +7,7 @@ import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
import cn.axzo.msg.center.service.enums.BizCategoryEnum; import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
@ -136,6 +132,10 @@ public class PendingMessageResponse implements Serializable {
* 业务终态的印章图片地址 * 业务终态的印章图片地址
*/ */
private String bizFinalStateIcon; private String bizFinalStateIcon;
/**
* 是否历史待办
*/
private Boolean isOld;
@Override @Override
public String toString() { public String toString() {

View File

@ -2,37 +2,27 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.axzo.msg.center.dal.mapper.PendingMessageRecordMapper"> <mapper namespace="cn.axzo.msg.center.dal.mapper.PendingMessageRecordMapper">
<sql id="templateCodesSql">
<foreach collection="templateCodes " item="item" open="(" separator="," close=")" index="index">
'${item}'
</foreach>
</sql>
<select id="queryByTemplateCodes" resultType="cn.axzo.msg.center.domain.entity.PendingMessageRecord"> <select id="queryByTemplateCodes" resultType="cn.axzo.msg.center.domain.entity.PendingMessageRecord">
SELECT * FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) select * from (
AND template_code IN<foreach collection="pendingCalendarCodeDTO.constructionCodes" index="index" item="item" open="(" separator="," close=")"> SELECT * from (SELECT *,TRUE AS isOld FROM pending_message_record WHERE DATE(create_at) <![CDATA[<]]> DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT')
AND executor_person_id=#{personId} AND template_code IN<foreach collection="pendingCalendarCodeDTO.allCodes" index="index" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach> ORDER BY create_at ASC) old_pending_message
AND executor_person_id=#{personId} union ALL
ORDER BY create_at DESC select * from (SELECT *,FALSE AS isOld FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT','COMPLETED')
AND executor_person_id=#{personId} AND template_code IN<foreach collection="pendingCalendarCodeDTO.constructionCodes" index="index" item="item" open="(" separator="," close=")">
#{item}
<!--select * from ( </foreach> ORDER BY state,create_at DESC) new_pending_message
SELECT * FROM (SELECT * FROM pending_message_record WHERE DATE(create_at) <![CDATA[<]]> DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT') union all
AND template_code IN('d1d4793c84e14d20ae1cbc399338efa3','367ba552bb374049a73e737ac3b8b08c') SELECT * FROM (SELECT *,FALSE AS isOld FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT','COMPLETED')
<if test="workspaceId != null"> AND org_id=#{workspaceId} </if> AND executor_person_id=#{personId} AND template_code IN<foreach collection="pendingCalendarCodeDTO.punchInCodes" index="index" item="item" open="(" separator="," close=")">
ORDER BY create_at ASC) old_pending_message #{item}
UNION ALL </foreach> ORDER BY state,create_at DESC) new_pending_message1
SELECT * FROM(SELECT * FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) union all
AND template_code IN('d1d4793c84e14d20ae1cbc399338efa3','367ba552bb374049a73e737ac3b8b08c') <if test="workspaceId != null"> AND org_id=#{workspaceId} </if> ORDER BY create_at DESC) new_pending_message SELECT * FROM(SELECT *,FALSE AS isOld FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT','COMPLETED')
UNION ALL AND executor_person_id=#{personId} AND template_code IN<foreach collection="pendingCalendarCodeDTO.clockInCodes" index="index" item="item" open="(" separator="," close=")">
SELECT * FROM(SELECT * FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT','COMPLETED') #{item}
AND template_code IN('出厂打卡') <if test="workspaceId != null"> AND org_id=#{workspaceId} </if> ORDER BY create_at DESC) new_pending_message1 </foreach> ORDER BY state,create_at DESC) new_pending_message2
UNION ALL )ccc
SELECT * FROM(SELECT * FROM pending_message_record WHERE DATE(create_at) = DATE(#{selectDate}) AND state IN('HAS_BEEN_SENT','COMPLETED')
AND template_code IN('进场打卡') <if test="workspaceId != null"> AND org_id=#{workspaceId} </if> ORDER BY create_at DESC) new_pending_message2
)cc-->
</select> </select>
</mapper> </mapper>

View File

@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.data.annotation.Transient;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
@ -145,6 +146,12 @@ public class PendingMessageRecord extends BaseEntityExt<PendingMessageRecord> im
*/ */
private String failCause; private String failCause;
/**
* 是否历史待办
*/
@Transient
private Boolean isOld;
@Override @Override
public String toString() { public String toString() {
return JSON.toJSONString(this); return JSON.toJSONString(this);