|
@@ -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)){
|