Merge remote-tracking branch 'origin/feature/REQ-3488' into feature/REQ-3488
This commit is contained in:
commit
3f14007bf9
@ -32,6 +32,14 @@
|
||||
<groupId>cn.axzo.orgmanax</groupId>
|
||||
<artifactId>orgmanax-dto</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish</groupId>
|
||||
<artifactId>javax.el</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.glassfish</groupId>
|
||||
<artifactId>jakarta.el</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,101 @@
|
||||
package cn.axzo.orgmanax.common;
|
||||
|
||||
import cn.axzo.orgmanax.dto.cooperateship.dto.OrgCooperateShipDTO;
|
||||
import cn.hutool.extra.validation.BeanValidationResult;
|
||||
import org.hibernate.validator.HibernateValidator;
|
||||
import org.hibernate.validator.PredefinedScopeHibernateValidator;
|
||||
|
||||
import javax.validation.ConstraintViolation;
|
||||
import javax.validation.Validation;
|
||||
import javax.validation.Validator;
|
||||
import javax.validation.ValidatorFactory;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @Author: LiuYang
|
||||
* @Date: 2024/2/1 14:13
|
||||
*/
|
||||
public class ValidationUtil {
|
||||
|
||||
|
||||
/**
|
||||
* 默认{@link Validator} 对象
|
||||
*/
|
||||
private static final Validator validator;
|
||||
|
||||
static {
|
||||
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()){
|
||||
validator = factory.getValidator();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验对象
|
||||
*
|
||||
* @param <T> Bean类型
|
||||
* @param bean bean
|
||||
* @param groups 校验组
|
||||
* @return {@link Set}
|
||||
*/
|
||||
public static <T> Set<ConstraintViolation<T>> validate(T bean, Class<?>... groups) {
|
||||
return validator.validate(bean, groups);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验bean的某一个属性
|
||||
*
|
||||
* @param <T> Bean类型
|
||||
* @param bean bean
|
||||
* @param propertyName 属性名称
|
||||
* @param groups 验证分组
|
||||
* @return {@link Set}
|
||||
*/
|
||||
public static <T> Set<ConstraintViolation<T>> validateProperty(T bean, String propertyName, Class<?>... groups) {
|
||||
return validator.validateProperty(bean, propertyName, groups);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验对象
|
||||
*
|
||||
* @param <T> Bean类型
|
||||
* @param bean bean
|
||||
* @param groups 校验组
|
||||
* @return {@link BeanValidationResult}
|
||||
*/
|
||||
public static <T> BeanValidationResult warpValidate(T bean, Class<?>... groups) {
|
||||
return warpBeanValidationResult(validate(bean, groups));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 校验bean的某一个属性
|
||||
*
|
||||
* @param <T> bean类型
|
||||
* @param bean bean
|
||||
* @param propertyName 属性名称
|
||||
* @param groups 验证分组
|
||||
* @return {@link BeanValidationResult}
|
||||
*/
|
||||
public static <T> BeanValidationResult warpValidateProperty(T bean, String propertyName, Class<?>... groups) {
|
||||
return warpBeanValidationResult(validateProperty(bean, propertyName, groups));
|
||||
}
|
||||
|
||||
/**
|
||||
* 包装校验结果
|
||||
*
|
||||
* @param constraintViolations 校验结果集
|
||||
* @return {@link BeanValidationResult}
|
||||
*/
|
||||
private static <T> BeanValidationResult warpBeanValidationResult(Set<ConstraintViolation<T>> constraintViolations) {
|
||||
BeanValidationResult result = new BeanValidationResult(constraintViolations.isEmpty());
|
||||
for (ConstraintViolation<T> constraintViolation : constraintViolations) {
|
||||
BeanValidationResult.ErrorMessage errorMessage = new BeanValidationResult.ErrorMessage();
|
||||
errorMessage.setPropertyName(constraintViolation.getPropertyPath().toString());
|
||||
errorMessage.setMessage(constraintViolation.getMessage());
|
||||
errorMessage.setValue(constraintViolation.getInvalidValue());
|
||||
result.addErrorMessage(errorMessage);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@ -7,6 +7,7 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@ -19,6 +20,7 @@ public class OrgCooperateShipDTO implements Serializable {
|
||||
/**
|
||||
* 主健
|
||||
*/
|
||||
@NotNull
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
||||
@ -17,6 +17,8 @@ import java.util.Date;
|
||||
@SuperBuilder
|
||||
public class SaveQualificationsApplyReq {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单位/团队注册记录id
|
||||
*/
|
||||
|
||||
@ -46,7 +46,7 @@ public class QualificationsApplyUpsertRepositoryImpl implements QualificationsAp
|
||||
|
||||
@Override
|
||||
public void saveBatch(List<QualificationsApply> qualificationsApplyList) {
|
||||
qualificationsApplyDao.saveBatch(qualificationsApplyList);
|
||||
qualificationsApplyDao.saveOrUpdateBatch(qualificationsApplyList);
|
||||
}
|
||||
|
||||
}
|
||||
@ -6,6 +6,9 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -15,46 +18,55 @@ public class CooperateShipCreator {
|
||||
/**
|
||||
* 工作台ID
|
||||
*/
|
||||
@NotNull(message = "工作台ID为空")
|
||||
private Long workspaceId;
|
||||
|
||||
/**
|
||||
* 工作台名称
|
||||
*/
|
||||
@NotBlank(message = "工作台名称为空")
|
||||
private String workspaceName;
|
||||
|
||||
/**
|
||||
* 工作台类型
|
||||
*/
|
||||
@NotNull(message = "工作台类型为空")
|
||||
private Integer workspaceType;
|
||||
|
||||
/**
|
||||
* 组织节点ID
|
||||
*/
|
||||
@NotNull(message = "组织节点ID为空")
|
||||
private Long organizationalNodeId;
|
||||
|
||||
/**
|
||||
* 组织单位ID
|
||||
*/
|
||||
@NotNull(message = "组织单位ID为空")
|
||||
private Long organizationalUnitId;
|
||||
|
||||
/**
|
||||
* 组织单位名称
|
||||
*/
|
||||
@NotBlank(message = "组织单位名称为空")
|
||||
private String organizationalUnitName;
|
||||
|
||||
/**
|
||||
* 父级协同节点ID
|
||||
*/
|
||||
@NotNull(message = "父级协同节点ID为空")
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 协同类型
|
||||
*/
|
||||
@NotNull(message = "协同类型为空")
|
||||
private Integer cooperateType;
|
||||
|
||||
/**
|
||||
* 协作关系
|
||||
*/
|
||||
@NotNull(message = "协作关系为空")
|
||||
private Integer partnerShip;
|
||||
|
||||
/**
|
||||
|
||||
@ -3,6 +3,8 @@ package cn.axzo.orgmanax.server.cooperateship.foundation.impl;
|
||||
import cn.axzo.foundation.event.support.Event;
|
||||
import cn.axzo.foundation.event.support.producer.EventProducer;
|
||||
import cn.axzo.foundation.exception.Axssert;
|
||||
import cn.axzo.foundation.exception.BusinessException;
|
||||
import cn.axzo.orgmanax.common.ValidationUtil;
|
||||
import cn.axzo.orgmanax.common.config.BizResultCode;
|
||||
import cn.axzo.orgmanax.dto.cooperateship.dto.OrgCooperateShipDTO;
|
||||
import cn.axzo.orgmanax.dto.cooperateship.enums.CooperateShipStatusEnum;
|
||||
@ -23,13 +25,17 @@ import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.hutool.extra.validation.BeanValidationResult;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -143,6 +149,12 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
@Override
|
||||
public SaasCooperateShip create(CooperateShipCreator creator) {
|
||||
|
||||
// 入参校验
|
||||
BeanValidationResult validationResult = ValidationUtil.warpValidate(creator);
|
||||
Axssert.check(validationResult.isSuccess(), BizResultCode.INVALID_PARAM,
|
||||
validationResult.getErrorMessages().stream().map(BeanValidationResult.ErrorMessage::getMessage).findFirst().orElse(""));
|
||||
|
||||
|
||||
// 如果parentId不为空, 初始化父级协同节点
|
||||
SaasCooperateShip parentCooperateShip = null;
|
||||
if (Objects.nonNull(creator.getParentId()) && creator.getParentId() > 0) {
|
||||
@ -152,19 +164,23 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
}
|
||||
|
||||
// 构建新的协同关系
|
||||
DateTime date = DateUtil.date();
|
||||
SaasCooperateShip cooperateShip = SaasCooperateShip.builder()
|
||||
.parentId(creator.getParentId())
|
||||
.workspaceId(creator.getWorkspaceId())
|
||||
.workspaceType(creator.getWorkspaceType())
|
||||
.workspaceName(creator.getWorkspaceName())
|
||||
.status(CooperateShipStatusEnum.PRESENT.getCode())
|
||||
.joinAt(new Date())
|
||||
.joinAt(date)
|
||||
.organizationalUnitId(creator.getOrganizationalUnitId())
|
||||
.organizationalUnitName(creator.getOrganizationalUnitName())
|
||||
.cooperateType(creator.getCooperateType())
|
||||
.organizationalNodeId(creator.getOrganizationalNodeId())
|
||||
.partnerShip(creator.getPartnerShip())
|
||||
.createAt(date)
|
||||
.createBy(creator.getOperatorId())
|
||||
.updateAt(date)
|
||||
.updateBy(creator.getOperatorId())
|
||||
.path(Optional.ofNullable(parentCooperateShip).map(SaasCooperateShip::getPath).orElse(""))
|
||||
.build();
|
||||
|
||||
@ -185,7 +201,7 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
||||
.build())
|
||||
.build());
|
||||
// 返回结果
|
||||
return cooperateShipQueryRepository.one(CooperateShipQueryRepository.OneReq.builder().id(savedCooperateShip.getId()).build());
|
||||
return savedCooperateShip;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -81,7 +81,6 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
||||
|
||||
@Override
|
||||
public List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req) {
|
||||
|
||||
// 全局变量定义:是否查询当前节点的人员
|
||||
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterByPersonId()) &&
|
||||
Objects.equals(req.getFilterMethod(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_NODE);
|
||||
|
||||
@ -13,6 +13,8 @@ import java.util.Date;
|
||||
@Data
|
||||
public class QualificationsApplyCreator {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单位/团队注册记录id
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user