Ver Fonte

Merge branch 'zhuwei' into dev

# Conflicts:
#	blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
zhuwei há 2 semanas atrás
pai
commit
bddc0ebfe7

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/TaskSignInfoVO.java

@@ -1,5 +1,6 @@
 package org.springblade.business.vo;
 
+import com.alibaba.fastjson.JSONArray;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -92,4 +93,6 @@ public class TaskSignInfoVO {
     @ApiModelProperty("是否可以签章:0-表示可以,否则就不行")
     private Integer isSignature;
 
+    @ApiModelProperty("电签分页逻辑数据")
+    private JSONArray pagePdfUrl;
 }

+ 21 - 6
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVDataServiceImpl.java

@@ -5,6 +5,9 @@ import cfca.paperless.base.util.Base64;
 import cn.hutool.core.io.file.FileReader;
 
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.AllArgsConstructor;
@@ -340,6 +343,10 @@ public class EVDataServiceImpl implements EVDataService {
                 } else if (taskApp.getApprovalType() == 3) { // 日志
                     updateSql = "update u_contract_log set e_visa_pdf_url='" + taskApp.getLastFilePdfUrl() + "',status='" + taskApp.getSigType() + "',update_time=SYSDATE() where id='" + taskApp.getFormDataId() + "' ";
                 } else if (taskApp.getApprovalType() == 5) { //中期计量支付证书
+                    // 获取s_interim_pay_certificate 的原始数据
+                    taskApp.getPagePdfUrl()
+
+
                     updateSql = "update s_interim_pay_certificate set approve_status=" + taskApp.getSigType() + ",update_time=SYSDATE(), raw_url='" + taskApp.getLastFilePdfUrl() + "' where contract_period_id = " + taskApp.getFormDataId();
                 } else if (taskApp.getApprovalType() == 6 || taskApp.getApprovalType() == 7) {
                     updateSql = "update s_material_start_statement set approve_status=" + taskApp.getSigType() + ",update_time=SYSDATE(), raw_url='" + taskApp.getLastFilePdfUrl() + "' where meter_period_id = " + taskApp.getFormDataId();
@@ -456,18 +463,26 @@ public class EVDataServiceImpl implements EVDataService {
                 //中间计量用逗号拼接pagePdfUrl
                 String pageUrl = map.get("page_pdf_url")+"";
                 if(StringUtils.isNotEmpty(pageUrl) && pageUrl.length()>=20 ) {
-                    pdfUrl = pageUrl.replaceAll(" ", "");
-                }else{
-                    pdfUrl=map.get("raw_url") + "";
+                    JSONArray jsonArray = JSONArray.parseArray(pageUrl);
+                    JSONArray jsonData = new JSONArray();
+                    for(int i=0;i<jsonArray.size();i++){
+                        JSONObject jsonObject = jsonArray.getJSONObject(i);
+                        String state = jsonObject.getString("state");
+                        String url = jsonObject.getString("url");
+                        if(state.equals("0") && taskApp.getSigType()==1){  //这个签字
+                            taskApp.setSignPdfUrl(url);
+                        }
+                        if(state.equals("1") && taskApp.getSigType()==2){  //签章
+                            taskApp.setSignPdfUrl(url);
+                        }
+                    }
+                    taskApp.setPagePdfUrl(jsonData);
                 }
-                pdfUrl=map.get("raw_url") + "";
-                taskApp.setSignPdfUrl(pdfUrl);
             } else if (taskApp.getApprovalType() == 6 || taskApp.getApprovalType() == 7) {
                 map = this.jdbcTemplate.queryForMap("select * from  s_material_start_statement where is_deleted=0 and meter_period_id = " + taskApp.getFormDataId());
                 taskApp.setSignPdfUrl(map.get("raw_url") + "");
             }
 
-
             // 验证数据
             taskApp.setContractId(map.get("contract_id") + "");
             taskApp.setProjectId(map.get("project_id") + "");

+ 27 - 30
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -746,12 +746,19 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     if (parent == null) {
                         return;
                     }
-                    List<Map<String, Object>> tableNamePkIdsMaps = this.jdbcTemplate.queryForList(
-                            "select c.init_table_name tableName,c.p_key_id pkId,c.html_url url,c.p_id from" +
-                                    " (select id from m_wbs_tree_contract where contract_id=" + currentNode.getContractId() + " and is_deleted=0 and node_type=6 and tree_code like '" + parent.getTreeCode() + "%' ORDER BY sort) k" +
-                                    " join m_wbs_tree_contract c on c.parent_id = k.id " +
-                                    "where  c.contract_id=" + currentNode.getContractId() + " and c.is_deleted=0 "
-                    );
+
+                    // 原来业务逻辑
+          /*         String queryAllTabs =  "select c.init_table_name tableName,c.p_key_id pkId,c.html_url url,c.p_id from" +
+                            " (select id from m_wbs_tree_contract where contract_id=" + currentNode.getContractId() + " and is_deleted=0 and node_type=6 and tree_code like '" + parent.getTreeCode() + "%' ORDER BY sort) k" +
+                            " join m_wbs_tree_contract c on c.parent_id = k.id " +
+                            "where  c.contract_id=" + currentNode.getContractId() + " and c.is_deleted=0 " ;
+                    List<Map<String, Object>> tableNamePkIdsMaps = this.jdbcTemplate.queryForList(queryAllTabs);*/
+
+                    String contSql = "SELECT c.init_table_name tableName,c.p_key_id pkId,c.html_url url,c.p_id from m_wbs_tree_contract where is_deleted=0 and ancestors_p_id like '%"+parent.getPId()+"%' and contract_id ="+parent.getContractId()+"  ORDER BY sort ,full_name,create_time ";
+                    List<Map<String, Object>> tableNamePkIdsMaps = this.jdbcTemplate.queryForList(contSql);
+                    // 对查询的表单进行排序 优先以树节点,表单名称,数字,顺序
+                    List<Map<String, Object>> conNode= getAllChildNodesWithStreamByMaps(parent.getPId()+"",tableNamePkIdsMaps);
+
                     if (Func.isNotEmpty(tableNamePkIdsMaps)) {
                         // removeList.clear();
                         missingList.forEach(miss -> {
@@ -7033,34 +7040,24 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         return R.fail("无数据");
     }
 
+    // 获取所有子节点
+    public List<Map<String, Object>> getAllChildNodesWithStreamByMaps(String parentId, List<Map<String, Object>> allNodes) {
+        List<Map<String, Object>> children = new ArrayList<>();
 
-    // 批量加载+内存计算
-/*    public List<WbsTreeContractLazyVO> getAllChildNodesWithStream(Long parentId, List<WbsTreeContractLazyVO> allNodes) {
-
-        // 2. 构建内存索引
-        Map<Long, WbsTreeContractLazyVO> nodeMap = allNodes.stream()
-                .collect(Collectors.toMap(WbsTreeContractLazyVO::getPKeyId, Function.identity()));
+        // 筛选直接子节点
+        List<Map<String, Object>> directChildren = allNodes.stream()
+                .filter(node -> parentId.equals(node.get("p_id")+""))
+                .collect(Collectors.toList());
 
-        Map<Long, List<WbsTreeContractLazyVO>> childrenMap = allNodes.stream()
-                .filter(node -> node.getPId() != null)
-                .collect(Collectors.groupingBy(WbsTreeContractLazyVO::getPId));
+        // 递归处理每个子节点
+        for (Map<String, Object> child : directChildren) {
+            children.add(child);
+            children.addAll(getAllChildNodesWithStreamByMaps(child.get("pkId")+"", allNodes));
+        }
 
-        // 3. 递归查找子节点
-        List<WbsTreeContractLazyVO> result = new ArrayList<>();
-        Deque<Long> stack = new ArrayDeque<>();
-        stack.push(Func.toLong(parentId));
+        return children;
+    }
 
-        while (!stack.isEmpty()) {
-            Long currentId = stack.pop();
-            WbsTreeContractLazyVO node = nodeMap.get(currentId);
-            if (node != null) {
-                result.add(node);
-                childrenMap.getOrDefault(currentId, Collections.emptyList())
-                        .forEach(child -> stack.push(child.getPKeyId()));
-            }
-        }
-        return result;
-    }*/
     // 获取所有子节点
     public List<WbsTreeContractLazyVO> getAllChildNodesWithStream(String parentId, List<WbsTreeContractLazyVO> allNodes) {
         List<WbsTreeContractLazyVO> children = new ArrayList<>();

+ 2 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/config/RedissonConfig.java

@@ -12,8 +12,8 @@ public class RedissonConfig {
     public RedissonClient redissonClient() {
         Config config = new Config();
         config.useSingleServer()
-                .setAddress("redis://127.0.0.1:6378")
-                .setPassword("123456");
+                .setAddress("redis://127.0.0.1:6379");
+             //   .setPassword("123456");
         return Redisson.create(config);
     }
 }

+ 27 - 88
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -4272,6 +4272,13 @@ public class TaskController extends BladeController {
         /*如果数据没有变化,则各表的PDF可以不用更新*/
         ExecutionTime executionTime = new ExecutionTime();
         List<ReportResult> reportResults;
+
+        // 获取原始数据信息
+        String[] REPORT = new String[]{"s_interim_pay_certificate", "s_material_start_statement", "s_material_start_statement"};
+
+        Map<String, Object> oldData= jdbcTemplate.queryForMap("select * from " + REPORT[report.getType()] + " where id=" + report.getId() + "");
+
+
         //查询出当前项目使用的计量模板是否是万盛计量模板
         boolean judge = false;
         if(ObjectUtil.isNotEmpty(report.getProjectId())){
@@ -4504,9 +4511,7 @@ public class TaskController extends BladeController {
                                 //去掉表格虚线
                                 sheet.setPrintGridlines(false);
                                 //设置 整个工作表为一页
-                                if(rs.getName().indexOf("400")>=0){
-                                    System.out.println("123");
-                                }
+
                                 sheet.setFitToPage(true);
                                 ByteArrayOutputStream out = new ByteArrayOutputStream();
                                 workbook.write(out);
@@ -4571,6 +4576,9 @@ public class TaskController extends BladeController {
 
                                 BladeFile bladeFile = newIOSSClient.uploadFile(rs.getName() + SnowFlakeUtil.getId() + ".pdf", local);
                                 url = bladeFile.getLink();
+                                // 删除原来oss上的pdf
+                                String dataName = local.substring(local.indexOf("/upload"),local.length());
+                                newIOSSClient.removeFile(dataName);
                             } catch (Exception e) {
                                 e.printStackTrace();
                             }
@@ -4595,6 +4603,14 @@ public class TaskController extends BladeController {
                     addSignTaskBatch(report);
                     interimPayCertificateService.taskMeterPdfInfo2("",report.getPeriodId()+"",report.getType());
                 }
+                // 删除以前oss文件上非结构文件
+                if(oldData!=null && Func.isNull(oldData)) {
+                    if (report.getType() == 0) {
+                        System.out.println("1111");
+                    } else {
+                        System.out.println("2222");
+                    }
+                }
             }
         }
         return R.data(fileUrl);
@@ -4947,9 +4963,10 @@ public class TaskController extends BladeController {
 
             //由于之前需求每400 进行分割,现在需求需要根据类型+页码 分页
             if(this.type==0) {
-                JSONArray jsonArray = new JSONArray();
+                jdbcTemplate.execute("delete from s_interim_task where task_id='"+id+"'");
+                String addTaskInfoSql = "";
                 for (Map.Entry<String, String> entry : fileListMap.entrySet()) {
-                    JSONObject jsonObject = new JSONObject();
+                    long newPkId = SnowFlakeUtil.getId();
                     String pdfUrl = entry.getValue();
                     String result = commonFileClient.getPdfNum(pdfUrl);
                     Integer pageNum=0;
@@ -4957,14 +4974,11 @@ public class TaskController extends BladeController {
                         pageNum= Integer.parseInt(result);
                     }
                     if(pageNum<=100){
-                        jsonObject.put("title",entry.getKey());
-                        jsonObject.put("state",0); // 初始化
-                        jsonObject.put("url",pdfUrl); //路径
-                        jsonArray.add(jsonObject);
+                        addTaskInfoSql +="insert into s_interim_task(id,task_id,status,pdf_url,pdf_e_url,name) VALUES("+newPkId+","+this.id+",0,'"+pdfUrl+"','','"+entry.getKey()+"');";
                     }else{
                          Double pdfPageNo = Math.ceil(pageNum / 100.00);
                          for (int i=0;i<pdfPageNo;i++){
-                             jsonObject = new JSONObject();
+                             newPkId = SnowFlakeUtil.getId();
                              Long id = SnowFlakeUtil.getId();
                              String localPdf = FileUtils.getSysLocalFileUrl() + "/pdf/" + id + ".pdf";
                              int pageStart = 0 ;
@@ -4980,17 +4994,13 @@ public class TaskController extends BladeController {
                              if(pdfByPage==0){
                                  BladeFile bladeFile1 = newIOSSClient.uploadFile( SnowFlakeUtil.get() + ".pdf", localPdf);
                                  String pagePdfUrl=bladeFile1.getLink();
-                                 jsonObject.put("title",entry.getKey()+""+(i+1));
-                                 jsonObject.put("state",0); // 初始化
-                                 jsonObject.put("url",pagePdfUrl); //路径
-                                 System.out.println("--"+jsonObject);
-                                 jsonArray.add(jsonObject);
+                                 String titleName = entry.getKey()+""+(i+1);
+                                 addTaskInfoSql +="insert into s_interim_task(id,task_id,status,pdf_url,pdf_e_url,name) VALUES("+newPkId+","+this.id+",0,'"+pagePdfUrl+"','','"+titleName+"');";
                              }
                          }
                     }
                 }
-                jdbcTemplate.update("update s_interim_pay_certificate set page_pdf_url=? where id=?", JSON.toJSONString(jsonArray), this.id);
-                System.out.println("");
+                jdbcTemplate.batchUpdate(addTaskInfoSql);
             }
             return this.pdfUrl;
         }
@@ -5021,77 +5031,6 @@ public class TaskController extends BladeController {
                 return 1;
             }
         }
-            /*if(this.type==0){
-                Map<String,String>pageMap=new HashMap<>();
-                List<String> currentBatch = new ArrayList<>();
-                int currentPageCount = 0;
-
-                for (Map.Entry<String, String> entry : fileListMap.entrySet()) {
-                    String pdfUrl = entry.getValue();
-                    String result = commonFileClient.getPdfNum(pdfUrl);
-                    Integer pageNum=0;
-                    if(StringUtils.isNotEmpty(result)){
-                        pageNum= Integer.parseInt(result);
-                    }
-                    //单份超过400直接加入
-                    if(pageNum>400){
-                        int sort=pageMap.size()+1;
-                        pageMap.put("第"+sort+"份"+pageNum+"页",pdfUrl);
-                        continue;
-                    }
-                    //加起来超过400了就把已经存在了的合并了
-                    if(currentPageCount+pageNum>400){
-                        if (!currentBatch.isEmpty()) {
-                            Long id = SnowFlakeUtil.getId();
-                            String localPdf = FileUtils.getSysLocalFileUrl() + "/pdf/" + id + ".pdf";
-                            FileUtils.mergePdfPublicMethods(currentBatch,localPdf);
-                            BladeFile bladeFile1 = newIOSSClient.uploadFile( SnowFlakeUtil.get() + ".pdf", localPdf);
-                            int sort=pageMap.size()+1;
-                            pageMap.put("第"+sort+"份"+currentPageCount+"页",bladeFile1.getLink());
-                            currentBatch = new ArrayList<>();
-                            currentPageCount = 0;
-                        }
-                    }
-                    // 添加当前PDF到批次
-                    currentBatch.add(pdfUrl);
-                    currentPageCount += pageNum;
-                }
-                // 合并最后一批
-                if (!currentBatch.isEmpty()) {
-                    String pdfUrl=this.pdfUrl;
-                    //如果等于0说明总共没有超过400页,就直接用上面已经合并好了的
-                    if(pageMap.size()!=0){
-                        Long id = SnowFlakeUtil.getId();
-                        String localPdf = FileUtils.getSysLocalFileUrl() + "/pdf/" + id + ".pdf";
-                        FileUtils.mergePdfPublicMethods(currentBatch,localPdf);
-                        BladeFile bladeFile1 = newIOSSClient.uploadFile( SnowFlakeUtil.get() + ".pdf", localPdf);
-                        pdfUrl=bladeFile1.getLink();
-                    }
-                    int sort=pageMap.size()+1;
-                    pageMap.put("第"+sort+"份"+currentPageCount+"页",pdfUrl);
-                }
-                Map<String, String> sortedMap = pageMap.entrySet().stream()
-                    // 提取 "第i份" 中的 i 并转为整数排序
-                    .sorted(Comparator.comparingInt(
-                        entry -> {
-                            String key = entry.getKey();
-                            // 匹配 "第i份" 中的 i
-                            String numStr = key.split("份")[0].replaceAll("[^0-9]", "");
-                            return Integer.parseInt(numStr);
-                        }
-                    ))
-                    // 存入 LinkedHashMap 保持顺序
-                    .collect(Collectors.toMap(
-                        Map.Entry::getKey,
-                        Map.Entry::getValue,
-                        (oldVal, newVal) -> oldVal,
-                        LinkedHashMap::new
-                    ));
-                jdbcTemplate.update("update s_interim_pay_certificate set page_pdf_url=? where id=?", JSON.toJSONString(sortedMap), this.id);
-            }
-            return this.pdfUrl;
-        }*/
-
         public Report(Long id, Integer type) {
             this.id = id;
             this.type = type;

+ 0 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/utils/FileUtils.java

@@ -231,5 +231,4 @@ public class FileUtils {
         }
     }
 
-
 }