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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
package com.consum.base.service.impl;
 
import java.util.HashMap;
import java.util.List;
 
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
 
import com.consum.base.Constants;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.pojo.FinSysTenantDepartmentParam;
import com.consum.base.service.FinSysTenantDepartmentService;
import com.consum.model.po.FinSysTenantDepartment;
import com.consum.model.po.FinSysTenantUser;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
 
/**
 * @Description 部门管理
 * @Author 卢庆阳
 * @Date 2023/10/26
 */
@Service
public class FinSysTenantDepartmentServiceImpl extends BaseServiceImpl implements FinSysTenantDepartmentService {
 
    /**
     * @Description 根据 部门名称和机构id 查询部门
     * @Author 卢庆阳
     * @Date 2023/10/26
     */
    @Override
    public FinSysTenantDepartment getTenantDepartment(String name, Long tenantId, String code) {
        StringBuilder sql = new StringBuilder("SELECT * FROM fin_sys_tenant_department WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
 
        // 部门名称
        if (!StringUtils.isEmpty(name)) {
            sql.append(" and name =:name ");
            paramts.put("name", name);
        }
        // 机构id
        if (tenantId != null) {
            sql.append(" and TENANT_ID =:tenantId ");
            paramts.put("tenantId", tenantId);
        }
        if (!StringUtils.isEmpty(code)) {
            sql.append("and CODE = :code ");
            paramts.put("code", code);
        }
 
        sql.append("and status = 1");
        return this.get(sql.toString(), paramts, new FinSysTenantDepartment());
    }
 
    /**
     * @Description 新增
     * @Author 卢庆阳
     * @Date 2023/10/26
     */
    @Override
    public int add(FinSysTenantDepartmentParam param, FinSysTenantUser sysInfo) {
        FinSysTenantDepartment department = new FinSysTenantDepartment();
        BeanUtils.copyProperties(param, department);
        department.setId(IdUtil.generateId());
 
        // 创建人姓名
        department.setCreateBy(sysInfo.getUserName());
        // 创建时间
        department.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
 
        return this.insert(department);
    }
 
    /**
     * @Description 部门列表查询
     * @Author 卢庆阳
     * @Date 2023/10/26
     */
    @Override
    public GenericPager<FinSysTenantDepartment> queryList(FinSysTenantDepartmentParam param) {
        StringBuilder sql = new StringBuilder("SELECT * FROM fin_sys_tenant_department WHERE 1 = 1 and is_delete = 0 ");
        HashMap<String, Object> paramts = new HashMap<>();
 
        // 部门名称
        if (!StringUtils.isEmpty(param.getName())) {
            sql.append(" and name like:name ");
            paramts.put("name", StringUtils.CHAR_PERCENT + param.getName() + StringUtils.CHAR_PERCENT);
        }
        // 编号
        if (!StringUtils.isEmpty(param.getCode())) {
            sql.append(" and code like:code ");
            paramts.put("code", StringUtils.CHAR_PERCENT + param.getCode() + StringUtils.CHAR_PERCENT);
        }
        // 状态
        if (param.getStatus() != null) {
            sql.append(" and status =:status ");
            paramts.put("status", param.getStatus());
        }
        // 机构id
        if (param.getTenantId() != null) {
            sql.append(" and TENANT_ID =:tenantId ");
            paramts.put("tenantId", param.getTenantId());
        } else {
            sql.append(" and TENANT_ID = 100 ");
        }
 
        sql.append(" ORDER BY ORDER_NUM,CREATE_TIME DESC ");
        return selectSplit(sql.toString(), paramts, new FinSysTenantDepartment());
    }
 
    /**
     * @Description 编辑
     * @Author 卢庆阳
     * @Date 2023/10/26
     */
    @Override
    public int updateFinSysTenantDepartment(FinSysTenantDepartment department, FinSysTenantUser sysInfo) {
        department.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        department.setUpdateBy(sysInfo.getUserName());
        return this.update(department);
    }
 
    /**
     * 根据部门id查询部门详情
     *
     * @author 卢庆阳
     * @Date 2023/10/26
     */
    @Override
    public FinSysTenantDepartment getById(Long id) {
        return this.get(new FinSysTenantDepartment(id));
    }
 
    /**
     * @param department
     * @param currentUser
     * @Description 根据id删除部门
     * @Author 卢庆阳
     * @Date 2023/10/26
     */
    @Override
    public int updateById(FinSysTenantDepartment department, FinSysTenantUser currentUser) {
        department.setIsDelete(Constants.IS_DELETE_YES);
        // 删除时间
        department.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        // 删除人姓名
        department.setUpdateBy(currentUser.getUserName());
        return this.update(department);
    }
 
    /**
     * 根据机构id查询部门
     *
     * @param agencyId
     * @return
     */
    @Override
    public List<FinSysTenantDepartment> getByTenantId(Long agencyId) {
        StringBuilder sql = new StringBuilder("SELECT * FROM fin_sys_tenant_department WHERE 1 = 1 and is_delete = 0 ");
        HashMap<String, Object> paramts = new HashMap<>();
 
        // 机构id
        if (agencyId != null) {
            sql.append(" and TENANT_ID =:tenantId ");
            paramts.put("tenantId", agencyId);
        }
        return this.select(sql.toString(), paramts, new FinSysTenantDepartment());
    }
 
    @Override
    public FinSysTenantDepartment getByTenantIdAndName(Long agencyId, String name) {
        StringBuilder sql = new StringBuilder("SELECT * FROM fin_sys_tenant_department WHERE 1 = 1 and is_delete = 0 ");
        HashMap<String, Object> paramts = new HashMap<>();
 
        // 机构id
        if (agencyId != null) {
            sql.append(" and TENANT_ID =:tenantId ");
            paramts.put("tenantId", agencyId);
        }
        // name
        if (name != null) {
            sql.append(" and name =:name ");
            paramts.put("name", name);
        }
        List<FinSysTenantDepartment> select = this.select(sql.toString(), paramts, new FinSysTenantDepartment());
        if(select!=null && select.size()>0){
            return select.get(0);
        }
        return null;
    }
 
    @Override
    public List<FinSysTenantDepartment> queryDataList(FinSysTenantDepartmentParam param) {
        StringBuilder sql = new StringBuilder("SELECT * FROM fin_sys_tenant_department WHERE 1 = 1");
        HashMap<String, Object> paramts = new HashMap<>();
        // 编号
        if (!StringUtils.isEmpty(param.getCode())) {
            sql.append(" and code =:code ");
            paramts.put("code", param.getCode());
        }
        List<FinSysTenantDepartment> select = this.select(sql.toString(), paramts, new FinSysTenantDepartment());
        return select;
    }
 
    /**
     * 根据部门和机构名查找对应的部门信息
     * @param tenantName
     * @param departmentName
     * @return
     */
    @Override
    public FinSysTenantDepartment queryIdByTenDepName(String tenantName, String departmentName ) {
        StringBuilder sql = new StringBuilder("SELECT * FROM fin_sys_tenant_department \n" +
                "WHERE TENANT_ID = ( SELECT id FROM fin_sys_tenant WHERE NAME = '"+tenantName+"' LIMIT 1 ) AND NAME = '"+departmentName+"' LIMIT 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        return this.get(sql.toString(), paramts, new FinSysTenantDepartment());
    }
 
}