ZzglController.java 27.2 KB
Newer Older
1 2 3 4
package cn.timer.api.controller.zzgl;

import java.util.ArrayList;
import java.util.List;
5
import java.util.stream.Collectors;
6 7 8

import javax.transaction.Transactional;

284718418@qq.com committed
9 10 11
import cn.timer.api.bean.kqmk.KqglAssoMonthPunchSummary;
import freemarker.template.utility.StringUtil;
import io.swagger.annotations.ApiParam;
12
import org.springframework.beans.factory.annotation.Autowired;
284718418@qq.com committed
13
import org.springframework.util.StringUtils;
14
import org.springframework.validation.annotation.Validated;
284718418@qq.com committed
15
import org.springframework.web.bind.annotation.*;
16 17 18 19 20

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
21
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
22
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
23
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
24

lal committed
25
import cn.hutool.core.bean.BeanUtil;
26
import cn.hutool.core.collection.CollectionUtil;
27 28 29 30
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
31
import cn.hutool.core.util.StrUtil;
32 33
import cn.timer.api.aspect.lang.annotation.Log;
import cn.timer.api.aspect.lang.enums.BusinessType;
ilal committed
34 35
import cn.timer.api.bean.admin.AdminMenuTemplate;
import cn.timer.api.bean.qyzx.QyzxAdminMenu;
36 37 38
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.bean.zzgl.ZzglAuth;
import cn.timer.api.bean.zzgl.ZzglBmgwM;
39 40
import cn.timer.api.bean.zzgl.ZzglMenu;
import cn.timer.api.bean.zzgl.ZzglPostMenu;
41 42
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
43
import cn.timer.api.config.enuminterface.YgEnumInterface;
ilal committed
44
import cn.timer.api.controller.kqgl.ClockInTool;
45
import cn.timer.api.controller.zzgl.service.ZzglBmgwMService;
46
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
47 48
import cn.timer.api.dao.zzgl.ZzglBmgwMMapper;
import cn.timer.api.dao.zzgl.ZzglLogDgjlMapper;
49 50
import cn.timer.api.dao.zzgl.ZzglMenuMapper;
import cn.timer.api.dao.zzgl.ZzglPostMenuMapper;
ilal committed
51
import cn.timer.api.dto.qyzx.MenuStructureDto;
lal committed
52
import cn.timer.api.dto.zzgl.DepartmentStaffDto;
53 54
import cn.timer.api.dto.zzgl.LogDgjlsDto;
import cn.timer.api.dto.zzgl.LogDgjlsQueryDto;
lal committed
55
import cn.timer.api.dto.zzgl.ObtainDepartmentDto;
56
import cn.timer.api.dto.zzgl.UpEmpDeptDto;
57
import cn.timer.api.dto.zzgl.ZzglPostMenuDto;
58 59 60 61 62 63 64 65 66 67 68 69
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@Api(tags = "2.组织管理")
@RestController
@Transactional
@RequestMapping(value = "/zzgl", produces = { "application/json" })
public class ZzglController {

	@Autowired
70
	ZzglBmgwMService zzglBmgwMService;
71

72
	@Autowired
73
	ZzglBmgwMMapper zzglBmgwMMapper;
74

75 76
	@Autowired
	ZzglPostMenuMapper zzglPostMenuMapper;
77 78

	@Autowired
79
	ZzglLogDgjlMapper zzglLogDgjlMapper;
80

81 82
	@Autowired
	YgglMainEmpMapper ygglMainEmpMapper;
83 84 85

	/**
	 * 架构树/架构图/导出
86
	 *
87 88 89 90 91 92 93 94 95 96 97
	 * @param
	 * @return
	 */
	@GetMapping(value = "/deptlist")
	@ApiOperation(value = "获取部门岗位", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<ZzglBmgwM>> selectlistdept(@CurrentUser UserBean userBean) {
		Integer orgCode = userBean.getOrgCode();
		List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
				.eq(ZzglBmgwM::getOrgCode, orgCode).list();
		return ResultUtil.data(zzglBmgwMs);
	}
98

99
	/**
100
	 * 获取部门岗位-升级版
101
	 *
102 103 104
	 * @param
	 * @return
	 */
105
	@GetMapping(value = "/deptlist_plus")
106 107
	@ApiOperation(value = "1.获取部门岗位-升级版", httpMethod = "GET", notes = "接口发布说明")
	@ApiOperationSupport(order = 1)
108
	public Result<List<Tree<String>>> deptlistPlus(@CurrentUser UserBean userBean) {
109 110 111
		Integer orgCode = userBean.getOrgCode();
		List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
				.eq(ZzglBmgwM::getOrgCode, orgCode).list();
112

113
		// 构建node列表
114 115 116 117
//		List<TreeNode<String>> nodeList = CollUtil.newArrayList();
//		zzglBmgwMs.forEach(z -> {
//			nodeList.add(new TreeNode<>(Convert.toStr(z.getId()), Convert.toStr(z.getUpId()), z.getName(), 0));
//		});
118

119 120 121 122 123 124 125 126 127
		//配置
		TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
		// 自定义属性名 都要默认值的
		treeNodeConfig.setIdKey("id");
		treeNodeConfig.setParentIdKey("upId");
		// 最大递归深度
//		treeNodeConfig.setDeep(10);

		//转换器
128
		List<Tree<String>> treeNodes = TreeUtil.build(zzglBmgwMs, "0", treeNodeConfig,
129
		        (treeNode, tree) -> {
130 131 132
		            tree.setId(Convert.toStr(treeNode.getId()));
		            tree.setParentId(Convert.toStr(treeNode.getUpId()));
//		            tree.setWeight(treeNode.getWeight());
133 134
		            tree.setName(treeNode.getName());
		            // 扩展属性 ...
135
		            tree.putExtra("leader", treeNode.getLeader());
tangzhaoqian committed
136
		            tree.putExtra("type", treeNode.getType());
137 138
//		            tree.putExtra("other", new Object());
		        });
139 140 141



tangzhaoqian committed
142 143 144
//		System.out.println(treeNodes);
//		System.out.println(treeNodes.size());
//		System.out.println(deep2(treeNodes));
145

146 147
		return ResultUtil.data(treeNodes);
	}
148 149 150 151 152 153 154 155 156 157 158 159 160 161

	@GetMapping(value = "/deptlist_ultra")
	@ApiOperation(value = "获取部门岗位", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<ZzglBmgwM>> deptlist_plusUltra(@CurrentUser UserBean userBean) {
		Integer orgCode = userBean.getOrgCode();
		List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
				.eq(ZzglBmgwM::getOrgCode, orgCode).list();
		zzglBmgwMs.forEach(z->{
			if(z.getType()==1){
				z.setUserList(new LambdaQueryChainWrapper<YgglMainEmp>(ygglMainEmpMapper).eq(YgglMainEmp::getBmgwId,z.getId()).list());
			}
		});
		return ResultUtil.data(zzglBmgwMs);
	}
tangzhaoqian committed
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
	// 非递归,利用树的层次遍历
//	public static int deep2(List<Tree<String>> treeNodes) {
//		if(treeNodes == null)
//			return 0;
//		int depth = 0;
//		for (Tree<String> tree : treeNodes) {
//			if (tree.getChildren() == null) {
//				depth = tree.size()-1 > depth ? tree.size()-1 : depth;
//				if (Convert.toInt(tree.get("type")) == 1) {
//					depth = depth > 1 ? depth - 1 : depth;
//				}
//				System.out.println("depth = "+ depth);
//			}else {
//				int temp = deep2(tree.getChildren());
//				depth = temp > depth ? temp : depth;
//				System.out.println("temp = "+ temp);
//			}
//		}
180
//
tangzhaoqian committed
181 182
//		return depth;
//	}
183

184 185
	/**
	 * 获取部门
186
	 *
187 188 189 190 191 192 193 194 195 196 197 198
	 * @param
	 * @return
	 */
	@GetMapping(value = "/depts_tree")
	@ApiOperation(value = "2.获取部门", httpMethod = "GET", notes = "接口发布说明")
	@ApiOperationSupport(order = 1)
	public Result<List<Tree<String>>> deptsOnlyone(@CurrentUser UserBean userBean) {
		Integer orgCode = userBean.getOrgCode();
		List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
				.eq(ZzglBmgwM::getOrgCode, orgCode).list();
		if (CollectionUtil.isNotEmpty(zzglBmgwMs)) {
			zzglBmgwMs = zzglBmgwMs.stream().filter(z -> z.getType() == 0).collect(Collectors.toList());
199

200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
			if (CollectionUtil.isNotEmpty(zzglBmgwMs)) {
				//配置
				TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
				// 自定义属性名 都要默认值的
				treeNodeConfig.setIdKey("id");
				treeNodeConfig.setParentIdKey("upId");

				//转换器
				List<Tree<String>> treeNodes = TreeUtil.build(zzglBmgwMs, "0", treeNodeConfig,
			        (treeNode, tree) -> {
			            tree.setId(Convert.toStr(treeNode.getId()));
			            tree.setParentId(Convert.toStr(treeNode.getUpId()));
			            tree.setName(treeNode.getName());
			            // 扩展属性 ...
			            tree.putExtra("leader", treeNode.getLeader());
			            tree.putExtra("type", treeNode.getType());
216

217
				});
218

219 220
				return ResultUtil.data(treeNodes);
			}
221

222
		}
223

224 225
		return ResultUtil.success();
	}
226

227
	@GetMapping(value = "/depts")
228 229
	@ApiOperation(value = "2.获取部门", httpMethod = "GET", notes = "接口发布说明")
	@ApiOperationSupport(order = 2)
230 231 232
	public Result<List<ZzglBmgwM>> selectdepts(@CurrentUser UserBean userBean) {
		Integer orgCode = userBean.getOrgCode();
		List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
233 234 235
				.eq(ZzglBmgwM::getOrgCode, orgCode)
				.eq(ZzglBmgwM::getType, YgEnumInterface.OrgType.DEPARTMENT)
				.list();
236 237
		return ResultUtil.data(zzglBmgwMs);
	}
238 239 240

	/**
	 * 岗位成员
241
	 *
242 243 244 245 246
	 * @param 部门岗位id
	 * @return
	 */
	@GetMapping(value = "/otherlistent/{id}")
	@ApiOperation(value = "获取岗位成员列表", httpMethod = "GET", notes = "接口发布说明")
284718418@qq.com committed
247
	public Result<List<YgglMainEmp>> selectOtherlistent(@CurrentUser UserBean userBean, @PathVariable Integer id, @ApiParam("过滤参数") @RequestParam(value = "param", required = false, defaultValue = "") String param) {
248 249 250 251 252 253 254
		Integer orgCode = userBean.getOrgCode();
		ArrayList<Integer> list = new ArrayList<Integer>();
		List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
				.eq(ZzglBmgwM::getOrgCode, orgCode).list();
		list.add(id);
		ZzglBmgwM.getDepts(list, id, zzglBmgwMs);

255 256 257
		ZzglBmgwM messsage = ZzglBmgwM.builder().build().selectOne(new QueryWrapper<ZzglBmgwM>().eq("id", id));
		Integer lead = messsage.getLeader(); // 获取部门或岗位领导id

258 259 260 261 262 263
		if (list == null || list.size() == 0) {
			return ResultUtil.error("部门信息不存在,请先添加部门!");
		} else {
			LambdaQueryWrapper<YgglMainEmp> ygglMainEmpsLambdaQueryWrapper = new LambdaQueryWrapper<>();
			ygglMainEmpsLambdaQueryWrapper
					.select(YgglMainEmp::getId, YgglMainEmp::getEmpNum, YgglMainEmp::getName, YgglMainEmp::getPhone,
284718418@qq.com committed
264 265 266 267
							YgglMainEmp::getBmgwId,YgglMainEmp::getCustomNum)
					.eq(YgglMainEmp::getOrgCode, orgCode)
					.and(i -> i.in(YgglMainEmp::getBmgwId, list.toArray()))
					.and(!StrUtil.hasBlank(param),w -> w.like(YgglMainEmp::getName, param).or().like(YgglMainEmp::getEmpNum, param).or().eq(YgglMainEmp::getPhone, param).or().like(YgglMainEmp::getCustomNum, param))
268
					.last(lead != null, "order by if (emp_num='" + lead + "',0,1)");
269 270 271 272 273 274 275
			List<YgglMainEmp> ygglMainEmps = YgglMainEmp.builder().build().selectList(ygglMainEmpsLambdaQueryWrapper);
			return ResultUtil.data(ygglMainEmps);
		}
	}

	/**
	 * 获取调岗记录(weng)
276
	 *
277 278 279 280 281
	 * @param 部门岗位id
	 * @return
	 */
	@PostMapping(value = "/listdgjl")
	@ApiOperation(value = "获取调岗记录(weng)", httpMethod = "POST", notes = "接口发布说明")
282 283
	public Result<Object> selectlistdgjl(@CurrentUser UserBean userBean,
			@RequestBody LogDgjlsQueryDto logDgjlsQueryDto) {
284 285 286 287 288 289 290 291 292 293
		Integer orgCode = userBean.getOrgCode();
		ArrayList<Integer> list = new ArrayList<Integer>();
		List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
				.eq(ZzglBmgwM::getOrgCode, orgCode).list();
		list.add(logDgjlsQueryDto.getDeptId());
		ZzglBmgwM.getDepts(list, logDgjlsQueryDto.getDeptId(), zzglBmgwMs);

		if (list == null || list.size() == 0) {
			return ResultUtil.error("部门信息不存在,请先添加部门!");
		} else {
294

295 296
			logDgjlsQueryDto.setDeptIdList(list);
			logDgjlsQueryDto.setOrgCode(orgCode);
297

298 299 300 301 302 303 304 305 306 307
			IPage<LogDgjlsDto> page = new Page<LogDgjlsDto>(
					logDgjlsQueryDto.getCurrentPage() == null ? 1 : logDgjlsQueryDto.getCurrentPage(),
					logDgjlsQueryDto.getTotalPage() == null ? 10 : logDgjlsQueryDto.getTotalPage());
			List<LogDgjlsDto> logDgjlDtos = zzglLogDgjlMapper.selectListdgjls(page, logDgjlsQueryDto);
			return ResultUtil.data(page, logDgjlDtos, "查询成功");
		}
	}

	/**
	 * 未设置岗位的成员
308
	 *
309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
	 * @return
	 */
	@GetMapping(value = "/listent")
	@ApiOperation(value = "未设置岗位的成员", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<YgglMainEmp>> selectlistent(@CurrentUser UserBean userBean) {
		Integer orgCode = userBean.getOrgCode();

		LambdaQueryWrapper<YgglMainEmp> ygglMainEmpsLambdaQueryWrapper = new LambdaQueryWrapper<>();
		ygglMainEmpsLambdaQueryWrapper
				.select(YgglMainEmp::getId, YgglMainEmp::getEmpNum, YgglMainEmp::getName, YgglMainEmp::getPhone)
				.eq(YgglMainEmp::getOrgCode, orgCode)
				.and(i -> i.isNull(YgglMainEmp::getBmgwId).or().eq(YgglMainEmp::getBmgwId, 0));
		// .and(lqw -> lqw.notIn(id != null,
		// YgglMainEmp::getBmgwId,Arrays.asList(id)).or().isNull(YgglMainEmp::getBmgwId))
		List<YgglMainEmp> ygglMainEmps = YgglMainEmp.builder().build().selectList(ygglMainEmpsLambdaQueryWrapper);
		// List<ZzglBmgwMEmpDto> zzglBmgwMEmpDtos =
		// zzglBmgwMMapper.selectOtherListByOrgCode(orgCode,id);
		return ResultUtil.data(ygglMainEmps);
	}

	/**
tangzhaoqian committed
330
	 * 添加/修改部门岗位
331
	 *
332 333 334 335
	 * @param
	 * @return
	 */
	@PostMapping(value = "/dept")
336 337
	@ApiOperation(value = "添加/修改部门", httpMethod = "POST", notes = "接口发布说明")
	@Log(title = "添加/修改-部门", businessType = BusinessType.INSERT_UPDATE)
338
	public Result<ZzglBmgwM> adddept(@CurrentUser UserBean userBean, @RequestBody ZzglBmgwM zzglBmgwM) {
339

340 341 342 343 344 345
		Integer count = zzglBmgwMMapper.selectCount(new QueryWrapper<ZzglBmgwM>().lambda()
				.eq(ZzglBmgwM::getOrgCode, userBean.getOrgCode()));
		if (count <= 0) {
			// 根部门upId 默认为0
			zzglBmgwM.setUpId(0);
		}
346
		ZzglBmgwM bmgwM = zzglBmgwMMapper.selectById(zzglBmgwM.getUpId());
347
		if(bmgwM !=null) {
348
			if (bmgwM.getType() != 0) {
349 350
				return ResultUtil.error("部门名称上级不能为岗位");
			}
351
		}
352
		if (zzglBmgwM.getLeader() == null && StrUtil.length(StrUtil.trim(zzglBmgwM.getName())) == 0)
353
			return ResultUtil.error("部门名称不能为空");
354

355 356
		Boolean notId = zzglBmgwM.getId() == null;
		if (notId && zzglBmgwM.getType() == null)
357
			zzglBmgwM.setType((Integer) 0);
358 359
			zzglBmgwM.setOrgCode(userBean.getOrgCode());
			zzglBmgwM.insertOrUpdate();
360

361
		return notId ? ResultUtil.data(zzglBmgwM) : ResultUtil.success();
362
	}
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390
	/**
	 * 添加/修改部门岗位
	 *
	 * @param
	 * @return
	 */
	@PostMapping(value = "/job")
	@ApiOperation(value = "添加/修改部门", httpMethod = "POST", notes = "接口发布说明")
	@Log(title = "添加/修改-部门", businessType = BusinessType.INSERT_UPDATE)
	public Result<ZzglBmgwM> addjob
	(@CurrentUser UserBean userBean, @RequestBody ZzglBmgwM zzglBmgwM) {



		if (zzglBmgwM.getLeader() == null && StrUtil.length(StrUtil.trim(zzglBmgwM.getName())) == 0)
			return ResultUtil.error("岗位名称不能为空");

		Boolean notId = zzglBmgwM.getId() == null;
		if (notId && zzglBmgwM.getType() == null)
			zzglBmgwM.setType((Integer) 1);
		zzglBmgwM.setOrgCode(userBean.getOrgCode());
		zzglBmgwM.insertOrUpdate();

		return notId ? ResultUtil.data(zzglBmgwM) : ResultUtil.success();
	}



391 392
	/**
	 * 删除部门岗位
393
	 *
394 395 396 397 398
	 * @param 部门岗位ids [1,2,3,4]
	 * @return
	 */
	@DeleteMapping(value = "/dept")
	@ApiOperation(value = "删除部门岗位", httpMethod = "DELETE", notes = "接口发布说明")
tangzhaoqian committed
399
	@Log(title = "删除-部门岗位", businessType = BusinessType.DELETE)
400 401
	public Result<Integer> deldepts(@CurrentUser UserBean userBean, @RequestBody List<Integer> ids) {
		YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build();
402

403
		zzglLogDgjlMapper.insertbydeldept(ids, userBean.getEmpNum());
404 405 406
		ygglMainEmp.update(new UpdateWrapper<YgglMainEmp>().lambda()
				.set(YgglMainEmp::getBmgwId, null)
				.in(YgglMainEmp::getBmgwId, ids));
407 408 409 410 411 412 413
		zzglBmgwMMapper.deleteBatchIds(ids);

		return ResultUtil.success();
	}

	/**
	 * 批量修改/删除员工部门
414
	 *
415 416 417 418 419 420 421 422 423
	 * @param 部门岗位id
	 * @return
	 */
	@PostMapping(value = "/empdept")
	@ApiOperation(value = "批量修改/删除员工部门", httpMethod = "POST", notes = "接口发布说明")
	public Result<Void> updatelistempdept(@CurrentUser UserBean userBean, @RequestBody UpEmpDeptDto upEmpDeptDto) {
		Integer dpetId = upEmpDeptDto.getDpetId();
		List<Integer> empNums = upEmpDeptDto.getEmpNum();
		YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build();
284718418@qq.com committed
424
		KqglAssoMonthPunchSummary kqglAssoMonthPunchSummary = KqglAssoMonthPunchSummary.builder().build();
425 426
		zzglLogDgjlMapper.insertbyaddemp(empNums, userBean.getEmpNum(), dpetId, userBean.getOrgCode(),
				dpetId == null || dpetId == 0 ? "岗位删除员工" : upEmpDeptDto.getIsdg() == null ? "岗位添加员工" : "员工调岗");
tangzhaoqian committed
427 428 429 430 431 432 433
		// 清楚 leader 主管标记
		if ((dpetId == null || dpetId == 0) || upEmpDeptDto.getIsdg() == null) {
			ZzglBmgwM.builder().leader(null).build()
				.update(new UpdateWrapper<ZzglBmgwM>().lambda()
						.eq(ZzglBmgwM::getOrgCode, userBean.getOrgCode())
						.in(ZzglBmgwM::getLeader, empNums));
		}
434

435
		ygglMainEmp.update(new UpdateWrapper<YgglMainEmp>().lambda()
284718418@qq.com committed
436
				.set(YgglMainEmp::getBmgwId, dpetId).set(YgglMainEmp::getBmgwName, upEmpDeptDto.getDept())
437
				.eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()).in(YgglMainEmp::getEmpNum, empNums));
284718418@qq.com committed
438 439 440 441 442 443 444
		// 调岗 同步部门 和 岗位信息 打卡月汇总
		if(!StringUtils.isEmpty(upEmpDeptDto.getIsdg()) && upEmpDeptDto.getIsdg().intValue()==1){
			kqglAssoMonthPunchSummary.update(new UpdateWrapper<KqglAssoMonthPunchSummary>().lambda()
					.set(KqglAssoMonthPunchSummary::getDept, upEmpDeptDto.getDept()).set(KqglAssoMonthPunchSummary::getPost, upEmpDeptDto.getPost())
					.eq(KqglAssoMonthPunchSummary::getOrgCode, userBean.getOrgCode()).in(KqglAssoMonthPunchSummary::getNum, empNums)
			);
		}
445 446
		return ResultUtil.success();
	}
447

448 449
	/**
	 * 岗位权限
450
	 *
451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468
	 * @param 部门岗位id
	 * @return
	 */
	@GetMapping(value = "/auth/{id}")
	@ApiOperation(value = "获取岗位岗位权限", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<ZzglAuth>> auth(@CurrentUser UserBean userBean, @PathVariable Integer id) {
		Integer orgCode = userBean.getOrgCode();
		ArrayList<Integer> list = new ArrayList<Integer>();
		List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
				.eq(ZzglBmgwM::getOrgCode, orgCode).list();
				ZzglBmgwM.getupDepts(list, id, zzglBmgwMs);
		if (list == null || list.size() == 0) {
			return ResultUtil.error("部门信息不存在,请先添加部门!");
		} else {
			LambdaQueryWrapper<ZzglAuth> wp = new LambdaQueryWrapper<>();
			wp.select(ZzglAuth::getMenuId, ZzglAuth::getBmgwId).eq(ZzglAuth::getOrgCode, orgCode)
					.and(i -> i.in(ZzglAuth::getBmgwId, list.toArray()));
			List<ZzglAuth> zas = ZzglAuth.builder().build().selectList(wp);
469 470 471



ilal committed
472 473 474 475 476 477 478 479 480 481 482 483 484 485
			List<MenuStructureDto> mestrs = new ArrayList<MenuStructureDto>();
			List<QyzxAdminMenu> qyme = QyzxAdminMenu.builder().build().selectList(new QueryWrapper<QyzxAdminMenu>().lambda().eq(QyzxAdminMenu::getOrgCode, userBean.getOrgCode()).orderByAsc(QyzxAdminMenu::getSortNumber));
			String[] zdy = new String[qyme.size()];
			int i  = 0;
			for(QyzxAdminMenu me : qyme) {
				MenuStructureDto metr = MenuStructureDto.builder().build();
				metr.setMenuCode(me.getMenuCode());
				metr.setMenuName(me.getMenuName());
				metr.setSortNumber(me.getSortNumber());
				AdminMenuTemplate adte = AdminMenuTemplate.builder().build().selectOne(new QueryWrapper<AdminMenuTemplate>().lambda().eq(AdminMenuTemplate::getMenuCode, me.getMenuCode()));
				metr.setPath(adte.getPath());
				mestrs.add(metr);
				zdy[i] = me.getMenuCode();
				i++;
486
			}
ilal committed
487 488 489
			//
			List<AdminMenuTemplate> adtes = AdminMenuTemplate.builder().build().selectList(new QueryWrapper<AdminMenuTemplate>().lambda().eq(AdminMenuTemplate::getEnable, 1).orderByAsc(AdminMenuTemplate::getSortNumber));
			for(AdminMenuTemplate adm : adtes) {
490

ilal committed
491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508
				if(!ClockInTool.useArrayUtils(ClockInTool.deleteArrayNull(zdy), adm.getMenuCode())) {
					if(adm.getDistribution() == 0 && userBean.getOrgCode() == 3) {
						MenuStructureDto metr = MenuStructureDto.builder().build();
						metr.setMenuCode(adm.getMenuCode());
						metr.setMenuName(adm.getMenuName());
						metr.setSortNumber(adm.getSortNumber());
						metr.setPath(adm.getPath());
						mestrs.add(metr);
					}else if(adm.getDistribution() == 1) {
						MenuStructureDto metr = MenuStructureDto.builder().build();
						metr.setMenuCode(adm.getMenuCode());
						metr.setMenuName(adm.getMenuName());
						metr.setSortNumber(adm.getSortNumber());
						metr.setPath(adm.getPath());
						mestrs.add(metr);
					}
				}
			}
509

ilal committed
510 511 512 513 514 515 516 517 518 519 520 521
			List<ZzglAuth> zas_ = new ArrayList<ZzglAuth>();
			String[] qhf = new String[mestrs.size()];
			int y = 0;
			for(MenuStructureDto metu : mestrs) {
				ZzglAuth zd = ZzglAuth.builder().build();
				 for(ZzglAuth zg : zas) {
					if(metu.getPath().equals(zg.getMenuId())) {
						zd.setBmgwId(zg.getBmgwId());
						zd.setMenuId(zg.getMenuId());
						zas_.add(zd);
						qhf[y] = zg.getMenuId();
						y++;
522
						break;
ilal committed
523 524 525
					}
				}
			}
526

ilal committed
527 528 529 530 531 532 533 534
			for(ZzglAuth zg : zas) {
				if(!ClockInTool.useArrayUtils(ClockInTool.deleteArrayNull2(qhf), zg.getMenuId())) {
					ZzglAuth zd = ZzglAuth.builder().build();
					zd.setBmgwId(zg.getBmgwId());
					zd.setMenuId(zg.getMenuId());
					zas_.add(zd);
				}
			}
535 536


ilal committed
537
			return ResultUtil.data(zas_);
538 539 540 541 542
		}
	}

	/**
	 * 批量修改/删除岗位权限
543
	 *
544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562
	 * @param 部门岗位id
	 * @param 菜单ids
	 * @return
	 */
	@PostMapping(value = "/auth/{id}")
	@ApiOperation(value = "批量修改/删除岗位权限", httpMethod = "POST", notes = "接口发布说明")
	public Result<Void> auth(@CurrentUser UserBean userBean, @PathVariable Integer id, @RequestBody List<String> ids) {
		Integer orgCode = userBean.getOrgCode();
		ZzglAuth.builder().build().delete(
				new QueryWrapper<ZzglAuth>().lambda().eq(ZzglAuth::getOrgCode, orgCode).eq(ZzglAuth::getBmgwId, id));
		ids.forEach(o -> {
			ZzglAuth za = ZzglAuth.builder().build();
			za.setBmgwId(id);
			za.setOrgCode(orgCode);
			za.setMenuId(o);
			za.insert();
		});
		return ResultUtil.success();
	}
563

564 565
	@Autowired
	private ZzglMenuMapper zzglMenuMapper;
566

567 568
	/**
	 * 获取-菜单权限列表
569
	 *
570 571 572 573 574
	 * @return
	 */
	@GetMapping(value = "/menu")
	@ApiOperation(value = "获取-菜单权限列表", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<ZzglMenu>> selectMenu(@CurrentUser UserBean userBean) {
575

576
		List<ZzglMenu> list = zzglMenuMapper.selectList(null);
577

578 579
		return ResultUtil.data(list);
	}
580

581 582
	/**
	 * 获取-菜单权限-搜索
583
	 *
584 585 586 587 588
	 * @return
	 */
//	@PostMapping(value = "/querymenu")
//	@ApiOperation(value = "获取-菜单权限-搜索", httpMethod = "POST", notes = "接口发布说明")
//	public Result<List<Tree<String>>> queryMenu(@CurrentUser UserBean userBean,@RequestBody ZzglMenuQueryDto zzglMenuQueryDto) {
589
//
590
//		List<ZzglMenu> list = zzglMenuMapper.queryList(zzglMenuQueryDto);
591
//
592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618
//		//配置
//		TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
//		// 自定义属性名 都要默认值的
////		treeNodeConfig.setIdKey("id");
////		treeNodeConfig.setParentIdKey("upId");
//		treeNodeConfig.setNameKey("menuName");
//		// 最大递归深度
////		treeNodeConfig.setDeep(10);
//
//		//转换器
//		List<Tree<String>> treeNodes = TreeUtil.build(list, "0", treeNodeConfig,
//		        (treeNode, tree) -> {
//		            tree.setId(Convert.toStr(treeNode.getMenuId()));
//		            tree.setParentId(Convert.toStr(treeNode.getParentId()));
////				            tree.setWeight(treeNode.getWeight());
//		            tree.setName(treeNode.getMenuName());
//		            // 扩展属性 ...
//		            tree.putExtra("icon", treeNode.getIcon());
//		            tree.putExtra("isFrame", treeNode.getIsFrame());
//		            tree.putExtra("menuType", treeNode.getMenuType());
//		            tree.putExtra("orderNum", treeNode.getOrderNum());
//		            tree.putExtra("path", treeNode.getPath());
//		            tree.putExtra("perms", treeNode.getPerms());
//		            tree.putExtra("remark", treeNode.getRemark());
//		            tree.putExtra("visible", treeNode.getVisible());
////				    tree.putExtra("other", new Object());
//		        });
619
//
620 621
//		return ResultUtil.data(treeNodes);
//	}
622

623 624
	/**
	 * 新增-菜单权限
625
	 *
626 627 628 629 630 631
	 * @param 部门岗位id
	 * @return
	 */
	@PostMapping(value = "/menu")
	@ApiOperation(value = "新增-菜单权限", httpMethod = "POST", notes = "接口发布说明")
	public Result<List<ZzglMenu>> insertPostMenus(@Validated @RequestBody ZzglMenu zzglMenu) {
632

633 634 635 636 637
		Integer conut = zzglMenuMapper.selectCount(new QueryWrapper<ZzglMenu>().lambda()
				.eq(ZzglMenu::getMenuId, zzglMenu.getParentId()));
		if (conut <= 0) {
			return ResultUtil.error("上级权限不存在!");
		}
638

639 640
		return zzglMenu.insert() ? ResultUtil.success() : ResultUtil.error();
	}
641

642 643
	/**
	 * 删除-菜单权限
644
	 *
645 646 647 648 649 650
	 * @param 部门岗位id
	 * @return
	 */
	@DeleteMapping(value = "/menu/{id}")
	@ApiOperation(value = "删除-菜单权限", httpMethod = "DELETE", notes = "接口发布说明")
	public Result<List<ZzglMenu>> deletePostMenus(@Validated @RequestBody Integer id) {
651

652 653
		return zzglMenuMapper.deleteById(id) > 0 ? ResultUtil.success() : ResultUtil.error();
	}
654

655 656
	/**
	 * 修改-菜单权限
657
	 *
658 659 660 661 662 663
	 * @param 部门岗位id
	 * @return
	 */
	@PutMapping(value = "/menu/{id}")
	@ApiOperation(value = "修改-菜单权限", httpMethod = "PUT", notes = "接口发布说明")
	public Result<List<ZzglMenu>> updatePostMenus(@Validated @RequestBody ZzglMenu zzglMenu) {
664

665 666
		return zzglMenu.updateById() ? ResultUtil.success() : ResultUtil.error();
	}
667

668 669
	/**
	 * 获取-该岗位的菜单权限
670
	 *
671 672 673 674 675 676
	 * @param 部门岗位id
	 * @return
	 */
	@GetMapping(value = "/menu/{id}")
	@ApiOperation(value = "获取-该岗位的菜单权限", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<Integer>> selectMenuByPostId(@CurrentUser UserBean userBean,@PathVariable Integer id) {
677

678 679
		return ResultUtil.data(zzglBmgwMService.selectMenuByPostId(id));
	}
680

681 682
	/**
	 * 修改-该岗位的菜单权限
683
	 *
684 685 686 687 688 689
	 * @param 部门岗位id
	 * @return
	 */
	@PutMapping(value = "/post_menu")
	@ApiOperation(value = "修改-该岗位的菜单权限", httpMethod = "PUT", notes = "接口发布说明")
	public Result<List<ZzglMenu>> updatePostMenus(@CurrentUser UserBean userBean,@RequestBody ZzglPostMenuDto zzglPostMenuDto) {
690

691 692 693
		Integer delCount = zzglPostMenuMapper.delete(new QueryWrapper<ZzglPostMenu>().lambda()
				.eq(ZzglPostMenu::getBmgwId, zzglPostMenuDto.getId()));
		Integer updateCount = zzglPostMenuMapper.insertPostMenus(zzglPostMenuDto.getId(),zzglPostMenuDto.getMenus());
694

695 696
		return ResultUtil.success();
	}
697 698


lal committed
699 700 701 702 703
	@GetMapping(value = "/appdeptlist")
	@ApiOperation(value = "APP获取部门岗位", httpMethod = "GET", notes = "接口发布说明")
	public Result<Object> selectapplistdept(@CurrentUser UserBean userBean) {
		Integer orgCode = userBean.getOrgCode();
		List<ObtainDepartmentDto> tmen = new ArrayList<ObtainDepartmentDto>();
704

lal committed
705 706 707 708 709
		List<ZzglBmgwM> zzglbmgwms = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
				.eq(ZzglBmgwM::getOrgCode, userBean.getOrgCode()).eq(ZzglBmgwM::getType, 0).list();
		for(ZzglBmgwM gw : zzglbmgwms) {
			ObtainDepartmentDto tm = ObtainDepartmentDto.builder().build();
			BeanUtil.copyProperties(gw, tm);
710

lal committed
711 712
			List<DepartmentStaffDto> destff = ygglMainEmpMapper.DepartmentStaff(orgCode,gw.getId());
			tm.setUser(destff);
713

lal committed
714 715
			tmen.add(tm);
		}
716

lal committed
717 718
		return ResultUtil.data(tmen);
	}
719
}