From f9b8ae5dbbeb4d2581be06aa847072e75f765458 Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Tue, 16 Dec 2025 19:10:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E7=AE=A1=E7=90=86=E5=A4=A7?= =?UTF-8?q?=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProgressBigScreenController.java | 18 ++- .../progress/MaterialProgressDetailVo.java | 68 +++++++++++ .../service/ProgressBigScreenService.java | 29 +++++ .../impl/ProgressBigScreenServiceImpl.java | 93 ++++++++++++++- .../impl/BusPurchaseDocServiceImpl.java | 15 ++- .../dromara/common/utils/BigDecimalUtil.java | 4 +- .../service/BigScreenWebSocketServer.java | 109 ++++++++++++------ 7 files changed, 289 insertions(+), 47 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/progress/MaterialProgressDetailVo.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProgressBigScreenController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProgressBigScreenController.java index caf962be..4c4b5600 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProgressBigScreenController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/ProgressBigScreenController.java @@ -6,11 +6,11 @@ import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.bigscreen.domain.dto.ProjectImageProgressDetailReq; import org.dromara.bigscreen.domain.progress.DesignProgressVo; +import org.dromara.bigscreen.domain.progress.MaterialProgressDetailVo; import org.dromara.bigscreen.domain.progress.MilestoneProgressVo; import org.dromara.bigscreen.domain.progress.ProjectTotalProgressVo; import org.dromara.bigscreen.domain.vo.ProjectImageProgressDetailVo; import org.dromara.bigscreen.service.ProgressBigScreenService; -import org.dromara.bigscreen.service.ProjectBigScreenService; import org.dromara.common.core.domain.R; import org.dromara.common.web.core.BaseController; import org.springframework.validation.annotation.Validated; @@ -37,9 +37,6 @@ public class ProgressBigScreenController extends BaseController { @Resource private ProgressBigScreenService progressBigScreenService; - @Resource - private ProjectBigScreenService projectBigScreenService; - /** * 获取项目总进度 */ @@ -71,7 +68,16 @@ public class ProgressBigScreenController extends BaseController { * 获取施工进度详情 */ @GetMapping("/constructionProgress/detail") - public R> getProjectImageProgressDetail(@Validated ProjectImageProgressDetailReq req) { - return R.ok(projectBigScreenService.getProjectImageProgressDetail(req)); + public R> getProjectTotalProgressDetail(@Validated ProjectImageProgressDetailReq req) { + return R.ok(progressBigScreenService.getProjectTotalProgressDetail(req)); + } + + /** + * 获取材料进度详情 + */ + @GetMapping("/materialProgress/detail/{projectId}") + public R> getMaterialProgressDetail(@NotNull(message = "项目主键不能为空") + @PathVariable Long projectId) { + return R.ok(progressBigScreenService.getMaterialProgressDetail(projectId)); } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/progress/MaterialProgressDetailVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/progress/MaterialProgressDetailVo.java new file mode 100644 index 00000000..a643f4fb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/domain/progress/MaterialProgressDetailVo.java @@ -0,0 +1,68 @@ +package org.dromara.bigscreen.domain.progress; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * @author lilemy + * @date 2025-12-16 17:03 + */ +@Data +public class MaterialProgressDetailVo implements Serializable { + + @Serial + private static final long serialVersionUID = -4499381537680421083L; + + /** + * 主键id + */ + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 数量 + */ + private BigDecimal quantity; + + /** + * 验收 + */ + private BigDecimal acceptedQuantity; + + /** + * 缺件 + */ + private BigDecimal shortageQuantity; + + // region 接收单数据 + + /** + * 合同名称 + */ + private String contractName; + + /** + * 订货单位 + */ + private String orderingUnit; + + /** + * 供货单位 + */ + private String supplierUnit; + + /** + * 到货时间 + */ + private LocalDate arrivalDate; + + // endregion +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/ProgressBigScreenService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/ProgressBigScreenService.java index e2f749f9..5d11397b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/ProgressBigScreenService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/ProgressBigScreenService.java @@ -1,8 +1,13 @@ package org.dromara.bigscreen.service; +import org.dromara.bigscreen.domain.dto.ProjectImageProgressDetailReq; import org.dromara.bigscreen.domain.progress.DesignProgressVo; +import org.dromara.bigscreen.domain.progress.MaterialProgressDetailVo; import org.dromara.bigscreen.domain.progress.MilestoneProgressVo; import org.dromara.bigscreen.domain.progress.ProjectTotalProgressVo; +import org.dromara.bigscreen.domain.vo.ProjectImageProgressDetailVo; +import org.dromara.bigscreen.domain.vo.wzxqysjdhdbVo; +import org.springframework.validation.annotation.Validated; import java.util.List; @@ -20,6 +25,14 @@ public interface ProgressBigScreenService { */ ProjectTotalProgressVo getProjectTotalProgress(Long projectId); + /** + * 获取施工进度详情 + * + * @param req 请求参数 + * @return 施工进度详情 + */ + List getProjectTotalProgressDetail(@Validated ProjectImageProgressDetailReq req); + /** * 获取里程碑进度 * @@ -35,4 +48,20 @@ public interface ProgressBigScreenService { * @return 设计进度 */ DesignProgressVo getDesignProgress(Long projectId); + + /** + * 获取物料进度详情 + * + * @param projectId 项目 id + * @return 物料进度详情 + */ + List getMaterialProgressDetail(Long projectId); + + /** + * 获取物资进度 + * + * @param projectId 项目 id + * @return 物资进度 + */ + List getMaterialProgress(Long projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProgressBigScreenServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProgressBigScreenServiceImpl.java index f453d5b9..ab3ee2fd 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProgressBigScreenServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/service/impl/ProgressBigScreenServiceImpl.java @@ -3,14 +3,24 @@ package org.dromara.bigscreen.service.impl; import cn.hutool.core.collection.CollUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.dromara.bigscreen.domain.dto.ProjectImageProgressDetailReq; import org.dromara.bigscreen.domain.progress.*; +import org.dromara.bigscreen.domain.vo.ProjectImageProgressDetailVo; +import org.dromara.bigscreen.domain.vo.wzxqysjdhdbVo; import org.dromara.bigscreen.service.ProgressBigScreenService; +import org.dromara.bigscreen.service.ProjectBigScreenService; +import org.dromara.cailiaoshebei.service.IBusMrpBaseService; import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.utils.BigDecimalUtil; import org.dromara.design.domain.DesVolumeCatalog; import org.dromara.design.domain.DesVolumeFile; import org.dromara.design.service.IDesVolumeCatalogService; import org.dromara.design.service.IDesVolumeFileService; +import org.dromara.materials.domain.MatMaterialReceive; +import org.dromara.materials.domain.MatMaterialReceiveItem; +import org.dromara.materials.service.IMatMaterialReceiveItemService; +import org.dromara.materials.service.IMatMaterialReceiveService; import org.dromara.progress.constant.PgsProgressCategoryConstant; import org.dromara.progress.domain.PgsConstructionSchedulePlan; import org.dromara.progress.domain.PgsProgressCategory; @@ -28,6 +38,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -44,6 +55,9 @@ import java.util.stream.Collectors; @Service public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { + @Resource + private ProjectBigScreenService projectBigScreenService; + @Resource private IBusProjectService projectService; @@ -65,6 +79,15 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { @Resource private ISysDictDataService dictDataService; + @Resource + private IMatMaterialReceiveService materialReceiveService; + + @Resource + private IMatMaterialReceiveItemService materialReceiveItemService; + + @Resource + private IBusMrpBaseService mrpBaseService; + /** * 获取项目总进度 * @@ -116,8 +139,8 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { } // 获取整体完成情况 PgsProgressCategoryValueTotalVo valueTotal = progressCategoryService.getValueTotal(children, true); - vo.setTotalCompletionAmount(valueTotal.getTotalValue()); - vo.setCurrentCompletionAmount(valueTotal.getCurrentValue()); + vo.setTotalCompletionAmount(valueTotal.getTotalValue().divide(BigDecimal.valueOf(10000), 0, RoundingMode.HALF_UP)); + vo.setCurrentCompletionAmount(valueTotal.getCurrentValue().divide(BigDecimal.valueOf(10000), 0, RoundingMode.HALF_UP)); // 获取详情 Map> nameMap = topList.stream() .collect(Collectors.groupingBy(PgsProgressCategory::getName)); @@ -144,6 +167,17 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { return vo; } + /** + * 获取施工进度详情 + * + * @param req 请求参数 + * @return 施工进度详情 + */ + @Override + public List getProjectTotalProgressDetail(ProjectImageProgressDetailReq req) { + return projectBigScreenService.getProjectImageProgressDetail(req); + } + /** * 获取里程碑进度 * @@ -284,6 +318,7 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { } } } + vo.setTotalDesign((long) fileList.size()); vo.setReviewedDesign(reviewedDesign); vo.setReviewedDesignTrend(reviewedDesignThisM.compareTo(reviewedDesignLastM) >= 0); vo.setReviewedDesignRate(BigDecimalUtil.toLoopPercentage(reviewedDesignThisM, reviewedDesignLastM)); @@ -292,4 +327,58 @@ public class ProgressBigScreenServiceImpl implements ProgressBigScreenService { vo.setPendingDesignReviewRate(BigDecimalUtil.toLoopPercentage(pendingReviewDesignThisD, pendingReviewDesignLastD)); return vo; } + + /** + * 获取物料进度详情 + * + * @param projectId 项目 id + * @return 物料进度详情 + */ + @Override + public List getMaterialProgressDetail(Long projectId) { + List receiveList = materialReceiveService.lambdaQuery() + .eq(MatMaterialReceive::getProjectId, projectId) + .list(); + if (CollUtil.isEmpty(receiveList)) { + return List.of(); + } + List ids = receiveList.stream().map(MatMaterialReceive::getId).toList(); + List itemList = materialReceiveItemService.lambdaQuery() + .in(MatMaterialReceiveItem::getReceiveId, ids) + .list(); + if (CollUtil.isEmpty(itemList)) { + return List.of(); + } + Map receiveMap = receiveList.stream() + .collect(Collectors.toMap(MatMaterialReceive::getId, receive -> receive)); + return itemList.stream().map(item -> { + Long receiveId = item.getReceiveId(); + MatMaterialReceive receive = receiveMap.get(receiveId); + if (receive == null) { + return null; + } + MaterialProgressDetailVo vo = new MaterialProgressDetailVo(); + vo.setId(item.getId()); + vo.setName(item.getName()); + vo.setQuantity(item.getQuantity()); + vo.setAcceptedQuantity(item.getAcceptedQuantity()); + vo.setShortageQuantity(item.getShortageQuantity()); + vo.setContractName(receive.getContractName()); + vo.setOrderingUnit(receive.getOrderingUnit()); + vo.setSupplierUnit(receive.getSupplierUnit()); + vo.setArrivalDate(DateUtils.toLocalDate(receive.getCreateTime())); + return vo; + }).filter(Objects::nonNull).toList(); + } + + /** + * 获取物资进度 + * + * @param projectId 项目 id + * @return 物资进度 + */ + @Override + public List getMaterialProgress(Long projectId) { + return mrpBaseService.wzxqysjdhdb(projectId); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusPurchaseDocServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusPurchaseDocServiceImpl.java index 8d347e46..9fde9ed4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusPurchaseDocServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusPurchaseDocServiceImpl.java @@ -191,7 +191,7 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl 0; if (flag) { bo.setId(add.getId()); @@ -212,7 +212,7 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl { planids.add(busMaterialbatchdemandplan.getId()); }); - if (!ids1.isEmpty()){ + if (!ids1.isEmpty()) { List list1 = planDocAssociationService.list(Wrappers.lambdaQuery(BusPlanDocAssociation.class) .in(BusPlanDocAssociation::getDocId, ids1)); //计算材料已存在的数量 BigDecimal cltotal = list1.stream() .filter(Objects::nonNull) - .filter(item->planids.contains(item.getPlanId())) + .filter(item -> planids.contains(item.getPlanId())) .map(BusPlanDocAssociation::getDemandQuantity) .reduce(BigDecimal.ZERO, BigDecimal::add); if (cltotal.add(association.getDemandQuantity()).compareTo(quantity) > 0) { @@ -411,7 +411,12 @@ public class BusPurchaseDocServiceImpl extends ServiceImpl map = planDocAssociationList.stream().collect(Collectors.toMap(BusPlanDocAssociation::getPlanId, BusPlanDocAssociation::getDemandQuantity)); + Map map = planDocAssociationList.stream() + .peek(item -> { + if (item.getDemandQuantity() == null) { + item.setDemandQuantity(BigDecimal.ZERO); + } + }).collect(Collectors.toMap(BusPlanDocAssociation::getPlanId, BusPlanDocAssociation::getDemandQuantity)); items = materialbatchdemandplanService.listByIds(map.keySet()); items.forEach(item -> item.setDemandQuantity(map.get(item.getId()))); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/BigDecimalUtil.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/BigDecimalUtil.java index 228d03c3..1768946f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/BigDecimalUtil.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/BigDecimalUtil.java @@ -36,8 +36,10 @@ public class BigDecimalUtil { if (thisNum == null || lastNum == null) { return BigDecimal.valueOf(0.00); } - if (lastNum.compareTo(BigDecimal.ZERO) == 0) { + if (lastNum.compareTo(BigDecimal.ZERO) == 0 && thisNum.compareTo(BigDecimal.ZERO) > 0) { return BigDecimal.valueOf(100.00); + } else if (lastNum.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.valueOf(0.00); } return thisNum.subtract(lastNum) .multiply(new BigDecimal("100")) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/websocket/service/BigScreenWebSocketServer.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/websocket/service/BigScreenWebSocketServer.java index 4bbbbd20..e8be939f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/websocket/service/BigScreenWebSocketServer.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/websocket/service/BigScreenWebSocketServer.java @@ -5,9 +5,13 @@ import jakarta.websocket.*; import jakarta.websocket.server.ServerEndpoint; import lombok.extern.slf4j.Slf4j; import org.dromara.bigscreen.domain.bo.DpznglBo; +import org.dromara.bigscreen.domain.progress.DesignProgressVo; +import org.dromara.bigscreen.domain.progress.MilestoneProgressVo; +import org.dromara.bigscreen.domain.progress.ProjectTotalProgressVo; import org.dromara.bigscreen.domain.vo.*; import org.dromara.bigscreen.service.DpzaglService; import org.dromara.bigscreen.service.IMaterialsManagementService; +import org.dromara.bigscreen.service.ProgressBigScreenService; import org.dromara.cailiaoshebei.domain.vo.BusPurchaseDocVo; import org.dromara.cailiaoshebei.service.IBusMrpBaseService; import org.dromara.cailiaoshebei.service.IBusPurchaseDocService; @@ -66,7 +70,7 @@ public class BigScreenWebSocketServer { SUBSCRIPTION_SESSIONS.put(currentSubscriptionId, session); SESSION_TO_SUBSCRIPTION.put(session.getId(), currentSubscriptionId); log.info("📌 客户端订阅成功!订阅ID:{},会话ID:{},当前订阅数:{}", - currentSubscriptionId, session.getId(), SUBSCRIPTION_SESSIONS.size()); + currentSubscriptionId, session.getId(), SUBSCRIPTION_SESSIONS.size()); } else { log.warn("📌 客户端连接未携带订阅ID!会话ID:{}", session.getId()); } @@ -91,69 +95,71 @@ public class BigScreenWebSocketServer { List> maps = new ArrayList<>(); - switch ((int) type){ + switch ((int) type) { case 1: break; case 2: Long timeType = Long.parseLong(params.get("timeType").getFirst()); //判断参数 - if (timeType != 1L && timeType != 2L && timeType != 3L){ + if (timeType != 1L && timeType != 2L && timeType != 3L) { throw new RuntimeException("时间类型参数错误"); } //先获取左边坐标得到map Map infoData = busAttendanceService.getRyglOnlineUserInfoData(projectId); //获取右边数据 - busAttendanceService.getAttendanceInfo(projectId,timeType,infoData); + busAttendanceService.getAttendanceInfo(projectId, timeType, infoData); //返回数据 maps.add(infoData); break; case 3: - if (dpzaglService != null){ - saveDateDpzagl(dpzaglService,params,projectId,maps); + if (dpzaglService != null) { + saveDateDpzagl(dpzaglService, params, projectId, maps); } break; case 4: + // 进度管理大屏 + getProgressBigScreenData(maps, projectId); break; case 5: - if (materialsService != null){ + if (materialsService != null) { InventoryStructureAnalysisVo vo = managementService.inventoryStructureAnalysis(projectId); - if (vo != null){ + if (vo != null) { Map map = new HashMap<>(); - map.put("type","inventoryStructureAnalysis"); + map.put("type", "inventoryStructureAnalysis"); map.put("data", JSONUtil.toJsonStr(vo)); maps.add(map); } } - if (purchaseDocService != null){ + if (purchaseDocService != null) { List purchaseDocVos = purchaseDocService.purchaseNote(projectId); - if (purchaseDocVos != null && !purchaseDocVos.isEmpty()){ + if (purchaseDocVos != null && !purchaseDocVos.isEmpty()) { Map map = new HashMap<>(); - map.put("type","purchaseNote"); + map.put("type", "purchaseNote"); map.put("data", JSONUtil.toJsonStr(purchaseDocVos)); maps.add(map); } } - if (mrpBaseService != null){ + if (mrpBaseService != null) { List designAndArrivalComparisonVos = mrpBaseService.designAndArrivalComparison(projectId); - if (designAndArrivalComparisonVos != null && !designAndArrivalComparisonVos.isEmpty()){ + if (designAndArrivalComparisonVos != null && !designAndArrivalComparisonVos.isEmpty()) { Map map = new HashMap<>(); - map.put("type","designAndArrivalComparison"); + map.put("type", "designAndArrivalComparison"); map.put("data", JSONUtil.toJsonStr(designAndArrivalComparisonVos)); maps.add(map); } List wzxqysjdhdbVos = mrpBaseService.wzxqysjdhdb(projectId); - if (wzxqysjdhdbVos != null && !wzxqysjdhdbVos.isEmpty()){ + if (wzxqysjdhdbVos != null && !wzxqysjdhdbVos.isEmpty()) { Map map = new HashMap<>(); - map.put("type","wzxqysjdhdb"); + map.put("type", "wzxqysjdhdb"); map.put("data", JSONUtil.toJsonStr(wzxqysjdhdbVos)); maps.add(map); } } - if (materialsService != null){ + if (materialsService != null) { List useDetailVos = materialsService.listUseDetail(projectId); - if (useDetailVos != null && !useDetailVos.isEmpty()){ + if (useDetailVos != null && !useDetailVos.isEmpty()) { Map map = new HashMap<>(); - map.put("type","listUseDetail"); + map.put("type", "listUseDetail"); map.put("data", JSONUtil.toJsonStr(useDetailVos)); maps.add(map); } @@ -217,8 +223,8 @@ public class BigScreenWebSocketServer { log.info("🔌 客户端订阅关系已清除!订阅ID:{},会话ID:{}", subscriptionId, session.getId()); } log.info("🔌 客户端断开连接!会话ID:{},原因:{},当前在线数:{},当前订阅数:{}", - session.getId(), reason.getReasonPhrase(), - ONLINE_SESSIONS.size(), SUBSCRIPTION_SESSIONS.size()); + session.getId(), reason.getReasonPhrase(), + ONLINE_SESSIONS.size(), SUBSCRIPTION_SESSIONS.size()); } /** @@ -234,8 +240,9 @@ public class BigScreenWebSocketServer { /** * 向指定订阅ID的客户端发送消息 + * * @param subscriptionId 订阅ID - * @param message 消息内容 + * @param message 消息内容 * @return 是否发送成功 */ public static boolean sendToSubscription(String subscriptionId, String message) { @@ -262,6 +269,7 @@ public class BigScreenWebSocketServer { /** * 向所有订阅客户端广播消息 + * * @param message 消息内容 */ public static void broadcastToAllSubscriptions(String message) { @@ -310,39 +318,74 @@ public class BigScreenWebSocketServer { } - private void saveDateDpzagl(DpzaglService dpzaglService, Map> params,Long projectId,List> maps) { + private void saveDateDpzagl(DpzaglService dpzaglService, Map> params, Long projectId, List> maps) { DpznglBo dpznglBo = new DpznglBo(); dpznglBo.setProjectId(projectId); // 查询大屏-质安管理-安全员分布情况 List dpznglAqyVos = dpzaglService.listByAqy(dpznglBo); - if (dpznglAqyVos != null && dpznglAqyVos.size() > 0){ + if (dpznglAqyVos != null && dpznglAqyVos.size() > 0) { Map map = new HashMap<>(); - map.put("type","aqy"); + map.put("type", "aqy"); map.put("data", JSONUtil.toJsonStr(dpznglAqyVos)); maps.add(map); } - // 查询大屏-质安管理-站班会,巡检工单,整改情况 + // 查询大屏-质安管理-站班会,巡检工单,整改情况 DpznglVo dpznglVo = dpzaglService.queryList(dpznglBo); - if (dpznglVo != null){ + if (dpznglVo != null) { Map map = new HashMap<>(); - map.put("type","zagl"); + map.put("type", "zagl"); map.put("data", JSONUtil.toJsonStr(dpznglVo)); maps.add(map); } - //查询大屏-质安管理-站班会 + //查询大屏-质安管理-站班会 DpznglVo byzbh = dpzaglService.listByzbh(dpznglBo); - if (byzbh != null){ + if (byzbh != null) { Map map = new HashMap<>(); - map.put("type","zbh"); + map.put("type", "zbh"); map.put("data", JSONUtil.toJsonStr(byzbh)); maps.add(map); } } - + /** + * 获取进度大屏数据 + */ + private static void getProgressBigScreenData(List> maps, Long projectId) { + ProgressBigScreenService service = SpringUtils.getBean(ProgressBigScreenService.class); + if (service != null) { + DesignProgressVo designProgress = service.getDesignProgress(projectId); + if (designProgress != null) { + Map map = new HashMap<>(); + map.put("type", "progressDesignProgress"); + map.put("data", JSONUtil.toJsonStr(designProgress)); + maps.add(map); + } + ProjectTotalProgressVo projectTotalProgress = service.getProjectTotalProgress(projectId); + if (projectTotalProgress != null) { + Map map = new HashMap<>(); + map.put("type", "progressProjectTotalProgress"); + map.put("data", JSONUtil.toJsonStr(projectTotalProgress)); + maps.add(map); + } + List milestoneProgress = service.getMilestoneProgress(projectId); + if (milestoneProgress != null) { + Map map = new HashMap<>(); + map.put("type", "progressMilestoneProgress"); + map.put("data", JSONUtil.toJsonStr(milestoneProgress)); + maps.add(map); + } + List materialProgress = service.getMaterialProgress(projectId); + if (materialProgress != null) { + Map map = new HashMap<>(); + map.put("type", "progressMaterialProgress"); + map.put("data", JSONUtil.toJsonStr(materialProgress)); + maps.add(map); + } + } + } }