package com.ruoyi.common.core.service; import com.ruoyi.common.core.service.dto.ServiceTaskMatchDto; import java.util.List; /** * 「长期随访任务匹配」的对外契约。 * *

为什么需要它(本契约是门急诊/手术随访模块化的唯一新增契约)

* 三个随访模块(出入院 {@code ruoyi-inhospvisit}、门急诊 {@code ruoyi-outpatientvisit}、 * 其他 {@code ruoyi-othervisit})都要做同一件事:按某个维度查"有没有配长期随访任务"。 * 现状是各自直接注入 smartor 的 Mapper: * *
 * 门诊:serviceTaskdeptMapper.selectServiceTaskdeptList(q)   // 科室维度 service_type="3"
 *       serviceTaskdiagMapper.selectServiceTaskdiagList(q)   // 诊断维度
 * 手术:serviceTaskoperMapper.selectServiceTaskoperList(q)   // 手术编码维度
 * 宣教:serviceTaskmedicalMapper...                          // 药品维度(本模块自带 PublicityDataPort)
 * 
* * 这些 Mapper 属于 smartor 的「服务任务」域,不能跟着随访模块搬 * (它们同时被出入院/门诊/手术/宣教四方共用,搬给任何一方都会让另外三方反向依赖)。 * 所以按既有套路({@code VisitTaskCreateApi} / {@code PublicityDataPort} 同样的做法) * 把"查"这一层做成 ruoyi-common 的契约,smartor 侧提供过渡实现。 * *

⚠️ 本契约只管"查",不管"判断"

* 原实现里"查不到就把标志位置 {@code "2"} 并写原因文案"属于随访域的业务规则, * 留在各随访模块里(门诊/出入院/手术的原因文案各不相同)。 * 本契约只做「给定条件 → 返回匹配到的行」,与 {@code selectServiceTask*List} 逐字对应。 * *

⚠️ 返回类型不得是 smartor 实体

* 见 {@link ServiceTaskMatchDto} 的反向依赖红线说明。 * *

各方法的原实现对应

* * * * * * * * *
本契约方法原 Mapper 调用
{@link #findLongTasksByDept(String, String)}{@code ServiceTaskdeptMapper.selectServiceTaskdeptList}
{@link #findLongTasksByDiag(String)}{@code ServiceTaskdiagMapper.selectServiceTaskdiagList}
{@link #findLongTasksByOpcode(String)}{@code ServiceTaskoperMapper.selectServiceTaskoperList}
* * @see ServiceTaskMatchDto */ public interface ServiceTaskMatchApi { /** * 科室维度:查该科室下已配置的长期随访任务。 *

* 原实现(门诊 {@code PatMedOuthospServiceImpl#dealOutpatientInfo} L394-398): *

     * ServiceTaskdept q = new ServiceTaskdept();
     * q.setLongtask(1L);
     * q.setDeptCode(patMedOuthosp1.getDeptcode());
     * q.setServiceType("3");
     * List<ServiceTaskdept> list = serviceTaskdeptMapper.selectServiceTaskdeptList(q);
     * 
* 即:{@code del_flag=0} + {@code longtask=1} + {@code dept_code=?} + {@code service_type=?}。 * * @param deptCode 科室编码(原 {@code patMedOuthosp.deptcode}) * @param serviceType 服务类型(门诊传 {@code "3"};其它调用方传各自的值,不做假设) * @return 匹配到的任务行;查不到返回空集合(不返回 null) */ List findLongTasksByDept(String deptCode, String serviceType); /** * 诊断维度:查该 ICD10 下已配置的长期随访任务。 *

* 原实现(门诊 L410-413):{@code longtask=1} + {@code icd10code=?}(不设 serviceType)。 * * @param icd10code ICD10 编码(原 {@code patMedOuthosp.icd10code}) * @return 匹配到的任务行;查不到返回空集合 */ List findLongTasksByDiag(String icd10code); /** * 手术编码维度:查该手术编码下已配置的长期随访任务。 *

* 原实现(手术 {@code PatMedOperationServiceImpl#dealOperationInfo} L118-121): * {@code longtask=1} + {@code opcode=?}(不设 serviceType)。 * * @param opcode 手术编码(原 {@code patMedOperation.opcode}) * @return 匹配到的任务行;查不到返回空集合 */ List findLongTasksByOpcode(String opcode); }