|
@@ -44,10 +44,7 @@ import org.springblade.manager.entity.ContractInfo;
|
|
|
import org.springblade.manager.entity.ProjectInfo;
|
|
|
import org.springblade.manager.entity.TabBusstimeInfo;
|
|
|
import org.springblade.manager.entity.WbsTreeContract;
|
|
|
-import org.springblade.manager.feign.ArchiveTreeContractClient;
|
|
|
-import org.springblade.manager.feign.ContractClient;
|
|
|
-import org.springblade.manager.feign.ProjectClient;
|
|
|
-import org.springblade.manager.feign.WbsTreeContractClient;
|
|
|
+import org.springblade.manager.feign.*;
|
|
|
import org.springblade.manager.vo.AppWbsTreeContractVO;
|
|
|
import org.springblade.resource.feign.CommonFileClient;
|
|
|
import org.springblade.system.user.cache.UserCache;
|
|
@@ -61,8 +58,10 @@ import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.bind.annotation.RequestHeader;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import java.io.FileNotFoundException;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
@@ -121,6 +120,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
|
|
|
|
private final ArchiveAutoClient archiveAutoClient;
|
|
|
|
|
|
+ private final ExcelTabClient excelTabClient;
|
|
|
|
|
|
@Autowired
|
|
|
StringRedisTemplate RedisTemplate;
|
|
@@ -1299,4 +1299,82 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void reSigningEVisa(String taskIds, String contractId, String projectId,String header) {
|
|
|
+ if (ObjectUtil.isEmpty(taskIds)) {
|
|
|
+ throw new ServiceException("请选择至少一条任务进行重签");
|
|
|
+ }
|
|
|
+ List<Task> taskList = jdbcTemplate.query("select * from u_task where id in(" + taskIds + ")", new BeanPropertyRowMapper<>(Task.class));
|
|
|
+ if (taskList.size() > 0) {
|
|
|
+ List<String> dataIdList = taskList.stream().map(Task::getFormDataId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
|
|
|
+ List<InformationQuery> informationQueryList = jdbcTemplate.query("select * from u_information_query where id in(" + StringUtils.join(dataIdList, ",") + ")", new BeanPropertyRowMapper<>(InformationQuery.class));
|
|
|
+ if (informationQueryList.size() > 0) {
|
|
|
+ List<Long> nodePKeyIdList = informationQueryList.stream().map(InformationQuery::getWbsId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
|
|
|
+ if (nodePKeyIdList.size() > 0) {
|
|
|
+ try {
|
|
|
+ //重新保存
|
|
|
+ long startTime_1 = System.currentTimeMillis();
|
|
|
+ R result = this.saveNodePdf(StringUtils.join(nodePKeyIdList, ","), contractId, projectId,header);
|
|
|
+ long endTime_1 = System.currentTimeMillis();
|
|
|
+ long executionTime_1 = endTime_1 - startTime_1;
|
|
|
+ log.info("saveNodePdf执行时间:" + executionTime_1 + " 毫秒");
|
|
|
+
|
|
|
+ //重新电签
|
|
|
+ if (result != null && "成功".equals(result.getData())) {
|
|
|
+
|
|
|
+ List<TaskApprovalVO> taskApprovalVOS = new ArrayList<>();
|
|
|
+ //获取任务详情信息Map
|
|
|
+ Set<String> processInstanceIds = taskList.stream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
|
|
|
+ Map<String, List<TaskParallel>> taskParallelGroupMap = new HashMap<>();
|
|
|
+ if (processInstanceIds.size() > 0) {
|
|
|
+ String resultIds = processInstanceIds.stream()
|
|
|
+ .map(id -> "'" + id + "'")
|
|
|
+ .collect(Collectors.joining(","));
|
|
|
+ taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
|
|
|
+ }
|
|
|
+ Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
|
|
|
+
|
|
|
+ for (Task task : taskList) {
|
|
|
+ List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
|
|
|
+ for (TaskParallel taskParallel : taskParallelList) {
|
|
|
+ //待审批的不进行重签, 存在待审批,但是电签状态是失败的
|
|
|
+ if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
|
|
|
+ TaskApprovalVO approvalVO = new TaskApprovalVO();
|
|
|
+ approvalVO.setTaskId(task.getId().toString());
|
|
|
+ approvalVO.setFlag("OK");
|
|
|
+ approvalVO.setComment("重新发起电签");
|
|
|
+ approvalVO.setApprovalType(1);
|
|
|
+ approvalVO.setFormDataId(task.getFormDataId());
|
|
|
+ approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
|
|
|
+ approvalVO.setYsNickName(taskParallel.getTaskUserName());
|
|
|
+ approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
|
|
|
+ taskApprovalVOS.add(approvalVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ long startTime_2 = System.currentTimeMillis();
|
|
|
+ this.batchCompleteApprovalTask(taskApprovalVOS);
|
|
|
+ long endTime_2 = System.currentTimeMillis();
|
|
|
+ long executionTime_2 = endTime_2 - startTime_2;
|
|
|
+ log.info("batchCompleteApprovalTask执行时间:" + executionTime_2 + " 毫秒");
|
|
|
+
|
|
|
+ throw new ServiceException("任务已经成功提交重签,请耐心等待!");
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("重新保存PDF信息失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new ServiceException("重新保存PDF信息失败,原因:" + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ throw new ServiceException("未获取到任务信息,操作失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ R saveNodePdf(String nodePKeyIds, String contractId, String projectId,String header) throws Exception {
|
|
|
+ return excelTabClient.synPDFInfo(contractId, nodePKeyIds, "1", projectId,header);
|
|
|
+ }
|
|
|
+
|
|
|
}
|