Browse Source

数据提交

hongchuangyanfa 2 years ago
parent
commit
f51967ae32

+ 1 - 1
blade-common/src/main/java/org/springblade/common/utils/AsyncConfigurer.java

@@ -25,7 +25,7 @@ public class AsyncConfigurer {
     @Bean("taskExecutor1")
     public ThreadPoolExecutor getAsyncExecutor() {
         return new ThreadPoolMonitor(cpuNum
-                , 3
+                , 6
                 , 60
                 , TimeUnit.SECONDS
                 , new LinkedBlockingQueue<>(2000)

+ 3 - 2
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java

@@ -25,6 +25,7 @@ import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.oss.enums.OssEnum;
 import org.springblade.core.oss.enums.OssStatusEnum;
 import org.springblade.core.oss.props.OssProperties;
+import org.springblade.core.oss.rule.BladeOssRule;
 import org.springblade.core.oss.rule.OssRule;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.*;
@@ -98,9 +99,9 @@ public class OssBuilder {
                          * @create 2023-03-31
                          * @deprecated 重写BladeOssRule-》BladeOssRuleRe 修改文件名UUID -》原始名
                          */
-                        ossRule = new BladeOssRuleRe(Boolean.TRUE);
+                        ossRule = new BladeOssRule(Boolean.TRUE);
                     } else {
-                        ossRule = new BladeOssRuleRe(Boolean.FALSE);
+                        ossRule = new BladeOssRule(Boolean.FALSE);
                     }
                     if (oss.getCategory() == OssEnum.MINIO.getCategory()) {
                         template = MinioOssBuilder.template(oss, ossRule);

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/TaskBatch.java

@@ -47,6 +47,8 @@ public class TaskBatch extends BaseEntity {
 
     private String jsonData;
 
+    private String nickName;
+
     public TaskBatch(String taskParallelId, String jsonData){
         this.setId(SnowFlakeUtil.getId());
         this.taskParallelId = taskParallelId;

+ 0 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -313,7 +313,6 @@ public class TaskController extends BladeController {
                             String projectId = projectAndContractId.split(",")[0];
                             String contractId = projectAndContractId.split(",")[1];
                             Map<String, String> stringMap = iTaskService.getTaskCount(projectId, contractId, userId);
-
                             webSocket.sendMessageByUserId(AuthUtil.getUserId().toString(), JSON.toJSONString(stringMap));
                         }
                     }

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskBatchMapper.xml

@@ -14,6 +14,7 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="task_parallel_id" property="taskParallelId"/>
         <result column="json_data" property="jsonData"/>
+        <result column="nick_name" property="nickName"/>
     </resultMap>
 
     <delete id="deletedById">

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskBatchService.java

@@ -19,6 +19,8 @@ package org.springblade.business.service;
 import org.springblade.business.entity.TaskBatch;
 import org.springblade.core.mp.base.BaseService;
 
+import java.util.List;
+
 /**
  *  服务类
  *

+ 1 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -105,7 +105,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
             }
             if (tableList != null && tableList.size() > 0) {
                 //删除掉无法溯源的数据
-                tableList.removeIf(node -> node.getIsTypePrivatePid() == null || node.getIsTypePrivatePid() <= 0 || StringUtils.isEmpty(node.getIsTypePrivatePid().toString()));
+                tableList.removeIf(node -> node.getIsTypePrivatePid() == null || node.getIsTypePrivatePid() <= 0 || StringUtils.isEmpty(node.getIsTypePrivatePid().toString()) || node.getHtmlUrl()==null );
                 List<Long> privatePIdList = tableList.stream().map(WbsTreeContract::getIsTypePrivatePid).distinct().collect(Collectors.toList());
                 return JSONArray.parseArray(JSONObject.toJSONString(privatePIdList), String.class);
 
@@ -118,7 +118,6 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                     return Func.toStrList(obj.getTableIds());
                 }
             }
-
         } else {
             //那么就可能是日志,检查是不是日志
             ContractLog log = this.contractLogService.getById(formDataId);

+ 75 - 9
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -1,5 +1,6 @@
 package org.springblade.business.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -38,10 +39,15 @@ import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.ProjectClient;
+import org.springblade.system.user.cache.UserCache;
+import org.springblade.system.user.entity.User;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -96,6 +102,9 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
     private final JdbcTemplate jdbcTemplate;
 
+    @Autowired
+    StringRedisTemplate RedisTemplate;
+
     private final ITrialSelfInspectionRecordService iTrialSelfInspectionRecordService;
 
     // 线程池
@@ -425,19 +434,71 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     .in(TaskParallel::getParallelProcessInstanceId, taskIds));
             //保存批次
         TaskBatch taskBatch = new TaskBatch(null, JSONObject.toJSONString(taskApprovalVOS));
-            taskBatch.setCreateUser(AuthUtil.getUserId());
+            taskBatch.setCreateUser(userId);
+            taskBatch.setNickName(nickName);
             taskBatch.setCreateTime(new Date());
 
             this.taskBatchService.save(taskBatch);
             String taskBatchId = taskBatch.getId().toString();
+
+            // 电签
+            Boolean istrue = true;
+            for (TaskApprovalVO taskApprovalVO : taskApprovalVOS) {
+                Boolean aBoolean = RedisTemplate.hasKey("sign-" + taskApprovalVO.getFormDataId());
+                if(aBoolean){
+                    istrue =false;
+                    break;
+                }
+            }
+
             // 添加到 线程中
-            CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
-                try {
-                    this.checkIsExsitTaskBatch(taskApprovalVOS, taskBatchId,userId,nickName);
-                } catch (FileNotFoundException e) {
-                    e.printStackTrace();
+            if(istrue){
+                CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
+                    try {
+                        this.checkIsExsitTaskBatch(taskApprovalVOS, taskBatchId,userId,nickName);
+                    } catch (FileNotFoundException e) {
+                        e.printStackTrace();
+                    }
+                }, executor);  
+            }
+    }
+
+
+    @Scheduled(cron = "0 */3 * * * ?")
+    public  void  SignInfo() {
+        //执行代码
+        logger.debug("扫描开始");
+        List<TaskBatch> maps = taskBatchService.getBaseMapper().selectList(Wrappers.<TaskBatch>lambdaQuery().eq(TaskBatch::getIsDeleted, 0));
+        if(maps!=null && maps.size()>=1){
+            for (TaskBatch dataInfo:maps){
+                String jsonData = dataInfo.getJsonData();
+                List<TaskApprovalVO> list=JSONArray.parseArray(jsonData,TaskApprovalVO.class);
+                String taskBatchId = dataInfo.getId().toString();
+                Long userId = dataInfo.getCreateUser();
+                String nickName = dataInfo.getNickName();
+
+                Boolean istrue = true;
+                for (TaskApprovalVO taskApprovalVO : list) {
+                    Boolean aBoolean = RedisTemplate.hasKey("sign-" + taskApprovalVO.getFormDataId());
+                    if(aBoolean){
+                        istrue =false;
+                        break;
+                    }
+                }
+
+                // 添加到 线程中
+                if(istrue){
+                    CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
+                        try {
+                            this.checkIsExsitTaskBatch(list, taskBatchId,userId,nickName);
+                        } catch (FileNotFoundException e) {
+                            e.printStackTrace();
+                        }
+                    }, executor);
+                    runAsync.join();
                 }
-            }, executor);
+            }
+        }
     }
 
     private void checkIsExsitTaskBatch(List<TaskApprovalVO> taskApprovalVOS, String batchId,Long userId,String nickName) throws FileNotFoundException {
@@ -448,8 +509,9 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             for (TaskApprovalVO taskApprovalVO : taskApprovalVOS) {
                 taskApprovalVO.setUserId(userId);
                 taskApprovalVO.setNickName(nickName);
-                String pdfUrlEVisa = this.completeApprovalTask(taskApprovalVO);
+                RedisTemplate.opsForValue().set("sign-"+taskApprovalVO.getFormDataId(),"1",300, TimeUnit.SECONDS);
 
+                String pdfUrlEVisa = this.completeApprovalTask(taskApprovalVO);
                 //TODO ============== 电签成功,修改试验状态,关联工程部位信息pdf(只有电签成功,才修改) liuYc 2023-03-16 ==============
                 if ("OK".equals(taskApprovalVO.getFlag()) && StringUtils.isNotEmpty(pdfUrlEVisa)) {
                     //已审批
@@ -460,8 +522,12 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatusFC(taskApprovalVO);
                 }
             }
-            //删除掉对应批次
+
+            //executor删除掉对应批次
             this.taskBatchService.deletedById(batchId);
+            for (TaskApprovalVO taskApprovalVO : taskApprovalVOS) {
+                RedisTemplate.delete("sign-"+taskApprovalVO.getFormDataId());
+            }
             isContinue = false;
         }
     }

+ 12 - 3
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java

@@ -51,6 +51,8 @@ import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.SignPfxClient;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.http.converter.StringHttpMessageConverter;
@@ -100,6 +102,9 @@ public class EVisaServiceImpl implements EVisaService {
 
     private final ContractClient contractClient;
 
+    @Autowired
+    StringRedisTemplate RedisTemplate;
+
     @Override
     public String certification(String pdfUrl, String fileName, String contractId) {
         try {
@@ -311,6 +316,7 @@ public class EVisaServiceImpl implements EVisaService {
         TaskApprovalVO taskFile = this.taskClient.queryBusinessDataTask(JSONObject.parseObject(JSONObject.toJSONString(task), TaskApprovalVO.class));
         if (taskFile == null || taskFile.getApprovalFileList().size() <= 0) {
             //没有找到业务文件,取消签章
+            RedisTemplate.delete("sign-"+task.getFormDataId());
             return NOT_PFX_OR_FILE;
         }
 
@@ -318,6 +324,7 @@ public class EVisaServiceImpl implements EVisaService {
         List<JSONObject> eVisaConfigList = this.taskClient.queryBusinessTableEVisaConfig(task.getParallelProcessInstanceId(),task.getUserId(), "false");
         if (eVisaConfigList == null || eVisaConfigList.size() == 0) {
             //没有电签配置,默认当前任务为不签字审批,返回成功
+            RedisTemplate.delete("sign-"+task.getFormDataId());
             return SUCCESS + "@@@@" + taskFile.getApprovalFileList().get(0).getFileUrl();
         }
 
@@ -325,11 +332,12 @@ public class EVisaServiceImpl implements EVisaService {
         List<SignPfxFile> userPfxList = this.signPfxClient.querySignPfxByUserIdOrContractId(task.getUserId().toString(), "");
         if (userPfxList == null || userPfxList.size() <= 0) {
             //没有签章,不执行电签
+            RedisTemplate.delete("sign-"+task.getFormDataId());
             return NOT_PFX_OR_FILE;
         }
 
         //上锁
-        if (DistributedRedisLock.acquire(task.getUserId().toString(), batch)) {
+        //if (DistributedRedisLock.acquire(task.getUserId().toString(), batch)) {
             try {
                 //获取需要签章的数据
                 List<TaskApprovalVO.ApprovalFile> files = taskFile.getApprovalFileList();
@@ -383,11 +391,12 @@ public class EVisaServiceImpl implements EVisaService {
                     }
                 }
             } catch (Exception e) {
+                RedisTemplate.delete("sign-"+task.getFormDataId());
                 e.printStackTrace();
             }
-        }
+       // }
         //释放锁
-        DistributedRedisLock.release(task.getUserId().toString());
+      //  DistributedRedisLock.release(task.getUserId().toString());
 
         return resultMessage;
     }

+ 11 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -282,8 +282,8 @@ public class ExcelTabController extends BladeController {
     })
     public R putFileAttach(@RequestParam("file") MultipartFile file, Long nodeId) {
 
-        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        //String file_path = "/Users/hongchuangyanfa/Desktop/"; //ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        //String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        String file_path = "/Users/hongchuangyanfa/Desktop/"; //ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
 
         ExcelTab detail = excelTabService.getById(nodeId);
         // 上传excel文件
@@ -859,6 +859,9 @@ public class ExcelTabController extends BladeController {
 
             // 计算单元格坐标
             int x = 0;
+            if(i==9 || i==10){
+                System.out.println("1234");
+            }
             for (int j = 0; j < tds.size(); j++) {
                 {
                     Element data = tds.get(j);
@@ -971,7 +974,10 @@ public class ExcelTabController extends BladeController {
                                 int mx1 = Integer.parseInt(dataInfo3.split(":")[0]);
                                 int mx2 = Integer.parseInt(dataInfo3.split(":")[1]);
                                 if (mx2 + 1 == x1) {
-                                    dataInfo = StringUtils.join(ArrayUtils.remove(dataInfo2, dataInfo2.length - 1)); //removing element at index 2
+                                    String [] data3=new String[dataInfo2.length-1];
+                                    System.arraycopy(dataInfo2,0,data3,0,data3.length);
+                                    dataInfo = StringUtils.join(data3); //removing element at index 2
+
                                     if (dataInfo2.length == 1) {
                                         dataInfo = mx1 + ":" + x2;
                                     } else {
@@ -1679,9 +1685,9 @@ public class ExcelTabController extends BladeController {
         System.out.println("3=" + DateUtil.formatDateTime(DateUtil.now()));
         //单个 pdf加载
         for (TableInfo tableInfo : tableInfoList) {
-            if(!tableInfo.isToBeUpdated()){
+            //if(!tableInfo.isToBeUpdated()){
                 excelTabService.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
-            }
+          //  }
 
         }
         System.out.println("4=" + DateUtil.formatDateTime(DateUtil.now()));

+ 6 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -10,6 +10,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.mixsmart.utils.ListUtils;
 import com.mixsmart.utils.RegexUtils;
+import com.spire.xls.CellRange;
+import com.spire.xls.Workbook;
+import com.spire.xls.*;
 import lombok.AllArgsConstructor;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
@@ -71,6 +74,7 @@ import java.util.*;
 import java.util.function.Function;
 import java.util.regex.Matcher;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 清表基础数据表 服务实现类
@@ -1155,7 +1159,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
     @Override
     public R getBussPdfInfo(Long pkeyId) throws Exception {
-        // String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        //String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         String file_path = "/Users/hongchuangyanfa/Desktop/";
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
@@ -1401,8 +1405,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 }
             }
         }
-
-        //wb.saveToFile(excelPath, ExcelVersion.Version2010);
         //输出流
         FileOutputStream outputStream = new FileOutputStream(excelPath);
         workbook.write(outputStream);
@@ -2319,7 +2321,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     //没有excel表单的不生成pdf
                     if (StringUtils.isNotEmpty(record.getHtmlUrl())) {
                         //生成记录表pdf
-                        String bussPdfInfo = this.getBussPDFTrial(record.getPKeyId(), contractId, id, recordPageNumber++, recordPageNumberCount, dto);
+                        String bussPdfInfo = this.getBussPDFTrial(record.getPKeyId(), contractId, id, recordPageNumber++, recordPageNumberCount,null);
                         if (StringUtils.isNotEmpty(bussPdfInfo)) {
                             dataPdfUrls.add(bussPdfInfo);
                         }

+ 0 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -17,7 +17,6 @@ import org.springblade.business.feign.InformationQueryClient;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
-import org.springblade.common.utils.ThreadPoolMonitor;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;

+ 0 - 46
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/AsyncConfigurer.java

@@ -1,46 +0,0 @@
-package org.springblade.manager.utils;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableAsync;
-
-import java.util.concurrent.*;
-
-@Slf4j
-@Configuration
-@EnableAsync
-public class AsyncConfigurer {
-
-    /**
-     * cpu 核心数量
-     */
-    public static final int cpuNum = Runtime.getRuntime().availableProcessors();
-
-    /**
-     * 线程池配置
-     *
-     * @return
-     */
-    @Bean("taskExecutor1")
-    public ThreadPoolExecutor getAsyncExecutor() {
-        return new ThreadPoolMonitor(cpuNum
-                , cpuNum * 2
-                , 60
-                , TimeUnit.SECONDS
-                , new LinkedBlockingQueue<>(2000)
-                , new ThreadPoolExecutor.DiscardOldestPolicy(), "manager-thread-pool");
-    }
-
-    /**
-     * 线程池配置
-     *
-     * @return
-     */
-    @Bean("singleExecutor")
-    public ExecutorService getSingleExecutor() {
-        log.info("线程池初始化......");
-        return Executors.newSingleThreadExecutor();
-    }
-
-}