|
@@ -0,0 +1,176 @@
|
|
|
+package com.lantone.security.facade;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.lantone.common.dto.ViewRegionDTO;
|
|
|
+import com.lantone.common.exception.ApiException;
|
|
|
+import com.lantone.common.util.ListUtil;
|
|
|
+import com.lantone.common.util.StringUtil;
|
|
|
+import com.lantone.common.vo.ReRegionVO;
|
|
|
+import com.lantone.common.vo.SaveRegionVO;
|
|
|
+import com.lantone.common.vo.ViewRegionVO;
|
|
|
+import com.lantone.dblayermbg.entity.SysRegion;
|
|
|
+import com.lantone.dblayermbg.entity.SysRegionDept;
|
|
|
+import com.lantone.dblayermbg.service.SysRegionDeptService;
|
|
|
+import com.lantone.dblayermbg.service.SysRegionService;
|
|
|
+import com.lantone.dblayermbg.service.impl.SysRegionServiceImpl;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 病区表 服务实现类Facade
|
|
|
+ * </p>
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class RegionManagementFacade extends SysRegionServiceImpl {
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("sysRegionDeptServiceImpl")
|
|
|
+ private SysRegionDeptService sysRegionDeptService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("sysRegionServiceImpl")
|
|
|
+ private SysRegionService sysRegionService;
|
|
|
+
|
|
|
+ public Object saveRegion(SaveRegionVO saveRegionVo) {
|
|
|
+ Boolean flag = false;
|
|
|
+ //新增-校验重复数据
|
|
|
+ getSysRegion(saveRegionVo);
|
|
|
+ SysRegion sysRegion = new SysRegion();
|
|
|
+ BeanUtils.copyProperties(saveRegionVo, sysRegion);
|
|
|
+ List<SysRegionDept> sysRegionDepts = new ArrayList<>();
|
|
|
+ if (null == saveRegionVo.getId()) {
|
|
|
+ flag = addSysRegion(saveRegionVo, sysRegion, sysRegionDepts);
|
|
|
+ } else if (null != saveRegionVo.getId()) {
|
|
|
+ flag = updateSysRegion(saveRegionVo, sysRegion, sysRegionDepts);
|
|
|
+ }
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public IPage<ViewRegionDTO> getWard(ViewRegionVO viewRegionVO) {
|
|
|
+ IPage<ViewRegionDTO> page = sysRegionService.getWard(viewRegionVO);
|
|
|
+ List<ViewRegionDTO> wardList = page.getRecords();
|
|
|
+ if (ListUtil.isNotEmpty(wardList) && StringUtil.isNotEmpty(viewRegionVO.getDeptName())) {
|
|
|
+ IPage pageOne = new Page();
|
|
|
+ List<ViewRegionDTO> viewRegionDTOS = new ArrayList<>();
|
|
|
+ wardList.forEach(obj -> {
|
|
|
+ if (StringUtil.isNotEmpty(obj.getDeptName()) && obj.getDeptName().contains(viewRegionVO.getDeptName())) {
|
|
|
+ viewRegionDTOS.add(obj);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ pageOne.setRecords(viewRegionDTOS);
|
|
|
+ return pageOne;
|
|
|
+ }
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public Boolean deleteRegion(ReRegionVO reRegionVO) {
|
|
|
+ this.lambdaUpdate()
|
|
|
+ .eq(SysRegion::getId, reRegionVO.getId())
|
|
|
+ .eq(SysRegion::getHospitalId, reRegionVO.getHospitalId()).remove();
|
|
|
+ boolean flag = sysRegionDeptService.lambdaUpdate()
|
|
|
+ .eq(SysRegionDept::getRegionId, reRegionVO.getId())
|
|
|
+ .eq(SysRegionDept::getHospitalId, reRegionVO.getHospitalId()).remove();
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void getSysRegion(SaveRegionVO saveRegionVo) {
|
|
|
+ if (null == saveRegionVo.getId()) {
|
|
|
+ List<Long> collects = this.lambdaQuery()
|
|
|
+ .eq(SysRegion::getName, saveRegionVo.getName())
|
|
|
+ .eq(SysRegion::getHospitalId, saveRegionVo.getHospitalId())
|
|
|
+ .list().stream().map(obj -> obj.getId()).collect(Collectors.toList());
|
|
|
+ if (ListUtil.isNotEmpty(collects) && ListUtil.isNotEmpty(saveRegionVo.getDeptIds())) {
|
|
|
+ Integer count = sysRegionDeptService.lambdaQuery()
|
|
|
+ .eq(SysRegionDept::getHospitalId, saveRegionVo.getHospitalId())
|
|
|
+ .in(SysRegionDept::getRegionId, collects)
|
|
|
+ .in(SysRegionDept::getDeptId, saveRegionVo.getDeptIds()).count();
|
|
|
+ if (count > 0) {
|
|
|
+ throw new ApiException("当前病区关联科室重复");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public Boolean addSysRegion(SaveRegionVO saveRegionVo, SysRegion sysRegion, List<SysRegionDept> sysRegionDepts) {
|
|
|
+ sysRegion.setGmtCreate(new Date());
|
|
|
+ sysRegion.setCreator("程瑶-后期改");
|
|
|
+ this.save(sysRegion);
|
|
|
+ if (ListUtil.isNotEmpty(saveRegionVo.getDeptIds())) {
|
|
|
+ saveRegionVo.getDeptIds().forEach(obj -> {
|
|
|
+ SysRegionDept sysRegionDept = new SysRegionDept();
|
|
|
+ BeanUtils.copyProperties(saveRegionVo, sysRegionDept);
|
|
|
+ sysRegionDept.setDeptId(obj);
|
|
|
+ sysRegionDept.setRegionId(sysRegion.getId());
|
|
|
+ sysRegionDept.setGmtCreate(new Date());
|
|
|
+ sysRegionDept.setCreator("后期修改");
|
|
|
+ sysRegionDepts.add(sysRegionDept);
|
|
|
+ });
|
|
|
+ return sysRegionDeptService.saveBatch(sysRegionDepts);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Boolean updateSysRegion(SaveRegionVO saveRegionVo, SysRegion sysRegion, List<SysRegionDept> sysRegionDepts) {
|
|
|
+ sysRegion.setGmtModified(new Date());
|
|
|
+ sysRegion.setModifier("程瑶改");
|
|
|
+ this.updateById(sysRegion);
|
|
|
+ if (ListUtil.isNotEmpty(saveRegionVo.getDeptIds())) {
|
|
|
+ List<SysRegion> list = this.lambdaQuery().eq(SysRegion::getId, saveRegionVo.getId()).list();
|
|
|
+ sysRegionDeptService.lambdaUpdate()
|
|
|
+ .eq(SysRegionDept::getHospitalId, saveRegionVo.getHospitalId())
|
|
|
+ .eq(SysRegionDept::getRegionId, saveRegionVo.getId()).remove();
|
|
|
+ saveRegionVo.getDeptIds().forEach(obj -> {
|
|
|
+ SysRegionDept sysRegionDeptEntry = new SysRegionDept();
|
|
|
+ BeanUtils.copyProperties(saveRegionVo, sysRegionDeptEntry);
|
|
|
+ sysRegionDeptEntry.setId(null);
|
|
|
+ sysRegionDeptEntry.setDeptId(obj);
|
|
|
+ sysRegionDeptEntry.setRegionId(saveRegionVo.getId());
|
|
|
+ if (ListUtil.isNotEmpty(list)) {
|
|
|
+ sysRegionDeptEntry.setGmtCreate(list.get(0).getGmtCreate());
|
|
|
+ sysRegionDeptEntry.setCreator(list.get(0).getCreator());
|
|
|
+ }
|
|
|
+ sysRegionDeptEntry.setGmtModified(new Date());
|
|
|
+ sysRegionDeptEntry.setModifier("后期修改");
|
|
|
+ sysRegionDepts.add(sysRegionDeptEntry);
|
|
|
+ });
|
|
|
+ return sysRegionDeptService.saveBatch(sysRegionDepts);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Object checkSolveRegion(ReRegionVO reRegionVO) {
|
|
|
+ //禁用校验
|
|
|
+ if (null != reRegionVO.getId() && 0 == reRegionVO.getMark()) {
|
|
|
+ List<Long> collectList = sysRegionDeptService.lambdaQuery()
|
|
|
+ .eq(SysRegionDept::getRegionId, reRegionVO.getId())
|
|
|
+ .eq(SysRegionDept::getHospitalId, reRegionVO.getHospitalId())
|
|
|
+ .list().stream().map(obj -> obj.getDeptId()).collect(Collectors.toList());
|
|
|
+ if (ListUtil.isNotEmpty(collectList) && collectList.size() > 0) {
|
|
|
+ //当前病区存在与之关联的科室
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ //禁用病区处理
|
|
|
+ if (null != reRegionVO.getId() && 1 == reRegionVO.getMark()) {
|
|
|
+ this.lambdaUpdate()
|
|
|
+ .eq(SysRegion::getId, reRegionVO.getId())
|
|
|
+ .eq(SysRegion::getHospitalId, reRegionVO.getHospitalId())
|
|
|
+ .set(SysRegion::getStatus, 0).update();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+}
|