feat(REQ-3282): 增加班组日志创建
This commit is contained in:
parent
1a0e4c0237
commit
dc6a7c65b6
@ -5,6 +5,7 @@ import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
|
||||
import cn.axzo.orgmanax.dto.teamlog.dto.TeamLogDTO;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogPageReq;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogRecordChangeTeamOwnerReq;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -24,9 +25,16 @@ public interface TeamLogApi {
|
||||
*
|
||||
* @param req
|
||||
* @return
|
||||
* @see ListNodeUserReq#getPageSize()
|
||||
*
|
||||
*/
|
||||
@PostMapping("/api/team-log/list")
|
||||
ApiResult<PageResp<TeamLogDTO>> list(@RequestBody @Validated TeamLogPageReq req);
|
||||
|
||||
/**
|
||||
* 记录班组改变日志
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/team-log/record-change-team-owner")
|
||||
ApiResult<Long> recordChangeTeamOwner(@RequestBody TeamLogRecordChangeTeamOwnerReq req);
|
||||
}
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
package cn.axzo.orgmanax.dto.teamlog.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* @author chenwenjian
|
||||
* @version 1.0
|
||||
* @date 2024/5/29 19:37
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TeamLogRecordChangeTeamOwnerReq {
|
||||
|
||||
private Long platTeamId;
|
||||
|
||||
private TeamOwner oldTeamOwner;
|
||||
|
||||
private TeamOwner newTeamOwner;
|
||||
|
||||
@Data
|
||||
public static class TeamOwner {
|
||||
private Long identityId;
|
||||
private Long personId;
|
||||
private String realName;
|
||||
private Long organizationalUnitId;
|
||||
}
|
||||
}
|
||||
@ -42,6 +42,8 @@ public interface PlatTeamLogRepository {
|
||||
return page(page).getData().stream().findFirst();
|
||||
}
|
||||
|
||||
Long save(PlatTeamLog platTeamLog);
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
|
||||
@ -44,4 +44,10 @@ public class PlatTeamLogRepositoryImpl implements PlatTeamLogRepository {
|
||||
}
|
||||
return PageConverter.toResp(results);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long save(PlatTeamLog platTeamLog) {
|
||||
platTeamLogDao.save(platTeamLog);
|
||||
return platTeamLog.getId();
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.teamlog.feign.TeamLogApi;
|
||||
import cn.axzo.orgmanax.dto.teamlog.dto.TeamLogDTO;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogPageReq;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogRecordChangeTeamOwnerReq;
|
||||
import cn.axzo.orgmanax.server.teamlog.service.TeamLogService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -21,8 +22,26 @@ public class TeamLogController implements TeamLogApi {
|
||||
|
||||
private TeamLogService teamLogService;
|
||||
|
||||
/**
|
||||
* 分页列表接口。
|
||||
* XXX:本接口默认分页,单页最多返回1000条数据。调用方使用时需注意。
|
||||
*
|
||||
* @param req
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public ApiResult<PageResp<TeamLogDTO>> list(TeamLogPageReq req) {
|
||||
return ApiResult.success(teamLogService.page(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录班组改变日志
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public ApiResult<Long> recordChangeTeamOwner(TeamLogRecordChangeTeamOwnerReq req) {
|
||||
return ApiResult.success(teamLogService.recordChangeTeamOwner(req));
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package cn.axzo.orgmanax.server.teamlog.foundation;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.dto.teamlog.dto.TeamLogDTO;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogPageReq;
|
||||
import cn.axzo.orgmanax.server.teamlog.foundation.dto.TeamLogSaveReq;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
@ -10,4 +11,6 @@ import cn.axzo.orgmanax.dto.teamlog.req.TeamLogPageReq;
|
||||
*/
|
||||
public interface TeamLogFoundationService {
|
||||
PageResp<TeamLogDTO> page(TeamLogPageReq req);
|
||||
|
||||
Long save(TeamLogSaveReq req);
|
||||
}
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
package cn.axzo.orgmanax.server.teamlog.foundation.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平台班组变更日志表
|
||||
* </p>
|
||||
*
|
||||
* @author autoGenerator
|
||||
* @since 2023-04-14
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class TeamLogSaveReq {
|
||||
|
||||
/**
|
||||
* 平台班组id
|
||||
*/
|
||||
private Long platTeamId;
|
||||
|
||||
/**
|
||||
* log类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 变更描述
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 相关参数
|
||||
*/
|
||||
private String param;
|
||||
|
||||
/**
|
||||
* 操作人身份id
|
||||
*/
|
||||
private Long operatorId;
|
||||
}
|
||||
@ -7,6 +7,7 @@ import cn.axzo.orgmanax.dto.teamlog.req.TeamLogPageReq;
|
||||
import cn.axzo.orgmanax.infra.dao.teamlog.entity.PlatTeamLog;
|
||||
import cn.axzo.orgmanax.infra.dao.teamlog.repository.PlatTeamLogRepository;
|
||||
import cn.axzo.orgmanax.server.teamlog.foundation.TeamLogFoundationService;
|
||||
import cn.axzo.orgmanax.server.teamlog.foundation.dto.TeamLogSaveReq;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -37,4 +38,10 @@ public class TeamLogFoundationServiceImpl implements TeamLogFoundationService {
|
||||
.data(BeanUtil.copyToList(page.getData(), TeamLogDTO.class))
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long save(TeamLogSaveReq req) {
|
||||
PlatTeamLog platTeamLog = BeanUtil.copyProperties(req, PlatTeamLog.class);
|
||||
return platTeamLogRepository.save(platTeamLog);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package cn.axzo.orgmanax.server.teamlog.service;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.dto.teamlog.dto.TeamLogDTO;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogPageReq;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogRecordChangeTeamOwnerReq;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
@ -15,4 +16,11 @@ public interface TeamLogService {
|
||||
* @return
|
||||
*/
|
||||
PageResp<TeamLogDTO> page(TeamLogPageReq req);
|
||||
|
||||
/**
|
||||
* 记录班组改变日志
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
Long recordChangeTeamOwner(TeamLogRecordChangeTeamOwnerReq req);
|
||||
}
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
package cn.axzo.orgmanax.server.teamlog.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 更换班组长log 参数实体
|
||||
* @author zhangtianyu
|
||||
* @date 2023/4/14 4:18 PM
|
||||
**/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ChangeTeamOwnerLogParam {
|
||||
/**
|
||||
* 原班组长身份id
|
||||
*/
|
||||
private Long oldTeamOwnerIdentityId;
|
||||
/**
|
||||
* 原班组长自然人id
|
||||
*/
|
||||
private Long oldTeamOwnerPersonId;
|
||||
/**
|
||||
* 原班组长名称
|
||||
*/
|
||||
private String oldTeamOwnerName;
|
||||
/**
|
||||
* 新班组长身份id
|
||||
*/
|
||||
private Long newTeamOwnerIdentityId;
|
||||
/**
|
||||
* 新班组长自然人id
|
||||
*/
|
||||
private Long newTeamOwnerPersonId;
|
||||
/**
|
||||
* 新班组长名称
|
||||
*/
|
||||
private String newTeamOwnerName;
|
||||
/**
|
||||
* 平台班组id
|
||||
*/
|
||||
private Long platTeamId;
|
||||
/**
|
||||
* 更换班组长时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
@ -3,13 +3,20 @@ package cn.axzo.orgmanax.server.teamlog.service.impl;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.dto.teamlog.dto.TeamLogDTO;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogPageReq;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogRecordChangeTeamOwnerReq;
|
||||
import cn.axzo.orgmanax.infra.dao.teamlog.repository.PlatTeamLogRepository;
|
||||
import cn.axzo.orgmanax.server.node.service.processor.NodeProcessor;
|
||||
import cn.axzo.orgmanax.server.nodeuser.service.processor.NodeUserProcessor;
|
||||
import cn.axzo.orgmanax.server.teamlog.foundation.TeamLogFoundationService;
|
||||
import cn.axzo.orgmanax.server.teamlog.service.TeamLogService;
|
||||
import cn.axzo.orgmanax.server.teamlog.service.processor.TeamLogProcessor;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
* @date 2024/12/26
|
||||
@ -30,4 +37,15 @@ public class TeamLogServiceImpl implements TeamLogService {
|
||||
public PageResp<TeamLogDTO> page(TeamLogPageReq req) {
|
||||
return teamLogFoundationService.page(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long recordChangeTeamOwner(TeamLogRecordChangeTeamOwnerReq req) {
|
||||
TeamLogProcessor.ProcessContext<TeamLogRecordChangeTeamOwnerReq> processContext = TeamLogProcessor.ProcessContext.<TeamLogRecordChangeTeamOwnerReq>builder()
|
||||
.action(TeamLogProcessor.Action.CREATE)
|
||||
.params(req)
|
||||
.build();
|
||||
TeamLogProcessor teamLogProcessor = processContext.getProcessor();
|
||||
TeamLogProcessor.ProcessResult<Long> processResult = teamLogProcessor.process(processContext);
|
||||
return processResult.getResult();
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
package cn.axzo.orgmanax.server.teamlog.service.processor;
|
||||
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogRecordChangeTeamOwnerReq;
|
||||
import cn.axzo.orgmanax.server.teamlog.service.processor.impl.RecordChangeTeamOwnerTeamLogProcessor;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.*;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
* @date 2024/12/27
|
||||
*/
|
||||
public interface TeamLogProcessor<T, R> extends BeanPostProcessor {
|
||||
|
||||
|
||||
@Transactional(rollbackFor = Throwable.class)
|
||||
ProcessResult<R> process(ProcessContext<T> context);
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
class ProcessContext<T> {
|
||||
private Action action;
|
||||
private T params;
|
||||
|
||||
public TeamLogProcessor getProcessor() {
|
||||
SpringUtil.getBean(action.getProcessorClass());
|
||||
return SpringUtil.getBean(action.getProcessorClass());
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
class ProcessResult<R> {
|
||||
private R result;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
enum Action {
|
||||
CREATE("创建", RecordChangeTeamOwnerTeamLogProcessor.class)
|
||||
;
|
||||
|
||||
private String desc;
|
||||
private Class<? extends TeamLogProcessor> processorClass;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,61 @@
|
||||
package cn.axzo.orgmanax.server.teamlog.service.processor.impl;
|
||||
|
||||
import cn.axzo.orgmanax.dto.teamlog.enums.PlatTeamLogType;
|
||||
import cn.axzo.orgmanax.dto.teamlog.req.TeamLogRecordChangeTeamOwnerReq;
|
||||
import cn.axzo.orgmanax.infra.dao.teamlog.entity.PlatTeamLog;
|
||||
import cn.axzo.orgmanax.infra.dao.teamlog.repository.PlatTeamLogRepository;
|
||||
import cn.axzo.orgmanax.server.teamlog.foundation.TeamLogFoundationService;
|
||||
import cn.axzo.orgmanax.server.teamlog.foundation.dto.TeamLogSaveReq;
|
||||
import cn.axzo.orgmanax.server.teamlog.service.dto.ChangeTeamOwnerLogParam;
|
||||
import cn.axzo.orgmanax.server.teamlog.service.processor.TeamLogProcessor;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author zhanghongbo
|
||||
* @date 2024/12/27
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
public class RecordChangeTeamOwnerTeamLogProcessor implements TeamLogProcessor<TeamLogRecordChangeTeamOwnerReq, Long> {
|
||||
|
||||
private TeamLogFoundationService teamLogFoundationService;
|
||||
|
||||
@Override
|
||||
public ProcessResult<Long> process(ProcessContext<TeamLogRecordChangeTeamOwnerReq> context) {
|
||||
TeamLogRecordChangeTeamOwnerReq params = context.getParams();
|
||||
Long platTeamId = params.getPlatTeamId();
|
||||
TeamLogRecordChangeTeamOwnerReq.TeamOwner oldTeamOwner = params.getOldTeamOwner();
|
||||
TeamLogRecordChangeTeamOwnerReq.TeamOwner newTeamOwner = params.getNewTeamOwner();
|
||||
log.info("记录更换班组长日志,platTeamId:{},oldTeamOwnerIdentityId:{},newTeamOwnerIdentityId:{}",platTeamId, oldTeamOwner.getIdentityId(), newTeamOwner.getIdentityId());
|
||||
|
||||
// 构建参数
|
||||
ChangeTeamOwnerLogParam changeTeamOwnerLogParam = new ChangeTeamOwnerLogParam()
|
||||
.setOldTeamOwnerIdentityId(oldTeamOwner.getIdentityId())
|
||||
.setOldTeamOwnerPersonId(oldTeamOwner.getPersonId())
|
||||
.setOldTeamOwnerName(oldTeamOwner.getRealName())
|
||||
.setNewTeamOwnerIdentityId(newTeamOwner.getIdentityId())
|
||||
.setNewTeamOwnerPersonId(newTeamOwner.getPersonId())
|
||||
.setNewTeamOwnerName(newTeamOwner.getRealName())
|
||||
.setPlatTeamId(oldTeamOwner.getOrganizationalUnitId())
|
||||
.setCreateTime(new Date());
|
||||
|
||||
TeamLogSaveReq teamLogSaveReq = TeamLogSaveReq.builder()
|
||||
.platTeamId(platTeamId)
|
||||
.operatorId(oldTeamOwner.getIdentityId())
|
||||
.type(PlatTeamLogType.CHANGE_TEAM_OWNER.name())
|
||||
.content(String.format(PlatTeamLogType.CHANGE_TEAM_OWNER.getContent(), oldTeamOwner.getRealName(), newTeamOwner.getRealName()))
|
||||
.param(JSON.toJSONString(changeTeamOwnerLogParam))
|
||||
.build();
|
||||
|
||||
Long id = teamLogFoundationService.save(teamLogSaveReq);
|
||||
return ProcessResult.<Long>builder().result(id).build();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user