diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/teamlog/feign/TeamLogApi.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/teamlog/feign/TeamLogApi.java index d589fc9..8142fb2 100644 --- a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/teamlog/feign/TeamLogApi.java +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/teamlog/feign/TeamLogApi.java @@ -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> list(@RequestBody @Validated TeamLogPageReq req); + /** + * 记录班组改变日志 + * @param req + * @return + */ + @PostMapping("/api/team-log/record-change-team-owner") + ApiResult recordChangeTeamOwner(@RequestBody TeamLogRecordChangeTeamOwnerReq req); } diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/teamlog/req/TeamLogRecordChangeTeamOwnerReq.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/teamlog/req/TeamLogRecordChangeTeamOwnerReq.java new file mode 100644 index 0000000..6e14fbc --- /dev/null +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/teamlog/req/TeamLogRecordChangeTeamOwnerReq.java @@ -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; + } +} diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/teamlog/repository/PlatTeamLogRepository.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/teamlog/repository/PlatTeamLogRepository.java index c21e3db..b12ab75 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/teamlog/repository/PlatTeamLogRepository.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/teamlog/repository/PlatTeamLogRepository.java @@ -42,6 +42,8 @@ public interface PlatTeamLogRepository { return page(page).getData().stream().findFirst(); } + Long save(PlatTeamLog platTeamLog); + @EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/teamlog/repository/impl/PlatTeamLogRepositoryImpl.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/teamlog/repository/impl/PlatTeamLogRepositoryImpl.java index 427ed41..557fb02 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/teamlog/repository/impl/PlatTeamLogRepositoryImpl.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/teamlog/repository/impl/PlatTeamLogRepositoryImpl.java @@ -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(); + } } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/controller/TeamLogController.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/controller/TeamLogController.java index d985885..a8fc95d 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/controller/TeamLogController.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/controller/TeamLogController.java @@ -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> list(TeamLogPageReq req) { return ApiResult.success(teamLogService.page(req)); } + + /** + * 记录班组改变日志 + * @param req + * @return + */ + @Override + public ApiResult recordChangeTeamOwner(TeamLogRecordChangeTeamOwnerReq req) { + return ApiResult.success(teamLogService.recordChangeTeamOwner(req)); + } } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/TeamLogFoundationService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/TeamLogFoundationService.java index eb1063d..a0ec5b0 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/TeamLogFoundationService.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/TeamLogFoundationService.java @@ -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 page(TeamLogPageReq req); + + Long save(TeamLogSaveReq req); } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/dto/TeamLogSaveReq.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/dto/TeamLogSaveReq.java new file mode 100644 index 0000000..2a05758 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/dto/TeamLogSaveReq.java @@ -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; + +/** + *

+ * 平台班组变更日志表 + *

+ * + * @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; +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/impl/TeamLogFoundationServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/impl/TeamLogFoundationServiceImpl.java index ae18cd6..a30fd99 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/impl/TeamLogFoundationServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/foundation/impl/TeamLogFoundationServiceImpl.java @@ -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); + } } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/TeamLogService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/TeamLogService.java index 5892101..60df0fa 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/TeamLogService.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/TeamLogService.java @@ -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 page(TeamLogPageReq req); + + /** + * 记录班组改变日志 + * @param req + * @return + */ + Long recordChangeTeamOwner(TeamLogRecordChangeTeamOwnerReq req); } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/dto/ChangeTeamOwnerLogParam.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/dto/ChangeTeamOwnerLogParam.java new file mode 100644 index 0000000..4ea0c73 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/dto/ChangeTeamOwnerLogParam.java @@ -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; + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/impl/TeamLogServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/impl/TeamLogServiceImpl.java index 03776d3..1a80163 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/impl/TeamLogServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/impl/TeamLogServiceImpl.java @@ -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 page(TeamLogPageReq req) { return teamLogFoundationService.page(req); } + + @Override + public Long recordChangeTeamOwner(TeamLogRecordChangeTeamOwnerReq req) { + TeamLogProcessor.ProcessContext processContext = TeamLogProcessor.ProcessContext.builder() + .action(TeamLogProcessor.Action.CREATE) + .params(req) + .build(); + TeamLogProcessor teamLogProcessor = processContext.getProcessor(); + TeamLogProcessor.ProcessResult processResult = teamLogProcessor.process(processContext); + return processResult.getResult(); + } } diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/processor/TeamLogProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/processor/TeamLogProcessor.java new file mode 100644 index 0000000..f8054ba --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/processor/TeamLogProcessor.java @@ -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 extends BeanPostProcessor { + + + @Transactional(rollbackFor = Throwable.class) + ProcessResult process(ProcessContext context); + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + class ProcessContext { + private Action action; + private T params; + + public TeamLogProcessor getProcessor() { + SpringUtil.getBean(action.getProcessorClass()); + return SpringUtil.getBean(action.getProcessorClass()); + } + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + class ProcessResult { + private R result; + } + + @Getter + @AllArgsConstructor + enum Action { + CREATE("创建", RecordChangeTeamOwnerTeamLogProcessor.class) + ; + + private String desc; + private Class processorClass; + } + + +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/processor/impl/RecordChangeTeamOwnerTeamLogProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/processor/impl/RecordChangeTeamOwnerTeamLogProcessor.java new file mode 100644 index 0000000..ed7be43 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/teamlog/service/processor/impl/RecordChangeTeamOwnerTeamLogProcessor.java @@ -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 { + + private TeamLogFoundationService teamLogFoundationService; + + @Override + public ProcessResult process(ProcessContext 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.builder().result(id).build(); + } +}