|
@@ -45,8 +45,11 @@ import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileNotFoundException;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
|
|
+import java.util.concurrent.ThreadPoolExecutor;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -95,6 +98,10 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
|
|
|
|
private final ITrialSelfInspectionRecordService iTrialSelfInspectionRecordService;
|
|
private final ITrialSelfInspectionRecordService iTrialSelfInspectionRecordService;
|
|
|
|
|
|
|
|
+ // 线程池
|
|
|
|
+ @Resource(name = "taskExecutor1")
|
|
|
|
+ private ThreadPoolExecutor executor;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<TaskParallel> queryApprovalUser(String formDataIds) {
|
|
public List<TaskParallel> queryApprovalUser(String formDataIds) {
|
|
//返回结果
|
|
//返回结果
|
|
@@ -121,12 +128,12 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public TaskApprovalVO queryBusinessDataTask(TaskApprovalVO taskApprovalVO) {
|
|
public TaskApprovalVO queryBusinessDataTask(TaskApprovalVO taskApprovalVO) {
|
|
- int foreachNumber = 0;
|
|
|
|
|
|
+ /*int foreachNumber = 0;
|
|
do {
|
|
do {
|
|
//判断锁是否存在
|
|
//判断锁是否存在
|
|
if (!DistributedRedisLock.getLockStatus(taskApprovalVO.getFormDataId())) {
|
|
if (!DistributedRedisLock.getLockStatus(taskApprovalVO.getFormDataId())) {
|
|
//如果不存在,直接获取并上锁,由于这个查询方法是任务方面使用,所以解锁需要在对应数据使用结束后
|
|
//如果不存在,直接获取并上锁,由于这个查询方法是任务方面使用,所以解锁需要在对应数据使用结束后
|
|
- DistributedRedisLock.acquire(taskApprovalVO.getFormDataId(), 20);
|
|
|
|
|
|
+ DistributedRedisLock.acquire(taskApprovalVO.getFormDataId(), 20);*/
|
|
switch (taskApprovalVO.getApprovalType()) {
|
|
switch (taskApprovalVO.getApprovalType()) {
|
|
case 1:
|
|
case 1:
|
|
//填报数据
|
|
//填报数据
|
|
@@ -142,7 +149,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
DistributedRedisLock.release(taskApprovalVO.getFormDataId());
|
|
DistributedRedisLock.release(taskApprovalVO.getFormDataId());
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
|
|
+ /*} else {
|
|
try {
|
|
try {
|
|
if (foreachNumber < 10) {
|
|
if (foreachNumber < 10) {
|
|
//如果存在锁,则等待解锁
|
|
//如果存在锁,则等待解锁
|
|
@@ -157,8 +164,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
}
|
|
}
|
|
} while (true);
|
|
} while (true);
|
|
//能走到这说明找不到文件或者超过锁定次数,解锁并返回
|
|
//能走到这说明找不到文件或者超过锁定次数,解锁并返回
|
|
- DistributedRedisLock.release(taskApprovalVO.getFormDataId());
|
|
|
|
- return taskApprovalVO;
|
|
|
|
|
|
+ DistributedRedisLock.release(taskApprovalVO.getFormDataId());*/
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -407,47 +413,41 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
* 批量电签接口
|
|
* 批量电签接口
|
|
*
|
|
*
|
|
* @param taskApprovalVOS
|
|
* @param taskApprovalVOS
|
|
- * @param userId
|
|
|
|
* @throws FileNotFoundException
|
|
* @throws FileNotFoundException
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public void batchCompleteApprovalTask(List<TaskApprovalVO> taskApprovalVOS, Long userId) throws FileNotFoundException {
|
|
|
|
|
|
+ public void batchCompleteApprovalTask(List<TaskApprovalVO> taskApprovalVOS) {
|
|
|
|
+ Long userId =AuthUtil.getUserId();
|
|
|
|
+ String nickName =AuthUtil.getNickName();
|
|
List<String> taskIds = taskApprovalVOS.stream().map(TaskApprovalVO::getParallelProcessInstanceId).distinct().collect(Collectors.toList());
|
|
List<String> taskIds = taskApprovalVOS.stream().map(TaskApprovalVO::getParallelProcessInstanceId).distinct().collect(Collectors.toList());
|
|
- long batch = this.taskBatchService.count(Wrappers.<TaskBatch>lambdaQuery().eq(TaskBatch::getCreateUser, userId));
|
|
|
|
- if (batch > 0) {
|
|
|
|
- //修改电签状态
|
|
|
|
- this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate()
|
|
|
|
|
|
+ this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate()
|
|
.set(TaskParallel::getEVisaContent, "当前等待电签的批次较多,请等待几分钟后刷新页面查看........")
|
|
.set(TaskParallel::getEVisaContent, "当前等待电签的批次较多,请等待几分钟后刷新页面查看........")
|
|
.in(TaskParallel::getParallelProcessInstanceId, taskIds));
|
|
.in(TaskParallel::getParallelProcessInstanceId, taskIds));
|
|
//保存批次
|
|
//保存批次
|
|
- TaskBatch taskBatch = new TaskBatch(null, JSONObject.toJSONString(taskApprovalVOS));
|
|
|
|
|
|
+ TaskBatch taskBatch = new TaskBatch(null, JSONObject.toJSONString(taskApprovalVOS));
|
|
taskBatch.setCreateUser(AuthUtil.getUserId());
|
|
taskBatch.setCreateUser(AuthUtil.getUserId());
|
|
taskBatch.setCreateTime(new Date());
|
|
taskBatch.setCreateTime(new Date());
|
|
- this.taskBatchService.save(taskBatch);
|
|
|
|
- } else {
|
|
|
|
- //修改电签状态
|
|
|
|
- this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate()
|
|
|
|
- .set(TaskParallel::getEVisaContent, "正在电签,请稍后查看........")
|
|
|
|
- .in(TaskParallel::getParallelProcessInstanceId, taskIds));
|
|
|
|
|
|
|
|
- //保存批次
|
|
|
|
- TaskBatch taskBatch = new TaskBatch(null, JSONObject.toJSONString(taskApprovalVOS));
|
|
|
|
- taskBatch.setCreateUser(AuthUtil.getUserId());
|
|
|
|
- taskBatch.setCreateTime(new Date());
|
|
|
|
this.taskBatchService.save(taskBatch);
|
|
this.taskBatchService.save(taskBatch);
|
|
-
|
|
|
|
- //执行电签,结束后检查在执行是否有新的等待批次
|
|
|
|
- this.checkIsExsitTaskBatch(taskApprovalVOS, taskBatch.getId().toString());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ String taskBatchId = taskBatch.getId().toString();
|
|
|
|
+ // 添加到 线程中
|
|
|
|
+ CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
|
|
|
|
+ try {
|
|
|
|
+ this.checkIsExsitTaskBatch(taskApprovalVOS, taskBatchId,userId,nickName);
|
|
|
|
+ } catch (FileNotFoundException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }, executor);
|
|
}
|
|
}
|
|
|
|
|
|
- private void checkIsExsitTaskBatch(List<TaskApprovalVO> taskApprovalVOS, String batchId) throws FileNotFoundException {
|
|
|
|
|
|
+ private void checkIsExsitTaskBatch(List<TaskApprovalVO> taskApprovalVOS, String batchId,Long userId,String nickName) throws FileNotFoundException {
|
|
boolean isContinue = true;
|
|
boolean isContinue = true;
|
|
while (isContinue) {
|
|
while (isContinue) {
|
|
logger.info("【任务审核】当前批次开始电签。批次ID:" + batchId);
|
|
logger.info("【任务审核】当前批次开始电签。批次ID:" + batchId);
|
|
//执行电签
|
|
//执行电签
|
|
for (TaskApprovalVO taskApprovalVO : taskApprovalVOS) {
|
|
for (TaskApprovalVO taskApprovalVO : taskApprovalVOS) {
|
|
|
|
+ taskApprovalVO.setUserId(userId);
|
|
|
|
+ taskApprovalVO.setNickName(nickName);
|
|
String pdfUrlEVisa = this.completeApprovalTask(taskApprovalVO);
|
|
String pdfUrlEVisa = this.completeApprovalTask(taskApprovalVO);
|
|
|
|
|
|
//TODO ============== 电签成功,修改试验状态,关联工程部位信息pdf(只有电签成功,才修改) liuYc 2023-03-16 ==============
|
|
//TODO ============== 电签成功,修改试验状态,关联工程部位信息pdf(只有电签成功,才修改) liuYc 2023-03-16 ==============
|
|
@@ -459,26 +459,10 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
//已废除
|
|
//已废除
|
|
this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatusFC(taskApprovalVO);
|
|
this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatusFC(taskApprovalVO);
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
//删除掉对应批次
|
|
//删除掉对应批次
|
|
this.taskBatchService.deletedById(batchId);
|
|
this.taskBatchService.deletedById(batchId);
|
|
- try {
|
|
|
|
- //查询是否还存在对应批次(时间升序)
|
|
|
|
- List<TaskBatch> taskBatches = this.taskBatchService.list(Wrappers.<TaskBatch>lambdaQuery().eq(TaskBatch::getCreateUser, AuthUtil.getUserId()).orderByAsc(TaskBatch::getCreateTime));
|
|
|
|
- if (taskBatches != null && taskBatches.size() > 0) {
|
|
|
|
- TaskBatch taskBatch = taskBatches.get(0);
|
|
|
|
- //获取业务参数集合
|
|
|
|
- taskApprovalVOS = JSONArray.parseArray(JSONObject.toJSONString(taskBatch.getJsonData()), TaskApprovalVO.class);
|
|
|
|
- batchId = taskBatch.getId().toString();
|
|
|
|
- } else {
|
|
|
|
- logger.info("【任务审核】已无等待电签批次!当前线程结束即将释放。");
|
|
|
|
- isContinue = false;
|
|
|
|
- }
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- isContinue = false;
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
|
|
+ isContinue = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|