package com.ruoyi.task.api.contract;
|
|
import com.ruoyi.common.core.service.ServiceTaskMatchApi;
|
import com.ruoyi.common.core.service.dto.ServiceTaskMatchDto;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
import com.ruoyi.task.domain.ServiceTaskdept;
|
import com.ruoyi.task.domain.ServiceTaskdiag;
|
import com.ruoyi.task.domain.ServiceTaskoper;
|
import com.ruoyi.task.mapper.ServiceTaskdeptMapper;
|
import com.ruoyi.task.mapper.ServiceTaskdiagMapper;
|
import com.ruoyi.task.mapper.ServiceTaskoperMapper;
|
|
/**
|
* 【过渡实现·临时】{@link ServiceTaskMatchApi} 在 smartor 侧的桥接。
|
*
|
* <h3>为什么需要它</h3>
|
* 门急诊随访({@code ruoyi-outpatientvisit})与手术随访({@code ruoyi-othervisit})
|
* 都要"按维度查长期随访任务",而这些查询用的
|
* {@link ServiceTaskdeptMapper} / {@link ServiceTaskdiagMapper} / {@link ServiceTaskoperMapper}
|
* 属于 smartor 的「服务任务」域,被四个随访模块共用,<b>不能</b>跟任何一方搬走。
|
* 所以在「随访任务创建模块」落地之前,先把这三个<b>读</b>查询包一层。
|
* <p>
|
* <b>将来动作</b>:任务创建模块建好后把它的实现注册进容器,本类整体删除即可,
|
* 两个随访模块<b>一行都不用改</b>。
|
*
|
* <h3>⚠️ 本类必须保持"纯搬运"</h3>
|
* 这里<b>不得</b>加入去重、排序、默认值补齐、缓存等任何新逻辑 ——
|
* 逐方法与 {@code selectServiceTask*List} 一一对应。
|
* "查不到时把标志位置 2 并写原因"属于随访域业务规则,留在各随访模块里。
|
*
|
* <h3>逐方法来源(迁移前 @ b25c3b51)</h3>
|
* <table border="1">
|
* <tr><th>本类方法</th><th>原调用位置</th></tr>
|
* <tr><td>{@link #findLongTasksByDept(String, String)}</td>
|
* <td>门诊 {@code PatMedOuthospServiceImpl#dealOutpatientInfo} L394-398
|
* ({@code longtask=1} + {@code deptCode} + {@code serviceType="3"})</td></tr>
|
* <tr><td>{@link #findLongTasksByDiag(String)}</td>
|
* <td>门诊同方法 L410-413({@code longtask=1} + {@code icd10code})</td></tr>
|
* <tr><td>{@link #findLongTasksByOpcode(String)}</td>
|
* <td>手术 {@code PatMedOperationServiceImpl#dealOperationInfo} L118-121
|
* ({@code longtask=1} + {@code opcode})</td></tr>
|
* </table>
|
*
|
* <h3>⚠️ 为什么参数里有 serviceType 却不由本类写死</h3>
|
* 门诊的科室维度查询传 {@code "3"},但那是<b>门诊的</b>口径,不是本契约的口径。
|
* 本类只负责把它透传进 {@code service_type=#{serviceType}},
|
* 免得多一个调用方时把 {@code "3"} 错误地当成通用值。
|
*
|
* @see com.ruoyi.common.core.service.ServiceTaskMatchApi
|
*/
|
@Slf4j
|
@Component
|
public class ServiceTaskMatchApiImpl implements ServiceTaskMatchApi {
|
|
@Autowired
|
private ServiceTaskdeptMapper serviceTaskdeptMapper;
|
|
@Autowired
|
private ServiceTaskdiagMapper serviceTaskdiagMapper;
|
|
@Autowired
|
private ServiceTaskoperMapper serviceTaskoperMapper;
|
|
/**
|
* 科室维度。
|
* <p>
|
* 原实现逐行对应:
|
* <pre>
|
* ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
|
* serviceTaskdept.setLongtask(1L);
|
* serviceTaskdept.setDeptCode(patMedOuthosp1.getDeptcode());
|
* serviceTaskdept.setServiceType("3");
|
* List<ServiceTaskdept> list = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
|
* </pre>
|
*/
|
@Override
|
public List<ServiceTaskMatchDto> findLongTasksByDept(String deptCode, String serviceType) {
|
ServiceTaskdept q = new ServiceTaskdept();
|
q.setLongtask(1L);
|
q.setDeptCode(deptCode);
|
q.setServiceType(serviceType);
|
List<ServiceTaskdept> rows = serviceTaskdeptMapper.selectServiceTaskdeptList(q);
|
if (CollectionUtils.isEmpty(rows)) {
|
return Collections.emptyList();
|
}
|
List<ServiceTaskMatchDto> out = new ArrayList<>(rows.size());
|
for (ServiceTaskdept r : rows) {
|
ServiceTaskMatchDto d = new ServiceTaskMatchDto();
|
d.setId(r.getId());
|
d.setTaskId(r.getTaskId());
|
d.setTaskName(r.getTaskName());
|
d.setLongtask(r.getLongtask());
|
d.setServiceType(r.getServiceType());
|
d.setMatchCode(r.getDeptCode());
|
out.add(d);
|
}
|
return out;
|
}
|
|
/**
|
* 诊断维度。
|
* <p>
|
* 原实现逐行对应:
|
* <pre>
|
* ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
|
* serviceTaskdiag.setLongtask(1L);
|
* serviceTaskdiag.setIcd10code(patMedOuthosp1.getIcd10code());
|
* List<ServiceTaskdiag> list = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);
|
* </pre>
|
* ⚠️ 注意原实现<b>没有</b>设 {@code serviceType},本方法保持一致(不补)。
|
*/
|
@Override
|
public List<ServiceTaskMatchDto> findLongTasksByDiag(String icd10code) {
|
ServiceTaskdiag q = new ServiceTaskdiag();
|
q.setLongtask(1L);
|
q.setIcd10code(icd10code);
|
List<ServiceTaskdiag> rows = serviceTaskdiagMapper.selectServiceTaskdiagList(q);
|
if (CollectionUtils.isEmpty(rows)) {
|
return Collections.emptyList();
|
}
|
List<ServiceTaskMatchDto> out = new ArrayList<>(rows.size());
|
for (ServiceTaskdiag r : rows) {
|
ServiceTaskMatchDto d = new ServiceTaskMatchDto();
|
d.setId(r.getId());
|
d.setTaskId(r.getTaskId());
|
d.setTaskName(r.getTaskName());
|
d.setLongtask(r.getLongtask());
|
d.setServiceType(r.getServiceType());
|
d.setMatchCode(r.getIcd10code());
|
out.add(d);
|
}
|
return out;
|
}
|
|
/**
|
* 手术编码维度。
|
* <p>
|
* 原实现逐行对应:
|
* <pre>
|
* ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
|
* serviceTaskoper.setLongtask(1L);
|
* serviceTaskoper.setOpcode(patMedOperation1.getOpcode());
|
* List<ServiceTaskoper> list = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper);
|
* </pre>
|
* ⚠️ 同样<b>不设</b> {@code serviceType},与原实现一致。
|
*/
|
@Override
|
public List<ServiceTaskMatchDto> findLongTasksByOpcode(String opcode) {
|
ServiceTaskoper q = new ServiceTaskoper();
|
q.setLongtask(1L);
|
q.setOpcode(opcode);
|
List<ServiceTaskoper> rows = serviceTaskoperMapper.selectServiceTaskoperList(q);
|
if (CollectionUtils.isEmpty(rows)) {
|
return Collections.emptyList();
|
}
|
List<ServiceTaskMatchDto> out = new ArrayList<>(rows.size());
|
for (ServiceTaskoper r : rows) {
|
ServiceTaskMatchDto d = new ServiceTaskMatchDto();
|
d.setId(r.getId());
|
d.setTaskId(r.getTaskId());
|
d.setTaskName(r.getTaskName());
|
d.setLongtask(r.getLongtask());
|
d.setServiceType(r.getServiceType());
|
d.setMatchCode(r.getOpcode());
|
out.add(d);
|
}
|
return out;
|
}
|
}
|