From 9614d17a3799dea461f27e4f2829440afac2ee5b Mon Sep 17 00:00:00 2001 From: z Date: Mon, 2 Feb 2026 20:19:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=89=80=E5=B1=9E=E8=A1=8C?= =?UTF-8?q?=E4=B8=9A=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/customer/vo/CustomerRespVO.java | 2 +- .../admin/screen/ScreenController.java | 22 ++++++ .../projectorder/ProjectOrderDO.java | 7 ++ .../projectorder/ProjectOrderSubMapper.java | 42 ++++++++++- .../service/plansub/PlanSubServiceImpl.java | 30 ++++---- .../projectorder/ProjectOrderServiceImpl.java | 1 + .../heli/service/screen/ScreenService.java | 6 ++ .../service/screen/ScreenServiceImpl.java | 75 +++++++++++++++++++ .../src/views/heli/customer/index.vue | 6 +- mes.iml | 2 +- 10 files changed, 172 insertions(+), 21 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/customer/vo/CustomerRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/customer/vo/CustomerRespVO.java index 1cb44f9d..4211cbe2 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/customer/vo/CustomerRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/customer/vo/CustomerRespVO.java @@ -37,7 +37,7 @@ public class CustomerRespVO { @Schema(description = "所属行业") @ExcelProperty("所属行业") - private String industry; + private Integer industry; @Schema(description = "客户级别.字典", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("客户级别.字典") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/screen/ScreenController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/screen/ScreenController.java index 7c97a44e..244cf13c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/screen/ScreenController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/screen/ScreenController.java @@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; +import java.util.Map; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -111,5 +112,26 @@ public class ScreenController { ExcelUtils.write(response, "大屏数据.xls", "数据", ScreenRespVO.class, BeanUtils.toBean(list, ScreenRespVO.class)); } + @GetMapping("/searchUnfinished") + @Operation(summary = "获得未完成设计以及为发货的子项目数量") + @PermitAll + @OperateLog(enable = false) + public CommonResult> searchUnfinished() { + return success(screenService.searchUnfinished()); + } + @GetMapping("/searchOrderInformation") + @Operation(summary = "获得按月份的订单数量") + @PermitAll + @OperateLog(enable = false) + public CommonResult>> searchOrderInformation() { + return success(screenService.searchOrderInformation()); + } + @GetMapping("/searchOrderByYear") + @Operation(summary = "获得按年的订单数量") + @PermitAll + @OperateLog(enable = false) + public CommonResult> searchOrderByYear() { + return success(screenService.searchOrderByYear()); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java index 955f317c..ecc8538a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/projectorder/ProjectOrderDO.java @@ -299,6 +299,13 @@ public class ProjectOrderDO extends BaseDO { private BigDecimal waixeiCost; @TableField(exist = false) private BigDecimal sumCost; + + @TableField(exist = false) + private String month; + @TableField(exist = false) + private Integer blackMold; + @TableField(exist = false) + private Integer coloredMolds; /** * 变更的字段列表 * */ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java index 473c02cf..aa86f506 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/projectorder/ProjectOrderSubMapper.java @@ -8,19 +8,20 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; +import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignMapper; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.ProjectOrderStatusEnum; import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import org.apache.ibatis.annotations.Delete; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.*; import org.springframework.util.StringUtils; import java.util.List; +import java.util.Map; /** * 项目订单子项目 Mapper @@ -151,4 +152,39 @@ public interface ProjectOrderSubMapper extends BaseMapperX { } @Delete("delete from project_sale_order_sub where project_order_id = #{id}") void delByProjectOrderId(@Param("id") Long id); +@Select("SELECT COUNT(sub.id) \n" + + "FROM project_sale_order_sub sub\n" + + "WHERE sub.id NOT IN (\n" + + " SELECT project_sub_id\n" + + " FROM pro_process_design\n" + + " WHERE process_design_type IN ('BLUEPRINT_3D', 'BLUEPRINT_2D', 'BLUEPRINT_WORKBLANK') and tenant_id='2' and deleted=0\n" + + " GROUP BY project_sub_id\n" + + " HAVING \n" + + " COUNT(*) = 3 \n" + + " AND SUM(CASE WHEN is_over_process = 1 THEN 1 ELSE 0 END) = 3 \n" + + ") and sub.create_time >='2025-06-01' and sub.tenant_id='2' and sub.deleted=0") + Long searchUnfinished(); +@Select("SELECT COUNT(*)\n" + + "FROM project_sale_order_sub sub\n" + + "LEFT JOIN project_deliver_order_sub deliver ON sub.id = deliver.sale_order_sub_id and deliver.tenant_id='2' and deliver.deleted=0 \n" + + "WHERE deliver.sale_order_sub_id IS NULL and sub.tenant_id='2' and sub.deleted=0 ") + Long searchNotDispatched(); +@Select("SELECT \n" + + " MONTH(create_time) AS month,\n" + + " SUM(CASE WHEN business_line = 2 THEN 1 ELSE 0 END) AS blackMold,\n" + + " SUM(CASE WHEN business_line =1 THEN 1 ELSE 0 END) AS coloredMolds\n" + + "FROM project_sale_order\n" + + "WHERE YEAR(create_time) = YEAR(CURDATE())\n" + + "GROUP BY MONTH(create_time)\n" + + "ORDER BY month;") + List searchOrderInformation(); + + @Select("SELECT \n" + + " YEAR(create_time) AS year,\n" + + " COUNT(id) as amount \n" + + "FROM project_sale_order\n" + + "WHERE YEAR(create_time) >= YEAR(CURDATE()) - 4 and tenant_id=2 and deleted=0\n" + + "GROUP BY YEAR(create_time)\n" + + "ORDER BY year;") + List> searchOrderByYear(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plansub/PlanSubServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plansub/PlanSubServiceImpl.java index 24c950cd..8ceb592f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plansub/PlanSubServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/plansub/PlanSubServiceImpl.java @@ -197,13 +197,13 @@ public class PlanSubServiceImpl implements PlanSubService { // 将每个工艺任务拆分成独立的任务项,方便统一检查 List allNewItems = new ArrayList<>(); for (PlanSubSaveReqVO task : processTasks) { - if (!task.isHasSaveInBlankDetail() && task.getBlankOwner() != null && task.getStartBlankDate() != null && task.getBlankDate() != null) { + if (!task.isHasSaveInBlankDetail() && ObjectUtil.isNotEmpty(task.getBlankOwner()) && ObjectUtil.isNotEmpty(task.getStartBlankDate()) && ObjectUtil.isNotEmpty(task.getBlankDate())) { allNewItems.add(new TaskItem(Long.valueOf(task.getBlankOwner()), task.getStartBlankDate(), task.getBlankDate(), "毛坯",task.getProjectNameSim())); } - if (!task.isHasSaveIn2DDetail() && task.getTwoDimOwner() != null && task.getStartTwoDimDate() != null && task.getTwoDimDate() != null) { + if (!task.isHasSaveIn2DDetail() && ObjectUtil.isNotEmpty(task.getTwoDimOwner()) && ObjectUtil.isNotEmpty(task.getStartTwoDimDate()) && ObjectUtil.isNotEmpty(task.getTwoDimDate())) { allNewItems.add(new TaskItem(Long.valueOf(task.getTwoDimOwner()), task.getStartTwoDimDate(), task.getTwoDimDate(), "2D",task.getProjectSubShortName())); } - if (!task.isHasSaveIn3DDetail() && task.getThreeDimOwner() != null && task.getStartThreeDimDate() != null && task.getThreeDimDate() != null) { + if (!task.isHasSaveIn3DDetail() &&ObjectUtil.isNotEmpty( task.getThreeDimOwner()) &&ObjectUtil.isNotEmpty(task.getStartThreeDimDate()) && ObjectUtil.isNotEmpty(task.getThreeDimDate())) { allNewItems.add(new TaskItem(Long.valueOf(task.getThreeDimOwner()), task.getStartThreeDimDate(), task.getThreeDimDate(), "3D",task.getProjectSubShortName())); } } @@ -230,16 +230,16 @@ public class PlanSubServiceImpl implements PlanSubService { private void checkExternalConflicts(List processTasks, Map> tasksByOwner) { for (PlanSubSaveReqVO newTask : processTasks) { // 检查毛坯任务 - if (!newTask.isHasSaveInBlankDetail() && newTask.getBlankOwner() != null){ + if (!newTask.isHasSaveInBlankDetail() && ObjectUtil.isNotEmpty(newTask.getBlankOwner())){ checkTaskAgainstExisting(newTask.getProjectNameSim(),Long.valueOf(newTask.getBlankOwner()), newTask.getStartBlankDate(), newTask.getBlankDate(), "BLUEPRINT_WORKBLANK", tasksByOwner); } // 检查2D任务 - if (!newTask.isHasSaveIn2DDetail() && newTask.getTwoDimOwner() != null){ + if (!newTask.isHasSaveIn2DDetail() && ObjectUtil.isNotEmpty(newTask.getTwoDimOwner())){ checkTaskAgainstExisting(newTask.getProjectNameSim(),Long.valueOf(newTask.getTwoDimOwner()), newTask.getStartTwoDimDate(), newTask.getTwoDimDate(), "BLUEPRINT_2D", tasksByOwner); } // 检查3D任务 - if (!newTask.isHasSaveIn3DDetail() && newTask.getThreeDimOwner() != null){ + if (!newTask.isHasSaveIn3DDetail() && ObjectUtil.isNotEmpty(newTask.getThreeDimOwner())){ checkTaskAgainstExisting(newTask.getProjectNameSim(),Long.valueOf(newTask.getThreeDimOwner()), newTask.getStartThreeDimDate(), newTask.getThreeDimDate(), "BLUEPRINT_3D", tasksByOwner); } @@ -250,12 +250,12 @@ public class PlanSubServiceImpl implements PlanSubService { * 辅助方法:检查单个新任务与已存在任务的冲突 */ private void checkTaskAgainstExisting(String name,Long owner, LocalDateTime start, LocalDateTime end, String taskType, Map> tasksByOwner) { - if (owner == null || start == null || end == null) { + if (ObjectUtil.isEmpty(owner) || ObjectUtil.isEmpty(start) || ObjectUtil.isEmpty(end)) { return; // 如果责任人或时间为空,则无需检查 } List existingTasksForOwner = tasksByOwner.get(owner); - if (existingTasksForOwner == null) { + if (ObjectUtil.isEmpty(existingTasksForOwner)) { return; // 如果该责任人没有已存在的任务,则无需检查 } String typeName = ""; @@ -582,7 +582,7 @@ public class PlanSubServiceImpl implements PlanSubService { } public static boolean hasOverlap(LocalDateTime start1, LocalDateTime end1, LocalDateTime start2, LocalDateTime end2) { // 处理 null 值,如果任一时间为 null,则认为该时间范围无效,不产生交集 - if (start1 == null || end1 == null || start2 == null || end2 == null) { + if (ObjectUtil.isEmpty(start1) || ObjectUtil.isEmpty(end1) || ObjectUtil.isEmpty(start2) || ObjectUtil.isEmpty(end2)) { return false; } // 核心判断逻辑 @@ -692,13 +692,13 @@ public class PlanSubServiceImpl implements PlanSubService { // 将每个工艺任务拆分成独立的任务项,方便统一检查 List allNewItems = new ArrayList<>(); for (PlanSubSaveReqVO task : list) { - if (!task.isHasSaveInBlankDetail() && task.getBlankOwner() != null && task.getStartBlankDate() != null && task.getBlankDate() != null) { + if (!task.isHasSaveInBlankDetail() && ObjectUtil.isNotEmpty(task.getBlankOwner()) && ObjectUtil.isNotEmpty(task.getStartBlankDate()) &&ObjectUtil.isNotEmpty( task.getBlankDate())) { allNewItems.add(new TaskItem(Long.valueOf(task.getBlankOwner()), task.getStartBlankDate(), task.getBlankDate(), "毛坯",task.getName())); } - if (!task.isHasSaveIn2DDetail() && task.getTwoDimOwner() != null && task.getStartTwoDimDate() != null && task.getTwoDimDate() != null) { + if (!task.isHasSaveIn2DDetail() && ObjectUtil.isNotEmpty(task.getTwoDimOwner()) &&ObjectUtil.isNotEmpty( task.getStartTwoDimDate()) && ObjectUtil.isNotEmpty(task.getTwoDimDate())) { allNewItems.add(new TaskItem(Long.valueOf(task.getTwoDimOwner()), task.getStartTwoDimDate(), task.getTwoDimDate(), "2D",task.getName())); } - if (!task.isHasSaveIn3DDetail() && task.getThreeDimOwner() != null && task.getStartThreeDimDate() != null && task.getThreeDimDate() != null) { + if (!task.isHasSaveIn3DDetail() && ObjectUtil.isNotEmpty(task.getThreeDimOwner()) && ObjectUtil.isNotEmpty(task.getStartThreeDimDate()) && ObjectUtil.isNotEmpty(task.getThreeDimDate())) { allNewItems.add(new TaskItem(Long.valueOf(task.getThreeDimOwner()), task.getStartThreeDimDate(), task.getThreeDimDate(), "3D",task.getName())); } } @@ -718,7 +718,7 @@ public class PlanSubServiceImpl implements PlanSubService { } for (PlanSubSaveReqVO newTask : list) { // 检查毛坯任务 - if (!newTask.isHasSaveInBlankDetail() && newTask.getBlankOwner() != null){ + if (!newTask.isHasSaveInBlankDetail() && ObjectUtil.isNotEmpty(newTask.getBlankOwner())){ Long owner = Long.valueOf(newTask.getBlankOwner()); // 2. 检查 list1 与 list2 之间的时间冲突 if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartBlankDate()) || ObjectUtil.isEmpty(newTask.getBlankDate())) { @@ -744,7 +744,7 @@ public class PlanSubServiceImpl implements PlanSubService { } } // 检查2D任务 - if (!newTask.isHasSaveIn2DDetail() && newTask.getTwoDimOwner() != null){ + if (!newTask.isHasSaveIn2DDetail() && ObjectUtil.isNotEmpty(newTask.getTwoDimOwner())){ Long owner = Long.valueOf(newTask.getTwoDimOwner()); // 2. 检查 list1 与 list2 之间的时间冲突 if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartTwoDimDate()) || ObjectUtil.isEmpty(newTask.getTwoDimDate())) { @@ -770,7 +770,7 @@ public class PlanSubServiceImpl implements PlanSubService { } } // 检查3D任务 - if (!newTask.isHasSaveIn3DDetail() && newTask.getThreeDimOwner() != null){ + if (!newTask.isHasSaveIn3DDetail() && ObjectUtil.isNotEmpty(newTask.getThreeDimOwner())){ Long owner = Long.valueOf(newTask.getThreeDimOwner()); // 2. 检查 list1 与 list2 之间的时间冲突 if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartThreeDimDate()) || ObjectUtil.isEmpty(newTask.getThreeDimDate())) { diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java index d0d8fa8f..352b1d73 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/projectorder/ProjectOrderServiceImpl.java @@ -234,6 +234,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { lambdaQueryWrapper.in(PlanSubDetailDO::getIsOverProcess,0,2); lambdaQueryWrapper.eq(PlanSubDetailDO::getIsOverLab,"N"); lambdaQueryWrapper.orderByAsc(PlanSubDetailDO::getCreateTime); + lambdaQueryWrapper.last("limit 1"); PlanSubDetailDO planSubDetailDO = planSubDetailMapper.selectOne(lambdaQueryWrapper); if (ObjectUtil.isNotEmpty(planSubDetailDO)){ String type=""; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenService.java index 7069beaa..786e730e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenService.java @@ -7,6 +7,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.screen.ScreenDO; import javax.validation.Valid; import java.util.List; +import java.util.Map; /** * 大屏数据 Service 接口 @@ -57,4 +58,9 @@ public interface ScreenService { void updateScreenAll(List updateReqVOList); + Map searchUnfinished(); + + Map> searchOrderInformation(); + + Map searchOrderByYear(); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenServiceImpl.java index f4147da6..2f68739e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/screen/ScreenServiceImpl.java @@ -1,6 +1,7 @@ package com.chanko.yunxi.mes.module.heli.service.screen; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -39,9 +40,11 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDateTime; +import java.time.Year; import java.time.ZoneOffset; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.IntStream; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.SCREEN_NOT_EXISTS; @@ -140,6 +143,78 @@ public class ScreenServiceImpl implements ScreenService { } + @Override + public Map searchUnfinished() { + Map map = new HashMap<>(); + Long unfinished= projectOrderSubMapper.searchUnfinished(); + Long notDispatched =projectOrderSubMapper.searchNotDispatched(); + map.put("unfinished",unfinished); + map.put("notDispatched",notDispatched); + return map; + } + + @Override + public Map> searchOrderInformation() { + Map> resultMap = new LinkedHashMap<>(); + for (int i = 1; i <= 12; i++) { + String monthKey = String.valueOf(i); + // 创建内层Map并设置默认值 + Map innerMap = new HashMap<>(); + innerMap.put("blackMold", 0); + innerMap.put("coloredMolds", 0); + resultMap.put(monthKey, innerMap); + } + List projectOrderDOS = projectOrderSubMapper.searchOrderInformation(); + for (ProjectOrderDO order : projectOrderDOS) { + String month = order.getMonth(); + Map innerMap = resultMap.get(month); + if (ObjectUtil.isNotEmpty(innerMap)){ + innerMap.put("blackMold", order.getBlackMold()); + innerMap.put("coloredMolds",order.getColoredMolds()); + } + } + return resultMap; + } + + @Override + public Map searchOrderByYear() { + int currentYear = Year.now().getValue(); + + // 初始化近5年的年份 map,value 为 null + Map map = IntStream.range(currentYear - 4, currentYear + 1) + .boxed() + .collect( + TreeMap::new, + (m, year) -> m.put(String.valueOf(year), null), + Map::putAll + ); + + // 假设这个 list 是从数据库查询出来的,key 是年份,value 是订单数量 + List> list = projectOrderSubMapper.searchOrderByYear(); + Map dataMap=new HashMap<>(); + list.forEach(item->{ + dataMap.put(String.valueOf(item.get("year")),item.get("amount")); + }); + // 第一步:用 list 中的数据赋值 + for (Map.Entry entry : dataMap.entrySet()) { + String year = entry.getKey(); + Integer amount = Integer.parseInt(String.valueOf(entry.getValue())); + if (map.containsKey(year)) { + map.put(year, amount); + } + } + // 第二步:处理 map 中 value 为 null 的年份,且不是当前年份的 + for (Map.Entry entry : map.entrySet()) { + String year = entry.getKey(); + if (ObjectUtil.isEmpty(entry.getValue()) && Integer.parseInt(year) != currentYear) { +// String defaultUserName = userMapper.selectFirstUserName(); +// map.put(year, defaultUserName); + } + } + + return map; + } + @Override public void deleteScreen(Long id) { // 校验存在 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/customer/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/customer/index.vue index ffb78b2d..f58d45c5 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/customer/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/customer/index.vue @@ -75,7 +75,11 @@ - + + +