“djh”
2025-11-25 f9feae49eee21286708bcef1cea91be34d9e9241
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
package com.gkhy.exam.system.service.useSealApply.impl;
 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
import com.gkhy.exam.common.exception.ApiException;
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
import com.gkhy.exam.common.utils.StringUtils;
import com.gkhy.exam.system.domain.UseSealApply;
import com.gkhy.exam.system.domain.UseSealApplyFile;
import com.gkhy.exam.system.domain.UseSealApplyFlow;
import com.gkhy.exam.system.mapper.UseSealApplyFileMapper;
import com.gkhy.exam.system.mapper.UseSealApplyFlowMapper;
import com.gkhy.exam.system.mapper.UseSealApplyMapper;
import com.gkhy.exam.system.service.useSealApply.UseSealApplyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
 
import java.time.LocalDateTime;
import java.util.List;
 
@Service
public class UseSealApplyServiceImpl extends ServiceImpl<UseSealApplyMapper, UseSealApply> implements UseSealApplyService {
 
    @Autowired
    private UseSealApplyMapper useSealApplyMapper;
 
    @Autowired
    private UseSealApplyFlowMapper flowMapper;
 
    @Autowired
    private UseSealApplyFileMapper fileMapper;
 
 
    @Override
    public CommonPage selectUseSealApplyList(UseSealApply useSealApply) {
        if (!SecurityUtils.adminUser()){
            if (useSealApply.getCompanyId()==null){
                throw new ApiException("非管理员操作,企业不可为空");
            }
        }
        PageUtils.startPage();
        List<UseSealApply> useSealApplies = useSealApplyMapper.selectUseApplyList(useSealApply);
        for (UseSealApply sealApply : useSealApplies) {
            List<UseSealApplyFlow> useSealApplyFlows = flowMapper.selectByUseSealId(sealApply.getId());
            List<UseSealApplyFile> useSealApplyFiles = fileMapper.selectByUseSealId(sealApply.getId());
            sealApply.setFiles(useSealApplyFiles);
            sealApply.setFlows(useSealApplyFlows);
        }
        return CommonPage.restPage(useSealApplies);
    }
 
    @Override
    @Transactional
    public CommonResult insertUseSealApply(UseSealApply useSealApply) {
        useSealApply.setCreateBy(SecurityUtils.getUsername());
        useSealApply.setCreateTime(LocalDateTime.now());
        int insert = useSealApplyMapper.insert(useSealApply);
        if (insert>0){
            List<UseSealApplyFlow> flows = useSealApply.getFlows();
            for (UseSealApplyFlow flow : flows) {
                flow.setUseSealId(useSealApply.getId());
                if (flow.getApproveUserId().equals(useSealApply.getApplyUserId()) && flow.getFlowName().equals("申请人")){
                    flow.setStatus(2);
                }else {
                    flow.setStatus(1);
                }
            }
            flowMapper.insertBatchs(flows);
            List<UseSealApplyFile> files = useSealApply.getFiles();
            for (UseSealApplyFile file : files) {
                file.setUseSealId(useSealApply.getId());
            }
            fileMapper.insertBatchs(files);
        }
        return CommonResult.success();
    }
 
    @Override
    public CommonResult updateUseSealApply(UseSealApply useSealApply) {
 
        List<UseSealApplyFlow> useSealApplyFlows = flowMapper.selectByUseSealIdAndApplyUserId(useSealApply.getId(), useSealApply.getApplyUserId());
        if (!CollectionUtils.isEmpty(useSealApplyFlows)){
            return CommonResult.failed("该申请已审批,请勿修改");
        }
 
        useSealApply.setUpdateBy(SecurityUtils.getUsername());
        useSealApply.setUpdateTime(LocalDateTime.now());
        int update = useSealApplyMapper.updateById(useSealApply);
        if (update>0){
            fileMapper.deleteByUseSealId(useSealApply.getId());
            List<UseSealApplyFile> files = useSealApply.getFiles();
            for (UseSealApplyFile file : files) {
                file.setUseSealId(useSealApply.getId());
            }
            fileMapper.insertBatchs(files);
        }
        return CommonResult.success();
    }
 
    @Override
    public CommonResult deletedUseSealApply(Integer applyId) {
 
        if (!SecurityUtils.adminUser()){
            List<UseSealApplyFlow> useSealApplyFlows = flowMapper.selectByUseSealIdAndApplyUserId(applyId,null);
            if (!CollectionUtils.isEmpty(useSealApplyFlows)){
                return CommonResult.failed("该申请已审批,请勿删除");
            }
        }
        UseSealApply useSealApply = new UseSealApply();
        useSealApply.setUpdateBy(SecurityUtils.getUsername());
        useSealApply.setUpdateTime(LocalDateTime.now());
        useSealApply.setDelFlag(2);
        useSealApply.setId(applyId);
        useSealApplyMapper.updateById(useSealApply);
        return CommonResult.success();
    }
 
    @Override
    @Transactional
    public CommonResult approveUseSealApply(UseSealApplyFlow useSealApplyFlow) {
        if (useSealApplyFlow.getApproveStatus()==null){
            return CommonResult.failed("审批意见不可为空");
        }
        if (StringUtils.isEmpty(useSealApplyFlow.getApproveMess())){
            return CommonResult.failed("审批意见不可为空");
        }
        if (useSealApplyFlow.getApproveStatus()==1){
            useSealApplyFlow.setApproveContent("同意");
        }else {
            useSealApplyFlow.setApproveContent("不同意");
        }
        useSealApplyFlow.setStatus(2);
        useSealApplyFlow.setApproveTime(LocalDateTime.now());
        Integer i = flowMapper.updateByUseSealId(useSealApplyFlow);
        if (i>0){
            UseSealApply useSealApply = new UseSealApply();
            UseSealApplyFlow useSealApplyFlow1 = flowMapper.selectByUseId(useSealApplyFlow.getUseSealId());
            if (useSealApplyFlow1!=null){
                useSealApply.setNextCheck(useSealApplyFlow1.getApproveUserId());
            }else {
                useSealApply.setStatus(2);
            }
            useSealApply.setId(useSealApplyFlow.getUseSealId());
            useSealApply.setUpdateBy(SecurityUtils.getUsername());
            useSealApply.setUpdateTime(LocalDateTime.now());
            useSealApplyMapper.updateById(useSealApply);
        }
        return CommonResult.success();
    }
 
    @Override
    public CommonResult applyList(Integer userId) {
        List<UseSealApply> useSealApplies = useSealApplyMapper.selectUseApplyByUserId(userId);
        for (UseSealApply sealApply : useSealApplies) {
            List<UseSealApplyFlow> useSealApplyFlows = flowMapper.selectByUseSealId(sealApply.getId());
            sealApply.setFlows(useSealApplyFlows);
        }
        return CommonResult.success(useSealApplies);
    }
}