|  | @@ -1,7 +1,6 @@
 | 
	
		
			
				|  |  |  package com.siwei.apply.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import com.siwei.apply.domain.Project;
 | 
	
		
			
				|  |  | -import com.siwei.apply.domain.Tdgy;
 | 
	
		
			
				|  |  | +import com.siwei.apply.domain.*;
 | 
	
		
			
				|  |  |  import com.siwei.apply.domain.res.TdgyRes;
 | 
	
		
			
				|  |  |  import com.siwei.apply.domain.vo.TdgyUpdateVo;
 | 
	
		
			
				|  |  |  import com.siwei.apply.domain.vo.TdgyVo;
 | 
	
	
		
			
				|  | @@ -13,9 +12,10 @@ import com.siwei.apply.service.NodeLandService;
 | 
	
		
			
				|  |  |  import com.siwei.apply.service.TdgyService;
 | 
	
		
			
				|  |  |  import com.siwei.common.core.exception.ServiceException;
 | 
	
		
			
				|  |  |  import com.siwei.common.core.utils.bean.BeanUtils;
 | 
	
		
			
				|  |  | +import org.apache.commons.collections4.CollectionUtils;
 | 
	
		
			
				|  |  | +import org.apache.commons.collections4.MapUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -import com.siwei.apply.domain.LandType;
 | 
	
		
			
				|  |  |  import com.siwei.apply.domain.res.LandTypeTreeRes;
 | 
	
		
			
				|  |  |  import com.siwei.apply.mapper.LandTypeMapper;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -25,8 +25,6 @@ import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  import static com.siwei.apply.common.Common.UserId;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | -import com.siwei.apply.domain.ProjectWorkflow;
 | 
	
		
			
				|  |  | -import com.siwei.apply.domain.Workflow;
 | 
	
		
			
				|  |  |  import com.siwei.apply.mapper.ProjectWorkflowMapper;
 | 
	
		
			
				|  |  |  import com.siwei.apply.mapper.WorkflowMapper;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -152,24 +150,33 @@ public class TdgyImpl implements TdgyService {
 | 
	
		
			
				|  |  |          return roots;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     *   1.校验是否存在地块。
 | 
	
		
			
				|  |  | +     *   2.插入土地供应节点到流程表。
 | 
	
		
			
				|  |  | +     * @param id         土地供应ID
 | 
	
		
			
				|  |  | +     * @param projectId  项目id
 | 
	
		
			
				|  |  | +     * @param hasOnchain 是否已上链
 | 
	
		
			
				|  |  | +     * @throws RuntimeException
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void updateHasOnchain(String id,String projectId, Boolean hasOnchain) throws RuntimeException {
 | 
	
		
			
				|  |  |          //这里区分不同类型,如果是批次报批,需要检查地块包含,然后再插入一条数据到流程表,并且,手动增加批次报批数据节点。
 | 
	
		
			
				|  |  | -        //todo 分成三步骤
 | 
	
		
			
				|  |  | -        // 1.校验是否存在地块。
 | 
	
		
			
				|  |  | -        // 2.插入土地供应节点到流程表。
 | 
	
		
			
				|  |  | -        // 3.调用赋码服务,增加赋码数据。
 | 
	
		
			
				|  |  |          Integer pType = projectMapper.getProjectTypeById(projectId);
 | 
	
		
			
				|  |  |          if(ProjectType.BATCH.getCode().equals(String.valueOf(pType))){
 | 
	
		
			
				|  |  | +            //这里进行转换,查找复用的id //todo 这里后期需要删除
 | 
	
		
			
				|  |  | +            NodeLand nodeLand= nodeLandService.getNodeLandByNodeId(id);
 | 
	
		
			
				|  |  | +            id = nodeLand.getNodeId();
 | 
	
		
			
				|  |  |              //这里检验空间图形是否包含批次数据
 | 
	
		
			
				|  |  |              List<Map<String, String>> geomDetailsList= nodeLandService.selectTGeomDbDetailsByNodeId(id);
 | 
	
		
			
				|  |  |              Map <String, String> resultMap = new HashMap<>();
 | 
	
		
			
				|  |  |              for (Map<String, String> geomDetailsMap : geomDetailsList) {
 | 
	
		
			
				|  |  |                  String geomDetailsId = geomDetailsMap.get("id");
 | 
	
		
			
				|  |  |                  Map<String, String> geomDetailsAndNodeMap= nodeLandService.selectGeomContainsNode(geomDetailsId);
 | 
	
		
			
				|  |  | -                String nodeId = geomDetailsAndNodeMap.get("nodeId");
 | 
	
		
			
				|  |  | -                resultMap.put(nodeId, geomDetailsAndNodeMap.get("id"));
 | 
	
		
			
				|  |  | +                if(!MapUtils.isEmpty(geomDetailsAndNodeMap)){
 | 
	
		
			
				|  |  | +                    String nodeId = geomDetailsAndNodeMap.get("node_id");
 | 
	
		
			
				|  |  | +                    resultMap.put(nodeId, geomDetailsAndNodeMap.get("id"));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              if(resultMap.isEmpty()){
 | 
	
		
			
				|  |  |                  throw new ServiceException("当前地块未包含审核过的批次报批空间信息,请检查后再上链!");
 | 
	
	
		
			
				|  | @@ -177,19 +184,39 @@ public class TdgyImpl implements TdgyService {
 | 
	
		
			
				|  |  |              if(resultMap.size()>1){
 | 
	
		
			
				|  |  |                  throw new ServiceException("当前地块未包含多个地块,报批数据不在同一批次!");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            String tableName ="t_ydbp_data";
 | 
	
		
			
				|  |  |              //获取到对应的批次报批节点,插入到流程表中
 | 
	
		
			
				|  |  | -            String nodeId = String.valueOf(resultMap.keySet().stream().findFirst());
 | 
	
		
			
				|  |  | -            Workflow workflow = workflowMapper.selectByProjectTypeAndTableName(Integer.valueOf(ProjectType.BATCH.getCode()), "t_ydbp_data");
 | 
	
		
			
				|  |  | +            String nodeId = resultMap.keySet().stream().findFirst().get();
 | 
	
		
			
				|  |  | +            Workflow workflow = workflowMapper.selectByProjectTypeAndTableName(Integer.valueOf(ProjectType.BATCH.getCode()), tableName);
 | 
	
		
			
				|  |  | +            //先检查是否存在,避免重复上链插入多次
 | 
	
		
			
				|  |  |              ProjectWorkflow projectWorkflow = new ProjectWorkflow();
 | 
	
		
			
				|  |  | -            //设置流程主键
 | 
	
		
			
				|  |  | -            projectWorkflow.generateId();
 | 
	
		
			
				|  |  | -            projectWorkflow.setParentId(id);
 | 
	
		
			
				|  |  | -            projectWorkflow.setWorkflowId(workflow.getId());
 | 
	
		
			
				|  |  | -            projectWorkflow.setProjectId(projectId);
 | 
	
		
			
				|  |  | -            projectWorkflow.setNodeId(nodeId);
 | 
	
		
			
				|  |  | -            projectWorkflow.setNodeTableName(workflow.getTableName());
 | 
	
		
			
				|  |  | -            projectWorkflow.setWorkflowName(workflow.getName());
 | 
	
		
			
				|  |  | -            projectWorkflowMapper.add(projectWorkflow);
 | 
	
		
			
				|  |  | +            List<ProjectWorkflow> projectWorkflowList = projectWorkflowMapper.selectByProjectId(projectId);
 | 
	
		
			
				|  |  | +            if(!CollectionUtils.isEmpty(projectWorkflowList)){
 | 
	
		
			
				|  |  | +                Optional<ProjectWorkflow>  result = projectWorkflowList.stream().filter(o->o.getNodeTableName().equals(tableName)).findFirst();
 | 
	
		
			
				|  |  | +                if(result.isPresent()){
 | 
	
		
			
				|  |  | +                    projectWorkflow = result.get();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if(!Objects.nonNull(projectWorkflow.getId())){
 | 
	
		
			
				|  |  | +                projectWorkflow.setParentId(id);
 | 
	
		
			
				|  |  | +                //projectWorkflow.setWorkflowId(workflow.getId());
 | 
	
		
			
				|  |  | +                projectWorkflow.setProjectId(projectId);
 | 
	
		
			
				|  |  | +                projectWorkflow.setNodeId(nodeId);
 | 
	
		
			
				|  |  | +                //projectWorkflow.setNodeTableName(workflow.getTableName());
 | 
	
		
			
				|  |  | +                //projectWorkflow.setWorkflowName(workflow.getName());
 | 
	
		
			
				|  |  | +                projectWorkflowMapper.update(projectWorkflow);
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                //设置流程主键
 | 
	
		
			
				|  |  | +                projectWorkflow.generateId();
 | 
	
		
			
				|  |  | +                projectWorkflow.setParentId(id);
 | 
	
		
			
				|  |  | +                projectWorkflow.setWorkflowId(workflow.getId());
 | 
	
		
			
				|  |  | +                projectWorkflow.setProjectId(projectId);
 | 
	
		
			
				|  |  | +                projectWorkflow.setNodeId(nodeId);
 | 
	
		
			
				|  |  | +                projectWorkflow.setNodeTableName(workflow.getTableName());
 | 
	
		
			
				|  |  | +                projectWorkflow.setWorkflowName(workflow.getName());
 | 
	
		
			
				|  |  | +                projectWorkflowMapper.add(projectWorkflow);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          tdgyMapper.updateHasOnchain(id, hasOnchain);
 | 
	
		
			
				|  |  |      }
 |