|
@@ -0,0 +1,116 @@
|
|
|
+package com.lantone.dblayermbg.facade;
|
|
|
+
|
|
|
+import com.lantone.common.exception.ApiException;
|
|
|
+import com.lantone.common.util.ListUtil;
|
|
|
+import com.lantone.common.vo.SysRegionVo;
|
|
|
+import com.lantone.dblayermbg.entity.SysRegion;
|
|
|
+import com.lantone.dblayermbg.entity.SysRegionDept;
|
|
|
+import com.lantone.dblayermbg.service.impl.SysRegionDeptServiceImpl;
|
|
|
+import com.lantone.dblayermbg.service.impl.SysRegionServiceImpl;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 病区表 服务实现类Facade
|
|
|
+ * </p>
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class SysRegionFacade extends SysRegionServiceImpl {
|
|
|
+ @Autowired
|
|
|
+ private SysRegionDeptServiceImpl sysRegionDeptServiceImpl;
|
|
|
+ public Object saveWard(SysRegionVo sysRegionVo){
|
|
|
+ Boolean flag = false;
|
|
|
+ //校验病区和科室
|
|
|
+ Object sysRegionObj = getSysRegion(sysRegionVo);
|
|
|
+ if("1".equals(sysRegionObj.toString()) || "0".equals(sysRegionObj.toString())){
|
|
|
+ return sysRegionObj;
|
|
|
+ }
|
|
|
+ SysRegion sysRegion = new SysRegion();
|
|
|
+ BeanUtils.copyProperties(sysRegionVo,sysRegion);
|
|
|
+ List<SysRegionDept> sysRegionDepts = new ArrayList<>();
|
|
|
+ if(null == sysRegionVo.getId()){
|
|
|
+ flag = addSysRegion(sysRegionVo, sysRegion, sysRegionDepts);
|
|
|
+ }else if(null != sysRegionVo.getId()){
|
|
|
+ flag = updateSysRegion(sysRegionVo, sysRegion,sysRegionDepts);
|
|
|
+ }
|
|
|
+ return flag;
|
|
|
+ };
|
|
|
+
|
|
|
+ public Object getSysRegion(SysRegionVo sysRegionVo){
|
|
|
+ //禁用校验
|
|
|
+ if(null != sysRegionVo.getId() && 1 == sysRegionVo.getMark()){
|
|
|
+ List<Long> collectList = sysRegionDeptServiceImpl.lambdaQuery()
|
|
|
+ .eq(SysRegionDept::getRegionId, sysRegionVo.getId())
|
|
|
+ .list().stream().map(obj -> obj.getDeptId()).collect(Collectors.toList());
|
|
|
+ if(ListUtil.isNotEmpty(collectList) && collectList.size()>0){
|
|
|
+ //当前病区存在与之关联的科室
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ //新增-校验重复数据
|
|
|
+ if(null == sysRegionVo.getId()){
|
|
|
+ List<Long> collects = this.lambdaQuery()
|
|
|
+ .eq(SysRegion::getName, sysRegionVo.getName())
|
|
|
+ .eq(SysRegion::getHospitalId, sysRegionVo.getHospitalId()).list().stream().map(obj -> obj.getId()).collect(Collectors.toList());
|
|
|
+ if(ListUtil.isNotEmpty(collects)){
|
|
|
+ Integer count = sysRegionDeptServiceImpl.lambdaQuery()
|
|
|
+ .in(SysRegionDept::getRegionId,collects)
|
|
|
+ .in(SysRegionDept::getDeptId, sysRegionVo.getDeptIds()).count();
|
|
|
+ if(count>0){
|
|
|
+ throw new ApiException("当前病区关联科室重复");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Boolean addSysRegion(SysRegionVo sysRegionVo,SysRegion sysRegion ,List<SysRegionDept> sysRegionDepts){
|
|
|
+ sysRegion.setGmtCreate(new Date());
|
|
|
+ sysRegion.setCreator("程瑶-后期改");
|
|
|
+ this.save(sysRegion);
|
|
|
+ sysRegionVo.getDeptIds().forEach(obj->{
|
|
|
+ SysRegionDept sysRegionDept = new SysRegionDept();
|
|
|
+ BeanUtils.copyProperties(sysRegionVo,sysRegionDept);
|
|
|
+ sysRegionDept.setDeptId(obj);
|
|
|
+ sysRegionDept.setRegionId(sysRegion.getId());
|
|
|
+ sysRegionDept.setGmtCreate(new Date());
|
|
|
+ sysRegionDept.setCreator("后期修改");
|
|
|
+ sysRegionDepts.add(sysRegionDept);
|
|
|
+ });
|
|
|
+ Boolean flag = sysRegionDeptServiceImpl.saveBatch(sysRegionDepts);
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Boolean updateSysRegion(SysRegionVo sysRegionVo,SysRegion sysRegion,List<SysRegionDept> sysRegionDepts){
|
|
|
+ sysRegion.setGmtModified(new Date());
|
|
|
+ sysRegion.setModifier("程瑶改");
|
|
|
+ this.updateById(sysRegion);
|
|
|
+ List<SysRegion> list = this.lambdaQuery().eq(SysRegion::getId, sysRegionVo.getId()).list();
|
|
|
+ sysRegionDeptServiceImpl.lambdaUpdate()
|
|
|
+ .eq(SysRegionDept::getHospitalId, sysRegionVo.getHospitalId())
|
|
|
+ .eq(SysRegionDept::getRegionId, sysRegionVo.getId()).remove();
|
|
|
+ sysRegionVo.getDeptIds().forEach(obj->{
|
|
|
+ SysRegionDept sysRegionDeptEntry = new SysRegionDept();
|
|
|
+ BeanUtils.copyProperties(sysRegionVo,sysRegionDeptEntry);
|
|
|
+ sysRegionDeptEntry.setId(null);
|
|
|
+ sysRegionDeptEntry.setDeptId(obj);
|
|
|
+ sysRegionDeptEntry.setRegionId(sysRegionVo.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);
|
|
|
+ });
|
|
|
+ Boolean flag = sysRegionDeptServiceImpl.saveBatch(sysRegionDepts);
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+}
|