diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelPageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelPageQuery.java index b872db6..5d4c4c8 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelPageQuery.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelPageQuery.java @@ -33,4 +33,7 @@ public class OrgPersonnelPageQuery extends BasePageQuery { @ApiModelProperty(value = "离职申请审核状态(列表展示,非持久化)") private Integer resignAuditStatus; + + @ApiModelProperty(value = "是否员工变更管理页面") + private Boolean employeeChange = false; } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java index a4a29f1..438f3a4 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java @@ -149,6 +149,7 @@ public enum ErrorCode { EVAL_PROJECT_MEMBER_NOT_FOUND("06-03-001", "安评项目成员不存在"), EVAL_PROJECT_DOC_NOT_FOUND("06-04-001", "安评项目资料不存在"), EVAL_CUSTOMER_ORG_MISMATCH("06-01-002", "客户不属于本机构"), + EVAL_CUSTOMER_CREDIT_CODE_EXISTS("06-01-003", "统一社会信用代码已存在"), EVAL_PERSONNEL_ORG_MISMATCH("06-03-002", "人员不属于本机构"), EVAL_PROJECT_NO_GENERATE_FAILED("06-02-002", "项目编号生成失败"), EVAL_PROJECT_CANCELLED("06-02-003", "项目已作废不可修改"), diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalCustomerGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalCustomerGateway.java index 3e77c06..90d9620 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalCustomerGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalCustomerGateway.java @@ -15,4 +15,6 @@ public interface EvalCustomerGateway { void delete(Long id); PageResult page(EvalCustomerQuery query); + + EvalCustomerEntity findByOrgIdAndCreditCode(Long orgId, String creditCode); } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalCustomerDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalCustomerDomainService.java index 17dc4a5..2c201df 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalCustomerDomainService.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalCustomerDomainService.java @@ -9,6 +9,7 @@ import org.qinan.safetyeval.domain.gateway.EvalProjectGateway; import org.qinan.safetyeval.domain.query.EvalCustomerQuery; import org.qinan.safetyeval.domain.query.PageResult; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; @@ -23,6 +24,7 @@ public class EvalCustomerDomainService { public EvalCustomerEntity add(EvalCustomerEntity entity) { fillDefaultCustomerStatus(entity); + assertCreditCodeUnique(entity.getOrgId(), entity.getCreditCode(), null); return evalCustomerGateway.save(entity); } @@ -42,6 +44,7 @@ public class EvalCustomerDomainService { EvalCustomerEntity existing = get(entity.getId()); fillDefaultCustomerStatus(entity); entity.setOrgId(existing.getOrgId()); + assertCreditCodeUnique(entity.getOrgId(), entity.getCreditCode(), entity.getId()); return evalCustomerGateway.modify(entity); } @@ -62,6 +65,16 @@ public class EvalCustomerDomainService { return customer; } + private void assertCreditCodeUnique(Long orgId, String creditCode, Long excludeId) { + if (!StringUtils.hasText(creditCode)) { + return; + } + EvalCustomerEntity found = evalCustomerGateway.findByOrgIdAndCreditCode(orgId, creditCode); + if (found != null && (excludeId == null || !excludeId.equals(found.getId()))) { + throw new BizException(ErrorCode.EVAL_CUSTOMER_CREDIT_CODE_EXISTS); + } + } + private void fillDefaultCustomerStatus(EvalCustomerEntity entity) { if (entity.getCustomerStatusCode() == null) { entity.setCustomerStatusCode(CustomerStatusEnum.NORMAL.getCode()); diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalCustomerGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalCustomerGatewayImpl.java index 0ac96ee..2c42e7a 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalCustomerGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalCustomerGatewayImpl.java @@ -75,6 +75,20 @@ public class EvalCustomerGatewayImpl implements EvalCustomerGateway { return PageResult.of(entities, result.getTotal(), result.getCurrent(), result.getSize()); } + @Override + public EvalCustomerEntity findByOrgIdAndCreditCode(Long orgId, String creditCode) { + if (orgId == null || !StringUtils.hasText(creditCode)) { + return null; + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(EvalCustomerDO::getDeleteEnum, "false") + .eq(EvalCustomerDO::getOrgId, orgId) + .eq(EvalCustomerDO::getCreditCode, creditCode.trim()) + .last("LIMIT 1"); + EvalCustomerDO dataObject = evalCustomerMapper.selectOne(wrapper); + return dataObject == null ? null : evalCustomerDoConvertor.convertDoToE(dataObject); + } + private LambdaQueryWrapper buildQueryWrapper(EvalCustomerQuery query) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(EvalCustomerDO::getDeleteEnum, "false");