package com.ltkj.web.controller.system;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.*;
|
import java.util.stream.Collectors;
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletResponse;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ltkj.common.core.domain.entity.SysDept;
|
import com.ltkj.common.core.redis.RedisCache;
|
import com.ltkj.common.utils.bean.BeanUtils;
|
import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
|
import com.ltkj.hosp.domain.*;
|
import com.ltkj.hosp.mapper.TestMapper;
|
import com.ltkj.hosp.service.*;
|
import com.ltkj.hosp.treeUtil.TreeSelect;
|
import com.ltkj.system.service.ISysConfigService;
|
import com.ltkj.system.service.ISysDeptService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.web.bind.annotation.*;
|
import com.ltkj.common.annotation.Log;
|
import com.ltkj.common.core.controller.BaseController;
|
import com.ltkj.common.core.domain.AjaxResult;
|
import com.ltkj.common.enums.BusinessType;
|
import com.ltkj.common.utils.poi.ExcelUtil;
|
|
/**
|
* 体检项目Controller
|
*
|
* @author ltkj
|
* @date 2022-11-17
|
*/
|
@RestController
|
@RequestMapping("/hosp/project")
|
@Api(tags = "体检项目管理")
|
public class TjProjectController extends BaseController {
|
@Resource
|
private ITjProjectService tjProjectService;
|
@Resource
|
private ITjStandardService tjStandardService;
|
@Resource
|
private ITjPackageProjectService ppservice;
|
@Resource
|
private TjProConsumablesService proConsumablesService;
|
@Resource
|
private ITjConsumablesService consumablesService;
|
@Resource
|
private ISysDeptService deptService;
|
@Resource
|
private ISysConfigService configService;
|
@Resource
|
private DictProSfxmService dictProSfxmService;
|
@Autowired
|
private ITjRulesService tjRulesService;
|
@Resource
|
private TestMapper testMapper;
|
@Resource
|
private RedisCache redisCache;
|
|
|
@GetMapping("/getTjHyBgList")
|
@ApiOperation(value = "查询lis数据库项目信息接口")
|
public AjaxResult getTjHyBgList(@RequestParam(required = false) String pacCode,
|
@RequestParam(required = false) String pacName,
|
@RequestParam(required = false) String pacRemark) {
|
List<Map<String, Object>> maps = testMapper.getTjHyBgList(pacCode, pacName, pacRemark);
|
DynamicDataSourceContextHolder.clearDataSourceType();
|
return AjaxResult.success(maps);
|
}
|
|
/**
|
* 选择体检项目选单项时调用的接口
|
*/
|
@GetMapping("/getDxList")
|
@ApiOperation(value = "选择体检项目选单项时调用的接口")
|
public AjaxResult getDxList() {
|
LambdaQueryWrapper<TjProject> wq0 = new LambdaQueryWrapper<>();
|
wq0.eq(TjProject::getProParentId, 0);
|
|
List<TjProject> tjProjects = tjProjectService.list(wq0);
|
|
//上面的换sql
|
// final List<TjProject> tjProjects = tjProjectService.getProBySqlAndName(proName, checkType, deptId);
|
|
if (tjProjects != null) {
|
for (TjProject project : tjProjects) {
|
List<TjProject> projectList = tjProjectService.getTjProjectListBySoneId(String.valueOf(project.getProId()));
|
project.setTjProjectList(projectList);
|
|
// SysDept sysDept = deptService.selectDeptById(project.getDeptId());
|
// if (sysDept!=null){
|
// project.setDeptName(sysDept.getDeptName());
|
// }
|
}
|
}
|
String key = configService.selectConfigByKey("is_open_sfxm");
|
Map<String,Object> map=new HashMap<>();
|
map.put("list",tjProjects);
|
map.put("key",key);
|
return AjaxResult.success(map);
|
}
|
|
|
|
|
|
/**
|
* 查询体检项目列表
|
*/
|
@GetMapping("/getlist")
|
@ApiOperation(value = "查询体检项目列表(树形结构)")
|
public AjaxResult getlist(@RequestParam(required = false) @ApiParam(value = "项目名称") String proName,
|
@RequestParam(required = false) @ApiParam(value = "检查类别") String checkType,
|
@RequestParam(required = false) @ApiParam(value = "部门id") String deptId) {
|
//上面的换sql
|
final List<TjProject> tjProjects = tjProjectService.getProBySqlAndName(proName, checkType, deptId);
|
|
// if (tjProjects != null) {
|
// for (TjProject project : tjProjects) {
|
// List<TjProject> projectList = tjProjectService.getTjProjectListBySoneId(String.valueOf(project.getProId()));
|
// project.setTjProjectList(projectList);
|
// SysDept sysDept = deptService.selectDeptById(project.getDeptId());
|
// if (sysDept != null) {
|
// project.setDeptName(sysDept.getDeptName());
|
// }
|
//
|
// }
|
// }
|
String key = configService.selectConfigByKey("is_open_sfxm");
|
Map<String, Object> map = new HashMap<>();
|
map.put("list", tjProjects);
|
map.put("key", key);
|
return AjaxResult.success(map);
|
}
|
|
|
/**
|
* 查询项目子项
|
*/
|
@GetMapping("/getAllChildListById")
|
@ApiOperation(value = "查询项目子项")
|
public AjaxResult getAllChildListById(@RequestParam(required = false)String proId,
|
@RequestParam(required = false) String proName,
|
@RequestParam(required = false) String checkType) {
|
LambdaQueryWrapper<TjProject> wq=new LambdaQueryWrapper<>();
|
if (proId!=null){
|
wq.eq(TjProject::getProParentId,proId);
|
}
|
if (proName!=null){
|
wq.like(TjProject::getProName,proName);
|
}
|
if (checkType!=null){
|
wq.eq(TjProject::getProCheckType,checkType);
|
}
|
List<TjProject> tjProjects = tjProjectService.list(wq);
|
// List<TjProject> tjProjects = tjProjectService.getAllChildListById(proId);
|
if (tjProjects != null) {
|
for (TjProject project : tjProjects) {
|
SysDept sysDept = deptService.selectDeptById(project.getDeptId());
|
if (sysDept != null) {
|
project.setDeptName(sysDept.getDeptName());
|
}
|
|
}
|
}
|
String key = configService.selectConfigByKey("is_open_sfxm");
|
Map<String, Object> map = new HashMap<>();
|
map.put("list", tjProjects);
|
map.put("key", key);
|
return AjaxResult.success(map);
|
|
}
|
|
|
/**
|
* 查询体检项目列表
|
*/
|
@GetMapping("/list")
|
@ApiOperation(value = "查询体检项目列表")
|
public AjaxResult list() {
|
LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjProject::getProParentId, 0);
|
wq.eq(TjProject::getProStatus, 0);
|
List<TjProject> tjProjects = tjProjectService.list(wq);
|
if (tjProjects != null) {
|
for (TjProject project : tjProjects) {
|
LambdaQueryWrapper<TjProject> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjProject::getProParentId, project.getProId());
|
List<TjProject> projectList = tjProjectService.list(wq1);
|
project.setTjProjectList(projectList);
|
}
|
return AjaxResult.success(tjProjects);
|
}
|
return AjaxResult.success(null);
|
}
|
|
|
@GetMapping("/getPacProList")
|
@ApiOperation(value = "查询体检项目列表")
|
public AjaxResult getPacProList() {
|
LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjProject::getProParentId, 0);
|
wq.eq(TjProject::getProStatus, 0);
|
List<TjProject> tjProjects = tjProjectService.list(wq);
|
return AjaxResult.success(tjProjects);
|
}
|
|
|
|
/**
|
* 导出体检项目列表
|
*/
|
//@PreAuthorize("@ss.hasPermi('hosp:project:export')")
|
@Log(title = "体检项目", businessType = BusinessType.EXPORT)
|
@PostMapping("/export")
|
@ApiOperation(value = "导出体检项目列表")
|
public void export(HttpServletResponse response, TjProject tjProject) {
|
List<TjProject> list = tjProjectService.selectTjProjectList(tjProject);
|
ExcelUtil<TjProject> util = new ExcelUtil<TjProject>(TjProject.class);
|
util.exportExcel(response, list, "体检项目数据");
|
}
|
|
/**
|
* 获取体检项目详细信息
|
*/
|
//@PreAuthorize("@ss.hasPermi('hosp:project:query')")
|
@GetMapping(value = "/{proId}")
|
@ApiOperation(value = "获取体检项目详细信息")
|
public AjaxResult getInfo(@PathVariable("proId") @ApiParam(value = "体检项目id") Long proId) {
|
TjProject tjProject = tjProjectService.getById(proId);
|
if (null != tjProject) {
|
if (tjProject.getProParentId() == 0) {
|
LambdaQueryWrapper<TjProConsumables> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TjProConsumables::getProId, tjProject.getProId());
|
List<TjProConsumables> list = proConsumablesService.list(wrapper);
|
if (null != list && list.size() > 0) {
|
List<TjConsumables> list1 = new ArrayList<>();
|
for (TjProConsumables tjProConsumables : list) {
|
TjConsumables byId = consumablesService.getById(tjProConsumables.getConsumablesId());
|
list1.add(byId);
|
}
|
tjProject.setConsumablesList(list1);
|
}
|
} else {
|
LambdaQueryWrapper<TjStandard> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjStandard::getProId, proId);
|
tjProject.setTjStandardList(tjStandardService.list(wq));
|
}
|
//根据每个项目的deptId拿到name 2023/2/7
|
SysDept sysDept = deptService.selectDeptById(tjProject.getDeptId());
|
if (sysDept != null) {
|
tjProject.setDeptName(sysDept.getDeptName());
|
}
|
return AjaxResult.success(tjProject);
|
}
|
return AjaxResult.error();
|
}
|
|
/**
|
* 新增体检项目
|
*/
|
//@PreAuthorize("@ss.hasPermi('hosp:project:add')")
|
@ApiOperation(value = "新增体检项目")
|
@Log(title = "体检项目", businessType = BusinessType.INSERT)
|
@PostMapping
|
public AjaxResult add(@RequestBody @ApiParam(value = "体检项目对象") TjProject tjProject) {
|
if (null != tjProject.getConsumablesList() && tjProject.getConsumablesList().size() > 0) {
|
tjProject.setProPrice(BigDecimal.valueOf(0.00));
|
tjProject.setProStandard(0);
|
}
|
if (null != tjProject.getTjStandardList() && tjProject.getTjStandardList().size() > 0) {
|
tjProject.setProStandard(1);
|
}
|
if (tjProjectService.save(tjProject)) {
|
if (null != tjProject.getSfxmId()) {
|
DictProSfxm proSfxm = new DictProSfxm();
|
proSfxm.setSfxmId(tjProject.getSfxmId());
|
proSfxm.setProId(tjProject.getProId());
|
dictProSfxmService.save(proSfxm);
|
}
|
List<TjConsumables> consumablesList = tjProject.getConsumablesList();
|
if (null != consumablesList && consumablesList.size() > 0) {
|
for (TjConsumables tjConsumables : consumablesList) {
|
TjProConsumables proConsumables = new TjProConsumables();
|
proConsumables.setProId(tjProject.getProId());
|
proConsumables.setConsumablesId(tjConsumables.getId());
|
proConsumablesService.save(proConsumables);
|
}
|
}
|
List<TjStandard> tjStandardList = tjProject.getTjStandardList();
|
if (null != tjStandardList && tjStandardList.size() > 0) {
|
for (TjStandard tjStandard : tjStandardList) {
|
TjStandard tjStandard1 = new TjStandard();
|
BeanUtils.copyBeanProp(tjStandard1, tjStandard);
|
tjStandard1.setProId(tjProject.getProId());
|
tjStandardService.save(tjStandard1);
|
}
|
tjProject.setProStandard(1);
|
if (null == tjProject.getProPrice()) {
|
tjProject.setProPrice(BigDecimal.valueOf(0.00));
|
}
|
Long proParentId = tjProject.getProParentId();
|
if (null != proParentId && proParentId != 0) {
|
LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjProject::getProParentId, proParentId);
|
List<TjProject> projectList = tjProjectService.list(wq);
|
if (null != projectList && projectList.size() > 0) {
|
BigDecimal bigDecimal = new BigDecimal("0.00");
|
for (TjProject project : projectList) {
|
if (project.getProPrice() != null) {
|
bigDecimal = bigDecimal.add(project.getProPrice());
|
}
|
}
|
if (tjProject.getProPrice() != null) {
|
bigDecimal.add(tjProject.getProPrice());
|
}
|
TjProject byId = tjProjectService.getById(proParentId);
|
tjProject.setIsSampling(byId.getIsSampling());
|
tjProjectService.updateById(tjProject);
|
byId.setProPrice(bigDecimal.setScale(2, BigDecimal.ROUND_DOWN));
|
tjProjectService.updateById(byId);
|
}
|
}
|
}
|
return AjaxResult.success();
|
}
|
return AjaxResult.error();
|
}
|
|
/**
|
* 修改体检项目
|
*/
|
//@PreAuthorize("@ss.hasPermi('hosp:project:edit')")
|
@Log(title = "体检项目", businessType = BusinessType.UPDATE)
|
@PutMapping
|
@ApiOperation(value = "修改体检项目")
|
public AjaxResult edit(@RequestBody @ApiParam(value = "体检项目对象") TjProject tjProject) {
|
if (tjProject.getProStatus() == 1) {
|
LambdaQueryWrapper<TjPackageProject> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjPackageProject::getProId, tjProject.getProId());
|
List<TjPackageProject> list1 = ppservice.list(wq1);
|
if (null != list1 && list1.size() > 0) {
|
return AjaxResult.error("该项目正在套餐中使用,暂时不能停用");
|
}
|
}
|
if (tjProject.getProParentId() == 0) {
|
if (tjProjectService.updateById(tjProject)) {
|
if (dictProSfxmService.deletedProSfxm(tjProject.getProId())) {
|
if (null != tjProject.getSfxmId()) {
|
DictProSfxm proSfxm = new DictProSfxm();
|
proSfxm.setSfxmId(tjProject.getSfxmId());
|
proSfxm.setProId(tjProject.getProId());
|
dictProSfxmService.save(proSfxm);
|
}
|
}
|
List<TjProject> list = tjProjectService.getTjProjectListBySoneId(String.valueOf(tjProject.getProId()));
|
if (null != list && list.size() > 0) {
|
for (TjProject project : list) {
|
project.setDeptId(tjProject.getDeptId());
|
project.setProType(tjProject.getProType());
|
project.setProCheckMethod(tjProject.getProCheckMethod());
|
project.setProStatus(tjProject.getProStatus());
|
project.setIsSampling(tjProject.getIsSampling());
|
tjProjectService.updateById(project);
|
}
|
}
|
List<TjConsumables> consumablesList = tjProject.getConsumablesList();
|
if (null != consumablesList && consumablesList.size() > 0) {
|
LambdaQueryWrapper<TjProConsumables> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjProConsumables::getProId, tjProject.getProId());
|
proConsumablesService.remove(wq);
|
for (TjConsumables tjConsumables : consumablesList) {
|
TjProConsumables proConsumables = new TjProConsumables();
|
proConsumables.setProId(tjProject.getProId());
|
proConsumables.setConsumablesId(tjConsumables.getId());
|
proConsumablesService.save(proConsumables);
|
}
|
return AjaxResult.success();
|
}
|
return AjaxResult.success();
|
}
|
}
|
TjProject byId1 = tjProjectService.selectTjProjectByProId(tjProject.getProParentId());
|
if (null != byId1 && !tjProject.getDeptId().equals(byId1.getDeptId())) {
|
return AjaxResult.error("不可更改父项目科室!");
|
}
|
if (null != byId1) {
|
tjProject.setIsSampling(byId1.getIsSampling());
|
}
|
if (tjProjectService.updateById(tjProject)) {
|
if (dictProSfxmService.deletedProSfxm(tjProject.getProId())) {
|
if (null != tjProject.getSfxmId()) {
|
DictProSfxm proSfxm = new DictProSfxm();
|
proSfxm.setSfxmId(tjProject.getSfxmId());
|
proSfxm.setProId(tjProject.getProId());
|
dictProSfxmService.save(proSfxm);
|
}
|
}
|
List<TjStandard> tjStandardList = tjProject.getTjStandardList();
|
if (null != tjStandardList && tjStandardList.size() > 0) {
|
for (TjStandard tjStandard : tjStandardList) {
|
if (null == tjStandard.getTjSex()) {
|
tjStandard.setTjSex(null);
|
}
|
tjStandard.setProId(tjProject.getProId());
|
tjStandardService.saveOrUpdate(tjStandard);
|
}
|
}
|
if (null == tjProject.getProPrice()) {
|
tjProject.setProPrice(BigDecimal.valueOf(0.00));
|
}
|
Long proParentId = tjProject.getProParentId();
|
if (null != proParentId) {
|
LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjProject::getProParentId, proParentId);
|
List<TjProject> projectList = tjProjectService.list(wq);
|
if (null != projectList && projectList.size() > 0) {
|
BigDecimal bigDecimal = new BigDecimal("0.00");
|
for (TjProject project : projectList) {
|
bigDecimal = bigDecimal.add(project.getProPrice());
|
}
|
bigDecimal.add(tjProject.getProPrice());
|
TjProject byId = tjProjectService.getById(proParentId);
|
byId.setProPrice(bigDecimal.setScale(2, BigDecimal.ROUND_DOWN));
|
tjProjectService.updateById(byId);
|
}
|
}
|
return AjaxResult.success();
|
}
|
return AjaxResult.error();
|
}
|
|
/**
|
* 删除体检项目
|
*/
|
// @PreAuthorize("@ss.hasPermi('hosp:project:remove')")
|
@Log(title = "体检项目", businessType = BusinessType.DELETE)
|
@DeleteMapping("/{proIds}")
|
@ApiOperation(value = "删除体检项目(可删除父项目和子项目)")
|
public AjaxResult remove(@PathVariable Long[] proIds) {
|
if (null == proIds || proIds.length <= 0) {
|
return AjaxResult.error("请选择要删除的项目");
|
}
|
for (Long proId : proIds) {
|
TjProject project1 = tjProjectService.getById(proId);
|
if (null != project1) {
|
if (project1.getProParentId() == 0) {
|
LambdaQueryWrapper<TjProject> wq0 = new LambdaQueryWrapper<>();
|
wq0.eq(TjProject::getProParentId, proId);
|
List<TjProject> list = tjProjectService.list(wq0);
|
LambdaQueryWrapper<TjPackageProject> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjPackageProject::getProId, proId);
|
List<TjPackageProject> list1 = ppservice.list(wq1);
|
if (null != list1 && list1.size() > 0) {
|
return AjaxResult.error("该项目正在套餐中使用,暂时不能删除");
|
}
|
LambdaQueryWrapper<TjPackageProject> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjPackageProject::getProId, proId);
|
|
LambdaQueryWrapper<TjProConsumables> wq3 = new LambdaQueryWrapper<>();
|
wq3.eq(TjProConsumables::getProId, proId);
|
proConsumablesService.remove(wq3);
|
ppservice.remove(wq2);
|
tjProjectService.removeByIds(list.stream().map(TjProject::getProId).collect(Collectors.toList()));
|
tjProjectService.removeById(project1.getProId());
|
} else {
|
LambdaQueryWrapper<TjStandard> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjStandard::getProId, proId);
|
tjStandardService.remove(wq);
|
tjProjectService.removeById(project1.getProId());
|
}
|
}
|
}
|
return AjaxResult.success("删除成功");
|
}
|
|
|
/**
|
* 获取项目树列表
|
*/
|
@GetMapping("/projectTree")
|
@ApiOperation("获取项目树列表")
|
public AjaxResult projectTree(TjProject tjProject) {
|
final List<TreeSelect> treeSelects = tjProjectService.selectProjectTreeList(tjProject);
|
// for (TreeSelect treeSelect : treeSelects) {
|
// for (TreeSelect child : treeSelect.getChildren()) {
|
// LambdaQueryWrapper<TjRules> wq=new LambdaQueryWrapper<>();
|
// wq.eq(TjRules::getProId,child.getId());
|
// final List<TjRules> list = tjRulesService.list();
|
// List<TreeSelect> res=new ArrayList<>();
|
// for (TjRules tjRules : list) {
|
// TreeSelect a=new TreeSelect();
|
// a.setId(Long.valueOf(tjRules.getAid()));
|
// a.setLabel(tjRules.getBingzhong());
|
// res.add(a);
|
// }
|
// child.setChildren(res);
|
// }
|
// }
|
return success(treeSelects);
|
}
|
|
|
/**
|
* 查询体检项目子项列表
|
*/
|
@GetMapping("/getSonsList")
|
@ApiOperation(value = "查询体检项目子项列表")
|
public AjaxResult getSonsList(@RequestParam(required = false) @ApiParam(value = "项目名称") String proName) {
|
LambdaQueryWrapper<TjProject> wq0 = new LambdaQueryWrapper<>();
|
wq0.ne(TjProject::getProParentId, 0);
|
if (null != proName) {
|
wq0.like(TjProject::getProName, proName);
|
}
|
List<TjProject> tjProjects = tjProjectService.list(wq0);
|
|
return AjaxResult.success(tjProjects);
|
}
|
|
|
/**
|
* 获取体检项目详细信息
|
*/
|
@GetMapping(value = "/getInfoByProId")
|
@ApiOperation(value = "获取体检项目详细信息")
|
public AjaxResult getInfoByProId(@RequestParam Long proId) {
|
TjProject tjProject = tjProjectService.getById(proId);
|
return AjaxResult.success(tjProject);
|
}
|
// /**
|
// * 获取部门树列表
|
// */
|
// @GetMapping("/deptTree")
|
// @ApiOperation("获取部门树列表")
|
// public AjaxResult deptTree(SysDept dept) {
|
// return success(deptService.selectDeptTreeList(dept));
|
// }
|
|
}
|