forked from kidgrow-microservices-platform

1.组织,医院,科室的编辑业务调整,增加了联动编辑功能(创建医院自动创建组织数据,修改同理)
2.重新优化,调整了医院/科室编辑过程中对名称的检查,数据间依赖关系的调整
3.调整优化了区域联动插件,自动完成插件的通用性
18 files modified
605 ■■■■ changed files
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IBusinessRecordsService.java 4 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java 5 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysHospital.java 10 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java 12 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysHospitalMapper.java 6 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java 5 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java 10 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java 8 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml 11 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java 86 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java 85 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysOrganizationController.java 10 ●●●● patch | view | raw | blame | history
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/DictionariesConstants.java 4 ●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js 16 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/area.js 4 ●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html 41 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html 269 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IBusinessRecordsService.java
@@ -32,8 +32,8 @@
    /**
     * 写入系统业务日志
     * @param recordTitle
     * @param recordNote
     * @param recordTitle 日志标题
     * @param recordNote 日志内容
     * @return
     */
    boolean recordBusinessData(String  recordTitle, String recordNote);
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java
@@ -36,7 +36,6 @@
    /**
     * 组织Id
     */
    @NotNull(message = "组织Id不能为空")
    private Long orgId;
    /**
     * 医院Id
@@ -53,10 +52,6 @@
     */
    @NotEmpty(message = "销售代表的名字不能为空")
    private String serverUserName;
    /**
     * 科室/部门简介
     */
    private String departmentAbout;
    /**
     * 状态,1启用,0停用
     */
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysHospital.java
@@ -1,14 +1,14 @@
package com.kidgrow.usercenter.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.kidgrow.common.model.SuperModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -35,7 +35,7 @@
    /**
     * 组织ID-
     */
    @NotNull(message = "组织ID不能为空")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long orgId;
    /**
     * 医院简称
@@ -58,6 +58,10 @@
     */
    private String hospitalTel;
    /**
     * 医院联系人
     */
    private String hospitalLink;
    /**
     * 医院所在省
     */
    private String hospitalProvince;
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
@@ -1,6 +1,8 @@
package com.kidgrow.usercenter.vo;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -23,6 +25,7 @@
    /**
     * 医院id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long hospitalId;
    /**
     * 医院名称 同组织名字
@@ -31,11 +34,16 @@
    /**
     * 组织ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long orgId;
    /**
     * 区号
     * 医院编码
     */
    private String hospitalCode;
    /**
     * 医院区号
     */
    private String areaCode;
    /**
     * 医院电话
     */
@@ -59,6 +67,7 @@
    /**
     * 负责的销售代表
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long serverUserId;
    /**
     * 销售代表的名字
@@ -67,6 +76,7 @@
    /**
     * 科室id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long departmentId;
    /**
     * 科室/部门名称 同组织名称
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysHospitalMapper.java
@@ -27,6 +27,12 @@
    List<SysHospital> findList(Page<SysHospital> page, @Param("p") Map<String, Object> params);
    /**
     * 根据医院名称模糊查询医院数据列表
     * @param hospitalName
     * @return
     */
    List<SysHospital> findByName(@Param("hospitalName") String hospitalName);
    /**
     * 医院信息列表
     * @param page
     * @param params
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java
@@ -1,9 +1,9 @@
package com.kidgrow.usercenter.service;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.usercenter.model.SysDepartment;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.service.ISuperService;
import com.kidgrow.usercenter.model.SysDepartment;
import java.util.Map;
@@ -22,7 +22,6 @@
     * @return
     */
    PageResult<SysDepartment> findList(Map<String, Object> params);
    /**
    * 根据SysDepartment对象当做查询条件进行查询
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java
@@ -1,9 +1,9 @@
package com.kidgrow.usercenter.service;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.usercenter.model.SysHospital;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.service.ISuperService;
import com.kidgrow.usercenter.model.SysHospital;
import com.kidgrow.usercenter.vo.HospitalListVo;
import java.util.Map;
@@ -35,6 +35,12 @@
    * @return SysHospital对象
    */
    SysHospital findByObject(SysHospital sysHospital);
    /**
     * 根据医院名称模糊查询医院数据列表
     * @param hospitalName
     * @return
     */
    ResultBody<SysHospital> findByName(String hospitalName);
    ResultBody<SysHospital> findAll(Map<String, Object> params);
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java
@@ -1,30 +1,27 @@
package com.kidgrow.usercenter.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysOrganization;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.usercenter.mapper.SysDepartmentMapper;
import com.kidgrow.usercenter.model.SysDepartment;
import com.kidgrow.usercenter.model.SysHospital;
import com.kidgrow.usercenter.service.ISysDepartmentService;
import com.kidgrow.usercenter.service.ISysHospitalService;
import com.kidgrow.usercenter.service.ISysOrganizationService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.kidgrow.common.model.PageResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.collections4.MapUtils;
import lombok.extern.slf4j.Slf4j;
import com.kidgrow.usercenter.model.SysDepartment;
import com.kidgrow.usercenter.mapper.SysDepartmentMapper;
import com.kidgrow.usercenter.service.ISysDepartmentService;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java
@@ -72,6 +72,14 @@
        return  ResultBody.ok().data(sysHospitals).msg("查询成功");
    }
    /**
     * 根据医院名称模糊查询医院数据列表
     * @param hospitalName
     * @return
     */
    public ResultBody<SysHospital> findByName(String hospitalName){
        return ResultBody.ok().data(baseMapper.findByName(hospitalName)).msg("查询成功");
    }
    /**
     * 根据id和启用禁用值更新数据
     * @param params
     * @return ResultBody
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml
@@ -16,7 +16,7 @@
                and id = #{p.id}
            </if>
            <if test="p.hospitalName != null and p.hospitalName !=''">
                and hospital_name = #{p.hospitalName}
                and hospital_name =#{p.hospitalName}%
            </if>
            <if test="p.orgId != null and p.orgId !=''">
                and org_id = #{p.orgId}
@@ -174,9 +174,11 @@
        HOS.hospital_tel,
        HOS.hospital_state,
        HOS.hospital_link,
        HOS.org_id hospital_org_id,
        HOS.is_screen,
        HOS.is_answer,
        HOS.tenant_id,
        HOS.area_code,
        HOS.create_time
        FROM
    sys_department DEP
@@ -184,4 +186,11 @@
        <include refid="whereList"/>
        order by create_time  desc
    </select>
    <select id="findByName" resultType="com.kidgrow.usercenter.model.SysHospital">
        select id,
        hospital_name
        from sys_hospital
        where hospital_name LIKE concat('%',#{hospitalName},'%')
        order by hospital_name desc
    </select>
</mapper>
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java
@@ -3,8 +3,10 @@
import com.kidgrow.common.controller.BaseController;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysOrganization;
import com.kidgrow.usercenter.model.SysDepartment;
import com.kidgrow.usercenter.service.ISysDepartmentService;
import com.kidgrow.usercenter.service.ISysOrganizationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -17,12 +19,14 @@
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
 *
 * @Description: 科室表
 * @Project: 用户中心
 * @CreateDate: Created in 2020-04-02 18:32:36 <br>
@@ -33,9 +37,11 @@
@RestController
@RequestMapping("/sysdepartment")
@Api(tags = "科室表")
public class SysDepartmentController  extends BaseController{
public class SysDepartmentController extends BaseController {
    @Autowired
    private ISysDepartmentService sysDepartmentService;
    @Autowired
    private ISysOrganizationService sysOrganizationService;
    /**
     * 列表
@@ -47,9 +53,9 @@
    })
    @GetMapping
    public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) {
        if(params.size()==0){
            params.put("page",1);
            params.put("limit",10);
        if (params.size() == 0) {
            params.put("page", 1);
            params.put("limit", 10);
        }
        return ResultBody.ok().data(sysDepartmentService.findList(params));
    }
@@ -75,31 +81,71 @@
    }
    /**
     * 检查科室名是否存在
     */
    @ApiOperation(value = "检查科室名是否存在")
    @GetMapping("/checkName")
    public ResultBody checkDepName(@RequestParam Map<String, Object> params) {
        params.put("page", 1);
        params.put("limit", 1);
        if (sysDepartmentService.findList(params).getData().size()>0) {
            return ResultBody.failed().msg(String.format("该医院下已经存在科室 %s", params.get("departmentName")));
        }
        return ResultBody.ok().msg("");
    }
    /**
     * 新增or更新
     */
    @ApiOperation(value = "保存")
    @PostMapping
    public ResultBody save(@Valid @RequestBody SysDepartment sysDepartment, BindingResult bindingResult) {
        List<String> errMsg= new ArrayList<>();
        List<String> errMsg = new ArrayList<>();
        if (bindingResult.hasErrors()) {
            for (ObjectError error : bindingResult.getAllErrors()) {
                errMsg.add(error.getDefaultMessage());
            }
            return ResultBody.failed().msg(errMsg.toString());
        } else {
            //先检查该医院下的该科室名是否已经存在?
            SysDepartment sysDepartmentTemp=new SysDepartment();
            sysDepartmentTemp.setHospitalId(sysDepartment.getHospitalId());
            sysDepartmentTemp.setDepartmentName(sysDepartment.getDepartmentName().trim());
            sysDepartmentTemp=sysDepartmentService.findByObject(sysDepartmentTemp);
            if (sysDepartmentTemp!=null) {
                return ResultBody.failed().msg(String.format("该医院下已经存在 %s",sysDepartment.getDepartmentName()));
            //先检查该医院该科室是否已经存在
            Map<String, Object> checkDepartment=new HashMap<String,Object>();
            checkDepartment.put("page", 1);
            checkDepartment.put("limit", 1);
            checkDepartment.put("hospitalId",sysDepartment.getHospitalId());
            checkDepartment.put("departmentName",sysDepartment.getDepartmentName());
            if (sysDepartmentService.findList(checkDepartment).getData().size()>0) {
                return ResultBody.failed().msg(String.format("该医院下已经存在科室 %s", sysDepartment.getDepartmentName()));
            }
            boolean v= sysDepartmentService.saveOrUpdate(sysDepartment);
            if(v) {
            //先检查是否存在组织信息
            SysOrganization sysOrganization=new SysOrganization();
            if(sysDepartment.getOrgId()!=null){
                sysOrganization.setId(sysDepartment.getOrgId());}
            else{
                sysOrganization.setOrgName(sysDepartment.getDepartmentName());
                //临时暂用其它字段承载数据
                sysOrganization.setOrgParentId(sysDepartment.getUpdateUserId());
            }
            sysOrganization=sysOrganizationService.findByObject(sysOrganization);
            if(sysOrganization==null)
            {
                //创建一个组织
                sysOrganization=new SysOrganization();
                sysOrganization.setOrgName(sysDepartment.getDepartmentName());
                sysOrganization.setOrgAttr(2);
                sysOrganization.setOrgLevel(2);
                //临时暂用其它字段承载数据
                sysOrganization.setOrgParentId(sysDepartment.getUpdateUserId());
            }
            else
            {
                sysOrganization.setOrgName(sysDepartment.getDepartmentName());
            }
            boolean org=sysOrganizationService.saveOrUpdate(sysOrganization);
            sysDepartment.setOrgId(sysOrganization.getId());
            boolean v = sysDepartmentService.saveOrUpdate(sysDepartment);
            if (v) {
                return ResultBody.ok().data(sysDepartment).msg("保存成功");
            }
            else {
            } else {
                return ResultBody.failed().msg("保存失败");
            }
        }
@@ -111,17 +157,17 @@
    @ApiOperation(value = "删除")
    @DeleteMapping("/{id}")
    public ResultBody delete(@PathVariable Long id) {
        boolean v= sysDepartmentService.removeById(id);
        if(v) {
        boolean v = sysDepartmentService.removeById(id);
        if (v) {
            return ResultBody.ok().msg("删除成功");
        }
        else {
        } else {
            return ResultBody.failed().msg("删除失败");
        }
    }
    /**
     * 根据医院获取  组织,通过组织,获取科室;
     *
     * @param params
     * @return
     */
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java
@@ -1,10 +1,14 @@
package com.kidgrow.usercenter.controller;
import com.kidgrow.common.constant.DictionariesConstants;
import com.kidgrow.common.controller.BaseController;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysOrganization;
import com.kidgrow.usercenter.model.SysHospital;
import com.kidgrow.usercenter.service.ISysDepartmentService;
import com.kidgrow.usercenter.service.ISysHospitalService;
import com.kidgrow.usercenter.service.ISysOrganizationService;
import com.kidgrow.usercenter.vo.HospitalListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -24,6 +28,7 @@
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
 *
 * @Description: 医院基础信息表
 * @Project: 用户中心
 * @CreateDate: Created in 2020-04-02 18:32:36 <br>
@@ -34,9 +39,13 @@
@RestController
@RequestMapping("/syshospital")
@Api(tags = "医院基础信息表")
public class SysHospitalController  extends BaseController{
public class SysHospitalController extends BaseController {
    @Autowired
    private ISysHospitalService sysHospitalService;
    @Autowired
    private ISysDepartmentService departmentService;
    @Autowired
    private ISysOrganizationService organizationService;
    /**
     * 列表
@@ -48,12 +57,13 @@
    })
    @GetMapping("/findOne")
    public PageResult<SysHospital> listOne(@RequestParam Map<String, Object> params) {
        if(params.size()==0){
            params.put("page",1);
            params.put("limit",10);
        if (params.size() == 0) {
            params.put("page", 1);
            params.put("limit", 10);
        }
        return sysHospitalService.findList(params);
    }
    /**
     * 列表
     */
@@ -64,17 +74,23 @@
    })
    @GetMapping
    public PageResult<HospitalListVo> list(@RequestParam Map<String, Object> params) {
        if(params.size()==0){
            params.put("page",1);
            params.put("limit",10);
        if (params.size() == 0) {
            params.put("page", 1);
            params.put("limit", 10);
        }
        return sysHospitalService.findHospitalList(params);
    }
    @PostMapping("findAll")
    @ApiOperation(value = "查询所有列表")
    public ResultBody<SysHospital> findAll(@RequestBody Map<String, Object> params) {
        return sysHospitalService.findAll(params);
        if (params.get("hospitalName") != null) {
            return sysHospitalService.findAll(params);
        } else {
            return ResultBody.ok().data(null);
        }
    }
    /**
     * 查询
     */
@@ -84,7 +100,18 @@
        SysHospital model = sysHospitalService.getById(id);
        return ResultBody.ok().data(model).msg("查询成功");
    }
    /**
     * 查询
     */
    @ApiOperation(value = "查询")
    @GetMapping("/findByName")
    public ResultBody findByName(@RequestParam String hospitalName) {
        if (!hospitalName.isEmpty()) {
            return ResultBody.ok().data(sysHospitalService.findByName(hospitalName).getData()).msg("查询成功");
        } else {
            return ResultBody.ok().data(null).msg("");
        }
    }
    /**
     * 根据SysHospital当做查询条件进行查询
     */
@@ -101,18 +128,41 @@
    @ApiOperation(value = "保存")
    @PostMapping
    public ResultBody save(@Valid @RequestBody SysHospital sysHospital, BindingResult bindingResult) {
        List<String> errMsg= new ArrayList<>();
        List<String> errMsg = new ArrayList<>();
        if (bindingResult.hasErrors()) {
            for (ObjectError error : bindingResult.getAllErrors()) {
                errMsg.add(error.getDefaultMessage());
            }
            return ResultBody.failed().msg(errMsg.toString());
        } else {
            boolean v= sysHospitalService.saveOrUpdate(sysHospital);
            if(v) {
                return ResultBody.ok().data(sysHospital).msg("保存成功");
            //先检查该医院是否存在组织信息
            SysOrganization sysOrganization=new SysOrganization();
            if(sysHospital.getOrgId()!=null){
                sysOrganization.setId(sysHospital.getOrgId());}
            else{
                sysOrganization.setOrgName(sysHospital.getHospitalName());
                sysOrganization.setOrgParentId(DictionariesConstants.ORG_PARENT_ID);
            }
            else {
            sysOrganization=organizationService.findByObject(sysOrganization);
            if(sysOrganization==null)
            {
                //创建一个组织
                sysOrganization=new SysOrganization();
                sysOrganization.setOrgName(sysHospital.getHospitalName());
                sysOrganization.setOrgAttr(1);
                sysOrganization.setOrgLevel(1);
                sysOrganization.setOrgParentId(DictionariesConstants.ORG_PARENT_ID);
            }
            else
            {
                sysOrganization.setOrgName(sysHospital.getHospitalName());
            }
            boolean org=organizationService.saveOrUpdate(sysOrganization);
            sysHospital.setOrgId(sysOrganization.getId());
            boolean v = sysHospitalService.saveOrUpdate(sysHospital);
            if (v) {
                return ResultBody.ok().data(sysHospital).msg("保存成功");
            } else {
                return ResultBody.failed().msg("保存失败");
            }
        }
@@ -128,12 +178,12 @@
            @ApiImplicitParam(name = "departmentId", value = "departmentId", required = true, dataType = "Integer")
    })
    public ResultBody delete(@RequestParam Map<String, Object> params) {
        if (params.size()==0)
        {
        if (params.size() == 0) {
            return ResultBody.failed().msg("参数异常!");
        }
        return sysHospitalService.delete(params);
    }
    /**
     * 修改状态
     *
@@ -148,8 +198,7 @@
            @ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Boolean")
    })
    public ResultBody updateEnabled(@RequestParam Map<String, Object> params) {
        if (params.size()==0)
        {
        if (params.size() == 0) {
            return ResultBody.failed().msg("参数异常!");
        }
        return sysHospitalService.updateEnabled(params);
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysOrganizationController.java
@@ -67,7 +67,13 @@
            params.put("page",1);
            params.put("limit",10);
        }
        return ResultBody.ok().data(sysOrganizationService.findList(params).getData());
        if (params.get("orgName")!=null) {
            return ResultBody.ok().data(sysOrganizationService.findList(params).getData());
        }
        else
        {
            return ResultBody.ok().data(null);
        }
    }
    @ApiOperation(value = "查询列表by MAP")
    @GetMapping("getListByMap")
@@ -119,7 +125,7 @@
            }
            return ResultBody.failed().msg(errMsg.toString());
        } else {
            boolean v= sysOrganizationService.saveOrUpdateSer(sysOrganization);
            boolean v= sysOrganizationService.saveOrUpdate(sysOrganization);
            if(v) {
                return ResultBody.ok().data(sysOrganization).msg("保存成功");
            }
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/DictionariesConstants.java
@@ -21,4 +21,8 @@
     * 医生职称
     */
    String DOCTOR_RANK = "DOCTOR_RANK";
    /**
     * 最高组织ID
     */
    Long ORG_PARENT_ID=1L;
}
kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
@@ -202,7 +202,7 @@
     * @returns {}
     */
    isEmpty:function(str){
        if(str != '' && str != undefined && str != null && str.length > 0){
        if(str != '' && str != undefined && str != null){
            return false;
        }else{
            return true;
@@ -259,3 +259,17 @@
        return true;
    }
};
//从当前页面的url地址中获取参数数据
function getRequest() {
    debugger
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
    if(url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for(var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
        }
    }
    return theRequest;
}
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/area.js
@@ -33,6 +33,10 @@
                    clientsAll = data.data;
                    if (clientsAll.length > 0) {
                        area.areasClear(domId,levelType);
                        if(clientsAll[0].areaLeveltype==2)
                        {
                            admin.putTempData("t_city",clientsAll);
                        }
                        $.each(clientsAll, function (index, item) {
                            if (selectValue == item.areaName) { selected = "selected='selected'"; }
                            else {
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -34,7 +34,7 @@
                <option value="1">正式</option>
            </select>
            &emsp;
            <input id="hospitalName" class="layui-input search-input" type="text" placeholder="按医院名" />&emsp;
            <input id="hosName" class="layui-input search-input" type="text" placeholder="按医院名" />&emsp;
            <button id="hospita-btn-search" class="layui-btn icon-btn"><i
                    class="layui-icon">&#xe615;</i>搜索</button>&emsp;
            <button id="hospital-btn-add" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加医院</button>
@@ -48,8 +48,7 @@
<!-- 表格操作列 -->
<script type="text/html" id="businessRecords-table-bar">
    <a class="layui-btn layui-btn-xs" lay-event="pay">充值</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="addDepartment">添加科室</a>
    <!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a> -->
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
@@ -59,7 +58,7 @@
           {{d.enabled==true?'checked':''}}/>
</script>
<script>
    layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin', 'area'], function () {
    layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin', 'autocomplete', 'area'], function () {
        var form = layui.form;
        var table = layui.table;
        var config = layui.config;
@@ -67,7 +66,7 @@
        var util = layui.util;
        var admin = layui.admin;
        var area = layui.area;
        // 渲染表格
        table.render({
            elem: '#hospital-table',
@@ -76,8 +75,8 @@
            headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
            page: true,
            cols: [[
                { field: 'hospitalName', width: 250, title: '医院名称',fixed:'left'},
                { field: 'departmentName', width: 100, title: '科室' ,fixed:'left'},
                { field: 'hospitalName', width: 250, title: '医院名称', fixed: 'left' },
                { field: 'departmentName', width: 100, title: '科室', fixed: 'left' },
                {
                    field: 'hospitalArea', width: 250, title: '所在地区', templet: function (d) {
                        return ((d.hospitalProvince == null) ? "" : d.hospitalProvince) + " "
@@ -104,7 +103,7 @@
                { field: 'serverUserName', width: 100, title: '服务人员' },
                { field: 'createTime', width: 120, sort: true, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy/MM/dd')}}</div>" },
                { field: 'enabled', width: 100, templet: '#hospital-tpl-state', sort: true, title: '状态' },
                { field: 'hospitalId', width: 300, align: 'center', toolbar: '#businessRecords-table-bar', title: '操作' ,fixed:'right'}
                { field: 'hospitalId', width: 300, align: 'center', toolbar: '#businessRecords-table-bar', title: '操作', fixed: 'right' }
            ]]
        });
        //省份数据加载
@@ -129,23 +128,10 @@
                    }, 'GET');
                });
            }
            else if (layEvent === 'addDepartment') {
                //添加科室
                admin.putTempData("t_hospital", data);
                admin.popupCenter({
                    title: '添加科室',
                    path: 'pages/opration/department_form.html',
                    area: ['900px', '60%'],
                    finish: function () {
                        //清理缓存数据
                        admin.putTempData("t_hospital", "");
                    }
                })
            }
            else if (layEvent === "edit") {
                //修改
                admin.putTempData("t_hospital", data);
                showEditModel();
                showEditModel("edit");
            }
        });
        // 搜索按钮点击事件
@@ -153,7 +139,7 @@
            var isscreen = $('#isscreen').val();
            var isanswer = $('#isanswer').val();
            var hospitalstate = $('#hospitalstate').val();
            var hospitalName = $('#hospitalName').val();
            var hospitalName = $('#hosName').val();
            var hospitalProvince = ($("#province").val() != "") ? $('#province option:selected').text() : "";
            var hospitalCity = ($("#city").val() != "") ? $('#city option:selected').text() : "";
@@ -174,11 +160,11 @@
        // // 显示编辑弹窗
        var showEditModel = function (data) {
            admin.popupCenter({
                title: '编辑医院/科室',
                path: 'pages/opration/hospital_form_tab.html',
                area: ['900px', '80%'],
                title: (strUtil.isEmpty(data))?'添加医院':'编辑医院',
                path: 'pages/opration/hospital_form_base.html',
                area: '900px',
                finish: function () {
                    $('#hospita-btn-search').click();
                }
            });
        };
@@ -213,6 +199,7 @@
        });
        // 添加按钮点击事件
        $('#hospital-btn-add').click(function () {
            admin.putTempData("t_hospital","");
            showEditModel();
        });
    });
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
@@ -5,7 +5,7 @@
                <label class="layui-form-label">医院名称</label>
                <div class="layui-input-block">
                    <input name="hospitalName" id="hospitalName" placeholder="请输入医院名称" type="text" class="layui-input"
                        maxlength="50" lay-verify="required" required autocomplete="on" style="width: 390px;" />
                        maxlength="50" lay-verify="required" required style="width: 390px;" />
                </div>
            </div>
            <div class="layui-col-sm3">
@@ -19,11 +19,17 @@
    </div>
    <div class="layui-form-item">
        <div class="layui-row">
            <div class="layui-col-sm7">
            <div class="layui-col-sm4">
                <label class="layui-form-label">科室名称</label>
                <div class="layui-input-block">
                    <input name="departmentName" id="departmentName" placeholder="科室名称" type="text" class="layui-input"
                        maxlength="50" lay-verify="required" required style="width: 150px;" />
                    &emsp;</div>
            </div>
            <div class="layui-col-sm3">
                <label class="layui-form-label">联系电话</label>
                <div class="layui-input-block">
                    <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input" maxlength="50"
                        style="width: 390px;" />
                    <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input" maxlength="50" />
                </div>
            </div>
            <div class="layui-col-sm3">
@@ -39,7 +45,7 @@
            <div class="layui-col-sm7">
                <label class="layui-form-label">医院类型</label>
                <div class="layui-input-block">
                    <input name="hospitalTypeId" id="hospitalTypeId" type="hidden"  value=""/>
                    <input name="hospitalTypeId" id="hospitalTypeId" type="hidden" value="" />
                    <select name="hospitalTypeName" id="hospitalTypeName" lay-filter="hospitalTypeName"
                        style="width: 300px;">
                        <option value="">请选择</option>
@@ -49,7 +55,7 @@
            <div class="layui-col-sm3">
                <label class="layui-form-label">医院资质</label>
                <div class="layui-input-block">
                    <input name="hospitalQualifiedId" id="hospitalQualifiedId" type="hidden"  value=""/>
                    <input name="hospitalQualifiedId" id="hospitalQualifiedId" type="hidden" value="" />
                    <select name="hospitalQualifiedName" id="hospitalQualifiedName" lay-filter="hospitalQualifiedName"
                        style="width: 300px;">
                        <option value="">请选择</option>
@@ -63,14 +69,17 @@
            <label class="layui-form-label">所在地区</label>
            <div class="layui-input-block">
                <div class="layui-col-sm4">
                    <select id="hospitalProvince" placeholder="省份" lay-filter="hospitalProvince" style="width: 400px;">
                    <select lay-verify="required" required id="hospitalProvince" placeholder="省份"
                        lay-filter="hospitalProvince" style="width: 400px;">
                    </select></div>
                <div class="layui-col-sm4">
                    <select id="hospitalCity" placeholder="市" lay-filter="hospitalCity" style="width: 350px;">
                    <select id="hospitalCity" lay-verify="required" required placeholder="市" lay-filter="hospitalCity"
                        style="width: 350px;">
                        <option value="">选择市</option>
                    </select></div>
                <div class="layui-col-sm4">
                    <select id="hospitalArea" placeholder="区县" lay-filter="hospitalArea" style="width: 350px;">
                    <select id="hospitalArea" lay-verify="required" required placeholder="区县" lay-filter="hospitalArea"
                        style="width: 350px;">
                        <option value="">选择区县</option>
                    </select>
                </div>
@@ -88,23 +97,32 @@
            <div class="layui-col-sm3">
                <label class="layui-form-label">区号</label>
                <div class="layui-input-block">
                    <input name="areaCode" type="text" class="layui-input" maxlength="10" />
                    <input name="areaCode" id="areaCode" lay-verify="required" required type="text" class="layui-input"
                        maxlength="10" />
                </div>
            </div>
            <div class="layui-col-sm3">
                <label class="layui-form-label">经度</label>
                <div class="layui-input-block">
                    <input name="longitude" type="text" class="layui-input" maxlength="20" />
                    <input name="longitude" id="longitude" type="text" class="layui-input" maxlength="20" />
                </div>
            </div>
            <div class="layui-col-sm3">
                <label class="layui-form-label">纬度</label>
                <div class="layui-input-block">
                    <input name="latitude" type="text" class="layui-input" maxlength="20" />
                    <input name="latitude" id="latitude" type="text" class="layui-input" maxlength="20" />
                </div>
            </div>
            <div class="layui-col-sm3">
                <label class="layui-form-label">服务人员</label>
                <div class="layui-input-block">
                    <input name="serverUserId" id="serverUserId" type="hidden" value="" />
                    <select lay-verify="required" required name="serverUserName" id="serverUserName"
                        style="width: 150px;">
                    </select>
                </div>
            </div>
        </div>
    </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">医院简介</label>
@@ -116,34 +134,25 @@
        <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
        <button class="layui-btn" lay-filter="hospital-form-submit" lay-submit>保存</button>
    </div>
    <input type="hidden" id="orgId" name="orgId" value=""/>
    <input type="hidden" name="departmentId" id="departmentId" value="" />
    <input type="hidden" name="orgId" id="orgId" value="" />
    <input type="hidden" name="departmentOrgId" id="departmentOrgId" value="" />
    <input type="hidden" name="id" id="id" value="" />
</form>
<script>
    parent.layui.use(['form', 'table','util', 'config', 'admin', 'area', 'formSelects', 'dic', 'autocomplete'], function () {
        var form = parent.layui.form;
        var table = parent.layui.table;
        var config = parent.layui.config;
        var layer = parent.layui.layer;
        var util = parent.layui.util;
        var admin = parent.layui.admin;
        var area = parent.layui.area;
        var dic = parent.layui.dic;
        var formSelects = parent.layui.formSelects;
        var autocomplete = parent.layui.autocomplete;
        var $ = parent.layui.jquery;
    layui.use(['form', 'table', 'util', 'config', 'admin', 'area', 'dic', 'autocomplete'], function () {
        var form = layui.form;
        var table = layui.table;
        var config = layui.config;
        var layer = layui.layer;
        var util = layui.util;
        var admin = layui.admin;
        var area = layui.area;
        var dic = layui.dic;
        var autocomplete = layui.autocomplete;
        var $ = layui.jquery;
        autocomplete.render({
            elem: $('#hospitalName'),
            cache: true,
            url: config.base_server + 'api-user/syshospital',
            response: { code: 'code', data: 'data' },
            template_val: '{{d.hospitalName}}',
            template_txt: '{{d.hospitalName}} <span class=\'layui-badge layui-bg-gray\'>{{d.id}}</span>',
            onselect: function (resp) {
                //$('#content1').html("NEW RENDER: " + JSON.stringify(resp));
            }
        })
        //医院资质数据
        dic.dicData("#hospitalQualifiedName", "HOSPITAL_QUALIFIED", "");
        //医院类型数据
@@ -158,6 +167,18 @@
        //装载区县数据
        form.on("select(hospitalCity)", function (data) {
            area.areaData("#hospitalArea", 3, data.value, "");
            //区号,金纬度自动赋值
            let cityData = admin.getTempData("t_city");
            if (cityData != null) {
                cityData.forEach(function (item) {
                    if (data.value == item.id) {
                        $("#areaCode").val(item.areaCitycode);
                        $("#longitude").val(item.areaLng);
                        $("#latitude").val(item.areaLat);
                        break;
                    }
                })
            }
        });
        //赋值资质数据ID
        form.on("select(hospitalQualifiedName)", function (data) {
@@ -167,42 +188,156 @@
        form.on("select(hospitalTypeName)", function (data) {
            $("#hospitalTypeId").val(data.value);
        });
        // 回显组织数据
        let orgs = admin.getTempData('t_org');
        if (orgs != null) {
            $('input[name="hospitalName"]').val(orgs.orgName);
            $('input[name="orgId"]').val(orgs.id);
            form.render();
        }
        // 表单提交事件
        form.on('submit(hospital-form-submit)', function (data) {
            layer.load(2);
            if(data.field!=null){
                data.field.hospitalTypeName=$("#hospitalTypeName option:selected").text();
                data.field.hospitalQualifiedName=$("#hospitalQualifiedName option:selected").text();
                data.field.hospitalProvince=$("#hospitalProvince option:selected").text();
                data.field.hospitalCity=$("#hospitalCity option:selected").text();
                data.field.hospitalArea=$("#hospitalArea option:selected").text();
            if (data.field != null) {
            admin.req('api-user/syshospital', JSON.stringify(data.field), function (data) {
                layer.closeAll('loading');
                if (data.code == 0) {
                    //将医院数据存入本地
                    admin.putTempData('t_hospital', data.data);
                    layer.msg(data.msg, { icon: 1, time: 1000 }, function () {
                        //清理组织数据
                        admin.putTempData('t_org','');
                    });
                } else {
                    layer.msg(data.msg, { icon: 2, time: 1000 });
                }
            }, "POST");}
            else{
                    layer.msg("数据异常!", { icon: 2, time: 1000 });
                data.field.hospitalTypeName = $("#hospitalTypeName option:selected").text() != "请选择" ? $("#hospitalTypeName option:selected").text() : "";
                data.field.hospitalQualifiedName = $("#hospitalQualifiedName option:selected").text() != "请选择" ? $("#hospitalQualifiedName option:selected").text() : "";
                data.field.hospitalProvince = $("#hospitalProvince option:selected").text() != "选择省" ? $("#hospitalProvince option:selected").text() : "";
                data.field.hospitalCity = $("#hospitalCity option:selected").text() != "选择市" ? $("#hospitalCity option:selected").text() : "";
                data.field.hospitalArea = $("#hospitalArea option:selected").text() != "选择区县" ? $("#hospitalArea option:selected").text() : "";
                admin.req('api-user/syshospital', JSON.stringify(data.field), function (data) {
                    layer.closeAll('loading');
                    if (data.code === 0) {
                        //存储科室数据
                        var departmentData = {
                            serverUserId: $("#serverUserName").val(),
                            serverUserName: $("#serverUserName option:selected").text(),
                            departmentName: $("#departmentName").val(),
                            id: $("#departmentId").val(),
                            orgId: $("#departmentOrgId").val(),
                            updateUserId: data.data.orgId,
                            hospitalId: data.data.id
                        };
                        admin.req('api-user/sysdepartment', JSON.stringify(departmentData), function (data) {
                            layer.closeAll('loading');
                            if (data.code == 0) {
                                layer.msg(data.msg, { icon: 1, time: 1000 }, function () {
                                    admin.finishPopupCenter();
                                });
                                admin.putTempData("t_hospital", "");
                                admin.putTempData("t_city", "");
                            } else {
                                layer.msg(data.msg, { icon: 2, time: 1000 });
                            }
                        }, "POST");
                    } else {
                        layer.msg(data.msg, { icon: 2, time: 1000 });
                    }
                }, "POST");
            }
            else {
                layer.msg("数据异常!", { icon: 2, time: 1000 });
            }
            return false;
        });
        //自动完成-医院名称
        autocomplete.render({
            elem: $('#hospitalName')[0],
            keywordsName: 'hospitalName',//查询关键字名称
            url: config.base_server + 'api-user/syshospital/findByName',
            template_val: '{{d.hospitalName}}',//选择后文本框显示的数据字段
            template_txt: "<div class='layui-table-cell'>{{d.hospitalName}}</div>",//下拉列表模板
            onselect: function (resp) {
                loadDatas(resp.id);
            }
        });
        //加载当前所在部门的在职员工
        admin.req('api-user/users/getThisUserOrganizationUser', {}, function (data) {
            layer.closeAll('loading');
            if (0 === data.code) {
                if (data.data.length > 0) {
                    $.each(data.data, function (index, item) {
                        //往下拉菜单里添加元素
                        $('#serverUserName').append(new Option(item.nickname, item.id, false, false));
                    })
                    $('#serverUserName').val(config.getUser().id);
                    $('#serverUserId').val(config.getUser().id);
                    form.render('select');
                }
            } else {
                layer.msg(data.msg, { icon: 2, time: 500 });
            }
        }, 'get');
        //检查科室名是否存在
        $("#departmentName").blur(function () {
            debugger
            if (edithospitalData != null) {
                if (edithospitalData.departmentName == $("#departmentName").val()) {
                    return false;
                }
            }
                let hosIdForDep = $("#id").val();
                if (!strUtil.isEmpty($("#departmentName").val()) && !strUtil.isEmpty(hosIdForDep)) {
                    admin.req('api-user/sysdepartment/checkName', { hospitalId: hosIdForDep, departmentName: $("#departmentName").val() }, function (data) {
                        layer.closeAll('loading');
                        if (0 != data.code) {
                            layer.msg(data.msg, { icon: 2, time: 1000 });
                            return false;
                        }
                    }, 'get');
                }
        })
        //按照ID装载数据
        var loadDatas = function (hosId) {
            if (!strUtil.isEmpty(hosId)) {
                //用ID获取实体
                admin.req('api-user/syshospital/' + hosId, {}, function (data) {
                    layer.closeAll('loading');
                    if (0 === data.code) {
                        //装载基本数据
                        let hosData = data.data;
                        form.val("hospital-form", hosData);
                        //装载省市区数据
                        if (!strUtil.isEmpty(hosData.hospitalProvince))
                            area.areaData("#hospitalProvince", 1, "", hosData.hospitalProvince);
                        if (!strUtil.isEmpty(hosData.hospitalCity))
                            area.areaData("#hospitalCity", 2, $("#hospitalProvince").val(), hosData.hospitalCity);
                        if (!strUtil.isEmpty(hosData.hospitalArea))
                            area.areaData("#hospitalArea", 3, $("#hospitalCity").val(), hosData.hospitalArea);
                        //装载资质 类型
                        $("#hospitalQualifiedName").val(hosData.hospitalQualifiedId);
                        $("#hospitalTypeName").val(hosData.hospitalTypeId);
                        //装载科室数据
                        admin.req('api-user/sysdepartment', { hospitalId: hosId, isDel: 0, page: 1, limit: 20 }, function (data) {
                            if (data.code == 0) {
                                let departData = data.data.data;
                                if (departData.length > 0) {
                                    if (departData.length > 1) {
                                        layer.msg("该医院下有多个科室,默认显示第一个", { icon: 1, time: 2000 });
                                    }
                                    $("#serverUserId").val(departData[0].serverUserId);
                                    $("#serverUserName").val(departData[0].serverUserId);
                                    $("#departmentName").val(departData[0].departmentName);
                                    $("#departmentId").val(departData[0].id);
                                    $("#departmentOrgId").val(departData[0].orgId);
                                    form.render();
                                }
                            }
                            else {
                                layer.msg(data.msg, { icon: 2, time: 500 });
                            }
                        }, 'get');
                        form.render();
                    } else {
                        layer.msg(data.msg, { icon: 2, time: 500 });
                    }
                }, 'get');
            }
        }
        //回显组织数据
        let edithospitalData = admin.getTempData('t_hospital');
        var hosIdForEdit = "";
        if (edithospitalData != null) {
            hosIdForEdit = edithospitalData.hospitalId;
            if (!strUtil.isEmpty(hosIdForEdit))
                loadDatas(hosIdForEdit);
        }
    });
</script>