客户所属行业问题修改

This commit is contained in:
z 2026-02-02 20:19:11 +08:00
parent 324a18f830
commit 9614d17a37
10 changed files with 172 additions and 21 deletions

View File

@ -37,7 +37,7 @@ public class CustomerRespVO {
@Schema(description = "所属行业") @Schema(description = "所属行业")
@ExcelProperty("所属行业") @ExcelProperty("所属行业")
private String industry; private Integer industry;
@Schema(description = "客户级别.字典", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "客户级别.字典", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("客户级别.字典") @ExcelProperty("客户级别.字典")

View File

@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.util.List; 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.common.pojo.CommonResult.success;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; 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, ExcelUtils.write(response, "大屏数据.xls", "数据", ScreenRespVO.class,
BeanUtils.toBean(list, ScreenRespVO.class)); BeanUtils.toBean(list, ScreenRespVO.class));
} }
@GetMapping("/searchUnfinished")
@Operation(summary = "获得未完成设计以及为发货的子项目数量")
@PermitAll
@OperateLog(enable = false)
public CommonResult<Map<String,Long>> searchUnfinished() {
return success(screenService.searchUnfinished());
}
@GetMapping("/searchOrderInformation")
@Operation(summary = "获得按月份的订单数量")
@PermitAll
@OperateLog(enable = false)
public CommonResult<Map<String,Map<String, Integer>>> searchOrderInformation() {
return success(screenService.searchOrderInformation());
}
@GetMapping("/searchOrderByYear")
@Operation(summary = "获得按年的订单数量")
@PermitAll
@OperateLog(enable = false)
public CommonResult<Map<String,Integer>> searchOrderByYear() {
return success(screenService.searchOrderByYear());
}
} }

View File

@ -299,6 +299,13 @@ public class ProjectOrderDO extends BaseDO {
private BigDecimal waixeiCost; private BigDecimal waixeiCost;
@TableField(exist = false) @TableField(exist = false)
private BigDecimal sumCost; private BigDecimal sumCost;
@TableField(exist = false)
private String month;
@TableField(exist = false)
private Integer blackMold;
@TableField(exist = false)
private Integer coloredMolds;
/** /**
* 变更的字段列表 * 变更的字段列表
* */ * */

View File

@ -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.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; 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.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.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; 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.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.enums.ProjectOrderStatusEnum; import com.chanko.yunxi.mes.module.heli.enums.ProjectOrderStatusEnum;
import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum;
import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO; import com.chanko.yunxi.mes.module.infra.dal.dataobject.file.FileDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 项目订单子项目 Mapper * 项目订单子项目 Mapper
@ -151,4 +152,39 @@ public interface ProjectOrderSubMapper extends BaseMapperX<ProjectOrderSubDO> {
} }
@Delete("delete from project_sale_order_sub where project_order_id = #{id}") @Delete("delete from project_sale_order_sub where project_order_id = #{id}")
void delByProjectOrderId(@Param("id") Long 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<ProjectOrderDO> 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<Map<String, Integer>> searchOrderByYear();
} }

View File

@ -197,13 +197,13 @@ public class PlanSubServiceImpl implements PlanSubService {
// 将每个工艺任务拆分成独立的任务项方便统一检查 // 将每个工艺任务拆分成独立的任务项方便统一检查
List<TaskItem> allNewItems = new ArrayList<>(); List<TaskItem> allNewItems = new ArrayList<>();
for (PlanSubSaveReqVO task : processTasks) { 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())); 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())); 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())); 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<PlanSubSaveReqVO> processTasks, Map<Long, List<PlanSubDetailDO>> tasksByOwner) { private void checkExternalConflicts(List<PlanSubSaveReqVO> processTasks, Map<Long, List<PlanSubDetailDO>> tasksByOwner) {
for (PlanSubSaveReqVO newTask : processTasks) { 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); checkTaskAgainstExisting(newTask.getProjectNameSim(),Long.valueOf(newTask.getBlankOwner()), newTask.getStartBlankDate(), newTask.getBlankDate(), "BLUEPRINT_WORKBLANK", tasksByOwner);
} }
// 检查2D任务 // 检查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); checkTaskAgainstExisting(newTask.getProjectNameSim(),Long.valueOf(newTask.getTwoDimOwner()), newTask.getStartTwoDimDate(), newTask.getTwoDimDate(), "BLUEPRINT_2D", tasksByOwner);
} }
// 检查3D任务 // 检查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); 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<Long, List<PlanSubDetailDO>> tasksByOwner) { private void checkTaskAgainstExisting(String name,Long owner, LocalDateTime start, LocalDateTime end, String taskType, Map<Long, List<PlanSubDetailDO>> tasksByOwner) {
if (owner == null || start == null || end == null) { if (ObjectUtil.isEmpty(owner) || ObjectUtil.isEmpty(start) || ObjectUtil.isEmpty(end)) {
return; // 如果责任人或时间为空则无需检查 return; // 如果责任人或时间为空则无需检查
} }
List<PlanSubDetailDO> existingTasksForOwner = tasksByOwner.get(owner); List<PlanSubDetailDO> existingTasksForOwner = tasksByOwner.get(owner);
if (existingTasksForOwner == null) { if (ObjectUtil.isEmpty(existingTasksForOwner)) {
return; // 如果该责任人没有已存在的任务则无需检查 return; // 如果该责任人没有已存在的任务则无需检查
} }
String typeName = ""; String typeName = "";
@ -582,7 +582,7 @@ public class PlanSubServiceImpl implements PlanSubService {
} }
public static boolean hasOverlap(LocalDateTime start1, LocalDateTime end1, LocalDateTime start2, LocalDateTime end2) { public static boolean hasOverlap(LocalDateTime start1, LocalDateTime end1, LocalDateTime start2, LocalDateTime end2) {
// 处理 null 如果任一时间为 null则认为该时间范围无效不产生交集 // 处理 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; return false;
} }
// 核心判断逻辑 // 核心判断逻辑
@ -692,13 +692,13 @@ public class PlanSubServiceImpl implements PlanSubService {
// 将每个工艺任务拆分成独立的任务项方便统一检查 // 将每个工艺任务拆分成独立的任务项方便统一检查
List<TaskItem> allNewItems = new ArrayList<>(); List<TaskItem> allNewItems = new ArrayList<>();
for (PlanSubSaveReqVO task : list) { 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())); 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())); 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())); 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) { for (PlanSubSaveReqVO newTask : list) {
// 检查毛坯任务 // 检查毛坯任务
if (!newTask.isHasSaveInBlankDetail() && newTask.getBlankOwner() != null){ if (!newTask.isHasSaveInBlankDetail() && ObjectUtil.isNotEmpty(newTask.getBlankOwner())){
Long owner = Long.valueOf(newTask.getBlankOwner()); Long owner = Long.valueOf(newTask.getBlankOwner());
// 2. 检查 list1 list2 之间的时间冲突 // 2. 检查 list1 list2 之间的时间冲突
if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartBlankDate()) || ObjectUtil.isEmpty(newTask.getBlankDate())) { if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartBlankDate()) || ObjectUtil.isEmpty(newTask.getBlankDate())) {
@ -744,7 +744,7 @@ public class PlanSubServiceImpl implements PlanSubService {
} }
} }
// 检查2D任务 // 检查2D任务
if (!newTask.isHasSaveIn2DDetail() && newTask.getTwoDimOwner() != null){ if (!newTask.isHasSaveIn2DDetail() && ObjectUtil.isNotEmpty(newTask.getTwoDimOwner())){
Long owner = Long.valueOf(newTask.getTwoDimOwner()); Long owner = Long.valueOf(newTask.getTwoDimOwner());
// 2. 检查 list1 list2 之间的时间冲突 // 2. 检查 list1 list2 之间的时间冲突
if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartTwoDimDate()) || ObjectUtil.isEmpty(newTask.getTwoDimDate())) { if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartTwoDimDate()) || ObjectUtil.isEmpty(newTask.getTwoDimDate())) {
@ -770,7 +770,7 @@ public class PlanSubServiceImpl implements PlanSubService {
} }
} }
// 检查3D任务 // 检查3D任务
if (!newTask.isHasSaveIn3DDetail() && newTask.getThreeDimOwner() != null){ if (!newTask.isHasSaveIn3DDetail() && ObjectUtil.isNotEmpty(newTask.getThreeDimOwner())){
Long owner = Long.valueOf(newTask.getThreeDimOwner()); Long owner = Long.valueOf(newTask.getThreeDimOwner());
// 2. 检查 list1 list2 之间的时间冲突 // 2. 检查 list1 list2 之间的时间冲突
if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartThreeDimDate()) || ObjectUtil.isEmpty(newTask.getThreeDimDate())) { if (ObjectUtil.isEmpty(owner)|| ObjectUtil.isEmpty(newTask.getStartThreeDimDate()) || ObjectUtil.isEmpty(newTask.getThreeDimDate())) {

View File

@ -234,6 +234,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
lambdaQueryWrapper.in(PlanSubDetailDO::getIsOverProcess,0,2); lambdaQueryWrapper.in(PlanSubDetailDO::getIsOverProcess,0,2);
lambdaQueryWrapper.eq(PlanSubDetailDO::getIsOverLab,"N"); lambdaQueryWrapper.eq(PlanSubDetailDO::getIsOverLab,"N");
lambdaQueryWrapper.orderByAsc(PlanSubDetailDO::getCreateTime); lambdaQueryWrapper.orderByAsc(PlanSubDetailDO::getCreateTime);
lambdaQueryWrapper.last("limit 1");
PlanSubDetailDO planSubDetailDO = planSubDetailMapper.selectOne(lambdaQueryWrapper); PlanSubDetailDO planSubDetailDO = planSubDetailMapper.selectOne(lambdaQueryWrapper);
if (ObjectUtil.isNotEmpty(planSubDetailDO)){ if (ObjectUtil.isNotEmpty(planSubDetailDO)){
String type=""; String type="";

View File

@ -7,6 +7,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.screen.ScreenDO;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 大屏数据 Service 接口 * 大屏数据 Service 接口
@ -57,4 +58,9 @@ public interface ScreenService {
void updateScreenAll(List<ScreenSaveReqVO> updateReqVOList); void updateScreenAll(List<ScreenSaveReqVO> updateReqVOList);
Map<String, Long> searchUnfinished();
Map<String, Map<String, Integer>> searchOrderInformation();
Map<String, Integer> searchOrderByYear();
} }

View File

@ -1,6 +1,7 @@
package com.chanko.yunxi.mes.module.heli.service.screen; package com.chanko.yunxi.mes.module.heli.service.screen;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -39,9 +40,11 @@ import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.Year;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; 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.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.SCREEN_NOT_EXISTS; 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<String, Long> searchUnfinished() {
Map<String, Long> map = new HashMap<>();
Long unfinished= projectOrderSubMapper.searchUnfinished();
Long notDispatched =projectOrderSubMapper.searchNotDispatched();
map.put("unfinished",unfinished);
map.put("notDispatched",notDispatched);
return map;
}
@Override
public Map<String, Map<String, Integer>> searchOrderInformation() {
Map<String, Map<String, Integer>> resultMap = new LinkedHashMap<>();
for (int i = 1; i <= 12; i++) {
String monthKey = String.valueOf(i);
// 创建内层Map并设置默认值
Map<String, Integer> innerMap = new HashMap<>();
innerMap.put("blackMold", 0);
innerMap.put("coloredMolds", 0);
resultMap.put(monthKey, innerMap);
}
List<ProjectOrderDO> projectOrderDOS = projectOrderSubMapper.searchOrderInformation();
for (ProjectOrderDO order : projectOrderDOS) {
String month = order.getMonth();
Map<String, Integer> innerMap = resultMap.get(month);
if (ObjectUtil.isNotEmpty(innerMap)){
innerMap.put("blackMold", order.getBlackMold());
innerMap.put("coloredMolds",order.getColoredMolds());
}
}
return resultMap;
}
@Override
public Map<String, Integer> searchOrderByYear() {
int currentYear = Year.now().getValue();
// 初始化近5年的年份 mapvalue null
Map<String, Integer> 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<Map<String, Integer>> list = projectOrderSubMapper.searchOrderByYear();
Map<String, Integer> dataMap=new HashMap<>();
list.forEach(item->{
dataMap.put(String.valueOf(item.get("year")),item.get("amount"));
});
// 第一步 list 中的数据赋值
for (Map.Entry<String, Integer> 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<String, Integer> 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 @Override
public void deleteScreen(Long id) { public void deleteScreen(Long id) {
// 校验存在 // 校验存在

View File

@ -75,7 +75,11 @@
<el-table-column label="简码" align="center" min-width="120" prop="brief" /> <el-table-column label="简码" align="center" min-width="120" prop="brief" />
<el-table-column label="客户简称" align="center" min-width="120" prop="name" /> <el-table-column label="客户简称" align="center" min-width="120" prop="name" />
<el-table-column label="客户全称" align="center" min-width="120" prop="fullName" /> <el-table-column label="客户全称" align="center" min-width="120" prop="fullName" />
<el-table-column label="所属行业" align="center" min-width="120" prop="industry" /> <el-table-column label="所属行业" align="center" min-width="120" prop="industry" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_INDUSTRY" :value="scope.row.industry" />
</template>
</el-table-column>
<el-table-column label="客户级别" align="center" min-width="120" prop="level"> <el-table-column label="客户级别" align="center" min-width="120" prop="level">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_CUSTOMER_LEVEL" :value="scope.row.level" /> <dict-tag :type="DICT_TYPE.HELI_CUSTOMER_LEVEL" :value="scope.row.level" />