liusheng
17 小时以前 ab2884ade73fed97d1e7d7daf4b9b5b6dee83fdd
ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/service/VisitPreachformWriter.java
@@ -3,10 +3,10 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.service.VisitTaskCreateApi;
import com.ruoyi.common.core.service.PreachformApi;
import com.ruoyi.common.core.service.dto.VisitSubtaskDraft;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.service.dto.VisitPreachformRow;
import com.ruoyi.inhospvisit.mapper.VisitPreachformMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.ObjectProvider;
@@ -59,7 +59,7 @@
    private static final String DEFAULT_SENDSTATE = "1";
    @Autowired
    private VisitPreachformMapper preachformMapper;
    private ObjectProvider<PreachformApi> preachformApiProvider;
    @Autowired
    private ObjectProvider<VisitTaskCreateApi> taskCreateApiProvider;
@@ -94,6 +94,12 @@
                return;
            }
            // 原 L1084-1098
            PreachformApi preachformApi = preachformApi();
            if (preachformApi == null) {
                log.error("宣教单契约 PreachformApi 不可用(service_subtask_preachform 已归 ruoyi-task),"
                        + "跳过preachform子表生成,taskid为:{}", serviceSubtask.getTaskid());
                return;
            }
            for (VisitPreachformRow row : list) {
                row.setTaskid(serviceSubtask.getTaskid());
                row.setSubid(serviceSubtask.getId());
@@ -103,7 +109,7 @@
                query.setSubid(row.getSubid());
                query.setTaskid(row.getTaskid());
                query.setPreachform(row.getPreachform());
                List<VisitPreachformRow> exists = preachformMapper.selectList(query);
                List<VisitPreachformRow> exists = preachformApi.findList(query);
                if (CollectionUtils.isNotEmpty(exists)) {
                    continue;
                }
@@ -116,7 +122,7 @@
                // 原 L1096-1097
                row.setOrgid(serviceSubtask.getOrgid());
                preachformMapper.insert(row);
                preachformApi.insert(row);
            }
        }
@@ -135,6 +141,22 @@
        }
    }
    /**
     * 取宣教单契约实现(2026-11 起 {@code service_subtask_preachform} 归 {@code ruoyi-task},
     * 本模块不能反向依赖它,只能经 {@code ruoyi-common} 的契约在运行期取实现)。
     */
    private PreachformApi preachformApi() {
        if (preachformApiProvider == null) {
            return null;
        }
        try {
            return preachformApiProvider.stream().findFirst().orElse(null);
        } catch (Exception e) {
            log.warn("【出入院随访】获取 PreachformApi 失败:{}", e.toString());
            return null;
        }
    }
    /** 供测试断言:确认本类拿到的 ObjectMapper 非空(原实现是方法内 new,这里提为字段) */
    boolean hasObjectMapper() {
        return Objects.nonNull(objectMapper);