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

dev
luotaiqian 2026-07-08 11:31:10 +08:00
commit 5c599fe3e6
8 changed files with 100 additions and 12 deletions

View File

@ -37,7 +37,8 @@ public class GbsUserSyncInterceptor implements WebMvcConfigurer {
"/**/org-info/save/**", "/**/org-info/save/**",
"/**/account/save/**", "/**/account/save/**",
"/**/account/sendMessage/**", "/**/account/sendMessage/**",
"/**/file/**" "/**/file/**",
"/**/tree/**"
}; };
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {

View File

@ -1,18 +1,12 @@
package org.qinan.safetyeval.adapter.web; package org.qinan.safetyeval.adapter.web;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.qinan.safetyeval.client.api.OrgDepartmentApi; import org.qinan.safetyeval.client.api.OrgDepartmentApi;
import org.qinan.safetyeval.client.co.OrgDepartmentCO; import org.qinan.safetyeval.client.co.OrgDepartmentCO;
import org.qinan.safetyeval.client.dto.OrgDepartmentAddCmd; import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.client.dto.OrgDepartmentModifyCmd; import org.qinan.safetyeval.infrastructure.dataobject.base.Req;
import org.qinan.safetyeval.client.dto.OrgDepartmentPageQuery;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -53,8 +47,8 @@ public class OrgDepartmentController {
@ApiOperation("删除部门") @ApiOperation("删除部门")
@PostMapping("/delete") @PostMapping("/delete")
public SingleResponse<Void> delete(@ApiParam("主键ID") @RequestParam String id) { public SingleResponse<Void> delete(@ApiParam("主键ID") @RequestBody Req<Long> req) {
return orgDepartmentApi.delete(Long.parseLong(id)); return orgDepartmentApi.delete(req.getData());
} }
@ApiOperation("分页查询部门") @ApiOperation("分页查询部门")

View File

@ -15,6 +15,7 @@ import org.qinan.safetyeval.domain.exception.ErrorCode;
import org.qinan.safetyeval.domain.gateway.*; import org.qinan.safetyeval.domain.gateway.*;
import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.query.PageResult;
import org.qinan.safetyeval.domain.query.QualFilingQuery; import org.qinan.safetyeval.domain.query.QualFilingQuery;
import org.qinan.safetyeval.domain.support.QualFilingExpertCheckSupport;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
import org.qinan.safetyeval.infrastructure.support.OrgContextResolver; import org.qinan.safetyeval.infrastructure.support.OrgContextResolver;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -28,7 +29,9 @@ import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -76,6 +79,9 @@ public class QualFilingOrchestrator {
@Resource @Resource
private QualFilingStatusGuard statusGuard; private QualFilingStatusGuard statusGuard;
@Resource
private QualFilingReviewGateway qualFilingReviewGateway;
@Resource @Resource
private QualFilingMaterialTemplateProvider materialTemplateProvider; private QualFilingMaterialTemplateProvider materialTemplateProvider;
@ -210,17 +216,49 @@ public class QualFilingOrchestrator {
domainQuery.setFilingUnitName(query.getFilingUnitName()); domainQuery.setFilingUnitName(query.getFilingUnitName());
domainQuery.setFilingUnitTypeName(query.getFilingUnitTypeName()); domainQuery.setFilingUnitTypeName(query.getFilingUnitTypeName());
domainQuery.setBusinessScope(query.getBusinessScope()); domainQuery.setBusinessScope(query.getBusinessScope());
domainQuery.setNeedExpertCheck(query.getNeedExpertCheck());
domainQuery.setFilingStatusCode(query.getFilingStatusCode()); domainQuery.setFilingStatusCode(query.getFilingStatusCode());
domainQuery.setApplyTypeCode(query.getApplyTypeCode()); domainQuery.setApplyTypeCode(query.getApplyTypeCode());
domainQuery.setFilingTerritoryCode(query.getFilingTerritoryCode()); domainQuery.setFilingTerritoryCode(query.getFilingTerritoryCode());
domainQuery.setSupervision(query.getSupervision()); domainQuery.setSupervision(query.getSupervision());
PageResult<QualFilingEntity> pageResult = qualFilingGateway.page(domainQuery); PageResult<QualFilingEntity> pageResult = qualFilingGateway.page(domainQuery);
Map<Long, QualFilingReviewEntity> reviewMap = loadReviewMap(pageResult.getRecords());
List<QualFilingCO> records = pageResult.getRecords().stream() List<QualFilingCO> records = pageResult.getRecords().stream()
.map(this::toCO) .map(entity -> toListCO(entity, reviewMap))
.collect(Collectors.toList()); .collect(Collectors.toList());
return PageResult.of(records, pageResult.getTotal(), pageResult.getPageNum(), pageResult.getPageSize()); return PageResult.of(records, pageResult.getTotal(), pageResult.getPageNum(), pageResult.getPageSize());
} }
private Map<Long, QualFilingReviewEntity> loadReviewMap(List<QualFilingEntity> filings) {
Map<Long, QualFilingReviewEntity> reviewMap = new HashMap<>();
if (filings == null) {
return reviewMap;
}
for (QualFilingEntity filing : filings) {
Long reviewId = filing.getFilingReviewId();
if (reviewId == null || reviewMap.containsKey(reviewId)) {
continue;
}
QualFilingReviewEntity review = qualFilingReviewGateway.get(reviewId);
if (review != null) {
reviewMap.put(reviewId, review);
}
}
return reviewMap;
}
private QualFilingCO toListCO(QualFilingEntity entity, Map<Long, QualFilingReviewEntity> reviewMap) {
QualFilingCO co = toCO(entity);
if (co == null) {
return null;
}
co.setNeedExpertCheck(QualFilingExpertCheckSupport.needsExpertCheck(entity.getFilingUnitTypeName()));
QualFilingReviewEntity review = entity.getFilingReviewId() != null
? reviewMap.get(entity.getFilingReviewId()) : null;
co.setExpertStatus(QualFilingExpertCheckSupport.resolveExpertStatus(entity.getFilingUnitTypeName(), review));
return co;
}
@Transactional @Transactional
public void initMaterialTemplate(Long filingId) { public void initMaterialTemplate(Long filingId) {
QualFilingEntity filing = qualFilingGateway.get(filingId); QualFilingEntity filing = qualFilingGateway.get(filingId);

View File

@ -105,6 +105,12 @@ public class QualFilingCO {
@ApiModelProperty(value = "审核id") @ApiModelProperty(value = "审核id")
private Long filingReviewId; private Long filingReviewId;
@ApiModelProperty(value = "是否需专家核验(查询聚合,非表字段)")
private Boolean needExpertCheck;
@ApiModelProperty(value = "专家核验状态(arranging/pending/passed查询聚合非表字段)")
private String expertStatus;
@ApiModelProperty(value = "提交时间") @ApiModelProperty(value = "提交时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

View File

@ -30,6 +30,9 @@ public class QualFilingPageQuery extends BasePageQuery {
@ApiModelProperty(value = "安全评价业务范围") @ApiModelProperty(value = "安全评价业务范围")
private String businessScope; private String businessScope;
@ApiModelProperty(value = "是否专家核验(yes-是 no-否,异地单位需专家核验)")
private String needExpertCheck;
@ApiModelProperty(value = "备案状态编码(1已备案2审核中3已打回4变更审核中5暂存)") @ApiModelProperty(value = "备案状态编码(1已备案2审核中3已打回4变更审核中5暂存)")
private Integer filingStatusCode; private Integer filingStatusCode;

View File

@ -37,6 +37,9 @@ public class QualFilingQuery {
/** 安全评价业务范围 */ /** 安全评价业务范围 */
private String businessScope; private String businessScope;
/** 是否专家核验(yes/no) */
private String needExpertCheck;
/** 备案状态 */ /** 备案状态 */
private Integer filingStatusCode; private Integer filingStatusCode;

View File

@ -0,0 +1,36 @@
package org.qinan.safetyeval.domain.support;
import org.qinan.safetyeval.domain.entity.QualFilingReviewEntity;
import org.springframework.util.StringUtils;
/**
*
*/
public final class QualFilingExpertCheckSupport {
private static final String REMOTE_UNIT_KEYWORD = "异地";
private QualFilingExpertCheckSupport() {
}
public static boolean needsExpertCheck(String filingUnitTypeName) {
return StringUtils.hasText(filingUnitTypeName)
&& filingUnitTypeName.contains(REMOTE_UNIT_KEYWORD);
}
/**
* @return arranging=, pending=, passed= null
*/
public static String resolveExpertStatus(String filingUnitTypeName, QualFilingReviewEntity review) {
if (!needsExpertCheck(filingUnitTypeName)) {
return null;
}
if (review == null || review.getFilingExpertId() == null) {
return "arranging";
}
if ("1".equals(review.getReviewResult())) {
return "passed";
}
return "pending";
}
}

View File

@ -119,6 +119,13 @@ public class QualFilingGatewayImpl implements QualFilingGateway {
if (StringUtils.hasText(query.getBusinessScope())) { if (StringUtils.hasText(query.getBusinessScope())) {
wrapper.like(QualFilingDO::getBusinessScope, query.getBusinessScope()); wrapper.like(QualFilingDO::getBusinessScope, query.getBusinessScope());
} }
if (StringUtils.hasText(query.getNeedExpertCheck())) {
if ("yes".equalsIgnoreCase(query.getNeedExpertCheck())) {
wrapper.like(QualFilingDO::getFilingUnitTypeName, "异地");
} else if ("no".equalsIgnoreCase(query.getNeedExpertCheck())) {
wrapper.like(QualFilingDO::getFilingUnitTypeName, "本地");
}
}
if (StringUtils.hasText(query.getFilingTerritoryCode())) { if (StringUtils.hasText(query.getFilingTerritoryCode())) {
String territory = query.getFilingTerritoryCode(); String territory = query.getFilingTerritoryCode();
wrapper.and(w -> w.eq(QualFilingDO::getFilingTerritoryCode, territory) wrapper.and(w -> w.eq(QualFilingDO::getFilingTerritoryCode, territory)