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 f5c5f82..b324c83 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 @@ -5,10 +5,7 @@ import cn.axzo.foundation.result.ApiResult; 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.dto.unit.qualification.req.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -51,6 +48,12 @@ public interface OrgUnitQualificationApi { @PostMapping("/api/org/qualification-ou-type/list") ApiResult> listOuType(@RequestBody @Validated ListQualificationOuTypeReq req); + /** + * 批量保存资质申请记录 + */ + @PostMapping("/api/org/qualifications-apply/saveBatch") + ApiResult qualificationsApplySaveBatch(@RequestBody @Validated SaveBatchQualificationsApplyReq 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/SaveBatchQualificationsApplyReq.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/SaveBatchQualificationsApplyReq.java new file mode 100644 index 0000000..b2ff5c9 --- /dev/null +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/SaveBatchQualificationsApplyReq.java @@ -0,0 +1,32 @@ +package cn.axzo.orgmanax.dto.unit.qualification.req; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2025/1/15 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class SaveBatchQualificationsApplyReq { + + /** + * 资质申请记录列表 + */ + @Valid + @NotEmpty(message = "资质申请记录列表不能为空") + private List qualificationsApplyList; + /** + * 操作人ID + */ + private Long operatorId; +} diff --git a/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/SaveQualificationsApplyReq.java b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/SaveQualificationsApplyReq.java new file mode 100644 index 0000000..82d87f4 --- /dev/null +++ b/orgmanax-dto/src/main/java/cn/axzo/orgmanax/dto/unit/qualification/req/SaveQualificationsApplyReq.java @@ -0,0 +1,140 @@ +package cn.axzo.orgmanax.dto.unit.qualification.req; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2024/12/26 + */ +@NoArgsConstructor +@AllArgsConstructor +@Data +@SuperBuilder +public class SaveQualificationsApplyReq { + + /** + * 单位/团队注册记录id + */ + private Long ouRegisterId; + + /** + * 单位id + */ + private Long ouId; + + /** + * 企业名称(冗余查询用) + */ + private String ouName; + + /** + * 企业主体类型(冗余查询用) + */ + private Integer mainBodyType; + + /** + * 证书名称 + * 1:建筑业企业资质证书 + * 2:房地产开发企业资质证书 + * 3:工程监理资质证书 + */ + private String name; + + /** + * 资质认证到期时间 + */ + private Date endTime; + + /** + * 资质文件名称 + */ + private String fileName; + + /** + * 资质文件url + */ + private String fileUrl; + + /** + * 审批状态 0:已撤销 10:审核中,20:审核拒绝,30:审核通过 与单位表的状态枚举一致 + */ + private Integer approvalStatus; + + /** + * 审批意见 + */ + private String approvalMsg; + + /** + * 审批人身份id + */ + private Long approver; + + /** + * 审批时间 + */ + private Date approvalTime; + + /** + * 操作日志: {"type":1,"time":1238988889} + * 动作类型: 1:资料完善 2:协议勾选 3:审核中(提交) 4:审核完成(通过/拒绝) + */ + private String actionLog; + + /** + * 提交人姓名 + */ + private String presenterName; + + /** + * 提交人手机号 + */ + private String presenterPhone; + + /** + * 证书编号 + */ + private String number; + + /** + * 资质序列/资质分类: 1:施工总承包 2:建设单位 3:监理单位 4:劳务分包 5:专业承包 30:其他 + * 建筑业企业资质证书--施工总承包、专业承包、劳务分包 + * 房地产开发企业资质证书--建设单位 + * 工程监理资质证书--监理单位 + * 其他 -- 自定义 + * REQ-1806 + */ + private Integer type; + + /** + * 资质类别(纯手录) + * REQ-1806 + */ + private String category; + + /** + * 资质等级 + * a. 房地产开发企业资质证书(壹级、贰级、叁级、肆级)、 + * b. 建筑业企业资质证书(特级、壹级、贰级、叁级、不分)、 + * c. 工程监理资质证书(甲级、乙级、丙级) + * REQ-1806 + */ + private String categoryLevel; + + /** + * 证书类型: 1:建筑业企业资质证书 2:房地产开发企业资质证书 3:工程监理资质证书 20:其他 + */ + private Integer qualificationType; + + /** + * 工作流实例id + */ + private String processInstanceId; + + +} \ 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 index b03017a..84e4c82 100644 --- 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 @@ -2,6 +2,7 @@ package cn.axzo.orgmanax.infra.dao.qualification.repository; import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; +import java.util.List; import java.util.Set; public interface QualificationsApplyUpsertRepository { @@ -13,4 +14,6 @@ public interface QualificationsApplyUpsertRepository { void update(QualificationsApply qualificationsApply); void delete(Long id); + + void saveBatch(List qualificationsApplyList); } \ 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 index 2f005a0..81a6381 100644 --- 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 @@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Set; /** @@ -43,4 +44,9 @@ public class QualificationsApplyUpsertRepositoryImpl implements QualificationsAp .update(); } + @Override + public void saveBatch(List qualificationsApplyList) { + qualificationsApplyDao.saveBatch(qualificationsApplyList); + } + } \ 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 66692b4..efee4bd 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 @@ -6,10 +6,7 @@ import cn.axzo.orgmanax.api.unit.feign.OrgUnitQualificationApi; 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.dto.unit.qualification.req.*; import cn.axzo.orgmanax.server.unit.service.QualificationService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RequestMapping; @@ -48,6 +45,12 @@ public class UnitQualificationController implements OrgUnitQualificationApi { return ApiResult.success(qualificationService.listOuType(req)); } + @Override + public ApiResult qualificationsApplySaveBatch(SaveBatchQualificationsApplyReq req) { + qualificationService.qualificationsApplySaveBatch(req); + return ApiResult.success(); + } + @Override public ApiResult updateQualificationsApply(UpdateQualificationsApplyReq req) { qualificationService.updateQualificationsApply(req); diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/QualificationFoundationService.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/QualificationFoundationService.java new file mode 100644 index 0000000..c565c45 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/QualificationFoundationService.java @@ -0,0 +1,10 @@ +package cn.axzo.orgmanax.server.unit.foundation; + +import cn.axzo.orgmanax.server.unit.foundation.dto.QualificationsApplyCreator; + +import java.util.List; + +public interface QualificationFoundationService { + + void saveApplyList(List applyList); +} \ No newline at end of file diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/dto/QualificationsApplyCreator.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/dto/QualificationsApplyCreator.java new file mode 100644 index 0000000..42558d6 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/dto/QualificationsApplyCreator.java @@ -0,0 +1,142 @@ +package cn.axzo.orgmanax.server.unit.foundation.dto; + +import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; +import cn.hutool.core.bean.BeanUtil; +import lombok.Data; + +import java.util.Date; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2025/1/15 + */ +@Data +public class QualificationsApplyCreator { + + /** + * 单位/团队注册记录id + */ + private Long ouRegisterId; + + /** + * 单位id + */ + private Long ouId; + + /** + * 企业名称(冗余查询用) + */ + private String ouName; + + /** + * 企业主体类型(冗余查询用) + */ + private Integer mainBodyType; + + /** + * 证书名称 + * 1:建筑业企业资质证书 + * 2:房地产开发企业资质证书 + * 3:工程监理资质证书 + */ + private String name; + + /** + * 资质认证到期时间 + */ + private Date endTime; + + /** + * 资质文件名称 + */ + private String fileName; + + /** + * 资质文件url + */ + private String fileUrl; + + /** + * 审批状态 0:已撤销 10:审核中,20:审核拒绝,30:审核通过 与单位表的状态枚举一致 + */ + private Integer approvalStatus; + + /** + * 审批意见 + */ + private String approvalMsg; + + /** + * 审批人身份id + */ + private Long approver; + + /** + * 审批时间 + */ + private Date approvalTime; + + /** + * 操作日志: {"type":1,"time":1238988889} + * 动作类型: 1:资料完善 2:协议勾选 3:审核中(提交) 4:审核完成(通过/拒绝) + */ + private String actionLog; + + /** + * 提交人姓名 + */ + private String presenterName; + + /** + * 提交人手机号 + */ + private String presenterPhone; + + /** + * 证书编号 + */ + private String number; + + /** + * 资质序列/资质分类: 1:施工总承包 2:建设单位 3:监理单位 4:劳务分包 5:专业承包 30:其他 + * 建筑业企业资质证书--施工总承包、专业承包、劳务分包 + * 房地产开发企业资质证书--建设单位 + * 工程监理资质证书--监理单位 + * 其他 -- 自定义 + * REQ-1806 + */ + private Integer type; + + /** + * 资质类别(纯手录) + * REQ-1806 + */ + private String category; + + /** + * 资质等级 + * a. 房地产开发企业资质证书(壹级、贰级、叁级、肆级)、 + * b. 建筑业企业资质证书(特级、壹级、贰级、叁级、不分)、 + * c. 工程监理资质证书(甲级、乙级、丙级) + * REQ-1806 + */ + private String categoryLevel; + + /** + * 证书类型: 1:建筑业企业资质证书 2:房地产开发企业资质证书 3:工程监理资质证书 20:其他 + */ + private Integer qualificationType; + + /** + * 工作流实例id + */ + private String processInstanceId; + + /** + * 转换实体 + */ + public QualificationsApply toEntity() { + return BeanUtil.copyProperties(this, QualificationsApply.class); + } + +} \ No newline at end of file diff --git a/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/impl/QualificationFoundationServiceImpl.java b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/impl/QualificationFoundationServiceImpl.java new file mode 100644 index 0000000..a6d5b39 --- /dev/null +++ b/orgmanax-server/src/main/java/cn/axzo/orgmanax/server/unit/foundation/impl/QualificationFoundationServiceImpl.java @@ -0,0 +1,30 @@ +package cn.axzo.orgmanax.server.unit.foundation.impl; + +import cn.axzo.orgmanax.infra.dao.qualification.entity.QualificationsApply; +import cn.axzo.orgmanax.infra.dao.qualification.repository.QualificationsApplyUpsertRepository; +import cn.axzo.orgmanax.server.unit.foundation.QualificationFoundationService; +import cn.axzo.orgmanax.server.unit.foundation.dto.QualificationsApplyCreator; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author : zhanghonghao@axzo.cn + * @since : 2025/1/15 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class QualificationFoundationServiceImpl implements QualificationFoundationService { + + private final QualificationsApplyUpsertRepository qualificationsApplyUpsertRepository; + + @Override + public void saveApplyList(List applyCreatorList) { + List contactList = applyCreatorList.stream().map(QualificationsApplyCreator::toEntity).collect(Collectors.toList()); + qualificationsApplyUpsertRepository.saveBatch(contactList); + } +} \ 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 26ada0a..fbb2274 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 @@ -4,10 +4,7 @@ import cn.axzo.foundation.page.PageResp; 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.dto.unit.qualification.req.*; import java.util.List; @@ -23,4 +20,5 @@ public interface QualificationService { void updateQualificationsApply(UpdateQualificationsApplyReq req); + void qualificationsApplySaveBatch(SaveBatchQualificationsApplyReq 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 4963037..64b50a7 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 @@ -6,14 +6,13 @@ 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.dto.unit.qualification.req.*; 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.foundation.QualificationFoundationService; +import cn.axzo.orgmanax.server.unit.foundation.dto.QualificationsApplyCreator; import cn.axzo.orgmanax.server.unit.service.QualificationService; import cn.axzo.orgmanax.server.unit.service.processor.QualificationApplyProcessor; import cn.hutool.core.bean.BeanUtil; @@ -39,6 +38,7 @@ public class QualificationServiceImpl implements QualificationService { private final QualificationOuTypeQueryRepository qualificationOuTypeQueryRepository; private final QualificationQueryRepository qualificationQueryRepository; private final QualificationsApplyQueryRepository qualificationsApplyQueryRepository; + private final QualificationFoundationService qualificationFoundationService; private final ApplicationContext applicationContext; @Override @@ -92,4 +92,10 @@ public class QualificationServiceImpl implements QualificationService { processor.process(processContext); } + @Override + public void qualificationsApplySaveBatch(SaveBatchQualificationsApplyReq req) { + List applyList = BeanUtil.copyToList(req.getQualificationsApplyList(), QualificationsApplyCreator.class); + qualificationFoundationService.saveApplyList(applyList); + } + } \ No newline at end of file