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 = "用户与部门") public class SysUserOrgController { @Autowired private ISysUserOrgService sysUserOrgService; @Autowired private ISysOrganizationService sysOrganizationService; @Autowired private SysDepartmentServiceImpl sysDepartmentService; @Autowired private SysHospitalServiceImpl sysHospitalService; @PostMapping("getListByMap") public List getListByMap(@RequestParam Map map) { List sysUserOrgs = sysUserOrgService.listByMap(map); return sysUserOrgs; } /** * 根据条件查询列表 * * @param map * @return */ @ApiOperation(value = "根据条件查询列表") @GetMapping public ResultBody listByMap(@RequestParam Map 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 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 map = new HashMap(); map.put("user_id", sysUserOrg.getUserId()); List 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 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 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 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 listHospital = sysHospitalService.list(queryWrapper); if (!listHospital.isEmpty()) { sysUserOrgTemp.setFromId(listHospital.get(0).getId()); } sysUserOrgTemp.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("查询成功"); } }