|
@@ -1,18 +1,56 @@
|
|
|
package com.siwei.apply.service.impl;
|
|
|
|
|
|
-import com.siwei.apply.domain.LandOneCode;
|
|
|
-import com.siwei.apply.mapper.LandOneCodeMapper;
|
|
|
+import com.siwei.apply.domain.*;
|
|
|
+import com.siwei.apply.domain.res.ProjectCycleRes;
|
|
|
+import com.siwei.apply.enums.ProjectType;
|
|
|
+import com.siwei.apply.enums.RegistrationProcessType;
|
|
|
+import com.siwei.apply.mapper.*;
|
|
|
import com.siwei.apply.service.LandOneCodeService;
|
|
|
+import com.siwei.common.core.utils.bean.BeanUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import static com.siwei.apply.common.Common.UserId;
|
|
|
+
|
|
|
@Service
|
|
|
@RequiredArgsConstructor
|
|
|
public class LandOneCodeServiceImpl implements LandOneCodeService {
|
|
|
|
|
|
+ @Autowired
|
|
|
private final LandOneCodeMapper mapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private final ProjectWorkflowMapper projectWorkflowMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WorkflowMapper workflowMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TdgyMapper tdgyMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private YdbpMapper ydbpMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private YdysyxzMapper ydysyxzMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProjectMapper projectMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private NodeLandMapper nodeLandMapper;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public String add(LandOneCode entity) {
|
|
@@ -37,4 +75,203 @@ public class LandOneCodeServiceImpl implements LandOneCodeService {
|
|
|
public void deleteById(String id) {
|
|
|
mapper.deleteById(id);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取业务编码
|
|
|
+ * @param projectWorkflowId
|
|
|
+ * @param projectType
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String getBusinessCode(String projectWorkflowId, Integer projectType) {
|
|
|
+ ProjectWorkflow projectWorkflow= projectWorkflowMapper.selectById(projectWorkflowId);
|
|
|
+ String nodeId = projectWorkflow.getNodeId();
|
|
|
+ String nodeTableName = projectWorkflow.getNodeTableName();
|
|
|
+ // 获取不同类型的流程
|
|
|
+ List<ProjectCycleRes> workflows = workflowMapper.selectByProjectTypeOrderByIndex(projectType);
|
|
|
+ ProjectCycleRes currrentProjectCycleRes = workflows.stream().filter(s->s.getTableName().equals(nodeTableName)).findFirst().orElse(null);
|
|
|
+ Double index = currrentProjectCycleRes.getIndex();
|
|
|
+
|
|
|
+ // 过滤出小于等于当前节点的所有节点
|
|
|
+ workflows = workflows.stream().filter(s->s.getIndex()<=index).collect(Collectors.toList());
|
|
|
+ String returnCode = "";
|
|
|
+ String replaceCode = "#";
|
|
|
+
|
|
|
+ String talbeName0 = "t_ydysyxz"; //用地预审与选址
|
|
|
+ String talbeName1 = "t_ydbp"; //用地报批
|
|
|
+ String talbeName2 = "t_tdgy";//土地供应
|
|
|
+
|
|
|
+ String talbeName3 = "t_gyjsydscdj";//国有建设用地使用权首次登记
|
|
|
+ String talbeName4 = "t_gyjsydjfwscdj";//国有建设用地使用权及房屋所有权首次登记
|
|
|
+
|
|
|
+ String talbeName5 = "t_jsydghxk";//建设用地规划许可
|
|
|
+ String talbeName6 = "t_jsgcghxk";//建设工程规划许可
|
|
|
+
|
|
|
+ String levyStatusCode = replaceCode;
|
|
|
+ String landSupplyModeCode = replaceCode;
|
|
|
+ String approvalProcessCode = replaceCode;
|
|
|
+ String registrationProcessCode = replaceCode;
|
|
|
+ String licenseStagesCode = replaceCode;
|
|
|
+
|
|
|
+ //单独选址
|
|
|
+ if(ProjectType.ALONE.equals(projectType)){
|
|
|
+ Tdgy globalTdgy = null; //土地供应对象
|
|
|
+ //取征转状态
|
|
|
+ //优先获取土地供应的值
|
|
|
+ if(workflows.stream().anyMatch(s->s.getTableName().equalsIgnoreCase(talbeName2))){
|
|
|
+ Tdgy tdgy = tdgyMapper.getById(nodeId);
|
|
|
+ globalTdgy = tdgy;
|
|
|
+ if(StringUtils.isNoneBlank(tdgy.getHasZz())){
|
|
|
+ levyStatusCode = "是".equalsIgnoreCase(tdgy.getHasZz()) ? "1": "否".equalsIgnoreCase(tdgy.getHasZz()) ? "0": "";
|
|
|
+ }
|
|
|
+ //其次获取用地报批的值
|
|
|
+ } else if(workflows.stream().anyMatch(s->s.getTableName().equalsIgnoreCase(talbeName1))){
|
|
|
+ Ydbp ydbp = ydbpMapper.getById(nodeId);
|
|
|
+ if(StringUtils.isNoneBlank(ydbp.getHasZz())){
|
|
|
+ levyStatusCode = "是".equalsIgnoreCase(ydbp.getHasZz()) ? "1": "否".equalsIgnoreCase(ydbp.getHasZz()) ? "0": "";
|
|
|
+ }
|
|
|
+ }else if(workflows.stream().anyMatch(s->s.getTableName().equalsIgnoreCase(talbeName0))){
|
|
|
+ Ydysyxz ydysyxz = ydysyxzMapper.getById(nodeId);
|
|
|
+ if(StringUtils.isNoneBlank(ydysyxz.getHasZz())){
|
|
|
+ levyStatusCode = "是".equalsIgnoreCase(ydysyxz.getHasZz()) ? "1": "否".equalsIgnoreCase(ydysyxz.getHasZz()) ? "0": "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(levyStatusCode)){
|
|
|
+ levyStatusCode = replaceCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取土地供应方式
|
|
|
+ if(Objects.nonNull(globalTdgy) && StringUtils.isNoneBlank(globalTdgy.getGdType())){
|
|
|
+ if("划拨".equalsIgnoreCase(globalTdgy.getGdType())){
|
|
|
+ landSupplyModeCode = "H";
|
|
|
+ } else if ("出让".equalsIgnoreCase(globalTdgy.getGdType())) {
|
|
|
+ landSupplyModeCode = "C";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取审批环节代码
|
|
|
+ List<String> currentNodeTableList = workflows.stream().map(s->s.getTableName()).collect(Collectors.toList());
|
|
|
+ RegistrationProcessType[] values = RegistrationProcessType.values();
|
|
|
+ List<RegistrationProcessType> reversedValues = Arrays.stream(values).sequential().sorted(Comparator.comparing(RegistrationProcessType::getIndex).reversed()).collect(Collectors.toList());
|
|
|
+ for(RegistrationProcessType registrationProcess : reversedValues){
|
|
|
+ if(currentNodeTableList.contains(registrationProcess.getTable())){
|
|
|
+ approvalProcessCode = registrationProcess.getCode();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取登记环节编码
|
|
|
+ if(currentNodeTableList.contains(talbeName4)){
|
|
|
+ registrationProcessCode = "2";
|
|
|
+ } else if(currentNodeTableList.contains(talbeName3)){
|
|
|
+ registrationProcessCode = "1";
|
|
|
+ }
|
|
|
+
|
|
|
+ //许可分期编码
|
|
|
+ if(currentNodeTableList.contains(talbeName6)){
|
|
|
+ licenseStagesCode = "2";
|
|
|
+ } else if(currentNodeTableList.contains(talbeName5)){
|
|
|
+ licenseStagesCode = "1";
|
|
|
+ }
|
|
|
+ }else if(ProjectType.BATCH.equals(projectType)){
|
|
|
+ Tdgy globalTdgy = null; //土地供应对象
|
|
|
+ //取征转状态
|
|
|
+ //优先获取土地供应的值
|
|
|
+ if(workflows.stream().anyMatch(s->s.getTableName().equalsIgnoreCase(talbeName2))){
|
|
|
+ Tdgy tdgy = tdgyMapper.getById(nodeId);
|
|
|
+ globalTdgy = tdgy;
|
|
|
+ if(StringUtils.isNoneBlank(tdgy.getHasZz())){
|
|
|
+ levyStatusCode = "是".equalsIgnoreCase(tdgy.getHasZz()) ? "1": "否".equalsIgnoreCase(tdgy.getHasZz()) ? "0": "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(levyStatusCode)){
|
|
|
+ levyStatusCode = replaceCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取土地供应方式
|
|
|
+ if(Objects.nonNull(globalTdgy) && StringUtils.isNoneBlank(globalTdgy.getGdType())){
|
|
|
+ if("划拨".equalsIgnoreCase(globalTdgy.getGdType())){
|
|
|
+ landSupplyModeCode = "H";
|
|
|
+ } else if ("出让".equalsIgnoreCase(globalTdgy.getGdType())) {
|
|
|
+ landSupplyModeCode = "C";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取审批环节代码
|
|
|
+ List<String> currentNodeTableList = workflows.stream().map(s->s.getTableName()).collect(Collectors.toList());
|
|
|
+ RegistrationProcessType[] values = RegistrationProcessType.values();
|
|
|
+ List<RegistrationProcessType> reversedValues = Arrays.stream(values).sequential().sorted(Comparator.comparing(RegistrationProcessType::getIndex).reversed()).collect(Collectors.toList());
|
|
|
+ for(RegistrationProcessType registrationProcess : reversedValues){
|
|
|
+ if(currentNodeTableList.contains(registrationProcess.getTable())){
|
|
|
+ approvalProcessCode = registrationProcess.getCode();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取登记环节编码
|
|
|
+ if(currentNodeTableList.contains(talbeName4)){
|
|
|
+ registrationProcessCode = "2";
|
|
|
+ } else if(currentNodeTableList.contains(talbeName3)){
|
|
|
+ registrationProcessCode = "1";
|
|
|
+ }
|
|
|
+
|
|
|
+ //许可分期编码
|
|
|
+ if(currentNodeTableList.contains(talbeName6)){
|
|
|
+ licenseStagesCode = "2";
|
|
|
+ } else if(currentNodeTableList.contains(talbeName5)){
|
|
|
+ licenseStagesCode = "1";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ returnCode = levyStatusCode+landSupplyModeCode+approvalProcessCode+registrationProcessCode+licenseStagesCode;
|
|
|
+ return returnCode;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 各个环节新增时,新增一条地块一码信息
|
|
|
+ * @param projectWorkflowId
|
|
|
+ * @param projectType
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String addOrUpdateLandOneCodeInfo(String projectWorkflowId, Integer projectType) {
|
|
|
+ ProjectWorkflow projectWorkflow= projectWorkflowMapper.selectById(projectWorkflowId);
|
|
|
+ String nodeId = projectWorkflow.getNodeId();
|
|
|
+ String projectId = projectWorkflow.getProjectId();
|
|
|
+ Project project =projectMapper.get(projectId);
|
|
|
+ // 获取地块ID
|
|
|
+ NodeLand nodeLand = nodeLandMapper.selectByNodeId(nodeId);
|
|
|
+ String landCodeId = nodeLand.getId();
|
|
|
+ LandOneCode landOneCode = mapper.getByWorkflowId(projectWorkflowId);
|
|
|
+ if(Objects.nonNull(landOneCode)){ //修改数据
|
|
|
+ landOneCode.setProjectId(projectId);
|
|
|
+ landOneCode.setLandCode(landCodeId);
|
|
|
+ landOneCode.setProjectWorkflowId(projectWorkflowId);
|
|
|
+ String businessCode = this.getBusinessCode( projectWorkflowId, projectType);
|
|
|
+ landOneCode.setResourceBusinessCode(businessCode);
|
|
|
+ landOneCode.setResourceProjectCode(project.getCode());
|
|
|
+ landOneCode.setResourceImmobileCode("###");
|
|
|
+ mapper.updateById(landOneCode);
|
|
|
+ }else {
|
|
|
+ //保存入库
|
|
|
+ landOneCode = new LandOneCode();
|
|
|
+ landOneCode.generateId();
|
|
|
+ landOneCode.setProjectId(projectId);
|
|
|
+ landOneCode.setLandCode(landCodeId);
|
|
|
+ landOneCode.setProjectWorkflowId(projectWorkflowId);
|
|
|
+ String businessCode = this.getBusinessCode( projectWorkflowId, projectType);
|
|
|
+ landOneCode.setResourceBusinessCode(businessCode);
|
|
|
+ landOneCode.setResourceProjectCode(project.getCode());
|
|
|
+ landOneCode.setResourceImmobileCode("###");
|
|
|
+ mapper.add(landOneCode);
|
|
|
+ }
|
|
|
+ return landOneCode.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|