From 6f9623981926d78ce8ccd80bce55ad631bd2c76b Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期四, 27 三月 2025 17:16:13 +0800
Subject: [PATCH] fix: 计划合并提交

---
 platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceDemandPlanController.java |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 108 insertions(+), 4 deletions(-)

diff --git a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceDemandPlanController.java b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceDemandPlanController.java
index 03ff167..f67a136 100644
--- a/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceDemandPlanController.java
+++ b/platformx-device-biz/src/main/java/com/by4cloud/platformx/device/controller/DeviceDemandPlanController.java
@@ -3,14 +3,19 @@
 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.common.security.util.SecurityUtils;
 import com.by4cloud.platformx.device.constant.MaxSizeContant;
+import com.by4cloud.platformx.device.entity.Device;
 import com.by4cloud.platformx.device.entity.DeviceDemandPlan;
-import com.by4cloud.platformx.device.service.DeviceDemandPlanService;
-import com.by4cloud.platformx.device.service.JcMaxSizeService;
+import com.by4cloud.platformx.device.entity.DeviceDemandSub;
+import com.by4cloud.platformx.device.service.*;
+import com.by4cloud.platformx.device.util.NumUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -21,8 +26,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;
 
 /**
  * 璁惧闇�姹傝鍒掍富琛�
@@ -38,7 +43,10 @@
 public class DeviceDemandPlanController {
 
     private final  DeviceDemandPlanService deviceDemandPlanService;
+    private final DeviceDemandTotalService deviceDemandTotalService;
+    private final DeviceDemandSubService deviceDemandSubService;
     private final JcMaxSizeService maxSizeService;
+    private final DeviceService deviceService;
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -55,6 +63,23 @@
 		wrapper.eq(deviceDemandPlan.getYear() !=null,DeviceDemandPlan::getYear,deviceDemandPlan.getYear());
         return R.ok(deviceDemandPlanService.pageByScope(page, wrapper));
     }
+
+	/**
+	 * 鍒嗛〉鏌ヨ2
+	 * @param page 鍒嗛〉瀵硅薄
+	 * @param deviceDemandPlan 璁惧闇�姹傝鍒掍富琛�
+	 * @return
+	 */
+	@Operation(summary = "鏈崟浣嶅垎椤垫煡璇�" , description = "鏈崟浣嶅垎椤垫煡璇�" )
+	@GetMapping("/page2" )
+	public R page2(@ParameterObject Page page, @ParameterObject DeviceDemandPlan deviceDemandPlan) {
+		LambdaQueryWrapper<DeviceDemandPlan> wrapper = Wrappers.lambdaQuery();
+		wrapper.eq(deviceDemandPlan.getDeclareCompId() !=null,DeviceDemandPlan::getDeclareCompId,deviceDemandPlan.getDeclareCompId());
+		wrapper.eq(deviceDemandPlan.getReleasePerson() !=null,DeviceDemandPlan::getReleasePerson,deviceDemandPlan.getReleasePerson());
+		wrapper.eq(deviceDemandPlan.getYear() !=null,DeviceDemandPlan::getYear,deviceDemandPlan.getYear());
+		wrapper.eq(DeviceDemandPlan::getType2,1);
+		return R.ok(deviceDemandPlanService.page(page, wrapper));
+	}
 
 
     /**
@@ -80,9 +105,88 @@
     @PreAuthorize("@pms.hasPermission('platformx_deviceDemandPlan_add')" )
     public R save(@RequestBody DeviceDemandPlan deviceDemandPlan) {
 		deviceDemandPlan.setNumber(maxSizeService.nextNo(MaxSizeContant.PLAN_NUM));
+		deviceDemandPlan.setType2(0);
         return R.ok(deviceDemandPlanService.save(deviceDemandPlan));
     }
 
+	@Operation(summary = "鍚堝苟璁″垝鎻愪氦" , description = "鍚堝苟璁″垝鎻愪氦" )
+	@GetMapping("/mergePlan" )
+	public R mergePlan(String ids) {
+		List<DeviceDemandSub> subs = new ArrayList<>();
+		DeviceDemandPlan plan = new DeviceDemandPlan();
+		deviceDemandPlanService.save(plan);
+		Double aa = 0d;
+		String name = SecurityUtils.getUser().getName();
+		if(StringUtils.isNotBlank(ids)){
+			String[] split = ids.split(",");
+			for (String s : split) {
+				long l = Long.parseLong(s);
+				DeviceDemandPlan byId = deviceDemandPlanService.getById(l);
+				byId.setPlanId(plan.getId());
+				byId.setSendDate(new Date());
+				deviceDemandPlanService.updateById(byId);
+				plan.setYear(byId.getYear());
+				plan.setType(byId.getType());
+				aa= NumUtils.addDoubles(aa,byId.getAmount());
+				//鍚堝苟瀛愰」
+				List<DeviceDemandSub> byPlanId = deviceDemandSubService.getByPlanId(l);
+				subs.addAll(byPlanId);
+			}
+		}
+		plan.setAmount(aa);
+		plan.setReleasePerson(name);
+		plan.setStatus(3);
+		plan.setType2(1);
+		if(subs.size()>0){
+			deviceDemandPlanService.updateById(plan);
+			return R.ok("鎻愪氦鎴愬姛");
+		}else {
+			return R.failed("璇烽�夋嫨璁″垝鎻愪氦");
+		}
+	}
+
+	@Operation(summary = "鏌ョ湅瀛愰」璇︽儏" , description = "鏌ョ湅瀛愰」璇︽儏" )
+	@GetMapping("/getByMergePlanId/{id}" )
+	public R getByMergePlanId(@PathVariable("id" ) Long id) {
+		List<DeviceDemandSub> subs = new ArrayList<>();
+		QueryWrapper<DeviceDemandPlan> wrapper = new QueryWrapper<>();
+		wrapper.lambda()
+				.eq(DeviceDemandPlan::getPlanId,id);
+		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<Map<String,Object>> resultList = new ArrayList<>();
+		for (Map.Entry<Integer, List<DeviceDemandSub>> integerListEntry : subs.stream().collect(Collectors.groupingBy(item -> item.getMonth())).entrySet()) {
+			Integer month = integerListEntry.getKey();
+			List<Map<String,Object>> mapList = new ArrayList<>();
+			for (Map.Entry<Long, List<DeviceDemandSub>> entry : integerListEntry.getValue().stream().collect(Collectors.groupingBy(item -> item.getDeviceId())).entrySet()) {
+				Long key = entry.getKey();
+				int size = entry.getValue().size();
+				Device device = deviceService.getById(key);
+				Map<String,Object> map = new HashMap<>();
+				map.put("deviceNumber",device.getNumber());
+				map.put("name",device.getName());
+				map.put("count",size);
+				map.put("manu",device.getManu());
+				map.put("beforeDate",device.getBeforeDate());
+				map.put("depreciation",device.getDepreciation());
+				map.put("remindDate",device.getRemindDate());
+				mapList.add(map);
+			}
+			Map<String,Object> map = new HashMap<>();
+			map.put("month",month);
+			map.put("deviceList",mapList);
+			resultList.add(map);
+
+		}
+		return R.ok(resultList);
+
+	}
+
     /**
      * 淇敼璁惧闇�姹傝鍒掍富琛�
      * @param deviceDemandPlan 璁惧闇�姹傝鍒掍富琛�

--
Gitblit v1.9.1