ZQN
2024-06-17 9472d5dc2f433ebb0b0b5efc836632474aca9ca7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package com.project.enforce.service.impl;
 
import cn.hutool.core.convert.Convert;
import com.project.common.core.domain.entity.SysRole;
import com.project.common.core.domain.entity.SysUser;
import com.project.common.exception.base.BaseException;
import com.project.common.utils.SecurityUtils;
import com.project.common.utils.StringUtils;
import com.project.enforce.domain.EnforceCheckLog;
import com.project.enforce.domain.EnforceOrder;
import com.project.enforce.service.ICheckService;
import com.project.enforce.service.IEnforceCheckLogService;
import com.project.enforce.service.IEnforceOrderService;
import com.project.system.domain.SysCompany;
import com.project.system.domain.bo.editBo.CheckBo;
import com.project.system.service.ISysCompanyService;
import com.project.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * 功能描述:
 *
 * @author ZQN
 * @version 1.0
 * @date 2024年06月17日
 */
 
@Service
@RequiredArgsConstructor
public class CheckServiceImpl implements ICheckService
{
 
    private final ISysCompanyService companyService;
    private final IEnforceOrderService orderService;
    private final IEnforceCheckLogService checkLogService;
    private final ISysUserService userService;
 
    @Override
    @Transactional
    public Boolean checkOrder(CheckBo bo)
    {
        switch (bo.getCheckType())
        {
            case 1:
                SysCompany company = companyService.getById(bo.getId());
                if (company==null) {
                    throw new BaseException("没有找到对应数据,请检查审核类型!");
                }
                if (bo.getCheckStatus()== -1){
                    company.setCheckStatus(-1);
                } else {
                    company.setCheckStatus(2);
                }
                addCheckLog(company, bo);
                company.setCheckReason(bo.getCheckReason());
                companyService.updateById(company);
                break;
            case 2:
                EnforceOrder order = orderService.getById(bo.getId());
                if (order==null) {
                    throw new BaseException("没有找到对应数据,请检查审核类型!");
                }
                addCheckLog(order, bo);
                if (bo.getCheckStatus()==-1){
                    order.setCheckStatus(-1);
                } else {
                    String roleKey = "check_enforce_" + (order.getCheckLevel() + 1);
                    List<Long> ids = userService.getNumByRoleKey(roleKey, order.getCheckDeptId());
                    if (StringUtils.isNotEmpty(ids)){
                        order.setCheckStatus(1);
                    } else {
                        order.setCheckStatus(2);
                    }
                    //审批登记加1
                    order.setCheckLevel(order.getCheckLevel()+1);
                }
                order.setCheckReason(bo.getCheckReason());
                orderService.updateById(order);
                break;
        }
        return false;
    }
 
 
    /**
     * 添加审批记录
     * @param obj   业务对象
     * @param bo    审批参数
     */
    private void addCheckLog(Object obj, CheckBo bo)
    {
        EnforceCheckLog checkLog = Convert.convert(EnforceCheckLog.class, obj);
        checkLog.setCheckType(bo.getCheckType());
        SysUser loginUser = SecurityUtils.getLoginUser().getUser();
        checkLog.setCheckId(loginUser.getUserId());
        checkLog.setCheckUser(loginUser.getUserName());
        checkLog.setCheckPhone(loginUser.getPhonenumber());
        checkLog.setCheckStatus(bo.getCheckStatus());
        checkLog.setCheckReason(bo.getCheckReason());
        boolean save = checkLogService.save(checkLog);
        if (!save) {
            throw new BaseException("审批记录添加失败,请重试!");
        }
    }
 
 
}