forked from kidgrow-microservices-platform

zxh
2020-08-25 e9e46931ee852ac48af347ba95d998387d9b9686
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserOrgController.java
@@ -1,26 +1,200 @@
package com.kidgrow.usercenter.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kidgrow.common.annotation.LoginUser;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysOrganization;
import com.kidgrow.common.model.SysUser;
import com.kidgrow.common.model.SysUserOrg;
import com.kidgrow.usercenter.model.SysDepartment;
import com.kidgrow.usercenter.model.SysHospital;
import com.kidgrow.usercenter.service.ISysOrganizationService;
import com.kidgrow.usercenter.service.ISysUserOrgService;
import com.kidgrow.usercenter.service.impl.SysDepartmentServiceImpl;
import com.kidgrow.usercenter.service.impl.SysHospitalServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/sysuserorg")
@Api(tags = "")
@Api(tags = "用户与部门")
public class SysUserOrgController {
    @Autowired
    private ISysUserOrgService iSysUserOrgService;
    private ISysUserOrgService sysUserOrgService;
    @Autowired
    private ISysOrganizationService sysOrganizationService;
    @Autowired
    private SysDepartmentServiceImpl sysDepartmentService;
    @Autowired
    private SysHospitalServiceImpl sysHospitalService;
    @PostMapping("getListByMap")
    public List<SysUserOrg> getListByMap(@RequestParam Map<String,Object> map){
        List<SysUserOrg> sysUserOrgs = iSysUserOrgService.listByMap(map);
    public List<SysUserOrg> getListByMap(@RequestParam Map<String, Object> map) {
        List<SysUserOrg> sysUserOrgs = sysUserOrgService.listByMap(map);
        return sysUserOrgs;
    }
    /**
     * 根据条件查询列表
     *
     * @param map
     * @return
     */
    @ApiOperation(value = "根据条件查询列表")
    @GetMapping
    public ResultBody listByMap(@RequestParam Map<String, Object> map) {
        return ResultBody.ok().data(sysUserOrgService.listByMap(map)).msg("查询成功");
    }
    /**
     * 新增or更新
     */
    @ApiOperation(value = "保存")
    @PostMapping
    public ResultBody save(@Valid @RequestBody SysUserOrg sysUserOrg, BindingResult bindingResult, @LoginUser SysUser sysUser) {
        if (bindingResult.hasErrors()) {
            return ResultBody.failed().msg(bindingResult.getFieldError().getDefaultMessage());
        } else {
            if (sysUserOrg.getUserId() != null) {
                String createUserOrgCode = "";
                List<SysOrganization> userOrgData = new ArrayList<>();
                SysOrganization byId = sysOrganizationService.getById(sysUserOrg.getOrgId());
                if(byId==null){
                    return ResultBody.failed().data(null).msg("该组织id异常");
                }
                SysOrganization parentId = sysOrganizationService.getById(byId.getOrgParentId());
                userOrgData.add(parentId);
                userOrgData.add(byId);
                if(parentId==null){
                    return ResultBody.failed().data(null).msg("该组织id异常");
                }
                if (userOrgData != null) {
                    if (userOrgData.size() == 2) {
                        createUserOrgCode = userOrgData.get(1).getOrgCode();
                    }
                }
                if (!createUserOrgCode.isEmpty()) {
                    //查出用户的所有组织关系数据
                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("user_id", sysUserOrg.getUserId());
                    List<SysUserOrg> userOrgList = sysUserOrgService.getListByMap(map);
                    if (userOrgList.size() > 0) {
                        for (int i = 0; i < userOrgList.size(); i++) {
                            if (sysUserOrg.getId().equals(userOrgList.get(i).getId())) {
                                userOrgList.get(i).setOrgId(sysUserOrg.getOrgId());
                                userOrgList.get(i).setFromLevel(2);
                                //查询  科室
                                QueryWrapper queryWrapper = new QueryWrapper();
                                queryWrapper.eq("org_id", sysUserOrg.getOrgId());
                                queryWrapper.eq("is_del", 0);
                                queryWrapper.eq("enabled", 1);
                                List<SysDepartment> list = sysDepartmentService.list(queryWrapper);
                                if (!list.isEmpty()) {
                                    userOrgList.get(i).setFromId(list.get(0).getId());
                                } else {
                                    userOrgList.get(i).setFromId(null);
                                }
                            } else {
                                QueryWrapper queryWrapper = new QueryWrapper();
                                queryWrapper.eq("org_id", sysUserOrg.getUpdateUserId());
                                queryWrapper.eq("is_del", 0);
                                queryWrapper.eq("enabled", 1);
                                List<SysHospital> listHospital = sysHospitalService.list(queryWrapper);
                                if (!listHospital.isEmpty()) {
                                    userOrgList.get(i).setFromId(listHospital.get(0).getId());
                                }
                                userOrgList.get(i).setFromLevel(1);
                                userOrgList.get(i).setOrgId(sysUserOrg.getUpdateUserId());
                            }
                            userOrgList.get(i).setEnabled(sysUserOrg.getEnabled());
                            userOrgList.get(i).setCreateUserOrgCode(createUserOrgCode);
                        }
                    } else {
                        userOrgList = new ArrayList<>();
                        //查出来的上级组织信息建立用户关系
                        //借用字段承载数据
                        SysOrganization sysOrganization = sysOrganizationService.getById(sysUserOrg.getUpdateUserId());
                        if (sysOrganization != null) {
                            SysUserOrg sysUserOrgTemp = new SysUserOrg();
                            sysUserOrgTemp.setOrgId(sysOrganization.getId());
                            sysUserOrgTemp.setUserId(sysUserOrg.getUserId());
                            sysUserOrgTemp.setEnabled(sysUserOrg.getEnabled());
                            sysUserOrgTemp.setCreateUserOrgCode(createUserOrgCode);
                            sysUserOrgTemp.setFromLevel(2);
                            //查询  科室
                            QueryWrapper queryWrapper = new QueryWrapper();
                            queryWrapper.eq("org_id", sysUserOrg.getOrgId());
                            queryWrapper.eq("is_del", 0);
                            queryWrapper.eq("enabled", 1);
                            List<SysDepartment> list = sysDepartmentService.list(queryWrapper);
                            if (!list.isEmpty()) {
                                sysUserOrgTemp.setFromId(list.get(0).getId());
                            }
                            userOrgList.add(sysUserOrgTemp);
                            //查询 医院
                            queryWrapper = new QueryWrapper();
                            queryWrapper.eq("org_id", sysUserOrg.getUpdateUserId());
                            queryWrapper.eq("is_del", 0);
                            queryWrapper.eq("enabled", 1);
                            List<SysHospital> listHospital = sysHospitalService.list(queryWrapper);
                            if (!listHospital.isEmpty()) {
                                sysUserOrg.setFromId(listHospital.get(0).getId());
                            }
                            sysUserOrg.setFromLevel(1);
//                            sysUserOrg.setUpdateUserId(0L);
                            sysUserOrg.setOrgId(sysOrganization.getOrgParentId());
                            sysUserOrg.setCreateUserOrgCode(createUserOrgCode);
                            userOrgList.add(sysUserOrg);
                        } else {
                            return ResultBody.failed().data(null).msg("该组织的上级组织数据异常!");
                        }
                    }
                    //查询
                    boolean v = sysUserOrgService.saveOrUpdateBatch(userOrgList);
                    if (v) {
                        return ResultBody.ok().data(sysUserOrg).msg("保存成功");
                    } else {
                        return ResultBody.failed().data(null).msg("数据保存失败!");
                    }
                } else {
                    return ResultBody.failed().data(null).msg("该组织数据不完整!");
                }
            } else {
                return ResultBody.failed().data(null).msg("该组数据不完整!");
            }
        }
    }
    /**
     * 删除
     */
    @ApiOperation(value = "删除")
    @DeleteMapping("/{id}")
    public ResultBody delete(@PathVariable Long id) {
        sysUserOrgService.removeById(id);
        return ResultBody.ok().msg("删除成功");
    }
    /**
     * 查询
     */
    @ApiOperation(value = "查询")
    @GetMapping("/{id}")
    public ResultBody findById(@PathVariable Long id) {
        SysUserOrg model = sysUserOrgService.getById(id);
        return ResultBody.ok().data(model).msg("查询成功");
    }
}