whycrzg
2021-03-31 50162c4048a608bee17feb4d68d919122162d2d9
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
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()));
        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) {
                    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(new Date());
                        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);
            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("文件名", pam.getProDocumentName());
                    mapDoc.put("文件路径", pam.getProFilePath());
                    list.add(mapDoc);
                }
            }
            map.put("文档材料", 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;
            String path = pm.getNote().trim();
            if (path.length() > 10) {
                ProjectArchiveManage pam = new ProjectArchiveManage();
                pam.setProNum(pm.getProNum());
                pam.setProName(pm.getProName());
                pam.setProNameCode(pm.getProNameCode());//唯一
                pam.setProSort(pm.getProSort());
                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));
                projectArchiveManageMapper.insert(pam);
            }
            response.setMsg(1, "更新成功");
        } catch (Exception e) {
            e.printStackTrace();
            dataSourceTransactionManager.rollback(transactionStatus);
            return response.setMsg(0, "更新失败");
        }
        if (bl) {
            dataSourceTransactionManager.commit(transactionStatus);
        } else {
 
            dataSourceTransactionManager.rollback(transactionStatus);
        }
        return response;
    }
 
 
}