ZQN
2024-09-03 94b5684557d4987add639a94d1ad41c32b5d00c0
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
package com.project.enforce.service.impl;
 
import cn.hutool.core.convert.Convert;
import com.project.common.core.domain.entity.SysUser;
import com.project.common.exception.base.BaseException;
import com.project.common.utils.DateUtils;
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.domain.bo.editBo.SysCompanyBo;
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;
 
/**
 * 功能描述:
 *
 * @author ZQN
 * @version 1.0
 * @date 2024年06月17日
 */
 
@Service
@RequiredArgsConstructor
public class CheckServiceImpl implements ICheckService
{
 
    private final ISysUserService userService;
    private final ISysCompanyService companyService;
    private final IEnforceOrderService orderService;
    private final IEnforceCheckLogService checkLogService;
    private final YPSmsService smsService;
 
    @Override
    @Transactional
    public Boolean checkOrder(CheckBo bo)
    {
        if (StringUtils.isEmpty(bo.getIds())){
            throw new BaseException("请选择要审批的单据!");
        }
        switch (bo.getCheckType())
        {
            case 1:
                for (Long id : bo.getIds()) {
                    SysCompany company = companyService.getById(id);
                    if (company==null) {
                        throw new BaseException("没有找到对应数据,请检查审核类型!");
                    }
                    SysCompanyBo companyBo = new SysCompanyBo();
                    companyBo.setCompanyId(company.getCompanyId());
                    if (company.getCheckStatus()!=0){
                        throw new BaseException("该企业已审批!");
                    }
                    if (bo.getCheckStatus()== -1){
                        company.setCheckStatus(-1);
                        companyBo.setCompanyStatus(1);
                        smsService.sendCompanyCheckMsg(company.getCompanyPhone(), -1);
                    } else {
                        company.setCheckStatus(2);
                        companyBo.setCompanyStatus(0);
                        smsService.sendCompanyCheckMsg(company.getCompanyPhone(), 2);
                    }
                    addCheckLog(company, bo);
                    company.setCheckReason(bo.getCheckReason());
                    companyService.updStatus(companyBo);
                    companyService.updateById(company);
                }
                return true;
            case 2:
                for (Long id : bo.getIds()) {
                    EnforceOrder order = orderService.getById(id);
                    if (order==null) {
                        throw new BaseException("没有找到对应数据,请检查审核类型!");
                    }
                    if (order.getOrderStatus()!=1){
                        throw new BaseException("该执法单已审批");
                    }
                    addCheckLog(order, bo);
                    if (bo.getCheckStatus()==-1){
                        order.setOrderStatus(-1);
                        order.setCheckStatus(-1);
                        //审批拒绝,给申请人发送短信,如果通知企业也给企业发送短信
                        smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus());
                        orderService.updateById(order);
                    } else {
                        List<String> phones = orderService.getCheckPhones(order.getCheckLevel()+1, order.getApplyDeptId());
                        if (StringUtils.isNotEmpty(phones)){
                            int checkLevel = Integer.parseInt(phones.get(0));
                            order.setCheckLevel(checkLevel);
                            phones.remove(0);
                            order.setCheckStatus(1);
                            //给下一级审批人发送短信
                            smsService.sendApplyMsg(phones, order.getApplyUser());
                            String checkPhones = StringUtils.join(phones, ",");
                            order.setCheckIds(checkPhones);
                            order.setCheckReason(bo.getCheckReason());
 
                            return orderService.updateById(order);
                        } else {
                            order.setCheckStatus(2);
                            order.setOrderStatus(2);
                            //审批通过,给申请人发送短信,如果通知企业也给企业发送短信
                            smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus());
 
                            if (StringUtils.isEmpty(order.getCompanyCode())){
                                order.setOrderStatus(3);
                                order.setInTime(DateUtils.getNowDate());
                                order.setExecuteDeptId(order.getApplyDeptId());
                                order.setExecuteDeptName(order.getApplyDeptName());
                                order.setExecuteUser(order.getApplyUser());
                                order.setExecutePhone(order.getApplyPhone());
                                order.setExecuteId(order.getApplyId());
                            }
                            if (order.getIsNoticeCompany()==1 && StringUtils.isNotEmpty(order.getCompanyPhone())){
                                smsService.sendCompanyMsg(order.getCompanyPhone(), order.getApplyDeptName(), order.getPlanTime());
                            }
 
                            //审批等级加1
                            order.setCheckLevel(order.getCheckLevel()+1);
                            order.setCheckReason(bo.getCheckReason());
                            return orderService.updateById(order);
                        }
                    }
 
                }
                return true;
        }
        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 = userService.selectUserById(SecurityUtils.getUserId());
        checkLog.setCheckId(loginUser.getUserId());
        checkLog.setCheckUser(loginUser.getNickName());
        checkLog.setCheckPhone(loginUser.getPhonenumber());
        checkLog.setCheckStatus(bo.getCheckStatus()>0?1:-1);
        checkLog.setCheckTime(DateUtils.getNowDate());
        checkLog.setCheckReason(bo.getCheckReason());
        boolean save = checkLogService.save(checkLog);
        if (!save) {
            throw new BaseException("审批记录添加失败,请重试!");
        }
    }
 
 
}