Kaynağa Gözat

质检资料排序,档案上传的页数,填报人过滤

chenr 3 ay önce
ebeveyn
işleme
38defc8ad8

+ 7 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -17,6 +17,7 @@ import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.business.feign.MetadataClassificationClient;
 import org.springblade.business.vo.ArchiveFileVO;
 import org.springblade.business.vo.MetadataClassificationVO;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.boot.ctrl.BladeController;
 
@@ -29,6 +30,7 @@ import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
+import org.springblade.resource.feign.CommonFileClient;
 import org.springblade.resource.feign.IOSSClient;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -61,7 +63,7 @@ public class ArchiveFileController extends BladeController {
     private final ContractClient contractClient;
     private final MetadataClassificationClient metadataClassificationClient;
     private final IArchivesAutoService autoService;
-
+    private final CommonFileClient commonFileClient;
     /**
      * 上传文件
      *
@@ -95,6 +97,10 @@ public class ArchiveFileController extends BladeController {
             if (saveList != null && saveList.size() > 0) {
                 int i = 1;
                 for (ArchiveFileVO saveVo : saveList) {
+                    if(StringUtils.isNotEmpty(saveVo.getPdfFileUrl())&&saveVo.getPageNum()==null){
+                        String num = commonFileClient.getPdfNum(saveVo.getPdfFileUrl());
+                        saveVo.setFilePage(Integer.valueOf(num));
+                    }
                     saveVo.setId(SnowFlakeUtil.getId());
                     saveVo.setSort(l + i);
                     saveVo.setStatus(new Integer("0").equals(saveVo.getIsApproval()) ? 2 : 0);

+ 5 - 2
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -2081,11 +2081,14 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             List<Dept> depts = jdbcTemplate.query(sqlforSkipDept, new BeanPropertyRowMapper<>(Dept.class));
             String roleId = user.getRoleId();
             String deptId = user.getDeptId();
+            if(roleId==null||deptId==null){
+                return true;
+            }
             //既是超级管理员同时是泓创下面的部门才允许跳过填报人赋值
-            if(roleId.contains(SUPER_ADMIN_ROLE_ID)){
+            if(roleId!=null&&roleId.contains(SUPER_ADMIN_ROLE_ID)){
                 Boolean flag = false;
                 for (Dept dept : depts) {
-                    if(deptId.contains(dept.getId().toString())){
+                    if(deptId!=null&&deptId.contains(dept.getId().toString())){
                         flag = true;
                         return flag;
                     }

+ 4 - 3
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVController.java

@@ -72,12 +72,13 @@ public class EVController {
                 "GROUP_CONCAT(create_user) as userId," +
                 "GROUP_CONCAT(nick_name) as nickName," +
                 "sign_type as sigType" +
-                " from u_task_batch where is_deleted=0 GROUP BY JSON_EXTRACT(json_data, '$.formDataId'),sign_type ORDER BY sign_type ASC LIMIT 50";
-
+                " from u_task_batch where is_deleted=0 GROUP BY JSON_EXTRACT(json_data, '$.formDataId'),sign_type ORDER BY sign_type ASC ";
+                //and JSON_UNQUOTE(JSON_EXTRACT(json_data,'$.taskId')) in(SELECT id from u_task where project_id =1792760669353865218 and is_deleted =0 and approval_type=1 )
         List<TaskSignInfoVO> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TaskSignInfoVO.class));
+
         if (query != null && query.size() >= 1) {
             for (TaskSignInfoVO dataInfo : query) {
-                if (executor.getQueue().size() <= 30) {
+                if (executor.getQueue().size() <= 10) {
                     Boolean aBoolean = RedisTemplate.hasKey("sign-" + dataInfo.getFormDataId());
                     if (!aBoolean) {
                         if (dataInfo.getSigType() == 2) {

+ 80 - 19
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1,5 +1,7 @@
 package org.springblade.manager.controller;
 
+import cn.hutool.core.io.resource.Resource;
+import cn.hutool.http.HttpUtil;
 import cn.hutool.log.StaticLog;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -69,6 +71,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -85,6 +88,7 @@ import java.net.URLConnection;
 import java.net.URLEncoder;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
 import java.text.SimpleDateFormat;
 import java.util.List;
@@ -154,6 +158,8 @@ public class ExcelTabController extends BladeController {
 
     private final IContractInfoService contractInfoService;
 
+    private final  SignFtpUtil signFtpUtil;
+
 
     @Autowired
     StringRedisTemplate RedisTemplate;
@@ -335,6 +341,10 @@ public class ExcelTabController extends BladeController {
         return R.success("上传成功");
     }
 
+    public void checkHtml(){
+
+    }
+
 
     public static InputStream getOSSInputStream(String urlStr) throws Exception {
         //获取OSS文件流
@@ -1609,28 +1619,31 @@ public class ExcelTabController extends BladeController {
     public R copeBussTab(Long pkeyId) {
         WbsTreeContract wbsInfo = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
-
+        String[] split = wbsInfo.getNodeName().split("__");
+        //查出当前节点里面本表的所有复制表
         List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda()
-                .likeRight(WbsTreeContract::getNodeName, wbsInfo.getNodeName())
+                .likeRight(WbsTreeContract::getNodeName,split[0])
                 .eq(WbsTreeContract::getContractId, wbsInfo.getContractId())
                 .eq(WbsTreeContract::getParentId, wbsInfo.getParentId())
                 .eq(WbsTreeContract::getTableOwner, wbsInfo.getTableOwner()));
-        List<WbsTreeContract> wbsTreeContractList2 = wbsTreeContractList.stream().sorted(Comparator.comparing(WbsTreeContract::getCreateTime).reversed()).collect(Collectors.toList());
-        Set<String> strings = wbsTreeContractList2.stream().map(o -> o.getNodeName()).collect(Collectors.toSet());
-        List<WbsTreeContract> wbsTreeContractList3 = wbsTreeContractList.stream().sorted(Comparator.comparing(WbsTreeContract::getCreateTime)).collect(Collectors.toList());
-        Boolean flag = false;
-        if (strings.size() != wbsTreeContractList3.size()) {
-            flag = true;
-            for (int i = 0; i < wbsTreeContractList3.size(); i++) {
-                if (wbsTreeContractList3.get(i).getIsCopeTab() != null && wbsTreeContractList3.get(i).getIsCopeTab().equals(Integer.valueOf(2))) {
-                    String nodeName = wbsTreeContractList3.get(0).getNodeName();
+        //拿到所有的名字
+        Set<String> strings = wbsTreeContractList.stream().map(o -> o.getNodeName()).collect(Collectors.toSet());
+        //根据实际排序
+        List<WbsTreeContract> wbsTreeContractList2 = wbsTreeContractList.stream().sorted(Comparator.comparing(WbsTreeContract::getCreateTime)).collect(Collectors.toList());
+        //如果数量对不上说明有错的情况就进来,进行修改,现在wbsTreeContractList2就是正常的
+        if (strings.size() != wbsTreeContractList2.size()) {
+            for (int i = 0; i < wbsTreeContractList2.size(); i++) {
+                //是复制表
+                if (wbsTreeContractList2.get(i).getIsCopeTab() != null && wbsTreeContractList2.get(i).getIsCopeTab().equals(Integer.valueOf(2))) {
+                    String nodeName = wbsTreeContractList2.get(0).getNodeName().split("__")[0];
                     nodeName = nodeName + "__" + (i);
-                    wbsTreeContractList3.get(i).setNodeName(nodeName);
-                    String update = "UPDATE m_wbs_tree_contract Set node_name= " + "'" + wbsTreeContractList3.get(i).getNodeName() + "'" + " WHERE p_key_id=" + wbsTreeContractList3.get(i).getPKeyId();
+                    wbsTreeContractList2.get(i).setNodeName(nodeName);
+                    String update = "UPDATE m_wbs_tree_contract Set node_name= " + "'" + wbsTreeContractList2.get(i).getNodeName() + "'" + " WHERE p_key_id=" + wbsTreeContractList2.get(i).getPKeyId();
                     jdbcTemplate.update(update);
                 }
             }
         }
+
         //新增
         long tabGroupId = SnowFlakeUtil.getId();
         long newPkId = SnowFlakeUtil.getId();
@@ -1640,11 +1653,7 @@ public class ExcelTabController extends BladeController {
         wbsTreeContract.setCreateTime(new Date());
         wbsTreeContract.setTabGroupId(tabGroupId);
         String nodeName;
-        if (flag) {
-            nodeName = wbsTreeContractList3.get(wbsTreeContractList3.size() - 1).getNodeName();
-        } else {
-            nodeName = wbsTreeContractList2.get(0).getNodeName();
-        }
+        nodeName = wbsTreeContractList2.get(wbsTreeContractList2.size() - 1).getNodeName();
         if (nodeName.indexOf("__") >= 0) {
             String[] oldName = nodeName.split("__");
             nodeName = oldName[0] + "__" + (Integer.parseInt(oldName[1]) + 1);
@@ -4417,7 +4426,7 @@ public class ExcelTabController extends BladeController {
         }
     }
 
-    @Scheduled(cron = "0 01 15 * * ?")
+    //@Scheduled(cron = "0 01 15 * * ?")
     //检查excel路径有错的
     public void cheackExcel() throws IOException {
         StringBuilder result=new StringBuilder("");
@@ -4444,6 +4453,58 @@ public class ExcelTabController extends BladeController {
             }
         }
     }
+
+    /**
+     * 检查清表html是否存在,不存在就下载重新上传
+     * 如果excel都不存在,就输出出来
+     * @throws Exception
+     */
+    //@Scheduled(cron = "10 26 10 * * ?")
+    public void checkHtmlIsExist() throws Exception {
+        StringBuilder result=new StringBuilder("");
+        String sql = "Select * from m_excel_tab where parent_id=0 and is_deleted=0";
+        List<ExcelTab> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ExcelTab.class));
+        String excelPath="E:\\excel\\";
+        for (ExcelTab excelTab : query) {
+            String sql1 = "Select * from m_excel_tab where parent_id=" + excelTab.getId() + " and is_deleted=0";
+            List<ExcelTab> query1 = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(ExcelTab.class));
+            for (ExcelTab tab : query1) {
+                String sql2 = "Select * from m_excel_tab where parent_id=" + tab.getId() + " and is_deleted=0";
+                List<ExcelTab> query2 = jdbcTemplate.query(sql2, new BeanPropertyRowMapper<>(ExcelTab.class));
+                for (ExcelTab excelTab1 : query2) {
+                    if(!signFtpUtil.isExist(excelTab1.getHtmlUrl())){
+                        if(excelTab1.getFileUrl() != null&&excelTab1.getFileUrl().endsWith(".xlsx") || excelTab1.getFileUrl().endsWith(".xls")){
+                            long resourceLength = CommonUtil.getResourceLength(excelTab1.getFileUrl());
+                            if(resourceLength>=500){
+                                //先下载这个文件,再上传
+                                String fileUrl = excelTab1.getFileUrl();
+                                String localPath=excelPath+excelTab1.getId()+".xlsx";
+                                InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(fileUrl);
+                                FileUtils.saveFile(inputStreamByUrl,localPath);
+                                File file = new File(localPath);
+                                if(file.exists()){
+                                    Map<String, Object> paramMap = new HashMap<>();
+                                    paramMap.put("nodeId", excelTab1.getId());
+                                    paramMap.put("type",2);
+                                    HashMap<String,String> headers=new HashMap<>();
+                                    headers.put("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary4tcP4daRPIFDBRvm");
+                                    headers.put("Authorization","Basic c2FiZXI6c2FiZXJfc2VjcmV0");
+                                    headers.put("Blade-auth","bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJ1c2VyX25hbWUiOiJjciIsInJlYWxfbmFtZSI6IumZiOeEtiIsImF2YXRhciI6IiIsImF1dGhvcml0aWVzIjpbImFkbWluaXN0cmF0b3IiXSwiY2xpZW50X2lkIjoic2FiZXIiLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwibGljZW5zZSI6InBvd2VyZWQgYnkgYmxhZGV4IiwicG9zdF9pZCI6IiIsInVzZXJfaWQiOiIxOTEyNzAxMzgzOTgyNDI0MDY1Iiwicm9sZV9pZCI6IjExMjM1OTg4MTY3Mzg2NzUyMDEiLCJwaG9uZSI6IjE1MjE1MDUyNzg2Iiwic2NvcGUiOlsiYWxsIl0sIm5pY2tfbmFtZSI6IumZiOeEtiIsIm9hdXRoX2lkIjoiIiwiZGV0YWlsIjp7InR5cGUiOiJ3ZWIifSwiZXhwIjoxNzQ2NDk5MTYyLCJkZXB0X2lkIjoiMTUzNjk4MzA1NjM2MjM4MTMxMyIsImp0aSI6IjIzNGRmY2ZmLWUwOWMtNDVkMy05ODI1LTdhNGI2MjdhYWFlZSIsImFjY291bnQiOiJjciJ9.yfweibj1y8VlWzpGlbhyUr2FMGzG_N1y5fK3xH9kbcE");
+                                    headers.put("Tenant-Id","000000");
+                                    String url="http://testmanger.hcxxy.com/api/blade-manager/exceltab/put-file-attach";
+                                    String body = HttpUtil.createPost(url).addHeaders(headers).form(paramMap).form("file", file).execute().body();
+                                }
+                            }else {
+                                result.append(excelTab.getName() + "--" + tab.getName() + "--" + excelTab1.getName()+"\n");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        System.out.println("完成");
+        System.out.println(result);
+    }
     @GetMapping("/checkParamElement")
     @ApiOperationSupport(order = 30)
     @ApiOperation(value = "检查参数元素", notes = "检查参数元素")

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -1072,6 +1072,10 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
             projectContractArea.setCity(position.get("city"));
             projectContractArea.setCounty(position.get("district"));
             projectContractArea.setCity_code(position.get("adcode"));
+//            projectContractArea.setProvince("重庆");
+//            projectContractArea.setCity("重庆市");
+//            projectContractArea.setCounty("永川区");
+//            projectContractArea.setCity_code("500118");
             projectContractArea.setProjectId(contractInfo.getPId());
             projectContractArea.setIsDeleted(0);
             projectContractArea.setContractId(String.valueOf(contractInfo.getId()));

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1448,12 +1448,15 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 Elements bhtitle5 = doc.select("el-input[placeholder~=^单元工程编码]");
                 Elements bhtitle6 = doc.select("el-input[placeholder~=^编 号]");
                 Elements bhtitle7 = doc.select("el-input[placeholder~=^分项工程编号:]");
+                Elements bhtitle8 = doc.select("el-input[placeholder~=^分项工程编号:]");
+
                 bhtitle.addAll(bhtitle2);
                 bhtitle.addAll(bhtitle3);
                 bhtitle.addAll(bhtitle4);
                 bhtitle.addAll(bhtitle5);
                 bhtitle.addAll(bhtitle6);
                 bhtitle.addAll(bhtitle7);
+                bhtitle.addAll(bhtitle8);
             }
 
 

+ 30 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -652,10 +652,17 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             // 如果 sort 相同,比较 nodeName
             String name1 = o1.getNodeName();
             String name2 = o2.getNodeName();
-
+            boolean flag=false;
             boolean hasUnderscore1 = name1.contains("__");
             boolean hasUnderscore2 = name2.contains("__");
-
+            if(name1.contains("PL")&&name2.contains("PL")){
+                flag=true;
+            }
+            if(flag){
+                int number1 = getPLNumberAfterUnderscore(name1);
+                int number2 = getPLNumberAfterUnderscore(name2);
+                return Integer.compare(number1, number2);
+            }
             if (!hasUnderscore1 && !hasUnderscore2) {
                 // 两个都不包含 __,按字母顺序排序
                 return name1.compareTo(name2);
@@ -665,7 +672,8 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             } else if (!hasUnderscore2) {
                 // 第二个不包含 __,排在前面
                 return 1;
-            } else {
+            }
+            else {
                 // 两个都包含 __,按 __ 后面的数字排序
                 int number1 = getNumberAfterUnderscore(name1);
                 int number2 = getNumberAfterUnderscore(name2);
@@ -680,6 +688,25 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             }
             return Integer.MAX_VALUE;
         }
+
+        private int getPLNumberAfterUnderscore(String name) {
+            if (!name.isEmpty()) {
+                int lastIndex = name.lastIndexOf("_"); // 找到最后一个 '_' 的位置
+                //如果有_
+                if (lastIndex != -1 && lastIndex < name.length() - 1) {
+                    String result = name.substring(lastIndex + 1); // 截取 '_' 后面的内容
+                    if (result.matches("\\d")) { // 判断是否为数字字符
+                        return Integer.parseInt(result);
+                    } else {
+                        return Integer.MAX_VALUE;
+                    }
+                } else {
+                    return Integer.MAX_VALUE;
+                }
+            } else {
+                return Integer.MAX_VALUE;
+            }
+        }
     }
 
 

+ 8 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -1638,6 +1638,9 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
             Map<String, List<Task>> finalTaskMaps = taskMaps;
             Map<String, List<TaskParallel>> finalTaskParallelMaps = taskParallelMaps;
             voResult.forEach(vor -> {
+                if(vor.getId()==1838134135841955842L){
+                    System.out.println("111");
+                }
                 if (ObjectUtil.isNotEmpty(vor.getCreateTime())) {
                     vor.setStartTime(DateUtil.format(vor.getCreateTime(), "yyyy-MM-dd"));
                 }
@@ -1801,11 +1804,14 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
             List<Dept> depts = jdbcTemplate.query(sqlforSkipDept, new BeanPropertyRowMapper<>(Dept.class));
             String roleId = user.getRoleId();
             String deptId = user.getDeptId();
+            if(roleId==null||deptId==null){
+                return true;
+            }
             //既是超级管理员同时是泓创下面的部门才允许跳过填报人赋值
-            if(roleId.contains("1123598816738675201")){
+            if(roleId!=null&&roleId.contains("1123598816738675201")){
                 Boolean flag = false;
                 for (Dept dept : depts) {
-                    if(deptId.contains(dept.getId().toString())){
+                    if(deptId!=null&&deptId.contains(dept.getId().toString())){
                         flag = true;
                         return flag;
                     }