JxglController.java 68.6 KB
Newer Older
1 2 3
package cn.timer.api.controller.jxgl;

import java.util.List;
4
import java.util.stream.Collectors;
5

tangzhaoqian committed
6 7
import javax.validation.constraints.NotNull;

8 9 10
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
11 12 13
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
14
import org.springframework.web.bind.annotation.PostMapping;
15
import org.springframework.web.bind.annotation.PutMapping;
16 17
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
tangzhaoqian committed
18
import org.springframework.web.bind.annotation.RequestParam;
19 20
import org.springframework.web.bind.annotation.RestController;

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

import cn.hutool.core.bean.BeanUtil;
29 30
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
31
import cn.hutool.core.util.ObjectUtil;
32
import cn.timer.api.aspect.lang.annotation.Role;
33 34 35
import cn.timer.api.bean.jxgl.JxglAppraisal;
import cn.timer.api.bean.jxgl.JxglAppraisalAssessment;
import cn.timer.api.bean.jxgl.JxglAppraisalIndicators;
tangzhaoqian committed
36
import cn.timer.api.bean.jxgl.JxglAppraisalIndicatorsAssessment;
37
import cn.timer.api.bean.jxgl.JxglAppraisalIndicatorsT;
38
import cn.timer.api.bean.jxgl.JxglAppraisalItem;
39
import cn.timer.api.bean.jxgl.JxglAppraisalItemT;
40
import cn.timer.api.bean.jxgl.JxglAppraisalLog;
41
import cn.timer.api.bean.jxgl.JxglAppraisalT;
42
import cn.timer.api.bean.jxgl.JxglBasicSetting;
43
import cn.timer.api.bean.jxgl.JxglPerformanceAppraisal;
44
import cn.timer.api.bean.jxgl.JxglPerformanceRating;
45 46 47
import cn.timer.api.bean.jxgl.JxglProcessNode;
import cn.timer.api.bean.spmk.SpmkApproveSummary;
import cn.timer.api.bean.yggl.YgglMainEmp;
tangzhaoqian committed
48
import cn.timer.api.bean.zzgl.ZzglBmgwM;
49 50
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
51 52
import cn.timer.api.config.enuminterface.JxglEnumInterface.AppraisalLogType;
import cn.timer.api.config.enuminterface.JxglEnumInterface.AppraisalSts;
tangzhaoqian committed
53
import cn.timer.api.config.enuminterface.JxglEnumInterface.AssessmentType;
54 55
import cn.timer.api.config.enuminterface.JxglEnumInterface.BeingAppraisalSts;
import cn.timer.api.config.enuminterface.JxglEnumInterface.BeingAppraisalType;
56
import cn.timer.api.config.enuminterface.JxglEnumInterface.ExecuteType;
tangzhaoqian committed
57 58
import cn.timer.api.config.enuminterface.JxglEnumInterface.IndicatorsType;
import cn.timer.api.config.enuminterface.JxglEnumInterface.PerformanceAppraisalSts;
59 60 61
import cn.timer.api.config.enuminterface.JxglEnumInterface.ProcessNodeSts;
import cn.timer.api.config.enuminterface.JxglEnumInterface.ProcessType;
import cn.timer.api.config.exception.CustomException;
tangzhaoqian committed
62
import cn.timer.api.config.validation.ValidList;
63 64 65
import cn.timer.api.controller.yggl.service.YgglService;
import cn.timer.api.controller.zzgl.service.ZzglBmgwMService;
import cn.timer.api.dao.jxgl.JxglAppraisalAssessmentMapper;
tangzhaoqian committed
66
import cn.timer.api.dao.jxgl.JxglAppraisalIndicatorsAssessmentMapper;
67
import cn.timer.api.dao.jxgl.JxglAppraisalIndicatorsMapper;
68
import cn.timer.api.dao.jxgl.JxglAppraisalIndicatorsTMapper;
69
import cn.timer.api.dao.jxgl.JxglAppraisalItemMapper;
70
import cn.timer.api.dao.jxgl.JxglAppraisalItemTMapper;
71 72
import cn.timer.api.dao.jxgl.JxglAppraisalLogMapper;
import cn.timer.api.dao.jxgl.JxglAppraisalMapper;
73
import cn.timer.api.dao.jxgl.JxglAppraisalTMapper;
74
import cn.timer.api.dao.jxgl.JxglBasicSettingMapper;
75
import cn.timer.api.dao.jxgl.JxglPerformanceAppraisalMapper;
76
import cn.timer.api.dao.jxgl.JxglPerformanceRatingMapper;
77
import cn.timer.api.dao.jxgl.JxglProcessNodeMapper;
78
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
tangzhaoqian committed
79 80
import cn.timer.api.dao.zzgl.ZzglBmgwMMapper;
import cn.timer.api.dto.jxgl.AppraisalAssessment;
81 82
import cn.timer.api.dto.jxgl.AppraisalDetail;
import cn.timer.api.dto.jxgl.AppraisalQuery;
tangzhaoqian committed
83 84 85
import cn.timer.api.dto.jxgl.AppraisalReject;
import cn.timer.api.dto.jxgl.AppraisalUpdate;
import cn.timer.api.dto.jxgl.AppraisalUpdateSts;
86
import cn.timer.api.dto.jxgl.BeingAppraisalPerson;
87 88
import cn.timer.api.dto.jxgl.EmpAppraisalQuery;
import cn.timer.api.dto.jxgl.EmpPerformanceQuery;
tangzhaoqian committed
89
import cn.timer.api.dto.jxgl.MyPerformance;
90 91
import cn.timer.api.dto.jxgl.PerformanceAppraisal;
import cn.timer.api.dto.jxgl.PerformanceAppraisalQuery;
92
import cn.timer.api.dto.jxgl.ProcessNode;
93
import cn.timer.api.dto.jxgl.ProcessNodeUpdate;
94 95
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
96
import cn.timer.api.utils.StreamUtils;
97 98 99 100 101 102
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@Api(tags = "3.1绩效管理")
@RestController
@Transactional(rollbackFor = Exception.class)
103
@RequestMapping(value = "/jxgl", produces = { "application/json", "multipart/form-data" })
104 105 106
public class JxglController {

	@Autowired
tangzhaoqian committed
107
	private ZzglBmgwMMapper zzglBmgwMMapper;
108

tangzhaoqian committed
109
	@Autowired
110
	private JxglBasicSettingMapper jxglBasicSettingMapper;
111

112 113
	@Autowired
	private JxglPerformanceRatingMapper jxglPerformanceRatingMapper;
114

115 116
	@Autowired
	private JxglAppraisalTMapper jxglAppraisalTMapper;
117

118 119
	@Autowired
	private JxglAppraisalIndicatorsTMapper jxglAppraisalIndicatorsTMapper;
120

121 122
	@Autowired
	private JxglAppraisalItemTMapper jsxglAppraisalItemTMapper;
123

tangzhaoqian committed
124 125
	@Autowired
	private JxglAppraisalAssessmentMapper jxglAppraisalAssessmentMapper;
126

tangzhaoqian committed
127 128
	@Autowired
	private JxglAppraisalIndicatorsAssessmentMapper jxglAppraisalIndicatorsAssessmentMapper;
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152

	@Autowired
	private ZzglBmgwMService zzglBmgwMService;

	@Autowired
	private YgglService ygglService;

	@Autowired
	private JxglPerformanceAppraisalMapper jxglPerformanceAppraisalMapper;

	@Autowired
	private JxglAppraisalMapper jxglAppraisalMapper;

	@Autowired
	private JxglAppraisalIndicatorsMapper jxglAppraisalIndicatorsMapper;

	@Autowired
	private JxglAppraisalLogMapper jxglAppraisalLogMapper;

	@Autowired
	private YgglMainEmpMapper ygglMainEmpMapper;
	
	@Autowired
	private JxglProcessNodeMapper jxglProcessNodeMapper;
tangzhaoqian committed
153
	
154 155 156 157
	@Autowired
	private JxglAppraisalItemMapper jxglAppraisalItemMapper;

	// TODO 基础设置
158 159 160 161 162 163
	/**
	 * 新增或编辑-基础设置
	 */
	@PostMapping(value = "/save_basic_setting")
	@ApiOperation(value = "1.新增或编辑-基础设置", httpMethod = "POST", notes = "新增或编辑-审批模板组")
	@ApiOperationSupport(order = 1)
164
	@Role
165 166
	public Result<Object> saveAtg(@CurrentUser UserBean userBean, @Validated @RequestBody JxglBasicSetting basicSetting)
			throws Exception {
167
		Integer orgCode = userBean.getOrgCode();
168

169
		List<JxglPerformanceRating> listPr = basicSetting.getPerformanceRatings();
170 171
		if (listPr != null) {
			for (JxglPerformanceRating pr : listPr) {
172
				if (pr.getSectionMaxScore() > basicSetting.getMaxScore()) {
173 174 175
					return ResultUtil.error("区间值不能超过最高分");
				} else if (pr.getSectionMinScore() >= pr.getSectionMaxScore()) {
					return ResultUtil.error("区间值设置不正确");
176 177 178 179
				}
			}
		}
		JxglBasicSetting bS = jxglBasicSettingMapper.selectOne(new QueryWrapper<JxglBasicSetting>().lambda()
180
				.select(JxglBasicSetting::getId).eq(JxglBasicSetting::getOrgCode, orgCode));
181 182 183 184 185
		if (bS != null) {
			// 删除 绩效等级
			jxglPerformanceRatingMapper.delete(new QueryWrapper<JxglPerformanceRating>().lambda()
					.eq(JxglPerformanceRating::getBasicSettingId, bS.getId()));
			// 删除 基础设置
186 187
			jxglBasicSettingMapper
					.delete(new QueryWrapper<JxglBasicSetting>().lambda().eq(JxglBasicSetting::getOrgCode, orgCode));
188
		}
189

190 191 192 193 194 195 196 197 198 199
		basicSetting.setOrgCode(orgCode);
		basicSetting.insert();
		if (listPr != null && listPr.size() > 0) {
			listPr.stream().forEach(pr -> pr.setBasicSettingId(basicSetting.getId()));
			int i = jxglPerformanceRatingMapper.insertList(listPr);
		}

		return ResultUtil.success();

	}
200

201 202 203 204 205 206
	/**
	 * 查询-基础设置
	 */
	@GetMapping(value = "/select_basic_setting")
	@ApiOperation(value = "2.查询-基础设置", httpMethod = "GET", notes = "查询-基础设置")
	@ApiOperationSupport(order = 2)
207
	@Role
208 209
	public Result<Object> selectAT(@CurrentUser UserBean userBean) {

210 211 212
		JxglBasicSetting bS = jxglBasicSettingMapper.selectAll(userBean.getOrgCode());

		return ResultUtil.data(bS);
213

214
	}
215 216

	// TODO 考核模板
217 218 219 220 221 222
	/**
	 * 新增或编辑-考核模板
	 */
	@PostMapping(value = "/save_appraisal_t")
	@ApiOperation(value = "3.新增或编辑-考核模板", httpMethod = "POST", notes = "新增或编辑-考核模板")
	@ApiOperationSupport(order = 3)
223
	@Role
224 225 226 227 228
	public Result<Object> saveAtg(@CurrentUser UserBean userBean, @Validated @RequestBody JxglAppraisalT jxglAppraisalT)
			throws Exception {

		if (jxglAppraisalT.getId() != null && jxglAppraisalT.selectCount(
				new QueryWrapper<JxglAppraisalT>().lambda().eq(JxglAppraisalT::getId, jxglAppraisalT.getId())) > 0) {
229
			jxglAppraisalT.updateById();
230
		} else {
231
			jxglAppraisalT.setOrgCode(userBean.getOrgCode());
232 233 234
			jxglAppraisalT.insert();
		}
		LambdaQueryWrapper<JxglAppraisalIndicatorsT> q = new QueryWrapper<JxglAppraisalIndicatorsT>().lambda()
235 236 237 238 239 240 241 242 243
				.eq(JxglAppraisalIndicatorsT::getAppraisalTId, jxglAppraisalT.getId());

		List<JxglAppraisalIndicatorsT> listAIT = jxglAppraisalIndicatorsTMapper
				.selectList(q.select(JxglAppraisalIndicatorsT::getId));

		List<Integer> listAITId = listAIT != null && listAIT.size() > 0
				? listAIT.stream().map(JxglAppraisalIndicatorsT::getId).collect(Collectors.toList())
				: null;

244 245 246 247 248 249 250
		// 删除 原 考核指标模板
		jxglAppraisalIndicatorsTMapper.delete(q);
		// 删除 原 考核项模板
		if (listAITId != null) {
			jsxglAppraisalItemTMapper.delete(new QueryWrapper<JxglAppraisalItemT>().lambda()
					.in(JxglAppraisalItemT::getAppraisalIndicatorsTId, listAITId));
		}
251

252
		List<JxglAppraisalIndicatorsT> aITs = jxglAppraisalT.getAppraisalIndicatorsTs();
253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
		
		if (aITs != null && aITs.size() > 0) {
			for (JxglAppraisalIndicatorsT aIT : aITs) {
				
				if (aIT.getIsEditWeight() == null) {
					throw new CustomException("权重编辑权限未设置");
				}
				if (aIT.getType() == null) {
					throw new CustomException("指标类型未设置");
				}
				aIT.setAppraisalTId(jxglAppraisalT.getId());
				// 新增 考核指标模板
				if (aIT.insert()) {
					List<JxglAppraisalItemT> aItemTs = aIT.getAppraisalItemTs();
					if (aItemTs != null && aItemTs.size() > 0) {
						// 批量新增 考核项模板
						aItemTs.stream().forEach(aItemT -> aItemT.setAppraisalIndicatorsTId(aIT.getId()));
						int c = jsxglAppraisalItemTMapper.insertList(aItemTs);
					}
				} else {
					throw new Exception();
274
				}
275

276 277 278
			}
		}
		return ResultUtil.success();
279
	}
280

281 282 283
	/**
	 * 查询-考核模板-列表
	 */
tangzhaoqian committed
284 285
	@PostMapping(value = "/selects_appraisal_t")
	@ApiOperation(value = "4.查询-考核模板-列表", httpMethod = "POST", notes = "查询-考核模板-列表")
286
	@ApiOperationSupport(order = 4)
287
	@Role
288 289 290 291 292 293 294
	public Result<Object> selectListAT(@CurrentUser UserBean userBean, @RequestBody cn.timer.api.utils.Page page) {

		IPage<JxglAppraisalT> p = new Page<JxglAppraisalT>(page.getCurrentPage(), page.getTotalPage());

		IPage<JxglAppraisalT> pageAT = jxglAppraisalTMapper.selectPage(p,
				new QueryWrapper<JxglAppraisalT>().lambda().eq(JxglAppraisalT::getOrgCode, userBean.getOrgCode()));

295
		List<JxglAppraisalT> listAT = pageAT.getRecords();
296

297
		return ResultUtil.data(pageAT, listAT);
298

299
	}
300

301 302 303 304 305 306
	/**
	 * 查询-考核模板-详情
	 */
	@GetMapping(value = "/selects_appraisal_t/{id}")
	@ApiOperation(value = "5.查询-考核模板-详情", httpMethod = "GET", notes = "查询-考核模板-详情")
	@ApiOperationSupport(order = 5)
307
	@Role
308 309
	public Result<Object> selectAT(@CurrentUser UserBean userBean, @PathVariable Integer id) {

310
		JxglAppraisalT aT = jxglAppraisalTMapper.selectDetailById(id);
311

312
		return ResultUtil.data(aT);
313

314
	}
315

316 317 318 319 320 321
	/**
	 * 删除-考核模板
	 */
	@DeleteMapping(value = "/del_appraisal_t/{id}")
	@ApiOperation(value = "6.删除-考核模板", httpMethod = "DELETE", notes = "删除-考核模板")
	@ApiOperationSupport(order = 6)
322
	@Role
323 324 325
	public Result<Object> delAT(@CurrentUser UserBean userBean, @PathVariable Integer id) throws Exception {

		jxglAppraisalTMapper.delete(new QueryWrapper<JxglAppraisalT>().lambda().eq(JxglAppraisalT::getId, id)
326
				.eq(JxglAppraisalT::getOrgCode, userBean.getOrgCode()));
327 328

		return ResultUtil.success();
329

330
	}
331

332 333 334 335 336 337
	/**
	 * 新增-绩效考核
	 */
	@PostMapping(value = "/save_performance_appraisal")
	@ApiOperation(value = "7.新增-绩效考核", httpMethod = "POST", notes = "新增-绩效考核")
	@ApiOperationSupport(order = 7)
338 339
	public Result<Object> savePA(@CurrentUser UserBean userBean,
			@Validated @RequestBody PerformanceAppraisal performanceAppraisal) throws Exception {
340
		Integer orgCode = userBean.getOrgCode();
341
		JxglPerformanceAppraisal pA = JxglPerformanceAppraisal.builder().build();
342 343
		BeanUtil.copyProperties(performanceAppraisal, pA, "processNode", "beingAppraisalPerson", "appraisalTId");

344 345
		List<ProcessNode> listPN = performanceAppraisal.getProcessNode();
		List<BeingAppraisalPerson> listBAP = performanceAppraisal.getBeingAppraisalPerson();
tangzhaoqian committed
346 347 348
		pA.setOrgCode(orgCode);
		pA.setProcessNode(ObjectUtil.serialize(listPN));
		pA.setBeingAppraisalPerson(ObjectUtil.serialize(listBAP));
349

350
		// 被考核人员
351
		List<Integer> listEmpId = listBAP.stream()
352 353 354
				.filter(bAP -> BeingAppraisalType.EMPLOYEE.getType().equals(bAP.getType())
						&& BeingAppraisalSts.NEED.getType().equals(bAP.getSts()))
				.map(BeingAppraisalPerson::getId).collect(Collectors.toList());
355

356 357
		// 被考核部门id
		List<Integer> listDeptId = listBAP.stream()
358 359
				.filter(bAP -> BeingAppraisalType.DEPARTMENT.getType().equals(bAP.getType()))
				.map(BeingAppraisalPerson::getId).collect(Collectors.toList());
360
		List<YgglMainEmp> listEmp2 = ListUtil.toList();
361
		
362 363 364 365 366
		for (Integer deptId : listDeptId) {
			CollUtil.addAll(listEmp2, zzglBmgwMService.selectOtherlistent(userBean.getOrgCode(), deptId));
		}
		if (!CollUtil.isEmpty(listEmp2)) {
			// 员工信息数据 去重
367 368
			List<Integer> listEmp2Id = listEmp2.stream().filter(StreamUtils.distinctByKey(e -> e.getEmpNum()))
					.map(YgglMainEmp::getEmpNum).collect(Collectors.toList());
369 370 371
			// 合并 集合
			CollUtil.addAll(listEmpId, listEmp2Id);
		}
372

373 374
		// 无需被考核人id
		List<Integer> listNotEmpId = listBAP.stream()
375 376 377 378
				.filter(bAP -> BeingAppraisalType.EMPLOYEE.getType().equals(bAP.getType())
						&& BeingAppraisalSts.NOT_NEED.getType().equals(bAP.getSts()))
				.map(BeingAppraisalPerson::getId).collect(Collectors.toList());

379 380
		// 去重+过滤掉 无需被考核人id
		listEmpId = listEmpId.stream().filter(e -> !listNotEmpId.contains(e)).distinct().collect(Collectors.toList());
381
		pA.setAppraisalPersonNum(listEmpId.size());
382
		// 新增 绩效考核
383
		pA.insert();
384 385 386 387 388
		// 考核模板
		JxglAppraisalT aT = jxglAppraisalTMapper.selectById(performanceAppraisal.getAppraisalTId());
		if (aT == null) {
			throw new CustomException("考核模板不存在");
		}
389

390 391 392 393 394
		JxglProcessNode processNode = JxglProcessNode.builder().build();
		JxglAppraisal appraisal = JxglAppraisal.builder().build();
		JxglAppraisalIndicators appraisalIndicators = JxglAppraisalIndicators.builder().build();
		JxglAppraisalItem appraisalItem = JxglAppraisalItem.builder().build();
		JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
395 396

		System.out.println("listEmpId----" + listEmpId);
397 398 399 400 401 402 403 404 405 406
		for (Integer bAP : listEmpId) {
			// 考核
			appraisal.setPerformanceAppraisalId(pA.getId());
			appraisal.setEmpNum(bAP);
			appraisal.setName(aT.getName());
			appraisal.setAppraisalExplain(aT.getAppraisalExplain());
			appraisal.setSts(AppraisalSts.TARGET_FILL_IN.getType());
			// 新增 考核
			appraisal.insert();
			System.out.println("新增 考核:" + appraisal);
407

408 409 410 411 412 413 414 415 416 417 418
			listPN.stream().forEach(pN -> {
				Integer executeType = pN.getExecuteType();
				// 流程节点
				processNode.setAppraisalId(appraisal.getId());
				processNode.setExecuteType(executeType);
				processNode.setLeaderTier(pN.getLeaderTier());
				processNode.setName(ExecuteType.getName(executeType));
				Integer processType = pN.getProcessType();
				processNode.setProcessType(processType);
				if (ProcessType.TARGET_FILL_IN.getType().equals(processType)) {
					processNode.setSts(ProcessNodeSts.IN_EXECUTION.getType());
419
				} else {
420 421 422
					processNode.setSts(ProcessNodeSts.NON_EXECUTION.getType());
				}
				processNode.setWeight(pN.getWeight());
423

424 425
				if (ExecuteType.BEING_APPRAISAL_PERSON.getType().equals(executeType)) {
					processNode.setExecutorId(bAP);
426 427 428 429
				} else if (ExecuteType.LEADER.getType().equals(executeType)) {
					processNode.setExecutorId(
							ygglService.selectLeaderEmpNumById(userBean.getOrgCode(), bAP, pN.getLeaderTier()));
				} else if (ExecuteType.SPECIFIED_MEMBER.getType().equals(executeType)) {
430 431 432 433 434
					processNode.setExecutorId(pN.getExecutorId());
				}
				// 新增 流程节点
				processNode.insert();
				System.out.println("新增 流程节点:" + processNode);
435

436
			});
437 438 439 440 441 442 443 444 445

			List<JxglAppraisalIndicatorsT> listAIT = jxglAppraisalIndicatorsTMapper
					.selectList(new QueryWrapper<JxglAppraisalIndicatorsT>().lambda()
							.eq(JxglAppraisalIndicatorsT::getAppraisalTId, aT.getId())
							.ne(aT.getIsUseFixd() == 1, JxglAppraisalIndicatorsT::getType,
									IndicatorsType.FIXATION.getType())
							.ne(aT.getIsUseNotFixd() == 1, JxglAppraisalIndicatorsT::getType,
									IndicatorsType.NOT_FIXATION.getType()));

446 447 448
			if (listAIT == null || listAIT.size() <= 0) {
				throw new CustomException("考核指标不存在");
			}
449

450
			listAIT.stream().forEach(aIT -> {
451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472
				// 考核指标
				BeanUtil.copyProperties(aIT, appraisalIndicators, "appraisalId", "createTime", "updateTime");
				appraisalIndicators.setAppraisalId(appraisal.getId());
				// 新增 考核指标
				appraisalIndicators.insert();
//				System.out.println("新增 考核指标:" + appraisalIndicators);

				List<JxglAppraisalItemT> listAItemT = jsxglAppraisalItemTMapper
						.selectList(new QueryWrapper<JxglAppraisalItemT>().lambda()
								.eq(JxglAppraisalItemT::getAppraisalIndicatorsTId, aIT.getId()));

				if (listAItemT != null && listAItemT.size() > 0) {
					listAItemT.stream().forEach(aItemT -> {
						BeanUtil.copyProperties(aItemT, appraisalItem, "appraisalIndicatorsTId");
						appraisalItem.setAppraisalIndicatorsId(appraisalIndicators.getId());

						// 新增 考核项
						appraisalItem.insert();
//						System.out.println("新增 考核项:" + appraisalItem);
					});
				}

473
			});
474

475
			YgglMainEmp yME = ygglMainEmpMapper.selectOne(new QueryWrapper<YgglMainEmp>().lambda()
476 477
					.select(YgglMainEmp::getName).eq(YgglMainEmp::getOrgCode, orgCode).eq(YgglMainEmp::getEmpNum, bAP));

478 479 480 481 482 483
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(bAP);
			appraisalLog.setExecutorName(yME.getName());
			appraisalLog.setType(AppraisalLogType.START.getType());
			appraisalLog.insert();
		}
484

485 486
		return ResultUtil.success();
	}
487

488
	/**
tangzhaoqian committed
489 490 491 492 493 494
	 * 删除-绩效考核
	 */
	@DeleteMapping(value = "/delete_performance_appraisal/{id}")
	@ApiOperation(value = "8.删除-绩效考核", httpMethod = "DELETE", notes = "删除-绩效考核")
	@ApiOperationSupport(order = 8)
	@Role
495 496 497 498 499 500
	public Result<Object> deletePA(@CurrentUser UserBean userBean, @PathVariable Integer id) {

		JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper
				.selectOne(new QueryWrapper<JxglPerformanceAppraisal>().lambda().eq(JxglPerformanceAppraisal::getId, id)
						.eq(JxglPerformanceAppraisal::getOrgCode, userBean.getOrgCode()));

tangzhaoqian committed
501 502 503
		if (pA == null) {
			return ResultUtil.error("绩效考核不存在");
		}
504

tangzhaoqian committed
505 506
		List<Integer> aIds = CollUtil.toList();
		List<Integer> aIIds = CollUtil.toList();
507

tangzhaoqian committed
508
		List<JxglAppraisal> listA = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
509 510 511 512 513
				.select(JxglAppraisal::getId).eq(JxglAppraisal::getPerformanceAppraisalId, pA.getId()));

		aIds = listA != null && listA.size() > 0 ? listA.stream().map(JxglAppraisal::getId).collect(Collectors.toList())
				: aIds;

tangzhaoqian committed
514 515
		// 删除 绩效考核
		jxglPerformanceAppraisalMapper.deleteById(id);
516

tangzhaoqian committed
517
		if (aIds.size() > 0) {
518

tangzhaoqian committed
519 520
			// 批量删除 考核
			jxglAppraisalMapper.deleteBatchIds(aIds);
521

tangzhaoqian committed
522 523 524 525 526 527 528 529 530 531 532 533
			// 批量删除 流程节点
			jxglProcessNodeMapper.delete(new QueryWrapper<JxglProcessNode>().lambda()
					.eq(aIds.size() == 1, JxglProcessNode::getAppraisalId, aIds)
					.in(aIds.size() > 1, JxglProcessNode::getAppraisalId, aIds));
			// 批量删除 考核评定
			jxglAppraisalAssessmentMapper.delete(new QueryWrapper<JxglAppraisalAssessment>().lambda()
					.eq(aIds.size() == 1, JxglAppraisalAssessment::getAppraisalId, aIds)
					.in(aIds.size() > 1, JxglAppraisalAssessment::getAppraisalId, aIds));
			// 批量删除 考核记录
			jxglAppraisalLogMapper.delete(new QueryWrapper<JxglAppraisalLog>().lambda()
					.eq(aIds.size() == 1, JxglAppraisalLog::getAppraisalId, aIds)
					.in(aIds.size() > 1, JxglAppraisalLog::getAppraisalId, aIds));
534 535 536 537 538 539 540 541 542 543

			List<JxglAppraisalIndicators> listAI = jxglAppraisalIndicatorsMapper.selectList(
					new QueryWrapper<JxglAppraisalIndicators>().lambda().select(JxglAppraisalIndicators::getId)
							.eq(aIds.size() == 1, JxglAppraisalIndicators::getAppraisalId, aIds)
							.in(aIds.size() > 1, JxglAppraisalIndicators::getAppraisalId, aIds));

			aIIds = listAI != null && listAI.size() > 0
					? listAI.stream().map(JxglAppraisalIndicators::getId).collect(Collectors.toList())
					: aIIds;

tangzhaoqian committed
544
			if (aIIds.size() > 0) {
545

tangzhaoqian committed
546
				jxglAppraisalIndicatorsMapper.deleteBatchIds(aIIds);
547

tangzhaoqian committed
548
				// 批量删除 考核指标评定
549 550
				jxglAppraisalIndicatorsAssessmentMapper.delete(new QueryWrapper<JxglAppraisalIndicatorsAssessment>()
						.lambda()
tangzhaoqian committed
551 552
						.eq(aIds.size() == 1, JxglAppraisalIndicatorsAssessment::getAppraisalIndicatorsId, aIIds)
						.in(aIds.size() > 1, JxglAppraisalIndicatorsAssessment::getAppraisalIndicatorsId, aIIds));
553

tangzhaoqian committed
554 555 556 557
				// 批量删除 考核项
				jxglAppraisalItemMapper.delete(new QueryWrapper<JxglAppraisalItem>().lambda()
						.eq(aIds.size() == 1, JxglAppraisalItem::getAppraisalIndicatorsId, aIIds)
						.in(aIds.size() > 1, JxglAppraisalItem::getAppraisalIndicatorsId, aIIds));
558

tangzhaoqian committed
559 560
			}
		}
561

tangzhaoqian committed
562 563
		return ResultUtil.success();
	}
564

tangzhaoqian committed
565 566 567 568 569 570
	/**
	 * 修改-绩效管理状态
	 */
	@PostMapping(value = "/update_performance_appraisal_sts")
	@ApiOperation(value = "8.修改-绩效管理状态", httpMethod = "POST", notes = "修改-绩效管理状态")
	@ApiOperationSupport(order = 8)
571 572 573 574 575 576 577 578
	public Result<Object> updatePAS(@CurrentUser UserBean userBean,
			@Validated @RequestBody AppraisalUpdateSts appraisalUpdateSts) {

		JxglPerformanceAppraisal performanceAppraisal = jxglPerformanceAppraisalMapper
				.selectOne(new QueryWrapper<JxglPerformanceAppraisal>().lambda()
						.eq(JxglPerformanceAppraisal::getId, appraisalUpdateSts.getId())
						.eq(JxglPerformanceAppraisal::getSts, appraisalUpdateSts.getSts()));

tangzhaoqian committed
579 580 581 582 583 584
		if (performanceAppraisal == null) {
			return ResultUtil.error("绩效考核不存在");
		}
		if (performanceAppraisal.getSts() == PerformanceAppraisalSts.TERMINATION_ASSESSMENT.getType()) {
			return ResultUtil.error("考核已终止");
		}
585

tangzhaoqian committed
586
		Integer sts = null;
587
		Integer id = performanceAppraisal.getId();
588

589
		List<JxglAppraisal> listA = CollUtil.toList();
590
		List<Integer> aIds = CollUtil.toList();
591 592
		List<JxglProcessNode> listPN = CollUtil.toList();
		List<Integer> pNIds = CollUtil.toList();
593

tangzhaoqian committed
594 595 596
		switch (performanceAppraisal.getSts()) {
		case 0:
			sts = PerformanceAppraisalSts.PERFORMANCE_SCORE.getType();
597

598
			listA = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
599 600
					.select(JxglAppraisal::getId).eq(JxglAppraisal::getPerformanceAppraisalId, id));

601 602
			if (listA != null && listA.size() > 0) {
				aIds = listA.stream().map(JxglAppraisal::getId).collect(Collectors.toList());
603 604 605 606 607 608

				listPN = jxglProcessNodeMapper.selectList(
						new QueryWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getAppraisalId, aIds)
								.eq(JxglProcessNode::getProcessType, ProcessType.TARGET_CONFIRMED.getType())
								.eq(JxglProcessNode::getSts, ProcessNodeSts.EXECUTED.getType()));

609 610
				if (listPN != null && listPN.size() > 0) {
					aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());
611 612 613 614 615

					listPN = jxglProcessNodeMapper.selectList(
							new QueryWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getAppraisalId, aIds)
									.eq(JxglProcessNode::getProcessType, ProcessType.SELF_ASSESSMENT.getType())
									.eq(JxglProcessNode::getSts, ProcessNodeSts.NON_EXECUTION.getType()));
616 617 618
					if (listPN != null && listPN.size() > 0) {
						pNIds = listPN.stream().map(JxglProcessNode::getId).collect(Collectors.toList());
						aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());
619 620 621 622 623 624 625

						JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build().update(
								new UpdateWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getId, pNIds));

						JxglAppraisal.builder().sts(AppraisalSts.SELF_ASSESSMENT.getType()).build()
								.update(new UpdateWrapper<JxglAppraisal>().lambda().in(JxglAppraisal::getId, aIds));

626 627 628
					}
				}
			}
629

tangzhaoqian committed
630 631 632
			break;
		case 1:
			sts = PerformanceAppraisalSts.RESULT_VERIFICATION.getType();
633

634
			listA = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
635 636
					.select(JxglAppraisal::getId).eq(JxglAppraisal::getPerformanceAppraisalId, id));

637 638
			if (listA != null && listA.size() > 0) {
				aIds = listA.stream().map(JxglAppraisal::getId).collect(Collectors.toList());
639 640 641 642 643 644

				listPN = jxglProcessNodeMapper.selectList(
						new QueryWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getAppraisalId, aIds)
								.eq(JxglProcessNode::getProcessType, ProcessType.SUPERIOR_SCORE.getType())
								.eq(JxglProcessNode::getSts, ProcessNodeSts.EXECUTED.getType()));

645 646
				if (listPN != null && listPN.size() > 0) {
					aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());
647 648 649 650 651

					listPN = jxglProcessNodeMapper.selectList(
							new QueryWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getAppraisalId, aIds)
									.eq(JxglProcessNode::getProcessType, ProcessType.RESULT_VERIFICATION.getType())
									.eq(JxglProcessNode::getSts, ProcessNodeSts.NON_EXECUTION.getType()));
652 653 654
					if (listPN != null && listPN.size() > 0) {
						pNIds = listPN.stream().map(JxglProcessNode::getId).collect(Collectors.toList());
						aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());
655 656 657 658 659 660 661

						JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build().update(
								new UpdateWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getId, pNIds));

						JxglAppraisal.builder().sts(AppraisalSts.RESULT_VERIFICATION.getType()).build()
								.update(new UpdateWrapper<JxglAppraisal>().lambda().in(JxglAppraisal::getId, aIds));

662 663 664
					}
				}
			}
tangzhaoqian committed
665 666 667
			break;
		case 2:
			sts = PerformanceAppraisalSts.PERFORMANCE_ARCHIVE.getType();
668

669
			listA = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
670 671
					.select(JxglAppraisal::getId).eq(JxglAppraisal::getPerformanceAppraisalId, id));

672 673
			if (listA != null && listA.size() > 0) {
				aIds = listA.stream().map(JxglAppraisal::getId).collect(Collectors.toList());
674 675 676 677 678 679

				listPN = jxglProcessNodeMapper.selectList(
						new QueryWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getAppraisalId, aIds)
								.eq(JxglProcessNode::getProcessType, ProcessType.RESULT_VERIFICATION.getType())
								.eq(JxglProcessNode::getSts, ProcessNodeSts.EXECUTED.getType()));

680 681
				if (listPN != null && listPN.size() > 0) {
					aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());
682 683 684 685 686

					listPN = jxglProcessNodeMapper.selectList(
							new QueryWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getAppraisalId, aIds)
									.eq(JxglProcessNode::getProcessType, ProcessType.TARGET_CONFIRMED.getType())
									.eq(JxglProcessNode::getSts, ProcessNodeSts.NON_EXECUTION.getType()));
687 688 689
					if (listPN != null && listPN.size() > 0) {
						pNIds = listPN.stream().map(JxglProcessNode::getId).collect(Collectors.toList());
						aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());
690 691 692 693 694 695 696

						JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build().update(
								new UpdateWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getId, pNIds));

						JxglAppraisal.builder().sts(AppraisalSts.SELF_ASSESSMENT.getType()).build()
								.update(new UpdateWrapper<JxglAppraisal>().lambda().in(JxglAppraisal::getId, aIds));

697 698 699
					}
				}
			}
tangzhaoqian committed
700 701 702 703
			break;
		default:
			break;
		}
704

tangzhaoqian committed
705
		// 修改 绩效考核状态
706 707 708
		jxglPerformanceAppraisalMapper
				.updateById(JxglPerformanceAppraisal.builder().id(appraisalUpdateSts.getId()).sts(sts).build());

709
		// 修改 考核状态
710 711 712 713 714 715
		jxglAppraisalMapper.update(
				JxglAppraisal.builder().performanceAppraisalId(appraisalUpdateSts.getId()).sts(sts).build(),
				new UpdateWrapper<JxglAppraisal>().lambda()
						.eq(JxglAppraisal::getPerformanceAppraisalId, appraisalUpdateSts.getId())
						.eq(JxglAppraisal::getSts, AppraisalSts.TARGET_CONFIRMED.getType()));

716
		return ResultUtil.success();
tangzhaoqian committed
717
	}
718

tangzhaoqian committed
719 720 721 722
	/**
	 * 删除-所有-绩效考核
	 */
	@DeleteMapping(value = "/delete_all_pa")
723 724 725
	@ApiOperation(value = "99.删除-所有-绩效考核", httpMethod = "DELETE", notes = "删除-所有-绩效考核")
	@ApiOperationSupport(order = 99)
	@Role
726 727 728 729 730 731 732 733 734 735 736
	public Result<Object> deleteAllPA(@CurrentUser UserBean userBean) {

		jxglPerformanceAppraisalMapper.delete(null);
		jxglAppraisalMapper.delete(null);
		jxglProcessNodeMapper.delete(null);
		jxglAppraisalAssessmentMapper.delete(null);
		jxglAppraisalLogMapper.delete(null);
		jxglAppraisalIndicatorsMapper.delete(null);
		jxglAppraisalIndicatorsAssessmentMapper.delete(null);
		jxglAppraisalItemMapper.delete(null);

tangzhaoqian committed
737 738
		return ResultUtil.success("删除-所有-绩效考核");
	}
739

tangzhaoqian committed
740
	/**
741
	 * 查询-绩效考核-列表-归档
742
	 */
743
	@PostMapping(value = "/selects_performance_appraisal_archive")
tangzhaoqian committed
744
	@ApiOperation(value = "8.查询-绩效考核-列表-归档", httpMethod = "POST", notes = "查询-绩效考核-列表-归档")
745
	@ApiOperationSupport(order = 8)
746
	@Role
747 748 749 750 751
	public Result<Object> selectsPAArchive(@CurrentUser UserBean userBean,
			@RequestBody PerformanceAppraisalQuery query) {

		IPage<SpmkApproveSummary> page = new Page<SpmkApproveSummary>(query.getCurrentPage(), query.getTotalPage());

752
		query.setOrgCode(userBean.getOrgCode());
753

754
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectArchiveListByQuery(page, query);
755

756 757
		List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();

758
		return ResultUtil.data(pagePA, listPA);
759
	}
760

761 762 763 764
	/**
	 * 查询-绩效考核-列表-非归档
	 */
	@PostMapping(value = "/selects_performance_appraisal")
tangzhaoqian committed
765
	@ApiOperation(value = "9.查询-绩效考核-列表-非归档", httpMethod = "POST", notes = "查询-绩效考核-列表-非归档")
766 767
	@ApiOperationSupport(order = 9)
	@Role
768 769 770 771
	public Result<Object> selectsPA(@CurrentUser UserBean userBean, @RequestBody PerformanceAppraisalQuery query) {

		IPage<SpmkApproveSummary> page = new Page<SpmkApproveSummary>(query.getCurrentPage(), query.getTotalPage());

772
		query.setOrgCode(userBean.getOrgCode());
773

774
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectListByQuery(page, query);
775

776 777
		List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();

778
		return ResultUtil.data(pagePA, listPA);
779
	}
780

781 782 783 784 785 786
	/**
	 * 查询-考核-列表
	 */
	@PostMapping(value = "/selects_appraisal")
	@ApiOperation(value = "10.查询-考核-列表", httpMethod = "POST", notes = "查询-考核-列表")
	@ApiOperationSupport(order = 10)
787
	@Role
788 789 790
	public Result<Object> selectsA(@CurrentUser UserBean userBean, @RequestBody AppraisalQuery query) {

		IPage<JxglAppraisal> page = new Page<JxglAppraisal>(query.getCurrentPage(), query.getTotalPage());
791
		query.setOrgCode(userBean.getOrgCode());
792

793
		IPage<JxglAppraisal> pageA = jxglAppraisalMapper.selectListByQuery(page, query);
794

795 796
		List<JxglAppraisal> listPA = pageA.getRecords();

797 798
		return ResultUtil.data(pageA, listPA);

799
	}
800

801 802 803 804 805 806
	/**
	 * 查询-考核-详情
	 */
	@GetMapping(value = "/select_appraisal/{id}")
	@ApiOperation(value = "11.查询-考核-详情", httpMethod = "GET", notes = "查询-考核-详情")
	@ApiOperationSupport(order = 11)
807
	@Role
808 809
	public Result<Object> selectA(@CurrentUser UserBean userBean, @PathVariable Integer id) {

810
		AppraisalDetail aD = jxglAppraisalMapper.selectDetailById(userBean.getOrgCode(), id);
811

tangzhaoqian committed
812
		if (aD != null) {
813 814 815 816
			JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper
					.selectOne(new QueryWrapper<JxglPerformanceAppraisal>().lambda().eq(JxglPerformanceAppraisal::getId,
							aD.getPerformanceAppraisalId()));

tangzhaoqian committed
817 818
			if (pA != null && pA.getIsVisible() == 0) {
				return ResultUtil.data(aD);
819
			} else {
tangzhaoqian committed
820 821
				List<JxglAppraisalAssessment> listAA = aD.getAppraisalAssessments();
				if (listAA != null) {
822 823
					listAA = listAA.stream().filter(a -> !userBean.getEmpNum().equals(a.getAssessorId()))
							.collect(Collectors.toList());
tangzhaoqian committed
824 825 826 827
					aD.setAppraisalAssessments(listAA);
				}
			}
		}
828

829
		return ResultUtil.data(aD);
830

831
	}
832

833 834 835 836 837 838
	/**
	 * 修改-流程执行人-转派
	 */
	@PutMapping(value = "/update_process_node")
	@ApiOperation(value = "12.修改-流程执行人-转派", httpMethod = "PUT", notes = "修改-流程执行人-转派")
	@ApiOperationSupport(order = 12)
839
	@Role
840 841 842
	public Result<Object> updatePN(@CurrentUser UserBean userBean,
			@Validated @RequestBody ProcessNodeUpdate processNodeUpdate) {

tangzhaoqian committed
843
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
844 845
				.eq(JxglAppraisal::getId, processNodeUpdate.getAppraisalId()).select(JxglAppraisal::getId));

tangzhaoqian committed
846
		if (appraisal == null) {
847
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
848
		}
849

tangzhaoqian committed
850
		Integer count = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
851 852
				.eq(JxglAppraisal::getId, processNodeUpdate.getAppraisalId()).in(JxglAppraisal::getSts,
						AppraisalSts.ASSESSMENT_COMPLETE.getType(), AppraisalSts.TERMINATION_ASSESSMENT.getType(),
853
						AppraisalSts.PERFORMANCE_ARCHIVE.getType()));
854

tangzhaoqian committed
855
		if (count > 0) {
856 857
			return ResultUtil.error("考核已结束");
		}
858

tangzhaoqian committed
859 860 861
		count = jxglProcessNodeMapper.selectCount(new QueryWrapper<JxglProcessNode>().lambda()
				.eq(JxglProcessNode::getAppraisalId, processNodeUpdate.getAppraisalId())
				.ne(JxglProcessNode::getSts, ProcessNodeSts.EXECUTED.getType()));
862

tangzhaoqian committed
863 864 865
		if (count <= 0) {
			return ResultUtil.error("流程已执行,无法更改");
		}
866

867 868
		JxglProcessNode pN = JxglProcessNode.builder().build();
		BeanUtil.copyProperties(processNodeUpdate, pN);
869

870
		pN.updateById();
871

872 873
		return ResultUtil.data(pN);
	}
874

875 876 877 878 879 880
	/**
	 * 终止-考核
	 */
	@PutMapping(value = "/termination_assessment")
	@ApiOperation(value = "13.终止-考核", httpMethod = "PUT", notes = "终止-考核")
	@ApiOperationSupport(order = 13)
881
	@Role
882 883
	public Result<Object> terminationAssessment(@CurrentUser UserBean userBean, @NotNull @RequestParam Integer id) {

tangzhaoqian committed
884
		JxglAppraisal appraisal = jxglAppraisalMapper.selectById(id);
885

tangzhaoqian committed
886
		if (appraisal == null) {
887 888
			return ResultUtil.error("考核不存在");
		} else if (appraisal.getSts() <= AppraisalSts.RESULT_VERIFICATION.getType()) {
tangzhaoqian committed
889
			JxglAppraisal.builder().id(id).sts(AppraisalSts.TERMINATION_ASSESSMENT.getType()).build().updateById();
890
		} else if (appraisal.getSts() == AppraisalSts.ASSESSMENT_COMPLETE.getType()) {
tangzhaoqian committed
891
			return ResultUtil.error("考核已完成,无法终止");
892
		} else if (appraisal.getSts() == AppraisalSts.TERMINATION_ASSESSMENT.getType()) {
tangzhaoqian committed
893
			return ResultUtil.error("考核已终止,无法重复终止");
894
		} else if (appraisal.getSts() == AppraisalSts.PERFORMANCE_ARCHIVE.getType()) {
tangzhaoqian committed
895 896
			return ResultUtil.error("考核已归档,无法终止");
		}
897
		return ResultUtil.success();
898
	}
899

900 901 902 903 904 905 906
	/**
	 * 查询-所有员工绩效-汇总
	 */
	@PostMapping(value = "/selects_emp_performance")
	@ApiOperation(value = "14.查询-所有员工绩效-汇总", httpMethod = "POST", notes = "查询-所有员工绩效-汇总")
	@ApiOperationSupport(order = 14)
	@Role
907 908 909
	public Result<Object> selectsEP(@CurrentUser UserBean userBean, @RequestBody EmpPerformanceQuery query) {

		IPage<JxglAppraisal> page = new Page<JxglAppraisal>(query.getCurrentPage(), query.getTotalPage());
910
		query.setOrgCode(userBean.getOrgCode());
911

912
		IPage<JxglAppraisal> pageA = jxglAppraisalMapper.selectListEmpByQuery(page, query);
913

914 915
		List<JxglAppraisal> listA = pageA.getRecords();

916 917
		return ResultUtil.data(pageA, listA);

918
	}
919

920 921 922 923 924 925 926
	/**
	 * 查询-某员工考核-列表
	 */
	@PostMapping(value = "/selects_emp_appraisal")
	@ApiOperation(value = "15.查询-某员工考核-列表", httpMethod = "POST", notes = "查询-某员工考核-列表")
	@ApiOperationSupport(order = 15)
	@Role
927 928 929 930
	public Result<Object> selectsEA(@CurrentUser UserBean userBean,@Validated @RequestBody EmpAppraisalQuery query) {

		IPage<JxglPerformanceAppraisal> page = new Page<JxglPerformanceAppraisal>(query.getCurrentPage(),
				query.getTotalPage());
931
		query.setOrgCode(userBean.getOrgCode());
932

933
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectListEmpByQuery(page, query);
934

935 936
		List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();

937 938
		return ResultUtil.data(pagePA, listPA);

939
	}
940

941 942 943 944 945 946 947
	/**
	 * 查询-绩效考核-方案
	 */
	@GetMapping(value = "/selects_performance_appraisal/{id}")
	@ApiOperation(value = "16.查询-绩效考核-方案", httpMethod = "GET", notes = "查询-绩效考核-方案")
	@ApiOperationSupport(order = 16)
	@Role
948 949
	public Result<Object> selectPA(@CurrentUser UserBean userBean, @PathVariable Integer id) {

950 951 952 953
		JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper.selectById(id);
		if (pA == null) {
			return ResultUtil.error("方案不存在");
		}
954 955 956
		PerformanceAppraisal paDto = PerformanceAppraisal.builder().name(pA.getName()).period(pA.getPeriod())
				.appraisalStartTime(pA.getAppraisalStartTime()).appraisalEndTime(pA.getAppraisalEndTime())
				.isVisible(pA.getIsVisible()).scope(pA.getScope()).appraisalTName(pA.getAppraisalTName())
957
				.processNode(ObjectUtil.deserialize(pA.getProcessNode()))
958 959
				.beingAppraisalPerson(ObjectUtil.deserialize(pA.getBeingAppraisalPerson())).build();

960
		return ResultUtil.data(paDto);
961

962
	}
963

tangzhaoqian committed
964 965 966 967 968 969
	/**
	 * 查询-我的绩效-列表
	 */
	@PostMapping(value = "/selects_my_performance")
	@ApiOperation(value = "17.查询-我的绩效-列表", httpMethod = "POST", notes = "查询-我的绩效-列表")
	@ApiOperationSupport(order = 17)
970 971
	public Result<Object> selects(@CurrentUser UserBean userBean,@Validated @RequestBody MyPerformance query) {

tangzhaoqian committed
972 973 974 975
		IPage<JxglPerformanceAppraisal> page = new Page<JxglPerformanceAppraisal>(query.getCurrentPage(),query.getTotalPage());
		query.setOrgCode(userBean.getOrgCode());
		query.setId(userBean.getEmpNum());
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectMyByQuery(page, query);
976

tangzhaoqian committed
977 978
		List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();

979 980
		return ResultUtil.data(pagePA, listPA);

tangzhaoqian committed
981
	}
982

tangzhaoqian committed
983 984 985 986 987 988
	/**
	 * 目标填写-保存
	 */
	@PostMapping(value = "/save_target_fill")
	@ApiOperation(value = "17.目标填写-保存", httpMethod = "POST", notes = "目标填写-保存")
	@ApiOperationSupport(order = 17)
989 990 991
	public Result<Object> saveTF(@CurrentUser UserBean userBean, @RequestBody AppraisalUpdate appraisalUpdate)
			throws Exception {

tangzhaoqian committed
992
		Integer id = appraisalUpdate.getId();
993

tangzhaoqian committed
994
		Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
995 996 997
				.eq(JxglAppraisal::getId, id).in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
998 999 1000
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1001 1002 1003 1004

		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(
				new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getId, id).select(JxglAppraisal::getId));

tangzhaoqian committed
1005
		if (appraisal == null) {
1006
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1007
		}
1008 1009 1010 1011

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1012 1013 1014
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1015

tangzhaoqian committed
1016
		if (ProcessType.TARGET_FILL_IN.getType() == processNode.getProcessType()) {
1017

tangzhaoqian committed
1018
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1019
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1020
			}
1021 1022

		} else {
tangzhaoqian committed
1023 1024
			return ResultUtil.error("流程状态异常");
		}
1025

1026
		// 查找 非固定 考核指标
1027 1028 1029 1030 1031 1032 1033 1034 1035
		List<JxglAppraisalIndicators> listAI = jxglAppraisalIndicatorsMapper
				.selectList(new QueryWrapper<JxglAppraisalIndicators>().lambda().select(JxglAppraisalIndicators::getId)
						.eq(JxglAppraisalIndicators::getType, IndicatorsType.NOT_FIXATION.getType())
						.eq(JxglAppraisalIndicators::getAppraisalId, id));

		List<Integer> appraisalIndicatorIds = listAI != null
				? listAI.stream().map(JxglAppraisalIndicators::getId).collect(Collectors.toList())
				: null;

1036
		if (appraisalIndicatorIds != null) {
1037

1038 1039 1040 1041
			// 删除 考核项
			jxglAppraisalItemMapper.delete(new QueryWrapper<JxglAppraisalItem>().lambda()
					.in(JxglAppraisalItem::getAppraisalIndicatorsId, appraisalIndicatorIds));
		}
1042

tangzhaoqian committed
1043 1044
		// 删除 考核指标
		jxglAppraisalIndicatorsMapper.delete(new QueryWrapper<JxglAppraisalIndicators>().lambda()
1045
				.eq(JxglAppraisalIndicators::getType, IndicatorsType.NOT_FIXATION.getType())
tangzhaoqian committed
1046
				.eq(JxglAppraisalIndicators::getAppraisalId, id));
1047 1048

		List<JxglAppraisalIndicators> listAI2 = appraisalUpdate.getAppraisalIndicators();
tangzhaoqian committed
1049
		
1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060
		if (listAI2 != null) {
			listAI2.forEach(aI -> {
				aI.setAppraisalId(id);
				aI.setType(IndicatorsType.NOT_FIXATION.getType());
				if (aI.insert()) {
					List<JxglAppraisalItem> listAItem = aI.getAppraisalItems();
					if (listAItem != null && listAItem.size() > 0) {
						for (JxglAppraisalItem aItem : listAItem) {
							aItem.setAppraisalIndicatorsId(aI.getId());
							aItem.insert();
						}
tangzhaoqian committed
1061
					}
1062 1063
				} else {
					throw new CustomException("保存异常");
tangzhaoqian committed
1064
				}
1065 1066

			});
1067 1068
		}
		
1069

tangzhaoqian committed
1070 1071
		return ResultUtil.success();
	}
1072

tangzhaoqian committed
1073 1074 1075 1076 1077 1078
	/**
	 * 目标填写-提交
	 */
	@PostMapping(value = "/submit_target_fill")
	@ApiOperation(value = "17.目标填写-提交", httpMethod = "POST", notes = "目标填写-提交")
	@ApiOperationSupport(order = 17)
1079 1080
	public Result<Object> submitTF(@CurrentUser UserBean userBean, @RequestParam Integer id) {

tangzhaoqian committed
1081
		Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
1082 1083 1084
				.eq(JxglAppraisal::getId, id).in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
1085 1086 1087
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1088 1089 1090 1091

		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(
				new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getId, id).select(JxglAppraisal::getId));

tangzhaoqian committed
1092 1093 1094
		if (appraisal == null) {
			return ResultUtil.error("考核不存在");
		}
1095 1096 1097 1098

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1099 1100 1101
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1102

tangzhaoqian committed
1103
		if (ProcessType.TARGET_FILL_IN.getType() == processNode.getProcessType()) {
1104

tangzhaoqian committed
1105
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1106
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1107
			}
1108 1109 1110 1111 1112

			List<JxglAppraisalIndicators> listAI = jxglAppraisalIndicatorsMapper
					.selectList(new QueryWrapper<JxglAppraisalIndicators>().lambda()
							.eq(JxglAppraisalIndicators::getAppraisalId, appraisal.getId()));

tangzhaoqian committed
1113 1114 1115
			if (listAI == null) {
				return ResultUtil.error("考核指标不能为空");
			}
1116 1117
			List<Integer> listWeight = listAI.stream().map(JxglAppraisalIndicators::getWeight)
					.collect(Collectors.toList());
tangzhaoqian committed
1118 1119 1120 1121 1122 1123 1124 1125 1126
			Integer weightSum = 0;
			if (listWeight != null && listWeight.size() > 0) {
				for (Integer i : listWeight) {
					weightSum += i;
				}
				if (!weightSum.equals(100))
					return ResultUtil.error("权重总和要等于 100%");
			}
			// 修改 目标填写 状态
1127 1128 1129 1130 1131
			JxglProcessNode.builder().sts(ProcessNodeSts.EXECUTED.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));

tangzhaoqian committed
1132
			// 修改 下一个节点状态
1133 1134 1135 1136 1137 1138 1139 1140
			JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getProcessType, ProcessType.TARGET_CONFIRMED.getType()));

			jxglAppraisalMapper
					.updateById(JxglAppraisal.builder().id(id).sts(AppraisalSts.TARGET_CONFIRMED.getType()).build());

tangzhaoqian committed
1141 1142 1143 1144 1145 1146
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
			appraisalLog.setType(AppraisalLogType.TARGET_FILL_IN.getType());
			appraisalLog.insert();
1147 1148

		} else {
tangzhaoqian committed
1149 1150 1151 1152 1153
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
	}
1154

tangzhaoqian committed
1155 1156 1157 1158 1159 1160
	/**
	 * 目标确认-同意
	 */
	@PostMapping(value = "/update_target_confirmed")
	@ApiOperation(value = "18.目标确认-同意", httpMethod = "POST", notes = "目标确认-同意")
	@ApiOperationSupport(order = 18)
1161 1162
	public Result<Object> updateTC(@CurrentUser UserBean userBean, @RequestParam Integer id) {

tangzhaoqian committed
1163
		Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
1164 1165 1166
				.eq(JxglAppraisal::getId, id).in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
1167 1168 1169
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1170

tangzhaoqian committed
1171
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1172 1173
				.eq(JxglAppraisal::getId, id).select(JxglAppraisal::getId, JxglAppraisal::getPerformanceAppraisalId));

tangzhaoqian committed
1174
		if (appraisal == null) {
1175
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1176
		}
1177 1178 1179 1180

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1181 1182 1183
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1184

tangzhaoqian committed
1185
		if (ProcessType.TARGET_CONFIRMED.getType() == processNode.getProcessType()) {
1186

tangzhaoqian committed
1187
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1188
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1189 1190
			}

1191 1192 1193 1194 1195 1196 1197
			// 修改 目标确认 状态
			JxglProcessNode.builder().sts(ProcessNodeSts.EXECUTED.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
			JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper
					.selectById(appraisal.getPerformanceAppraisalId());
tangzhaoqian committed
1198 1199
			if (pA != null && pA.getSts() > PerformanceAppraisalSts.TARGET_SETING.getType()) {
				// 修改 下一个节点状态
1200 1201 1202 1203 1204 1205 1206
				JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build()
						.update(new UpdateWrapper<JxglProcessNode>().lambda()
								.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
								.eq(JxglProcessNode::getProcessType, ProcessType.SELF_ASSESSMENT.getType()));

				jxglAppraisalMapper.updateById(JxglAppraisal.builder().id(appraisal.getId())
						.sts(AppraisalSts.SELF_ASSESSMENT.getType()).build());
tangzhaoqian committed
1207
			}
1208

tangzhaoqian committed
1209 1210 1211 1212 1213 1214
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
			appraisalLog.setType(AppraisalLogType.TARGET_CONFIRMED.getType());
			appraisalLog.insert();
1215
		} else {
tangzhaoqian committed
1216 1217 1218 1219
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
1220

tangzhaoqian committed
1221
	}
1222

tangzhaoqian committed
1223 1224 1225 1226 1227 1228
	/**
	 * 目标确认-驳回目标
	 */
	@PostMapping(value = "/update_target_confirmed_reject")
	@ApiOperation(value = "18.目标确认-驳回目标", httpMethod = "POST", notes = "目标确认-驳回目标")
	@ApiOperationSupport(order = 18)
1229 1230 1231 1232 1233 1234 1235
	public Result<Object> updateTCR(@CurrentUser UserBean userBean, @RequestBody AppraisalReject appraisalReject) {

		Integer count2 = jxglAppraisalMapper.selectCount(
				new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getId, appraisalReject.getId()).in(
						JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
1236 1237 1238
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1239

tangzhaoqian committed
1240
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1241 1242
				.eq(JxglAppraisal::getId, appraisalReject.getId()).select(JxglAppraisal::getId));

tangzhaoqian committed
1243
		if (appraisal == null) {
1244
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1245
		}
1246 1247 1248 1249 1250

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));

tangzhaoqian committed
1251 1252 1253
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1254

tangzhaoqian committed
1255
		if (ProcessType.TARGET_CONFIRMED.getType() == processNode.getProcessType()) {
1256

tangzhaoqian committed
1257
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1258
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1259 1260
			}

1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273
			// 修改 目标确认 状态
			JxglProcessNode.builder().sts(ProcessNodeSts.NON_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.in(JxglProcessNode::getProcessType, ProcessType.TARGET_CONFIRMED.getType()));

			JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getProcessType, ProcessType.TARGET_FILL_IN.getType()));

			jxglAppraisalMapper.updateById(
					JxglAppraisal.builder().id(appraisal.getId()).sts(AppraisalSts.TARGET_FILL_IN.getType()).build());
tangzhaoqian committed
1274 1275 1276 1277 1278 1279 1280 1281

			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setRemarks(appraisalReject.getRejectReason());
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
			appraisalLog.setType(AppraisalLogType.TARGET_DISMISS.getType());
			appraisalLog.insert();
1282 1283

		} else {
tangzhaoqian committed
1284 1285 1286 1287
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
1288

tangzhaoqian committed
1289
	}
1290

tangzhaoqian committed
1291 1292 1293 1294 1295 1296
	/**
	 * 上级评价 -驳回目标
	 */
	@PostMapping(value = "/update_superior_score_reject")
	@ApiOperation(value = "19.上级评价 -驳回目标", httpMethod = "POST", notes = "上级评价 -驳回目标")
	@ApiOperationSupport(order = 19)
1297 1298 1299 1300 1301 1302 1303
	public Result<Object> updateSSR(@CurrentUser UserBean userBean, @RequestBody AppraisalReject appraisalReject) {

		Integer count2 = jxglAppraisalMapper.selectCount(
				new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getId, appraisalReject.getId()).in(
						JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
1304 1305 1306
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1307

tangzhaoqian committed
1308
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1309 1310
				.eq(JxglAppraisal::getId, appraisalReject.getId()).select(JxglAppraisal::getId));

tangzhaoqian committed
1311
		if (appraisal == null) {
1312
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1313
		}
1314 1315 1316 1317

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1318 1319 1320
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1321

tangzhaoqian committed
1322
		if (ProcessType.SUPERIOR_SCORE.getType() == processNode.getProcessType()) {
1323

tangzhaoqian committed
1324
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1325
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1326 1327
			}

1328 1329 1330 1331 1332 1333 1334 1335 1336 1337
			// 修改 目标确认 状态
			JxglProcessNode.builder().sts(ProcessNodeSts.NON_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId()).in(JxglProcessNode::getProcessType,
									ProcessType.TARGET_CONFIRMED.getType(), ProcessType.SELF_ASSESSMENT.getType()));

			JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getProcessType, ProcessType.TARGET_FILL_IN.getType()));
tangzhaoqian committed
1338 1339 1340 1341 1342

			// 删除 考核评定-自评
			jxglAppraisalAssessmentMapper.delete(new QueryWrapper<JxglAppraisalAssessment>().lambda()
					.eq(JxglAppraisalAssessment::getAppraisalId, appraisal.getId())
					.eq(JxglAppraisalAssessment::getType, AssessmentType.SELF_ASSESSMENT.getType()));
1343 1344 1345 1346 1347 1348 1349

			List<JxglAppraisalIndicators> listAI = jxglAppraisalIndicatorsMapper.selectList(
					new QueryWrapper<JxglAppraisalIndicators>().lambda().select(JxglAppraisalIndicators::getId)
							.eq(JxglAppraisalIndicators::getAppraisalId, appraisal.getId()));
			List<Integer> listAIId = listAI != null && listAI.size() > 0
					? listAI.stream().map(JxglAppraisalIndicators::getId).collect(Collectors.toList())
					: null;
tangzhaoqian committed
1350
			// 删除 考核指标评定-自评
1351 1352
			jxglAppraisalIndicatorsAssessmentMapper.delete(new QueryWrapper<JxglAppraisalIndicatorsAssessment>()
					.lambda().in(JxglAppraisalIndicatorsAssessment::getAppraisalIndicatorsId, listAIId)
tangzhaoqian committed
1353
					.eq(JxglAppraisalIndicatorsAssessment::getType, AssessmentType.SELF_ASSESSMENT.getType()));
1354 1355 1356 1357

			jxglAppraisalMapper.updateById(
					JxglAppraisal.builder().id(appraisal.getId()).sts(AppraisalSts.TARGET_FILL_IN.getType()).build());

tangzhaoqian committed
1358 1359 1360 1361 1362 1363 1364
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setRemarks(appraisalReject.getRejectReason());
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
			appraisalLog.setType(AppraisalLogType.TARGET_DISMISS.getType());
			appraisalLog.insert();
1365 1366

		} else {
tangzhaoqian committed
1367 1368 1369 1370
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
1371

tangzhaoqian committed
1372
	}
1373

tangzhaoqian committed
1374 1375 1376 1377 1378 1379
	/**
	 * 上级评价 -驳回评分
	 */
	@PostMapping(value = "/update_superior_reject_score")
	@ApiOperation(value = "20.上级评价 -驳回评分", httpMethod = "POST", notes = "上级评价 -驳回评分")
	@ApiOperationSupport(order = 20)
1380 1381 1382 1383 1384 1385 1386
	public Result<Object> updateSRS(@CurrentUser UserBean userBean,@Validated @RequestBody AppraisalReject appraisalReject) {

		Integer count2 = jxglAppraisalMapper.selectCount(
				new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getId, appraisalReject.getId()).in(
						JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
1387 1388 1389
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1390

tangzhaoqian committed
1391
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1392 1393
				.eq(JxglAppraisal::getId, appraisalReject.getId()).select(JxglAppraisal::getId));

tangzhaoqian committed
1394
		if (appraisal == null) {
1395
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1396
		}
1397 1398 1399 1400

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1401 1402 1403
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1404

tangzhaoqian committed
1405
		if (ProcessType.SUPERIOR_SCORE.getType() == processNode.getProcessType()) {
1406

tangzhaoqian committed
1407
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1408
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1409 1410
			}

1411 1412 1413 1414 1415 1416
			// 修改 状态
			JxglProcessNode.builder().sts(ProcessNodeSts.NON_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getProcessType, ProcessType.SUPERIOR_SCORE.getType()));

tangzhaoqian committed
1417
			// 修改 上一个节点状态
1418 1419 1420 1421 1422
			JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getProcessType, ProcessType.SELF_ASSESSMENT.getType()));

tangzhaoqian committed
1423 1424 1425 1426
			// 删除 考核评定-自评
			jxglAppraisalAssessmentMapper.delete(new QueryWrapper<JxglAppraisalAssessment>().lambda()
					.eq(JxglAppraisalAssessment::getAppraisalId, appraisal.getId())
					.eq(JxglAppraisalAssessment::getType, AssessmentType.SELF_ASSESSMENT.getType()));
1427 1428 1429 1430 1431 1432 1433

			List<JxglAppraisalIndicators> listAI = jxglAppraisalIndicatorsMapper.selectList(
					new QueryWrapper<JxglAppraisalIndicators>().lambda().select(JxglAppraisalIndicators::getId)
							.eq(JxglAppraisalIndicators::getAppraisalId, appraisal.getId()));
			List<Integer> listAIId = listAI != null && listAI.size() > 0
					? listAI.stream().map(JxglAppraisalIndicators::getId).collect(Collectors.toList())
					: null;
tangzhaoqian committed
1434
			// 删除 考核指标评定-自评
1435 1436
			jxglAppraisalIndicatorsAssessmentMapper.delete(new QueryWrapper<JxglAppraisalIndicatorsAssessment>()
					.lambda().in(JxglAppraisalIndicatorsAssessment::getAppraisalIndicatorsId, listAIId)
tangzhaoqian committed
1437
					.eq(JxglAppraisalIndicatorsAssessment::getType, AssessmentType.SELF_ASSESSMENT.getType()));
1438 1439 1440 1441

			jxglAppraisalMapper.updateById(
					JxglAppraisal.builder().id(appraisal.getId()).sts(AppraisalSts.SELF_ASSESSMENT.getType()).build());

tangzhaoqian committed
1442 1443 1444 1445 1446 1447 1448
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setRemarks(appraisalReject.getRejectReason());
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
			appraisalLog.setType(AppraisalLogType.SCORE_DISMISS.getType());
			appraisalLog.insert();
1449 1450

		} else {
tangzhaoqian committed
1451 1452 1453 1454
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
1455

tangzhaoqian committed
1456
	}
1457

tangzhaoqian committed
1458 1459 1460 1461 1462 1463
	/**
	 * 评分提交-(缺-评分最大分数限制)
	 */
	@PostMapping(value = "/save_score")
	@ApiOperation(value = "22.评分提交", httpMethod = "POST", notes = "评分提交")
	@ApiOperationSupport(order = 22)
1464 1465 1466
	public Result<Object> saveScore(@CurrentUser UserBean userBean,
			@Validated @RequestBody ValidList<AppraisalAssessment> appraisalAssessments) {

tangzhaoqian committed
1467
		Integer appraisalId = appraisalAssessments.get(0).getAppraisalId();
1468 1469 1470 1471 1472 1473 1474

		Integer count = jxglAppraisalMapper
				.selectCount(new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getId, appraisalId).in(
						JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

		if (count > 0) {
tangzhaoqian committed
1475 1476
			return ResultUtil.error("考核已结束");
		}
1477 1478 1479 1480 1481

		JxglAppraisal appraisal = jxglAppraisalMapper
				.selectOne(new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getId, appraisalId)
						.select(JxglAppraisal::getId, JxglAppraisal::getPerformanceAppraisalId));

tangzhaoqian committed
1482
		if (appraisal == null) {
1483
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1484
		}
1485 1486 1487 1488

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1489 1490 1491
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1492 1493 1494 1495

		if (ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType()
				|| ProcessType.SUPERIOR_SCORE.getType() == processNode.getProcessType()) {

tangzhaoqian committed
1496
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1497
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1498 1499 1500
			}

			appraisalAssessments.stream().forEach(a -> {
1501 1502 1503 1504
				Integer type = ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType()
						? AssessmentType.SELF_ASSESSMENT.getType()
						: AssessmentType.SUPERIOR_SCORE.getType();

tangzhaoqian committed
1505
				if (a.getAppraisalIndicatorsId() != null) {
1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517
					JxglAppraisalIndicatorsAssessment.builder().appraisalIndicatorsId(a.getAppraisalIndicatorsId())
							.assessorId(userBean.getEmpNum()).assessorName(userBean.getUserInfo().getName())
							.score(a.getScore()).remarks(a.getRemarks()).type(type).build().insert();

					jxglAppraisalMapper.updateById(JxglAppraisal.builder().id(appraisal.getId())
							.sts(AppraisalSts.SUPERIOR_SCORE.getType()).build());

				} else {
					JxglAppraisalAssessment.builder().appraisalId(a.getAppraisalId()).assessorId(userBean.getEmpNum())
							.assessorName(userBean.getUserInfo().getName()).comprehensiveScore(a.getScore())
							.remarks(a.getRemarks()).type(type).level(a.getLevel()).build().insert();

1518
//					jxglAppraisalMapper.updateById(JxglAppraisal.builder().id(appraisal.getId()).sts(AppraisalSts.RESULT_VERIFICATION.getType()).build());
tangzhaoqian committed
1519
				}
1520

tangzhaoqian committed
1521 1522
			});

1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539
			// 修改 状态
			JxglProcessNode.builder().sts(ProcessNodeSts.EXECUTED.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));

			JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(ProcessType.SUPERIOR_SCORE.getType() == processNode.getProcessType(),
									JxglProcessNode::getProcessType, ProcessType.RESULT_VERIFICATION.getType())
							.eq(ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType(),
									JxglProcessNode::getProcessType, ProcessType.SUPERIOR_SCORE.getType()));

			JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper
					.selectById(appraisal.getPerformanceAppraisalId());

tangzhaoqian committed
1540
			if (pA != null && pA.getSts() > PerformanceAppraisalSts.PERFORMANCE_SCORE.getType()) {
1541

1542
				if (ProcessType.SUPERIOR_SCORE.getType() == processNode.getProcessType()) {
1543
					jxglAppraisalMapper.updateById(JxglAppraisal.builder().id(appraisal.getId())
1544 1545
							.sts(AppraisalSts.RESULT_VERIFICATION.getType()).build());
				}
1546

tangzhaoqian committed
1547
			}
1548

tangzhaoqian committed
1549 1550 1551 1552
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
1553 1554 1555
			appraisalLog.setType(ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType()
					? AppraisalLogType.SELF_ASSESSMENT.getType()
					: AppraisalLogType.SUPERIOR_SCORE.getType());
tangzhaoqian committed
1556
			appraisalLog.insert();
1557 1558

		} else {
tangzhaoqian committed
1559 1560 1561 1562 1563
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
	}
1564

tangzhaoqian committed
1565 1566 1567 1568 1569 1570
	/**
	 * 结果确认-确认
	 */
	@PostMapping(value = "/result_verification")
	@ApiOperation(value = "23.结果确认-确认", httpMethod = "POST", notes = "结果确认-确认")
	@ApiOperationSupport(order = 23)
1571 1572 1573 1574 1575 1576 1577
	public Result<Object> resultVerification(@CurrentUser UserBean userBean, @RequestParam Integer id) {

		Integer count = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
				.eq(JxglAppraisal::getId, id).in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

		if (count > 0) {
tangzhaoqian committed
1578 1579
			return ResultUtil.error("考核已结束");
		}
1580 1581 1582 1583

		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(
				new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getId, id).select(JxglAppraisal::getId));

tangzhaoqian committed
1584
		if (appraisal == null) {
1585
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1586
		}
1587 1588 1589 1590

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1591 1592 1593
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1594

tangzhaoqian committed
1595
		if (ProcessType.RESULT_VERIFICATION.getType() == processNode.getProcessType()) {
1596

tangzhaoqian committed
1597
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1598
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1599
			}
1600 1601 1602 1603 1604 1605 1606 1607 1608 1609

			// 修改 状态
			JxglProcessNode.builder().sts(ProcessNodeSts.EXECUTED.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));

			jxglAppraisalMapper
					.updateById(JxglAppraisal.builder().id(id).sts(AppraisalSts.ASSESSMENT_COMPLETE.getType()).build());

tangzhaoqian committed
1610 1611 1612 1613 1614 1615
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
			appraisalLog.setType(AppraisalLogType.RESULT_VERIFICATION.getType());
			appraisalLog.insert();
1616 1617

		} else {
tangzhaoqian committed
1618 1619 1620 1621 1622
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
	}
1623

tangzhaoqian committed
1624 1625 1626 1627 1628 1629
	/**
	 * 结果确认-改分
	 */
	@PostMapping(value = "/change_score")
	@ApiOperation(value = "24.结果确认-改分", httpMethod = "POST", notes = "结果确认-改分")
	@ApiOperationSupport(order = 24)
1630 1631 1632
	public Result<Object> changeScore(@CurrentUser UserBean userBean,
			@Validated @RequestBody AppraisalAssessment appraisalAssessment) {

tangzhaoqian committed
1633
		Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
1634 1635
				.eq(JxglAppraisal::getId, appraisalAssessment.getAppraisalId()).in(JxglAppraisal::getSts,
						AppraisalSts.ASSESSMENT_COMPLETE.getType(), AppraisalSts.TERMINATION_ASSESSMENT.getType(),
tangzhaoqian committed
1636
						AppraisalSts.PERFORMANCE_ARCHIVE.getType()));
1637

tangzhaoqian committed
1638 1639 1640
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1641

tangzhaoqian committed
1642
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1643 1644
				.eq(JxglAppraisal::getId, appraisalAssessment.getAppraisalId()).select(JxglAppraisal::getId));

tangzhaoqian committed
1645
		if (appraisal == null) {
1646
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1647
		}
1648 1649 1650 1651

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1652 1653 1654
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1655

tangzhaoqian committed
1656
		if (ProcessType.RESULT_VERIFICATION.getType() == processNode.getProcessType()) {
1657

tangzhaoqian committed
1658
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1659
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1660
			}
1661 1662 1663 1664 1665

			JxglAppraisalAssessment.builder().id(appraisalAssessment.getAppraisalAssessmentId())
					.comprehensiveScore(appraisalAssessment.getScore()).level(appraisalAssessment.getLevel()).build()
					.updateById();

tangzhaoqian committed
1666 1667 1668 1669 1670 1671 1672
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setRemarks(appraisalAssessment.getRemarks());
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
			appraisalLog.setType(AppraisalLogType.UPDATE_SCORE.getType());
			appraisalLog.insert();
1673 1674

		} else {
tangzhaoqian committed
1675 1676 1677 1678 1679
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
	}
1680

tangzhaoqian committed
1681 1682 1683 1684 1685 1686 1687
	/**
	 * 查询-我的绩效-员工绩效
	 */
	@PostMapping(value = "/selects_my_emp_performance")
	@ApiOperation(value = "25.查询-我的绩效-员工绩效", httpMethod = "POST", notes = "查询-我的绩效-员工绩效")
	@ApiOperationSupport(order = 25)
	@Role
1688
	public Result<Object> selectsMEP(@CurrentUser UserBean userBean, @RequestBody EmpPerformanceQuery query) {
tangzhaoqian committed
1689 1690
		Integer orgCode = userBean.getOrgCode();
		Integer empNum = userBean.getEmpNum();
1691
		IPage<JxglAppraisal> page = new Page<JxglAppraisal>(query.getCurrentPage(), query.getTotalPage());
tangzhaoqian committed
1692
		query.setOrgCode(orgCode);
1693 1694 1695

		List<ZzglBmgwM> listBM = zzglBmgwMMapper.selectList(new QueryWrapper<ZzglBmgwM>().lambda().select(ZzglBmgwM::getId)
						.eq(ZzglBmgwM::getOrgCode, userBean.getOrgCode()).eq(ZzglBmgwM::getLeader, empNum));
tangzhaoqian committed
1696 1697 1698 1699
		ZzglBmgwM ZzglBmgwM = CollUtil.getFirst(listBM);
		if (ZzglBmgwM == null) {
			return ResultUtil.success();
		}
1700

tangzhaoqian committed
1701 1702
		List<YgglMainEmp> users = zzglBmgwMService.selectOtherlistent(orgCode, ZzglBmgwM.getId());
		List<Integer> empNums = null;
1703
		if (users != null) {
tangzhaoqian committed
1704 1705 1706 1707
			empNums = users.stream().map(YgglMainEmp::getEmpNum).collect(Collectors.toList());
		}
		query.setEmpNums(empNums);
		IPage<JxglAppraisal> pageA = jxglAppraisalMapper.selectMyEmpByQuery(page, query);
1708

tangzhaoqian committed
1709 1710
		List<JxglAppraisal> listA = pageA.getRecords();

1711 1712
		return ResultUtil.data(pageA, listA);

tangzhaoqian committed
1713
	}
1714

1715
}