|
|
@@ -1936,39 +1936,30 @@ public class ProjectImpl implements ProjectService {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * 1.每一个地块都需要进行赋码操作,并且获取不动产最大序列值。
|
|
|
+ * 3.保证异常情况下,预付码不会重复。
|
|
|
+ * 5.简单取两者中最大序列号,进行+1赋码
|
|
|
+ * @param nodeId
|
|
|
+ * @param projectId
|
|
|
+ * @param geomDbId
|
|
|
+ * @param validFlag
|
|
|
+ * @throws RuntimeException
|
|
|
+ */
|
|
|
@Override
|
|
|
public void addPreAssignCode(String nodeId,String projectId,String geomDbId,Integer validFlag) throws RuntimeException {
|
|
|
- //这里进行预赋码逻辑,先查询是否已经存在预赋码,如果存在则不进行生成
|
|
|
- List<ProjectImmobileCode> existsList = projectImmobileCodeMapper.selectByProjectId(projectId);
|
|
|
- if(CollectionUtils.isNotEmpty(existsList)){
|
|
|
- String existsPreAssignCode = existsList.get(0).getPreAssignCode();
|
|
|
- if(StringUtils.isNotBlank(existsPreAssignCode)){
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- 1.每一个地块都需要进行请求,并且获取最大值。
|
|
|
- 2.生成预赋码逻辑在这里。
|
|
|
- 3.保证异常情况下,预付码不会重复。
|
|
|
- 5.简单取最大序列号,进行+1赋码
|
|
|
- */
|
|
|
String preAssignCode = "";
|
|
|
String sequenceNumber = "";
|
|
|
-
|
|
|
- //这里需要先进行图斑等值校验
|
|
|
- //这里校验当前地块是否已经存在当前项目中,如果存在共用一个预赋码,如果不存在则生成新的预赋码
|
|
|
-// 1.获取当前nodeId
|
|
|
-// 2.查找当前nodeId对应的gemoId
|
|
|
-// 3.用gemoId+projectId 查找如果找到,直接使用当前的预赋码,如果没有找到,则生成新的预赋码
|
|
|
-// 4.如果找不到,分别遍历当前项目的所有地块,把其中其它的地块找出来,进行等值判断,如果找不到则生成新的预赋码,如果找到,则使用当前的预赋码
|
|
|
-
|
|
|
+ /*
|
|
|
+ 2.这里校验当前地块是否已经存在当前项目中,如果存在共用一个预赋码,如果不存在则生成新的预赋码
|
|
|
+ 3.用gemoId+projectId 查找如果找到,直接使用当前的预赋码,如果没有找到,则生成新的预赋码
|
|
|
+ 4.如果找不到,分别遍历当前项目的所有地块,把其中其它的地块找出来,进行等值判断,如果找不到则生成新的预赋码,如果找到,则使用当前的预赋码
|
|
|
+ */
|
|
|
//--------------------第一部分先检查是否同一个引用----------------------------------------
|
|
|
+ //当前节点地块来自于存在的节点的矢量,直接沿用存在的预赋码
|
|
|
NodeLand nodeLand = nodeLandMapper.selectByNodeId(nodeId);
|
|
|
- String currentNodeGeomDbId = nodeLand.getGeomDbId();
|
|
|
-
|
|
|
+ String currentNodeGeomDbId = nodeLand.getGeomDbId();
|
|
|
ProjectImmobileCode param = new ProjectImmobileCode();
|
|
|
param.setProjectId(projectId);
|
|
|
param.setGeomDbId(currentNodeGeomDbId);
|
|
|
@@ -1977,58 +1968,92 @@ public class ProjectImpl implements ProjectService {
|
|
|
preAssignCode = existsRes.getPreAssignCode();
|
|
|
sequenceNumber = existsRes.getSequenceNumber();
|
|
|
}
|
|
|
- //--------------------第二部分先检查是否同一个地块(两条矢量数据 details)---------------------------------------
|
|
|
-// 1.根据当前项目查询所有的im数据list的geomId
|
|
|
-// 2.查询当前节点的 geomId
|
|
|
-// geomId --- geomIds
|
|
|
-// 如果当前geomId 对应两块地,先比较两块地的数量
|
|
|
-
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //这里生成预赋码逻辑,调用三方接口获取最大序号,然后生成预赋码,插入到不动产单元号表中
|
|
|
- Map<String, String> maxSequenceMap = takeDataService.getThirdMaxSequence(projectId,AloneWorkFlowEnum.NODE_2.getTableName());
|
|
|
- String plotCode = "";
|
|
|
- String regionCode = "";
|
|
|
- //这里校验当前地块是否已经存在当前项目中,如果存在共用一个预赋码,如果不存在则生成新的预赋码
|
|
|
- if(MapUtils.isNotEmpty(maxSequenceMap) && maxSequenceMap.containsKey("maxSequence")) {
|
|
|
- regionCode = maxSequenceMap.get("regionCode");
|
|
|
- plotCode = maxSequenceMap.get("plotCode");
|
|
|
- sequenceNumber = maxSequenceMap.get("maxSequence");
|
|
|
+ //--------------------第二部分,这里需要先进行图斑等值校验,先检查是否同一个地块(两条矢量数据 details)---------------------------------------
|
|
|
+ // 1.根据当前项目查询所有的预赋码表数据list然后获取nodeIdList 进行等值判断(在sql中执行)
|
|
|
+ // 2.如果当前geomId 对应两块地,是否先比较两块地的数量(这里不进行数量比较,简单比较,统一到当前项目下的其它节点地块中比较)
|
|
|
+ // 3.校验当前地块是否已经存在当前项目的其它节点中,如果存在则共用一个预赋码,如果不存在则走第三部分
|
|
|
+
|
|
|
+ if(com.siwei.common.core.utils.StringUtils.isBlank(preAssignCode) && com.siwei.common.core.utils.StringUtils.isBlank(sequenceNumber)) {
|
|
|
+ List<String> nodeIdList = new ArrayList<>();
|
|
|
+ List<ProjectImmobileCode> currentProjectImmobileList = projectImmobileCodeMapper.selectByProjectId(projectId, "");
|
|
|
+ if (CollectionUtils.isNotEmpty(currentProjectImmobileList)) {
|
|
|
+ nodeIdList = currentProjectImmobileList.stream().map(ProjectImmobileCode::getNodeId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ String equalsNodeId = "";
|
|
|
+ Boolean equalsFlag = true;
|
|
|
+ List<Map<String, Object>> currentNodeDetails = nodeLandMapper.selectGeomDetailsByGeomDbId(currentNodeGeomDbId);
|
|
|
+ //这里简单判断,如果当前节点的图斑在当前项目其它节点都存在,则认为地块是存在地块,并且已经赋码完成,取最后一次的节点预赋码为当前码
|
|
|
+ if (!currentNodeDetails.isEmpty()) {
|
|
|
+ for (Map<String, Object> tmpMap : currentNodeDetails) {
|
|
|
+ String detailsId = tmpMap.get("id").toString();
|
|
|
+ Map<String, String> equalsGeomMap = nodeLandMapper.selectNodeGeomContains(nodeIdList, detailsId);
|
|
|
+ if (MapUtils.isNotEmpty(equalsGeomMap) && equalsGeomMap.containsKey("node_id")) {
|
|
|
+ equalsNodeId = equalsGeomMap.get("node_id");
|
|
|
+ } else {
|
|
|
+ equalsFlag = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (equalsFlag.equals(true) && StringUtils.isNotBlank(equalsNodeId)) {
|
|
|
+ param = new ProjectImmobileCode();
|
|
|
+ param.setProjectId(projectId);
|
|
|
+ param.setGeomDbId(equalsNodeId);
|
|
|
+ existsRes = projectImmobileCodeMapper.selectByCondition(param);
|
|
|
+ if (Objects.nonNull(existsRes)) {
|
|
|
+ preAssignCode = existsRes.getPreAssignCode();
|
|
|
+ sequenceNumber = existsRes.getSequenceNumber();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
-
|
|
|
- //这里需要校验是否已经存在预赋码,如果存在则修改
|
|
|
+ //--------------------第三部分 这里生成预赋码逻辑,调用三方接口获取最大序号,然后生成预赋码,插入到不动产单元号表中---------------------------
|
|
|
+ if(com.siwei.common.core.utils.StringUtils.isBlank(preAssignCode) && com.siwei.common.core.utils.StringUtils.isBlank(sequenceNumber)) {
|
|
|
+ String plotCode = "";
|
|
|
+ String regionCode = "";
|
|
|
+ Map<String, String> maxSequenceMap = takeDataService.getThirdMaxSequence(projectId,nodeId);
|
|
|
+ if (MapUtils.isNotEmpty(maxSequenceMap) && maxSequenceMap.containsKey("maxSequence")) {
|
|
|
+ regionCode = maxSequenceMap.get("regionCode");
|
|
|
+ plotCode = maxSequenceMap.get("plotCode");
|
|
|
+ sequenceNumber = maxSequenceMap.get("maxSequence");
|
|
|
+ //这里查询库中最大序列号,两者取其一的最大值
|
|
|
+ ProjectImmobileCode dbMaxSequenceNumberImmobileCode = projectImmobileCodeMapper.selectBySequenceNumber(sequenceNumber);
|
|
|
+ if (Objects.nonNull(dbMaxSequenceNumberImmobileCode)) {
|
|
|
+ sequenceNumber = dbMaxSequenceNumberImmobileCode.getSequenceNumber() + 1;
|
|
|
+ }
|
|
|
+ preAssignCode = regionCode + plotCode + sequenceNumber;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //-----------------------------------------------------end-------------------------------------------------------------------------------------
|
|
|
if(com.siwei.common.core.utils.StringUtils.isNotBlank(preAssignCode) && com.siwei.common.core.utils.StringUtils.isNotBlank(sequenceNumber)){
|
|
|
- // insert 前需要先删除当前项目的预赋码数据
|
|
|
- projectImmobileCodeMapper.deleteByProjectIdNodeId(projectId,nodeId);
|
|
|
- //这里进行入库
|
|
|
- ProjectImmobileCode projectImmobileCode = new ProjectImmobileCode();
|
|
|
- projectImmobileCode.generateId();
|
|
|
- projectImmobileCode.setProjectId(projectId);
|
|
|
- projectImmobileCode.setNodeId(nodeId);
|
|
|
- projectImmobileCode.setGeomDbId(geomDbId);
|
|
|
- projectImmobileCode.setCode(null);
|
|
|
- projectImmobileCode.setSequenceNumber(sequenceNumber);
|
|
|
- projectImmobileCode.setPreAssignCode(preAssignCode);
|
|
|
- projectImmobileCode.setValidFlag(validFlag);
|
|
|
- projectImmobileCodeMapper.insert(projectImmobileCode);
|
|
|
+ // insert前做检查,如果当前节点已经赋码过了且是当前预赋码则无需赋码
|
|
|
+ param = new ProjectImmobileCode();
|
|
|
+ param.setProjectId(projectId);
|
|
|
+ param.setNodeId(nodeId);
|
|
|
+ param.setSequenceNumber(sequenceNumber);
|
|
|
+ param.setPreAssignCode(preAssignCode);
|
|
|
+ existsRes = projectImmobileCodeMapper.selectByCondition(param);
|
|
|
+ if(Objects.isNull(existsRes)){
|
|
|
+ // insert 前需要先删除当前项目的预赋码数据
|
|
|
+ projectImmobileCodeMapper.deleteByProjectIdNodeId(projectId,nodeId);
|
|
|
+ //这里进行入库
|
|
|
+ ProjectImmobileCode projectImmobileCode = new ProjectImmobileCode();
|
|
|
+ projectImmobileCode.generateId();
|
|
|
+ projectImmobileCode.setProjectId(projectId);
|
|
|
+ projectImmobileCode.setNodeId(nodeId);
|
|
|
+ projectImmobileCode.setGeomDbId(geomDbId);
|
|
|
+ projectImmobileCode.setCode(null);
|
|
|
+ projectImmobileCode.setSequenceNumber(sequenceNumber);
|
|
|
+ projectImmobileCode.setPreAssignCode(preAssignCode);
|
|
|
+ projectImmobileCode.setValidFlag(validFlag);
|
|
|
+ projectImmobileCodeMapper.insert(projectImmobileCode);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 递归解析json文件数据
|
|
|
*
|