package com.ltkj.hosp.service.impl;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ltkj.common.utils.DateUtils;
|
import com.ltkj.common.utils.StringUtils;
|
import com.ltkj.common.utils.spring.SpringUtils;
|
import com.ltkj.hosp.treeUtil.TreeSelect;
|
import org.springframework.stereotype.Service;
|
import com.ltkj.hosp.mapper.TjProjectMapper;
|
import com.ltkj.hosp.domain.TjProject;
|
import com.ltkj.hosp.service.ITjProjectService;
|
|
import javax.annotation.Resource;
|
|
/**
|
* 体检项目Service业务层处理
|
*
|
* @author ltkj
|
* @date 2022-11-17
|
*/
|
@Service
|
public class TjProjectServiceImpl extends ServiceImpl<TjProjectMapper, TjProject> implements ITjProjectService {
|
@Resource
|
private TjProjectMapper tjProjectMapper;
|
|
/**
|
* 查询体检项目
|
*
|
* @param proId 体检项目主键
|
* @return 体检项目
|
*/
|
@Override
|
public TjProject selectTjProjectByProId(Long proId) {
|
return tjProjectMapper.selectTjProjectByProId(proId);
|
}
|
|
/**
|
* 查询体检项目列表
|
*
|
* @param tjProject 体检项目
|
* @return 体检项目
|
*/
|
@Override
|
public List<TjProject> selectTjProjectList(TjProject tjProject) {
|
return tjProjectMapper.selectTjProjectList(tjProject);
|
}
|
|
/**
|
* 新增体检项目
|
*
|
* @param tjProject 体检项目
|
* @return 结果
|
*/
|
@Override
|
public int insertTjProject(TjProject tjProject) {
|
tjProject.setCreateTime(DateUtils.getNowDate());
|
return tjProjectMapper.insertTjProject(tjProject);
|
}
|
|
/**
|
* 修改体检项目
|
*
|
* @param tjProject 体检项目
|
* @return 结果
|
*/
|
@Override
|
public int updateTjProject(TjProject tjProject) {
|
tjProject.setUpdateTime(DateUtils.getNowDate());
|
return tjProjectMapper.updateTjProject(tjProject);
|
}
|
|
/**
|
* 批量删除体检项目
|
*
|
* @param proIds 需要删除的体检项目主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteTjProjectByProIds(Long[] proIds) {
|
return tjProjectMapper.deleteTjProjectByProIds(proIds);
|
}
|
|
/**
|
* 删除体检项目信息
|
*
|
* @param proId 体检项目主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteTjProjectByProId(Long proId) {
|
return tjProjectMapper.deleteTjProjectByProId(proId);
|
}
|
|
@Override
|
public List<TjProject> getTjProjectListBySoneId(String proId) {
|
return tjProjectMapper.getTjProjectListBySoneId(proId);
|
}
|
|
@Override
|
public List<TjProject> getTjParentProjectList(String proId) {
|
return tjProjectMapper.getTjParentProjectList(proId);
|
}
|
|
@Override
|
public TjProject getTjProjectById(String proId) {
|
return tjProjectMapper.getTjProjectById(proId);
|
}
|
|
@Override
|
public String appendTjProjectName(String proId) {
|
return tjProjectMapper.appendTjProjectName(proId);
|
}
|
|
@Override
|
public List<Long> getKsTjProjectIdListBydeptId(String ksId) {
|
return tjProjectMapper.getKsTjProjectIdListBydeptId(ksId);
|
}
|
|
@Override
|
public List<Long> getKsTjProjectIdList() {
|
return tjProjectMapper.getKsTjProjectIdList();
|
}
|
|
@Override
|
public String appendTjProjectNames(String[] proIds) {
|
return tjProjectMapper.appendTjProjectNames(proIds);
|
}
|
|
@Override
|
public String getAllSonNames(String proId) {
|
return tjProjectMapper.getAllSonNames(proId);
|
}
|
|
@Override
|
public String getAllNamesByPacId(String pacId) {
|
return tjProjectMapper.getAllNamesByPacId(pacId);
|
}
|
|
@Override
|
public BigDecimal getMoneys(String proId) {
|
return tjProjectMapper.getMoneys(proId);
|
}
|
|
@Override
|
public List<TjProject> getTjParentProjectListByPacId(String pacId) {
|
return tjProjectMapper.getTjParentProjectListByPacId(pacId);
|
}
|
|
@Override
|
public List<TreeSelect> selectProjectTreeList(TjProject tjProject) {
|
LambdaQueryWrapper<TjProject> wq=new LambdaQueryWrapper<>();
|
List<TjProject> projects = SpringUtils.getAopProxy(this).list(wq);
|
return buildProjectTreeSelect(projects);
|
}
|
|
@Override
|
public List<TjProject> buildProjectTree(List<TjProject> projects) {
|
List<TjProject> res = new ArrayList<TjProject>();
|
List<Long> temp = new ArrayList<Long>();
|
for (TjProject project : projects) {
|
temp.add(project.getProId());
|
}
|
for (TjProject project : projects) {
|
// 如果是顶级节点, 遍历该父节点的所有子节点
|
if (!temp.contains(project.getProParentId())) {
|
recursionFn(projects, project);
|
res.add(project);
|
}
|
}
|
if (res.isEmpty()) {
|
res = projects;
|
}
|
return res;
|
}
|
|
@Override
|
public List<TreeSelect> buildProjectTreeSelect(List<TjProject> projects) {
|
List<TjProject> deptTrees = buildProjectTree(projects);
|
return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
|
}
|
|
@Override
|
public List<TjProject> getProBySqlAndName(String proName, String checkType, String deptId) {
|
return tjProjectMapper.getProBySqlAndName(proName,checkType,deptId);
|
}
|
|
/**
|
* 递归列表
|
*/
|
private void recursionFn(List<TjProject> list, TjProject t) {
|
// 得到子节点列表
|
List<TjProject> childList = getChildList(list, t);
|
t.setChildren(childList);
|
for (TjProject tChild : childList) {
|
if (hasChild(list, tChild)) {
|
recursionFn(list, tChild);
|
}
|
}
|
}
|
|
/**
|
* 得到子节点列表
|
*/
|
private List<TjProject> getChildList(List<TjProject> list, TjProject t) {
|
List<TjProject> tlist = new ArrayList<TjProject>();
|
Iterator<TjProject> it = list.iterator();
|
while (it.hasNext()) {
|
TjProject n = (TjProject) it.next();
|
if (StringUtils.isNotNull(n.getProParentId()) && n.getProParentId().longValue() == t.getProId().longValue()) {
|
tlist.add(n);
|
}
|
}
|
return tlist;
|
}
|
|
/**
|
* 判断是否有子节点
|
*/
|
private boolean hasChild(List<TjProject> list, TjProject t) {
|
return getChildList(list, t).size() > 0;
|
}
|
}
|