gengjunfang 1 неделя назад
Родитель
Сommit
e8727d7fc4

+ 3 - 0
src/main/java/com/zskk/qcns/modules/factor/request/FactorCreateVO.java

@@ -49,4 +49,7 @@ public class FactorCreateVO {
 
     @Schema(description = "是否启用:1启用 0禁用")
     private Integer enabled;
+
+    @Schema(description = "关联标准ID")
+    private String standardId;
 }

+ 3 - 0
src/main/java/com/zskk/qcns/modules/integration/entity/IntegrationConfig.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.Getter;
@@ -102,11 +103,13 @@ public class IntegrationConfig implements Serializable {
      * 创建时间
      */
     @TableField("create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;
 
     /**
      * 修改时间
      */
     @TableField("update_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime updateTime;
 }

+ 4 - 0
src/main/java/com/zskk/qcns/modules/integration/service/impl/IntegrationConfigServiceImpl.java

@@ -11,6 +11,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+
 /**
  * 对接配置 服务实现类
  *
@@ -41,6 +43,8 @@ public class IntegrationConfigServiceImpl extends ServiceImpl<IntegrationConfigM
         if (config.getIsDisabled() == null) {
             config.setIsDisabled(0);
         }
+        config.setCreateTime(LocalDateTime.now());
+        config.setUpdateTime(LocalDateTime.now());
 
         baseMapper.insert(config);
         log.info("创建对接配置成功,ID: {}, 机构: {}", config.getId(), dto.getInstitutionName());

+ 3 - 3
src/main/java/com/zskk/qcns/modules/qc/controller/QcTaskManageController.java

@@ -208,9 +208,9 @@ public class QcTaskManageController {
                 return RestResult.error("任务不存在");
             }
 
-            // 只有待执行状态的任务才能删除
-            if (task.getStatus() != 0) {
-                return RestResult.error("只有待执行状态的任务才能删除");
+            // 执行中的任务不能删除
+            if (task.getStatus() != null && task.getStatus() == 1) {
+                return RestResult.error("执行中的任务不能删除");
             }
 
             int result = qcTaskMapper.deleteById(taskId);

+ 1 - 1
src/main/java/com/zskk/qcns/modules/qc/mapper/QcFactorLevelConfigMapper.java

@@ -23,7 +23,7 @@ public interface QcFactorLevelConfigMapper extends BaseMapper<QcFactorLevelConfi
      * @param factorId 因子ID
      * @return 等级配置列表
      */
-    @Select("SELECT * FROM qc_factor_level_config WHERE factor_id = #{factorId} ORDER BY level_score DESC")
+    @Select("SELECT * FROM qc_factor_level_config WHERE factor_id = #{factorId} AND status = 1 ORDER BY level_score DESC")
     List<QcFactorLevelConfig> selectByFactorId(@Param("factorId") String factorId);
 
     /**

+ 5 - 0
src/main/java/com/zskk/qcns/modules/qc/request/FactorLevelConfigUpdateVO.java

@@ -24,6 +24,11 @@ public class FactorLevelConfigUpdateVO implements Serializable {
     @NotBlank(message = "ID不能为空")
     private String id;
 
+    /**
+     * 等级编码
+     */
+    private String levelCode;
+
     /**
      * 等级名称
      */

+ 23 - 1
src/main/java/com/zskk/qcns/modules/qc/service/impl/QcFactorLevelConfigServiceImpl.java

@@ -38,10 +38,29 @@ public class QcFactorLevelConfigServiceImpl extends ServiceImpl<QcFactorLevelCon
         wrapper.eq(QcFactorLevelConfig::getFactorId, createVO.getFactorId())
                 .eq(QcFactorLevelConfig::getLevelTemplateId, createVO.getLevelTemplateId());
         QcFactorLevelConfig existing = this.getOne(wrapper);
-        if (existing != null) {
+
+        if (existing != null && existing.getStatus() == 1) {
             throw new RuntimeException("该因子已存在相同等级模板的配置");
         }
 
+        if (existing != null && existing.getStatus() == 0) {
+            // 已逻辑删除的记录,恢复并更新
+            existing.setLevelName(createVO.getLevelName());
+            existing.setLevelCode(createVO.getLevelCode());
+            existing.setLevelScore(createVO.getLevelScore());
+            existing.setIsVeto(createVO.getIsVeto() != null ? createVO.getIsVeto() : 0);
+            existing.setUserDescription(createVO.getUserDescription());
+            existing.setThresholdConfig(createVO.getThresholdConfig());
+            existing.setEnabled(createVO.getEnabled() != null ? createVO.getEnabled() : 1);
+            existing.setStatus(1);
+            existing.setUpdateTime(LocalDateTime.now());
+            this.updateById(existing);
+            log.info("恢复已删除的等级配置:id={}, factorId={}, levelTemplateId={}",
+                    existing.getId(), existing.getFactorId(), existing.getLevelTemplateId());
+            return existing.getId();
+        }
+
+        // 新增记录
         QcFactorLevelConfig config = new QcFactorLevelConfig();
         config.setId(IdUtil.simpleUUID());
         config.setFactorId(createVO.getFactorId());
@@ -71,6 +90,9 @@ public class QcFactorLevelConfigServiceImpl extends ServiceImpl<QcFactorLevelCon
             return false;
         }
 
+        if (updateVO.getLevelCode() != null) {
+            config.setLevelCode(updateVO.getLevelCode());
+        }
         if (updateVO.getLevelName() != null) {
             config.setLevelName(updateVO.getLevelName());
         }

+ 23 - 4
src/main/java/com/zskk/qcns/modules/qc/service/impl/QcFactorServiceImpl.java

@@ -55,6 +55,20 @@ public class QcFactorServiceImpl extends ServiceImpl<QcFactorMapper, QcFactor> i
 
         this.save(factor);
 
+        // 如果指定了标准ID,创建关联记录
+        if (createVO.getStandardId() != null && !createVO.getStandardId().isEmpty()) {
+            QcStandardFactor relation = new QcStandardFactor();
+            relation.setId(IdUtil.simpleUUID());
+            relation.setStandardId(createVO.getStandardId());
+            relation.setFactorId(factor.getId());
+            relation.setSortOrder(0);
+            relation.setWeight(createVO.getWeight());
+            relation.setIsRequired(1);
+            relation.setCreateTime(LocalDateTime.now());
+            qcStandardFactorMapper.insert(relation);
+            log.info("创建质控因子关联记录:factorId={}, standardId={}", factor.getId(), createVO.getStandardId());
+        }
+
         log.info("创建质控因子成功:factorId={}, factorCode={}", factor.getId(), factor.getFactorCode());
         return factor.getId();
     }
@@ -91,13 +105,12 @@ public class QcFactorServiceImpl extends ServiceImpl<QcFactorMapper, QcFactor> i
 
         boolean result = this.updateById(factor);
 
-        // 处理关联表更新(如果有标准ID)
+        // 处理关联表更新
         if (updateVO.getStandardId() != null && !updateVO.getStandardId().isEmpty()) {
-            // 查询是否已存在关联记录
+            // 有标准ID:更新或新增关联
             QcStandardFactor existingRelation = qcStandardFactorMapper.selectByFactorId(updateVO.getId());
 
             if (existingRelation != null) {
-                // 更新现有关联记录
                 existingRelation.setStandardId(updateVO.getStandardId());
                 if (updateVO.getSortOrder() != null) {
                     existingRelation.setSortOrder(updateVO.getSortOrder());
@@ -108,7 +121,6 @@ public class QcFactorServiceImpl extends ServiceImpl<QcFactorMapper, QcFactor> i
                 qcStandardFactorMapper.updateById(existingRelation);
                 log.info("更新质控因子关联记录:factorId={}, standardId={}", updateVO.getId(), updateVO.getStandardId());
             } else {
-                // 插入新的关联记录
                 QcStandardFactor newRelation = new QcStandardFactor();
                 newRelation.setId(IdUtil.simpleUUID());
                 newRelation.setStandardId(updateVO.getStandardId());
@@ -120,6 +132,13 @@ public class QcFactorServiceImpl extends ServiceImpl<QcFactorMapper, QcFactor> i
                 qcStandardFactorMapper.insert(newRelation);
                 log.info("插入质控因子关联记录:factorId={}, standardId={}", updateVO.getId(), updateVO.getStandardId());
             }
+        } else {
+            // 标准ID为空:删除已有关联
+            QcStandardFactor existingRelation = qcStandardFactorMapper.selectByFactorId(updateVO.getId());
+            if (existingRelation != null) {
+                qcStandardFactorMapper.deleteById(existingRelation.getId());
+                log.info("删除质控因子关联记录:factorId={}", updateVO.getId());
+            }
         }
 
         log.info("更新质控因子成功:factorId={}", updateVO.getId());

+ 28 - 32
src/main/java/com/zskk/qcns/modules/qc/service/impl/QcStandardServiceImpl.java

@@ -51,26 +51,20 @@ public class QcStandardServiceImpl extends ServiceImpl<QcStandardMapper, QcStand
     @Override
     @Transactional(rollbackFor = Exception.class)
     public String createStandard(StandardCreateVO createVO) {
-        // 1. 验证总权重是否为100%
-        BigDecimal totalWeight = createVO.getFactors().stream()
-            .map(StandardFactorItemVO::getWeight)
-            .reduce(BigDecimal.ZERO, BigDecimal::add);
-        
-        if (totalWeight.compareTo(new BigDecimal("100")) != 0) {
-            throw new RuntimeException("因子总权重必须为100%,当前为:" + totalWeight + "%");
-        }
-
-        // 2. 验证所有因子是否存在
-        List<String> factorIds = createVO.getFactors().stream()
-            .map(StandardFactorItemVO::getFactorId)
-            .collect(Collectors.toList());
-        
-        long factorCount = qcFactorMapper.selectBatchIds(factorIds).stream().count();
-        if (factorCount != factorIds.size()) {
-            throw new RuntimeException("部分因子不存在,请检查");
+        // 1. 验证所有因子是否存在(如果有因子)
+        List<StandardFactorItemVO> factors = createVO.getFactors();
+        if (factors != null && !factors.isEmpty()) {
+            List<String> factorIds = factors.stream()
+                .map(StandardFactorItemVO::getFactorId)
+                .collect(Collectors.toList());
+
+            long factorCount = qcFactorMapper.selectBatchIds(factorIds).stream().count();
+            if (factorCount != factorIds.size()) {
+                throw new RuntimeException("部分因子不存在,请检查");
+            }
         }
 
-        // 3. 创建标准
+        // 2. 创建标准
         QcStandard standard = new QcStandard();
         standard.setId(IdUtil.simpleUUID());
         standard.setStandardCode(createVO.getStandardCode());
@@ -94,20 +88,22 @@ public class QcStandardServiceImpl extends ServiceImpl<QcStandardMapper, QcStand
 
         qcStandardMapper.insert(standard);
 
-        // 4. 创建标准因子关联
-        int sortOrder = 0;
-        for (StandardFactorItemVO factorItem : createVO.getFactors()) {
-            QcStandardFactor standardFactor = new QcStandardFactor();
-            standardFactor.setId(IdUtil.simpleUUID());
-            standardFactor.setStandardId(standard.getId());
-            standardFactor.setFactorId(factorItem.getFactorId());
-            standardFactor.setWeight(factorItem.getWeight());
-            standardFactor.setIsRequired(factorItem.getIsRequired() != null ? factorItem.getIsRequired() : 1);
-            standardFactor.setThresholdValue(factorItem.getThresholdValue());
-            standardFactor.setSortOrder(sortOrder++);
-            standardFactor.setCreateTime(LocalDateTime.now());
-
-            qcStandardFactorMapper.insert(standardFactor);
+        // 3. 创建标准因子关联(如果有因子)
+        if (factors != null && !factors.isEmpty()) {
+            int sortOrder = 0;
+            for (StandardFactorItemVO factorItem : factors) {
+                QcStandardFactor standardFactor = new QcStandardFactor();
+                standardFactor.setId(IdUtil.simpleUUID());
+                standardFactor.setStandardId(standard.getId());
+                standardFactor.setFactorId(factorItem.getFactorId());
+                standardFactor.setWeight(factorItem.getWeight());
+                standardFactor.setIsRequired(factorItem.getIsRequired() != null ? factorItem.getIsRequired() : 1);
+                standardFactor.setThresholdValue(factorItem.getThresholdValue());
+                standardFactor.setSortOrder(sortOrder++);
+                standardFactor.setCreateTime(LocalDateTime.now());
+
+                qcStandardFactorMapper.insert(standardFactor);
+            }
         }
 
         log.info("创建质控标准成功:standardId={}, standardCode={}", standard.getId(), standard.getStandardCode());

+ 12 - 13
src/main/java/com/zskk/qcns/modules/standard/controller/QcStandardController.java

@@ -7,10 +7,9 @@ import com.zskk.qcns.modules.qc.entity.QcFactor;
 import com.zskk.qcns.modules.qc.entity.QcStandard;
 import com.zskk.qcns.modules.qc.entity.QcStandardFactor;
 import com.zskk.qcns.modules.qc.mapper.QcFactorMapper;
-import com.zskk.qcns.modules.qc.mapper.QcStandardMapper;
 import com.zskk.qcns.modules.qc.mapper.QcStandardFactorMapper;
+import com.zskk.qcns.modules.qc.mapper.QcStandardMapper;
 import com.zskk.qcns.modules.qc.service.QcStandardService;
-import com.zskk.qcns.modules.standard.vo.*;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
@@ -52,7 +51,7 @@ public class QcStandardController {
      */
     @Operation(summary = "分页查询质控标准列表")
     @GetMapping("/list")
-    public RestResult<?> getStandardList(StandardQueryVO queryVO) {
+    public RestResult<?> getStandardList(com.zskk.qcns.modules.standard.vo.StandardQueryVO queryVO) {
         try {
             Page<QcStandard> page = new Page<>(queryVO.getPageNum(), queryVO.getPageSize());
             LambdaQueryWrapper<QcStandard> query = new LambdaQueryWrapper<>();
@@ -75,9 +74,9 @@ public class QcStandardController {
             page = qcStandardMapper.selectPage(page, query);
 
             // 转换为VO并加载因子信息
-            Page<StandardVO> voPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
+            Page<com.zskk.qcns.modules.standard.vo.StandardVO> voPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
             voPage.setRecords(page.getRecords().stream().map(standard -> {
-                StandardVO vo = convertToVO(standard);
+                com.zskk.qcns.modules.standard.vo.StandardVO vo = convertToVO(standard);
                 return vo;
             }).collect(Collectors.toList()));
 
@@ -100,7 +99,7 @@ public class QcStandardController {
                 return RestResult.error("质控标准不存在");
             }
 
-            StandardVO vo = convertToVO(standard);
+            com.zskk.qcns.modules.standard.vo.StandardVO vo = convertToVO(standard);
             return RestResult.ok("查询成功", vo);
         } catch (Exception e) {
             log.error("查询质控标准详情失败:{}", e.getMessage(), e);
@@ -113,7 +112,7 @@ public class QcStandardController {
      */
     @Operation(summary = "新增质控标准")
     @PostMapping
-    public RestResult<?> createStandard(@Valid @RequestBody StandardCreateVO createVO) {
+    public RestResult<?> createStandard(@Valid @RequestBody com.zskk.qcns.modules.standard.vo.StandardCreateVO createVO) {
         try {
             // 检查标准编码是否已存在
             LambdaQueryWrapper<QcStandard> wrapper = new LambdaQueryWrapper<>();
@@ -136,7 +135,7 @@ public class QcStandardController {
      */
     @Operation(summary = "更新质控标准")
     @PutMapping
-    public RestResult<?> updateStandard(@Valid @RequestBody StandardUpdateVO updateVO) {
+    public RestResult<?> updateStandard(@Valid @RequestBody com.zskk.qcns.modules.standard.vo.StandardUpdateVO updateVO) {
         try {
             boolean success = qcStandardService.updateStandard(updateVO);
             if (!success) {
@@ -228,8 +227,8 @@ public class QcStandardController {
     /**
      * 转换为VO并加载因子信息
      */
-    private StandardVO convertToVO(QcStandard standard) {
-        StandardVO vo = new StandardVO();
+    private com.zskk.qcns.modules.standard.vo.StandardVO convertToVO(QcStandard standard) {
+        com.zskk.qcns.modules.standard.vo.StandardVO vo = new com.zskk.qcns.modules.standard.vo.StandardVO();
         vo.setId(standard.getId());
         vo.setStandardCode(standard.getStandardCode());
         vo.setStandardName(standard.getStandardName());
@@ -250,10 +249,10 @@ public class QcStandardController {
 
         List<QcStandardFactor> standardFactors = qcStandardFactorMapper.selectList(factorWrapper);
 
-        List<StandardFactorVO> factorVOs = standardFactors.stream().map(sf -> {
+        List<com.zskk.qcns.modules.standard.vo.StandardFactorVO> factorVOs = standardFactors.stream().map(sf -> {
             QcFactor factor = qcFactorMapper.selectById(sf.getFactorId());
 
-            StandardFactorVO factorVO = new StandardFactorVO();
+            com.zskk.qcns.modules.standard.vo.StandardFactorVO factorVO = new com.zskk.qcns.modules.standard.vo.StandardFactorVO();
             factorVO.setId(sf.getId());
             factorVO.setFactorId(sf.getFactorId());
             if (factor != null) {
@@ -273,7 +272,7 @@ public class QcStandardController {
 
         // 计算总权重
         BigDecimal totalWeight = factorVOs.stream()
-            .map(StandardFactorVO::getWeight)
+            .map(com.zskk.qcns.modules.standard.vo.StandardFactorVO::getWeight)
             .reduce(BigDecimal.ZERO, BigDecimal::add);
 
         vo.setFactors(factorVOs);

+ 0 - 0
src/main/java/com/zskk/qcns/modules/standard/request/StandardCreateVO.java → src/main/java/com/zskk/qcns/modules/standard/vo/StandardCreateVO.java


+ 0 - 0
src/main/java/com/zskk/qcns/modules/standard/request/StandardFactorItemVO.java → src/main/java/com/zskk/qcns/modules/standard/vo/StandardFactorItemVO.java


+ 0 - 0
src/main/java/com/zskk/qcns/modules/standard/request/StandardFactorVO.java → src/main/java/com/zskk/qcns/modules/standard/vo/StandardFactorVO.java


+ 0 - 0
src/main/java/com/zskk/qcns/modules/standard/request/StandardQueryVO.java → src/main/java/com/zskk/qcns/modules/standard/vo/StandardQueryVO.java


+ 0 - 0
src/main/java/com/zskk/qcns/modules/standard/request/StandardUpdateVO.java → src/main/java/com/zskk/qcns/modules/standard/vo/StandardUpdateVO.java


+ 0 - 0
src/main/java/com/zskk/qcns/modules/standard/request/StandardVO.java → src/main/java/com/zskk/qcns/modules/standard/vo/StandardVO.java