Преглед на файлове

实现签名用印功能

qitz преди 2 години
родител
ревизия
6f131cba29

+ 4
- 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/mscase/MsSignSealController.java Целия файл

60
 
60
 
61
 
61
 
62
 
62
 
63
+
64
+
65
+
66
+
63
 }
67
 }

+ 4
- 0
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/dept/MsSealSignRecordMapper.java Целия файл

2
 
2
 
3
 import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord;
3
 import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord;
4
 import com.ruoyi.wisdomarbitrate.domain.entity.dept.MsSealSignRecord;
4
 import com.ruoyi.wisdomarbitrate.domain.entity.dept.MsSealSignRecord;
5
+import org.apache.ibatis.annotations.Select;
5
 import tk.mybatis.mapper.common.Mapper;
6
 import tk.mybatis.mapper.common.Mapper;
6
 
7
 
7
 import java.util.List;
8
 import java.util.List;
8
 
9
 
9
 public interface MsSealSignRecordMapper extends Mapper<MsSealSignRecord> {
10
 public interface MsSealSignRecordMapper extends Mapper<MsSealSignRecord> {
10
 
11
 
12
+
13
+    @Select("SELECT s.id id ,s.case_appli_id caseAppliId ,s.file_id fileId ,s.sign_flow_id signFlowId ,s.sign_flow_status signFlowStatus  from ms_seal_sign_record s join ms_case_application c on s.case_appli_id=c.id   where s.sign_flow_status  in (1,2) ")
14
+    List<MsSealSignRecord> selectSealSignRecordbyStat();
11
 }
15
 }

+ 1
- 0
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/MsSignSealService.java Целия файл

15
 
15
 
16
 
16
 
17
     SealSignRecord selectSealUrl(MsSignSealDTO dto) throws EsignDemoException;
17
     SealSignRecord selectSealUrl(MsSignSealDTO dto) throws EsignDemoException;
18
+
18
 }
19
 }

+ 8
- 0
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/mscase/impl/MsSignSealServiceImpl.java Целия файл

6
 import com.alibaba.fastjson.JSONArray;
6
 import com.alibaba.fastjson.JSONArray;
7
 import com.alibaba.fastjson.JSONObject;
7
 import com.alibaba.fastjson.JSONObject;
8
 import com.google.gson.Gson;
8
 import com.google.gson.Gson;
9
+import com.google.gson.JsonArray;
9
 import com.google.gson.JsonObject;
10
 import com.google.gson.JsonObject;
10
 import com.ruoyi.common.core.domain.AjaxResult;
11
 import com.ruoyi.common.core.domain.AjaxResult;
11
 import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
12
 import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
14
 import com.ruoyi.common.exception.EsignDemoException;
15
 import com.ruoyi.common.exception.EsignDemoException;
15
 import com.ruoyi.common.exception.ServiceException;
16
 import com.ruoyi.common.exception.ServiceException;
16
 import com.ruoyi.common.utils.SmsUtils;
17
 import com.ruoyi.common.utils.SmsUtils;
18
+import com.ruoyi.common.utils.StringUtils;
17
 import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
19
 import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
18
 import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
20
 import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
19
 import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
21
 import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
45
 import javax.annotation.Resource;
47
 import javax.annotation.Resource;
46
 import java.util.ArrayList;
48
 import java.util.ArrayList;
47
 import java.util.List;
49
 import java.util.List;
50
+import java.util.stream.Collectors;
48
 
51
 
49
 @Service
52
 @Service
50
 public class MsSignSealServiceImpl implements MsSignSealService {
53
 public class MsSignSealServiceImpl implements MsSignSealService {
325
                 application.setCaseStatusName(nextFlow.getCaseStatusName());
328
                 application.setCaseStatusName(nextFlow.getCaseStatusName());
326
                 caseApplicationMapper.updateByPrimaryKeySelective(application);
329
                 caseApplicationMapper.updateByPrimaryKeySelective(application);
327
                 CaseLogUtils.insertCaseLog(application.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"用印申请");
330
                 CaseLogUtils.insertCaseLog(application.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"用印申请");
331
+
332
+
328
             }
333
             }
329
         } else {
334
         } else {
330
             // 单独
335
             // 单独
336
             caseApplicationMapper.updateByPrimaryKeySelective(application);
341
             caseApplicationMapper.updateByPrimaryKeySelective(application);
337
             CaseLogUtils.insertCaseLog(application.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"用印申请");
342
             CaseLogUtils.insertCaseLog(application.getId(), nextFlow.getNodeId(), nextFlow.getCaseStatusName(),"用印申请");
338
 
343
 
344
+
339
         }
345
         }
340
         return AjaxResult.success("用印申请成功");
346
         return AjaxResult.success("用印申请成功");
341
 
347
 
368
     }
374
     }
369
 
375
 
370
 
376
 
377
+
378
+
371
 }
379
 }

+ 114
- 0
ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java Целия файл

1
 package com.ruoyi.wisdomarbitrate.utils;
1
 package com.ruoyi.wisdomarbitrate.utils;
2
 
2
 
3
+import cn.hutool.core.bean.BeanUtil;
3
 import com.alibaba.fastjson.JSONObject;
4
 import com.alibaba.fastjson.JSONObject;
4
 import com.google.gson.Gson;
5
 import com.google.gson.Gson;
5
 import com.google.gson.JsonArray;
6
 import com.google.gson.JsonArray;
6
 import com.google.gson.JsonObject;
7
 import com.google.gson.JsonObject;
8
+import com.ruoyi.common.constant.CaseApplicationConstants;
7
 import com.ruoyi.common.constant.FileTransformation;
9
 import com.ruoyi.common.constant.FileTransformation;
8
 import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
10
 import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
9
 import com.ruoyi.common.exception.EsignDemoException;
11
 import com.ruoyi.common.exception.EsignDemoException;
12
+import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
13
+import com.ruoyi.system.domain.entity.flow.MsCaseFlow;
14
+import com.ruoyi.system.mapper.flow.MsCaseFlowMapper;
10
 import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify;
15
 import com.ruoyi.wisdomarbitrate.domain.dto.dept.DeptIdentify;
11
 import com.ruoyi.wisdomarbitrate.domain.dto.dept.SealManage;
16
 import com.ruoyi.wisdomarbitrate.domain.dto.dept.SealManage;
17
+import com.ruoyi.wisdomarbitrate.domain.dto.mscase.SealSignRecord;
18
+import com.ruoyi.wisdomarbitrate.domain.entity.dept.MsSealSignRecord;
19
+import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseApplication;
12
 import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach;
20
 import com.ruoyi.wisdomarbitrate.domain.entity.mscase.MsCaseAttach;
13
 import com.ruoyi.wisdomarbitrate.mapper.dept.DeptIdentifyMapper;
21
 import com.ruoyi.wisdomarbitrate.mapper.dept.DeptIdentifyMapper;
22
+import com.ruoyi.wisdomarbitrate.mapper.dept.MsSealSignRecordMapper;
14
 import com.ruoyi.wisdomarbitrate.mapper.dept.SealManageMapper;
23
 import com.ruoyi.wisdomarbitrate.mapper.dept.SealManageMapper;
24
+import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseApplicationMapper;
15
 import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseAttachMapper;
25
 import com.ruoyi.wisdomarbitrate.mapper.mscase.MsCaseAttachMapper;
16
 import org.springframework.beans.factory.annotation.Autowired;
26
 import org.springframework.beans.factory.annotation.Autowired;
17
 import org.springframework.scheduling.annotation.Scheduled;
27
 import org.springframework.scheduling.annotation.Scheduled;
18
 import org.springframework.stereotype.Component;
28
 import org.springframework.stereotype.Component;
19
 import org.springframework.transaction.annotation.Transactional;
29
 import org.springframework.transaction.annotation.Transactional;
30
+import tk.mybatis.mapper.entity.Example;
20
 
31
 
21
 import java.io.File;
32
 import java.io.File;
22
 import java.io.IOException;
33
 import java.io.IOException;
23
 import java.time.LocalDate;
34
 import java.time.LocalDate;
35
+import java.util.ArrayList;
24
 import java.util.List;
36
 import java.util.List;
25
 import java.util.UUID;
37
 import java.util.UUID;
38
+import java.util.stream.Collectors;
26
 
39
 
27
 @Component
40
 @Component
28
 public class FixSelectFlowDetailUtils {
41
 public class FixSelectFlowDetailUtils {
32
     private DeptIdentifyMapper deptIdentifyMapper;
45
     private DeptIdentifyMapper deptIdentifyMapper;
33
     @Autowired
46
     @Autowired
34
     private SealManageMapper sealManageMapper;
47
     private SealManageMapper sealManageMapper;
48
+    @Autowired
49
+    private MsSealSignRecordMapper sealSignRecordMapper;
50
+    @Autowired
51
+    MsCaseApplicationMapper msCaseApplicationMapper;
52
+    @Autowired
53
+    MsCaseFlowMapper caseFlowMapper;
54
+    @Autowired
55
+    private MsCaseApplicationMapper caseApplicationMapper;
35
 
56
 
36
 
57
 
37
 
58
 
220
         }
241
         }
221
     }
242
     }
222
 
243
 
244
+    /*
245
+    定时查询签署流程详情
246
+     */
247
+//    @Scheduled(cron = "0/10 * * * * ?")
248
+    @Transactional
249
+    public void fixExecuteSelectFlowDetailUtils() {
250
+        Gson gson = new Gson();
251
+
252
+        List<MsSealSignRecord> sealSignRecords = sealSignRecordMapper.selectSealSignRecordbyStat();
253
+
254
+        try {
255
+            if (sealSignRecords != null && sealSignRecords.size() > 0) {
256
+                for (int i = 0; i < sealSignRecords.size(); i++) {
257
+                    MsSealSignRecord mssealSignRecord = sealSignRecords.get(i);
258
+                    SealSignRecord sealSignRecord = new SealSignRecord();
259
+                    BeanUtil.copyProperties(mssealSignRecord, sealSignRecord);
260
+                    sealSignRecord.setSignFlowid(mssealSignRecord.getSignFlowId());
261
+                    EsignHttpResponse signFlowDetail = SignAward.signFlowDetail(sealSignRecord);
262
+                    JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(), JsonObject.class);
263
+                    JsonObject flowDetailData = signFlowDetailJsonObject.getAsJsonObject("data");
264
+                    JsonArray signersArray = flowDetailData.get("signers").getAsJsonArray();
265
+                    List<Integer> psnsignStatusList = new ArrayList<>();
266
+                    Integer psnsignStatus = null;
267
+                    Integer orgsignStatus = null;
268
+                    for (int j = 0; j < signersArray.size(); j++) {
269
+                        JsonObject signerObject = (JsonObject) signersArray.get(j);
270
+
271
+                        if (!(signerObject.get("psnSigner").toString()).equals("null")) {
272
+                            JsonObject psnSignerData = signerObject.getAsJsonObject("psnSigner");
273
+                            if (psnSignerData != null) {
274
+                                psnsignStatus = signerObject.get("signStatus").getAsInt();
275
+                                psnsignStatusList.add(psnsignStatus);
276
+                            }
277
+                        }
278
+                        if (!(signerObject.get("orgSigner").toString()).equals("null")) {
279
+                            JsonObject orgSignerData = signerObject.getAsJsonObject("orgSigner");
280
+                            if (orgSignerData != null) {
281
+                                orgsignStatus = signerObject.get("signStatus").getAsInt();
282
+                            }
283
+                        }
284
+
285
+                    }
286
+
287
+                    List<Integer> psnsignStatusListnew = psnsignStatusList.stream().distinct().collect(Collectors.toList());
288
+
289
+                    if (( psnsignStatusListnew.size()==1 && (psnsignStatusListnew.get(0).intValue() == 2)) && (orgsignStatus.intValue() == 1)) {
290
+                        //更新立案申请状态为待用印
291
+                        MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(sealSignRecord.getCaseAppliId());
292
+                        if ((mssealSignRecord.getSignFlowStatus() != null) && (mssealSignRecord.getSignFlowStatus().intValue() == 1)) {
293
+                            // 根据流程id查找下一个流程节点
294
+                            MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getId().intValue());
295
+                            MsCaseApplication application = new MsCaseApplication();
296
+                            application.setId(caseApplicationselect.getId());
297
+                            application.setCaseFlowId(nextFlow.getId());
298
+                            application.setCaseStatusName(nextFlow.getCaseStatusName());
299
+                            caseApplicationMapper.updateByPrimaryKeySelective(application);
300
+
301
+                            //修改"签署用印记录表"的状态为待用印
302
+                            mssealSignRecord.setSignFlowStatus(2);
303
+                            sealSignRecordMapper.updateByPrimaryKeySelective(mssealSignRecord);
304
+                        }
305
+                    }
306
+                    if (( psnsignStatusListnew.size()==1 && (psnsignStatusListnew.get(0).intValue() == 2))  && (orgsignStatus.intValue() == 2)) {
307
+                        //更新立案申请状态为待送达
308
+                        MsCaseApplication caseApplicationselect = msCaseApplicationMapper.selectByPrimaryKey(sealSignRecord.getCaseAppliId());
309
+
310
+                        if ((mssealSignRecord.getSignFlowStatus() != null) && (mssealSignRecord.getSignFlowStatus().intValue() == 2)) {
311
+                            //修改"签署用印记录表"的状态为签署完成
312
+                            mssealSignRecord.setSignFlowStatus(3);
313
+                            sealSignRecordMapper.updateByPrimaryKeySelective(mssealSignRecord);
314
+
315
+                            // 根据流程id查找下一个流程节点
316
+                            MsCaseFlow nextFlow = caseFlowMapper.nextFlow(caseApplicationselect.getId().intValue());
317
+                            MsCaseApplication application = new MsCaseApplication();
318
+                            application.setId(caseApplicationselect.getId());
319
+                            application.setCaseFlowId(nextFlow.getId());
320
+                            application.setCaseStatusName(nextFlow.getCaseStatusName());
321
+                            caseApplicationMapper.updateByPrimaryKeySelective(application);
322
+                        }
323
+                    }
324
+                }
325
+
326
+            }
327
+        } catch (EsignDemoException e) {
328
+            e.printStackTrace();
329
+        }
330
+
331
+    }
332
+
333
+
334
+
335
+
336
+
223
 }
337
 }
224
 
338
 
225
 
339