|
@@ -3,23 +3,37 @@ package com.diagbot.facade;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.diagbot.dto.HospitalInfoDTO;
|
|
import com.diagbot.dto.HospitalInfoDTO;
|
|
|
|
+import com.diagbot.dto.HospitalInfoGetDTO;
|
|
|
|
+import com.diagbot.dto.HospitalRelationDTO;
|
|
|
|
+import com.diagbot.dto.HospitalRelationErrorDTO;
|
|
import com.diagbot.entity.HospitalInfo;
|
|
import com.diagbot.entity.HospitalInfo;
|
|
|
|
+import com.diagbot.entity.TranHospitalRelation;
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
import com.diagbot.enums.StatusEnum;
|
|
import com.diagbot.enums.StatusEnum;
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
import com.diagbot.exception.CommonException;
|
|
import com.diagbot.exception.CommonException;
|
|
|
|
+import com.diagbot.service.TranHospitalRelationService;
|
|
import com.diagbot.service.impl.HospitalInfoServiceImpl;
|
|
import com.diagbot.service.impl.HospitalInfoServiceImpl;
|
|
import com.diagbot.util.BeanUtil;
|
|
import com.diagbot.util.BeanUtil;
|
|
import com.diagbot.util.DateUtil;
|
|
import com.diagbot.util.DateUtil;
|
|
|
|
+import com.diagbot.util.ListUtil;
|
|
import com.diagbot.util.SysUserUtils;
|
|
import com.diagbot.util.SysUserUtils;
|
|
|
|
+import com.diagbot.util.UserUtils;
|
|
import com.diagbot.vo.HospitalCheckVO;
|
|
import com.diagbot.vo.HospitalCheckVO;
|
|
|
|
+import com.diagbot.vo.HospitalInfoSaveVO;
|
|
import com.diagbot.vo.HospitalInfoVO;
|
|
import com.diagbot.vo.HospitalInfoVO;
|
|
|
|
+import com.diagbot.vo.HospitalRelationVO;
|
|
import com.diagbot.vo.HospitalSaveVO;
|
|
import com.diagbot.vo.HospitalSaveVO;
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
-
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
+import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author wangfeng
|
|
* @author wangfeng
|
|
@@ -29,6 +43,10 @@ import java.util.List;
|
|
@Component
|
|
@Component
|
|
public class HospitalInfoFacade extends HospitalInfoServiceImpl {
|
|
public class HospitalInfoFacade extends HospitalInfoServiceImpl {
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ @Qualifier("tranHospitalRelationServiceImpl")
|
|
|
|
+ TranHospitalRelationService tranHospitalRelationService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @param hospitalInfoVO
|
|
* @param hospitalInfoVO
|
|
* @return
|
|
* @return
|
|
@@ -114,4 +132,126 @@ public class HospitalInfoFacade extends HospitalInfoServiceImpl {
|
|
data = BeanUtil.listCopyTo(list, HospitalInfoDTO.class);
|
|
data = BeanUtil.listCopyTo(list, HospitalInfoDTO.class);
|
|
return data;
|
|
return data;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取子医院信息
|
|
|
|
+ *
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public HospitalInfoGetDTO getHospitalRelation() {
|
|
|
|
+ HospitalInfoGetDTO hospitalInfoGetDTO = new HospitalInfoGetDTO();
|
|
|
|
+ String hospitalId = SysUserUtils.getCurrentHospitalID();
|
|
|
|
+
|
|
|
|
+ // 查询主表
|
|
|
|
+ HospitalInfo one = this.getOne(new QueryWrapper<HospitalInfo>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("id", hospitalId), false);
|
|
|
|
+ if (one == null) {
|
|
|
|
+ throw new CommonException(CommonErrorCode.NOT_EXISTS, "数据不存在");
|
|
|
|
+ }
|
|
|
|
+ BeanUtil.copyProperties(one, hospitalInfoGetDTO);
|
|
|
|
+
|
|
|
|
+ // 查询关联表
|
|
|
|
+ List<TranHospitalRelation> relationList = tranHospitalRelationService.list(new QueryWrapper<TranHospitalRelation>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("hospital_id", hospitalId)
|
|
|
|
+ );
|
|
|
|
+ List<HospitalRelationDTO> hospitalRelationDTOList = BeanUtil.listCopyTo(relationList, HospitalRelationDTO.class);
|
|
|
|
+ hospitalInfoGetDTO.setHospitalRelationDTOList(hospitalRelationDTOList);
|
|
|
|
+ return hospitalInfoGetDTO;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 保存
|
|
|
|
+ *
|
|
|
|
+ * @param hospitalInfoSaveVO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public HospitalRelationErrorDTO saveHospitalRelation(HospitalInfoSaveVO hospitalInfoSaveVO) {
|
|
|
|
+ Long curHospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
|
|
|
|
+ // 查询主表
|
|
|
|
+ HospitalInfo one = this.getOne(new QueryWrapper<HospitalInfo>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ .eq("id", curHospitalId), false);
|
|
|
|
+ if (one == null) {
|
|
|
|
+ throw new CommonException(CommonErrorCode.NOT_EXISTS, "数据不存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取子医院
|
|
|
|
+ List<HospitalRelationVO> hospitalRelationVOList = hospitalInfoSaveVO.getHospitalRelationVOList();
|
|
|
|
+ // 校验子医院
|
|
|
|
+ HospitalRelationErrorDTO res = checkRelationHospital(hospitalRelationVOList, curHospitalId);
|
|
|
|
+ if (res != null) {
|
|
|
|
+ return res;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 先删除子医院关联表
|
|
|
|
+ tranHospitalRelationService.remove(new QueryWrapper<TranHospitalRelation>().eq("hospital_id", curHospitalId));
|
|
|
|
+
|
|
|
|
+ // 插入子医院关联表
|
|
|
|
+ List<TranHospitalRelation> saveRelationList = Lists.newArrayList();
|
|
|
|
+ String userId = UserUtils.getCurrentPrincipleID();
|
|
|
|
+ Date now = DateUtil.now();
|
|
|
|
+ for (HospitalRelationVO hospitalRelationVO : hospitalRelationVOList) {
|
|
|
|
+ TranHospitalRelation tranHospitalRelation = new TranHospitalRelation();
|
|
|
|
+ BeanUtil.copyProperties(hospitalRelationVO, tranHospitalRelation);
|
|
|
|
+ tranHospitalRelation.setHospitalId(curHospitalId);
|
|
|
|
+ tranHospitalRelation.setCreator(userId);
|
|
|
|
+ tranHospitalRelation.setModifier(userId);
|
|
|
|
+ tranHospitalRelation.setGmtCreate(now);
|
|
|
|
+ tranHospitalRelation.setGmtModified(now);
|
|
|
|
+ saveRelationList.add(tranHospitalRelation);
|
|
|
|
+ }
|
|
|
|
+ if (ListUtil.isNotEmpty(saveRelationList)) {
|
|
|
|
+ tranHospitalRelationService.saveBatch(saveRelationList);
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 校验子医院
|
|
|
|
+ *
|
|
|
|
+ * @param hospitalRelationVOList
|
|
|
|
+ * @param curHospitalId
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public HospitalRelationErrorDTO checkRelationHospital(List<HospitalRelationVO> hospitalRelationVOList, Long curHospitalId) {
|
|
|
|
+ HospitalRelationErrorDTO res = new HospitalRelationErrorDTO();
|
|
|
|
+ if (ListUtil.isNotEmpty(hospitalRelationVOList)) {
|
|
|
|
+ // 校验name+code唯一性
|
|
|
|
+ List<TranHospitalRelation> tranHospitalRelationList = tranHospitalRelationService.list(new QueryWrapper<TranHospitalRelation>()
|
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
|
+ );
|
|
|
|
+ Map<String, Long> relationMap = tranHospitalRelationList.stream().collect(Collectors.toMap(k -> k.getName() + "_" + k.getCode(), v -> v.getHospitalId(), (v1, v2) -> (v2), LinkedHashMap::new));
|
|
|
|
+ List<String> keyExist = Lists.newArrayList(); // 避免重复数据返回
|
|
|
|
+ List<String> keyAll = Lists.newArrayList(); // 当前医院所有key
|
|
|
|
+ List<HospitalRelationVO> errorOther = Lists.newArrayList(); // 与其他医院重复
|
|
|
|
+ List<HospitalRelationVO> errorCurrent = Lists.newArrayList(); // 当前医院重复
|
|
|
|
+
|
|
|
|
+ for (HospitalRelationVO hospitalRelationVO : hospitalRelationVOList) {
|
|
|
|
+ // 联合key
|
|
|
|
+ String unionKey = hospitalRelationVO.getName() + "_" + hospitalRelationVO.getCode();
|
|
|
|
+ // 判断当前医院重复
|
|
|
|
+ if (keyAll.contains(unionKey)) {
|
|
|
|
+ errorCurrent.add(hospitalRelationVO);
|
|
|
|
+ } else {
|
|
|
|
+ keyAll.add(unionKey);
|
|
|
|
+ }
|
|
|
|
+ // 判断与其他医院重复
|
|
|
|
+ Long hospitalId = relationMap.get(unionKey);
|
|
|
|
+ if (hospitalId != null && !hospitalId.equals(curHospitalId) && !keyExist.contains(unionKey)) {
|
|
|
|
+ errorOther.add(hospitalRelationVO);
|
|
|
|
+ keyExist.add(unionKey);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 有错误,直接返回
|
|
|
|
+ if (ListUtil.isNotEmpty(errorOther) || ListUtil.isNotEmpty(errorCurrent)) {
|
|
|
|
+ res.setErrorOther(errorOther);
|
|
|
|
+ res.setErrorCurrent(errorCurrent);
|
|
|
|
+ return res;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
}
|
|
}
|