whyczh
2021-04-06 a5cea92f5149bb0dca740042a4ee1a971d599fab
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
package com.whyc.service;
 
 
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.mapper.ProjectArchiveManageMapper;
import com.whyc.mapper.ProjectManageMapper;
import com.whyc.pojo.DeviceManage;
import com.whyc.pojo.ProjectArchiveManage;
import com.whyc.pojo.ProjectManage;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
 
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
 
@Service
public class ProjectProcessManageService {
 
    @Autowired
    DataSourceTransactionManager dataSourceTransactionManager;
    @Autowired
    TransactionDefinition transactionDefinition;
 
    @Resource
    private ProjectManageMapper projectManageMapper;
 
    @Resource
    private ProjectArchiveManageMapper projectArchiveManageMapper;
 
 
    public Response<List<ProjectManage>> searchAll() {
        Response<List<ProjectManage>> response = new Response<>();
        List<ProjectManage> projectManages = projectManageMapper.searchAll();
        response.setCode(1);
        response.setData(projectManages);
        return response;
    }
 
    /**
     * 根据筛选条件
     *
     * @param pageNum
     * @param pageSize
     * @param projectManage
     * @return
     */
    public Response<PageInfo<ProjectManage>> searchByCondition(int pageNum, int pageSize, ProjectManage projectManage) {
        PageHelper.startPage(pageNum, pageSize);
        List<ProjectManage> projectManages = projectManageMapper.searchByCondition(projectManage);
        PageInfo<ProjectManage> projectManagePageInfo = new PageInfo<>(projectManages);
        return new Response<PageInfo<ProjectManage>>().set(1, projectManagePageInfo);
    }
 
 
    /**
     * 新建项目
     *
     * @param pm
     * @return
     */
    public Response add(ProjectManage pm) {
        Response response = new Response<>();
        pm.setProNameCode(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
        pm.setProState(1);//项目状态 进行中
        pm.setProProgress(1);//项目进度 立项
        Integer num = projectManageMapper.checkUniqueId(pm);
        if (num > 0) {
            return response.setMsg(0, "添加失败,pro_name_code重复");
        }
        boolean bl;
        TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
        try {
            bl = projectManageMapper.insert(pm) > 0;
            if (bl) {
                ArrayList<String> list = pm.getFileList();
                if (null != list) {
                    Date proUploadDate = new Date();
                    for (int i = 0; i < list.size(); i++) {
                        ProjectArchiveManage pam = new ProjectArchiveManage();
                        pam.setProNum(pm.getProNum());
                        pam.setProName(pm.getProName());
                        pam.setProNameCode(pm.getProNameCode());//唯一,可对应多个文件
                        pam.setProSort(pm.getProSort());
                        String path = list.get(i);
                        pam.setProFilePath(path);
                        String[] split = path.split("_");
                        int rexIdex = split[1].lastIndexOf(".");
                        pam.setProDocumentName(split[1].substring(0, rexIdex));
                        pam.setProDocumentFormat(split[1].substring(rexIdex + 1));
                        pam.setProUploadDate(proUploadDate);
                        projectArchiveManageMapper.insert(pam);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            dataSourceTransactionManager.rollback(transactionStatus);       //事务回滚
            return response.setMsg(0, "添加失败");
        }
        if (bl) {
            dataSourceTransactionManager.commit(transactionStatus);       //手动提交
            response.setMsg(1, "添加成功");
        } else {
            dataSourceTransactionManager.rollback(transactionStatus);       //事务回滚
            response.setMsg(0, "添加失败");
        }
        return response;
    }
 
 
    /**
     * 项目过程管理/己确认、未确认阶段
     *
     * @param projectManage
     * @return
     */
    public Response<Object> searchManageStateByCondition(ProjectManage projectManage) {
        Response response = new Response<>();
 
        try {
            ProjectManage pm = projectManageMapper.searchManageStateByCondition(projectManage);
            List<ProjectArchiveManage> pams = projectArchiveManageMapper.searchByConditionDocumentPath(projectManage);
            HashMap<Object, Object> map = new HashMap<>();
            map.put("pm", pm);
            ArrayList<Object> list = new ArrayList<>();
            if (null != pams) {
                for (int i = 0; i < pams.size(); i++) {
                    ProjectArchiveManage pam = pams.get(i);
                    HashMap<Object, Object> mapDoc = new HashMap<>();
                    mapDoc.put("name", pam.getProDocumentName());
                    mapDoc.put("url", pam.getProFilePath());
                    list.add(mapDoc);
                }
            }
            map.put("mapDoc", list);
            response.setCode(1);
            response.setMsg(1, "查询成功");
            response.setData(map);
        } catch (Exception e) {
            e.printStackTrace();
            return response.setMsg(0, "查询失败");
        }
        return response;
    }
 
 
    /**
     * 项目进度确认
     * 未归档可以修改更新,归档后不能修改
     *
     * @param pm
     * @return
     */
    public Response updateManageState(ProjectManage pm) {
        Response response = new Response<>();
        boolean bl;
        TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
        try {
            bl = projectManageMapper.updateManageState(pm) > 0;
            ArrayList<String> fileList = pm.getFileList();
            if (bl && null != fileList) {
                for (int i = 0; i < fileList.size(); i++) {
                    String filePath = fileList.get(i);
                    Boolean fileExist = projectArchiveManageMapper.checkFileExist(filePath) > 0;
                    if (!fileExist) {
                        ProjectArchiveManage pam = new ProjectArchiveManage();
                        pam.setProNum(pm.getProNum());
                        pam.setProName(pm.getProName());
                        pam.setProNameCode(pm.getProNameCode());//唯一
                        pam.setProSort(pm.getProSort());
                        pam.setProFilePath(filePath);
                        pam.setProUploadDate(new Date());
                        String[] split = filePath.split("_");
                        int rexIdex = split[1].lastIndexOf(".");
                        pam.setProDocumentName(split[1].substring(0, rexIdex));
                        pam.setProDocumentFormat(split[1].substring(rexIdex + 1));
                        projectArchiveManageMapper.insert(pam);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            dataSourceTransactionManager.rollback(transactionStatus);
            return response.setMsg(0, "更新失败");
        }
        if (bl) {
            response.setMsg(1, "更新成功");
            dataSourceTransactionManager.commit(transactionStatus);
        } else {
            response.setMsg(0, "更新失败");
            dataSourceTransactionManager.rollback(transactionStatus);
        }
        return response;
    }
 
 
    /**
     * 项目进度管理
     * 项目进度(1-6 立项、审批、研究、结题、验收、归档)
     *
     * @param progress
     * @return
     */
    public Response updateProjectProgress(ProjectManage progress) {
        Response<Object> response = new Response<>();
        progress.setProArchiveDate(new Date());
        boolean bl = projectManageMapper.updateProjectProgress(progress) > 0;
        if (bl) {
            projectArchiveManageMapper.updateProjectProgress(progress);//有文档材料就增加归档时间
            response.setMsg(1, "更新成功");
        } else {
            response.setMsg(0, "更新失败");
        }
        return response;
    }
}