From b0fd64098134466414d22af52baa823245839070 Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期一, 31 三月 2025 16:48:18 +0800
Subject: [PATCH] fix: 年度投资计划接口

---
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InvestmentPlanController.java |   77 ++++++++++++++++++++++++++++++++++----
 1 files changed, 69 insertions(+), 8 deletions(-)

diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InvestmentPlanController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InvestmentPlanController.java
index 24d7d1b..ce63b93 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InvestmentPlanController.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/InvestmentPlanController.java
@@ -3,18 +3,17 @@
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.by4cloud.platformx.common.core.util.R;
 import com.by4cloud.platformx.common.log.annotation.SysLog;
 import com.by4cloud.platformx.device.constant.MaxSizeContant;
-import com.by4cloud.platformx.device.entity.DeviceDemandPlan;
-import com.by4cloud.platformx.device.entity.InvestmentPlan;
-import com.by4cloud.platformx.device.service.DeviceDemandPlanService;
-import com.by4cloud.platformx.device.service.InvestmentPlanService;
-import com.by4cloud.platformx.device.service.JcMaxSizeService;
+import com.by4cloud.platformx.device.entity.*;
+import com.by4cloud.platformx.device.service.*;
 import com.by4cloud.platformx.device.util.NumUtils;
+import com.github.yulichang.adapter.base.ITableInfoAdapter;
 import org.springframework.security.access.prepost.PreAuthorize;
 import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -25,8 +24,8 @@
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 骞村害鎶曡祫璁″垝涓昏〃
@@ -42,8 +41,11 @@
 public class InvestmentPlanController {
 
     private final  InvestmentPlanService investmentPlanService;
+    private final  InvestmentPlanItemService investmentPlanItemService;
     private final DeviceDemandPlanService deviceDemandPlanService;
+    private final DeviceDemandSubService deviceDemandSubService;
     private final JcMaxSizeService maxSizeService;
+    private final DeviceService deviceService;
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -72,7 +74,25 @@
     @GetMapping("/{id}" )
     @PreAuthorize("@pms.hasPermission('device_investmentPlan_view')" )
     public R getById(@PathVariable("id" ) Long id) {
-        return R.ok(investmentPlanService.getById(id));
+		Map<String,Object> map = new HashMap<>();
+		InvestmentPlan plan = investmentPlanService.getById(id);
+		QueryWrapper<InvestmentPlanItem> wrapper = new QueryWrapper<>();
+		wrapper.lambda()
+				.eq(InvestmentPlanItem::getPlanId,plan.getId())
+				.orderByAsc(InvestmentPlanItem::getMonth);
+		List<InvestmentPlanItem> list = investmentPlanItemService.list(wrapper);
+		List<Map<String,Object>> resultList = new ArrayList<>();
+		for (Map.Entry<Integer, List<InvestmentPlanItem>> listEntry : list.stream().collect(Collectors.groupingBy(item -> item.getMonth())).entrySet()) {
+			Integer month = listEntry.getKey();
+			List<InvestmentPlanItem> value = listEntry.getValue();
+			Map<String,Object> entry = new HashMap<>();
+			entry.put("month",month);
+			entry.put("value",value);
+			resultList.add(entry);
+		}
+		map.put("plan",plan);
+		map.put("items",resultList);
+		return R.ok(map);
     }
 
     /**
@@ -85,9 +105,50 @@
     @PostMapping
     @PreAuthorize("@pms.hasPermission('device_investmentPlan_add')" )
     public R save(@RequestBody InvestmentPlan investmentPlan) {
+		List<DeviceDemandSub> subs = new ArrayList<>();
 		investmentPlan.setNumber(maxSizeService.nextNo(MaxSizeContant.TZPLAN_NUM));
 		investmentPlanService.save(investmentPlan);
 
+		String planIds = investmentPlan.getPlanIds();
+		String[] split = planIds.split(",");
+		for (String s : split) {
+			DeviceDemandPlan demandPlan = deviceDemandPlanService.getById(Long.parseLong(s));
+			QueryWrapper<DeviceDemandPlan> wrapper = new QueryWrapper<>();
+			wrapper.lambda()
+					.eq(DeviceDemandPlan::getPlanId,demandPlan.getId());
+			List<DeviceDemandPlan> list = deviceDemandPlanService.list(wrapper);
+			List<Long> collect = list.stream().map(DeviceDemandPlan::getId).collect(Collectors.toList());
+			for (Long l : collect) {
+				//鍚堝苟瀛愰」
+				List<DeviceDemandSub> byPlanId = deviceDemandSubService.getByPlanId(l);
+				subs.addAll(byPlanId);
+			}
+		}
+		List<InvestmentPlanItem> items = new ArrayList<>();
+		for (Map.Entry<Integer, List<DeviceDemandSub>> integerListEntry : subs.stream().collect(Collectors.groupingBy(item -> item.getMonth())).entrySet()) {
+			Integer month = integerListEntry.getKey();
+			List<DeviceDemandSub> subList = integerListEntry.getValue();
+			for (Map.Entry<Long, List<DeviceDemandSub>> deviceEntry : subList.stream().collect(Collectors.groupingBy(item -> item.getDeviceId())).entrySet()) {
+				Long deviceId = deviceEntry.getKey();
+				List<DeviceDemandSub> value = deviceEntry.getValue();
+				double total = value.stream().mapToDouble(DeviceDemandSub::getPrice).sum();
+
+				Device device = deviceService.getById(deviceId);
+				InvestmentPlanItem item = new InvestmentPlanItem();
+				item.setYear(value.get(0).getYear());
+				item.setPlanId(investmentPlan.getId());
+				item.setMonth(month);
+				item.setDeviceId(deviceId);
+				item.setNumber(device.getNumber());
+				item.setSpecification(device.getSpecification());
+				item.setNum(value.size());
+				item.setUnit(device.getUnit());
+				item.setPrice(device.getPrice());
+				item.setAmount(total);
+				items.add(item);
+			}
+		}
+		investmentPlanItemService.saveBatch(items);
 		return R.ok();
     }
 

--
Gitblit v1.9.1