zxl
2026-03-25 0b39edb68acc67ed01fbfe5d31bfa776a1b17de1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package com.tievd.jyz.controller;
 
import cn.hutool.extra.pinyin.PinyinUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tievd.cube.commons.annotations.AutoLog;
import com.tievd.cube.commons.annotations.DictApi;
import com.tievd.cube.commons.base.CubeController;
import com.tievd.cube.commons.base.Result;
import com.tievd.cube.modules.system.entity.SysDepart;
import com.tievd.cube.modules.system.entity.SysUser;
import com.tievd.cube.modules.system.service.ISysUserService;
import com.tievd.jyz.constants.SystemConstant;
import com.tievd.jyz.entity.Device;
import com.tievd.jyz.entity.vo.SysDepartVO;
import com.tievd.jyz.service.IDeviceService;
import com.tievd.jyz.service.ISysDepartVOService;
import com.tievd.jyz.service.ISysUserVOService;
import io.swagger.v3.oas.annotations.Operation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
 
/**
 * @author yang'zhi'shui
 */
@Slf4j
@DictApi
@RestController
@RequestMapping("/jyz/custom/sys/depart")
public class SysDepartVOController extends CubeController<SysDepartVO, ISysDepartVOService> {
 
    @Autowired
    private ISysUserService sysUserService;
 
    @Autowired
    private ISysDepartVOService sysDepartService;
 
    @Autowired
    private com.tievd.cube.modules.system.service.ISysDepartService service;
 
    @Autowired
    private IDeviceService deviceService;
 
    @Autowired
    private ISysUserVOService sysUserVOService;
 
    @AutoLog("机构管理-添加")
    @PostMapping("/add")
    public Result<?> add(@RequestBody SysDepart sysDepart) {
        service.saveDepartData(sysDepart);
        SysUser sysUser = new SysUser();
        String username = PinyinUtil.getFirstLetter(sysDepart.getDepartName(), "");
        sysUser.setUsername(username);
        sysUser.setRealname(username);
        sysUser.setPassword(SystemConstant.DEFAULT_PASSWORD);
        sysUser.setOrgCode(sysDepart.getOrgCode());
        sysUser.setDepartIds(sysDepart.getId());
        String selectedRoles = "1456085100369317890";
        sysUserService.add(sysUser, selectedRoles, sysDepart.getId());
        return Result.ok();
    }
 
    @GetMapping("/tables")
    public Result<?> tables(SysDepartVO sysDepartDTO,
                            @RequestParam(defaultValue = "1") Integer pageNo,
                            @RequestParam(defaultValue = "10") Integer pageSize,
                            @RequestParam(required = false) String searchKey,
                            @RequestParam(required = false) String parentCode) {
        QueryWrapper<SysDepartVO> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(searchKey)) {
            queryWrapper.like("depart_name", searchKey);
        }
        if (StringUtils.isNotBlank(parentCode)) {
            queryWrapper.likeRight("org_code", parentCode);
        }
        Page<SysDepartVO> page = new Page<>(pageNo, pageSize);
        IPage<SysDepartVO> pageList = sysDepartService.tables(page, queryWrapper);
        return Result.ok(pageList);
    }
 
    /**
     * 删除部门
     *
     * @param id 主键id
     */
    @AutoLog("删除部门")
    @DeleteMapping("/delete")
    @Operation(summary = "删除部门")
    public Result<?> delete(@RequestParam String id) {
        SysDepart sysDepart = service.getById(id);
        if (sysDepart == null) {
            return Result.error("未找到对应数据!");
        }
        LambdaQueryWrapper<Device> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.likeRight(Device::getOrgCode, sysDepart.getOrgCode());
        List<Device> list = deviceService.list(queryWrapper);
        if (!list.isEmpty()) {
            return Result.error("本级或下级机构有关联网关设备,无法删除");
        }
        service.delete(id);
        sysUserVOService.physicalRemove(sysDepart.getOrgCode());
        return Result.ok();
    }
 
}