fix(aftersalesservice): 解决售后工单查询中的空指针异常
- 添加对售后工单为空的检查,避免空指针异常
- 处理产品型号ID为空或无效的情况,增加容错机制
- 优化产品型号数量分割逻辑,过滤空字符串
- 修复销售台账信息复制时的空指针问题
- 更新开发环境数据库配置信息
- 添加MCP服务器配置文件
- 配置Claude本地权限设置
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "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)" |
| | | ] |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "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" |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | @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(","); |
| | |
| | | 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; |
| | |
| | | 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: |
| | | # 仿°æ®æºå¼å
³/é»è®¤å
³é |