1
0
Преглед на файлове

生命周期业务时间调整

chenendian преди 4 месеца
родител
ревизия
26e4002a4a

+ 4 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ProjectWorkflowMapper.java

@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface ProjectWorkflowMapper {
@@ -72,5 +73,8 @@ public interface ProjectWorkflowMapper {
 
     void deleteById(String id);
 
+    Map<String,Object> getCurrentNode(@Param("id") String id, @Param("projectId") String projectId, @Param("tableName") String tableName);
+
+
 
 }

+ 143 - 116
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ProjectImpl.java

@@ -62,8 +62,6 @@ public class ProjectImpl implements ProjectService {
     @Autowired
     private NodeLandService nodeLandService;
 
-
-
     @Override
     public String add(ProjectVo projectVo) {
         Project project = new Project();
@@ -99,15 +97,15 @@ public class ProjectImpl implements ProjectService {
     public Map<String, Object> getListAndGeom(ProjectFilterVo projectFilterVo) {
         List<Project> projects = projectMapper.getList(projectFilterVo);
         Integer count = projectMapper.getCount(projectFilterVo);
-        //todo这里需要调整关于增加图层信息
-        //todo增加当前项目所在的流程阶段
-        if(CollectionUtils.isNotEmpty(projects)) {
+        // todo这里需要调整关于增加图层信息
+        // todo增加当前项目所在的流程阶段
+        if (CollectionUtils.isNotEmpty(projects)) {
             for (Project project : projects) {
                 ProjectWorkflow currentProjectWorkflow = this.getCurrentNode(project.getId());
-                if(Objects.isNull(currentProjectWorkflow)) {
+                if (Objects.isNull(currentProjectWorkflow)) {
                     continue;
                 }
-                //获取当前节点信息
+                // 获取当前节点信息
                 project.setCurrentNode(currentProjectWorkflow.getWorkflowId());
                 String nodeId = currentProjectWorkflow.getNodeId();
                 String nodeTableName = currentProjectWorkflow.getNodeTableName();
@@ -116,14 +114,14 @@ public class ProjectImpl implements ProjectService {
                         AloneWorkFlowEnum.NODE_4.getTableName(),
                         AloneWorkFlowEnum.NODE_5.getTableName(),
                         AloneWorkFlowEnum.NODE_6.getTableName(),
-                        AloneWorkFlowEnum.NODE_7.getTableName()};
+                        AloneWorkFlowEnum.NODE_7.getTableName() };
 
-                //这些节点都是继承t_gyjsydscdj用地报批的图形
-                if(ArrayUtils.contains(refArr,nodeTableName)){
+                // 这些节点都是继承t_gyjsydscdj用地报批的图形
+                if (ArrayUtils.contains(refArr, nodeTableName)) {
                     nodeTableName = "t_gyjsydscdj";
                 }
                 geomInfo = nodeLandService.getGeomByProjectAndNodeTable(project.getId(), nodeTableName);
-                if(Objects.nonNull(geomInfo)){
+                if (Objects.nonNull(geomInfo)) {
                     project.setEnvelope(String.valueOf(geomInfo.get("envelope")));
                     project.setShppath(String.valueOf(geomInfo.get("shppath")));
                     project.setCentroid(String.valueOf(geomInfo.get("centroid")));
@@ -138,10 +136,6 @@ public class ProjectImpl implements ProjectService {
         return map;
     }
 
-
-
-
-
     @Override
     public void update(ProjectUpdateVo projectUpdateVo) {
         projectMapper.update(projectUpdateVo);
@@ -178,25 +172,26 @@ public class ProjectImpl implements ProjectService {
         // 获取项目进度
         ProjectFilterVo projectFilterVo = new ProjectFilterVo();
         projectFilterVo.setIsOnchain(true);
-        List<Project> projectList =   projectMapper.getList(projectFilterVo);
-        Map <String, Integer> progressMap = new LinkedHashMap<>();
-        if(Objects.nonNull(projectList) && !projectList.isEmpty()) {
-            for (Project project: projectList){
+        List<Project> projectList = projectMapper.getList(projectFilterVo);
+        Map<String, Integer> progressMap = new LinkedHashMap<>();
+        if (Objects.nonNull(projectList) && !projectList.isEmpty()) {
+            for (Project project : projectList) {
                 String projectId = project.getId();
-                List<ProjectWorkflow> projectWorkflowList =  projectWorkflowMapper.selectByProjectId(projectId);
-                //倒叙排序
-                projectWorkflowList = projectWorkflowList.stream().sorted(Comparator.comparing(ProjectWorkflow::getWorkflowId).reversed())
+                List<ProjectWorkflow> projectWorkflowList = projectWorkflowMapper.selectByProjectId(projectId);
+                // 倒叙排序
+                projectWorkflowList = projectWorkflowList.stream()
+                        .sorted(Comparator.comparing(ProjectWorkflow::getWorkflowId).reversed())
                         .collect(Collectors.toList());
-                for(ProjectWorkflow projectWorkflow : projectWorkflowList){
+                for (ProjectWorkflow projectWorkflow : projectWorkflowList) {
                     String nodeTableName = projectWorkflow.getNodeTableName();
                     String nodeId = projectWorkflow.getNodeId();
-                    Boolean hasOnchain = projectWorkflowMapper.isOnchain(nodeId, projectId,nodeTableName);
-                    if(hasOnchain.equals(true)){
-                        if(progressMap.containsKey(projectWorkflow.getWorkflowName())){
+                    Boolean hasOnchain = projectWorkflowMapper.isOnchain(nodeId, projectId, nodeTableName);
+                    if (hasOnchain.equals(true)) {
+                        if (progressMap.containsKey(projectWorkflow.getWorkflowName())) {
                             Integer count = progressMap.get(projectWorkflow.getWorkflowName());
-                            progressMap.put(projectWorkflow.getWorkflowName(),++count);
-                        }else {
-                            progressMap.put(projectWorkflow.getWorkflowName(),1);
+                            progressMap.put(projectWorkflow.getWorkflowName(), ++count);
+                        } else {
+                            progressMap.put(projectWorkflow.getWorkflowName(), 1);
                         }
                         break;
                     }
@@ -215,9 +210,6 @@ public class ProjectImpl implements ProjectService {
         return projectOverviewRes;
     }
 
-
-
-
     @Override
     public List<ProjectCycleRes> getCycle(String projectId) {
         Integer projectType = projectMapper.getProjectTypeById(projectId);
@@ -225,11 +217,48 @@ public class ProjectImpl implements ProjectService {
         List<ProjectCycleRes> workflows = workflowMapper.selectByProjectTypeOrderByIndex(projectType);
         // 获取项目对应的工作流
         List<ProjectWorkflowRes> projectWorkflowsAll = projectWorkflowMapper.selectCycleByProjectId(projectId);
-        // 过滤掉没有上链的x
+        // 过滤掉没有上链的xx
         List<ProjectWorkflowRes> projectWorkflows = new ArrayList<>();
+
         for (ProjectWorkflowRes projectWorkflowRes : projectWorkflowsAll) {
-            Boolean hasOnchain = projectWorkflowMapper.isOnchain(projectWorkflowRes.getNodeId(), projectId, projectWorkflowRes.getNodeTableName());
-            if (hasOnchain) projectWorkflows.add(projectWorkflowRes);
+
+            Boolean hasOnchain = projectWorkflowMapper.isOnchain(projectWorkflowRes.getNodeId(), projectId,
+                    projectWorkflowRes.getNodeTableName());
+            if (hasOnchain) {
+                Date businessDate = projectWorkflowRes.getCreatedAt();
+                // 这里获取当前节点的值 todo
+                Map<String, Object> currentNode = projectWorkflowMapper.getCurrentNode(projectWorkflowRes.getNodeId(),
+                        projectId, projectWorkflowRes.getNodeTableName());
+                if (Objects.nonNull(currentNode)) {
+                    Object dateObj = null;
+                    if (currentNode.containsKey("pf_date")) {
+                        dateObj = currentNode.get("pf_date");
+                    } else if (currentNode.containsKey("cj_date")) {
+                        dateObj = currentNode.get("cj_date");
+                    } else if (currentNode.containsKey("hbcrht_date")) {
+                        dateObj = currentNode.get("hbcrht_date");
+                    } else if (currentNode.containsKey("dj_date")) {
+                        dateObj = currentNode.get("dj_date");
+                    } else if (currentNode.containsKey("fz_date")) {
+                        dateObj = currentNode.get("fz_date");
+                    }
+
+                    if (dateObj != null) {
+                        if (dateObj instanceof Date) {
+                            businessDate = (Date) dateObj;
+                        } else if (dateObj instanceof String) {
+                            try {
+                                businessDate = new java.text.SimpleDateFormat("yyyy-MM-dd").parse((String) dateObj);
+                            } catch (java.text.ParseException e) {
+                                log.error("parse date error: {}", dateObj, e);
+                            }
+                        }
+                    }
+                    projectWorkflowRes.setCreatedAt(businessDate);
+                }
+                projectWorkflows.add(projectWorkflowRes);
+            }
+
         }
 
         Map<String, List<ProjectWorkflowRes>> workflowMap = new HashMap<>();
@@ -261,64 +290,64 @@ public class ProjectImpl implements ProjectService {
      */
     @Override
     public void countOnChinaNum(String projectId) {
-        List<ProjectWorkflow> projectWorkflowList =  projectWorkflowMapper.selectByProjectId(projectId);
+        List<ProjectWorkflow> projectWorkflowList = projectWorkflowMapper.selectByProjectId(projectId);
         int onChinaNum = 0;
         for (ProjectWorkflow projectWorkflow : projectWorkflowList) {
             String nodeTableName = projectWorkflow.getNodeTableName();
             String nodeId = projectWorkflow.getNodeId();
-            //跳过批次报批节点
-            if("t_ydbp_data".equals(nodeTableName)){
+            // 跳过批次报批节点
+            if ("t_ydbp_data".equals(nodeTableName)) {
                 continue;
             }
-            Boolean hasOnchain = projectWorkflowMapper.isOnchain(nodeId, projectId,nodeTableName);
-            if(hasOnchain.equals(true)){
+            Boolean hasOnchain = projectWorkflowMapper.isOnchain(nodeId, projectId, nodeTableName);
+            if (hasOnchain.equals(true)) {
                 onChinaNum++;
             }
         }
         ProjectUpdateVo updateProject = new ProjectUpdateVo();
         updateProject.setId(projectId);
         updateProject.setOnChainNum(onChinaNum);
-        //updateProject.setOnChainNum(onChinaNum);
+        // updateProject.setOnChainNum(onChinaNum);
         projectMapper.update(updateProject);
     }
 
     @Override
     public Map<String, Object> getListSearch(ProjectFilterVo projectFilterVo) {
-        if(Objects.isNull(projectFilterVo.getFilterType())){
+        if (Objects.isNull(projectFilterVo.getFilterType())) {
             projectFilterVo.setFilterType(0);
         }
-        if(StringUtils.isNotBlank(projectFilterVo.getKeyWord())){
+        if (StringUtils.isNotBlank(projectFilterVo.getKeyWord())) {
             List<String> keyWords = List.of(projectFilterVo.getKeyWord().trim().split("\\s+"));
             projectFilterVo.setKeyWords(keyWords);
         }
-        //todo 这里后期可以进行优化,把查询出的项目id写入redis中,分页时候可以取缓存
+        // todo 这里后期可以进行优化,把查询出的项目id写入redis中,分页时候可以取缓存
         List<SearchProjectAndAttachment> projects = projectMapper.getListSearch(projectFilterVo);
         Integer count = projectMapper.getSearchCount(projectFilterVo);
-        //根据项目id查询所有流程id
+        // 根据项目id查询所有流程id
         List<String> projectIdList = projects.stream().map(BaseId::getId).collect(Collectors.toList());
         List<ProjectWorkflow> projectWorkflowList = null;
-        if(CollectionUtils.isNotEmpty(projectIdList)) {
+        if (CollectionUtils.isNotEmpty(projectIdList)) {
             projectWorkflowList = projectWorkflowMapper.selectByProjectIdList(projectIdList);
         }
         List<String> nodeIdList = null;
-        if(CollectionUtils.isNotEmpty(projectWorkflowList)){
+        if (CollectionUtils.isNotEmpty(projectWorkflowList)) {
             nodeIdList = projectWorkflowList.stream().map(ProjectWorkflow::getNodeId).collect(Collectors.toList());
         }
-        Integer graphicLayerCount = 0 ;
-        Integer attachmentCount = 0 ;
-        if(CollectionUtils.isNotEmpty(nodeIdList)){
+        Integer graphicLayerCount = 0;
+        Integer attachmentCount = 0;
+        if (CollectionUtils.isNotEmpty(nodeIdList)) {
             graphicLayerCount = nodeLandMapper.selectCountGeomByNodeId(nodeIdList);
-            //这里获取每一个节点的附件数据:
+            // 这里获取每一个节点的附件数据:
             List<String> allAttachmentFileList = new CopyOnWriteArrayList<>();
-            List<NodeAttachment>  nodeAttachmentList =  nodeAttachmentService.getByNodeIdList(nodeIdList);
-            nodeAttachmentList.parallelStream().forEach(nodeAttachment->{
+            List<NodeAttachment> nodeAttachmentList = nodeAttachmentService.getByNodeIdList(nodeIdList);
+            nodeAttachmentList.parallelStream().forEach(nodeAttachment -> {
                 String attachmentJsonString = JSONObject.toJSONString(nodeAttachment.getAttachment());
                 JSONObject attachmentJsonObj = JSON.parseObject(attachmentJsonString);
                 try {
-                    List<String>  tmpList = getAllAttachmentList(attachmentJsonObj);
+                    List<String> tmpList = getAllAttachmentList(attachmentJsonObj);
                     allAttachmentFileList.addAll(tmpList);
                 } catch (IOException e) {
-                    log.error("解析节点附件json失败",e);
+                    log.error("解析节点附件json失败", e);
                     e.printStackTrace();
                 }
             });
@@ -333,45 +362,46 @@ public class ProjectImpl implements ProjectService {
     }
 
     @Override
-    public ProjectWorkflow getProjectWorkflowByNodeId(String projectId,String nodeId) {
+    public ProjectWorkflow getProjectWorkflowByNodeId(String projectId, String nodeId) {
         ProjectWorkflow projectWorkflow = null;
-        List<ProjectWorkflow> projectWorkflowList = projectWorkflowMapper.selectByNodeId(nodeId,projectId);
-        if(CollectionUtils.isNotEmpty(projectWorkflowList) && Objects.nonNull(projectWorkflowList.get(0))) {
+        List<ProjectWorkflow> projectWorkflowList = projectWorkflowMapper.selectByNodeId(nodeId, projectId);
+        if (CollectionUtils.isNotEmpty(projectWorkflowList) && Objects.nonNull(projectWorkflowList.get(0))) {
             projectWorkflow = projectWorkflowList.get(0);
         }
-        return  projectWorkflow;
+        return projectWorkflow;
     }
 
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteOneNode(NodeVo nodeVo) {
         // 1.删除 flow 表,2.删除当前节点数据;
-        List<ProjectWorkflow> projectWorkflows = projectWorkflowMapper.selectByProjectIdAndNodeTableName(nodeVo.getProjectId(), nodeVo.getTableName());
+        List<ProjectWorkflow> projectWorkflows = projectWorkflowMapper
+                .selectByProjectIdAndNodeTableName(nodeVo.getProjectId(), nodeVo.getTableName());
         if (projectWorkflows != null && !projectWorkflows.isEmpty()) {
             String id = projectWorkflows.get(0).getId();
             projectWorkflowMapper.deleteById(id);
         }
-        projectMapper.deleteNodeByTable(nodeVo.getNodeId(),  nodeVo.getTableName());
+        projectMapper.deleteNodeByTable(nodeVo.getNodeId(), nodeVo.getTableName());
     }
 
-
-        /**
-         * 递归解析json文件数据
-         * @param jsonObj
-         * @return
-         * @throws IOException
-         */
+    /**
+     * 递归解析json文件数据
+     * 
+     * @param jsonObj
+     * @return
+     * @throws IOException
+     */
     public static List<String> getAllAttachmentList(JSONObject jsonObj) throws IOException {
         List<String> list = new ArrayList<>();
-        if(jsonObj!=null && jsonObj.getString("type").equals("directory") && jsonObj.getJSONArray("children")!=null){
+        if (jsonObj != null && jsonObj.getString("type").equals("directory")
+                && jsonObj.getJSONArray("children") != null) {
             JSONArray arr = jsonObj.getJSONArray("children");
-            for(Object key : arr){
+            for (Object key : arr) {
                 JSONObject tmp = (JSONObject) key;
-                if(tmp.getString("type").equals("directory")){
+                if (tmp.getString("type").equals("directory")) {
                     List<String> tmpList = getAllAttachmentList(tmp);
                     list.addAll(tmpList);
-                }else if(tmp.getString("type").equals("file")){
+                } else if (tmp.getString("type").equals("file")) {
                     list.add(tmp.getString("path"));
                 }
             }
@@ -379,62 +409,64 @@ public class ProjectImpl implements ProjectService {
         return list;
     }
 
-
     /**
      * 根据项目id,获取该项目所在最新流程节点
+     * 
      * @param projectId
      * @return
      * @throws Exception
      */
-    public  ProjectWorkflow getCurrentNode(String projectId) {
-            List<ProjectWorkflow> projectWorkflowList =  projectWorkflowMapper.selectByProjectId(projectId);
-            ProjectWorkflow currentProjectWorkflow = null;
-            //倒叙排序
-            projectWorkflowList = projectWorkflowList.stream().sorted(Comparator.comparing(ProjectWorkflow::getWorkflowId).reversed()).collect(Collectors.toList());
-            for(ProjectWorkflow projectWorkflow : projectWorkflowList){
-                String nodeTableName = projectWorkflow.getNodeTableName();
-                String nodeId = projectWorkflow.getNodeId();
-                Boolean hasOnchain = projectWorkflowMapper.isOnchain(nodeId, projectId,nodeTableName);
-                //最到当前最新上链后的流程节点
-                if(hasOnchain.equals(true)){
-                    currentProjectWorkflow = projectWorkflow;
-                    break;
-                }
+    public ProjectWorkflow getCurrentNode(String projectId) {
+        List<ProjectWorkflow> projectWorkflowList = projectWorkflowMapper.selectByProjectId(projectId);
+        ProjectWorkflow currentProjectWorkflow = null;
+        // 倒叙排序
+        projectWorkflowList = projectWorkflowList.stream()
+                .sorted(Comparator.comparing(ProjectWorkflow::getWorkflowId).reversed()).collect(Collectors.toList());
+        for (ProjectWorkflow projectWorkflow : projectWorkflowList) {
+            String nodeTableName = projectWorkflow.getNodeTableName();
+            String nodeId = projectWorkflow.getNodeId();
+            Boolean hasOnchain = projectWorkflowMapper.isOnchain(nodeId, projectId, nodeTableName);
+            // 最到当前最新上链后的流程节点
+            if (hasOnchain.equals(true)) {
+                currentProjectWorkflow = projectWorkflow;
+                break;
             }
-            return currentProjectWorkflow;
         }
+        return currentProjectWorkflow;
+    }
 
     @Override
     public JSONArray getResourceData() throws IOException {
         java.net.URL fileURL = this.getClass().getResource("/one_code_index_v1.json");
-        //String fileName = "classpath:reportConfig.txt";
+        // String fileName = "classpath:reportConfig.txt";
         String fileName = fileURL.getPath();
         String configStr = FileUtils.readFileToString(new File(fileName), StandardCharsets.UTF_8);
-        JSONArray  aa =  JSON.parseArray(configStr);
+        JSONArray aa = JSON.parseArray(configStr);
         configStr = aa.toJSONString();
-        log.info("------------"+configStr);
+        log.info("------------" + configStr);
         return aa;
     }
 
-
     @Override
     public void testData() {
-//        String nodeId = null;
-//        List<ProjectWorkflow> projectWorkflows = projectWorkflowMapper.selectByProjectIdAndNodeTableName("11111", "22222");
-//        Optional<ProjectWorkflow> res = projectWorkflows.stream().findFirst();
-//        if(res.isPresent()){
-//            nodeId = res.get().getNodeId();
-//        }
-//        log.info("------------"+nodeId);
-//
-//        NodeAttachment ccc = nodeAttachmentService.getByNodeId("4eafe114-a812-4c2b-bcb3-ad470ff96fa9");
-//        String sss = JsonUtil.toJson(ccc);
-//        System.out.println(sss);
-
-//            String str = "国有建设用地使用权及房屋所有权首次登记";
-//            String path = ServiceFileUtil.createDirectory(str);
-//            Path file = Paths.get(path);
-//            Map<String, Object> res = FileExtractUtil.getDirectoryStructure(file);
+        // String nodeId = null;
+        // List<ProjectWorkflow> projectWorkflows =
+        // projectWorkflowMapper.selectByProjectIdAndNodeTableName("11111", "22222");
+        // Optional<ProjectWorkflow> res = projectWorkflows.stream().findFirst();
+        // if(res.isPresent()){
+        // nodeId = res.get().getNodeId();
+        // }
+        // log.info("------------"+nodeId);
+        //
+        // NodeAttachment ccc =
+        // nodeAttachmentService.getByNodeId("4eafe114-a812-4c2b-bcb3-ad470ff96fa9");
+        // String sss = JsonUtil.toJson(ccc);
+        // System.out.println(sss);
+
+        // String str = "国有建设用地使用权及房屋所有权首次登记";
+        // String path = ServiceFileUtil.createDirectory(str);
+        // Path file = Paths.get(path);
+        // Map<String, Object> res = FileExtractUtil.getDirectoryStructure(file);
 
         Map<String, Object> res = null;
         String path1 = "D:\\home\\siwei\\uploadPath\\2025\\11\\03\\建设工程规划许可阶段_20251103152826A002\\办理结果\\Untitled-1.html";
@@ -443,17 +475,12 @@ public class ProjectImpl implements ProjectService {
         Path file = Paths.get(path1);
         Path dirPath = Paths.get(path2);
         try {
-            //Files.copy(file, dirPath, StandardCopyOption.REPLACE_EXISTING);
+            // Files.copy(file, dirPath, StandardCopyOption.REPLACE_EXISTING);
             Files.move(file, dirPath, StandardCopyOption.REPLACE_EXISTING);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
-        log.info("-----move success-------"+res);
+        log.info("-----move success-------" + res);
     }
 
-
-
-
-
 }
-

+ 12 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/ProjectWorkflowMapper.xml

@@ -86,6 +86,18 @@
                         LIMIT 1 ), false) AS has_onchain
     </select>
 
+    <select id="getCurrentNode" parameterType="map" resultType="map">
+        SELECT *
+        FROM ${tableName}
+        WHERE id = #{id}
+        <if test="projectId != null and tableName!='t_ydbp_data'">
+            AND project_id = #{projectId}
+        </if>
+        LIMIT 1
+    </select>
+
+
+
     <insert id="add" parameterType="com.siwei.apply.domain.ProjectWorkflow">
         INSERT INTO t_project_workflow (id, project_id, workflow_id, parent_id, node_id, node_table_name, workflow_name,
                                         created_at, updated_at)