From 7c2c6a5e5b3d9f96aef3c67573aa62bbd9a3aa7f Mon Sep 17 00:00:00 2001 From: p-honggang.li <p-honggang.li@pcitc.com> Date: 星期四, 11 九月 2025 10:48:18 +0800 Subject: [PATCH] 修改产品类型,单位工程条偶见查询问题 --- src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java | 189 +++++++++++++++++++++++++++++------------------ 1 files changed, 117 insertions(+), 72 deletions(-) diff --git a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java index 7655559..1563f14 100644 --- a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java +++ b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java @@ -186,7 +186,7 @@ Page<OrderInfo> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize()); // 鍩轰簬workFlowType鏌ヨ娴佺▼瀹炰緥ID闆嗗悎 - List<String> workFlowIds = fetchWorkflowProcessInstanceIds( + List<Object> workFlowsList = fetchWorkflowProcessInstanceIds( queryDTO.getWorkFlowType(), queryDTO.getUserId(), queryDTO.getDepartmentId(), @@ -196,7 +196,7 @@ ); // 濡傛灉娌℃湁浠讳綍娴佺▼ID锛岀洿鎺ヨ繑鍥炵┖鍒嗛〉 - if (workFlowIds == null || workFlowIds.isEmpty()) { + if (workFlowsList == null || workFlowsList.isEmpty()) { return new PageResult<OrderDetailVO>( java.util.Collections.emptyList(), 0L, @@ -205,6 +205,18 @@ 0L ); } + + List<String> workFlowIds = workFlowsList.stream() + .filter(item -> item instanceof Map) + .map(item -> (Map<?, ?>) item) + .map(m -> m.get("processInstanceId")) + .filter(Objects::nonNull) + .map(Object::toString) + .collect(Collectors.toList()); + + Map<String,String> workFlowIdAndTaskIdMap = workFlowsList.stream() + .filter(item -> item instanceof Map) + .map(item -> (Map<?, ?>) item).collect(Collectors.toMap(m -> m.get("processInstanceId").toString(), m -> m.get("taskId").toString(),(k1,k2) -> k2)); // 鎵ц鍒嗛〉鏌ヨ IPage<OrderInfo> result = baseMapper.selectPendingApprovalOrderPage( @@ -226,6 +238,7 @@ return item; }).collect(java.util.stream.Collectors.toList()); vo.setOrderDetails(items); + vo.setTaskId(workFlowIdAndTaskIdMap.get(vo.getWorkflowId())); return vo; }).collect(java.util.stream.Collectors.toList()); @@ -240,19 +253,19 @@ } @Override - public PageResult<OrderInfo> getPendingApprovalOrderPageWithProductConditions(OrderQueryDTO queryDTO) { + public PageResult<OrderDetailVO> getPendingApprovalOrderPageWithProductConditions(OrderQueryDTO queryDTO) { // 鏍规嵁浜у搧鏉′欢鏌ヨ浜у搧ID鍒楄〃 List<String> productIds = null; - if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) || + if (StringUtils.hasText(queryDTO.getIndustryId()) || queryDTO.getUnitProjectId() != null || StringUtils.hasText(queryDTO.getProductTypeId()) || StringUtils.hasText(queryDTO.getProductSubTypeId())) { productIds = reportResultSubmissionMapper.selectProductIdsByConditions( - queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), + queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), queryDTO.getImportantDistrictId(), queryDTO.getProductTypeId(), queryDTO.getProductSubTypeId() ); // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勪骇鍝侊紝鐩存帴杩斿洖绌虹粨鏋� if (CollectionUtils.isEmpty(productIds)) { - return new PageResult<OrderInfo>( + return new PageResult<OrderDetailVO>( java.util.Collections.emptyList(), 0L, queryDTO.getPageNum().longValue(), @@ -267,7 +280,7 @@ // 鎵ц鍒嗛〉鏌ヨ // 鍩轰簬workFlowType鏌ヨ娴佺▼瀹炰緥ID闆嗗悎 - List<String> workFlowIds = fetchWorkflowProcessInstanceIds( + List<?> workFlowList = fetchWorkflowProcessInstanceIds( queryDTO.getWorkFlowType(), queryDTO.getUserId(), queryDTO.getDepartmentId(), @@ -275,17 +288,29 @@ queryDTO.getPageNum(), queryDTO.getPageSize() ); - // 濡傛灉娌℃湁浠讳綍娴佺▼ID锛岀洿鎺ヨ繑鍥炵┖鍒嗛〉 - if (workFlowIds == null || workFlowIds.isEmpty()) { - return new PageResult<OrderInfo>( - java.util.Collections.emptyList(), - 0L, - queryDTO.getPageNum().longValue(), - queryDTO.getPageSize().longValue(), - 0L + if (workFlowList == null || workFlowList.isEmpty()) { + return new PageResult<OrderDetailVO>( + java.util.Collections.emptyList(), + 0L, + queryDTO.getPageNum().longValue(), + queryDTO.getPageSize().longValue(), + 0L ); } + + List<String> workFlowIds = workFlowList.stream() + .filter(item -> item instanceof Map) + .map(item -> (Map<?, ?>) item) + .map(m -> m.get("processInstanceId")) + .filter(Objects::nonNull) + .map(Object::toString) + .collect(Collectors.toList()); + + Map<String,String> workFlowIdAndTaskIdMap = workFlowList.stream() + .filter(item -> item instanceof Map) + .map(item -> (Map<?, ?>) item).collect(Collectors.toMap(m -> m.get("processInstanceId").toString(), m -> m.get("taskId").toString(),(k1,k2) -> k2)); + IPage<OrderInfo> result = baseMapper.selectPendingApprovalOrderPageWithProductConditions( page, queryDTO.getOrderStatus(), queryDTO.getProductName(), queryDTO.getProviderName(), @@ -294,10 +319,24 @@ queryDTO.getApplyTimeEnd() != null ? queryDTO.getApplyTimeEnd().toString() : null, queryDTO.getOrderBy(), queryDTO.getOrderDirection(), productIds, workFlowIds ); + // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O + List<OrderDetailVO> voList = result.getRecords().stream().map(order -> { + OrderDetailVO vo = new OrderDetailVO(); + BeanUtils.copyProperties(order, vo); + List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId()); + List<OrderDetailItemVO> items = details.stream().map(d -> { + OrderDetailItemVO item = new OrderDetailItemVO(); + BeanUtils.copyProperties(d, item); + return item; + }).collect(java.util.stream.Collectors.toList()); + vo.setOrderDetails(items); + vo.setTaskId(workFlowIdAndTaskIdMap.get(vo.getWorkflowId())); + return vo; + }).collect(java.util.stream.Collectors.toList()); // 鏋勫缓杩斿洖缁撴灉 - return new PageResult<OrderInfo>( - result.getRecords(), + return new PageResult<OrderDetailVO>( + voList, result.getTotal(), queryDTO.getPageNum().longValue(), queryDTO.getPageSize().longValue(), @@ -314,10 +353,10 @@ // 鏍规嵁浜у搧鏉′欢鏌ヨ浜у搧ID鍒楄〃 List<String> productIds = null; - if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) || + if (StringUtils.hasText(queryDTO.getIndustryId()) || queryDTO.getUnitProjectId() != null || StringUtils.hasText(queryDTO.getProductTypeId()) || StringUtils.hasText(queryDTO.getProductSubTypeId())) { productIds = reportResultSubmissionMapper.selectProductIdsByConditions( - queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), + queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), queryDTO.getImportantDistrictId(), queryDTO.getProductTypeId(), queryDTO.getProductSubTypeId() ); @@ -381,10 +420,10 @@ // 鏍规嵁浜у搧鏉′欢鏌ヨ浜у搧ID鍒楄〃 List<String> productIds = null; - if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) || + if (StringUtils.hasText(queryDTO.getIndustryId()) || queryDTO.getUnitProjectId()!= null || StringUtils.hasText(queryDTO.getProductTypeId()) || StringUtils.hasText(queryDTO.getProductSubTypeId())) { productIds = reportResultSubmissionMapper.selectProductIdsByConditions( - queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), + queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), queryDTO.getImportantDistrictId(), queryDTO.getProductTypeId(), queryDTO.getProductSubTypeId() ); @@ -596,7 +635,7 @@ @Transactional(rollbackFor = Exception.class) public Long uploadOrderAttachment(String orderId, String fileName, String originalName, String fileType, Long fileSize, String fileUrl, - String bucketName, String objectName, Long uploadUserId, + String bucketName, String objectName, String uploadUserId, String uploadUserName, String attachmentType, String description) { // 鍙傛暟鏍¢獙 if (!StringUtils.hasText(orderId)) { @@ -638,7 +677,7 @@ @Override @Transactional(rollbackFor = Exception.class) - public boolean addOrderEvaluation(String orderId, Long evaluatorId, String evaluatorName, + public boolean addOrderEvaluation(String orderId, String evaluatorId, String evaluatorName, String evaluatorType, String content, Integer rating, Integer serviceRating, Integer qualityRating, Integer deliveryRating, Boolean isAnonymous) { @@ -964,9 +1003,9 @@ // 鏍规嵁瀹℃壒缁撴灉璋冪敤鎻愪氦鎴栭┏鍥炴帴鍙� String comment = orderApprovalDTO.getApprovalResult().contains("椹冲洖") ? "瀹℃牳椹冲洖" : "瀹℃牳閫氳繃"; if ("瀹℃牳椹冲洖".equals(comment)) { - rejectWorkflowTask(orderInfo.getTaskId(), String.valueOf(orderApprovalDTO.getApproverId()), comment); + rejectWorkflowTask(orderApprovalDTO.getTaskId(), String.valueOf(orderApprovalDTO.getApproverId()), orderApprovalDTO.getApprovalOpinion()); } else { - completeWorkflowTask(orderInfo.getTaskId(), String.valueOf(orderApprovalDTO.getApproverId()), comment); + completeWorkflowTask(orderApprovalDTO.getTaskId(), String.valueOf(orderApprovalDTO.getApproverId()), orderApprovalDTO.getApprovalOpinion()); } log.info("瀹℃壒璁板綍娣诲姞鎴愬姛锛岃鍗旾D: {}, 瀹℃壒绫诲瀷: {}, 瀹℃壒缁撴灉: {}, 瀹℃壒浜�: {}, 瀹℃壒鎰忚: {}", @@ -1261,46 +1300,50 @@ try { // 1. 鍒犻櫎璁㈠崟闄勪欢锛堝寘鎷琈inIO鏂囦欢鍜屾暟鎹簱璁板綍锛� log.info("寮�濮嬪垹闄よ鍗曢檮浠讹紝璁㈠崟ID: {}", orderId); - List<OrderAttachment> attachments = orderAttachmentMapper.selectByOrderId(orderId); - for (OrderAttachment attachment : attachments) { - try { - // 鍒犻櫎MinIO涓殑鏂囦欢 - if (StringUtils.hasText(attachment.getObjectName())) { - log.info("鍒犻櫎MinIO鏂囦欢锛屽璞″悕绉�: {}", attachment.getObjectName()); - minioService.deleteFile(attachment.getObjectName()); - } - // 鍒犻櫎鏁版嵁搴撹褰� - orderAttachmentMapper.deleteById(attachment.getId()); - log.info("鍒犻櫎闄勪欢璁板綍鎴愬姛锛岄檮浠禝D: {}", attachment.getId()); - } catch (Exception e) { - log.error("鍒犻櫎闄勪欢澶辫触锛岄檮浠禝D: {}, 閿欒: {}", attachment.getId(), e.getMessage()); - // 缁х画鍒犻櫎鍏朵粬闄勪欢锛屼笉涓柇鏁翠釜娴佺▼ - } - } +// List<OrderAttachment> attachments = orderAttachmentMapper.selectByOrderId(orderId); +// for (OrderAttachment attachment : attachments) { +// try { +// // 鍒犻櫎MinIO涓殑鏂囦欢 +// if (StringUtils.hasText(attachment.getObjectName())) { +// log.info("鍒犻櫎MinIO鏂囦欢锛屽璞″悕绉�: {}", attachment.getObjectName()); +// minioService.deleteFile(attachment.getObjectName()); +// } +// // 鍒犻櫎鏁版嵁搴撹褰� +// orderAttachmentMapper.deleteById(attachment.getId()); +// log.info("鍒犻櫎闄勪欢璁板綍鎴愬姛锛岄檮浠禝D: {}", attachment.getId()); +// } catch (Exception e) { +// log.error("鍒犻櫎闄勪欢澶辫触锛岄檮浠禝D: {}, 閿欒: {}", attachment.getId(), e.getMessage()); +// // 缁х画鍒犻櫎鍏朵粬闄勪欢锛屼笉涓柇鏁翠釜娴佺▼ +// } +// } // 2. 閫昏緫鍒犻櫎璁㈠崟璇︽儏 - log.info("寮�濮嬮�昏緫鍒犻櫎璁㈠崟璇︽儏锛岃鍗旾D: {}", orderId); + // log.info("寮�濮嬮�昏緫鍒犻櫎璁㈠崟璇︽儏锛岃鍗旾D: {}", orderId); // 鍏堟煡璇㈣鍗曡鎯呭垪琛紝鐒跺悗閫愪釜閫昏緫鍒犻櫎 - List<OrderDetail> orderDetails = orderDetailMapper.selectByOrderId(orderId); - int detailDeleted = 0; - for (OrderDetail detail : orderDetails) { - int result = orderDetailMapper.deleteById(detail.getId()); - if (result > 0) { - detailDeleted++; - } - } - log.info("閫昏緫鍒犻櫎璁㈠崟璇︽儏瀹屾垚锛屽奖鍝嶈鏁�: {}", detailDeleted); +// List<OrderDetail> orderDetails = orderDetailMapper.selectByOrderId(orderId); +// int detailDeleted = 0; +// for (OrderDetail detail : orderDetails) { +// int result = orderDetailMapper.deleteById(detail.getId()); +// if (result > 0) { +// detailDeleted++; +// } +// } +// log.info("閫昏緫鍒犻櫎璁㈠崟璇︽儏瀹屾垚锛屽奖鍝嶈鏁�: {}", detailDeleted); // 3. 鍒犻櫎璁㈠崟淇℃伅锛堥�昏緫鍒犻櫎锛� - log.info("寮�濮嬪垹闄よ鍗曚俊鎭紝璁㈠崟ID: {}", orderId); - int orderDeleted = this.baseMapper.deleteById(orderId); - log.info("鍒犻櫎璁㈠崟淇℃伅瀹屾垚锛屽奖鍝嶈鏁�: {}", orderDeleted); +// log.info("寮�濮嬪垹闄よ鍗曚俊鎭紝璁㈠崟ID: {}", orderId); +// int orderDeleted = this.baseMapper.deleteById(orderId); +// log.info("鍒犻櫎璁㈠崟淇℃伅瀹屾垚锛屽奖鍝嶈鏁�: {}", orderDeleted); + // 鏇存柊璁㈠崟鐘舵�佷负宸插畬鎴� + orderInfo.setOrderStatus("宸插彇娑�"); + orderInfo.setUpdatedAt(LocalDateTime.now()); + int orderDeleted = this.baseMapper.updateById(orderInfo); if (orderDeleted > 0) { log.info("璁㈠崟鍙栨秷鎴愬姛锛岃鍗旾D: {}", orderId); return true; } else { - log.error("鍒犻櫎璁㈠崟淇℃伅澶辫触锛屽奖鍝嶈鏁颁负0锛岃鍗旾D: {}", orderId); + log.error("鏇存柊璁㈠崟淇℃伅澶辫触锛屽奖鍝嶈鏁颁负0锛岃鍗旾D: {}", orderId); throw new BusinessException("鍒犻櫎璁㈠崟淇℃伅澶辫触"); } } catch (Exception e) { @@ -1528,7 +1571,7 @@ * 鎸夌収workFlowType鏌ヨ娴佺▼瀹炰緥ID闆嗗悎 * workFlowType: 0=浠e姙锛�1=宸插姙 */ - private List<String> fetchWorkflowProcessInstanceIds(Integer workFlowType, String userId, String depId,String businessKey,Integer pageIndex, Integer pageSize) { + private List<Object> fetchWorkflowProcessInstanceIds(Integer workFlowType, String userId, String depId,String businessKey,Integer pageIndex, Integer pageSize) { try { if (workFlowType == null) { return java.util.Collections.emptyList(); @@ -1572,28 +1615,30 @@ if (!(dataObj instanceof java.util.List)) { return java.util.Collections.emptyList(); } - java.util.List<?> list = (java.util.List<?>) dataObj; - return list.stream() - .filter(item -> item instanceof Map) - .map(item -> (Map<?, ?>) item) - .map(m -> m.get("processInstanceId")) - .filter(Objects::nonNull) - .map(Object::toString) - .collect(Collectors.toList()); + java.util.List<Object> list = (java.util.List<Object>) dataObj; + return list; +// list.stream() +// .filter(item -> item instanceof Map) +// .map(item -> (Map<?, ?>) item) +// .map(m -> m.get("processInstanceId")) +// .filter(Objects::nonNull) +// .map(Object::toString) +// .collect(Collectors.toList()); }else { if (!(dataObj instanceof Map)) { return java.util.Collections.emptyList(); } Map<?,?> map = (Map<?,?>) dataObj; Object dataObj1 = ((Map<?, ?>) dataObj).get("list"); - java.util.List<?> list = (java.util.List<?>) dataObj1; - return list.stream() - .filter(item -> item instanceof Map) - .map(item -> (Map<?, ?>) item) - .map(m -> m.get("processInstanceId")) - .filter(Objects::nonNull) - .map(Object::toString) - .collect(Collectors.toList()); + java.util.List<Object> list = (java.util.List<Object>) dataObj1; + return list; +// list.stream() +// .filter(item -> item instanceof Map) +// .map(item -> (Map<?, ?>) item) +// .map(m -> m.get("processInstanceId")) +// .filter(Objects::nonNull) +// .map(Object::toString) +// .collect(Collectors.toList()); } } catch (Exception e) { -- Gitblit v1.8.0