package com.ruoyi.system.service.impl;
|
|
import com.ruoyi.common.utils.HospitalTokenizerUtil;
|
import com.ruoyi.system.domain.TbHospData;
|
import com.ruoyi.system.mapper.TbHospDataMapper;
|
import com.ruoyi.system.service.ITbHospDataService;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
/**
|
* 医院数据Service业务层处理
|
*
|
* @author ruoyi
|
*/
|
@Service
|
public class TbHospDataServiceImpl implements ITbHospDataService
|
{
|
private static final Logger logger = LoggerFactory.getLogger(TbHospDataServiceImpl.class);
|
|
@Autowired
|
private TbHospDataMapper tbHospDataMapper;
|
|
/**
|
* 查询医院数据列表
|
*
|
* @param tbHospData 医院数据
|
* @return 医院数据
|
*/
|
@Override
|
public List<TbHospData> selectTbHospDataList(TbHospData tbHospData)
|
{
|
return tbHospDataMapper.selectTbHospDataList(tbHospData);
|
}
|
|
/**
|
* 根据医院ID查询医院数据
|
*
|
* @param hospId 医院ID
|
* @return 医院数据
|
*/
|
@Override
|
public TbHospData selectTbHospDataById(Long hospId)
|
{
|
return tbHospDataMapper.selectTbHospDataById(hospId);
|
}
|
|
/**
|
* 根据旧系统医院ID查询医院数据
|
*
|
* @param legacyHospId 旧系统医院ID
|
* @return 医院数据
|
*/
|
@Override
|
public TbHospData selectTbHospDataByLegacyId(Integer legacyHospId)
|
{
|
return tbHospDataMapper.selectTbHospDataByLegacyId(legacyHospId);
|
}
|
|
/**
|
* 新增医院数据
|
*
|
* @param tbHospData 医院数据
|
* @return 结果
|
*/
|
@Override
|
public int insertTbHospData(TbHospData tbHospData)
|
{
|
return tbHospDataMapper.insertTbHospData(tbHospData);
|
}
|
|
/**
|
* 修改医院数据
|
*
|
* @param tbHospData 医院数据
|
* @return 结果
|
*/
|
@Override
|
public int updateTbHospData(TbHospData tbHospData)
|
{
|
return tbHospDataMapper.updateTbHospData(tbHospData);
|
}
|
|
/**
|
* 批量删除医院数据
|
*
|
* @param hospIds 需要删除的医院数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteTbHospDataByIds(Long[] hospIds)
|
{
|
return tbHospDataMapper.deleteTbHospDataByIds(hospIds);
|
}
|
|
/**
|
* 删除医院数据信息
|
*
|
* @param hospId 医院数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteTbHospDataById(Long hospId)
|
{
|
return tbHospDataMapper.deleteTbHospDataById(hospId);
|
}
|
|
/**
|
* 批量生成并更新所有医院的分词
|
* 供医院同步时调用
|
*
|
* @return 更新的医院数量
|
*/
|
@Override
|
public int generateAllHospitalKeywords()
|
{
|
logger.info("开始批量生成医院分词...");
|
|
// 查询所有正常状态的医院
|
TbHospData query = new TbHospData();
|
query.setStatus("0");
|
List<TbHospData> hospitalList = tbHospDataMapper.selectTbHospDataList(query);
|
|
logger.info("查询到 {} 个医院需要生成分词", hospitalList.size());
|
|
int updateCount = 0;
|
for (TbHospData hospital : hospitalList) {
|
try {
|
// 生成分词
|
String keywords = generateKeywordsForHospital(hospital);
|
hospital.setHospKeywords(keywords);
|
|
// 更新数据库
|
int result = tbHospDataMapper.updateTbHospData(hospital);
|
if (result > 0) {
|
updateCount++;
|
}
|
} catch (Exception e) {
|
logger.error("生成医院分词失败: hospId={}, hospName={}",
|
hospital.getHospId(), hospital.getHospName(), e);
|
}
|
}
|
|
logger.info("医院分词生成完成,更新了 {} 个医院", updateCount);
|
return updateCount;
|
}
|
|
/**
|
* 为单个医院生成分词
|
*
|
* @param tbHospData 医院数据
|
* @return 生成的分词
|
*/
|
@Override
|
public String generateKeywordsForHospital(TbHospData tbHospData)
|
{
|
return HospitalTokenizerUtil.tokenize(
|
tbHospData.getHospName(),
|
tbHospData.getHospShort(),
|
tbHospData.getHopsProvince(),
|
tbHospData.getHopsCity(),
|
tbHospData.getHopsArea(),
|
tbHospData.getHospAddress()
|
);
|
}
|
}
|