JxglController.java 84.5 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
import org.springframework.beans.factory.annotation.Autowired;
ilal committed
9
import org.springframework.beans.factory.annotation.Value;
10 11
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
12 13 14
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
15
import org.springframework.web.bind.annotation.PostMapping;
16
import org.springframework.web.bind.annotation.PutMapping;
17 18
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
tangzhaoqian committed
19
import org.springframework.web.bind.annotation.RequestParam;
20 21
import org.springframework.web.bind.annotation.RestController;

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

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

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

	@Autowired
tangzhaoqian committed
116 117 118 119 120 121 122 123 124
	private YgglService ygglService;
	
	@Autowired
	private JxglService jxglService;
	
	@Autowired
	private ZzglBmgwMService zzglBmgwMService;
	
	@Autowired
tangzhaoqian committed
125
	private ZzglBmgwMMapper zzglBmgwMMapper;
126

tangzhaoqian committed
127
	@Autowired
128
	private JxglBasicSettingMapper jxglBasicSettingMapper;
129

130 131
	@Autowired
	private JxglPerformanceRatingMapper jxglPerformanceRatingMapper;
132

133 134
	@Autowired
	private JxglAppraisalTMapper jxglAppraisalTMapper;
135

136 137
	@Autowired
	private JxglAppraisalIndicatorsTMapper jxglAppraisalIndicatorsTMapper;
138

139 140
	@Autowired
	private JxglAppraisalItemTMapper jsxglAppraisalItemTMapper;
141

tangzhaoqian committed
142 143
	@Autowired
	private JxglAppraisalAssessmentMapper jxglAppraisalAssessmentMapper;
144

tangzhaoqian committed
145 146
	@Autowired
	private JxglAppraisalIndicatorsAssessmentMapper jxglAppraisalIndicatorsAssessmentMapper;
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164

	@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
165
	
166 167
	@Autowired
	private JxglAppraisalItemMapper jxglAppraisalItemMapper;
tangzhaoqian committed
168 169 170
	
	@Autowired
	private QyzxEmpEntAssoMapper qyzxEmpEntAssoMapper;
171 172

	// TODO 基础设置
173 174 175 176 177 178
	/**
	 * 新增或编辑-基础设置
	 */
	@PostMapping(value = "/save_basic_setting")
	@ApiOperation(value = "1.新增或编辑-基础设置", httpMethod = "POST", notes = "新增或编辑-审批模板组")
	@ApiOperationSupport(order = 1)
179
	@Role
180 181
	public Result<Object> saveAtg(@CurrentUser UserBean userBean, @Validated @RequestBody JxglBasicSetting basicSetting)
			throws Exception {
182
		Integer orgCode = userBean.getOrgCode();
183

184
		List<JxglPerformanceRating> listPr = basicSetting.getPerformanceRatings();
tangzhaoqian committed
185
		if (CollectionUtil.isNotEmpty(listPr)) {
186
			for (JxglPerformanceRating pr : listPr) {
187
				if (pr.getSectionMaxScore() > basicSetting.getMaxScore()) {
188 189 190
					return ResultUtil.error("区间值不能超过最高分");
				} else if (pr.getSectionMinScore() >= pr.getSectionMaxScore()) {
					return ResultUtil.error("区间值设置不正确");
191 192 193 194
				}
			}
		}
		JxglBasicSetting bS = jxglBasicSettingMapper.selectOne(new QueryWrapper<JxglBasicSetting>().lambda()
195
				.select(JxglBasicSetting::getId).eq(JxglBasicSetting::getOrgCode, orgCode));
196 197 198 199 200
		if (bS != null) {
			// 删除 绩效等级
			jxglPerformanceRatingMapper.delete(new QueryWrapper<JxglPerformanceRating>().lambda()
					.eq(JxglPerformanceRating::getBasicSettingId, bS.getId()));
			// 删除 基础设置
201 202
			jxglBasicSettingMapper
					.delete(new QueryWrapper<JxglBasicSetting>().lambda().eq(JxglBasicSetting::getOrgCode, orgCode));
203
		}
204

205 206
		basicSetting.setOrgCode(orgCode);
		basicSetting.insert();
tangzhaoqian committed
207
		if (CollectionUtil.isNotEmpty(listPr)) {
208 209 210 211 212 213 214
			listPr.stream().forEach(pr -> pr.setBasicSettingId(basicSetting.getId()));
			int i = jxglPerformanceRatingMapper.insertList(listPr);
		}

		return ResultUtil.success();

	}
215
	
216 217 218 219 220 221
	/**
	 * 查询-基础设置
	 */
	@GetMapping(value = "/select_basic_setting")
	@ApiOperation(value = "2.查询-基础设置", httpMethod = "GET", notes = "查询-基础设置")
	@ApiOperationSupport(order = 2)
222 223
	public Result<Object> selectAT(@CurrentUser UserBean userBean) {

224
		JxglBasicSetting bS = jxglService.selectAT(userBean.getOrgCode());
225
		
226
		return ResultUtil.data(bS);
227

228
	}
229 230

	// TODO 考核模板
231 232 233 234 235 236
	/**
	 * 新增或编辑-考核模板
	 */
	@PostMapping(value = "/save_appraisal_t")
	@ApiOperation(value = "3.新增或编辑-考核模板", httpMethod = "POST", notes = "新增或编辑-考核模板")
	@ApiOperationSupport(order = 3)
237
	@Role
238 239 240 241 242
	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) {
243
			jxglAppraisalT.updateById();
244
		} else {
ilal committed
245 246 247 248 249 250 251 252 253
			
			List<JxglAppraisalT> alt = JxglAppraisalT.builder().build().selectList(new QueryWrapper<JxglAppraisalT>().lambda().eq(JxglAppraisalT::getOrgCode, userBean.getOrgCode())
					.eq(JxglAppraisalT::getName, jxglAppraisalT.getName()));
			if(alt.size() > 0) {
				return ResultUtil.error("模板名称不允许重复");
			}else {
				jxglAppraisalT.setOrgCode(userBean.getOrgCode());
				jxglAppraisalT.insert();
			}
254 255
		}
		LambdaQueryWrapper<JxglAppraisalIndicatorsT> q = new QueryWrapper<JxglAppraisalIndicatorsT>().lambda()
256 257 258 259 260
				.eq(JxglAppraisalIndicatorsT::getAppraisalTId, jxglAppraisalT.getId());

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

tangzhaoqian committed
261
		List<Integer> listAITId = CollectionUtil.isNotEmpty(listAIT)
262 263 264
				? listAIT.stream().map(JxglAppraisalIndicatorsT::getId).collect(Collectors.toList())
				: null;

265 266 267
		// 删除 原 考核指标模板
		jxglAppraisalIndicatorsTMapper.delete(q);
		// 删除 原 考核项模板
tangzhaoqian committed
268
		if (CollectionUtil.isNotEmpty(listAITId)) {
269 270 271
			jsxglAppraisalItemTMapper.delete(new QueryWrapper<JxglAppraisalItemT>().lambda()
					.in(JxglAppraisalItemT::getAppraisalIndicatorsTId, listAITId));
		}
272

273
		List<JxglAppraisalIndicatorsT> aITs = jxglAppraisalT.getAppraisalIndicatorsTs();
274
		
tangzhaoqian committed
275
		if (CollectionUtil.isNotEmpty(aITs)) {
276
			
tangzhaoqian committed
277
//			Integer weightSum = 0;
278 279 280 281 282
			for (JxglAppraisalIndicatorsT aIT : aITs) {
				
				if (aIT.getType() == null) {
					throw new CustomException("指标类型未设置");
				}
283
				Integer weightNum = aIT.getWeight() == null ? 0 : aIT.getWeight();
tangzhaoqian committed
284
//				weightSum += weightNum;
285 286
				
				aIT.setWeight(weightNum);
287 288 289 290 291 292 293 294 295 296 297
				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();
298
				}
299

300
			}
301
			
tangzhaoqian committed
302 303
//			if (!weightSum.equals(100))
//				throw new CustomException("权重总和要等于 100%");
304
			
305 306
		}
		return ResultUtil.success();
307
	}
308

309 310 311
	/**
	 * 查询-考核模板-列表
	 */
tangzhaoqian committed
312 313
	@PostMapping(value = "/selects_appraisal_t")
	@ApiOperation(value = "4.查询-考核模板-列表", httpMethod = "POST", notes = "查询-考核模板-列表")
314
	@ApiOperationSupport(order = 4)
315 316 317 318 319
	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,
320 321 322 323
				new QueryWrapper<JxglAppraisalT>().lambda()
				.eq(JxglAppraisalT::getOrgCode, userBean.getOrgCode())
				.orderByDesc(JxglAppraisalT::getId)
				);
324

325
		List<JxglAppraisalT> listAT = pageAT.getRecords();
326

327
		return ResultUtil.data(pageAT, listAT);
328

329
	}
330

331 332 333 334 335 336
	/**
	 * 查询-考核模板-详情
	 */
	@GetMapping(value = "/selects_appraisal_t/{id}")
	@ApiOperation(value = "5.查询-考核模板-详情", httpMethod = "GET", notes = "查询-考核模板-详情")
	@ApiOperationSupport(order = 5)
337
	@Role
338 339
	public Result<Object> selectAT(@CurrentUser UserBean userBean, @PathVariable Integer id) {

340
		JxglAppraisalT aT = jxglAppraisalTMapper.selectDetailById(id);
341

342
		return ResultUtil.data(aT);
343

344
	}
345

346 347 348 349 350 351
	/**
	 * 删除-考核模板
	 */
	@DeleteMapping(value = "/del_appraisal_t/{id}")
	@ApiOperation(value = "6.删除-考核模板", httpMethod = "DELETE", notes = "删除-考核模板")
	@ApiOperationSupport(order = 6)
352
	@Role
353 354 355
	public Result<Object> delAT(@CurrentUser UserBean userBean, @PathVariable Integer id) throws Exception {

		jxglAppraisalTMapper.delete(new QueryWrapper<JxglAppraisalT>().lambda().eq(JxglAppraisalT::getId, id)
356
				.eq(JxglAppraisalT::getOrgCode, userBean.getOrgCode()));
357 358

		return ResultUtil.success();
359

360
	}
361

362 363 364 365 366 367
	/**
	 * 新增-绩效考核
	 */
	@PostMapping(value = "/save_performance_appraisal")
	@ApiOperation(value = "7.新增-绩效考核", httpMethod = "POST", notes = "新增-绩效考核")
	@ApiOperationSupport(order = 7)
368 369
	public Result<Object> savePA(@CurrentUser UserBean userBean,
			@Validated @RequestBody PerformanceAppraisal performanceAppraisal) throws Exception {
370
		Integer orgCode = userBean.getOrgCode();
371
		JxglPerformanceAppraisal pA = JxglPerformanceAppraisal.builder().build();
372
		BeanUtil.copyProperties(performanceAppraisal, pA, "processNode", "beingAppraisalPerson");
373

374 375
		List<ProcessNode> listPN = performanceAppraisal.getProcessNode();
		List<BeingAppraisalPerson> listBAP = performanceAppraisal.getBeingAppraisalPerson();
376
		pA.setSts(PerformanceAppraisalSts.TARGET_SETING.getType());
tangzhaoqian committed
377 378 379
		pA.setOrgCode(orgCode);
		pA.setProcessNode(ObjectUtil.serialize(listPN));
		pA.setBeingAppraisalPerson(ObjectUtil.serialize(listBAP));
380

381
		// 被考核人员
382
		List<Integer> listEmpId = listBAP.stream()
383 384 385
				.filter(bAP -> BeingAppraisalType.EMPLOYEE.getType().equals(bAP.getType())
						&& BeingAppraisalSts.NEED.getType().equals(bAP.getSts()))
				.map(BeingAppraisalPerson::getId).collect(Collectors.toList());
386

387 388
		// 被考核部门id
		List<Integer> listDeptId = listBAP.stream()
389 390
				.filter(bAP -> BeingAppraisalType.DEPARTMENT.getType().equals(bAP.getType()))
				.map(BeingAppraisalPerson::getId).collect(Collectors.toList());
391
		List<YgglMainEmp> listEmp2 = ListUtil.toList();
392
		
393 394 395
		for (Integer deptId : listDeptId) {
			CollUtil.addAll(listEmp2, zzglBmgwMService.selectOtherlistent(userBean.getOrgCode(), deptId));
		}
tangzhaoqian committed
396
		if (CollectionUtil.isNotEmpty(listEmp2)) {
397
			// 员工信息数据 去重
398 399
			List<Integer> listEmp2Id = listEmp2.stream().filter(StreamUtils.distinctByKey(e -> e.getEmpNum()))
					.map(YgglMainEmp::getEmpNum).collect(Collectors.toList());
400 401 402
			// 合并 集合
			CollUtil.addAll(listEmpId, listEmp2Id);
		}
403

404 405
		// 无需被考核人id
		List<Integer> listNotEmpId = listBAP.stream()
406 407 408 409
				.filter(bAP -> BeingAppraisalType.EMPLOYEE.getType().equals(bAP.getType())
						&& BeingAppraisalSts.NOT_NEED.getType().equals(bAP.getSts()))
				.map(BeingAppraisalPerson::getId).collect(Collectors.toList());

410 411
		// 去重+过滤掉 无需被考核人id
		listEmpId = listEmpId.stream().filter(e -> !listNotEmpId.contains(e)).distinct().collect(Collectors.toList());
412
		pA.setAppraisalPersonNum(listEmpId.size());
413
		// 新增 绩效考核
414
		pA.insert();
415 416 417 418 419
		// 考核模板
		JxglAppraisalT aT = jxglAppraisalTMapper.selectById(performanceAppraisal.getAppraisalTId());
		if (aT == null) {
			throw new CustomException("考核模板不存在");
		}
420

421 422 423 424 425
		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();
426

ilal committed
427
		Logoutput("listEmpId----" + listEmpId);
428 429 430 431
		for (Integer bAP : listEmpId) {
			// 考核
			appraisal.setPerformanceAppraisalId(pA.getId());
			appraisal.setEmpNum(bAP);
432
			appraisal.setIsEdit(aT.getIsEdit());
433 434 435 436 437
			appraisal.setName(aT.getName());
			appraisal.setAppraisalExplain(aT.getAppraisalExplain());
			appraisal.setSts(AppraisalSts.TARGET_FILL_IN.getType());
			// 新增 考核
			appraisal.insert();
ilal committed
438
			Logoutput("新增 考核:" + appraisal);
439

440 441 442 443 444 445 446 447 448 449 450 451 452
			List<Integer> pNWeights = listPN.stream().filter(p -> p.getProcessType() == 2 || p.getProcessType() == 3 ).map(ProcessNode::getWeight).collect(Collectors.toList());
			Integer sum = 0;
			
			for (Integer w : pNWeights) {
				if (w < 0) {
					throw new CustomException("评分权重不能小于0");
				}
				sum += w;
			}
			if (sum != 100) {
				throw new CustomException("权重总和必须等于100");
			}
			
453 454 455 456 457 458 459 460 461 462 463
			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());
464
				} else {
465 466 467
					processNode.setSts(ProcessNodeSts.NON_EXECUTION.getType());
				}
				processNode.setWeight(pN.getWeight());
468

469 470
				if (ExecuteType.BEING_APPRAISAL_PERSON.getType().equals(executeType)) {
					processNode.setExecutorId(bAP);
471
				} else if (ExecuteType.LEADER.getType().equals(executeType)) {
tangzhaoqian committed
472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491

					Integer leaderId = ygglService.selectLeaderEmpNumById(userBean.getOrgCode(), bAP, pN.getLeaderTier());
					Console.log("bAP:"+bAP);
					Console.log("leaderTier:"+pN.getLeaderTier());
					Console.log("leaderId:"+leaderId);
					if (leaderId == null) {
						
						QyzxEmpEntAsso eEA = qyzxEmpEntAssoMapper.selectOne(new QueryWrapper<QyzxEmpEntAsso>().lambda()
								.select(QyzxEmpEntAsso::getEmpNum)
								.eq(QyzxEmpEntAsso::getOrgCode, orgCode)
								.eq(QyzxEmpEntAsso::getUserType, SysRoleType.U_TYPE_ADMIN.getType()));
				
						leaderId = eEA != null ? eEA.getEmpNum() : null;
						// 当 该企业无管理员时 报错
						if (leaderId == null) {
							throw new CustomException("该企业不存在管理员,请联系客服");
						}
					}
					
					processNode.setExecutorId(leaderId);
492
				} else if (ExecuteType.SPECIFIED_MEMBER.getType().equals(executeType)) {
493 494 495 496
					processNode.setExecutorId(pN.getExecutorId());
				}
				// 新增 流程节点
				processNode.insert();
ilal committed
497
				Logoutput("新增 流程节点:" + processNode);
498

499
			});
500 501 502 503 504 505 506 507 508

			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()));

509
			if (CollectionUtil.isEmpty(listAIT)) {
510 511
				throw new CustomException("考核指标不存在");
			}
512

513
			listAIT.stream().forEach(aIT -> {
514 515 516 517 518
				// 考核指标
				BeanUtil.copyProperties(aIT, appraisalIndicators, "appraisalId", "createTime", "updateTime");
				appraisalIndicators.setAppraisalId(appraisal.getId());
				// 新增 考核指标
				appraisalIndicators.insert();
ilal committed
519
//				Logoutput("新增 考核指标:" + appraisalIndicators);
520 521 522 523 524

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

tangzhaoqian committed
525
				if (CollectionUtil.isNotEmpty(listAItemT)) {
526 527 528 529 530 531
					listAItemT.stream().forEach(aItemT -> {
						BeanUtil.copyProperties(aItemT, appraisalItem, "appraisalIndicatorsTId");
						appraisalItem.setAppraisalIndicatorsId(appraisalIndicators.getId());

						// 新增 考核项
						appraisalItem.insert();
ilal committed
532
//						Logoutput("新增 考核项:" + appraisalItem);
533 534 535
					});
				}

536
			});
537

tangzhaoqian committed
538 539 540 541
//			YgglMainEmp yME = ygglMainEmpMapper.selectOne(new QueryWrapper<YgglMainEmp>().lambda()
//					.select(YgglMainEmp::getName)
//					.eq(YgglMainEmp::getOrgCode, orgCode)
//					.eq(YgglMainEmp::getEmpNum, bAP));
542

543 544
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(bAP);
545
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
546 547 548
			appraisalLog.setType(AppraisalLogType.START.getType());
			appraisalLog.insert();
		}
549

550 551
		return ResultUtil.success();
	}
552

553
	/**
tangzhaoqian committed
554 555 556 557 558 559
	 * 删除-绩效考核
	 */
	@DeleteMapping(value = "/delete_performance_appraisal/{id}")
	@ApiOperation(value = "8.删除-绩效考核", httpMethod = "DELETE", notes = "删除-绩效考核")
	@ApiOperationSupport(order = 8)
	@Role
560 561 562 563 564 565
	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
566 567 568
		if (pA == null) {
			return ResultUtil.error("绩效考核不存在");
		}
569

tangzhaoqian committed
570 571
		List<Integer> aIds = CollUtil.toList();
		List<Integer> aIIds = CollUtil.toList();
572

tangzhaoqian committed
573
		List<JxglAppraisal> listA = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
574 575
				.select(JxglAppraisal::getId).eq(JxglAppraisal::getPerformanceAppraisalId, pA.getId()));

tangzhaoqian committed
576
		aIds = CollectionUtil.isNotEmpty(listA) ? listA.stream().map(JxglAppraisal::getId).collect(Collectors.toList())
577 578
				: aIds;

tangzhaoqian committed
579 580
		// 删除 绩效考核
		jxglPerformanceAppraisalMapper.deleteById(id);
581

582
		if (CollectionUtil.isNotEmpty(aIds)) {
583

tangzhaoqian committed
584 585
			// 批量删除 考核
			jxglAppraisalMapper.deleteBatchIds(aIds);
586

tangzhaoqian committed
587 588 589 590 591 592 593 594 595 596 597 598
			// 批量删除 流程节点
			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));
599 600 601 602 603 604

			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));

tangzhaoqian committed
605
			aIIds = CollectionUtil.isNotEmpty(listAI) 
606 607 608
					? listAI.stream().map(JxglAppraisalIndicators::getId).collect(Collectors.toList())
					: aIIds;

tangzhaoqian committed
609
			if (aIIds.size() > 0) {
610

tangzhaoqian committed
611
				jxglAppraisalIndicatorsMapper.deleteBatchIds(aIIds);
612

tangzhaoqian committed
613
				// 批量删除 考核指标评定
614 615
				jxglAppraisalIndicatorsAssessmentMapper.delete(new QueryWrapper<JxglAppraisalIndicatorsAssessment>()
						.lambda()
tangzhaoqian committed
616 617
						.eq(aIds.size() == 1, JxglAppraisalIndicatorsAssessment::getAppraisalIndicatorsId, aIIds)
						.in(aIds.size() > 1, JxglAppraisalIndicatorsAssessment::getAppraisalIndicatorsId, aIIds));
618

tangzhaoqian committed
619 620 621 622
				// 批量删除 考核项
				jxglAppraisalItemMapper.delete(new QueryWrapper<JxglAppraisalItem>().lambda()
						.eq(aIds.size() == 1, JxglAppraisalItem::getAppraisalIndicatorsId, aIIds)
						.in(aIds.size() > 1, JxglAppraisalItem::getAppraisalIndicatorsId, aIIds));
623

tangzhaoqian committed
624 625
			}
		}
626

tangzhaoqian committed
627 628
		return ResultUtil.success();
	}
629

tangzhaoqian committed
630 631 632 633
	/**
	 * 修改-绩效管理状态
	 */
	@PostMapping(value = "/update_performance_appraisal_sts")
tangzhaoqian committed
634 635
	@ApiOperation(value = "9.修改-绩效管理状态", httpMethod = "POST", notes = "修改-绩效管理状态")
	@ApiOperationSupport(order = 9)
636 637
	public Result<Object> updatePAS(@CurrentUser UserBean userBean,
			@Validated @RequestBody AppraisalUpdateSts appraisalUpdateSts) {
638
		
lal committed
639 640 641 642 643
		//查询绩效组是否还存在可开启的绩效
//		JxglPerformanceAppraisal appisal = JxglPerformanceAppraisal.builder().id(appraisalUpdateSts.getId()).build().selectById();
//		if(appisal.getAppraisalPersonNum() == 1) {
//			
//		}
lal committed
644 645
		if(appraisalUpdateSts.getSts() == 0) {//开启评分
			List<JxglAppraisal> ais = JxglAppraisal.builder().build().selectList(new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getPerformanceAppraisalId, appraisalUpdateSts.getId())
lal committed
646
					.lt(JxglAppraisal::getSts, 2));
lal committed
647 648 649 650
			if(ais.size() == 0) {
				return ResultUtil.error("已无可开启的绩效评分");
			}
		}else if(appraisalUpdateSts.getSts() == 1) {//开启结果确认
lal committed
651 652 653
//			List<JxglAppraisal> ais = jxglAppraisalMapper.selectListByappraisalid(appraisalUpdateSts.getId());
			List<JxglAppraisal> ais = JxglAppraisal.builder().build().selectList(new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getPerformanceAppraisalId, appraisalUpdateSts.getId())
					.lt(JxglAppraisal::getSts, 4));
lal committed
654 655 656 657
			if(ais.size() == 0) {
				return ResultUtil.error("已无可开启的绩效结果确认");
			}
		}
lal committed
658
		
lal committed
659 660 661 662 663 664 665 666 667
//			JxglPerformanceAppraisal performanceAppraisal = jxglPerformanceAppraisalMapper
//					.selectOne(new QueryWrapper<JxglPerformanceAppraisal>().lambda()
//							.eq(JxglPerformanceAppraisal::getId, appraisalUpdateSts.getId())
//							.eq(JxglPerformanceAppraisal::getSts, appraisalUpdateSts.getSts()));
			
		JxglPerformanceAppraisal performanceAppraisal = jxglPerformanceAppraisalMapper
				.selectOne(new QueryWrapper<JxglPerformanceAppraisal>().lambda()
						.eq(JxglPerformanceAppraisal::getId, appraisalUpdateSts.getId()));
		
lal committed
668 669 670 671 672 673 674 675 676 677 678 679 680
			if (performanceAppraisal == null && appraisalUpdateSts.getSts() != PerformanceAppraisalSts.PERFORMANCE_ARCHIVE.getType()) {
				return ResultUtil.error("绩效考核不存在");
			}
			
			if (performanceAppraisal.getSts() == PerformanceAppraisalSts.TERMINATION_ASSESSMENT.getType()) {
				// 修改 绩效考核状态
				jxglPerformanceAppraisalMapper
						.updateById(JxglPerformanceAppraisal.builder()
								.id(appraisalUpdateSts.getId())
								.sts(PerformanceAppraisalSts.PERFORMANCE_ARCHIVE.getType())
								.build());
				return ResultUtil.success();
			}
681

lal committed
682 683
			Integer sts = null;
			Integer id = performanceAppraisal.getId();
684

lal committed
685 686 687 688
			List<JxglAppraisal> listA = CollUtil.toList();
			List<Integer> aIds = CollUtil.toList();
			List<JxglProcessNode> listPN = CollUtil.toList();
			List<Integer> pNIds = CollUtil.toList();
689

lal committed
690 691 692
			switch (performanceAppraisal.getSts()) {
			case 0:
				sts = PerformanceAppraisalSts.PERFORMANCE_SCORE.getType();
693

lal committed
694 695
				listA = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
						.select(JxglAppraisal::getId).eq(JxglAppraisal::getPerformanceAppraisalId, id));
696

lal committed
697 698
				if (CollectionUtil.isNotEmpty(listA)) {
					aIds = listA.stream().map(JxglAppraisal::getId).collect(Collectors.toList());
699 700 701

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

tangzhaoqian committed
705
					if (CollectionUtil.isNotEmpty(listPN)) {
706
						aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());
707

lal committed
708 709 710 711 712 713 714 715 716 717
						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()));
						if (CollectionUtil.isNotEmpty(listPN)) {
							pNIds = listPN.stream().map(JxglProcessNode::getId).collect(Collectors.toList());
							aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());

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

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

lal committed
722
						}
723 724
					}
				}
725

lal committed
726 727 728
				break;
			case 1:
				sts = PerformanceAppraisalSts.RESULT_VERIFICATION.getType();
729

lal committed
730 731
				listA = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
						.select(JxglAppraisal::getId).eq(JxglAppraisal::getPerformanceAppraisalId, id));
732

lal committed
733 734
				if (CollectionUtil.isNotEmpty(listA)) {
					aIds = listA.stream().map(JxglAppraisal::getId).collect(Collectors.toList());
735 736 737

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

tangzhaoqian committed
741
					if (CollectionUtil.isNotEmpty(listPN)) {
742
						aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());
743

lal committed
744 745 746 747 748 749 750 751 752 753
						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()));
						if (CollectionUtil.isNotEmpty(listPN)) {
							pNIds = listPN.stream().map(JxglProcessNode::getId).collect(Collectors.toList());
							aIds = listPN.stream().map(JxglProcessNode::getAppraisalId).collect(Collectors.toList());

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

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

lal committed
758
						}
759 760
					}
				}
lal committed
761 762 763
				break;
			case 2:
				sts = PerformanceAppraisalSts.PERFORMANCE_ARCHIVE.getType();
764

lal committed
765 766
				listA = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
						.select(JxglAppraisal::getId).eq(JxglAppraisal::getPerformanceAppraisalId, id));
767

lal committed
768 769
				if (CollectionUtil.isNotEmpty(listA)) {
					aIds = listA.stream().map(JxglAppraisal::getId).collect(Collectors.toList());
770

lal committed
771 772 773 774
					listPN = jxglProcessNodeMapper.selectList(
							new QueryWrapper<JxglProcessNode>().lambda().in(JxglProcessNode::getAppraisalId, aIds)
									.eq(JxglProcessNode::getProcessType, ProcessType.RESULT_VERIFICATION.getType())
									.in(JxglProcessNode::getSts, ProcessNodeSts.NON_EXECUTION.getType(),ProcessNodeSts.IN_EXECUTION.getType()));
775

lal committed
776 777 778
					if (CollectionUtil.isNotEmpty(listPN)) {
						throw new CustomException("所有考核 确认结果后才能 归档");
					}
779
				}
lal committed
780 781 782 783 784 785 786 787
				break;
			case 3:
				// 修改 考核状态
				jxglAppraisalMapper.update(
						JxglAppraisal.builder().performanceAppraisalId(id).sts(AppraisalSts.PERFORMANCE_ARCHIVE.getType()).build(),
						new UpdateWrapper<JxglAppraisal>().lambda()
								.eq(JxglAppraisal::getPerformanceAppraisalId, id)
						);
788
				
lal committed
789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806
				List<JxglAppraisal> listAppraisal = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
						.select(JxglAppraisal::getId)
						.eq(JxglAppraisal::getPerformanceAppraisalId, performanceAppraisal.getId()));
				
				if (CollectionUtil.isNotEmpty(listAppraisal)) {
					
					List<Integer> aIds2 = listAppraisal.stream().map(JxglAppraisal::getId).collect(Collectors.toList());
					if (CollectionUtil.isNotEmpty(aIds2)) {
						JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
						aIds2.forEach(aId -> {
							appraisalLog.setId(null);
							appraisalLog.setAppraisalId(aId);
							appraisalLog.setExecutorId(userBean.getEmpNum());
							appraisalLog.setExecutorName(userBean.getUserInfo().getName());
							appraisalLog.setType(AppraisalLogType.PERFORMANCE_ARCHIVE.getType());
							appraisalLog.insert();
						});
					}
807
				}
lal committed
808 809 810
				break;
			default:
				break;
811
			}
812

lal committed
813 814 815
			// 修改 绩效考核状态
			jxglPerformanceAppraisalMapper
					.updateById(JxglPerformanceAppraisal.builder().id(appraisalUpdateSts.getId()).sts(sts).build());
816

lal committed
817 818
			return ResultUtil.success();
			
lal committed
819
		
820 821 822 823 824 825
	}
	
	/**
	 * 终止-绩效考核
	 */
	@PutMapping(value = "/termination_performance_appraisal")
tangzhaoqian committed
826 827
	@ApiOperation(value = "10.终止-绩效考核", httpMethod = "PUT", notes = "终止-绩效考核")
	@ApiOperationSupport(order = 10)
tangzhaoqian committed
828 829
	@Role
	@Log(title = "终止-绩效考核")
830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846
	public Result<Object> terminationPA(@CurrentUser UserBean userBean,@NotNull @RequestParam Integer id) {

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

		if (performanceAppraisal == null) {
			return ResultUtil.error("绩效考核不存在");
		}
		if (performanceAppraisal.getSts() == PerformanceAppraisalSts.TERMINATION_ASSESSMENT.getType()) {
			return ResultUtil.error("考核已终止");
		}

		// 修改 绩效考核状态
		jxglPerformanceAppraisalMapper
				.updateById(JxglPerformanceAppraisal.builder().id(id).sts(PerformanceAppraisalSts.TERMINATION_ASSESSMENT.getType()).build());

847
		// 修改 考核状态
848
		jxglAppraisalMapper.update(
849
				JxglAppraisal.builder().performanceAppraisalId(id).sts(AppraisalSts.TERMINATION_ASSESSMENT.getType()).build(),
850
				new UpdateWrapper<JxglAppraisal>().lambda()
851 852
						.eq(JxglAppraisal::getPerformanceAppraisalId, id)
						);
853 854 855 856 857 858 859 860 861
		
		List<JxglAppraisal> listAppraisal = jxglAppraisalMapper.selectList(new QueryWrapper<JxglAppraisal>().lambda()
				.select(JxglAppraisal::getId)
				.eq(JxglAppraisal::getPerformanceAppraisalId, performanceAppraisal.getId()));
		
		if (CollectionUtil.isNotEmpty(listAppraisal)) {
			
			List<Integer> aIds = listAppraisal.stream().map(JxglAppraisal::getId).collect(Collectors.toList());
			if (CollectionUtil.isNotEmpty(aIds)) {
862
				JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
863
				aIds.forEach(aId -> {
864
					appraisalLog.setId(null);
865 866 867 868 869 870 871 872 873
					appraisalLog.setAppraisalId(aId);
					appraisalLog.setExecutorId(userBean.getEmpNum());
					appraisalLog.setExecutorName(userBean.getUserInfo().getName());
					appraisalLog.setType(AppraisalLogType.TERMINATION_ASSESSMENT.getType());
					appraisalLog.insert();
				});
			}
		}
		
874
		return ResultUtil.success();
tangzhaoqian committed
875
	}
876

tangzhaoqian committed
877 878 879 880
	/**
	 * 删除-所有-绩效考核
	 */
	@DeleteMapping(value = "/delete_all_pa")
881 882 883
	@ApiOperation(value = "99.删除-所有-绩效考核", httpMethod = "DELETE", notes = "删除-所有-绩效考核")
	@ApiOperationSupport(order = 99)
	@Role
884 885 886 887 888 889 890 891 892 893 894
	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
895 896
		return ResultUtil.success("删除-所有-绩效考核");
	}
897

tangzhaoqian committed
898
	/**
899
	 * 查询-绩效考核-列表-归档
900
	 */
901
	@PostMapping(value = "/selects_performance_appraisal_archive")
tangzhaoqian committed
902 903
	@ApiOperation(value = "11.查询-绩效考核-列表-归档", httpMethod = "POST", notes = "查询-绩效考核-列表-归档")
	@ApiOperationSupport(order = 11)
904
	@Role
905 906 907 908 909
	public Result<Object> selectsPAArchive(@CurrentUser UserBean userBean,
			@RequestBody PerformanceAppraisalQuery query) {

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

910
		query.setOrgCode(userBean.getOrgCode());
911

912
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectArchiveListByQuery(page, query);
913

914 915
		List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();

916
		return ResultUtil.data(pagePA, listPA);
917
	}
918

919 920 921 922
	/**
	 * 查询-绩效考核-列表-非归档
	 */
	@PostMapping(value = "/selects_performance_appraisal")
tangzhaoqian committed
923 924
	@ApiOperation(value = "12.查询-绩效考核-列表-非归档", httpMethod = "POST", notes = "查询-绩效考核-列表-非归档")
	@ApiOperationSupport(order = 12)
925
	@Role
926 927 928 929
	public Result<Object> selectsPA(@CurrentUser UserBean userBean, @RequestBody PerformanceAppraisalQuery query) {

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

930
		query.setOrgCode(userBean.getOrgCode());
931

932
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectListByQuery(page, query);
933

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

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

939 940 941 942
	/**
	 * 查询-考核-列表
	 */
	@PostMapping(value = "/selects_appraisal")
tangzhaoqian committed
943 944
	@ApiOperation(value = "13.查询-考核-列表", httpMethod = "POST", notes = "查询-考核-列表")
	@ApiOperationSupport(order = 13)
945
	@Role
946 947 948
	public Result<Object> selectsA(@CurrentUser UserBean userBean, @RequestBody AppraisalQuery query) {

		IPage<JxglAppraisal> page = new Page<JxglAppraisal>(query.getCurrentPage(), query.getTotalPage());
949
		query.setOrgCode(userBean.getOrgCode());
950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966
		
		List<Integer> empNums = CollUtil.toList();
		
		if (query.getBmId() != null) {
			List<YgglMainEmp> usersQuery = zzglBmgwMService.selectOtherlistent(userBean.getOrgCode(), query.getBmId());
			if (usersQuery != null) {
				empNums = usersQuery.stream().map(YgglMainEmp::getEmpNum).collect(Collectors.toList());
			}else {
				return ResultUtil.data(null);
			}
			
			if (empNums == null || empNums.size() == 0) {
				return ResultUtil.data(null);
			}
		}
		
		query.setEmpNums(empNums);
967

968
		IPage<JxglAppraisal> pageA = jxglAppraisalMapper.selectListByQuery(page, query);
969

970 971
		List<JxglAppraisal> listPA = pageA.getRecords();

972 973
		return ResultUtil.data(pageA, listPA);

974
	}
975

976 977 978 979
	/**
	 * 查询-考核-详情
	 */
	@GetMapping(value = "/select_appraisal/{id}")
tangzhaoqian committed
980 981
	@ApiOperation(value = "14.查询-考核-详情", httpMethod = "GET", notes = "查询-考核-详情")
	@ApiOperationSupport(order = 14)
982 983
	public Result<Object> selectA(@CurrentUser UserBean userBean, @PathVariable Integer id) {

984
		AppraisalDetail aD = jxglAppraisalMapper.selectDetailById(userBean.getOrgCode(), id);
985

tangzhaoqian committed
986
		if (aD != null) {
987 988 989 990
			JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper
					.selectOne(new QueryWrapper<JxglPerformanceAppraisal>().lambda().eq(JxglPerformanceAppraisal::getId,
							aD.getPerformanceAppraisalId()));

991 992
			
			
tangzhaoqian committed
993 994
			if (pA != null && pA.getIsVisible() == 0) {
				return ResultUtil.data(aD);
995
			} else {
tangzhaoqian committed
996 997
				List<JxglAppraisalAssessment> listAA = aD.getAppraisalAssessments();
				if (listAA != null) {
998 999
					listAA = listAA.stream().filter(a -> !userBean.getEmpNum().equals(a.getAssessorId()))
							.collect(Collectors.toList());
tangzhaoqian committed
1000 1001 1002 1003
					aD.setAppraisalAssessments(listAA);
				}
			}
		}
1004

1005
		return ResultUtil.data(aD);
1006

1007
	}
1008

1009 1010 1011 1012
	/**
	 * 修改-流程执行人-转派
	 */
	@PutMapping(value = "/update_process_node")
tangzhaoqian committed
1013 1014
	@ApiOperation(value = "15.修改-流程执行人-转派", httpMethod = "PUT", notes = "修改-流程执行人-转派")
	@ApiOperationSupport(order = 15)
1015
	@Role
1016 1017 1018
	public Result<Object> updatePN(@CurrentUser UserBean userBean,
			@Validated @RequestBody ProcessNodeUpdate processNodeUpdate) {

tangzhaoqian committed
1019
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1020 1021
				.eq(JxglAppraisal::getId, processNodeUpdate.getAppraisalId()).select(JxglAppraisal::getId));

tangzhaoqian committed
1022
		if (appraisal == null) {
1023
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1024
		}
1025

tangzhaoqian committed
1026
		Integer count = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
1027 1028
				.eq(JxglAppraisal::getId, processNodeUpdate.getAppraisalId()).in(JxglAppraisal::getSts,
						AppraisalSts.ASSESSMENT_COMPLETE.getType(), AppraisalSts.TERMINATION_ASSESSMENT.getType(),
1029
						AppraisalSts.PERFORMANCE_ARCHIVE.getType()));
1030

tangzhaoqian committed
1031
		if (count > 0) {
1032 1033
			return ResultUtil.error("考核已结束");
		}
1034

tangzhaoqian committed
1035 1036 1037
		count = jxglProcessNodeMapper.selectCount(new QueryWrapper<JxglProcessNode>().lambda()
				.eq(JxglProcessNode::getAppraisalId, processNodeUpdate.getAppraisalId())
				.ne(JxglProcessNode::getSts, ProcessNodeSts.EXECUTED.getType()));
1038

tangzhaoqian committed
1039 1040 1041
		if (count <= 0) {
			return ResultUtil.error("流程已执行,无法更改");
		}
1042

1043 1044
		JxglProcessNode pN = JxglProcessNode.builder().build();
		BeanUtil.copyProperties(processNodeUpdate, pN);
1045

1046
		pN.updateById();
1047

1048 1049
		return ResultUtil.data(pN);
	}
1050

1051 1052 1053 1054
	/**
	 * 终止-考核
	 */
	@PutMapping(value = "/termination_assessment")
tangzhaoqian committed
1055 1056
	@ApiOperation(value = "16.终止-考核", httpMethod = "PUT", notes = "终止-考核")
	@ApiOperationSupport(order = 16)
1057
	@Role
tangzhaoqian committed
1058
	@Log(title = "终止-考核")
1059 1060
	public Result<Object> terminationAssessment(@CurrentUser UserBean userBean, @NotNull @RequestParam Integer id) {

tangzhaoqian committed
1061
		JxglAppraisal appraisal = jxglAppraisalMapper.selectById(id);
1062

tangzhaoqian committed
1063
		if (appraisal == null) {
1064 1065
			return ResultUtil.error("考核不存在");
		} else if (appraisal.getSts() <= AppraisalSts.RESULT_VERIFICATION.getType()) {
tangzhaoqian committed
1066
			JxglAppraisal.builder().id(id).sts(AppraisalSts.TERMINATION_ASSESSMENT.getType()).build().updateById();
1067
			
lal committed
1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079
			//查询所属绩效组是否为一人
			JxglPerformanceAppraisal appisal = JxglPerformanceAppraisal.builder().id(appraisal.getPerformanceAppraisalId()).build().selectById();
			if(appisal.getAppraisalPersonNum() == 1) {
				//绩效考核改为 “4, "终止考核"”
				jxglPerformanceAppraisalMapper.updateById(JxglPerformanceAppraisal.builder().id(appraisal.getPerformanceAppraisalId()).sts(PerformanceAppraisalSts.TERMINATION_ASSESSMENT.getType()).build());
			}else {
				List<JxglAppraisal> ais = JxglAppraisal.builder().build().selectList(new QueryWrapper<JxglAppraisal>().lambda().eq(JxglAppraisal::getPerformanceAppraisalId, appraisal.getPerformanceAppraisalId())
						.eq(JxglAppraisal::getSts, 0));
				if(ais.size() == 0) {
					//绩效考核改为 “4, "终止考核"”
					jxglPerformanceAppraisalMapper.updateById(JxglPerformanceAppraisal.builder().id(appraisal.getPerformanceAppraisalId()).sts(PerformanceAppraisalSts.TERMINATION_ASSESSMENT.getType()).build());
				}
lal committed
1080 1081
				
				JxglProcessNode.builder().sts(2).build().update(new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, id));
lal committed
1082 1083
			}
			
1084 1085 1086 1087 1088 1089
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
			appraisalLog.setType(AppraisalLogType.TERMINATION_ASSESSMENT.getType());
			appraisalLog.insert();
1090
		} else if (appraisal.getSts() == AppraisalSts.ASSESSMENT_COMPLETE.getType()) {
tangzhaoqian committed
1091
			return ResultUtil.error("考核已完成,无法终止");
1092
		} else if (appraisal.getSts() == AppraisalSts.TERMINATION_ASSESSMENT.getType()) {
tangzhaoqian committed
1093
			return ResultUtil.error("考核已终止,无法重复终止");
1094
		} else if (appraisal.getSts() == AppraisalSts.PERFORMANCE_ARCHIVE.getType()) {
tangzhaoqian committed
1095 1096
			return ResultUtil.error("考核已归档,无法终止");
		}
1097
		return ResultUtil.success();
1098
	}
1099

1100
	/**
1101
	 * 查询-绩效管理-员工绩效-汇总
1102 1103
	 */
	@PostMapping(value = "/selects_emp_performance")
tangzhaoqian committed
1104 1105
	@ApiOperation(value = "17.查询-绩效管理-员工绩效-汇总", httpMethod = "POST", notes = " 查询-绩效管理-员工绩效-汇总")
	@ApiOperationSupport(order = 17)
1106
	@Role
1107 1108 1109
	public Result<Object> selectsEP(@CurrentUser UserBean userBean, @RequestBody EmpPerformanceQuery query) {

		IPage<JxglAppraisal> page = new Page<JxglAppraisal>(query.getCurrentPage(), query.getTotalPage());
1110
		query.setOrgCode(userBean.getOrgCode());
1111 1112 1113 1114 1115
		
		List<Integer> empNums = CollUtil.toList();
		
		if (query.getBmId() != null) {
			List<YgglMainEmp> usersQuery = zzglBmgwMService.selectOtherlistent(userBean.getOrgCode(), query.getBmId());
1116
			if (CollectionUtil.isNotEmpty(usersQuery)) {
1117 1118 1119 1120 1121
				empNums = usersQuery.stream().map(YgglMainEmp::getEmpNum).collect(Collectors.toList());
			}else {
				return ResultUtil.data(null);
			}
			
1122
			if (CollectionUtil.isEmpty(empNums)) {
1123 1124 1125 1126 1127
				return ResultUtil.data(null);
			}
		}
		
		query.setEmpNums(empNums);
1128

1129
		IPage<JxglAppraisal> pageA = jxglAppraisalMapper.selectListEmpByQuery(page, query);
1130

1131 1132
		List<JxglAppraisal> listA = pageA.getRecords();

1133 1134
		return ResultUtil.data(pageA, listA);

1135
	}
1136

1137 1138 1139 1140
	/**
	 * 查询-某员工考核-列表
	 */
	@PostMapping(value = "/selects_emp_appraisal")
tangzhaoqian committed
1141 1142
	@ApiOperation(value = "18.查询-某员工考核-列表", httpMethod = "POST", notes = "查询-某员工考核-列表")
	@ApiOperationSupport(order = 18)
lal committed
1143
//	@Role
1144 1145 1146 1147
	public Result<Object> selectsEA(@CurrentUser UserBean userBean,@Validated @RequestBody EmpAppraisalQuery query) {

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

1150
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectListEmpByQuery(page, query);
1151

1152 1153
		List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();

1154 1155
		return ResultUtil.data(pagePA, listPA);

1156
	}
1157 1158 1159 1160 1161
	
	/**
	 * 查询-我的绩效-考核我的-列表
	 */
	@PostMapping(value = "/selects_my_appraisal")
tangzhaoqian committed
1162 1163
	@ApiOperation(value = "19.查询-我的绩效-考核我的-列表", httpMethod = "POST", notes = "查询-我的绩效-考核我的-列表")
	@ApiOperationSupport(order = 19)
1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177
	public Result<Object> selectsMA(@CurrentUser UserBean userBean,@Validated @RequestBody EmpAppraisalQuery query) {
		
		IPage<JxglPerformanceAppraisal> page = new Page<JxglPerformanceAppraisal>(query.getCurrentPage(),
				query.getTotalPage());
		query.setOrgCode(userBean.getOrgCode());
		query.setId(userBean.getEmpNum());
		
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectListEmpByQuery(page, query);
		
		List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();
		
		return ResultUtil.data(pagePA, listPA);
		
	}
1178

1179 1180 1181 1182
	/**
	 * 查询-绩效考核-方案
	 */
	@GetMapping(value = "/selects_performance_appraisal/{id}")
tangzhaoqian committed
1183 1184
	@ApiOperation(value = "20.查询-绩效考核-方案", httpMethod = "GET", notes = "查询-绩效考核-方案")
	@ApiOperationSupport(order = 20)
1185
	@Role
1186 1187
	public Result<Object> selectPA(@CurrentUser UserBean userBean, @PathVariable Integer id) {

1188 1189 1190 1191
		JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper.selectById(id);
		if (pA == null) {
			return ResultUtil.error("方案不存在");
		}
1192 1193 1194 1195 1196 1197 1198 1199 1200
		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())
				.appraisalTId(pA.getAppraisalTId())
1201
				.processNode(ObjectUtil.deserialize(pA.getProcessNode()))
1202 1203
				.beingAppraisalPerson(ObjectUtil.deserialize(pA.getBeingAppraisalPerson()))
				.build();
1204

1205 1206
		return ResultUtil.data(paDto);
	}
1207

tangzhaoqian committed
1208
	/**
1209
	 * 查询-目标待填写/目标待确认/评分/结果待确认-列表
tangzhaoqian committed
1210 1211
	 */
	@PostMapping(value = "/selects_my_performance")
tangzhaoqian committed
1212 1213
	@ApiOperation(value = "21.查询-目标待填写/目标待确认/评分/结果待确认-列表", httpMethod = "POST", notes = "查询")
	@ApiOperationSupport(order = 21)
1214 1215
	public Result<Object> selects(@CurrentUser UserBean userBean,@Validated @RequestBody MyPerformance query) {

tangzhaoqian committed
1216 1217 1218
		IPage<JxglPerformanceAppraisal> page = new Page<JxglPerformanceAppraisal>(query.getCurrentPage(),query.getTotalPage());
		query.setOrgCode(userBean.getOrgCode());
		query.setId(userBean.getEmpNum());
1219 1220 1221 1222 1223 1224
		
		// 当查询的数据不为  2评分,清空 节点状态
		if (query.getSts() != 2) {
			query.setNoteSts(null);
		}
		
tangzhaoqian committed
1225
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectMyByQuery(page, query);
1226

tangzhaoqian committed
1227 1228
		List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();

1229 1230
		return ResultUtil.data(pagePA, listPA);

tangzhaoqian committed
1231
	}
1232 1233 1234 1235 1236
	
	/**
	 * 查询-我的绩效-已处理-列表
	 */
	@PostMapping(value = "/selects_my_performance_processed")
tangzhaoqian committed
1237 1238
	@ApiOperation(value = "22.查询-我的绩效-已处理-列表", httpMethod = "POST", notes = "查询")
	@ApiOperationSupport(order = 22)
1239
	public Result<Object> selectsP(@CurrentUser UserBean userBean, @Validated @RequestBody MyPerformance query) {
1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251

		IPage<JxglPerformanceAppraisal> page = new Page<JxglPerformanceAppraisal>(query.getCurrentPage(),query.getTotalPage());
		query.setOrgCode(userBean.getOrgCode());
		query.setId(userBean.getEmpNum());
		
		IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectMyProcessedByQuery(page, query);

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

		return ResultUtil.data(pagePA, listPA);

	}
1252

tangzhaoqian committed
1253 1254 1255 1256
	/**
	 * 目标填写-保存
	 */
	@PostMapping(value = "/save_target_fill")
tangzhaoqian committed
1257 1258
	@ApiOperation(value = "23.目标填写-保存", httpMethod = "POST", notes = "目标填写-保存")
	@ApiOperationSupport(order = 23)
1259 1260 1261
	public Result<Object> saveTF(@CurrentUser UserBean userBean, @RequestBody AppraisalUpdate appraisalUpdate)
			throws Exception {

tangzhaoqian committed
1262
		Integer id = appraisalUpdate.getId();
1263

tangzhaoqian committed
1264
		Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
1265 1266 1267
				.eq(JxglAppraisal::getId, id).in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
1268 1269 1270
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1271 1272 1273 1274

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

tangzhaoqian committed
1275
		if (appraisal == null) {
1276
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1277
		}
1278 1279 1280 1281

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

tangzhaoqian committed
1286
		if (ProcessType.TARGET_FILL_IN.getType() == processNode.getProcessType()) {
1287

tangzhaoqian committed
1288
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1289
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1290
			}
1291 1292

		} else {
tangzhaoqian committed
1293 1294
			return ResultUtil.error("流程状态异常");
		}
1295

1296
		// 查找 非固定 考核指标
1297
		List<JxglAppraisalIndicators> listAI = jxglAppraisalIndicatorsMapper
1298 1299 1300
				.selectList(new QueryWrapper<JxglAppraisalIndicators>().lambda().select(JxglAppraisalIndicators::getId,
						JxglAppraisalIndicators::getWeight,
						JxglAppraisalIndicators::getIsEditWeight)
1301 1302 1303
						.eq(JxglAppraisalIndicators::getType, IndicatorsType.NOT_FIXATION.getType())
						.eq(JxglAppraisalIndicators::getAppraisalId, id));

tangzhaoqian committed
1304
		List<Integer> appraisalIndicatorIds = listAI != null && listAI.size() > 0
1305 1306 1307
				? listAI.stream().map(JxglAppraisalIndicators::getId).collect(Collectors.toList())
				: null;

1308
		if (appraisalIndicatorIds != null) {
1309

1310 1311 1312 1313
			// 删除 考核项
			jxglAppraisalItemMapper.delete(new QueryWrapper<JxglAppraisalItem>().lambda()
					.in(JxglAppraisalItem::getAppraisalIndicatorsId, appraisalIndicatorIds));
		}
1314

tangzhaoqian committed
1315 1316
		// 删除 考核指标
		jxglAppraisalIndicatorsMapper.delete(new QueryWrapper<JxglAppraisalIndicators>().lambda()
1317
				.eq(JxglAppraisalIndicators::getType, IndicatorsType.NOT_FIXATION.getType())
tangzhaoqian committed
1318
				.eq(JxglAppraisalIndicators::getAppraisalId, id));
1319 1320

		List<JxglAppraisalIndicators> listAI2 = appraisalUpdate.getAppraisalIndicators();
tangzhaoqian committed
1321
		
tangzhaoqian committed
1322
		if (listAI2 != null && listAI2.size() > 0) {
1323 1324 1325 1326 1327 1328 1329 1330 1331 1332
			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
1333
					}
1334 1335
				} else {
					throw new CustomException("保存异常");
tangzhaoqian committed
1336
				}
1337 1338

			});
1339 1340
		}
		
1341

tangzhaoqian committed
1342 1343
		return ResultUtil.success();
	}
1344

tangzhaoqian committed
1345 1346 1347 1348
	/**
	 * 目标填写-提交
	 */
	@PostMapping(value = "/submit_target_fill")
tangzhaoqian committed
1349 1350
	@ApiOperation(value = "24.目标填写-提交", httpMethod = "POST", notes = "目标填写-提交")
	@ApiOperationSupport(order = 24)
1351 1352
	public Result<Object> submitTF(@CurrentUser UserBean userBean, @RequestParam Integer id) {

tangzhaoqian committed
1353
		Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
1354 1355 1356
				.eq(JxglAppraisal::getId, id).in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
1357 1358 1359
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1360 1361 1362 1363

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

tangzhaoqian committed
1364 1365 1366
		if (appraisal == null) {
			return ResultUtil.error("考核不存在");
		}
1367 1368 1369 1370

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

tangzhaoqian committed
1375
		if (ProcessType.TARGET_FILL_IN.getType() == processNode.getProcessType()) {
1376

tangzhaoqian committed
1377
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1378
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1379
			}
1380 1381 1382 1383 1384

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

tangzhaoqian committed
1385
			if (CollectionUtil.isEmpty(listAI)) {
tangzhaoqian committed
1386 1387
				return ResultUtil.error("考核指标不能为空");
			}
1388 1389
			List<Integer> listWeight = listAI.stream().map(JxglAppraisalIndicators::getWeight)
					.collect(Collectors.toList());
tangzhaoqian committed
1390 1391 1392
			Integer weightSum = 0;
			if (listWeight != null && listWeight.size() > 0) {
				for (Integer i : listWeight) {
1393
					i = i == null ? 0 : i;
tangzhaoqian committed
1394 1395 1396 1397 1398 1399
					weightSum += i;
				}
				if (!weightSum.equals(100))
					return ResultUtil.error("权重总和要等于 100%");
			}
			// 修改 目标填写 状态
1400 1401 1402 1403 1404
			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
1405
			// 修改 下一个节点状态
1406 1407 1408 1409 1410 1411 1412 1413
			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
1414 1415 1416 1417 1418 1419
			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();
1420 1421

		} else {
tangzhaoqian committed
1422 1423 1424 1425 1426
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
	}
1427

tangzhaoqian committed
1428 1429 1430 1431
	/**
	 * 目标确认-同意
	 */
	@PostMapping(value = "/update_target_confirmed")
tangzhaoqian committed
1432 1433
	@ApiOperation(value = "25.目标确认-同意", httpMethod = "POST", notes = "目标确认-同意")
	@ApiOperationSupport(order = 25)
1434 1435
	public Result<Object> updateTC(@CurrentUser UserBean userBean, @RequestParam Integer id) {

tangzhaoqian committed
1436
		Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
1437 1438 1439
				.eq(JxglAppraisal::getId, id).in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
						AppraisalSts.TERMINATION_ASSESSMENT.getType(), AppraisalSts.PERFORMANCE_ARCHIVE.getType()));

tangzhaoqian committed
1440 1441 1442
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1443

tangzhaoqian committed
1444
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1445 1446
				.eq(JxglAppraisal::getId, id).select(JxglAppraisal::getId, JxglAppraisal::getPerformanceAppraisalId));

tangzhaoqian committed
1447
		if (appraisal == null) {
1448
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1449
		}
1450 1451 1452 1453

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

tangzhaoqian committed
1458
		if (ProcessType.TARGET_CONFIRMED.getType() == processNode.getProcessType()) {
1459

tangzhaoqian committed
1460
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1461
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1462 1463
			}

1464 1465 1466 1467 1468 1469 1470
			// 修改 目标确认 状态
			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
1471 1472
			if (pA != null && pA.getSts() > PerformanceAppraisalSts.TARGET_SETING.getType()) {
				// 修改 下一个节点状态
1473 1474 1475 1476 1477 1478 1479
				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
1480
			}
1481

tangzhaoqian committed
1482 1483 1484 1485 1486 1487
			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();
1488
		} else {
tangzhaoqian committed
1489 1490 1491 1492
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
1493

tangzhaoqian committed
1494
	}
1495

tangzhaoqian committed
1496 1497 1498 1499
	/**
	 * 目标确认-驳回目标
	 */
	@PostMapping(value = "/update_target_confirmed_reject")
tangzhaoqian committed
1500 1501
	@ApiOperation(value = "26.目标确认-驳回目标", httpMethod = "POST", notes = "目标确认-驳回目标")
	@ApiOperationSupport(order = 26)
1502 1503 1504 1505 1506 1507 1508
	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
1509 1510 1511
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1512

tangzhaoqian committed
1513
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1514 1515
				.eq(JxglAppraisal::getId, appraisalReject.getId()).select(JxglAppraisal::getId));

tangzhaoqian committed
1516
		if (appraisal == null) {
1517
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1518
		}
1519 1520 1521 1522 1523

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

tangzhaoqian committed
1524 1525 1526
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1527

tangzhaoqian committed
1528
		if (ProcessType.TARGET_CONFIRMED.getType() == processNode.getProcessType()) {
1529

tangzhaoqian committed
1530
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1531
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1532 1533
			}

1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546
			// 修改 目标确认 状态
			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
1547 1548 1549 1550 1551 1552 1553 1554

			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();
1555 1556

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

		return ResultUtil.success();
1561

tangzhaoqian committed
1562
	}
1563

tangzhaoqian committed
1564
	/**
tangzhaoqian committed
1565
	 * 评价 -驳回目标
tangzhaoqian committed
1566 1567
	 */
	@PostMapping(value = "/update_superior_score_reject")
tangzhaoqian committed
1568 1569
	@ApiOperation(value = "27.评价 -驳回目标", httpMethod = "POST", notes = "评价 -驳回目标")
	@ApiOperationSupport(order = 27)
1570 1571 1572 1573 1574 1575 1576
	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
1577 1578 1579
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1580

tangzhaoqian committed
1581
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1582 1583
				.eq(JxglAppraisal::getId, appraisalReject.getId()).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 1596 1597
		if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
			return ResultUtil.error("无权限操作该流程");
		}
tangzhaoqian committed
1598

tangzhaoqian committed
1599 1600 1601 1602 1603 1604 1605 1606
		// 修改 目标确认 状态
		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(),
								ProcessType.SUPERIOR_SCORE.getType()
								));
1607

tangzhaoqian committed
1608 1609 1610 1611
		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
1612

tangzhaoqian committed
1613 1614 1615 1616
		// 删除 考核评定-自评
		jxglAppraisalAssessmentMapper.delete(new QueryWrapper<JxglAppraisalAssessment>().lambda()
				.eq(JxglAppraisalAssessment::getAppraisalId, appraisal.getId())
				.eq(JxglAppraisalAssessment::getType, AssessmentType.SELF_ASSESSMENT.getType()));
1617

tangzhaoqian committed
1618 1619 1620 1621 1622 1623 1624 1625 1626 1627
		List<JxglAppraisalIndicators> listAI = jxglAppraisalIndicatorsMapper.selectList(
				new QueryWrapper<JxglAppraisalIndicators>().lambda().select(JxglAppraisalIndicators::getId)
						.eq(JxglAppraisalIndicators::getAppraisalId, appraisal.getId()));
		List<Integer> listAIId = CollectionUtil.isNotEmpty(listAI)
				? listAI.stream().map(JxglAppraisalIndicators::getId).collect(Collectors.toList())
				: null;
		// 删除 考核指标评定-自评
		jxglAppraisalIndicatorsAssessmentMapper.delete(new QueryWrapper<JxglAppraisalIndicatorsAssessment>()
				.lambda().in(JxglAppraisalIndicatorsAssessment::getAppraisalIndicatorsId, listAIId)
				.eq(JxglAppraisalIndicatorsAssessment::getType, AssessmentType.SELF_ASSESSMENT.getType()));
1628

tangzhaoqian committed
1629 1630
		jxglAppraisalMapper.updateById(
				JxglAppraisal.builder().id(appraisal.getId()).sts(AppraisalSts.TARGET_FILL_IN.getType()).build());
1631

tangzhaoqian committed
1632 1633 1634 1635 1636 1637 1638
		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();
tangzhaoqian committed
1639 1640

		return ResultUtil.success();
1641

tangzhaoqian committed
1642
	}
1643

tangzhaoqian committed
1644 1645 1646 1647
	/**
	 * 上级评价 -驳回评分
	 */
	@PostMapping(value = "/update_superior_reject_score")
tangzhaoqian committed
1648 1649
	@ApiOperation(value = "28.上级评价 -驳回评分", httpMethod = "POST", notes = "上级评价 -驳回评分")
	@ApiOperationSupport(order = 28)
1650 1651 1652 1653 1654 1655 1656
	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
1657 1658 1659
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
1660

tangzhaoqian committed
1661
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
1662 1663
				.eq(JxglAppraisal::getId, appraisalReject.getId()).select(JxglAppraisal::getId));

tangzhaoqian committed
1664
		if (appraisal == null) {
1665
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1666
		}
1667 1668 1669 1670

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

tangzhaoqian committed
1675
		if (ProcessType.SUPERIOR_SCORE.getType() == processNode.getProcessType()) {
1676

tangzhaoqian committed
1677
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1678
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1679 1680
			}

1681 1682 1683 1684 1685 1686
			// 修改 状态
			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
1687
			// 修改 上一个节点状态
1688 1689 1690 1691 1692
			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
1693 1694 1695 1696
			// 删除 考核评定-自评
			jxglAppraisalAssessmentMapper.delete(new QueryWrapper<JxglAppraisalAssessment>().lambda()
					.eq(JxglAppraisalAssessment::getAppraisalId, appraisal.getId())
					.eq(JxglAppraisalAssessment::getType, AssessmentType.SELF_ASSESSMENT.getType()));
1697 1698 1699 1700 1701 1702 1703

			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
1704
			// 删除 考核指标评定-自评
1705 1706
			jxglAppraisalIndicatorsAssessmentMapper.delete(new QueryWrapper<JxglAppraisalIndicatorsAssessment>()
					.lambda().in(JxglAppraisalIndicatorsAssessment::getAppraisalIndicatorsId, listAIId)
tangzhaoqian committed
1707
					.eq(JxglAppraisalIndicatorsAssessment::getType, AssessmentType.SELF_ASSESSMENT.getType()));
1708 1709 1710 1711

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

tangzhaoqian committed
1712 1713 1714 1715 1716 1717 1718
			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();
1719 1720

		} else {
tangzhaoqian committed
1721 1722 1723 1724
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
1725

tangzhaoqian committed
1726
	}
1727

tangzhaoqian committed
1728
	/**
1729
	 * 评分提交
tangzhaoqian committed
1730 1731
	 */
	@PostMapping(value = "/save_score")
tangzhaoqian committed
1732 1733
	@ApiOperation(value = "29.评分提交", httpMethod = "POST", notes = "评分提交")
	@ApiOperationSupport(order = 29)
tangzhaoqian committed
1734
	@Log(title = "评分提交")
1735
	public Result<Object> saveScore(@CurrentUser UserBean userBean,
1736
			@Validated @RequestBody ValidList<AppraisalAssessment> appraisalAssessments) throws Exception{
1737

tangzhaoqian committed
1738
		Integer appraisalId = appraisalAssessments.get(0).getAppraisalId();
1739 1740 1741 1742 1743 1744 1745

		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
1746 1747
			return ResultUtil.error("考核已结束");
		}
1748 1749 1750 1751 1752

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

tangzhaoqian committed
1753
		if (appraisal == null) {
1754
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1755
		}
1756 1757 1758 1759

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
1760 1761 1762
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
1763 1764
		
		JxglBasicSetting bS = jxglService.selectAT(userBean.getOrgCode());
1765

1766
		Integer maxScore = bS.getMaxScore();
1767 1768 1769
		if (ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType()
				|| ProcessType.SUPERIOR_SCORE.getType() == processNode.getProcessType()) {

tangzhaoqian committed
1770
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1771
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1772 1773
			}

1774 1775 1776 1777
			boolean hasAppraisalAssessment = false;
			
			for (AppraisalAssessment a : appraisalAssessments) {

tangzhaoqian committed
1778
				Integer type =  processNode.getProcessType();
1779

1780 1781 1782 1783 1784
						
				if (Double.valueOf(a.getScore()) > maxScore) {
					throw new CustomException("评分值不能大于最高分");
				}
						
tangzhaoqian committed
1785
				if (a.getAppraisalIndicatorsId() != null) {
1786 1787
					JxglAppraisalIndicatorsAssessment.builder().appraisalIndicatorsId(a.getAppraisalIndicatorsId())
							.assessorId(userBean.getEmpNum()).assessorName(userBean.getUserInfo().getName())
1788 1789 1790
							.score(a.getScore()).remarks(a.getRemarks())
							.type(ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType() ? AssessmentType.SELF_ASSESSMENT.getType() : AssessmentType.SUPERIOR_SCORE.getType())
							.build().insert();
1791 1792 1793

				} else {
					JxglAppraisalAssessment.builder().appraisalId(a.getAppraisalId()).assessorId(userBean.getEmpNum())
1794
							.assessorName(userBean.getUserInfo().getName()).comprehensiveScore(Double.valueOf(a.getScore()))
1795 1796 1797 1798
							.remarks(a.getRemarks())
							.type(ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType() ? AssessmentType.SELF_ASSESSMENT.getType() : AssessmentType.SUPERIOR_SCORE.getType())
							.level(a.getLevel())
							.build().insert();
1799

1800
					hasAppraisalAssessment = true;
tangzhaoqian committed
1801
				}
1802

1803 1804 1805 1806 1807
			};
			
			if (!hasAppraisalAssessment) {
				throw new CustomException("必须填写综合评分");
			}
tangzhaoqian committed
1808

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

1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827
			if (ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType()) {
				JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build()
				.update(new UpdateWrapper<JxglProcessNode>().lambda()
						.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getProcessType, ProcessType.SUPERIOR_SCORE.getType()));
				
				jxglAppraisalMapper.updateById(JxglAppraisal.builder().id(appraisal.getId())
							.sts(AppraisalSts.SUPERIOR_SCORE.getType()).build());
				
			}else if(ProcessType.SUPERIOR_SCORE.getType() == processNode.getProcessType()) {
				
				JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper
						.selectById(appraisal.getPerformanceAppraisalId());
1828

1829
				if (pA != null && pA.getSts() > PerformanceAppraisalSts.PERFORMANCE_SCORE.getType()) {
1830

1831 1832 1833 1834 1835
					JxglProcessNode.builder().sts(ProcessNodeSts.IN_EXECUTION.getType()).build()
					.update(new UpdateWrapper<JxglProcessNode>().lambda()
							.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
							.eq(JxglProcessNode::getProcessType, ProcessType.RESULT_VERIFICATION.getType()));
					
1836
					jxglAppraisalMapper.updateById(JxglAppraisal.builder().id(appraisal.getId())
1837 1838
								.sts(AppraisalSts.RESULT_VERIFICATION.getType()).build());
					
1839
				}
1840
				
tangzhaoqian committed
1841
				// 算 总评分 ---- 自评权重*自评综合分 + 上级评分权重*上级综合评分 = 总评分
1842 1843 1844
				List<JxglProcessNode> listProcessNode = jxglProcessNodeMapper.selectList(new QueryWrapper<JxglProcessNode>().lambda()
						.select(JxglProcessNode::getWeight,JxglProcessNode::getProcessType)
						.orderByAsc(JxglProcessNode::getProcessType)
tangzhaoqian committed
1845 1846 1847 1848
						.eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.in(JxglProcessNode::getProcessType, 
								ProcessType.SELF_ASSESSMENT.getType()
								,ProcessType.SUPERIOR_SCORE.getType()));
1849 1850 1851
			
				List<JxglAppraisalAssessment> listAppraisalAssessment = jxglAppraisalAssessmentMapper.selectList(new QueryWrapper<JxglAppraisalAssessment>().lambda()
						.select(JxglAppraisalAssessment::getType,JxglAppraisalAssessment::getComprehensiveScore)
tangzhaoqian committed
1852
						.eq(JxglAppraisalAssessment::getAppraisalId, appraisal.getId())
1853 1854 1855 1856 1857 1858 1859 1860 1861
						.orderByAsc(JxglAppraisalAssessment::getType)
						);
				Double selfAssessment = 0D;
				Double superiorAssessment = 0D;
				
				Integer aWeights = 0;
				Integer bWeights = 0;
				Double total = 0D;
				String level = null;
tangzhaoqian committed
1862
				
tangzhaoqian committed
1863
				if (CollectionUtil.isNotEmpty(listProcessNode)) {
1864 1865 1866 1867 1868
					aWeights = listProcessNode.stream().filter(p -> p.getProcessType() == ProcessType.SELF_ASSESSMENT.getType()).map(JxglProcessNode::getWeight).findFirst().orElse(null);
					bWeights = listProcessNode.stream().filter(p -> p.getProcessType() == ProcessType.SUPERIOR_SCORE.getType()).map(JxglProcessNode::getWeight).findFirst().orElse(null);
					
				}
				
tangzhaoqian committed
1869
				if (CollectionUtil.isNotEmpty(listAppraisalAssessment)) {
1870 1871 1872 1873 1874 1875
					selfAssessment = listAppraisalAssessment.stream().filter(a -> a.getType() == AssessmentType.SELF_ASSESSMENT.getType()).map(JxglAppraisalAssessment::getComprehensiveScore).findFirst().orElse(null) ;
					superiorAssessment = listAppraisalAssessment.stream().filter(a -> a.getType() == AssessmentType.SUPERIOR_SCORE.getType()).map(JxglAppraisalAssessment::getComprehensiveScore).findFirst().orElse(null);
				
				}
				
				if (selfAssessment != null && superiorAssessment != null) {
tangzhaoqian committed
1876 1877 1878
					Integer min = 0;
					Integer max = 0;
					
1879
					total = aWeights*0.01*selfAssessment + bWeights*0.01*superiorAssessment;
ilal committed
1880 1881 1882 1883 1884
					Logoutput(String.valueOf(total));
					Logoutput(String.valueOf(aWeights));
					Logoutput(String.valueOf(selfAssessment));
					Logoutput(String.valueOf(bWeights));
					Logoutput(String.valueOf(superiorAssessment));
1885 1886 1887
					
					List<JxglPerformanceRating> listPR = bS.getPerformanceRatings();
					for (JxglPerformanceRating pR : listPR) {
1888 1889 1890
						min = min <= pR.getSectionMinScore() ? pR.getSectionMinScore() : min;
						max = max >= pR.getSectionMaxScore() ? pR.getSectionMaxScore() : max;
						level = pR.getSectionMinScore() < total && total <= pR.getSectionMaxScore()   ? pR.getName() : null;
1891
					}
1892
					
ilal committed
1893 1894 1895
					Logoutput(String.valueOf(min));
					Logoutput(String.valueOf(max));
					Logoutput(level);
tangzhaoqian committed
1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907
					if (level == null) {
						for (JxglPerformanceRating pR : listPR) {
							if (total < min && pR.getSectionMinScore().equals(min)) {
								level = pR.getName();
								break;
							}
							if (total > max && pR.getSectionMaxScore().equals(max)) {
								level = pR.getName();
								break;
							}
						}
					}
ilal committed
1908
					Logoutput(level);
1909 1910 1911 1912 1913 1914 1915 1916
					
					// 更新 考核-总分 等级
					jxglAppraisalMapper.updateById(JxglAppraisal.builder().id(appraisal.getId())
							.total(total).level(level).build());
				}else {
					throw new CustomException("评分数据存在异常");
				}
				
tangzhaoqian committed
1917
			}
1918
			
tangzhaoqian committed
1919 1920 1921 1922
			JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
			appraisalLog.setAppraisalId(appraisal.getId());
			appraisalLog.setExecutorId(userBean.getEmpNum());
			appraisalLog.setExecutorName(userBean.getUserInfo().getName());
1923 1924 1925
			appraisalLog.setType(ProcessType.SELF_ASSESSMENT.getType() == processNode.getProcessType()
					? AppraisalLogType.SELF_ASSESSMENT.getType()
					: AppraisalLogType.SUPERIOR_SCORE.getType());
tangzhaoqian committed
1926
			appraisalLog.insert();
1927 1928

		} else {
tangzhaoqian committed
1929 1930 1931 1932 1933
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
	}
1934

tangzhaoqian committed
1935 1936 1937 1938
	/**
	 * 结果确认-确认
	 */
	@PostMapping(value = "/result_verification")
tangzhaoqian committed
1939 1940
	@ApiOperation(value = "30.结果确认-确认", httpMethod = "POST", notes = "结果确认-确认")
	@ApiOperationSupport(order = 30)
1941 1942 1943 1944 1945 1946 1947
	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
1948 1949
			return ResultUtil.error("考核已结束");
		}
1950 1951 1952 1953

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

tangzhaoqian committed
1954
		if (appraisal == null) {
1955
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
1956
		}
1957 1958 1959 1960

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

tangzhaoqian committed
1965
		if (ProcessType.RESULT_VERIFICATION.getType() == processNode.getProcessType()) {
1966

tangzhaoqian committed
1967
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
1968
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
1969
			}
1970 1971 1972 1973 1974 1975 1976

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

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

tangzhaoqian committed
1979 1980 1981 1982 1983 1984
			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();
1985 1986

		} else {
tangzhaoqian committed
1987 1988 1989 1990 1991
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
	}
1992

tangzhaoqian committed
1993 1994 1995 1996
	/**
	 * 结果确认-改分
	 */
	@PostMapping(value = "/change_score")
tangzhaoqian committed
1997 1998
	@ApiOperation(value = "31.结果确认-改分", httpMethod = "POST", notes = "结果确认-改分")
	@ApiOperationSupport(order = 31)
1999
	@Log(title = "绩效管理-结果确认-改分", businessType = BusinessType.UPDATE)
2000 2001 2002
	public Result<Object> changeScore(@CurrentUser UserBean userBean,
			@Validated @RequestBody AppraisalAssessment appraisalAssessment) {

tangzhaoqian committed
2003
		Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
2004 2005
				.eq(JxglAppraisal::getId, appraisalAssessment.getAppraisalId()).in(JxglAppraisal::getSts,
						AppraisalSts.ASSESSMENT_COMPLETE.getType(), AppraisalSts.TERMINATION_ASSESSMENT.getType(),
tangzhaoqian committed
2006
						AppraisalSts.PERFORMANCE_ARCHIVE.getType()));
2007

tangzhaoqian committed
2008 2009 2010
		if (count2 > 0) {
			return ResultUtil.error("考核已结束");
		}
2011

tangzhaoqian committed
2012
		JxglAppraisal appraisal = jxglAppraisalMapper.selectOne(new QueryWrapper<JxglAppraisal>().lambda()
2013 2014
				.eq(JxglAppraisal::getId, appraisalAssessment.getAppraisalId()).select(JxglAppraisal::getId));

tangzhaoqian committed
2015
		if (appraisal == null) {
2016
			return ResultUtil.error("考核不存在");
tangzhaoqian committed
2017
		}
2018 2019 2020 2021

		JxglProcessNode processNode = jxglProcessNodeMapper.selectOne(
				new QueryWrapper<JxglProcessNode>().lambda().eq(JxglProcessNode::getAppraisalId, appraisal.getId())
						.eq(JxglProcessNode::getSts, ProcessNodeSts.IN_EXECUTION.getType()));
tangzhaoqian committed
2022 2023 2024
		if (processNode == null) {
			return ResultUtil.error("流程不存在");
		}
2025 2026 2027 2028 2029 2030 2031
		
		JxglBasicSetting bS = jxglService.selectAT(userBean.getOrgCode());

		Integer maxScore = bS.getMaxScore();
		if (Double.valueOf(appraisalAssessment.getScore()) > maxScore) {
			throw new CustomException("评分值不能大于最高分");
		}
2032

tangzhaoqian committed
2033
		if (ProcessType.RESULT_VERIFICATION.getType() == processNode.getProcessType()) {
2034

tangzhaoqian committed
2035
			if (!userBean.getEmpNum().equals(processNode.getExecutorId())) {
2036
				return ResultUtil.error("无权限操作该流程");
tangzhaoqian committed
2037
			}
2038 2039 2040 2041
			
			// 更新 考核-总分 等级
			jxglAppraisalMapper.updateById(JxglAppraisal.builder().id(appraisal.getId())
					.total(Double.valueOf(appraisalAssessment.getScore())).level(appraisalAssessment.getLevel()).build());
2042

tangzhaoqian committed
2043 2044 2045 2046 2047 2048 2049
			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();
2050 2051

		} else {
tangzhaoqian committed
2052 2053 2054 2055 2056
			return ResultUtil.error("流程状态异常");
		}

		return ResultUtil.success();
	}
2057

tangzhaoqian committed
2058 2059 2060 2061
	/**
	 * 查询-我的绩效-员工绩效
	 */
	@PostMapping(value = "/selects_my_emp_performance")
tangzhaoqian committed
2062 2063
	@ApiOperation(value = "32.查询-我的绩效-员工绩效", httpMethod = "POST", notes = "查询-我的绩效-员工绩效")
	@ApiOperationSupport(order = 32)
2064
	@Log(title = "绩效管理-查询-我的绩效-员工绩效")
2065
	public Result<Object> selectsMEP(@CurrentUser UserBean userBean, @RequestBody EmpPerformanceQuery query) {
tangzhaoqian committed
2066 2067
		Integer orgCode = userBean.getOrgCode();
		Integer empNum = userBean.getEmpNum();
2068
		IPage<JxglAppraisal> page = new Page<JxglAppraisal>(query.getCurrentPage(), query.getTotalPage());
tangzhaoqian committed
2069
		query.setOrgCode(orgCode);
2070

2071 2072 2073 2074
		List<ZzglBmgwM> listBM = zzglBmgwMMapper.selectList(new QueryWrapper<ZzglBmgwM>().lambda()
				.select(ZzglBmgwM::getId)
				.eq(ZzglBmgwM::getOrgCode, userBean.getOrgCode())
				.eq(ZzglBmgwM::getLeader, empNum));
ilal committed
2075
		Logoutput("listBM-----"+ listBM);
tangzhaoqian committed
2076 2077 2078 2079
		ZzglBmgwM ZzglBmgwM = CollUtil.getFirst(listBM);
		if (ZzglBmgwM == null) {
			return ResultUtil.success();
		}
2080

tangzhaoqian committed
2081
		List<YgglMainEmp> users = zzglBmgwMService.selectOtherlistent(orgCode, ZzglBmgwM.getId());
2082
		List<Integer> empNums = CollUtil.toList();
tangzhaoqian committed
2083
		if (CollectionUtil.isNotEmpty(empNums)) {
tangzhaoqian committed
2084 2085
			empNums = users.stream().map(YgglMainEmp::getEmpNum).collect(Collectors.toList());
		}
2086 2087 2088
		
		if (query.getBmId() != null) {
			List<YgglMainEmp> usersQuery = zzglBmgwMService.selectOtherlistent(orgCode, query.getBmId());
tangzhaoqian committed
2089
			if (CollectionUtil.isNotEmpty(empNums)) {
2090 2091 2092 2093 2094 2095 2096
				List<Integer> empNumsQuery = usersQuery.stream().map(YgglMainEmp::getEmpNum).collect(Collectors.toList());
				empNums = empNums.stream().filter(e -> empNumsQuery.contains(e)).collect(Collectors.toList());
			}else {
				return ResultUtil.data(null);
			}
		}
		
tangzhaoqian committed
2097
		if (CollectionUtil.isNotEmpty(empNums)) {
2098 2099 2100
			return ResultUtil.data(null);
		}
		
tangzhaoqian committed
2101
		query.setEmpNums(empNums);
lal committed
2102 2103 2104 2105
		
		String deptid = jxglAppraisalMapper.CurrentdepartmentID(orgCode, empNum);
		query.setDeptid(deptid);
		
tangzhaoqian committed
2106
		IPage<JxglAppraisal> pageA = jxglAppraisalMapper.selectMyEmpByQuery(page, query);
2107

tangzhaoqian committed
2108 2109
		List<JxglAppraisal> listA = pageA.getRecords();

2110 2111
		return ResultUtil.data(pageA, listA);

tangzhaoqian committed
2112
	}
ilal committed
2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126
	
	@Value("${config-8timer.environmental-science}")
	public String environmental_science;
	
	public void Logoutput(String science) {
		
		if(!("pro").equals(environmental_science)) {
			
			System.out.println(science);
		}else {
			System.out.println("");
		}
		
	}
2127
}