diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualOnSiteReviewController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualOnSiteReviewController.java
index d8ee576..9a3a2dc 100644
--- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualOnSiteReviewController.java
+++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualOnSiteReviewController.java
@@ -11,6 +11,7 @@ import org.qinan.safetyeval.client.review.request.QualOnSiteReviewAddCmd;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewMonitorPageQry;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewOrgPageQry;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewPageQry;
+import org.qinan.safetyeval.client.review.request.QualOnSiteReviewResultUploadCmd;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewUpdateCmd;
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewCo;
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
@@ -79,6 +80,13 @@ public class QualOnSiteReviewController implements Serializable {
return Response.buildSuccess();
}
+ @PostMapping("/result-upload")
+ @ApiOperation("审查结果上传")
+ public Response uploadReviewResult(@Validated @RequestBody QualOnSiteReviewResultUploadCmd qualOnSiteReviewResultUploadCmd) {
+ qualOnSiteReviewServiceI.uploadReviewResult(qualOnSiteReviewResultUploadCmd);
+ return Response.buildSuccess();
+ }
+
@DeleteMapping("/{id}")
@ApiOperation("删除资质现场核查(单个)")
public Response deletedById(@PathVariable("id") Long id) {
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingChangeCmdConvertor.java
index 708af74..1777515 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingChangeCmdConvertor.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingChangeCmdConvertor.java
@@ -9,6 +9,7 @@ import org.qinan.safetyeval.client.dto.QualFilingAddCmd;
import org.qinan.safetyeval.client.dto.QualFilingChangeAddCmd;
import org.qinan.safetyeval.domain.entity.QualFilingChangeEntity;
import org.qinan.safetyeval.domain.entity.QualFilingEntity;
+import org.qinan.safetyeval.infrastructure.dataobject.QualFilingDO;
import java.util.List;
@@ -69,4 +70,23 @@ public interface QualFilingChangeCmdConvertor {
@Mapping(target = "applyTypeCode", ignore = true)
@Mapping(target = "applyTypeName", ignore = true)
QualFilingAddCmd convertChangeEToFilingCmd(QualFilingChangeEntity changeEntity);
+
+ /**
+ * 备案DO转变更Cmd(审核通过同步变更记录时使用)
+ *
+ * 原 BeanUtils.copyProperties(qualFilingDO, cmd, "id") 行为:
+ * - id 不拷贝
+ * - filingId 由 DO.id 设置
+ * - businessScope 由 JSON 字符串解析为 List
+ */
+ @Mapping(target = "id", ignore = true)
+ @Mapping(target = "filingId", source = "id")
+ @Mapping(target = "changeFilingId", ignore = true)
+ @Mapping(target = "businessScope", source = "businessScope", qualifiedByName = "jsonStringToList")
+ QualFilingChangeAddCmd convertDOToCmd(QualFilingDO qualFilingDO);
+
+ @Named("jsonStringToList")
+ default List jsonStringToList(String json) {
+ return json == null ? null : JSON.parseArray(json, String.class);
+ }
}
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java
index e9d41da..639447c 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java
@@ -8,6 +8,7 @@ import org.qinan.safetyeval.client.co.QualFilingCommitmentCO;
import org.qinan.safetyeval.client.dto.QualFilingCommitmentAddCmd;
import org.qinan.safetyeval.domain.change.model.QualFilingCommitmentChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingCommitmentEntity;
+import org.qinan.safetyeval.infrastructure.dataobject.QualFilingCommitmentDO;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -63,7 +64,18 @@ public interface QualFilingCommitmentChangeCmdConvertor {
*/
QualFilingCommitmentAddCmd convertChangeEToCmd(QualFilingCommitmentChangeE changeE);
+ /**
+ * 备案承诺书DO转变更Cmd(审核通过同步变更记录时使用)
+ * signDate 由 LocalDate 转为 LocalDateTime
+ */
+ @Mapping(target = "filingChangeId", ignore = true)
+ QualFilingCommitmentChangeAddCmd convertDOToCmd(QualFilingCommitmentDO qualFilingCommitmentDO);
+
default LocalDate map(LocalDateTime dateTime) {
return dateTime == null ? null : dateTime.toLocalDate();
}
+
+ default LocalDateTime map(LocalDate date) {
+ return date == null ? null : date.atStartOfDay();
+ }
}
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java
index 66647c4..a56df15 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java
@@ -7,6 +7,7 @@ import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeUpdat
import org.qinan.safetyeval.client.co.QualFilingEquipmentCO;
import org.qinan.safetyeval.domain.change.model.QualFilingEquipmentChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingEquipmentEntity;
+import org.qinan.safetyeval.infrastructure.dataobject.QualFilingEquipmentDO;
import java.util.List;
@@ -60,4 +61,15 @@ public interface QualFilingEquipmentChangeCmdConvertor {
* 批量转换变更装备为CO
*/
List convertChangeEListToCOList(List changeEs);
+
+ /**
+ * 备案装备DO转变更Cmd(审核通过同步变更记录时使用)
+ */
+ @Mapping(target = "filingChangeId", ignore = true)
+ QualFilingEquipmentChangeAddCmd convertDOToCmd(QualFilingEquipmentDO qualFilingEquipmentDO);
+
+ /**
+ * 批量转换备案装备DO为变更Cmd
+ */
+ List convertDOListToCmdList(List qualFilingEquipmentDOs);
}
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java
index 13326c1..8b83ae1 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java
@@ -8,6 +8,7 @@ import org.qinan.safetyeval.client.co.QualFilingMaterialCO;
import org.qinan.safetyeval.client.dto.QualFilingMaterialAddCmd;
import org.qinan.safetyeval.domain.change.model.QualFilingMaterialChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingMaterialEntity;
+import org.qinan.safetyeval.infrastructure.dataobject.QualFilingMaterialDO;
import java.util.List;
@@ -80,4 +81,15 @@ public interface QualFilingMaterialChangeCmdConvertor {
* 批量转换变更实体为备案Cmd
*/
List convertChangeEListToCmdList(List changeEs);
+
+ /**
+ * 备案材料DO转变更Cmd(审核通过同步变更记录时使用)
+ */
+ @Mapping(target = "filingChangeId", ignore = true)
+ QualFilingMaterialChangeAddCmd convertDOToCmd(QualFilingMaterialDO qualFilingMaterialDO);
+
+ /**
+ * 批量转换备案材料DO为变更Cmd
+ */
+ List convertDOListToCmdList(List qualFilingMaterialDOs);
}
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java
index dc3cfcc..59a2943 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java
@@ -8,6 +8,7 @@ import org.qinan.safetyeval.client.co.QualFilingPersonnelCO;
import org.qinan.safetyeval.client.dto.QualFilingPersonnelAddCmd;
import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingPersonnelEntity;
+import org.qinan.safetyeval.infrastructure.dataobject.QualFilingPersonnelDO;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -84,7 +85,23 @@ public interface QualFilingPersonnelChangeCmdConvertor {
*/
List convertChangeEListToCmdList(List changeEs);
+ /**
+ * 备案人员DO转变更Cmd(审核通过同步变更记录时使用)
+ * birthDate / joinWorkDate 由 LocalDate 转为 LocalDateTime
+ */
+ @Mapping(target = "filingChangeId", ignore = true)
+ QualFilingPersonnelChangeAddCmd convertDOToCmd(QualFilingPersonnelDO qualFilingPersonnelDO);
+
+ /**
+ * 批量转换备案人员DO为变更Cmd
+ */
+ List convertDOListToCmdList(List qualFilingPersonnelDOs);
+
default LocalDate map(LocalDateTime dateTime) {
return dateTime == null ? null : dateTime.toLocalDate();
}
+
+ default LocalDateTime map(LocalDate date) {
+ return date == null ? null : date.atStartOfDay();
+ }
}
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java
index 883fbe8..e902114 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java
@@ -16,6 +16,7 @@ import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.domain.constant.BooleanQAEnum;
import org.qinan.safetyeval.domain.constant.QualFilingApplyTypeEnum;
import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum;
+import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum;
import org.qinan.safetyeval.domain.entity.*;
import org.qinan.safetyeval.domain.exception.BizException;
import org.qinan.safetyeval.domain.exception.ErrorCode;
@@ -225,49 +226,8 @@ public class QualFilingExecutor implements QualFilingApi {
@Override
@Transactional(rollbackFor = Exception.class)
public void review(QualFilingReviewAddCmd cmd) {
- qualFilingDomainService.review(cmd.getFilingId(), cmd.getReviewResult(), cmd.getReviewResultRemark(), cmd.getFilingExpertId(), cmd.getFilingExpertName(), cmd.getReviewOpinion());
- if (QualFilingReviewResultEnum.PASS.getCode() == Integer.parseInt(cmd.getReviewResult())) {
- // 审核通过,需要新增资质变更记录
- AggregationSaveOrEditQualFilingChangeCmd cmdSync = new AggregationSaveOrEditQualFilingChangeCmd();
- // 基本信息
- QualFilingDO qualFilingDO = qualFilingMapper.selectById(cmd.getFilingId());
- QualFilingChangeAddCmd qualFilingChangeAddCmd = new QualFilingChangeAddCmd();
- BeanUtils.copyProperties(qualFilingDO, qualFilingChangeAddCmd, "id");
- qualFilingChangeAddCmd.setBusinessScope(JSON.parseArray(qualFilingDO.getBusinessScope(), String.class));
- qualFilingChangeAddCmd.setFilingId(qualFilingDO.getId());
- cmdSync.setQualFilingChangeAddCmd(qualFilingChangeAddCmd);
- // 备案承诺书
- QualFilingCommitmentDO qualFilingCommitmentDO = qualFilingCommitmentMapper.selectOne(new LambdaQueryWrapper()
- .eq(QualFilingCommitmentDO::getFilingId, cmd.getFilingId()));
- QualFilingCommitmentChangeAddCmd qualFilingCommitmentChangeAddCmd = new QualFilingCommitmentChangeAddCmd();
- BeanUtils.copyProperties(qualFilingCommitmentDO, qualFilingCommitmentChangeAddCmd);
- cmdSync.setQualFilingCommitmentChangeAddCmd(qualFilingCommitmentChangeAddCmd);
- // 备案装备
- List qualFilingEquipmentDOs = qualFilingEquipmentMapper.selectList(new LambdaQueryWrapper()
- .eq(QualFilingEquipmentDO::getFilingId, cmd.getFilingId()));
- cmdSync.setQualFilingEquipmentChangeAddCmds(qualFilingEquipmentDOs.stream().map(item -> {
- QualFilingEquipmentChangeAddCmd qualFilingEquipmentChangeAddCmd = new QualFilingEquipmentChangeAddCmd();
- BeanUtils.copyProperties(item, qualFilingEquipmentChangeAddCmd);
- return qualFilingEquipmentChangeAddCmd;
- }).collect(Collectors.toList()));
- // 备案材料清单
- List qualFilingMaterialDOs = qualFilingMaterialMapper.selectList(new LambdaQueryWrapper()
- .eq(QualFilingMaterialDO::getFilingId, cmd.getFilingId()));
- cmdSync.setQualFilingMaterialChangeAddCmds(qualFilingMaterialDOs.stream().map(item -> {
- QualFilingMaterialChangeAddCmd qualFilingMaterialChangeAddCmd = new QualFilingMaterialChangeAddCmd();
- BeanUtils.copyProperties(item, qualFilingMaterialChangeAddCmd);
- return qualFilingMaterialChangeAddCmd;
- }).collect(Collectors.toList()));
- // 备案人员
- List qualFilingPersonnelDOs = qualFilingPersonnelMapper.selectList(new LambdaQueryWrapper()
- .eq(QualFilingPersonnelDO::getFilingId, cmd.getFilingId()));
- cmdSync.setQualFilingPersonnelChangeAddCmds(qualFilingPersonnelDOs.stream().map(item -> {
- QualFilingPersonnelChangeAddCmd qualFilingPersonnelChangeAddCmd = new QualFilingPersonnelChangeAddCmd();
- BeanUtils.copyProperties(item, qualFilingPersonnelChangeAddCmd);
- return qualFilingPersonnelChangeAddCmd;
- }).collect(Collectors.toList()));
- qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync, true);
- }
+ qualFilingDomainService.review(cmd.getFilingId(), cmd.getReviewResult()
+ , cmd.getReviewResultRemark(), cmd.getFilingExpertId(), cmd.getFilingExpertName(), cmd.getReviewOpinion());
}
@Override
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/executor/command/QualOnSiteReviewUpdateCmdExe.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/executor/command/QualOnSiteReviewUpdateCmdExe.java
index 81bd266..2fcb682 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/executor/command/QualOnSiteReviewUpdateCmdExe.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/executor/command/QualOnSiteReviewUpdateCmdExe.java
@@ -1,14 +1,32 @@
package org.qinan.safetyeval.app.review.executor.command;
import com.alibaba.cola.exception.BizException;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.AllArgsConstructor;
+import org.qinan.safetyeval.app.change.convertor.*;
+import org.qinan.safetyeval.app.executor.QualFilingChangeExecutor;
+import org.qinan.safetyeval.app.file.convertor.QualOnSiteReviewFileCmdConvertor;
import org.qinan.safetyeval.app.review.convertor.QualOnSiteReviewCmdConvertor;
+import org.qinan.safetyeval.client.dto.AggregationSaveOrEditQualFilingChangeCmd;
+import org.qinan.safetyeval.client.file.request.QualOnSiteReviewFileAddCmd;
+import org.qinan.safetyeval.client.review.request.QualOnSiteReviewResultUploadCmd;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewUpdateCmd;
+import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum;
+import org.qinan.safetyeval.domain.constant.QualOnSiteReviewStatusEnum;
+import org.qinan.safetyeval.domain.entity.QualFilingEntity;
+import org.qinan.safetyeval.domain.file.model.QualOnSiteReviewFileE;
+import org.qinan.safetyeval.domain.gateway.QualFilingGateway;
import org.qinan.safetyeval.domain.review.ability.QualOnSiteReviewAbility;
import org.qinan.safetyeval.domain.review.model.QualOnSiteReviewE;
+import org.qinan.safetyeval.infrastructure.dataobject.*;
+import org.qinan.safetyeval.infrastructure.mapper.*;
+import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualOnSiteReviewDO;
import org.qinan.safetyeval.infrastructure.persistence.queryservice.QualOnSiteReviewQueryService;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
/**
* 修改资质现场核查资源执行器
@@ -22,6 +40,19 @@ public class QualOnSiteReviewUpdateCmdExe {
private final QualOnSiteReviewQueryService qualOnSiteReviewQueryService;
private final QualOnSiteReviewCmdConvertor qualOnSiteReviewCmdConvertor;
private final QualOnSiteReviewAbility qualOnSiteReviewAbility;
+ private final QualOnSiteReviewFileCmdConvertor qualOnSiteReviewFileCmdConvertor;
+ private final QualFilingGateway qualFilingGateway;
+ private final QualFilingMapper qualFilingMapper;
+ private final QualFilingCommitmentMapper qualFilingCommitmentMapper;
+ private final QualFilingEquipmentMapper qualFilingEquipmentMapper;
+ private final QualFilingMaterialMapper qualFilingMaterialMapper;
+ private final QualFilingPersonnelMapper qualFilingPersonnelMapper;
+ private final QualFilingChangeExecutor qualFilingChangeExecutor;
+ private final QualFilingChangeCmdConvertor qualFilingChangeCmdConvertor;
+ private final QualFilingCommitmentChangeCmdConvertor qualFilingCommitmentChangeCmdConvertor;
+ private final QualFilingEquipmentChangeCmdConvertor qualFilingEquipmentChangeCmdConvertor;
+ private final QualFilingMaterialChangeCmdConvertor qualFilingMaterialChangeCmdConvertor;
+ private final QualFilingPersonnelChangeCmdConvertor qualFilingPersonnelChangeCmdConvertor;
/**
* 修改资质现场核查
@@ -38,4 +69,100 @@ public class QualOnSiteReviewUpdateCmdExe {
}
return true;
}
+
+ /**
+ * 审查结果上传
+ *
+ * 1. 更新现场核查状态(通过/不通过)及审查意见
+ * 2. 审查通过时,将对应备案记录状态更新为已备案
+ * 3. 保存审查结果文件
+ *
+ * @param cmd 审查结果上传对象
+ * @return 结果
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public boolean execute(QualOnSiteReviewResultUploadCmd cmd) {
+ QualOnSiteReviewDO reviewDO = qualOnSiteReviewQueryService.getById(cmd.getId());
+ if (reviewDO == null) {
+ throw new BizException("资质现场核查记录不存在");
+ }
+
+ // 解析审查结论
+ boolean passed = cmd.getReviewResult();
+ String status = passed ? QualOnSiteReviewStatusEnum.REVIEW_PASSED.getCode()
+ : QualOnSiteReviewStatusEnum.REVIEW_FAILED.getCode();
+
+ // 更新现场核查状态及审查意见
+ QualOnSiteReviewE reviewE = QualOnSiteReviewE.of();
+ reviewE.setId(cmd.getId());
+ reviewE.setStatus(status);
+ reviewE.setReviewOpinion(cmd.getReviewOpinion());
+ Boolean updateRes = reviewE.update();
+ if (!updateRes) {
+ throw new BizException("数据已被更新,请刷新重试");
+ }
+
+ // 审查通过时,更新备案状态为已备案
+ if (passed && reviewDO.getBizId() != null) {
+ QualFilingEntity filingEntity = new QualFilingEntity();
+ filingEntity.setId(reviewDO.getBizId());
+ filingEntity.setFilingStatusCode(QualFilingStatusEnum.FILED.getCode());
+ filingEntity.setFilingStatusName(QualFilingStatusEnum.FILED.getName());
+ qualFilingGateway.modify(filingEntity);
+
+ // 审核通过,同步生成资质变更记录
+ passedSaveToChange(reviewDO.getOrgId());
+ }
+
+ // 保存审查结果文件
+ saveFileList(cmd.getId(), cmd.getFileList());
+
+ return true;
+ }
+
+
+ private void saveFileList(Long reviewId, List fileList) {
+ if (CollectionUtils.isEmpty(fileList)) {
+ return;
+ }
+ for (QualOnSiteReviewFileAddCmd fileCmd : fileList) {
+ QualOnSiteReviewFileE fileE = qualOnSiteReviewFileCmdConvertor.convertCmdToE(fileCmd);
+ fileE.setQualOnSiteReviewId(reviewId);
+ boolean res = fileE.add();
+ if (!res) {
+ throw new BizException("审查结果文件保存失败");
+ }
+ }
+ }
+
+ private void passedSaveToChange(Long orgId) {
+ // 基本信息
+ QualFilingDO qualFilingDO = qualFilingMapper.selectByOrgIdLastOne(orgId);
+ if (qualFilingDO == null) {
+ throw new BizException("未找到该机构的资质备案记录");
+ }
+ Long filingId = qualFilingDO.getId();
+
+ // 审核通过,需要新增资质变更记录
+ AggregationSaveOrEditQualFilingChangeCmd cmdSync = new AggregationSaveOrEditQualFilingChangeCmd();
+
+ cmdSync.setQualFilingChangeAddCmd(qualFilingChangeCmdConvertor.convertDOToCmd(qualFilingDO));
+ // 备案承诺书
+ QualFilingCommitmentDO qualFilingCommitmentDO = qualFilingCommitmentMapper.selectOne(new LambdaQueryWrapper()
+ .eq(QualFilingCommitmentDO::getFilingId, filingId));
+ cmdSync.setQualFilingCommitmentChangeAddCmd(qualFilingCommitmentChangeCmdConvertor.convertDOToCmd(qualFilingCommitmentDO));
+ // 备案装备
+ List qualFilingEquipmentDOs = qualFilingEquipmentMapper.selectList(new LambdaQueryWrapper()
+ .eq(QualFilingEquipmentDO::getFilingId, filingId));
+ cmdSync.setQualFilingEquipmentChangeAddCmds(qualFilingEquipmentChangeCmdConvertor.convertDOListToCmdList(qualFilingEquipmentDOs));
+ // 备案材料清单
+ List qualFilingMaterialDOs = qualFilingMaterialMapper.selectList(new LambdaQueryWrapper()
+ .eq(QualFilingMaterialDO::getFilingId, filingId));
+ cmdSync.setQualFilingMaterialChangeAddCmds(qualFilingMaterialChangeCmdConvertor.convertDOListToCmdList(qualFilingMaterialDOs));
+ // 备案人员
+ List qualFilingPersonnelDOs = qualFilingPersonnelMapper.selectList(new LambdaQueryWrapper()
+ .eq(QualFilingPersonnelDO::getFilingId, filingId));
+ cmdSync.setQualFilingPersonnelChangeAddCmds(qualFilingPersonnelChangeCmdConvertor.convertDOListToCmdList(qualFilingPersonnelDOs));
+ qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync, true);
+ }
}
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/service/QualOnSiteReviewServiceI.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/service/QualOnSiteReviewServiceI.java
index ccbe053..c3b023b 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/service/QualOnSiteReviewServiceI.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/service/QualOnSiteReviewServiceI.java
@@ -5,6 +5,7 @@ import org.qinan.safetyeval.client.review.request.QualOnSiteReviewAddCmd;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewMonitorPageQry;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewOrgPageQry;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewPageQry;
+import org.qinan.safetyeval.client.review.request.QualOnSiteReviewResultUploadCmd;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewUpdateCmd;
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewCo;
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
@@ -81,5 +82,13 @@ public interface QualOnSiteReviewServiceI {
*/
boolean deletedQualOnSiteReviewByIds(Long[] ids);
+ /**
+ * 审查结果上传
+ *
+ * @param qualOnSiteReviewResultUploadCmd 审查结果上传对象
+ * @return 结果
+ */
+ boolean uploadReviewResult(QualOnSiteReviewResultUploadCmd qualOnSiteReviewResultUploadCmd);
+
}
diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/service/impl/QualOnSiteReviewServiceImpl.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/service/impl/QualOnSiteReviewServiceImpl.java
index ca90d32..869854c 100644
--- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/service/impl/QualOnSiteReviewServiceImpl.java
+++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/review/service/impl/QualOnSiteReviewServiceImpl.java
@@ -12,6 +12,7 @@ import org.qinan.safetyeval.client.review.request.QualOnSiteReviewAddCmd;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewMonitorPageQry;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewOrgPageQry;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewPageQry;
+import org.qinan.safetyeval.client.review.request.QualOnSiteReviewResultUploadCmd;
import org.qinan.safetyeval.client.review.request.QualOnSiteReviewUpdateCmd;
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewCo;
import org.qinan.safetyeval.client.review.response.QualOnSiteReviewMonitorCo;
@@ -74,4 +75,9 @@ public class QualOnSiteReviewServiceImpl implements QualOnSiteReviewServiceI {
return qualOnSiteReviewDelCommandExe.execute(ids);
}
+ @Override
+ public boolean uploadReviewResult(QualOnSiteReviewResultUploadCmd qualOnSiteReviewResultUploadCmd) {
+ return qualOnSiteReviewUpdateCommandExe.execute(qualOnSiteReviewResultUploadCmd);
+ }
+
}
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/request/QualOnSiteReviewFileAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/request/QualOnSiteReviewFileAddCmd.java
index 5faaf76..7744312 100644
--- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/request/QualOnSiteReviewFileAddCmd.java
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/request/QualOnSiteReviewFileAddCmd.java
@@ -32,4 +32,10 @@ public class QualOnSiteReviewFileAddCmd implements Serializable {
@NotBlank(message = "文件url不能为空")
@Size(max = 1024, message = "文件url不能超过1024个字符")
private String fileUrl;
+
+ /**
+ * 审查意见
+ */
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
}
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/request/QualOnSiteReviewFileUpdateCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/request/QualOnSiteReviewFileUpdateCmd.java
index 4fde464..153218b 100644
--- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/request/QualOnSiteReviewFileUpdateCmd.java
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/request/QualOnSiteReviewFileUpdateCmd.java
@@ -36,4 +36,10 @@ public class QualOnSiteReviewFileUpdateCmd implements Serializable {
@NotBlank(message = "文件url不能为空")
@Size(max = 1024, message = "文件url不能超过1024个字符")
private String fileUrl;
+
+ /**
+ * 审查意见
+ */
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
}
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/response/QualOnSiteReviewFileCo.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/response/QualOnSiteReviewFileCo.java
index 1f529a6..5e3bb12 100644
--- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/response/QualOnSiteReviewFileCo.java
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/file/response/QualOnSiteReviewFileCo.java
@@ -31,6 +31,11 @@ public class QualOnSiteReviewFileCo extends ClientObject {
*/
@ApiModelProperty(value = "文件url")
private String fileUrl;
+ /**
+ * 审查意见
+ */
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewAddCmd.java
index ce99a20..9a0dd52 100644
--- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewAddCmd.java
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewAddCmd.java
@@ -64,6 +64,11 @@ public class QualOnSiteReviewAddCmd implements Serializable {
*/
@ApiModelProperty(value = QualOnSiteReviewStatusEnum.REMARKS, required = true)
private String status;
+ /**
+ * 审查意见
+ */
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewResultUploadCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewResultUploadCmd.java
new file mode 100644
index 0000000..dcf0345
--- /dev/null
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewResultUploadCmd.java
@@ -0,0 +1,43 @@
+package org.qinan.safetyeval.client.review.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.qinan.safetyeval.client.file.request.QualOnSiteReviewFileAddCmd;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 资质现场核查-审查结果上传Cmd
+ *
+ * @Author: ltq
+ * @date 2026-07-20 15:17:00
+ */
+@Data
+public class QualOnSiteReviewResultUploadCmd implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @JsonFormat(shape = JsonFormat.Shape.STRING)
+ @NotNull(message = "资质现场核查id不能为空")
+ @ApiModelProperty(value = "资质现场核查id", required = true)
+ private Long id;
+
+ @NotBlank(message = "审查结论不能为空")
+ @ApiModelProperty(value = "审查结论:true通过/false不通过", required = true)
+ @NotNull
+ private Boolean reviewResult;
+
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
+
+ @ApiModelProperty(value = "审查结果文件")
+ @NotNull
+ @Size(max = 100)
+ @Valid
+ private List fileList;
+}
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewUpdateCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewUpdateCmd.java
index b2d6cf2..7a855ce 100644
--- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewUpdateCmd.java
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/request/QualOnSiteReviewUpdateCmd.java
@@ -66,6 +66,11 @@ public class QualOnSiteReviewUpdateCmd implements Serializable {
@ApiModelProperty(value = "现场审查状态(AGENCY_PENDING_CONFIRMATION机构待确认、AGENCY_CONFIRMED机构已确认、REVIEW_PASSED核查通过、REVIEW_FAILED核查不通过)", required = true)
@NotNull(message = "现场审查状态(AGENCY_PENDING_CONFIRMATION机构待确认、AGENCY_CONFIRMED机构已确认、REVIEW_PASSED核查通过、REVIEW_FAILED核查不通过)不能为空")
private String status;
+ /**
+ * 审查意见
+ */
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewCo.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewCo.java
index 1610ece..fb2165d 100644
--- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewCo.java
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewCo.java
@@ -64,6 +64,11 @@ public class QualOnSiteReviewCo extends ClientObject {
*/
@ApiModelProperty(value = "现场审查状态(AGENCY_PENDING_CONFIRMATION机构待确认、AGENCY_CONFIRMED机构已确认、REVIEW_PASSED核查通过、REVIEW_FAILED核查不通过)")
private String status;
+ /**
+ * 审查意见
+ */
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewMonitorCo.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewMonitorCo.java
index 5dab357..5716836 100644
--- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewMonitorCo.java
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewMonitorCo.java
@@ -67,6 +67,11 @@ public class QualOnSiteReviewMonitorCo extends ClientObject {
*/
@ApiModelProperty(value = "现场审查状态(AGENCY_PENDING_CONFIRMATION机构待确认、AGENCY_CONFIRMED机构已确认、REVIEW_PASSED核查通过、REVIEW_FAILED核查不通过)")
private String status;
+ /**
+ * 审查意见
+ */
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewOrgCo.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewOrgCo.java
index 73ef838..9c2c31a 100644
--- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewOrgCo.java
+++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/review/response/QualOnSiteReviewOrgCo.java
@@ -66,6 +66,11 @@ public class QualOnSiteReviewOrgCo extends ClientObject {
*/
@ApiModelProperty(value = "现场审查状态(AGENCY_PENDING_CONFIRMATION机构待确认、AGENCY_CONFIRMED机构已确认、REVIEW_PASSED核查通过、REVIEW_FAILED核查不通过)")
private String status;
+ /**
+ * 审查意见
+ */
+ @ApiModelProperty(value = "审查意见")
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/file/model/QualOnSiteReviewFileE.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/file/model/QualOnSiteReviewFileE.java
index 101d04a..cd8ccad 100644
--- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/file/model/QualOnSiteReviewFileE.java
+++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/file/model/QualOnSiteReviewFileE.java
@@ -32,6 +32,10 @@ public class QualOnSiteReviewFileE extends BaseE {
* 文件url
*/
private String fileUrl;
+ /**
+ * 审查意见
+ */
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/review/model/QualOnSiteReviewE.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/review/model/QualOnSiteReviewE.java
index 2342a08..4501a40 100644
--- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/review/model/QualOnSiteReviewE.java
+++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/review/model/QualOnSiteReviewE.java
@@ -58,6 +58,10 @@ public class QualOnSiteReviewE extends BaseE {
* 现场审查状态(AGENCY_PENDING_CONFIRMATION机构待确认、AGENCY_CONFIRMED机构已确认、REVIEW_PASSED核查通过、REVIEW_FAILED核查不通过)
*/
private String status;
+ /**
+ * 审查意见
+ */
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java
index ce97cb5..b7afc93 100644
--- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java
+++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java
@@ -8,8 +8,8 @@ import org.qinan.safetyeval.domain.entity.*;
import org.qinan.safetyeval.domain.exception.BizException;
import org.qinan.safetyeval.domain.exception.ErrorCode;
import org.qinan.safetyeval.domain.gateway.QualFilingGateway;
-import org.qinan.safetyeval.domain.query.QualFilingQuery;
import org.qinan.safetyeval.domain.query.PageResult;
+import org.qinan.safetyeval.domain.query.QualFilingQuery;
import org.qinan.safetyeval.infrastructure.dataobject.*;
import org.qinan.safetyeval.infrastructure.mapper.*;
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
@@ -71,7 +71,8 @@ public class QualFilingGatewayImpl implements QualFilingGateway {
QualFilingDO dataObject = qualFilingMapper.selectById(id);
return toEntity(dataObject);
}
-@Override
+
+ @Override
public QualFilingEntity getByFilingNo(String filingNo) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(QualFilingDO::getFilingNo, filingNo);
@@ -156,11 +157,12 @@ public class QualFilingGatewayImpl implements QualFilingGateway {
/**
* 聚合保存
- * @param entity 基础信息
- * @param commitmentEntity 备案承诺书
- * @param equipmentEntities 备件
- * @param materialEntities 备案材料
- * @param personnelEntities 备案人员
+ *
+ * @param entity 基础信息
+ * @param commitmentEntity 备案承诺书
+ * @param equipmentEntities 备件
+ * @param materialEntities 备案材料
+ * @param personnelEntities 备案人员
* @param personnelCertEntities 备案人员证书
*/
@@ -257,12 +259,13 @@ public class QualFilingGatewayImpl implements QualFilingGateway {
/**
* 备案审核
- * @param filingId 机构id
- * @param reviewResult 审核结果(1通过2待定3不通过)
+ *
+ * @param filingId 机构id
+ * @param reviewResult 审核结果(1通过2待定3不通过)
* @param reviewResultRemark 审核结果文字描述
- * @param filingExpertId 专家id
- * @param filingExpertName 专家名称
- * @param reviewOpinion 审核意见
+ * @param filingExpertId 专家id
+ * @param filingExpertName 专家名称
+ * @param reviewOpinion 审核意见
*/
@Override
public void review(Long filingId, String reviewResult, String reviewResultRemark, Long filingExpertId, String filingExpertName, String reviewOpinion) {
@@ -279,6 +282,8 @@ public class QualFilingGatewayImpl implements QualFilingGateway {
// 更新备案状态
QualFilingDO filing = new QualFilingDO();
QualFilingStatusEnum qualFilingStatusEnum = QualFilingStatusEnum.ofCode(Integer.valueOf(reviewResult));
+ qualFilingStatusEnum = qualFilingStatusEnum == QualFilingStatusEnum.FILED
+ ? QualFilingStatusEnum.CONDITION_COMPLIANCE_PASS : qualFilingStatusEnum;
filing.setFilingStatusCode(qualFilingStatusEnum.getCode());
filing.setFilingStatusName(qualFilingStatusEnum.getName());
filing.setApproveTime(LocalDateTime.now());
diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingMapper.java
index 5880a39..7ca291e 100644
--- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingMapper.java
+++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingMapper.java
@@ -16,4 +16,12 @@ public interface QualFilingMapper extends BaseMapper {
List qualificationMonitoringPage(@Param("page") Page page, @Param("query") QualificationMonitoringQuery query);
QualFilingStatisticsCO qualificationMonitoringPageStatistics();
+
+ /**
+ * 根据机构id查询最新一条资质备案记录
+ *
+ * @param orgId 机构id
+ * @return 最新一条资质备案记录
+ */
+ QualFilingDO selectByOrgIdLastOne(@Param("orgId") Long orgId);
}
diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/domainobject/QualOnSiteReviewDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/domainobject/QualOnSiteReviewDO.java
index 9a11098..310c587 100644
--- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/domainobject/QualOnSiteReviewDO.java
+++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/domainobject/QualOnSiteReviewDO.java
@@ -57,6 +57,10 @@ public class QualOnSiteReviewDO extends BaseDO {
* 现场审查状态(AGENCY_PENDING_CONFIRMATION机构待确认、AGENCY_CONFIRMED机构已确认、REVIEW_PASSED核查通过、REVIEW_FAILED核查不通过)
*/
private String status;
+ /**
+ * 审查意见
+ */
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/domainobject/QualOnSiteReviewFileDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/domainobject/QualOnSiteReviewFileDO.java
index 3aef3e1..a63596b 100644
--- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/domainobject/QualOnSiteReviewFileDO.java
+++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/domainobject/QualOnSiteReviewFileDO.java
@@ -29,6 +29,10 @@ public class QualOnSiteReviewFileDO extends BaseDO {
* 文件url
*/
private String fileUrl;
+ /**
+ * 审查意见
+ */
+ private String reviewOpinion;
/**
* 环境
*/
diff --git a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingMapper.xml
index a286b0a..586ba60 100644
--- a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingMapper.xml
+++ b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingMapper.xml
@@ -84,4 +84,14 @@
where info.delete_enum = 'false';
+
+
diff --git a/safety-eval-infrastructure/src/main/resources/mapper/QualOnSiteReviewMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/QualOnSiteReviewMapper.xml
index 530aeff..6416c03 100644
--- a/safety-eval-infrastructure/src/main/resources/mapper/QualOnSiteReviewMapper.xml
+++ b/safety-eval-infrastructure/src/main/resources/mapper/QualOnSiteReviewMapper.xml
@@ -16,6 +16,7 @@
+
@@ -41,6 +42,7 @@
supervisor_contact,
contact_phone,
status,
+ review_opinion,
delete_enum,
remarks,
create_name,