From 48e8e81666b2d0f49b931cb7b93729355758f2ae Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 24 九月 2026 19:24:02 +0800
Subject: [PATCH] fix(aftersalesservice): 解决售后工单查询中的空指针异常
---
src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java | 23 +++++++++--
.mcp.json | 24 ++++++++++++
.claude/settings.local.json | 39 +++++++++++++++++++
src/main/resources/application-dev.yml | 4 +-
4 files changed, 84 insertions(+), 6 deletions(-)
diff --git a/.claude/settings.local.json b/.claude/settings.local.json
new file mode 100644
index 0000000..085a4e7
--- /dev/null
+++ b/.claude/settings.local.json
@@ -0,0 +1,39 @@
+{
+ "permissions": {
+ "allow": [
+ "Bash(claude mcp *)",
+ "Bash(python *)",
+ "Bash(node *)",
+ "mcp__mcp_server_mysql__mysql_query",
+ "Bash(netstat -ano)",
+ "Bash(git -C \"D:\\\\鐗涢┈\\\\鍗楅�歕\\\鍚庣\\\\product-inventory-management-after-jdk25\" status -sb)",
+ "Bash(git -C \"D:\\\\鐗涢┈\\\\鍗楅�歕\\\鍚庣\\\\product-inventory-management-after-jdk25\" log --oneline -3)",
+ "Read(//c/Users/浜�/**)",
+ "Bash(ls -la .claude.json)",
+ "Read(//d/鐗涢┈/鍗楅��/鍓嶇/product-inventory-management/**)",
+ "Bash(awk '{print $5, $9}')",
+ "Bash(cygpath -w /tmp/sales_all.txt)",
+ "Bash(awk -F'\\\\t' '{print $1}')",
+ "Bash(awk 'NF')",
+ "Bash(awk '{print $1\"\\\\t\"$2}')",
+ "Bash(awk -F'\\\\t' 'NF{print $1}')",
+ "Bash(awk -F'\\\\t' 'NF && $6 ~ /^2026-/ {d=$6; gsub\\(/-/,\"\",d\\); if \\(d+0 >= 20260820\\) n++} END {print \"绗﹀悎:\", n; }')",
+ "Bash(sed -n '3,88p' /tmp/sales_all.txt)",
+ "Bash(awk -F'\\\\t' 'NF{print $6}')",
+ "Bash(sort -k2)",
+ "Bash(mkdir -p /tmp/x1)",
+ "Read(//tmp/**)",
+ "Bash(rm -rf *)",
+ "Bash(unzip -o -q \"D:/鐗涢┈/鍗楅��/鍚庣/product-inventory-management-after-jdk25/docs/閿�鍞彴璐︽ā鏉�.xlsx\")",
+ "Bash(mkdir -p /tmp/x2)",
+ "Bash(unzip -o -q \"D:/鐗涢┈/鍗楅��/鍚庣/product-inventory-management-after-jdk25/docs/閲囪喘鍙拌处妯℃澘\\(2\\).xlsx\")",
+ "Bash(curl -s -o /dev/null -w \"e-iceblue pom HTTP %{http_code}\\\\n\" --max-time 25 \"https://repo.e-iceblue.cn/repository/maven-public/e-iceblue/spire.doc.free/5.2.0/spire.doc.free-5.2.0.pom\")",
+ "Bash(curl -s -o /dev/null -w \"my-mirror HTTP %{http_code}\\\\n\" --max-time 15 \"https://my-company-repository.com/maven/\")",
+ "Bash(mvn -B -q help:effective-settings)",
+ "Bash(mvn -B help:effective-settings)",
+ "Bash(rm -f \"/d/Maven3.6.3/myRepository/e-iceblue/spire.doc.free/5.2.0/\"*.lastUpdated)",
+ "Bash(mvn -B dependency:get -Dartifact=e-iceblue:spire.doc.free:5.2.0)",
+ "Bash(mvn -B -DskipTests package)"
+ ]
+ }
+}
diff --git a/.mcp.json b/.mcp.json
new file mode 100644
index 0000000..876e1a4
--- /dev/null
+++ b/.mcp.json
@@ -0,0 +1,24 @@
+{
+ "mcpServers": {
+ "mysql_zyrq": {
+ "type": "stdio",
+ "command": "cmd",
+ "args": [
+ "/c",
+ "node",
+ "C:/nvm4w/nodejs/node_modules/@benborla29/mcp-server-mysql/dist/index.js"
+ ],
+ "env": {
+ "MYSQL_HOST": "127.0.0.1",
+ "MYSQL_PORT": "3306",
+ "MYSQL_USER": "root",
+ "MYSQL_PASS": "123456",
+ "MYSQL_DB": "product-inventory-management-zyrq-pro",
+ "ALLOW_DDL_OPERATION": "false",
+ "ALLOW_INSERT_OPERATION": "false",
+ "ALLOW_UPDATE_OPERATION": "false",
+ "ALLOW_DELETE_OPERATION": "false"
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java b/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
index a9e4f43..60472af 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
@@ -95,9 +95,19 @@
@Override
public AfterSalesServiceNewDto getAfterSalesServiceNewDtoById(Long id) {
AfterSalesService afterSalesService = afterSalesServiceMapper.selectById(id);
- SalesLedger byId = salesLedgerService.getById(afterSalesService.getSalesLedgerId());
- List<Long> collect = Arrays.stream(afterSalesService.getProductModelIds().split(",")).map(Long::valueOf).collect(Collectors.toList());
- List<SalesLedgerProduct> list = salesLedgerProductService.list(new QueryWrapper<SalesLedgerProduct>().lambda().in(SalesLedgerProduct::getId, collect));
+ if (afterSalesService == null) {
+ throw new RuntimeException("鍞悗宸ュ崟涓嶅瓨鍦�");
+ }
+ // 宸ュ崟鍙互涓嶅叧鑱斾骇鍝侊紙鍙嶉鐧昏瀵煎叆銆佸巻鍙叉暟鎹兘鏄┖锛夛紝姝ゅ蹇呴』瀹归敊
+ List<Long> collect = StringUtils.isEmpty(afterSalesService.getProductModelIds())
+ ? new ArrayList<>()
+ : Arrays.stream(afterSalesService.getProductModelIds().split(","))
+ .filter(StringUtils::isNotEmpty)
+ .map(Long::valueOf)
+ .collect(Collectors.toList());
+ List<SalesLedgerProduct> list = collect.isEmpty()
+ ? new ArrayList<>()
+ : salesLedgerProductService.list(new QueryWrapper<SalesLedgerProduct>().lambda().in(SalesLedgerProduct::getId, collect));
if (StringUtils.isNotEmpty(afterSalesService.getProductModelQuantities())) {
String[] quantities = afterSalesService.getProductModelQuantities().split(",");
@@ -133,7 +143,12 @@
AfterSalesServiceNewDto afterSalesServiceNewDto = new AfterSalesServiceNewDto();
BeanUtils.copyProperties(afterSalesService, afterSalesServiceNewDto);
SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
- BeanUtils.copyProperties(byId, salesLedgerDto);
+ if (afterSalesService.getSalesLedgerId() != null) {
+ SalesLedger byId = salesLedgerService.getById(afterSalesService.getSalesLedgerId());
+ if (byId != null) {
+ BeanUtils.copyProperties(byId, salesLedgerDto);
+ }
+ }
salesLedgerDto.setProductData( list);
afterSalesServiceNewDto.setSalesLedgerDto(salesLedgerDto);
return afterSalesServiceNewDto;
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 31c9c0c..8aca342 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -73,9 +73,9 @@
druid:
# 涓诲簱鏁版嵁婧�
master:
- url: jdbc:mysql://localhost:3306/product-inventory-management-hnhb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ url: jdbc:mysql://localhost:3306/product-inventory-management-zyrq-pro?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
- password: 200381
+ password: 123456
# 浠庡簱鏁版嵁婧�
slave:
# 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
--
Gitblit v1.9.3