package com.ruoyi.task.api.contract;
|
|
import com.ruoyi.common.core.service.PreachformApi;
|
import com.ruoyi.common.core.service.dto.VisitPreachformRow;
|
import com.ruoyi.task.domain.ServiceSubtask;
|
import com.ruoyi.task.domain.ServiceSubtaskPreachform;
|
import com.ruoyi.task.mapper.ServiceSubtaskPreachformMapper;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
/**
|
* {@link PreachformApi} 在 <b>本模块(ruoyi-task)</b>的实现 ——
|
* {@code service_subtask_preachform} 的<b>唯一</b>数据访问出口。
|
*
|
* <h3>2026-11 归属调整</h3>
|
* 该表原先归 {@code ruoyi-inhospvisit},实现是它的 {@code DefaultPreachformApi};
|
* 按"表跟随业务域"的口径,表的 SQL / Mapper / 实体都划到本模块,于是本类接管契约实现。
|
* 仍然保留这个契约的原因只有一个:{@code ruoyi-inhospvisit} 需要写这张表(宣教明细),
|
* 而依赖方向是 {@code ruoyi-task → ruoyi-inhospvisit},反向不成立(否则成环),
|
* 所以它只能经 {@code ruoyi-common} 里的契约在运行期取到本实现。
|
*
|
* <h3>⚠️ 纯数据访问</h3>
|
* 本类只做「契约行 ↔ 实体」的逐字段搬运 + 调 Mapper,不含任何业务判断:
|
* 什么时候该插一条、该置什么状态,都属于调用方。
|
* 15 个字段逐个照抄(少搬一个 = 该列静默不写/不读)。
|
*/
|
@Slf4j
|
@Component
|
public class PreachformApiImpl implements PreachformApi {
|
|
@Autowired
|
private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
|
|
@Override
|
public VisitPreachformRow findById(Long id) {
|
return toRow(serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformById(id));
|
}
|
|
@Override
|
public List<VisitPreachformRow> findList(VisitPreachformRow query) {
|
List<ServiceSubtaskPreachform> rows =
|
serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(toEntity(query));
|
return toRows(rows);
|
}
|
|
@Override
|
public List<VisitPreachformRow> findByTaskidAndOrgid(Long taskid, String orgid) {
|
ServiceSubtask query = new ServiceSubtask();
|
query.setTaskid(taskid);
|
query.setOrgid(orgid);
|
return toRows(serviceSubtaskPreachformMapper.selectBySubtask(query));
|
}
|
|
@Override
|
public boolean insert(VisitPreachformRow row) {
|
ServiceSubtaskPreachform entity = toEntity(row);
|
int n = serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(entity);
|
// 原 XML 用 useGeneratedKeys 把自增主键回填到入参对象;这里同样回填,
|
// 保证"先 insert 再拿 id"的调用方行为不变。
|
if (row != null && entity != null) {
|
row.setId(entity.getId());
|
}
|
return n == 1;
|
}
|
|
@Override
|
public boolean updateById(VisitPreachformRow row) {
|
return serviceSubtaskPreachformMapper
|
.updateServiceSubtaskPreachform(toEntity(row)) == 1;
|
}
|
|
@Override
|
public boolean updateByCondition(VisitPreachformRow row) {
|
return serviceSubtaskPreachformMapper.updateSSPByCondition(toEntity(row)) >= 1;
|
}
|
|
@Override
|
public boolean softDeleteById(Long id) {
|
return serviceSubtaskPreachformMapper.deleteServiceSubtaskPreachformById(id) >= 1;
|
}
|
|
@Override
|
public boolean softDeleteByIds(Long[] ids) {
|
return serviceSubtaskPreachformMapper.deleteServiceSubtaskPreachformByIds(ids) >= 1;
|
}
|
|
@Override
|
public boolean softDeleteBySubid(Long subid) {
|
return serviceSubtaskPreachformMapper.deleteServiceSubtaskPreachformBySubid(subid) >= 1;
|
}
|
|
// ==========================================================================
|
// 字段搬运(契约行 ↔ 本模块实体)。两侧字段名与类型完全一致(15 个),
|
// 逐字段照抄,不做"顺手精简"。
|
// ==========================================================================
|
|
private ServiceSubtaskPreachform toEntity(VisitPreachformRow r) {
|
if (r == null) {
|
return null;
|
}
|
ServiceSubtaskPreachform e = new ServiceSubtaskPreachform();
|
e.setId(r.getId());
|
e.setSubid(r.getSubid());
|
e.setTaskid(r.getTaskid());
|
e.setPreachform(r.getPreachform());
|
e.setSendstate(r.getSendstate());
|
e.setCurrentSendTime(r.getCurrentSendTime());
|
e.setOrgid(r.getOrgid());
|
e.setDelFlag(r.getDelFlag());
|
e.setSort(r.getSort());
|
e.setCompensateTime(r.getCompensateTime());
|
e.setRemark(r.getRemark());
|
e.setCreateBy(r.getCreateBy());
|
e.setCreateTime(r.getCreateTime());
|
e.setUpdateBy(r.getUpdateBy());
|
e.setUpdateTime(r.getUpdateTime());
|
return e;
|
}
|
|
private VisitPreachformRow toRow(ServiceSubtaskPreachform e) {
|
if (e == null) {
|
return null;
|
}
|
VisitPreachformRow r = new VisitPreachformRow();
|
r.setId(e.getId());
|
r.setSubid(e.getSubid());
|
r.setTaskid(e.getTaskid());
|
r.setPreachform(e.getPreachform());
|
r.setSendstate(e.getSendstate());
|
r.setCurrentSendTime(e.getCurrentSendTime());
|
r.setOrgid(e.getOrgid());
|
r.setDelFlag(e.getDelFlag());
|
r.setSort(e.getSort());
|
r.setCompensateTime(e.getCompensateTime());
|
r.setRemark(e.getRemark());
|
r.setCreateBy(e.getCreateBy());
|
r.setCreateTime(e.getCreateTime());
|
r.setUpdateBy(e.getUpdateBy());
|
r.setUpdateTime(e.getUpdateTime());
|
return r;
|
}
|
|
private List<VisitPreachformRow> toRows(List<ServiceSubtaskPreachform> rows) {
|
if (rows == null || rows.isEmpty()) {
|
return Collections.emptyList();
|
}
|
List<VisitPreachformRow> out = new ArrayList<>(rows.size());
|
for (ServiceSubtaskPreachform e : rows) {
|
out.add(toRow(e));
|
}
|
return out;
|
}
|
}
|