luotaiqian 2026-07-20 17:49:22 +08:00
parent fdc1e3c576
commit 631b86fa60
27 changed files with 364 additions and 55 deletions

View File

@ -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) {

View File

@ -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);
/**
* DOCmd使
* <p>
* 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<String> jsonStringToList(String json) {
return json == null ? null : JSON.parseArray(json, String.class);
}
}

View File

@ -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);
/**
* DOCmd使
* 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();
}
}

View File

@ -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<QualFilingEquipmentCO> convertChangeEListToCOList(List<QualFilingEquipmentChangeE> changeEs);
/**
* DOCmd使
*/
@Mapping(target = "filingChangeId", ignore = true)
QualFilingEquipmentChangeAddCmd convertDOToCmd(QualFilingEquipmentDO qualFilingEquipmentDO);
/**
* DOCmd
*/
List<QualFilingEquipmentChangeAddCmd> convertDOListToCmdList(List<QualFilingEquipmentDO> qualFilingEquipmentDOs);
}

View File

@ -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<QualFilingMaterialAddCmd> convertChangeEListToCmdList(List<QualFilingMaterialChangeE> changeEs);
/**
* DOCmd使
*/
@Mapping(target = "filingChangeId", ignore = true)
QualFilingMaterialChangeAddCmd convertDOToCmd(QualFilingMaterialDO qualFilingMaterialDO);
/**
* DOCmd
*/
List<QualFilingMaterialChangeAddCmd> convertDOListToCmdList(List<QualFilingMaterialDO> qualFilingMaterialDOs);
}

View File

@ -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<QualFilingPersonnelAddCmd> convertChangeEListToCmdList(List<QualFilingPersonnelChangeE> changeEs);
/**
* DOCmd使
* birthDate / joinWorkDate LocalDate LocalDateTime
*/
@Mapping(target = "filingChangeId", ignore = true)
QualFilingPersonnelChangeAddCmd convertDOToCmd(QualFilingPersonnelDO qualFilingPersonnelDO);
/**
* DOCmd
*/
List<QualFilingPersonnelChangeAddCmd> convertDOListToCmdList(List<QualFilingPersonnelDO> qualFilingPersonnelDOs);
default LocalDate map(LocalDateTime dateTime) {
return dateTime == null ? null : dateTime.toLocalDate();
}
default LocalDateTime map(LocalDate date) {
return date == null ? null : date.atStartOfDay();
}
}

View File

@ -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<QualFilingCommitmentDO>()
.eq(QualFilingCommitmentDO::getFilingId, cmd.getFilingId()));
QualFilingCommitmentChangeAddCmd qualFilingCommitmentChangeAddCmd = new QualFilingCommitmentChangeAddCmd();
BeanUtils.copyProperties(qualFilingCommitmentDO, qualFilingCommitmentChangeAddCmd);
cmdSync.setQualFilingCommitmentChangeAddCmd(qualFilingCommitmentChangeAddCmd);
// 备案装备
List<QualFilingEquipmentDO> qualFilingEquipmentDOs = qualFilingEquipmentMapper.selectList(new LambdaQueryWrapper<QualFilingEquipmentDO>()
.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<QualFilingMaterialDO> qualFilingMaterialDOs = qualFilingMaterialMapper.selectList(new LambdaQueryWrapper<QualFilingMaterialDO>()
.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<QualFilingPersonnelDO> qualFilingPersonnelDOs = qualFilingPersonnelMapper.selectList(new LambdaQueryWrapper<QualFilingPersonnelDO>()
.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

View File

@ -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;
}
/**
*
* <p>
* 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<QualOnSiteReviewFileAddCmd> 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<QualFilingCommitmentDO>()
.eq(QualFilingCommitmentDO::getFilingId, filingId));
cmdSync.setQualFilingCommitmentChangeAddCmd(qualFilingCommitmentChangeCmdConvertor.convertDOToCmd(qualFilingCommitmentDO));
// 备案装备
List<QualFilingEquipmentDO> qualFilingEquipmentDOs = qualFilingEquipmentMapper.selectList(new LambdaQueryWrapper<QualFilingEquipmentDO>()
.eq(QualFilingEquipmentDO::getFilingId, filingId));
cmdSync.setQualFilingEquipmentChangeAddCmds(qualFilingEquipmentChangeCmdConvertor.convertDOListToCmdList(qualFilingEquipmentDOs));
// 备案材料清单
List<QualFilingMaterialDO> qualFilingMaterialDOs = qualFilingMaterialMapper.selectList(new LambdaQueryWrapper<QualFilingMaterialDO>()
.eq(QualFilingMaterialDO::getFilingId, filingId));
cmdSync.setQualFilingMaterialChangeAddCmds(qualFilingMaterialChangeCmdConvertor.convertDOListToCmdList(qualFilingMaterialDOs));
// 备案人员
List<QualFilingPersonnelDO> qualFilingPersonnelDOs = qualFilingPersonnelMapper.selectList(new LambdaQueryWrapper<QualFilingPersonnelDO>()
.eq(QualFilingPersonnelDO::getFilingId, filingId));
cmdSync.setQualFilingPersonnelChangeAddCmds(qualFilingPersonnelChangeCmdConvertor.convertDOListToCmdList(qualFilingPersonnelDOs));
qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync, true);
}
}

View File

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

View File

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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -31,6 +31,11 @@ public class QualOnSiteReviewFileCo extends ClientObject {
*/
@ApiModelProperty(value = "文件url")
private String fileUrl;
/**
*
*/
@ApiModelProperty(value = "审查意见")
private String reviewOpinion;
/**
*
*/

View File

@ -64,6 +64,11 @@ public class QualOnSiteReviewAddCmd implements Serializable {
*/
@ApiModelProperty(value = QualOnSiteReviewStatusEnum.REMARKS, required = true)
private String status;
/**
*
*/
@ApiModelProperty(value = "审查意见")
private String reviewOpinion;
/**
*
*/

View File

@ -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<QualOnSiteReviewFileAddCmd> fileList;
}

View File

@ -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;
/**
*
*/

View File

@ -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;
/**
*
*/

View File

@ -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;
/**
*
*/

View File

@ -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;
/**
*
*/

View File

@ -32,6 +32,10 @@ public class QualOnSiteReviewFileE extends BaseE {
* url
*/
private String fileUrl;
/**
*
*/
private String reviewOpinion;
/**
*
*/

View File

@ -58,6 +58,10 @@ public class QualOnSiteReviewE extends BaseE {
* (AGENCY_PENDING_CONFIRMATIONAGENCY_CONFIRMEDREVIEW_PASSEDREVIEW_FAILED)
*/
private String status;
/**
*
*/
private String reviewOpinion;
/**
*
*/

View File

@ -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<QualFilingDO> 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 (123)
*
* @param filingId id
* @param reviewResult (123)
* @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());

View File

@ -16,4 +16,12 @@ public interface QualFilingMapper extends BaseMapper<QualFilingDO> {
List<QualFilingCO> qualificationMonitoringPage(@Param("page") Page<QualFilingCO> page, @Param("query") QualificationMonitoringQuery query);
QualFilingStatisticsCO qualificationMonitoringPageStatistics();
/**
* id
*
* @param orgId id
* @return
*/
QualFilingDO selectByOrgIdLastOne(@Param("orgId") Long orgId);
}

View File

@ -57,6 +57,10 @@ public class QualOnSiteReviewDO extends BaseDO {
* (AGENCY_PENDING_CONFIRMATIONAGENCY_CONFIRMEDREVIEW_PASSEDREVIEW_FAILED)
*/
private String status;
/**
*
*/
private String reviewOpinion;
/**
*
*/

View File

@ -29,6 +29,10 @@ public class QualOnSiteReviewFileDO extends BaseDO {
* url
*/
private String fileUrl;
/**
*
*/
private String reviewOpinion;
/**
*
*/

View File

@ -84,4 +84,14 @@
where info.delete_enum = 'false';
</select>
<select id="selectByOrgIdLastOne" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from qual_filing
where org_id = #{orgId}
and delete_enum = 'false'
order by id desc
limit 1
</select>
</mapper>

View File

@ -16,6 +16,7 @@
<result property="supervisorContact" column="supervisor_contact"/>
<result property="contactPhone" column="contact_phone"/>
<result property="status" column="status"/>
<result property="reviewOpinion" column="review_opinion"/>
<result property="deleteEnum" column="delete_enum"/>
<result property="remarks" column="remarks"/>
<result property="createName" column="create_name"/>
@ -41,6 +42,7 @@
supervisor_contact,
contact_phone,
status,
review_opinion,
delete_enum,
remarks,
create_name,