|
|
@@ -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);
|
|
|
}
|