From 061977e873182b0c7249d02fe0253a291fa4e69d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 12 六月 2026 09:46:31 +0800
Subject: [PATCH] fix(customer): 修复客户数据查询中的空值问题并优化生产订单状态管理
---
src/main/resources/mapper/basic/CustomerMapper.xml | 2 +-
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 8 +++++++-
docs/insert_customer_visits.sql | 26 ++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/docs/insert_customer_visits.sql b/docs/insert_customer_visits.sql
new file mode 100644
index 0000000..88fb9d4
--- /dev/null
+++ b/docs/insert_customer_visits.sql
@@ -0,0 +1,26 @@
+-- 瀹㈡埛鎷滆鏁版嵁鎻掑叆鑴氭湰
+-- 鎷滆浜猴細寮犳窇闈�
+-- 瀹㈡埛锛氬ぉ娲ョ殑椋熷搧鍜岃嵂鍝佽涓�
+-- 鐢熸垚鏃ユ湡锛�2026-06-12
+-- 鎷滆鏃堕棿鑼冨洿锛�2026-05-03 鑷� 2026-06-12
+
+-- 澶╂触椋熷搧琛屼笟瀹㈡埛鎷滆鏁版嵁锛�6鏉★級
+INSERT INTO customer_visits (customer_name, contact, contact_phone, location, visiting_people, purpose_visit, purpose_date, visit_address, remark, create_time, tenant_id, dept_id) VALUES
+('澶╂触搴峰笀鍌呴鍝佹湁闄愬叕鍙�', '鏉庣粡鐞�', '022-58901234', '澶╂触甯傛花娴锋柊鍖�', '寮犳窇闈�', '浜у搧鎺ㄥ箍娲借皥', '2026-05-03', '澶╂触甯傛花娴锋柊鍖虹粡娴庢妧鏈紑鍙戝尯绗崄澶ц66鍙�', '瀹㈡埛瀵规柊鍝侀叡娌圭郴鍒楁劅鍏磋叮锛岄渶鍚庣画璺熻繘閫佹牱', NOW(), 1, 100),
+('澶╂触鐩婃捣鍢夐噷椋熷搧鏈夐檺鍏徃', '鐜嬫�荤洃', '022-65432198', '澶╂触甯傛渤瑗垮尯', '寮犳窇闈�', '骞村害鍚堝悓缁', '2026-05-10', '澶╂触甯傛渤瑗垮尯瑙f斁鍗楄矾256鍙�', '缁鍚堝悓宸茶皥濡ワ紝涓嬪搴﹀紑濮嬫墽琛屾柊浠锋牸', NOW(), 1, 100),
+('澶╂触娴锋渤涔充笟鏈夐檺鍏徃', '璧典富浠�', '022-23456789', '澶╂触甯傛触鍗楀尯', '寮犳窇闈�', '鏂板搧鍚堜綔娲借皥', '2026-05-18', '澶╂触甯傛触鍗楀尯鍙屾腐闀囧伐涓氬洯鍖�', '涔冲埗鍝佽皟鍛冲搧鍚堜綔鎰忓悜鏄庣‘锛岄渶鎻愪氦鏍峰搧', NOW(), 1, 100),
+('澶╂触妗傞『鏂嬮鍝佹湁闄愬叕鍙�', '瀛欑粡鐞�', '022-87654321', '澶╂触甯傚崡寮�鍖�', '寮犳窇闈�', '淇冮攢娲诲姩娌熼��', '2026-05-25', '澶╂触甯傚崡寮�鍖洪暱姹熼亾88鍙�', '绔崍鑺備績閿�鏂规宸茬‘璁わ紝閰嶅悎瀹㈡埛涓婃灦', NOW(), 1, 100),
+('澶╂触澶╅椋熷搧鏈夐檺鍏徃', '鍒橀噰璐�', '022-12345678', '澶╂触甯備笢涓藉尯', '寮犳窇闈�', '浜у搧鎶ヤ环娌熼��', '2026-06-02', '澶╂触甯備笢涓藉尯绌烘腐缁忔祹鍖�', '鎶ヤ环宸插彂閫侊紝绛夊緟瀹㈡埛纭', NOW(), 1, 100),
+('澶╂触鍒╄揪绮补鏈夐檺鍏徃', '闄堜富绠�', '022-98765432', '澶╂触甯傝タ闈掑尯', '寮犳窇闈�', '渚涘簲閾惧悎浣�', '2026-06-10', '澶╂触甯傝タ闈掑尯鏉ㄦ煶闈掗晣宸ヤ笟鍥�', '绮补浜у搧鍚堜綔妗嗘灦宸茶揪鎴�', NOW(), 1, 100);
+
+-- 澶╂触鑽搧琛屼笟瀹㈡埛鎷滆鏁版嵁锛�6鏉★級
+INSERT INTO customer_visits (customer_name, contact, contact_phone, location, visiting_people, purpose_visit, purpose_date, visit_address, remark, create_time, tenant_id, dept_id) VALUES
+('澶╂触鍚屼粊鍫傝嵂涓氳偂浠芥湁闄愬叕鍙�', '寮犵粡鐞�', '022-54321098', '澶╂触甯傚拰骞冲尯', '寮犳窇闈�', '涓嵂鏉愰噰璐唇璋�', '2026-05-05', '澶╂触甯傚拰骞冲尯鍗椾含璺�189鍙�', '涓嵂鏉愰噰璐剰鍚戞槑纭紝闇�鎻愪緵浜у湴璇佹槑', NOW(), 1, 100),
+('澶╂触鑽笟闆嗗洟鏈夐檺鍏徃', '鍚存�荤洃', '022-76543210', '澶╂触甯傚寳杈板尯', '寮犳窇闈�', '鍘熸枡渚涘簲鍚堜綔', '2026-05-15', '澶╂触甯傚寳杈板尯绉戞妧鍥尯', '鍘熸枡渚涘簲鍚堝悓宸茬绾︼紝涓嬫湀寮�濮嬩緵璐�', NOW(), 1, 100),
+('澶╂触绾㈡棩鑽笟鑲′唤鏈夐檺鍏徃', '鍛ㄤ富浠�', '022-34567890', '澶╂触甯傛娓呭尯', '寮犳窇闈�', '鏂拌嵂鐮斿彂鍚堜綔', '2026-05-22', '澶╂触甯傛娓呭紑鍙戝尯', '鏂拌嵂鐮斿彂鍘熸枡闇�姹傚凡纭', NOW(), 1, 100),
+('澶╂触涓ぎ鑽笟鏈夐檺鍏徃', '閮戦噰璐�', '022-45678901', '澶╂触甯傛渤鍖楀尯', '寮犳窇闈�', '瀛e害閲囪喘璁″垝', '2026-05-28', '澶╂触甯傛渤鍖楀尯涓北璺�120鍙�', '涓夊搴﹂噰璐鍒掑凡娌熼�氾紝璁㈠崟閲忛璁″闀�20%', NOW(), 1, 100),
+('澶╂触澶钩娲嬪埗鑽湁闄愬叕鍙�', '鍐粡鐞�', '022-56789012', '澶╂触甯傚疂鍧诲尯', '寮犳窇闈�', '浜у搧浠g悊娲借皥', '2026-06-05', '澶╂触甯傚疂鍧荤粡娴庡紑鍙戝尯', '浠g悊鍚堜綔鎰忓悜寮猴紝闇�鍑嗗璧勮川鏉愭枡', NOW(), 1, 100),
+('澶╂触澶╁+鍔涘埗鑽泦鍥㈣偂浠芥湁闄愬叕鍙�', '鏇逛富绠�', '022-67890123', '澶╂触甯傛触鍗楀尯', '寮犳窇闈�', '鎴樼暐鍚堜綔浼欎即浼氳', '2026-06-12', '澶╂触甯傛触鍗楀尯鍖楅椄鍙e伐涓氬洯', '鎴樼暐鍚堜綔妗嗘灦鍗忚绛捐', NOW(), 1, 100);
+
+-- 鏌ヨ鎻掑叆鐨勬暟鎹�
+SELECT * FROM customer_visits WHERE visiting_people = '寮犳窇闈�' ORDER BY purpose_date DESC;
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index c52892a..a325b97 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -379,13 +379,19 @@
productionOrder.setStartTime(LocalDateTime.now());
}
// 璁㈠崟鐘舵�佺敱鏈�鍚庝竴閬撳伐搴忕殑鍚堟牸浜у嚭鎺ㄥ姩锛岄伩鍏嶄腑闂村伐搴忔彁鍓嶅畬宸ャ��
- productionOrder.setStatus(ProductOrderStatusEnum.RUNNING.getCode());
if (isLastOperation) {
productionOrder.setCompleteQuantity(defaultDecimal(productionOrder.getCompleteQuantity()).add(productQty));
if (productionOrder.getQuantity() != null
&& productionOrder.getCompleteQuantity().compareTo(productionOrder.getQuantity()) >= 0) {
productionOrder.setEndTime(LocalDateTime.now());
productionOrder.setStatus(ProductOrderStatusEnum.FINISHED.getCode());
+ } else {
+ productionOrder.setStatus(ProductOrderStatusEnum.RUNNING.getCode());
+ }
+ } else {
+ // 闈炴渶鍚庝竴閬撳伐搴忔姤宸ワ紝妫�鏌ヨ鍗曟槸鍚﹀凡瀹屽伐锛岄伩鍏嶈鐩栧凡瀹屽伐鐘舵��
+ if (!Integer.valueOf(ProductOrderStatusEnum.FINISHED.getCode()).equals(productionOrder.getStatus())) {
+ productionOrder.setStatus(ProductOrderStatusEnum.RUNNING.getCode());
}
}
productionOrderMapper.updateById(productionOrder);
diff --git a/src/main/resources/mapper/basic/CustomerMapper.xml b/src/main/resources/mapper/basic/CustomerMapper.xml
index 25b98fa..237f8cd 100644
--- a/src/main/resources/mapper/basic/CustomerMapper.xml
+++ b/src/main/resources/mapper/basic/CustomerMapper.xml
@@ -113,7 +113,7 @@
T1.contractAmounts,
IFNULL(T2.receiptPaymentAmount, 0) AS receiptPaymentAmount,
IFNULL(T3.outboundAmount, 0) - IFNULL(T4.returnAmount, 0) AS receiptableAmount
- from (select customer_id, sum(contract_amount) as contractAmounts from sales_ledger group by customer_id) T1
+ from (select customer_id, sum(contract_amount) as contractAmounts from sales_ledger where customer_id is not null group by customer_id) T1
left join (select customer_id, sum(collection_amount) as receiptPaymentAmount from account_sales_collection group by customer_id) T2 on T1.customer_id = T2.customer_id
left join (
SELECT
--
Gitblit v1.9.3