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

Feature/req 3488 zhh

See merge request universal/infrastructure/backend/orgmanax!45
This commit is contained in:
张弘昊 2024-12-26 09:06:54 +00:00
commit e169a0a178
19 changed files with 814 additions and 3 deletions

View File

@ -4,6 +4,8 @@ package cn.axzo.orgmanax.api.unit.feign;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.orgmanax.dto.unit.register.dto.OrgUnitRegisterDTO;
import cn.axzo.orgmanax.dto.unit.register.dto.OrgUnitRegisterHistoryDTO;
import cn.axzo.orgmanax.dto.unit.register.req.ListUnitRegisterHistoryReq;
import cn.axzo.orgmanax.dto.unit.register.req.ListUnitRegisterReq;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
@ -26,4 +28,10 @@ public interface OrgUnitRegisterApi {
@PostMapping("/api/org/unit/register/list")
ApiResult<PageResp<OrgUnitRegisterDTO>> list(@RequestBody @Validated ListUnitRegisterReq req);
}
/**
* 分页获取企业入驻历史信息
*/
@PostMapping("/api/org/unit/register/history/list")
ApiResult<PageResp<OrgUnitRegisterHistoryDTO>> listHistory(@RequestBody @Validated ListUnitRegisterHistoryReq req);
}

View File

@ -0,0 +1,52 @@
package cn.axzo.orgmanax.dto.unit.register.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Accessors(chain = true)
public class OrgUnitRegisterContactDTO implements Serializable {
/**
* 联系人id(新增时不传修改时需要传)
*/
private Long id;
/**
* 单位id
*/
private Long organizationalUnitId;
/**
* 联系人姓名
*/
private String name;
/**
* 联系人手机号码
*/
private String phone;
/**
* 联系人职务
*/
private String position;
/**
* 备注
*/
private String memo;
}

View File

@ -7,6 +7,7 @@ import lombok.experimental.SuperBuilder;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@NoArgsConstructor
@SuperBuilder
@ -18,6 +19,10 @@ public class OrgUnitRegisterDTO implements Serializable {
* 主键id
*/
private long id;
/**
* 单位id(审批通过时有效)
*/
private Long ouId;
/**
* 单位名称
@ -28,6 +33,10 @@ public class OrgUnitRegisterDTO implements Serializable {
* 提交时间
*/
private Date submissionTime;
/**
* 审批时间
*/
private Date approvalTime;
/**
* 状态0:已撤销 10:审核中,20:审核拒绝,30:审核通过
@ -59,4 +68,24 @@ public class OrgUnitRegisterDTO implements Serializable {
*/
private Integer registerType;
/**
* 用户确认状态 1已确认有用户确认时间 2未确认
*/
private Integer confirmStatus = 2;
/**
* 操作日志
*/
private List<OrgUnitRegisterLogDTO> ouRegisterLogs;
/**
* 主要人员信息
*/
private List<OrgUnitRegisterContactDTO> contactList;
/**
* 团队类型个人实名数据 {name:"姓名",phone:"手机号",idNumber:"身份证号",idFrontPhoto:"身份证正面照",idBackPhoto:"身份证反面照",faceUrl:"人脸照片"}
*/
private OrgUnitRegisterRealNameDTO corpsRealNameObj;
}

View File

@ -0,0 +1,52 @@
package cn.axzo.orgmanax.dto.unit.register.dto;
import lombok.Data;
import java.util.Date;
@Data
public class OrgUnitRegisterHistoryDTO {
private Long id;
/**
* 单位注册记录id
*/
private String applyNum;
/**
* 企业统一社会信用代码
*/
private String usccNumber;
/**
* 动作类型 1提交申请 2重新提交 3审核通过 4审核拒绝
*/
private Integer activeType;
/**
* 操作人身份id
*/
private Long actorId;
/**
* 操作人姓名
*/
private String actorName;
/**
* 备注
*/
private String comment;
/**
* 创建时间
*/
private Date createAt;
/**
* 申请人手机号
*/
private String applyPhone;
}

View File

@ -0,0 +1,21 @@
package cn.axzo.orgmanax.dto.unit.register.dto;
import lombok.Data;
/**
* 单位注册操作日志
*/
@Data
public class OrgUnitRegisterLogDTO {
/**
* 动作类型: 1:资料完善 2:协议勾选 3:审核中(提交) 4:审核完成(通过/拒绝)
*/
private Integer type;
/**
* 动作发生时间
*/
private Long time;
}

View File

@ -0,0 +1,41 @@
package cn.axzo.orgmanax.dto.unit.register.dto;
import lombok.Data;
/**
* 实名制
*/
@Data
public class OrgUnitRegisterRealNameDTO {
/**
* 姓名
*/
private String name;
/**
* 手机号
*/
private String phone;
/**
* 身份证号
*/
private String idNumber;
/**
* 身份证正面照
*/
private String idFrontPhoto;
/**
* 身份证反面照
*/
private String idBackPhoto;
/**
* 人脸照片
*/
private String faceUrl;
}

View File

@ -0,0 +1,30 @@
package cn.axzo.orgmanax.dto.unit.register.req;
import cn.axzo.foundation.page.PageReqV2;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author : zhanghonghao@axzo.cn
* @since : 2024/12/26
*/
@EqualsAndHashCode(callSuper = true)
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class ListUnitRegisterHistoryReq extends PageReqV2 {
/**
* 统一社会信用代码
*/
private String usccNumber;
/**
* 申请人手机号
*/
private String applyPhone;
}

View File

@ -62,4 +62,23 @@ public class ListUnitRegisterReq extends PageReqV2 {
**/
private Integer registerType;
/**
* 统一社会信用代码
*/
private String uniformSocialCreditCode;
/**
* 单位id
*/
private Long organizationalUnitId;
/**
* 工作流实例id
*/
private String processInstanceId;
/**
* 联系人&提交人手机号
*/
private String contactPhone;
}

View File

@ -0,0 +1,15 @@
package cn.axzo.orgmanax.infra.dao.register.dao;
import cn.axzo.orgmanax.infra.dao.register.entity.OuRegisterHistory;
import cn.axzo.orgmanax.infra.dao.register.mapper.OuRegisterHistoryMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Repository;
/**
* @author : zhanghonghao@axzo.cn
* @since : 2024/12/26
*/
@Repository
public class OuRegisterHistoryDao extends ServiceImpl<OuRegisterHistoryMapper, OuRegisterHistory> {
}

View File

@ -0,0 +1,87 @@
package cn.axzo.orgmanax.infra.dao.register.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;
import java.io.Serializable;
import java.util.Date;
/**
* 企业入驻历史
*
* @author makejava
* @since 2022-06-05 10:59:30
*/
@Data
@TableName(value = "ou_register_history", autoResultMap = true)
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
public class OuRegisterHistory implements Serializable {
private static final long serialVersionUID = -92011957938725711L;
/**
* 主键
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 单位注册记录id
*/
private String applyNum;
/**
* 企业统一社会信用代码
*/
private String usccNumber;
/**
* 动作类型 1提交申请 2重新提交 3审核通过 4审核拒绝
*/
private Integer activeType;
/**
* 操作人身份id
*/
private Long actorId;
/**
* 操作人姓名
*/
private String actorName;
/**
* 备注
*/
private String comment;
/**
* 申请人手机号
*/
private String applyPhone;
/**
* 是否删除 0否,其他是
*/
private Long isDelete = 0L;
/**
* 创建时间
*/
private Date createAt;
/**
* 更新时间
*/
private Date updateAt;
}

View File

@ -0,0 +1,10 @@
package cn.axzo.orgmanax.infra.dao.register.mapper;
import cn.axzo.orgmanax.infra.dao.register.entity.OuRegisterHistory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OuRegisterHistoryMapper extends BaseMapper<OuRegisterHistory> {
}

View File

@ -1,4 +1,137 @@
package cn.axzo.orgmanax.infra.dao.register.repository;
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
import cn.axzo.foundation.dao.support.wrapper.Operator;
import cn.axzo.foundation.page.IPageReq;
import cn.axzo.foundation.page.PageReqV2;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.infra.dao.register.entity.OrganizationalUnitRegister;
import cn.hutool.core.bean.BeanUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.Set;
public interface OrganizationalUnitRegisterQueryRepository {
PageResp<OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp> page(OrganizationalUnitRegisterQueryRepository.ListReq paramReq);
default List<OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp> list(OrganizationalUnitRegisterQueryRepository.ListReq req) {
OrganizationalUnitRegisterQueryRepository.PageReq pageReq = BeanUtil.toBean(req, OrganizationalUnitRegisterQueryRepository.PageReq.class);
pageReq.setPage(1);
pageReq.setPageSize(1000);
return page(pageReq).getData();
}
default OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp one(OrganizationalUnitRegisterQueryRepository.OneReq req) {
return oneOpt(req).orElse(null);
}
default Optional<OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp> oneOpt(OrganizationalUnitRegisterQueryRepository.OneReq req) {
req.check();
OrganizationalUnitRegisterQueryRepository.PageReq page = BeanUtil.toBean(req, OrganizationalUnitRegisterQueryRepository.PageReq.class);
page.setPage(1);
page.setPageSize(1);
return page(page).getData().stream().findFirst();
}
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class OneReq {
/**
* id
*/
private Long id;
/**
* id集合
*/
private Set<Long> ids;
/**
* 企业主体类型(冗余查询用)
*/
private Integer mainBodyType;
/**
* 名称
*/
private String name;
public void check() {
}
}
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class ListReq extends PageReqV2 {
@CriteriaField
private Long id;
@CriteriaField(field = "id", operator = Operator.IN)
private Set<Long> ids;
/**
* 用于遍历数据
*/
@CriteriaField(field = "id", operator = Operator.GT)
private Long idGt;
@CriteriaField(field = "approvalStatus", operator = Operator.IN)
private Set<Integer> approvalStatusList;
@CriteriaField(field = "name", operator = Operator.SW)
private String nameRightLike;
@CriteriaField
private String name;
@CriteriaField(field = "submissionTime", operator = Operator.GE)
private Date submissionTimeStart;
@CriteriaField(field = "submissionTime", operator = Operator.LE)
private Date submissionTimeEnd;
@CriteriaField
private String contactPhone;
@CriteriaField
private Integer mainBodyType;
@CriteriaField
private String uniformSocialCreditCode;
@CriteriaField
private Long organizationalUnitId;
@CriteriaField
private String processInstanceId;
@CriteriaField(ignore = true)
private Boolean includeDeleted;
}
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class PageReq extends OrganizationalUnitRegisterQueryRepository.ListReq implements IPageReq {
@CriteriaField(ignore = true)
Integer page;
@CriteriaField(ignore = true)
Integer pageSize;
@CriteriaField(ignore = true)
List<String> sort;
}
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class OrganizationalUnitRegisterResp extends OrganizationalUnitRegister {
// 按需扩展字段占个位避免报错
private String todo;
}
}

View File

@ -0,0 +1,122 @@
package cn.axzo.orgmanax.infra.dao.register.repository;
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
import cn.axzo.foundation.dao.support.wrapper.Operator;
import cn.axzo.foundation.page.IPageReq;
import cn.axzo.foundation.page.PageReqV2;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.infra.dao.register.entity.OuRegisterHistory;
import cn.hutool.core.bean.BeanUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
import java.util.Optional;
import java.util.Set;
public interface OuRegisterHistoryQueryRepository {
PageResp<OuRegisterHistoryQueryRepository.OuRegisterHistoryResp> page(OuRegisterHistoryQueryRepository.ListReq paramReq);
default List<OuRegisterHistoryQueryRepository.OuRegisterHistoryResp> list(OuRegisterHistoryQueryRepository.ListReq req) {
OuRegisterHistoryQueryRepository.PageReq pageReq = BeanUtil.toBean(req, OuRegisterHistoryQueryRepository.PageReq.class);
pageReq.setPage(1);
pageReq.setPageSize(1000);
return page(pageReq).getData();
}
default OuRegisterHistoryQueryRepository.OuRegisterHistoryResp one(OuRegisterHistoryQueryRepository.OneReq req) {
return oneOpt(req).orElse(null);
}
default Optional<OuRegisterHistoryQueryRepository.OuRegisterHistoryResp> oneOpt(OuRegisterHistoryQueryRepository.OneReq req) {
req.check();
OuRegisterHistoryQueryRepository.PageReq page = BeanUtil.toBean(req, OuRegisterHistoryQueryRepository.PageReq.class);
page.setPage(1);
page.setPageSize(1);
return page(page).getData().stream().findFirst();
}
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class OneReq {
/**
* id
*/
private Long id;
/**
* 申请人手机号
*/
private String applyPhone;
/**
* 企业统一社会信用代码
*/
private String usccNumber;
public void check() {
}
}
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class ListReq extends PageReqV2 {
@CriteriaField
private Long id;
@CriteriaField(field = "id", operator = Operator.IN)
private Set<Long> ids;
/**
* 用于遍历数据
*/
@CriteriaField(field = "id", operator = Operator.GT)
private Long idGt;
/**
* 申请人手机号
*/
@CriteriaField
private String applyPhone;
/**
* 企业统一社会信用代码
*/
@CriteriaField
private String usccNumber;
@CriteriaField(ignore = true)
private Boolean includeDeleted;
}
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class PageReq extends OuRegisterHistoryQueryRepository.ListReq implements IPageReq {
@CriteriaField(ignore = true)
Integer page;
@CriteriaField(ignore = true)
Integer pageSize;
@CriteriaField(ignore = true)
List<String> sort;
}
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Data
@SuperBuilder
class OuRegisterHistoryResp extends OuRegisterHistory {
// 按需扩展字段占个位避免报错
private String todo;
}
}

View File

@ -1,10 +1,44 @@
package cn.axzo.orgmanax.infra.dao.register.repository.impl;
import cn.axzo.foundation.dao.support.converter.PageConverter;
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.infra.dao.register.dao.OrganizationalUnitRegisterDao;
import cn.axzo.orgmanax.infra.dao.register.entity.OrganizationalUnitRegister;
import cn.axzo.orgmanax.infra.dao.register.repository.OrganizationalUnitRegisterQueryRepository;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author : zhanghonghao@axzo.cn
* @since : 2024/12/26
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class OrganizationalUnitRegisterQueryRepositoryImpl implements OrganizationalUnitRegisterQueryRepository {
private final OrganizationalUnitRegisterDao organizationalUnitRegisterDao;
@Override
public PageResp<OrganizationalUnitRegisterResp> page(ListReq req) {
IPage<OrganizationalUnitRegister> page = PageConverter.toMybatis(req, OrganizationalUnitRegister.class);
QueryWrapper<OrganizationalUnitRegister> wrapper = QueryWrapperHelper.fromBean(req, OrganizationalUnitRegister.class);
if (!BooleanUtil.isTrue(req.getIncludeDeleted())) {
wrapper.eq("is_delete", 0);
}
IPage<OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp> results = organizationalUnitRegisterDao.page(page, wrapper).convert(e -> BeanUtil.toBean(e, OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp.class));
PageResp<OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp> resp = PageConverter.toResp(results);
List<OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp> records = resp.getData();
CollUtil.isEmpty(records);
return resp;
}
}

View File

@ -0,0 +1,44 @@
package cn.axzo.orgmanax.infra.dao.register.repository.impl;
import cn.axzo.foundation.dao.support.converter.PageConverter;
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.infra.dao.register.dao.OuRegisterHistoryDao;
import cn.axzo.orgmanax.infra.dao.register.entity.OuRegisterHistory;
import cn.axzo.orgmanax.infra.dao.register.repository.OuRegisterHistoryQueryRepository;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author : zhanghonghao@axzo.cn
* @since : 2024/12/26
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class OuRegisterHistoryQueryRepositoryImpl implements OuRegisterHistoryQueryRepository {
private final OuRegisterHistoryDao ouRegisterHistoryDao;
@Override
public PageResp<OuRegisterHistoryResp> page(ListReq req) {
IPage<OuRegisterHistory> page = PageConverter.toMybatis(req, OuRegisterHistory.class);
QueryWrapper<OuRegisterHistory> wrapper = QueryWrapperHelper.fromBean(req, OuRegisterHistory.class);
if (!BooleanUtil.isTrue(req.getIncludeDeleted())) {
wrapper.eq("is_delete", 0);
}
IPage<OuRegisterHistoryQueryRepository.OuRegisterHistoryResp> results = ouRegisterHistoryDao.page(page, wrapper).convert(e -> BeanUtil.toBean(e, OuRegisterHistoryQueryRepository.OuRegisterHistoryResp.class));
PageResp<OuRegisterHistoryQueryRepository.OuRegisterHistoryResp> resp = PageConverter.toResp(results);
List<OuRegisterHistoryQueryRepository.OuRegisterHistoryResp> records = resp.getData();
CollUtil.isEmpty(records);
return resp;
}
}

View File

@ -4,7 +4,10 @@ import cn.axzo.foundation.page.PageResp;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.orgmanax.api.unit.feign.OrgUnitRegisterApi;
import cn.axzo.orgmanax.dto.unit.register.dto.OrgUnitRegisterDTO;
import cn.axzo.orgmanax.dto.unit.register.dto.OrgUnitRegisterHistoryDTO;
import cn.axzo.orgmanax.dto.unit.register.req.ListUnitRegisterHistoryReq;
import cn.axzo.orgmanax.dto.unit.register.req.ListUnitRegisterReq;
import cn.axzo.orgmanax.server.unit.service.RegisterService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -18,9 +21,16 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
public class UnitRegisterController implements OrgUnitRegisterApi {
private final RegisterService registerService;
@Override
public ApiResult<PageResp<OrgUnitRegisterDTO>> list(ListUnitRegisterReq req) {
return null;
return ApiResult.success(registerService.list(req));
}
@Override
public ApiResult<PageResp<OrgUnitRegisterHistoryDTO>> listHistory(ListUnitRegisterHistoryReq req) {
return ApiResult.success(registerService.listHistory(req));
}
}

View File

@ -1,4 +1,17 @@
package cn.axzo.orgmanax.server.unit.service;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.dto.unit.register.dto.OrgUnitRegisterDTO;
import cn.axzo.orgmanax.dto.unit.register.dto.OrgUnitRegisterHistoryDTO;
import cn.axzo.orgmanax.dto.unit.register.req.ListUnitRegisterHistoryReq;
import cn.axzo.orgmanax.dto.unit.register.req.ListUnitRegisterReq;
public interface RegisterService {
}
/**
* 查询单位注册信息
*/
PageResp<OrgUnitRegisterDTO> list(ListUnitRegisterReq req);
PageResp<OrgUnitRegisterHistoryDTO> listHistory(ListUnitRegisterHistoryReq req);
}

View File

@ -0,0 +1,73 @@
package cn.axzo.orgmanax.server.unit.service.impl;
import cn.axzo.foundation.page.PageResp;
import cn.axzo.orgmanax.dto.unit.register.dto.*;
import cn.axzo.orgmanax.dto.unit.register.req.ListUnitRegisterHistoryReq;
import cn.axzo.orgmanax.dto.unit.register.req.ListUnitRegisterReq;
import cn.axzo.orgmanax.infra.dao.register.repository.OrganizationalUnitRegisterQueryRepository;
import cn.axzo.orgmanax.infra.dao.register.repository.OuRegisterHistoryQueryRepository;
import cn.axzo.orgmanax.server.unit.service.RegisterService;
import cn.axzo.orgmanax.server.util.mapstruct.UnitRegisterContactMapStruct;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author : zhanghonghao@axzo.cn
* @since : 2024/12/26
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class RegisterServiceImpl implements RegisterService {
private final OrganizationalUnitRegisterQueryRepository organizationalUnitRegisterQueryRepository;
private final OuRegisterHistoryQueryRepository ouRegisterHistoryQueryRepository;
@Override
public PageResp<OrgUnitRegisterDTO> list(ListUnitRegisterReq req) {
OrganizationalUnitRegisterQueryRepository.ListReq listReq = BeanUtil.copyProperties(req, OrganizationalUnitRegisterQueryRepository.ListReq.class);
PageResp<OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp> page = organizationalUnitRegisterQueryRepository.page(listReq);
return PageResp.<OrgUnitRegisterDTO>builder()
.current(page.getCurrent())
.total(page.getTotal())
.size(page.getSize())
.data(page.getData().stream().map(this::transformToRegisterDTO).collect(Collectors.toList()))
.build();
}
@Override
public PageResp<OrgUnitRegisterHistoryDTO> listHistory(ListUnitRegisterHistoryReq req) {
OuRegisterHistoryQueryRepository.ListReq listReq = BeanUtil.copyProperties(req, OuRegisterHistoryQueryRepository.ListReq.class);
PageResp<OuRegisterHistoryQueryRepository.OuRegisterHistoryResp> page = ouRegisterHistoryQueryRepository.page(listReq);
return PageResp.<OrgUnitRegisterHistoryDTO>builder()
.current(page.getCurrent())
.total(page.getTotal())
.size(page.getSize())
.data(BeanUtil.copyToList(page.getData(), OrgUnitRegisterHistoryDTO.class))
.build();
}
private OrgUnitRegisterDTO transformToRegisterDTO(OrganizationalUnitRegisterQueryRepository.OrganizationalUnitRegisterResp registerResp) {
OrgUnitRegisterDTO registerDTO = BeanUtil.copyProperties(registerResp, OrgUnitRegisterDTO.class);
if (StringUtils.isNotBlank(registerResp.getCorpsRealName())) {
registerDTO.setCorpsRealNameObj(JSONUtil.toBean(registerResp.getCorpsRealName(), OrgUnitRegisterRealNameDTO.class));
}
registerDTO.setConfirmStatus(Objects.isNull(registerResp.getConfirmAt()) ? 2 : 1);
registerDTO.setOuRegisterLogs(JSONUtil.toList(registerResp.getActionLog(), OrgUnitRegisterLogDTO.class));
registerDTO.setRegisterType(registerResp.getMainBodyType());
List<OrgUnitRegisterContactDTO> contactResList = UnitRegisterContactMapStruct.INSTANCE.neat2ResList(registerResp.safeGetContactExtra().getContactList());
registerDTO.setContactList(contactResList);
registerDTO.setOuId(registerResp.getOrganizationalUnitId());
registerDTO.setApprovalTime(Objects.equals(registerResp.getApprovalStatus(), 30) ? registerResp.getApprovalTime() : null);
return registerDTO;
}
}

View File

@ -0,0 +1,18 @@
package cn.axzo.orgmanax.server.util.mapstruct;
import cn.axzo.orgmanax.dto.unit.register.dto.OrgUnitRegisterContactDTO;
import cn.axzo.orgmanax.infra.dao.register.entity.NeatContact;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface UnitRegisterContactMapStruct {
UnitRegisterContactMapStruct INSTANCE = Mappers.getMapper(UnitRegisterContactMapStruct.class);
OrgUnitRegisterContactDTO neat2Res(NeatContact req);
List<OrgUnitRegisterContactDTO> neat2ResList(List<NeatContact> req);
}