Merge remote-tracking branch 'origin/dev' into dev

dev
luotaiqian 2026-08-06 14:05:28 +08:00
commit cb4e152925
5 changed files with 33 additions and 0 deletions

View File

@ -33,4 +33,7 @@ public class OrgPersonnelPageQuery extends BasePageQuery {
@ApiModelProperty(value = "离职申请审核状态(列表展示,非持久化)")
private Integer resignAuditStatus;
@ApiModelProperty(value = "是否员工变更管理页面")
private Boolean employeeChange = false;
}

View File

@ -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", "项目已作废不可修改"),

View File

@ -15,4 +15,6 @@ public interface EvalCustomerGateway {
void delete(Long id);
PageResult<EvalCustomerEntity> page(EvalCustomerQuery query);
EvalCustomerEntity findByOrgIdAndCreditCode(Long orgId, String creditCode);
}

View File

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

View File

@ -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<EvalCustomerDO> 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<EvalCustomerDO> buildQueryWrapper(EvalCustomerQuery query) {
LambdaQueryWrapper<EvalCustomerDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(EvalCustomerDO::getDeleteEnum, "false");