123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- package com.diagbot.facade;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.diagbot.dto.DiagnosesFindDTO;
- import com.diagbot.dto.KlDiagnoseByIdDTO;
- import com.diagbot.dto.KlDiagnoseGroupDTO;
- import com.diagbot.dto.KlDiagnoseInfoDTO;
- import com.diagbot.dto.KlDiagnoseTypeDTO;
- import com.diagbot.entity.KlDiagnose;
- import com.diagbot.entity.KlDiagnoseBase;
- import com.diagbot.entity.KlDiagnoseCondition;
- import com.diagbot.enums.IsDeleteEnum;
- import com.diagbot.exception.CommonErrorCode;
- import com.diagbot.exception.CommonException;
- import com.diagbot.service.impl.KlDiagnoseServiceImpl;
- import com.diagbot.util.DateUtil;
- import com.diagbot.util.ListUtil;
- import com.diagbot.util.StringUtil;
- import com.diagbot.vo.DiagnosesFindVO;
- import com.diagbot.vo.KlDiagnoseByIdVO;
- import com.diagbot.vo.KlDiagnoseClearVO;
- import com.diagbot.vo.KlDiagnoseDetailVO;
- import com.diagbot.vo.KlDiagnoseGroupVO;
- import com.diagbot.vo.KlDiagnoseInfoVO;
- import com.diagbot.vo.KlDiagnoseSatarDisVO;
- import com.diagbot.vo.KlDiagnoseSaveVO;
- import com.diagbot.vo.KlDiagnoseTypeVO;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * @Description:
- * @author: gaodm
- * @time: 2021/3/15 11:42
- */
- @Component
- public class KlDiagnoseFacade extends KlDiagnoseServiceImpl {
- @Autowired
- KlDiagnoseConditionFacade klDiagnoseConditionFacade;
- @Autowired
- KlDiagnoseBaseFacade klDiagnoseBaseFacade;
- @Autowired
- KlDictionaryInfoFacade klDictionaryInfoFacade;
- public IPage<KlDiagnoseInfoDTO> getKlDiagnoseInfoPage(KlDiagnoseInfoVO klDiagnoseInfoVO) {
- return this.getKlDiagnosePages(klDiagnoseInfoVO);
- }
- public List<KlDiagnoseTypeDTO> getByIdDiagnoseAll(KlDiagnoseByIdVO klDiagnoseByIdVO) {
- List<KlDiagnoseByIdDTO> byIdDiagnoses = this.getByIdDiagnoses(klDiagnoseByIdVO);
- //基础条件
- Map<Integer, List<KlDiagnoseByIdDTO>> baseGroupMap = byIdDiagnoses.stream().filter(i -> i.getConditionType().equals(1)).collect(Collectors.groupingBy(KlDiagnoseByIdDTO::getBaseGroup));
- //根据ConditionType 和 getConditionGroup两个添加分组
- Map<Integer, Map<Integer, List<KlDiagnoseByIdDTO>>> collect = byIdDiagnoses.stream().filter(i -> !i.getConditionType().equals(1)).collect(Collectors.groupingBy(KlDiagnoseByIdDTO::getConditionGroup, Collectors.groupingBy(KlDiagnoseByIdDTO::getConditionType)));
- List<KlDiagnoseTypeDTO> klDiagnoseTypeList = new ArrayList<>();
- for (Map.Entry<Integer, Map<Integer, List<KlDiagnoseByIdDTO>>> entry : collect.entrySet()) {
- KlDiagnoseTypeDTO klDiagnoseTypeDTO = new KlDiagnoseTypeDTO();
- klDiagnoseTypeDTO.setConditionGroup(entry.getKey());
- Map<Integer, List<KlDiagnoseByIdDTO>> value = entry.getValue();
- List<KlDiagnoseGroupDTO> byIdDTO = new ArrayList<>();
- for (Map.Entry<Integer, List<KlDiagnoseByIdDTO>> entry2 : value.entrySet()) {
- klDiagnoseTypeDTO.setConditionType(entry2.getKey());
- List<KlDiagnoseByIdDTO> value1 = entry2.getValue();
- for (KlDiagnoseByIdDTO data : value1) {
- KlDiagnoseGroupDTO klDiagnoseGroupDTO = new KlDiagnoseGroupDTO();
- // klDiagnoseGroupDTO.setConditionGroup(entry2.getKey());
- klDiagnoseGroupDTO.setFitNo(data.getFitNo());
- klDiagnoseGroupDTO.setBaseGroup(data.getBaseGroup());
- klDiagnoseGroupDTO.setKlDiagnoseByIdDTO(baseGroupMap.get(data.getBaseGroup()));
- byIdDTO.add(klDiagnoseGroupDTO);
- }
- klDiagnoseTypeDTO.setByIdDTO(byIdDTO);
- }
- klDiagnoseTypeList.add(klDiagnoseTypeDTO);
- }
- return klDiagnoseTypeList;
- }
- public Boolean clearDiagnoseAll(KlDiagnoseClearVO klDiagnoseClearVO) {
- boolean res = false;
- res = clearDiagnoseSub(klDiagnoseClearVO.getId());
- //最后删除主表rule
- res = this.removeById(klDiagnoseClearVO.getId());
- return res;
- }
- private boolean clearDiagnoseSub(Long id) {
- boolean res = false;
- QueryWrapper<KlDiagnoseCondition> klDiagnoseConditionQuery = new QueryWrapper<>();
- klDiagnoseConditionQuery.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("diagnose_id", id);
- List<KlDiagnoseCondition> diagnoseConditionList = klDiagnoseConditionFacade.list(klDiagnoseConditionQuery);
- List<Long> baseId = new ArrayList<>();
- if (ListUtil.isNotEmpty(diagnoseConditionList)) {
- for (KlDiagnoseCondition data : diagnoseConditionList) {
- if (null != data.getDiagnoseBaseId() & 0 != data.getDiagnoseBaseId()) {
- baseId.add(data.getDiagnoseBaseId());
- }
- }
- }
- if (ListUtil.isNotEmpty(baseId)) {
- //删除kl_diagnose_base表数据
- res = klDiagnoseBaseFacade.removeByIds(baseId);
- }
- //删除kl_diagnose_condition表的数据
- res = klDiagnoseConditionFacade.remove(klDiagnoseConditionQuery);
- return res;
- }
- public Boolean disableDiagnose(KlDiagnoseSatarDisVO klDiagnoseSatarDisVO, int start) {
- boolean res = false;
- Date now = DateUtil.now();
- int sum = this.count(new QueryWrapper<KlDiagnose>().eq("is_deleted", IsDeleteEnum.N.getKey())
- .eq("id", klDiagnoseSatarDisVO.getId()));
- if (sum == 0) {
- throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该数据已不存在!");
- }
- UpdateWrapper<KlDiagnose> klKlDiagnoseUpdate = new UpdateWrapper<>();
- klKlDiagnoseUpdate.eq("is_deleted", IsDeleteEnum.N.getKey())
- .eq("id", klDiagnoseSatarDisVO.getId())
- .set("status", start)
- .set("modifier", klDiagnoseSatarDisVO.getModifier())
- .set("gmt_modified", now);
- return this.update(new KlDiagnose(), klKlDiagnoseUpdate);
- }
- public Boolean saveDiagnoseAll(KlDiagnoseSaveVO klDiagnoseSaveVO) {
- Date now = DateUtil.now();
- boolean res = false;
- // 校验名称是否相同
- int count = this.count(new QueryWrapper<KlDiagnose>()
- .eq("is_deleted", IsDeleteEnum.N.getKey())
- .eq("concept_id", klDiagnoseSaveVO.getConceptId())
- .ne("id", klDiagnoseSaveVO.getId() == null ? -1 : klDiagnoseSaveVO.getId()));
- if (count > 0) {
- throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该诊断依据已存在!");
- }
- //校验数据是否还在
- if (null != klDiagnoseSaveVO.getId()) {
- int sum = this.count(new QueryWrapper<KlDiagnose>().eq("is_deleted", IsDeleteEnum.N.getKey())
- .eq("id", klDiagnoseSaveVO.getId()));
- if (sum == 0) {
- throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该数据已不存在!");
- }
- UpdateWrapper<KlDiagnose> klDiagnoseUpdate = new UpdateWrapper<>();
- klDiagnoseUpdate.eq("is_deleted", IsDeleteEnum.N.getKey())
- .eq("id", klDiagnoseSaveVO.getId())
- .set(StringUtil.isNotBlank(klDiagnoseSaveVO.getDescription()), "description", klDiagnoseSaveVO.getDescription())
- .set(StringUtil.isNotBlank(klDiagnoseSaveVO.getConceptId().toString()), "concept_id", klDiagnoseSaveVO.getConceptId())
- .set("modifier", klDiagnoseSaveVO.getModifier())
- .set("gmt_modified", now);
- res = this.update(klDiagnoseUpdate);
- //先删除原有的详情;
- res = clearDetail(klDiagnoseSaveVO.getId());
- if (ListUtil.isNotEmpty(klDiagnoseSaveVO.getKlDiagnoseTypeVO())) {
- //再重新传入的详情保存
- res = saveCommon(klDiagnoseSaveVO);
- }
- } else {
- //先保存主表rule
- KlDiagnose klDiagnose = new KlDiagnose();
- klDiagnose.setConceptId(klDiagnoseSaveVO.getConceptId());
- klDiagnose.setDescription(klDiagnoseSaveVO.getDescription());
- klDiagnose.setStatus(1);
- klDiagnose.setModifier(klDiagnoseSaveVO.getModifier());
- klDiagnose.setCreator(klDiagnoseSaveVO.getModifier());
- klDiagnose.setGmtCreate(now);
- klDiagnose.setGmtModified(now);
- res = this.save(klDiagnose);
- if (res) {
- //再保存附表
- klDiagnoseSaveVO.setId(klDiagnose.getId());
- res = saveCommon(klDiagnoseSaveVO);
- }
- }
- return res;
- }
- public boolean clearDetail(Long id) {
- boolean res = false;
- QueryWrapper<KlDiagnoseCondition> klDiagnoseQuery = new QueryWrapper<>();
- klDiagnoseQuery.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("diagnose_id", id);
- List<KlDiagnoseCondition> diaConditionList = klDiagnoseConditionFacade.list(klDiagnoseQuery);
- List<Long> baseId = new ArrayList<>();
- if (ListUtil.isNotEmpty(diaConditionList)) {
- for (KlDiagnoseCondition data : diaConditionList) {
- if (null != data.getDiagnoseBaseId() && 0 != data.getDiagnoseBaseId()) {
- baseId.add(data.getDiagnoseBaseId());
- }
- }
- }
- if (ListUtil.isNotEmpty(baseId)) {
- QueryWrapper<KlDiagnoseBase> klDiagnoseBaseQuery = new QueryWrapper<>();
- klDiagnoseBaseQuery.eq("is_deleted", IsDeleteEnum.N.getKey()).in("id", baseId);
- //删除kl_rule_base表数据
- res = klDiagnoseBaseFacade.remove(klDiagnoseBaseQuery);
- }
- //删除kl_rule_condition表的数据
- res = klDiagnoseConditionFacade.remove(klDiagnoseQuery);
- return res;
- }
- public Boolean saveCommon(KlDiagnoseSaveVO klDiagnoseSaveVO) {
- Date now = DateUtil.now();
- boolean res = false;
- int sum = 99;
- int baseGroup = 9;
- List<KlDiagnoseTypeVO> klDiagnoseTypeVO = klDiagnoseSaveVO.getKlDiagnoseTypeVO();
- for (KlDiagnoseTypeVO data : klDiagnoseTypeVO) {
- KlDiagnoseCondition klDiagnoseCondition = new KlDiagnoseCondition();
- klDiagnoseCondition.setConditionType(data.getConditionType());//取出诊断的类型,2拟诊,3 确诊
- sum = sum + 1;
- klDiagnoseCondition.setConditionGroup(sum);
- List<KlDiagnoseGroupVO> groupVO = data.getGroupVO();
- for (KlDiagnoseGroupVO data2 : groupVO) {
- baseGroup = baseGroup + 1;
- klDiagnoseCondition.setDiagnoseId(klDiagnoseSaveVO.getId());
- klDiagnoseCondition.setBaseGroup(baseGroup);//
- klDiagnoseCondition.setFitNo(data2.getFitNo());
- klDiagnoseConditionFacade.save(klDiagnoseCondition);
- //明细
- List<KlDiagnoseDetailVO> klDiagnoseDetail = data2.getKlDiagnoseDetail();
- for (KlDiagnoseDetailVO detailVO : klDiagnoseDetail) {
- KlDiagnoseBase klDiagnoseBase = new KlDiagnoseBase();
- klDiagnoseBase.setGmtModified(now);
- klDiagnoseBase.setConceptId(detailVO.getBasConceptId());
- klDiagnoseBase.setType(detailVO.getBasType());
- klDiagnoseBase.setDescription(detailVO.getBasDescription());
- klDiagnoseBase.setMaxOperator(detailVO.getMaxOperator());
- klDiagnoseBase.setMaxValue(detailVO.getMaxVal());
- klDiagnoseBase.setMaxUnit(detailVO.getMaxUnit());
- klDiagnoseBase.setMinOperator(detailVO.getMinOperator());
- klDiagnoseBase.setMinValue(detailVO.getMinVal());
- klDiagnoseBase.setMinUnit(detailVO.getMinUnit());
- klDiagnoseBase.setStatus(1);
- klDiagnoseBase.setEqValue(detailVO.getEqValue());
- klDiagnoseBase.setEqOperator(detailVO.getEqOperator());
- klDiagnoseBase.setEqUnit(detailVO.getEqUnit());
- res = klDiagnoseBaseFacade.save(klDiagnoseBase);
- if (res) {
- KlDiagnoseCondition klDiagnoseConditionBase = new KlDiagnoseCondition();
- klDiagnoseConditionBase.setDiagnoseBaseId(klDiagnoseBase.getId());
- klDiagnoseConditionBase.setBaseGroup(baseGroup);
- klDiagnoseConditionBase.setConditionType(1);
- klDiagnoseConditionBase.setDiagnoseId(klDiagnoseSaveVO.getId());
- res = klDiagnoseConditionFacade.save(klDiagnoseConditionBase);
- }
- }
- }
- }
- return res;
- }
- public List<DiagnosesFindDTO> findDiaNameAlls(DiagnosesFindVO diagnosesFindVO) {
- return this.findDiaNameAll(diagnosesFindVO);
- }
- }
|