SpmkController.java 31.8 KB
Newer Older
yuquan.zhu committed
1 2
package cn.timer.api.controller.spmk;

3
import java.util.ArrayList;
tangzhaoqian committed
4
import java.util.Date;
yuquan.zhu committed
5 6 7 8
import java.util.List;

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

21
import com.alibaba.druid.sql.visitor.functions.Nil;
yuquan.zhu committed
22 23
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
24
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
yuquan.zhu committed
25
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
26
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
yuquan.zhu committed
27 28

import cn.hutool.core.bean.BeanUtil;
tangzhaoqian committed
29
import cn.hutool.core.collection.CollUtil;
30
import cn.hutool.core.lang.Console;
yuquan.zhu committed
31
import cn.hutool.core.util.ObjectUtil;
tangzhaoqian committed
32
import cn.hutool.core.util.StrUtil;
33
import cn.hutool.json.JSONObject;
tangzhaoqian committed
34 35
import cn.timer.api.aspect.lang.annotation.Log;
import cn.timer.api.aspect.lang.enums.BusinessType;
36 37 38 39
import cn.timer.api.bean.spmk.SpmkApprovalG;
import cn.timer.api.bean.spmk.SpmkApprovalTemplate;
import cn.timer.api.bean.spmk.SpmkApprovalTemplateG;
import cn.timer.api.bean.spmk.SpmkApproveDetail;
40
import cn.timer.api.bean.spmk.SpmkApproveExecuteRecord;
41 42
import cn.timer.api.bean.spmk.SpmkApproveSummary;
import cn.timer.api.bean.spmk.SpmkCustomApproval;
tangzhaoqian committed
43
import cn.timer.api.bean.spmk.SpmkExecutor;
yuquan.zhu committed
44
import cn.timer.api.bean.spmk.SpmkIcon;
45
import cn.timer.api.bean.spmk.SpmkInitiatorConfig;
46
import cn.timer.api.bean.yggl.YgglMainEmp;
yuquan.zhu committed
47 48
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
49
import cn.timer.api.config.enuminterface.SpmkEnumInterface;
50
import cn.timer.api.config.exception.CustomException;
51
import cn.timer.api.controller.spmk.service.SpmkServiceImpl;
52
import cn.timer.api.controller.zzgl.service.ZzglBmgwMService;
53 54 55 56 57 58 59 60 61
import cn.timer.api.dao.spmk.SpmkApprovalGMapper;
import cn.timer.api.dao.spmk.SpmkApprovalTemplateGMapper;
import cn.timer.api.dao.spmk.SpmkApprovalTemplateMapper;
import cn.timer.api.dao.spmk.SpmkApproveDetailMapper;
import cn.timer.api.dao.spmk.SpmkApproveExecuteRecordMapper;
import cn.timer.api.dao.spmk.SpmkApproveSummaryMapper;
import cn.timer.api.dao.spmk.SpmkCustomApprovalMapper;
import cn.timer.api.dao.spmk.SpmkExecutorMapper;
import cn.timer.api.dao.spmk.SpmkInitiatorConfigMapper;
62
import cn.timer.api.dto.spmk.ApprovingDto;
63
import cn.timer.api.dto.spmk.FlowChildren;
64
import cn.timer.api.dto.spmk.FromData;
65
import cn.timer.api.dto.spmk.MySummaryQueryDto;
66
import cn.timer.api.dto.spmk.Router;
67 68 69 70
import cn.timer.api.dto.spmk.SpmkApprovalTemplateDto;
import cn.timer.api.dto.spmk.SpmkApproveDetailDto;
import cn.timer.api.dto.spmk.SpmkApproveSummaryDto;
import cn.timer.api.dto.spmk.SpmkCustomApprovalDto;
71
import cn.timer.api.dto.spmk.SummaryQueryDto;
yuquan.zhu committed
72 73
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
74
import cn.timer.api.utils.router.RouterUtils;
75 76 77
import cn.timer.api.utils.router.business.SpmkAssoBusiness;
import cn.timer.api.utils.router.business.SpmkAssoBusinessFactory;
import cn.timer.api.utils.router.enums.ApproveEnum;
yuquan.zhu committed
78 79 80 81 82 83 84 85
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@Api(tags = "3.0审批模块")
@RestController
@Transactional
@RequestMapping(value = "/spmk",  
produces = { "application/json","multipart/form-data" })
86
//@BindingResultCtrol(title = "发起审批")
87
public class SpmkController {
yuquan.zhu committed
88 89

	@Autowired
90 91 92 93 94 95 96
    private SpmkApprovalTemplateGMapper spmkApprovalTemplateGMapper;
	@Autowired
    private SpmkApprovalTemplateMapper spmkApprovalTemplateMapper;
	@Autowired
    private SpmkApprovalGMapper spmkApprovalGMapper;
	@Autowired
    private SpmkCustomApprovalMapper spmkCustomApprovalMapper;
97 98
	@Autowired
	private ZzglBmgwMService zzglBmgwMService;
99 100 101 102 103 104 105 106 107 108 109 110
	@Autowired
	private SpmkApproveSummaryMapper spmkApproveSummaryMapper;
	@Autowired
	private SpmkApproveDetailMapper spmkApproveDetailMapper;
	@Autowired
	private SpmkApproveExecuteRecordMapper spmkApproveExecuteRecordMapper;
	@Autowired
	private SpmkExecutorMapper spmkExecutorMapper;
	@Autowired
	private SpmkInitiatorConfigMapper spmkInitiatorConfigMapper;
	
	private boolean ISFIRST = true; // 第一次启动审批流程
111 112 113
	
	
	
114
	//TODO 审批模板组
115
	/**
116
	 * 新增或编辑-审批模板组
117
	 */
118
	@PostMapping(value = "/save_approval_template_g")
119
	@ApiOperation(value = "1.新增或编辑-审批模板组", httpMethod = "POST", notes = "新增或编辑-审批模板组")
120
	@ApiOperationSupport(order = 1)
121
	public Result<Object> saveAtg(@RequestBody SpmkApprovalTemplateG spmkApprovalTemplateG){
122
		
123
		if (spmkApprovalTemplateG.selectCount(new QueryWrapper<SpmkApprovalTemplateG>().lambda()
124
				.ne(SpmkApprovalTemplateG::getId, spmkApprovalTemplateG.getId())
125 126 127 128
				.eq(SpmkApprovalTemplateG::getName, spmkApprovalTemplateG.getName())) > 0) {
			return ResultUtil.error("审批模板组名重复!");
		}
		
129 130
        return spmkApprovalTemplateG.insertOrUpdate() ? 
        		ResultUtil.data(spmkApprovalTemplateG, "操作成功!") : ResultUtil.error("操作失败!");
tangzhaoqian committed
131

132 133 134
	}
	
	/**
135
	 * 删除-审批模板组
136
	 */
137
	@DeleteMapping(value = "/delete_approval_template_g/{id}")
138 139
	@ApiOperation(value = "2.删除-审批模板组", httpMethod = "DELETE", notes = "删除-审批模板组")
	@ApiOperationSupport(order = 2)
140
	public Result<Object> deleteAtgById(@PathVariable int id){
141
		
142 143 144 145
		if (spmkApprovalTemplateMapper.selectCount(new QueryWrapper<SpmkApprovalTemplate>().lambda().eq(SpmkApprovalTemplate::getApprovalTemplateGId, id)) > 0 ) 
			return ResultUtil.error("审批模板组存在 模板,不可直接删除!");
		
		
146 147
        return SpmkApprovalTemplateG.builder().id(id).build().deleteById() ? 
        		ResultUtil.success("操作成功!") : ResultUtil.error("没有找到该对象");
148 149 150 151
		
	}
	
	/**
152
	 * 查询列表-审批模板组
153
	 */
154
	@GetMapping(value = "/list_approval_template_g")
155 156
	@ApiOperation(value = "3.查询列表-审批模板组", httpMethod = "GET", notes = "查询列表-审批模板组")
	@ApiOperationSupport(order = 3)
157 158 159
	public Result<Object> selectListAtg(){
        
        return ResultUtil.data(spmkApprovalTemplateGMapper.selectListAtInAtg(),"操作成功!");
160 161
	}
	
162 163 164
	/**
	 * 排序-审批模板组
	 */
tangzhaoqian committed
165
	@PutMapping(value = "/update_approval_template_g")
166 167
	@ApiOperation(value = "4.排序-审批模板组", httpMethod = "PUT", notes = "排序-审批模板组")
	@ApiOperationSupport(order = 4)
tangzhaoqian committed
168
	public Result<Object> ranksAtg(@RequestBody List<SpmkApprovalTemplateG> list){
169 170 171

        return spmkApprovalTemplateGMapper.updateListRandsById(list) ? ResultUtil.success("操作成功!") : ResultUtil.error("操作失败!");
	}
172
	
173 174 175 176 177
	//TODO 审批模板
	/**
	 * 新增或编辑-审批模板
	 */
	@PostMapping(value = "/save_approval_template")
178 179
	@ApiOperation(value = "5.新增或编辑-审批模板", httpMethod = "POST", notes = "新增或编辑-审批模板")
	@ApiOperationSupport(order = 5)
180
	public Result<Object> saveAt(@Validated @RequestBody SpmkApprovalTemplateDto spmkApprovalTemplateDto){
181
		
182 183 184 185 186 187
		Integer approvalTemplateGId = spmkApprovalTemplateDto.getApprovalTemplateGId();
		if (ObjectUtil.isNull(approvalTemplateGId)) 
			return ResultUtil.error("操作失败!-1");

		SpmkApprovalTemplate at = SpmkApprovalTemplate.builder().build();

188
		// 克隆 SpmkApprovalTemplateDto对象 到 SpmkApprovalTemplate对象,排除属性froms,router
189
		BeanUtil.copyProperties(spmkApprovalTemplateDto, at , "froms","router");
190
		// 序列化 后 写入 SpmkApprovalTemplate对象
191
		at.setFroms(ObjectUtil.serialize((List<JSONObject>)spmkApprovalTemplateDto.getFroms()));
192 193
		at.setRouter(ObjectUtil.serialize(spmkApprovalTemplateDto.getRouter()));
		
194
		if (at.selectCount(new QueryWrapper<SpmkApprovalTemplate>().lambda()
195
				.ne(SpmkApprovalTemplate::getId, at.getId())
196 197 198 199
				.eq(SpmkApprovalTemplate::getName, at.getName())) > 0) {
			return ResultUtil.error("审批模板名重复!");
		}
		
200 201 202 203 204 205 206
		if (!at.insertOrUpdate()) 
			return ResultUtil.error("操作失败!-2");
		
		// 清空前端不需要的字段再返回,节省流量
		at.setFroms(null);
		at.setRouter(null);
		return  ResultUtil.data(at, "操作成功!");
207 208
		
	}
209
	
210 211 212 213
	/**
	 * 删除-审批模板
	 */
	@DeleteMapping(value = "/delete_approval_template/{id}")
214 215
	@ApiOperation(value = "6.删除-审批模板", httpMethod = "DELETE", notes = "删除-审批模板")
	@ApiOperationSupport(order = 6)
216 217 218 219 220 221 222 223 224
	public Result<Object> deleteAtById(@PathVariable int id){
		
        return SpmkApprovalTemplate.builder().id(id).build().deleteById() ? ResultUtil.success("操作成功!") : ResultUtil.error("没有找到该对象");
		
	}

	/**
	 * id查询-审批模板
	 */
225
	@GetMapping(value = "/select_approval_template/{id}")
226 227
	@ApiOperation(value = "7.id查询-审批模板", httpMethod = "GET", notes = "id查询-审批模板")
	@ApiOperationSupport(order = 7)
228
	public Result<Object> selectAtById(@PathVariable int id){
229 230 231 232 233 234 235
		SpmkApprovalTemplate at = SpmkApprovalTemplate.builder().id(id).build().selectById();
		
		SpmkApprovalTemplateDto atd = SpmkApprovalTemplateDto.builder().build();
		BeanUtil.copyProperties(at, atd,"froms","router");
		atd.setFroms(ObjectUtil.deserialize(at.getFroms()));
		atd.setRouter(ObjectUtil.deserialize(at.getRouter()));
        return ResultUtil.data(atd,"操作成功!");
236 237 238 239 240 241
        
	}
	
	/**
	 * 排序-审批模板
	 */
tangzhaoqian committed
242
	@PutMapping(value = "/update_approval_template")
243
	@ApiOperation(value = "8.排序-审批模板", httpMethod = "PUT", notes = "查询列表-审批模板组")
244
	@ApiOperationSupport(order = 8)
tangzhaoqian committed
245
	public Result<Object> ranksAt(@RequestBody List<SpmkApprovalTemplate> list){
246 247 248 249

        return spmkApprovalTemplateMapper.updateListRandsById(list) ? ResultUtil.success("操作成功!") : ResultUtil.error("操作失败!");
	
	}
250 251
	
	
252 253
	
	//TODO 审批组
254
	/**
255
	 * 新增或编辑-审批组
256
	 */
257
	@PostMapping(value = "/save_approval_g")
258 259
	@ApiOperation(value = "9.新增或编辑-审批组", httpMethod = "POST", notes = "新增或编辑-审批组")
	@ApiOperationSupport(order = 9)
260
	public Result<Object> saveAg(@CurrentUser UserBean userBean, @RequestBody SpmkApprovalG spmkApprovalG){
261
		
262
		if (spmkApprovalG.selectCount(new QueryWrapper<SpmkApprovalG>().lambda()
263
				.ne(SpmkApprovalG::getId, spmkApprovalG.getId())
264 265
				.eq(SpmkApprovalG::getName, spmkApprovalG.getName())
				.eq(SpmkApprovalG::getOrgCode, userBean.getOrgCode())) > 0) {
266 267 268
			return ResultUtil.error("审批组名重复!");
		}
		
269
		spmkApprovalG.setOrgCode(userBean.getOrgCode());
270
		return spmkApprovalG.insertOrUpdate() ? ResultUtil.data(spmkApprovalG, "操作成功!") : ResultUtil.error("操作失败!");
271
		
272 273 274 275 276 277
	}
	
	/**
	 * 删除-审批组
	 */
	@DeleteMapping(value = "/delete_approval_g/{id}")
278 279
	@ApiOperation(value = "10.删除-审批组", httpMethod = "DELETE", notes = "删除-审批组")
	@ApiOperationSupport(order = 10)
280 281
	public Result<Object> deleteAgById(@PathVariable int id){
		
282 283 284
		if (spmkCustomApprovalMapper.selectCount(new QueryWrapper<SpmkCustomApproval>().lambda().eq(SpmkCustomApproval::getApprovalGId, id)) > 0 ) 
			return ResultUtil.error("审批组存在 自定义审批,不可直接删除!");
		
285
        return SpmkApprovalG.builder().id(id).build().deleteById() ? ResultUtil.success("操作成功!") : ResultUtil.error("没有找到该对象");
286 287 288
		
	}
	
289
	/**
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304
	 * 查询列表-审批组-审批管理
	 */
	@GetMapping(value = "/all_approval_g")
	@ApiOperation(value = "11.查询列表-审批组-审批管理", httpMethod = "GET", notes = "查询列表-审批组-审批管理")
	@ApiOperationSupport(order = 11)
	public Result<Object> selectListAgByAdmin(@CurrentUser UserBean userBean){
		
		List<Integer> depts = zzglBmgwMService.empNumupGetDepts(userBean.getOrgCode(), userBean.getEmpNum());
		System.out.println(depts);
        return ResultUtil.data(spmkApprovalGMapper.selectListAgInCaByAdmin(userBean.getOrgCode(), userBean.getEmpNum(), depts),"操作成功!");
	
	}
	
	/**
	 * 查询列表-审批组-个人审批
305 306
	 */
	@GetMapping(value = "/list_approval_g")
307
	@ApiOperation(value = "11.查询列表-审批组-个人审批", httpMethod = "GET", notes = "查询列表-审批组-个人审批")
308
	@ApiOperationSupport(order = 11)
309 310
	public Result<Object> selectListAg(@CurrentUser UserBean userBean){
		
311 312
		List<Integer> depts = zzglBmgwMService.empNumupGetDepts(userBean.getOrgCode(), userBean.getEmpNum());
		System.out.println(depts);
313 314
		return ResultUtil.data(spmkApprovalGMapper.selectListAgInCa(userBean.getOrgCode(), userBean.getEmpNum(), depts),"操作成功!");
		
315
	}
316
	
317 318 319
	/**
	 * 排序-审批组
	 */
tangzhaoqian committed
320
	@PutMapping(value = "/update_approval_g")
321 322
	@ApiOperation(value = "12.排序-审批组", httpMethod = "PUT", notes = "排序-审批组")
	@ApiOperationSupport(order = 12)
tangzhaoqian committed
323
	public Result<Object> ranksAg(@RequestBody List<SpmkApprovalG> list){
324 325
        return spmkApprovalGMapper.updateListRandsById(list) ? ResultUtil.success("操作成功!") : ResultUtil.error("操作失败!");
	}
326
	
327
	//TODO 自定义审批
328
	
329 330 331 332
	/**
	 * 新增或编辑-自定义审批
	 */
	@PostMapping(value = "/save_custom_approval")
333 334
	@ApiOperation(value = "13.新增或编辑-自定义审批", httpMethod = "POST", notes = "新增或编辑-自定义审批")
	@ApiOperationSupport(order = 13)
335
	@Transactional(rollbackFor = Exception.class)
336
	public Result<Object> saveCa(@CurrentUser UserBean userBean, @RequestBody SpmkCustomApprovalDto spmkCustomApprovalDto) throws Exception{
337 338 339 340 341 342 343
		Integer approvalGId = spmkCustomApprovalDto.getApprovalGId();
		if (ObjectUtil.isNull(approvalGId)) 
			return ResultUtil.error("操作失败!-1");

		SpmkCustomApproval ca = SpmkCustomApproval.builder().build();

		BeanUtil.copyProperties(spmkCustomApprovalDto, ca , "froms","router","initiatorConfigs");
344
		
345
		if (ca.selectCount(new QueryWrapper<SpmkCustomApproval>().lambda()
346
				.ne(SpmkCustomApproval::getId, ca.getId())
347 348
				.eq(SpmkCustomApproval::getName, ca.getName())
				.eq(SpmkCustomApproval::getOrgCode, userBean.getOrgCode())) > 0) {
349 350 351
			return ResultUtil.error("自定义审批名重复!");
		}
		
352 353 354
		ca.setFroms(ObjectUtil.serialize(spmkCustomApprovalDto.getFroms()));
		ca.setRouter(ObjectUtil.serialize(spmkCustomApprovalDto.getRouter()));
		
355
		//1.新增 SpmkCustomApproval-自定义审批
356 357 358
		if (!ca.insertOrUpdate())
			return ResultUtil.error("操作失败!-2");
		
359
		
360
		Integer id = ca.getId();
361 362
		// 2.删除	历史的  SpmkInitiatorConfig-审批发起人配置,
		SpmkInitiatorConfig.builder().build().delete(new QueryWrapper<SpmkInitiatorConfig>().lambda().eq(SpmkInitiatorConfig::getCustomApprovalId, id));
363 364 365
		Console.log("自定义审批id: " + id);
		List<SpmkInitiatorConfig> listIc = spmkCustomApprovalDto.getInitiatorConfigs();

366 367 368 369
		if (listIc != null && listIc.size() > 0) {
			for (int i = 0, n = listIc.size(); i < n; i++) {
				listIc.get(i).setCustomApprovalId(id);
			}
370
			// 3.新增	最新的 SpmkInitiatorConfig-审批发起人配置,
371 372 373 374 375
			if (!spmkInitiatorConfigMapper.insertList(listIc)) {
				// 手动抛出异常,事务回滚
				throw new Exception();
			}
			
376
		}
377
		
378
		
379 380 381 382

		//  
		/**
		 * 注意: 为保证该api的原子性 要加 事务处理 回滚(方法注解-@Transactional(rollbackFor = Exception.class))
383 384 385
		 * 1.新增 SpmkCustomApproval-自定义审批
		 * 2.删除	历史的  SpmkInitiatorConfig-审批发起人配置,
		 * 3.新增	最新的 SpmkInitiatorConfig-审批发起人配置,
386
		 */
387 388 389 390 391

		// 清空前端不需要的字段再返回,节省流量
		ca.setFroms(null);
		ca.setRouter(null);
		return ResultUtil.data(ca, "操作成功!");
392 393
		
	}
394
	
395 396
	/**
	 * 删除-自定义审批
397
	 * @throws Exception 
398 399
	 */
	@DeleteMapping(value = "/delete_custom_approval/{id}")
400
	@ApiOperation(value = "14.删除-自定义审批", httpMethod = "DELETE", notes = "删除-自定义审批")
401
	@Transactional(rollbackFor = Exception.class)
402
	@ApiOperationSupport(order = 14)
403 404 405 406 407 408 409 410
	public Result<Object> deleteCaById(@PathVariable int id) throws Exception{
		SpmkInitiatorConfig.builder().build().delete(new QueryWrapper<SpmkInitiatorConfig>().lambda().eq(SpmkInitiatorConfig::getCustomApprovalId, id));
        
		if (!SpmkCustomApproval.builder().id(id).build().deleteById()) {
			throw new Exception();
		}
		
		return  ResultUtil.success("操作成功!");
411 412 413 414 415 416
		
	}

	/**
	 * id查询-自定义审批
	 */
417 418 419
	@GetMapping(value = "/select_custom_approval/{id}")
	@ApiOperation(value = "15.id查询-自定义审批", httpMethod = "GET", notes = "id查询-自定义审批")
	@ApiOperationSupport(order = 15)
420
	public Result<Object> selectCaById(@PathVariable int id){
421
		SpmkCustomApproval ca = SpmkCustomApproval.builder().id(id).build().selectById();
422
		List<SpmkInitiatorConfig> listIc = SpmkInitiatorConfig.builder().build().selectList(new QueryWrapper<SpmkInitiatorConfig>().lambda().eq(SpmkInitiatorConfig::getCustomApprovalId, id));
423
		SpmkCustomApprovalDto caD = SpmkCustomApprovalDto.builder()
424 425
				.froms(ObjectUtil.deserialize(ca.getFroms()))
				.router(ObjectUtil.deserialize(ca.getRouter()))
426 427
				.build();
		BeanUtil.copyProperties(ca, caD,"froms","router");
428
		caD.setInitiatorConfigs(listIc);
429
        return ResultUtil.data(caD,"操作成功!");
430
	}
431
	
432 433 434
	/**
	 * 排序-自定义审批
	 */
tangzhaoqian committed
435
	@PutMapping(value = "/update_custom_approval")
436 437
	@ApiOperation(value = "16.排序-自定义审批", httpMethod = "PUT", notes = "排序-自定义审批")
	@ApiOperationSupport(order = 16)
tangzhaoqian committed
438
	public Result<Object> ranksCa(@RequestBody List<SpmkCustomApproval> list){
439 440
        return spmkCustomApprovalMapper.updateListRandsById(list) ? ResultUtil.success("操作成功!") : ResultUtil.error("操作失败!");
	}
441
	
442 443 444
	// TODO 审批汇总(发起审批)
	/**
	 * 发起审批
445
	 * @throws Exception 
446 447
	 */
	@PostMapping(value = "/start_approval")
448 449 450
	@ApiOperation(value = "17.发起审批", httpMethod = "POST", notes = "发起审批")
	@ApiOperationSupport(order = 17)
	@Transactional(rollbackFor = Exception.class)
tangzhaoqian committed
451
	@Log(title = "审批-发起审批", businessType = BusinessType.INSERT)
452
	public Result<Object> saveCa(@CurrentUser UserBean userBean,@Validated @RequestBody SpmkApproveSummaryDto spmkApproveSummaryDto) throws Exception{
453 454 455 456 457 458 459
			YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>()
					.lambda()
					.select(YgglMainEmp::getHeadUrl,YgglMainEmp::getName)
					.eq(YgglMainEmp::getEmpNum, userBean.getEmpNum()));
			
			if (ygglMainEmp == null) 
				return ResultUtil.error("发起人异常!");
460 461
			
			List<Router> listRouter = new ArrayList<Router>();
462
			listRouter.add(spmkApproveSummaryDto.getRouter());
463
			JSONObject jSONObject = spmkApproveSummaryDto.getRequestData()
464 465 466 467
					.set("orgCode", FromData.builder().value(String.valueOf(userBean.getOrgCode())).build())
					.set("initiator", FromData.builder().value(spmkApproveSummaryDto.getInitiator()).build())
					.set("headUrl", FromData.builder().value(ygglMainEmp.getHeadUrl()).build())
					.set("id", FromData.builder().value(StrUtil.toString(userBean.getEmpNum())).build());
468 469 470
			RouterUtils.NextNode(listRouter, jSONObject, ISFIRST);
			List<FlowChildren> listFlowChildren = new ArrayList<FlowChildren>();
			RouterUtils.getIsFlowChildren(listRouter,listFlowChildren);
471
			
472 473 474 475 476 477 478 479 480 481
			// 当前审批人
			String currentApprover = jSONObject.getStr("current_approver");
			// 封装 审批汇总
			SpmkApproveSummary as = SpmkApproveSummary
					.builder()
					.orgCode(userBean.getOrgCode())
					.empNum(userBean.getEmpNum())
					.title(spmkApproveSummaryDto.getTitle())
					.initiator(spmkApproveSummaryDto.getInitiator())
					.approveName(spmkApproveSummaryDto.getApproveName())
482
					.assoType(spmkApproveSummaryDto.getAssoType())
483
					.sts(0)
484
					.currentApprover(currentApprover).build();
485
			
486
			if (!as.insert()) {
487
				throw new CustomException("审批汇总-新增异常");
488
			}
489
			
490 491 492
			// 插入记录
			RouterUtils.insertogExecuteRecord(listFlowChildren, as.getId());
			
493 494 495 496 497
			// 封装 审批详情
			SpmkApproveDetail ad = SpmkApproveDetail.builder().build();
			ad.setApproveSummaryId(as.getId());
			ad.setName(spmkApproveSummaryDto.getTitle());
			ad.setRequestData(ObjectUtil.serialize(spmkApproveSummaryDto.getRequestData()));
498
			ad.setFroms(ObjectUtil.serialize((List<JSONObject>)spmkApproveSummaryDto.getFroms()));
499 500
			ad.setRouter(ObjectUtil.serialize(listRouter.get(0)));
			ad.setFlowChildren(ObjectUtil.serialize(listFlowChildren));
501
			
502
			if (!ad.insert()) 
503
				throw new CustomException("审批详情-新增异常");
504
			
505
			return ResultUtil.success("操作成功!");
506 507 508
			
	}
	
509
	//TODO 审批汇总
510 511 512 513
	/**
	 * 审批汇总
	 * @param summaryQueryDto
	 * @return
514
	 * @throws  
515
	 */
516 517 518
	@PostMapping(value = "/select_approve_summary")
	@ApiOperation(value = "18.审批汇总", httpMethod = "POST", notes = "审批汇总")
	@ApiOperationSupport(order = 18)
tangzhaoqian committed
519
	@Log(title = "审批-审批汇总", businessType = BusinessType.OTHER)
520 521 522 523 524 525
	public Result<Object> selectAs(@CurrentUser UserBean userBean, @RequestBody SummaryQueryDto summaryQueryDto) {

			IPage<SpmkApproveSummary> page = new Page<SpmkApproveSummary>(
				summaryQueryDto.getCurrentPage() == null ? 1 : summaryQueryDto.getCurrentPage(),
				summaryQueryDto.getTotalPage() == null ? 10 : summaryQueryDto.getTotalPage());
			summaryQueryDto.setOrgCode(userBean.getOrgCode());
526 527 528
			
			Integer deptId = summaryQueryDto.getDeptId();
			List<YgglMainEmp> listYgglMainEmp = RouterUtils.selectOtherlistent(userBean.getOrgCode(), deptId);
tangzhaoqian committed
529

530 531 532 533 534 535 536 537 538
			if (deptId != null && (listYgglMainEmp == null || listYgglMainEmp.size() == 0)) {
				return ResultUtil.data(new ArrayList<SpmkApproveSummary>(), "操作成功!");
			}
			
			List<Integer> empNums = new ArrayList<Integer>();
			for (YgglMainEmp ygglMainEmp : listYgglMainEmp) {
				empNums.add(ygglMainEmp.getEmpNum());
			}
			summaryQueryDto.setEmpNums(empNums);
539

540
			// 缺-部门id 搜索
541 542 543
			IPage<SpmkApproveSummary> pageAs = spmkApproveSummaryMapper.selectPageByQuery(page, summaryQueryDto);
			
			List<SpmkApproveSummary> listAs = pageAs.getRecords();
544
			
545
			return ResultUtil.data(pageAs, listAs, "操作成功!");
546
	}
547
	
548 549 550 551 552 553 554
	//TODO 审批详情
	/**
	 * 审批详情
	 */
	@GetMapping(value = "/select_approve_detail/{id}")
	@ApiOperation(value = "19.审批详情", httpMethod = "GET", notes = "审批详情")
	@ApiOperationSupport(order = 19)
tangzhaoqian committed
555
	@Log(title = "审批-审批详情", businessType = BusinessType.OTHER)
tangzhaoqian committed
556
	public Result<Object> selectAd(@PathVariable(required = true) Integer id) {
557 558 559
		
		SpmkApproveDetail ad = spmkApproveDetailMapper.selectOne(new QueryWrapper<SpmkApproveDetail>().lambda().eq(SpmkApproveDetail::getApproveSummaryId, id));
		SpmkApproveDetailDto adD = SpmkApproveDetailDto.builder().build();
560 561 562
		if (ad == null) {
			return ResultUtil.data(adD, "操作成功!");
		}
563
		List<SpmkApproveExecuteRecord> listAer = spmkApproveExecuteRecordMapper.selectListByAsId(id);
564
		BeanUtil.copyProperties(ad, adD, "requestData","froms","router","spmkApproveExecuteRecord");
565 566 567 568
		adD.setRequestData(ObjectUtil.deserialize(ad.getRequestData()));
		adD.setFroms(ObjectUtil.deserialize(ad.getFroms()));
		adD.setRouter(ObjectUtil.deserialize(ad.getRouter()));
		adD.setFlowChildren(ObjectUtil.deserialize(ad.getFlowChildren()));
569
		adD.setApproveExecuteRecord(listAer);
570 571 572
		
		return ResultUtil.data(adD, "操作成功!");
	}
573
	
574 575 576 577 578 579
	//TODO 审批人审批
	/**
	 * 审批人审批
	 */
	@PostMapping(value = "/approving")
	@ApiOperation(value = "20.审批人审批", httpMethod = "POST", notes = "审批人审批")
tangzhaoqian committed
580 581
	@Transactional(rollbackFor = Exception.class)
	@ApiOperationSupport(order = 20)
tangzhaoqian committed
582
	@Log(title = "审批-审批流程", businessType = BusinessType.UPDATE)
583
//	@BindingResultCtrol(title = "审批人审批")
584 585 586 587 588 589 590 591 592
	public Result<Object> approving(@CurrentUser UserBean userBean,@Validated @RequestBody ApprovingDto approvingDto) throws Exception {
		
		if (spmkExecutorMapper.selectCount(new QueryWrapper<SpmkExecutor>().lambda()
				.eq(SpmkExecutor::getId, approvingDto.getExecutorId())
				.eq(SpmkExecutor::getEmpNum, userBean.getEmpNum())
				.eq(SpmkExecutor::getSts, SpmkEnumInterface.ExecutorSts.NON_EXECUTION)) == 0) {
			return ResultUtil.error("非当前审批人,无法审批!");
		}
		
593
		SpmkApproveDetail ad = SpmkApproveDetail.builder().build().selectOne(new QueryWrapper<SpmkApproveDetail>()
594
				.lambda()
595 596 597
				.select(SpmkApproveDetail::getId,
						SpmkApproveDetail::getRequestData,
						SpmkApproveDetail::getFlowChildren)
598 599
				.eq(SpmkApproveDetail::getApproveSummaryId, approvingDto.getAsId()));
		
600 601 602 603 604
		// 查询 SpmkApproveSummary 状态
		SpmkApproveSummary aSummary = spmkApproveSummaryMapper.selectOne(new QueryWrapper<SpmkApproveSummary>().lambda()
				.select(SpmkApproveSummary::getSts)
				.eq(SpmkApproveSummary::getId, approvingDto.getAsId()));
		
605 606
		
		
607
		if (aSummary.getSts() == 1 || aSummary.getSts() == 2 || aSummary.getSts() == 3) {
608 609 610 611
			return ResultUtil.error("该审批已结束!");
		}
		
		// 查询该 审批的状态 是否为 1 审批中 
tangzhaoqian committed
612 613 614 615 616 617 618 619
		Integer count = SpmkExecutor.builder().build().selectCount(new QueryWrapper<SpmkExecutor>().lambda()
				.eq(SpmkExecutor::getId, approvingDto.getExecutorId())
				.eq(SpmkExecutor::getSts, "1"));
		
		if (count == 0) {
			return ResultUtil.error("您已审批过!");
		}
		
620
		if (aSummary.getSts() == 0) {
621
			List<FlowChildren> listFlowChildren = ObjectUtil.deserialize(ad.getFlowChildren());
622 623 624 625 626 627
			RouterUtils.approving(
					listFlowChildren, 
					approvingDto.getAsId(), 
					approvingDto.getExecuteRecordId(), 
					approvingDto.getExecutorId(), 
					approvingDto.getOpinion(),
628 629 630
					approvingDto.getSts(),
					approvingDto.getUser()
					);
631 632 633
			
			System.out.println(listFlowChildren);
			// 更新 flowChildren
tangzhaoqian committed
634
			SpmkApproveDetail.builder().id(ad.getId()).flowChildren(ObjectUtil.serialize(listFlowChildren)).build().updateById();
635 636 637 638
			FlowChildren fc = CollUtil.getLast(listFlowChildren);
			if (fc.getExecute() == "2") {
				// 查询 SpmkApproveSummary 状态
				aSummary = spmkApproveSummaryMapper.selectOne(new QueryWrapper<SpmkApproveSummary>().lambda()
639
						.select(SpmkApproveSummary::getSts,SpmkApproveSummary::getAssoType)
640 641 642
						.eq(SpmkApproveSummary::getId, approvingDto.getAsId()));
				if (aSummary.getSts() != 3) {
					SpmkApproveSummary.builder().id(approvingDto.getAsId()).endTime(new Date()).sts(2).build().updateById();
643 644 645 646 647
						
					//审批完成后 业务
					SpmkAssoBusiness sab = SpmkAssoBusinessFactory.createSpmkAssoType(ApproveEnum.getEnums(aSummary.getAssoType()));
					if (sab != null)
						sab.handleApprove(ObjectUtil.deserialize(ad.getRequestData()));
648
				}
tangzhaoqian committed
649
			}
650 651 652 653 654 655
			
		}else {
			return ResultUtil.error("该审批已结束!");
		}
		return ResultUtil.data(null, "操作成功!");
	}
656
	
657 658
	//TODO 我审批的/抄送我的
	/**
tangzhaoqian committed
659
	 * 查询列表-我发起的/我审批的/抄送我的-分页
660 661
	 */
	@PostMapping(value = "/select_my_approve")
tangzhaoqian committed
662
	@ApiOperation(value = "21.查询列表-我发起的/我审批的/抄送我的-分页", httpMethod = "POST", notes = "查询列表-我审批的-关键字、审批状态、发起时间-分页")
tangzhaoqian committed
663
	@ApiOperationSupport(order = 21)
tangzhaoqian committed
664
	@Log(title = "审批-我发起的/我审批的/抄送我的", businessType = BusinessType.OTHER)
665
	public Result<Object> selectMyAs(@CurrentUser UserBean userBean, @Validated @RequestBody MySummaryQueryDto mySummaryQueryDto) throws MethodArgumentNotValidException{
666 667 668 669 670 671 672 673 674 675 676
			IPage<SpmkApproveSummary> page = new Page<SpmkApproveSummary>(
				mySummaryQueryDto.getCurrentPage() == null ? 1 : mySummaryQueryDto.getCurrentPage(),
				mySummaryQueryDto.getTotalPage() == null ? 10 : mySummaryQueryDto.getTotalPage());
			mySummaryQueryDto.setOrgCode(userBean.getOrgCode());
			mySummaryQueryDto.setEmpNum(userBean.getEmpNum());
			// 缺-部门id 搜索
			IPage<SpmkApproveSummary> pageAs = spmkApproveSummaryMapper.selectPageByQueryForEmpNum(page, mySummaryQueryDto);
			
			List<SpmkApproveSummary> listAs = pageAs.getRecords();
			return ResultUtil.data(pageAs, listAs, "操作成功!");
	}
677
	
678 679 680 681 682 683 684 685
	//TODO 撤销审批
	/**
	 * 撤销审批
	 */
	@PutMapping(value = "/revoke_approval/{id}")
	@ApiOperation(value = "22.撤销审批", httpMethod = "PUT", notes = "撤销审批")
	@Transactional(rollbackFor = Exception.class)
	@ApiOperationSupport(order = 22)
tangzhaoqian committed
686
	@Log(title = "审批-撤销审批", businessType = BusinessType.UPDATE)
687 688 689 690 691 692 693 694
	public Result<Object> revokeApproval(@PathVariable Integer id) throws Exception {
		
		SpmkApproveSummary as = spmkApproveSummaryMapper.selectOne(new QueryWrapper<SpmkApproveSummary>()
				.lambda()
				.select(SpmkApproveSummary::getSts)
				.eq(SpmkApproveSummary::getId, id));
		
		return as != null && as.getSts() != 2 ? (SpmkApproveSummary.builder().id(id).endTime(new Date()).sts(1).build().updateById() ? 
695
				ResultUtil.success("操作成功!") : ResultUtil.error("操作失败_1!")) : ResultUtil.error("审批已结束,无法撤销!");
696 697 698 699 700 701 702 703
	}
	
	/**
	 * 删除-审批(发起的审批)-根据审批汇总id
	 */
	@DeleteMapping(value = "/delete_approval/{id}")
	@ApiOperation(value = "23.删除-审批(发起的审批)-根据审批汇总id", httpMethod = "DELETE", notes = "删除-审批(发起的审批)-根据审批汇总id")
	@ApiOperationSupport(order = 23)
tangzhaoqian committed
704
	@Log(title = "审批-删除审批", businessType = BusinessType.DELETE)
705 706 707 708 709
	public Result<Object> deleteApprovalData(@PathVariable Integer id){
		List<SpmkApproveExecuteRecord> listAer = spmkApproveExecuteRecordMapper.selectList(new QueryWrapper<SpmkApproveExecuteRecord>()
				.lambda()
				.select(SpmkApproveExecuteRecord::getId)
				.eq(SpmkApproveExecuteRecord::getApproveSummaryId, id));
710
		if (listAer != null && listAer.size() > 0) {
711 712 713 714 715 716 717 718 719 720 721 722 723 724
			for (SpmkApproveExecuteRecord aer : listAer) {
				spmkExecutorMapper.delete(new QueryWrapper<SpmkExecutor>().lambda().eq(SpmkExecutor::getApproveExecuteRecordId, aer.getId()));
			}
		}
		
		spmkApproveExecuteRecordMapper.delete(new QueryWrapper<SpmkApproveExecuteRecord>().lambda().eq(SpmkApproveExecuteRecord::getApproveSummaryId, id));
		
		spmkApproveDetailMapper.delete(new QueryWrapper<SpmkApproveDetail>().lambda().eq(SpmkApproveDetail::getApproveSummaryId, id));
		
		spmkApproveSummaryMapper.delete(new QueryWrapper<SpmkApproveSummary>().lambda().eq(SpmkApproveSummary::getId, id));
		
		return ResultUtil.data(null, "操作成功!");
	}
	
725
	/**
726
	 * 删除-审批组、自定义审批、审批汇总、审批详情、审批执行记录、审批执行人记录 所有数据
727 728
	 */
	@DeleteMapping(value = "/delete_approval_data")
729
	@ApiOperation(value = "90.(开发使用)删除-审批数据", httpMethod = "DELETE", notes = "审批组、自定义审批、审批汇总、审批详情、审批执行记录、审批执行人记录 所有数据")
tangzhaoqian committed
730
	@ApiOperationSupport(order = 90)
731
	public Result<Object> deleteApprovalData(@CurrentUser UserBean userBean){
732 733
		spmkApprovalGMapper.delete(null);
		spmkCustomApprovalMapper.delete(null);
734 735 736 737
		spmkApproveSummaryMapper.delete(null);
		spmkApproveDetailMapper.delete(null);
		spmkApproveExecuteRecordMapper.delete(null);
		spmkExecutorMapper.delete(null);
738
		System.out.println("删除-审批组、自定义审批、审批汇总、审批详情、审批执行记录、审批执行人记录 所有数据 完成!");
739 740
		return ResultUtil.data(null, "操作成功!");
	}
741
	
tangzhaoqian committed
742 743 744 745 746 747 748 749 750 751 752
	//TODO 审批图标列表
	@GetMapping(value = "/icon")
	@ApiOperation(value = "99.图标列表", httpMethod = "GET", notes = "接口发布说明")
	@ApiOperationSupport(order = 99)
	public Result<List<SpmkIcon>> selectListIcon(@CurrentUser UserBean userBean){
		
		List<SpmkIcon> spmkIcons = SpmkIcon.builder().build().selectAll();
		
		return ResultUtil.data(spmkIcons,"获取图标列表成功");
	}
	
753 754 755 756 757 758 759 760 761 762 763 764 765 766 767
	@Autowired
	SpmkServiceImpl SpmkService;
	
	//TODO 测试-生成 审批组 和 自定义审批
	@GetMapping(value = "/test")
	@ApiOperation(value = "98.测试-生成 审批组 和 自定义审批", httpMethod = "GET", notes = "测试-生成 审批组 和 自定义审批")
	@ApiOperationSupport(order = 98)
	public Result<List<SpmkIcon>> createCustomApproval(@RequestParam Integer orgCode){
		
		SpmkService.createCustomApproval(orgCode);
		
		List<SpmkIcon> spmkIcons = SpmkIcon.builder().build().selectAll();
		
		return ResultUtil.data(spmkIcons,"获取图标列表成功");
	}
yuquan.zhu committed
768
}