Merge branch 'feature/REQ-3488-zhh' into 'feature/REQ-3488'

feat(REQ-3488): 批量保存资质申请记录接口实现

See merge request universal/infrastructure/backend/orgmanax!179
This commit is contained in:
张弘昊 2025-01-15 05:43:33 +00:00
commit b351cdba8e
11 changed files with 389 additions and 16 deletions

View File

@ -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<PageResp<OrgQualificationOuTypeDTO>> listOuType(@RequestBody @Validated ListQualificationOuTypeReq req);
/**
* 批量保存资质申请记录
*/
@PostMapping("/api/org/qualifications-apply/saveBatch")
ApiResult<Void> qualificationsApplySaveBatch(@RequestBody @Validated SaveBatchQualificationsApplyReq req);
@PostMapping("/api/org/qualifications-apply/update")
ApiResult<Void> updateQualificationsApply(@RequestBody @Validated UpdateQualificationsApplyReq req);
}

View File

@ -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<SaveQualificationsApplyReq> qualificationsApplyList;
/**
* 操作人ID
*/
private Long operatorId;
}

View File

@ -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;
}

View File

@ -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<QualificationsApply> qualificationsApplyList);
}

View File

@ -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<QualificationsApply> qualificationsApplyList) {
qualificationsApplyDao.saveBatch(qualificationsApplyList);
}
}

View File

@ -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<Void> qualificationsApplySaveBatch(SaveBatchQualificationsApplyReq req) {
qualificationService.qualificationsApplySaveBatch(req);
return ApiResult.success();
}
@Override
public ApiResult<Void> updateQualificationsApply(UpdateQualificationsApplyReq req) {
qualificationService.updateQualificationsApply(req);

View File

@ -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<QualificationsApplyCreator> applyList);
}

View File

@ -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);
}
}

View File

@ -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<QualificationsApplyCreator> applyCreatorList) {
List<QualificationsApply> contactList = applyCreatorList.stream().map(QualificationsApplyCreator::toEntity).collect(Collectors.toList());
qualificationsApplyUpsertRepository.saveBatch(contactList);
}
}

View File

@ -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);
}

View File

@ -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<QualificationsApplyCreator> applyList = BeanUtil.copyToList(req.getQualificationsApplyList(), QualificationsApplyCreator.class);
qualificationFoundationService.saveApplyList(applyList);
}
}