From c2cf7ea9cb9f03ae28e131624ac448b5c1938f1b Mon Sep 17 00:00:00 2001 From: zhanghonghao Date: Fri, 10 Jan 2025 16:59:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-3488):=20=E8=B5=84=E8=B4=A8=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unit/feign/OrgUnitQualificationApi.java | 4 ++ .../req/UpdateQualificationsApplyReq.java | 67 +++++++++++++++++++ .../register/req/UpdateUnitRegisterReq.java | 2 +- .../dao/QualificationsApplyDao.java | 22 ++++++ .../QualificationsApplyUpsertRepository.java | 16 +++++ ...alificationsApplyUpsertRepositoryImpl.java | 46 +++++++++++++ .../UnitQualificationController.java | 7 ++ .../unit/service/QualificationService.java | 4 ++ .../impl/QualificationServiceImpl.java | 26 +++++++ .../QualificationApplyProcessor.java | 52 ++++++++++++++ .../DeleteQualificationsApplyProcessor.java | 25 +++++++ ...lificationsApplyByOuRegisterProcessor.java | 26 +++++++ .../UpdateQualificationsApplyProcessor.java | 42 ++++++++++++ 13 files changed, 338 insertions(+), 1 deletion(-) create mode 100644 orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/UpdateQualificationsApplyReq.java create mode 100644 orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/repository/QualificationsApplyUpsertRepository.java create mode 100644 orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/repository/impl/QualificationsApplyUpsertRepositoryImpl.java create mode 100644 orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/QualificationApplyProcessor.java create mode 100644 orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/DeleteQualificationsApplyProcessor.java create mode 100644 orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/UpdateQualificationsApplyByOuRegisterProcessor.java create mode 100644 orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/UpdateQualificationsApplyProcessor.java diff --git a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/unit/feign/OrgUnitQualificationApi.java b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/unit/feign/OrgUnitQualificationApi.java index f05a01b..f5c5f82 100644 --- a/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/unit/feign/OrgUnitQualificationApi.java +++ b/orgmanax-api/src/main/java/cn/axzo/orgmanax/api/unit/feign/OrgUnitQualificationApi.java @@ -8,6 +8,7 @@ import cn.axzo.orgmanax.dto.unit.qualification.dto.OrgQualificationsApplyDTO; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationOuTypeReq; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationReq; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationsApplyReq; +import cn.axzo.orgmanax.dto.unit.qualification.req.UpdateQualificationsApplyReq; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -49,4 +50,7 @@ public interface OrgUnitQualificationApi { */ @PostMapping("/api/org/qualification-ou-type/list") ApiResult> listOuType(@RequestBody @Validated ListQualificationOuTypeReq req); + + @PostMapping("/api/org/qualifications-apply/update") + ApiResult updateQualificationsApply(@RequestBody @Validated UpdateQualificationsApplyReq req); } \ No newline at end of file diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/UpdateQualificationsApplyReq.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/UpdateQualificationsApplyReq.java new file mode 100644 index 0000000..0644f06 --- /dev/null +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/UpdateQualificationsApplyReq.java @@ -0,0 +1,67 @@ +package cn.axzo.orgmanax.dto.unit.qualification.req; + +import lombok.*; +import lombok.experimental.SuperBuilder; + +import java.util.Set; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2024/12/26 + */ +@NoArgsConstructor +@AllArgsConstructor +@Data +@SuperBuilder +public class UpdateQualificationsApplyReq { + + /** + * 资质ID + */ + private Long id; + + /** + * 单位/团队注册记录ids + */ + private Set ouRegisterIds; + /** + * 证书编号,精准匹配 + */ + private String number; + /** + * 单位id + */ + private Long ouId; + /** + * 审批状态 0:已撤销 10:审核中,20:审核拒绝,30:审核通过 与单位表的状态枚举一致 + */ + private Integer approvalStatus; + + /** + * 审批意见 + */ + private String approvalMsg; + + /** + * 资质文件名称 + */ + private String fileName; + + /** + * 资质文件url + */ + private String fileUrl; + + private Action action; + + @AllArgsConstructor(access = AccessLevel.PRIVATE) + @Getter + public enum Action { + UPDATE("普通更新", "updateQualificationsApplyProcessor"), + DELETE("删除", "deleteQualificationsApplyProcessor"), + UPDATE_BY_OU_REGISTER("根据ouRegisterId更新", "updateQualificationsApplyByOuRegisterProcessor"); + + private final String desc; + private final String processor; + } +} \ No newline at end of file diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/register/req/UpdateUnitRegisterReq.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/register/req/UpdateUnitRegisterReq.java index 6c42a75..2396f53 100644 --- a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/register/req/UpdateUnitRegisterReq.java +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/register/req/UpdateUnitRegisterReq.java @@ -191,4 +191,4 @@ public class UpdateUnitRegisterReq { */ private String processInstanceId; -} +} \ No newline at end of file diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/dao/QualificationsApplyDao.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/dao/QualificationsApplyDao.java index 8b43972..d344de0 100644 --- a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/dao/QualificationsApplyDao.java +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/dao/QualificationsApplyDao.java @@ -1,10 +1,14 @@ package cn.axzo.orgmanax.infra.dao.qualification.dao; +import cn.axzo.orgmanax.dto.unit.enums.ApprovalStatusEnum; import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; import cn.axzo.orgmanax.infra.dao.qualification.mapper.QualificationsApplyMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Repository; +import java.util.Set; + /** * @author : zhanghonghao@axzo.cn * @since : 2024/12/24 @@ -12,4 +16,22 @@ import org.springframework.stereotype.Repository; @Repository public class QualificationsApplyDao extends ServiceImpl { + public void updateByPresenterPhoneAndNumber(String presenterPhone, String number, String fileName, String fileUrl) { + lambdaUpdate() + // 同一个提交人,相同的证书号 + .eq(QualificationsApply::getPresenterPhone, presenterPhone) + .eq(QualificationsApply::getNumber, number) + .set(StringUtils.isNotBlank(fileName), QualificationsApply::getFileName, fileName) + .set(StringUtils.isNotBlank(fileUrl), QualificationsApply::getFileUrl, fileUrl) + .update(); + } + + public void refuseByOuRegisterIds(Set ouRegisterIds, String approvalMsg) { + lambdaUpdate() + .in(QualificationsApply::getOuRegisterId, ouRegisterIds) + .set(QualificationsApply::getApprovalStatus, ApprovalStatusEnum.AUDIT_REFUSE.getValue()) + .set(QualificationsApply::getApprovalMsg, approvalMsg) + .update(); + } + } \ No newline at end of file diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/repository/QualificationsApplyUpsertRepository.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/repository/QualificationsApplyUpsertRepository.java new file mode 100644 index 0000000..b03017a --- /dev/null +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/repository/QualificationsApplyUpsertRepository.java @@ -0,0 +1,16 @@ +package cn.axzo.orgmanax.infra.dao.qualification.repository; + +import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; + +import java.util.Set; + +public interface QualificationsApplyUpsertRepository { + + void updateByPresenterPhoneAndNumber(String presenterPhone, String number, String fileName, String fileUrl); + + void updateByOuRegisterIds(Set ouRegisterIds, String approvalMsg); + + void update(QualificationsApply qualificationsApply); + + void delete(Long id); +} \ No newline at end of file diff --git a/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/repository/impl/QualificationsApplyUpsertRepositoryImpl.java b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/repository/impl/QualificationsApplyUpsertRepositoryImpl.java new file mode 100644 index 0000000..2f005a0 --- /dev/null +++ b/orgmanax-infra/src/main/java/cn/axzo/orgmanax/infra/dao/qualification/repository/impl/QualificationsApplyUpsertRepositoryImpl.java @@ -0,0 +1,46 @@ +package cn.axzo.orgmanax.infra.dao.qualification.repository.impl; + +import cn.axzo.orgmanax.infra.dao.qualification.dao.QualificationsApplyDao; +import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; +import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationsApplyUpsertRepository; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Set; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2025/1/10 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class QualificationsApplyUpsertRepositoryImpl implements QualificationsApplyUpsertRepository { + + private final QualificationsApplyDao qualificationsApplyDao; + + @Override + public void updateByPresenterPhoneAndNumber(String presenterPhone, String number, String fileName, String fileUrl) { + qualificationsApplyDao.updateByPresenterPhoneAndNumber(presenterPhone, number, fileName, fileUrl); + } + + @Override + public void updateByOuRegisterIds(Set ouRegisterIds, String approvalMsg) { + qualificationsApplyDao.refuseByOuRegisterIds(ouRegisterIds, approvalMsg); + } + + @Override + public void update(QualificationsApply qualificationsApply) { + qualificationsApplyDao.updateById(qualificationsApply); + } + + @Override + public void delete(Long id) { + qualificationsApplyDao.lambdaUpdate() + .setSql(" is_delete = id ") + .eq(QualificationsApply::getId, id) + .update(); + } + +} \ No newline at end of file diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/controller/UnitQualificationController.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/controller/UnitQualificationController.java index 11a36b9..66692b4 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/controller/UnitQualificationController.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/controller/UnitQualificationController.java @@ -9,6 +9,7 @@ import cn.axzo.orgmanax.dto.unit.qualification.dto.OrgQualificationsApplyDTO; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationOuTypeReq; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationReq; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationsApplyReq; +import cn.axzo.orgmanax.dto.unit.qualification.req.UpdateQualificationsApplyReq; import cn.axzo.orgmanax.server.unit.service.QualificationService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RequestMapping; @@ -47,4 +48,10 @@ public class UnitQualificationController implements OrgUnitQualificationApi { return ApiResult.success(qualificationService.listOuType(req)); } + @Override + public ApiResult updateQualificationsApply(UpdateQualificationsApplyReq req) { + qualificationService.updateQualificationsApply(req); + return ApiResult.success(); + } + } \ No newline at end of file diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/QualificationService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/QualificationService.java index 0915b7b..26ada0a 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/QualificationService.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/QualificationService.java @@ -7,6 +7,7 @@ import cn.axzo.orgmanax.dto.unit.qualification.dto.OrgQualificationsApplyDTO; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationOuTypeReq; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationReq; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationsApplyReq; +import cn.axzo.orgmanax.dto.unit.qualification.req.UpdateQualificationsApplyReq; import java.util.List; @@ -19,4 +20,7 @@ public interface QualificationService { PageResp listApply(ListQualificationsApplyReq req); PageResp listOuType(ListQualificationOuTypeReq req); + + void updateQualificationsApply(UpdateQualificationsApplyReq req); + } \ No newline at end of file diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/impl/QualificationServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/impl/QualificationServiceImpl.java index 460a455..4963037 100644 --- a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/impl/QualificationServiceImpl.java +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/impl/QualificationServiceImpl.java @@ -1,20 +1,26 @@ package cn.axzo.orgmanax.server.unit.service.impl; +import cn.axzo.foundation.exception.Axssert; import cn.axzo.foundation.page.PageResp; +import cn.axzo.orgmanax.common.config.BizResultCode; import cn.axzo.orgmanax.dto.unit.qualification.dto.OrgQualificationDTO; import cn.axzo.orgmanax.dto.unit.qualification.dto.OrgQualificationOuTypeDTO; import cn.axzo.orgmanax.dto.unit.qualification.dto.OrgQualificationsApplyDTO; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationOuTypeReq; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationReq; import cn.axzo.orgmanax.dto.unit.qualification.req.ListQualificationsApplyReq; +import cn.axzo.orgmanax.dto.unit.qualification.req.UpdateQualificationsApplyReq; +import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationOuTypeQueryRepository; import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationQueryRepository; import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationsApplyQueryRepository; import cn.axzo.orgmanax.server.unit.service.QualificationService; +import cn.axzo.orgmanax.server.unit.service.processor.QualificationApplyProcessor; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import java.util.Collections; @@ -33,6 +39,7 @@ public class QualificationServiceImpl implements QualificationService { private final QualificationOuTypeQueryRepository qualificationOuTypeQueryRepository; private final QualificationQueryRepository qualificationQueryRepository; private final QualificationsApplyQueryRepository qualificationsApplyQueryRepository; + private final ApplicationContext applicationContext; @Override public List getQualificationTypesByUnitId(Long unitId) { @@ -66,4 +73,23 @@ public class QualificationServiceImpl implements QualificationService { return PageResp.builder().current(page.getCurrent()).total(page.getTotal()).size(page.getSize()).data(BeanUtil.copyToList(page.getData(), OrgQualificationOuTypeDTO.class)).build(); } + @Override + public void updateQualificationsApply(UpdateQualificationsApplyReq req) { + // 通用check + Axssert.notNull(req.getAction(), BizResultCode.INVALID_PARAM, "执行行为不能为空"); + QualificationsApply apply = new QualificationsApply(); + apply.setId(req.getId()); + apply.setFileName(req.getFileName()); + apply.setFileUrl(req.getFileUrl()); + // 构建processor所需上下文 + QualificationApplyProcessor.ProcessContext processContext = QualificationApplyProcessor.ProcessContext.builder() + .action(req.getAction()) + .apply(apply) + .ouRegisterIds(req.getOuRegisterIds()) + .build(); + + QualificationApplyProcessor processor = applicationContext.getBean(req.getAction().getProcessor(), QualificationApplyProcessor.class); + processor.process(processContext); + } + } \ No newline at end of file diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/QualificationApplyProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/QualificationApplyProcessor.java new file mode 100644 index 0000000..b54f2b1 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/QualificationApplyProcessor.java @@ -0,0 +1,52 @@ +package cn.axzo.orgmanax.server.unit.service.processor; + +import cn.axzo.orgmanax.dto.unit.qualification.req.UpdateQualificationsApplyReq; +import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; +import lombok.*; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Set; + +public interface QualificationApplyProcessor { + + @Transactional(rollbackFor = Throwable.class) + QualificationApplyProcessor.ProcessResult process(QualificationApplyProcessor.ProcessContext context); + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + class ProcessContext { + QualificationsApply apply; + UpdateQualificationsApplyReq.Action action; + Set ouRegisterIds; + } + + @Getter + @Builder(access = AccessLevel.PRIVATE) + @AllArgsConstructor + class ProcessResult { + @Builder.Default + Boolean success = Boolean.TRUE; + + String msg; + + public static QualificationApplyProcessor.ProcessResult success() { + return QualificationApplyProcessor.ProcessResult.builder() + .success(true) + .build(); + } + + public static QualificationApplyProcessor.ProcessResult fail() { + return fail(null); + } + + public static QualificationApplyProcessor.ProcessResult fail(String msg) { + return QualificationApplyProcessor.ProcessResult.builder() + .success(false) + .msg(msg) + .build(); + } + + } +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/DeleteQualificationsApplyProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/DeleteQualificationsApplyProcessor.java new file mode 100644 index 0000000..5d11228 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/DeleteQualificationsApplyProcessor.java @@ -0,0 +1,25 @@ +package cn.axzo.orgmanax.server.unit.service.processor.impl; + +import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationsApplyUpsertRepository; +import cn.axzo.orgmanax.server.unit.service.processor.QualificationApplyProcessor; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2025/1/10 + */ +@Component +@Slf4j +@RequiredArgsConstructor +public class DeleteQualificationsApplyProcessor implements QualificationApplyProcessor { + + private final QualificationsApplyUpsertRepository upsertRepository; + + @Override + public ProcessResult process(ProcessContext context) { + upsertRepository.delete(context.getApply().getId()); + return ProcessResult.success(); + } +} diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/UpdateQualificationsApplyByOuRegisterProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/UpdateQualificationsApplyByOuRegisterProcessor.java new file mode 100644 index 0000000..0bc7de1 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/UpdateQualificationsApplyByOuRegisterProcessor.java @@ -0,0 +1,26 @@ +package cn.axzo.orgmanax.server.unit.service.processor.impl; + +import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationsApplyUpsertRepository; +import cn.axzo.orgmanax.server.unit.service.processor.QualificationApplyProcessor; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2025/1/10 + */ +@Component +@Slf4j +@RequiredArgsConstructor +public class UpdateQualificationsApplyByOuRegisterProcessor implements QualificationApplyProcessor { + + private final QualificationsApplyUpsertRepository upsertRepository; + + @Override + public ProcessResult process(ProcessContext context) { + upsertRepository.updateByOuRegisterIds(context.getOuRegisterIds(), context.getApply().getApprovalMsg()); + return ProcessResult.success(); + } + +} \ No newline at end of file diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/UpdateQualificationsApplyProcessor.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/UpdateQualificationsApplyProcessor.java new file mode 100644 index 0000000..10ab90f --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/service/processor/impl/UpdateQualificationsApplyProcessor.java @@ -0,0 +1,42 @@ +package cn.axzo.orgmanax.server.unit.service.processor.impl; + +import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; +import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationsApplyQueryRepository; +import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationsApplyUpsertRepository; +import cn.axzo.orgmanax.server.unit.service.processor.QualificationApplyProcessor; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2025/1/10 + */ +@Component +@Slf4j +@RequiredArgsConstructor +public class UpdateQualificationsApplyProcessor implements QualificationApplyProcessor { + + private final QualificationsApplyUpsertRepository upsertRepository; + private final QualificationsApplyQueryRepository queryRepository; + + @Override + public ProcessResult process(ProcessContext context) { + QualificationsApply apply = context.getApply(); + QualificationsApplyQueryRepository.OneReq req = QualificationsApplyQueryRepository.OneReq.builder() + .id(apply.getId()) + .build(); + QualificationsApplyQueryRepository.QualificationsApplyResp one = queryRepository.one(req); + if (one == null) { + throw new IllegalArgumentException("未找到对应的资质信息 id:" + req.getId()); + } + if (StringUtils.isNotBlank(one.getNumber())) { + upsertRepository.updateByPresenterPhoneAndNumber + (one.getPresenterPhone(), one.getNumber(), apply.getFileName(), apply.getFileUrl()); + } else { + upsertRepository.update(apply); + } + return ProcessResult.success(); + } +}