From 6ed4b397bb9dbb9c2d7bb0676339721fa97996bf Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 30 一月 2026 10:32:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 7 ++++---
src/main/resources/mapper/production/ProductOrderMapper.xml | 2 +-
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml | 2 +-
src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java | 37 +++++++++++++++++++++++++------------
src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java | 2 ++
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 2 +-
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java | 1 +
src/main/java/com/ruoyi/production/pojo/ProductOrder.java | 5 +++++
8 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
index dae49a7..70c82d8 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -30,6 +30,11 @@
/**
* 閿�鍞彴璐︿骇鍝乮d(sales_ledger_product)
*/
+ private Long saleLedgerProductId;
+
+ /**
+ * 閿�鍞彴璐︿骇鍝乮d(sales_ledger_product)
+ */
@ApiModelProperty(value = "閿�鍞彴璐︿骇鍝乮d")
private Long productModelId;
diff --git a/src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java b/src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java
index 38a2469..b410df7 100644
--- a/src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java
+++ b/src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java
@@ -101,4 +101,6 @@
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
+ private Long ProductMainId;
+
}
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 553e0d0..6f71f6b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -227,7 +227,7 @@
.salesLedgerWorkId(productionProductMain.getId())
.salesLedgerSchedulingId(0L)
.salesLedgerId(productOrder.getSalesLedgerId())
- .salesLedgerProductId(productOrder.getProductModelId())
+ .salesLedgerProductId(productOrder.getSaleLedgerProductId())
.schedulingUserId(user.getUserId())
.schedulingUserName(user.getNickName())
.finishedNum(productQty)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index d2118d1..a793a02 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -270,7 +270,8 @@
public void addProductionData(SalesLedgerProduct salesLedgerProduct) {
ProductOrder productOrder = new ProductOrder();
productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
- productOrder.setProductModelId(salesLedgerProduct.getId());
+ productOrder.setProductModelId(salesLedgerProduct.getProductModelId());
+ productOrder.setSaleLedgerProductId(salesLedgerProduct.getId());
productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId()));
productOrder.setQuantity(salesLedgerProduct.getQuantity());//闇�姹傛暟閲�
productOrder.setCompleteQuantity(BigDecimal.ZERO);//瀹屾垚鏁伴噺
@@ -346,7 +347,7 @@
//鎵归噺鏌ヨproductOrder
List<ProductOrder> productOrders = productOrderMapper.selectList(
new LambdaQueryWrapper<ProductOrder>()
- .in(ProductOrder::getProductModelId, productIds)
+ .in(ProductOrder::getSaleLedgerProductId, productIds)
);
if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
List<Long> orderIds = productOrders.stream()
@@ -426,7 +427,7 @@
// 鎵归噺鍒犻櫎productOrder
productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
- .in(ProductOrder::getProductModelId, productIds));
+ .in(ProductOrder::getSaleLedgerProductId, productIds));
}
}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java
index 24abcfc..ff74b0f 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java
@@ -94,19 +94,22 @@
Integer leaveCount = staffLeaveMapper.countLeaveByMonth(monthStart, monthEnd);
vo.setLeaveCount(leaveCount != null ? leaveCount : 0);
- // 璁$畻娴佸け鐜囷細娴佸け鐜� = 鏈堝害绂昏亴鍛樺伐鏁� / 鏈堝垵鍛樺伐鏁� * 100%
+ // 璁$畻褰撴湡骞冲潎鍦ㄨ亴浜烘暟 = (鏈堝垵鍛樺伐鏁� + 鏈堟湯鍛樺伐鏁�) / 2
+ Double averageStaffCount = (vo.getBeginMonthStaffCount() + vo.getEndMonthStaffCount()) / 2.0;
+
+ // 璁$畻娴佸け鐜囷細娴佸け鐜� = 鏈堝害绂昏亴鍛樺伐鏁� / 褰撴湡骞冲潎鍦ㄨ亴浜烘暟 * 100%
Double turnoverRate = 0.0;
- if (vo.getBeginMonthStaffCount() > 0) {
- turnoverRate = (double) vo.getLeaveCount() / vo.getBeginMonthStaffCount() * 100;
+ if (averageStaffCount > 0) {
+ turnoverRate = (double) vo.getLeaveCount() / averageStaffCount * 100;
// 淇濈暀涓や綅灏忔暟
turnoverRate = Math.round(turnoverRate * 100.0) / 100.0;
}
vo.setTurnoverRate(turnoverRate);
- // 璁$畻娴佸姩鐜囷細娴佸姩鐜� = (鏈堝害鍏ヨ亴鍛樺伐鏁� + 鏈堝害绂昏亴鍛樺伐鏁�) / 鏈堝垵鍛樺伐鏁� * 100%
+ // 璁$畻娴佸姩鐜囷細娴佸姩鐜� = (鏈堝害鍏ヨ亴鍛樺伐鏁� + 鏈堝害绂昏亴鍛樺伐鏁�) / 褰撴湡骞冲潎鍦ㄨ亴浜烘暟 * 100%
Double flowRate = 0.0;
- if (vo.getBeginMonthStaffCount() > 0) {
- flowRate = (double) (vo.getNewHireCount() + vo.getLeaveCount()) / vo.getBeginMonthStaffCount() * 100;
+ if (averageStaffCount > 0) {
+ flowRate = (double) (vo.getNewHireCount() + vo.getLeaveCount()) / averageStaffCount * 100;
// 淇濈暀涓や綅灏忔暟
flowRate = Math.round(flowRate * 100.0) / 100.0;
}
@@ -133,26 +136,36 @@
// 鑾峰彇鏈堝垵鍛樺伐鏁帮紙鍗充笂鏈堟湯鍛樺伐鏁帮級
Integer beginMonthStaffCount = staffOnJobMapper.countOnJobStaffByDate(monthStartDate.minusDays(1));
+ beginMonthStaffCount = beginMonthStaffCount != null ? beginMonthStaffCount : 0;
+
+ // 鑾峰彇鏈堟湯鍛樺伐鏁�
+ Integer endMonthStaffCount = staffOnJobMapper.countOnJobStaffByDate(monthEndDate);
+ endMonthStaffCount = endMonthStaffCount != null ? endMonthStaffCount : 0;
// 鑾峰彇鏈湀鏂板叆鑱屽憳宸ユ暟
Integer newHireCount = staffOnJobMapper.countNewHireByMonth(monthStartDate, monthEndDate);
+ newHireCount = newHireCount != null ? newHireCount : 0;
// 鑾峰彇鏈湀绂昏亴鍛樺伐鏁�
Integer leaveCount = staffLeaveMapper.countLeaveByMonth(monthStartDate, monthEndDate);
+ leaveCount = leaveCount != null ? leaveCount : 0;
- // 璁$畻鎬绘祦鍔ㄧ巼 = (鍏ヨ亴浜烘暟 + 绂昏亴浜烘暟) / 鏈堝垵鍛樺伐鏁� * 100%
+ // 璁$畻褰撴湡骞冲潎鍦ㄨ亴浜烘暟 = (鏈堝垵鍛樺伐鏁� + 鏈堟湯鍛樺伐鏁�) / 2
+ Double averageStaffCount = (beginMonthStaffCount + endMonthStaffCount) / 2.0;
+
+ // 璁$畻鎬绘祦鍔ㄧ巼 = (鍏ヨ亴浜烘暟 + 绂昏亴浜烘暟) / 褰撴湡骞冲潎鍦ㄨ亴浜烘暟 * 100%
Double totalFlowRate = 0.0;
- if (beginMonthStaffCount > 0) {
- totalFlowRate = (double) (newHireCount + leaveCount) / beginMonthStaffCount * 100;
+ if (averageStaffCount > 0) {
+ totalFlowRate = (double) (newHireCount + leaveCount) / averageStaffCount * 100;
// 淇濈暀涓や綅灏忔暟
totalFlowRate = Math.round(totalFlowRate * 100.0) / 100.0;
}
result.setTotalFlowRate(totalFlowRate);
- // 璁$畻鎬绘祦澶辩巼 = 绂昏亴浜烘暟 / 鏈堝垵鍛樺伐鏁� * 100%
+ // 璁$畻鎬绘祦澶辩巼 = 绂昏亴浜烘暟 / 褰撴湡骞冲潎鍦ㄨ亴浜烘暟 * 100%
Double totalTurnoverRate = 0.0;
- if (beginMonthStaffCount > 0) {
- totalTurnoverRate = (double) leaveCount / beginMonthStaffCount * 100;
+ if (averageStaffCount > 0) {
+ totalTurnoverRate = (double) leaveCount / averageStaffCount * 100;
// 淇濈暀涓や綅灏忔暟
totalTurnoverRate = Math.round(totalTurnoverRate * 100.0) / 100.0;
}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index 98e7bdb..d7abe9b 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -69,6 +69,7 @@
}
// 鍒涘缓鍏ヨ亴鏁版嵁
staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime());
+ staffOnJobPrams.setStaffState(1);
staffOnJobMapper.insert(staffOnJobPrams);
// 鍒涘缓鍚堝悓璁板綍
diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
index 70ce815..5f526ea 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -25,7 +25,7 @@
DATEDIFF(sl.delivery_date, CURDATE()) AS delivery_days_diff
from product_order po
left join sales_ledger sl on po.sales_ledger_id = sl.id
- left join sales_ledger_product slp on po.product_model_id = slp.id
+ left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id
left join product_process_route ppr on po.id = ppr.product_order_id
left join product_bom pb on pb.id = ppr.bom_id
<where>
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index 01f0e89..2a1b94a 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -31,7 +31,7 @@
left join production_product_main ppm on qi.product_main_id = ppm.id
left join product_work_order pwo on ppm.work_order_id = pwo.id
left join product_order po on pwo.product_order_id = po.id
- left join sales_ledger_product slp on po.product_model_id = slp.id
+ left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id
where qi.product_main_id = #{productMainId}
--
Gitblit v1.9.3