|  | @@ -5408,24 +5408,21 @@ public class SubInfoServiceImpl implements SubInfoService {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        //获取项目所在地
 | 
	
		
			
				|  |  | +        List<TSystable> sbddList = Optional.ofNullable(
 | 
	
		
			
				|  |  | +                tSysTableService.getByKind(SysTableKind.JSDD)
 | 
	
		
			
				|  |  | +        ).orElse(Collections.emptyList());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 查询所有的重点项目信息,若结果为空则初始化为一个空列表
 | 
	
		
			
				|  |  |          List<SmzkDetailVo> dataList = Optional.ofNullable(
 | 
	
		
			
				|  |  |                  subInfoMapper.exportSmzkDetailExcel(vo.getSubName(),vo.getSubjectId(),indusKinds,vo.getStartAmt(),vo.getEndAmt(),vo.getSbdw(),subjectIds)
 | 
	
		
			
				|  |  |          ).orElse(Collections.emptyList());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Map<String, String> statusMap = new HashMap<>();
 | 
	
		
			
				|  |  | -        statusMap.put("1", "储备");
 | 
	
		
			
				|  |  | -        statusMap.put("2", "新建");
 | 
	
		
			
				|  |  | -        statusMap.put("3", "在建");
 | 
	
		
			
				|  |  | -        statusMap.put("9", "投产");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 遍历重点项目信息,找到对应的前期手续信息,然后拼接手续完成情况为字符串,拼接到对应的重点项目信息中
 | 
	
		
			
				|  |  |          dataList.forEach(e->{
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            e.setStatus(statusMap.get(e.getStatus()));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              e.setCbStatus(SubInfoCbStatusEnum.getMessage(e.getCbStatus()));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //设置行业
 | 
	
	
		
			
				|  | @@ -5434,12 +5431,7 @@ public class SubInfoServiceImpl implements SubInfoService {
 | 
	
		
			
				|  |  |                  //这是新的行业列表subInduList,subInduList中有children里面装的子行业,我需要将induskind替换为subInduList中的一级行业title
 | 
	
		
			
				|  |  |                  Optional<SubIndu> first = subInduList.stream().filter(item -> item.getCode().equals(induskind)).findFirst();
 | 
	
		
			
				|  |  |                  if (first.isPresent()) {
 | 
	
		
			
				|  |  | -                    //判断上级名称是否存在,如果存在将induskind替换为上级名称,否则将induskind替换为名称
 | 
	
		
			
				|  |  | -                    if (StringUtil.isNotEmpty(first.get().getParentTitle())) {
 | 
	
		
			
				|  |  | -                        e.setIndusKind(first.get().getParentTitle());
 | 
	
		
			
				|  |  | -                    } else {
 | 
	
		
			
				|  |  |                          e.setIndusKind(first.get().getTitle());
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  |                  }else {
 | 
	
		
			
				|  |  |                      e.setIndusKind("");
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -5447,6 +5439,19 @@ public class SubInfoServiceImpl implements SubInfoService {
 | 
	
		
			
				|  |  |                  e.setIndusKind("");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            //设置项目所在地
 | 
	
		
			
				|  |  | +            if (StringUtil.isNotEmpty(e.getSubjectId())) {
 | 
	
		
			
				|  |  | +                String sbdw = e.getSubjectId();
 | 
	
		
			
				|  |  | +                Optional<TSystable> first = sbddList.stream().filter(item -> item.getCode().equals(sbdw)).findFirst();
 | 
	
		
			
				|  |  | +                if (first.isPresent()) {
 | 
	
		
			
				|  |  | +                    e.setSubjectId(first.get().getTitle());
 | 
	
		
			
				|  |  | +                }else {
 | 
	
		
			
				|  |  | +                    e.setSubjectId("");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                e.setSubjectId("");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              //将万元转换为亿元
 | 
	
		
			
				|  |  |              e.setAmtTotal(e.getAmtTotal().divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -5455,6 +5460,150 @@ public class SubInfoServiceImpl implements SubInfoService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @TargetDataSource("primary")
 | 
	
		
			
				|  |  | +    public void importXmzkDetailExcel(List<List<Object>> readAll) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 前两行是标题,跳过
 | 
	
		
			
				|  |  | +        if (readAll != null && readAll.size() >2) {
 | 
	
		
			
				|  |  | +            List<SmzkDetailVo> list = new ArrayList<>();
 | 
	
		
			
				|  |  | +            // 对数据进行处理
 | 
	
		
			
				|  |  | +            for (int i = 2; i < readAll.size(); i++) {
 | 
	
		
			
				|  |  | +                SmzkDetailVo xmzhtjDetailVo = new SmzkDetailVo();
 | 
	
		
			
				|  |  | +                for (int j = 0; j < readAll.get(i).size(); j++) {
 | 
	
		
			
				|  |  | +                    if (j == 0){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setNumber(Integer.parseInt(readAll.get(i).get(j).toString()));
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 1){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setId(readAll.get(i).get(j).toString());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 2){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setSubName(readAll.get(i).get(j).toString());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 3){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setSubjectId(readAll.get(i).get(j).toString());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 4){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setContent(readAll.get(i).get(j).toString());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 5){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setAmtTotal(BigDecimal.valueOf((Double) readAll.get(i).get(j)));
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 6){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setIndusKind(readAll.get(i).get(j).toString());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 7){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setCbStatus(readAll.get(i).get(j).toString());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 8){
 | 
	
		
			
				|  |  | +                        // 如果不为null才进行解析
 | 
	
		
			
				|  |  | +                        if (readAll.get(i).get(j) != null) {
 | 
	
		
			
				|  |  | +                            xmzhtjDetailVo.setBeginDate(DateUtil.parseDate(readAll.get(i).get(j).toString()));
 | 
	
		
			
				|  |  | +                        }else {
 | 
	
		
			
				|  |  | +                            xmzhtjDetailVo.setBeginDate(null);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 9){
 | 
	
		
			
				|  |  | +                        if (readAll.get(i).get(j) != null) {
 | 
	
		
			
				|  |  | +                            xmzhtjDetailVo.setEndDate(DateUtil.parseDate(readAll.get(i).get(j).toString()));
 | 
	
		
			
				|  |  | +                        }else {
 | 
	
		
			
				|  |  | +                            xmzhtjDetailVo.setEndDate(null);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 10){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setProgress(readAll.get(i).get(j).toString());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (j == 11){
 | 
	
		
			
				|  |  | +                        xmzhtjDetailVo.setRemark(readAll.get(i).get(j).toString());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                list.add(xmzhtjDetailVo);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 获取项目地点
 | 
	
		
			
				|  |  | +            List<TSystable> sbddList = Optional.ofNullable(
 | 
	
		
			
				|  |  | +                    tSysTableService.getByKind(SysTableKind.JSDD)
 | 
	
		
			
				|  |  | +            ).orElse(Collections.emptyList());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 获取行业
 | 
	
		
			
				|  |  | +            List<SubIndu> subInduList = Optional.ofNullable(
 | 
	
		
			
				|  |  | +                    subInduService.selectAllSubIndu()
 | 
	
		
			
				|  |  | +            ).orElse(Collections.emptyList());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            for (int i = 0; i < list.size(); i++) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                SmzkDetailVo smzkDetailVo = list.get(i);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (smzkDetailVo.getId() == null){
 | 
	
		
			
				|  |  | +                    throw new RuntimeException("导入失败,第" + (i+3) + "行,项目编号不能为空");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 项目所在地,不能为空,必须在【伊州区,巴里坤县,伊吾县,高新区】里选择,其他的所有区县都是要提示出来,包括【市本级】,也不能有
 | 
	
		
			
				|  |  | +                if (StringUtil.isNotEmpty(smzkDetailVo.getSubjectId())){
 | 
	
		
			
				|  |  | +                    String sbdw = smzkDetailVo.getSubjectId();
 | 
	
		
			
				|  |  | +                    Optional<TSystable> first = sbddList.stream().filter(item -> item.getTitle().equals(sbdw)).findFirst();
 | 
	
		
			
				|  |  | +                    if (first.isPresent()) {
 | 
	
		
			
				|  |  | +                        smzkDetailVo.setSubjectId(first.get().getCode());
 | 
	
		
			
				|  |  | +                    }else {
 | 
	
		
			
				|  |  | +                        throw new RuntimeException("导入失败,第" + (i+3) + "行,项目所在地为" + sbdw + ",请检查");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }else {
 | 
	
		
			
				|  |  | +                    throw new RuntimeException("导入失败,第" + (i+3) + "行,项目所在地不能为空");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 项目金额不能为空,需要将单位亿元转为万元
 | 
	
		
			
				|  |  | +                if (smzkDetailVo.getAmtTotal() == null){
 | 
	
		
			
				|  |  | +                    throw new RuntimeException("导入失败,第" + (i+3) + "行,项目金额不能为空");
 | 
	
		
			
				|  |  | +                }else if (smzkDetailVo.getAmtTotal().compareTo(new BigDecimal("0")) == 0){
 | 
	
		
			
				|  |  | +                    throw new RuntimeException("导入失败,第" + (i+3) + "行,项目金额不能为0");
 | 
	
		
			
				|  |  | +                }else {
 | 
	
		
			
				|  |  | +                    smzkDetailVo.setAmtTotal(smzkDetailVo.getAmtTotal().multiply(new BigDecimal("1000")));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 行业分类不能为空,判断行业必须存在,存在后取id保存
 | 
	
		
			
				|  |  | +                if (StringUtil.isNotEmpty(smzkDetailVo.getIndusKind())){
 | 
	
		
			
				|  |  | +                    Optional<SubIndu> first = subInduList.stream().filter(item -> item.getTitle().equals(smzkDetailVo.getIndusKind())).findFirst();
 | 
	
		
			
				|  |  | +                    if (first.isPresent()) {
 | 
	
		
			
				|  |  | +                        smzkDetailVo.setIndusKind(first.get().getCode());
 | 
	
		
			
				|  |  | +                    }else {
 | 
	
		
			
				|  |  | +                        throw new RuntimeException("导入失败,第" + (i+3) + "行,行业分类为" + smzkDetailVo.getIndusKind() + ",请检查");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }else {
 | 
	
		
			
				|  |  | +                    throw new RuntimeException("导入失败,第" + (i+3) + "行,行业分类不能为空");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 状态,可以为空,如果非空时,必须为【正在谋划,正在洽谈,已签约,已备案/已核准】这4种里的一个,其他的所有都提示出来;
 | 
	
		
			
				|  |  | +                if (StringUtil.isNotEmpty(smzkDetailVo.getCbStatus())){
 | 
	
		
			
				|  |  | +                    // 校验状态字段是否符合预期
 | 
	
		
			
				|  |  | +                    List<String> validStatuses = Arrays.asList("正在谋划", "正在洽谈", "已签约", "已备案/已核准");
 | 
	
		
			
				|  |  | +                    if (!validStatuses.contains(smzkDetailVo.getCbStatus())) {
 | 
	
		
			
				|  |  | +                        throw new RuntimeException("导入失败,第" + (i + 3) + "行,状态为" + smzkDetailVo.getCbStatus() + ",请检查");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (smzkDetailVo.getCbStatus().equals("正在谋划")){
 | 
	
		
			
				|  |  | +                        smzkDetailVo.setCbStatus("1");
 | 
	
		
			
				|  |  | +                    }else if (smzkDetailVo.getCbStatus().equals("正在洽谈")){
 | 
	
		
			
				|  |  | +                        smzkDetailVo.setCbStatus("2");
 | 
	
		
			
				|  |  | +                    }else if (smzkDetailVo.getCbStatus().equals("已签约")){
 | 
	
		
			
				|  |  | +                        smzkDetailVo.setCbStatus("3");
 | 
	
		
			
				|  |  | +                    }else if (smzkDetailVo.getCbStatus().equals("已备案/已核准")){
 | 
	
		
			
				|  |  | +                        smzkDetailVo.setCbStatus("4");
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 项目名称和建设内容都不能为空
 | 
	
		
			
				|  |  | +                if (StringUtil.isEmpty(smzkDetailVo.getSubName())){
 | 
	
		
			
				|  |  | +                    throw new RuntimeException("导入失败,第" + (i+3) + "行,项目名称不能为空");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (StringUtil.isEmpty(smzkDetailVo.getContent())){
 | 
	
		
			
				|  |  | +                    throw new RuntimeException("导入失败,第" + (i+3) + "行,建设内容不能为空");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            subInfoMapper.batchUpdate(list);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private Map<String, Object> getStringObjectMap(List<WorkBenchVO> list) {
 | 
	
		
			
				|  |  |          Map<String, Object> resultMap = new HashMap<>();
 | 
	
		
			
				|  |  |          if (CollectionUtil.isNotEmpty(list)){
 |