From 4fcf61c9d1e0de1d09e11a290a5e73275619f028 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 30 一月 2026 14:39:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New
---
src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java | 12 ++++++
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 12 +++--
src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml | 36 +++++++++++++----
src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java | 21 ++++++++--
src/main/resources/mapper/production/ProductionProductMainMapper.xml | 10 ++++
src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java | 10 ++++-
6 files changed, 80 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
index f34124b..5ef224b 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -1,10 +1,12 @@
package com.ruoyi.production.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.production.pojo.ProductionProductMain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -30,7 +32,7 @@
@ApiModelProperty(value = "鎶ュ簾鏁伴噺")
@Excel(name = "鎶ュ簾鏁伴噺")
- private BigDecimal scrapQty;
+ private BigDecimal scrapQty = BigDecimal.ZERO;
//浜у搧鍚嶇О
@Excel(name = "浜у搧鍚嶇О")
@@ -48,10 +50,14 @@
@Excel(name = "閿�鍞悎鍚屽彿")
private String salesContractNo;
- private LocalDate scheduleDate;
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate schedulingDate;
private String schedulingUserName;
private String customerName;
private String process;
private BigDecimal workHours;
private BigDecimal wages;
+
+
}
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
index c86d7bb..8cb4d91 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
@@ -1,12 +1,15 @@
package com.ruoyi.production.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
+import java.time.LocalDate;
/**
* @author :yys
@@ -63,17 +66,27 @@
*/
@ApiModelProperty(value = "鎺掍骇鏃ユ湡")
@Excel(name = "鐢熶骇鏃ユ湡")
- private String schedulingDate;
+ private LocalDate schedulingDate;
@ApiModelProperty(value = "寮�濮嬫椂闂�")
- private String entryDateStart;
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate entryDateStart;
@ApiModelProperty(value = "缁撴潫鏃堕棿")
- private String entryDateEnd;
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate entryDateEnd;
private BigDecimal outputNum;
- private BigDecimal outputRate;
+ private String outputRate;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate entryDate;
+
+ private String dateType;
}
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 6f71f6b..b2c914b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -161,7 +161,7 @@
//鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
//鍙湁鍚堟牸鏁伴噺>0鎵嶈兘澧炲姞鐩稿簲鏁版嵁
- if (productQty.compareTo(BigDecimal.ZERO)>0) {
+ if (productQty.compareTo(BigDecimal.ZERO) > 0) {
/*鏂板璐ㄦ*/
//瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
@@ -190,7 +190,7 @@
qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId());
qualityInspectMapper.updateById(qualityInspect);
qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
- .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//榛樿鑾峰彇鏈�鏂扮殑
+ .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//榛樿鑾峰彇鏈�鏂扮殑
.forEach(qualityTestStandardParam -> {
QualityInspectParam param = new QualityInspectParam();
BeanUtils.copyProperties(qualityTestStandardParam, param);
@@ -239,8 +239,10 @@
salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting);
}
//濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
- if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
- stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+ if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
+ if (BigDecimal.ZERO.compareTo(dto.getScrapQty()) > 0) {
+ stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+ }
}
return true;
}
@@ -263,7 +265,7 @@
productWorkOrderMapper.updateById(productWorkOrder);
//鍒ゆ柇鏄惁鏄渶鍚庝竴閬撳伐搴�
List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
- if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()){
+ if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity()));
productOrder.setEndTime(null);
diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
index 76ac503..6399b32 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerProductionAccountingServiceImpl.java
@@ -43,11 +43,23 @@
@Override
public IPage<SalesLedgerProductionAccountingDto> pageProductionAccounting(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page) {
// TODO 绠$悊鍛樻煡璇㈡墍鏈夛紝鍏朵粬浜哄彧鑳芥煡鑷繁
+ if (salesLedgerProductionAccountingDto.getDateType().equals("month")) {
+ salesLedgerProductionAccountingDto.setEntryDate(null);
+ }else {
+ salesLedgerProductionAccountingDto.setEntryDateStart(null);
+ salesLedgerProductionAccountingDto.setEntryDateEnd(null);
+ }
return salesLedgerProductionAccountingMapper.pageProductionAccounting(page, salesLedgerProductionAccountingDto);
}
@Override
public IPage<ProductionProductMainDto> listProductionDetails(SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page) {
+ if (salesLedgerProductionAccountingDto.getDateType().equals("month")) {
+ salesLedgerProductionAccountingDto.setEntryDate(null);
+ }else {
+ salesLedgerProductionAccountingDto.setEntryDateStart(null);
+ salesLedgerProductionAccountingDto.setEntryDateEnd(null);
+ }
return productionProductMainMapper.listProductionDetails(salesLedgerProductionAccountingDto, page);
}
diff --git a/src/main/resources/mapper/production/ProductionProductMainMapper.xml b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
index aeb4230..1cfc0d8 100644
--- a/src/main/resources/mapper/production/ProductionProductMainMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -63,7 +63,7 @@
sl.sales_contract_no,
sl.customer_name,
p.product_name,
- pm.model,
+ pm.model as product_model_name,
pm.unit,
slpa.process,
ppo.quantity,
@@ -83,6 +83,14 @@
<if test="ew.schedulingUserName != null and ew.schedulingUserName !=''">
and slpa.scheduling_user_name = #{ew.schedulingUserName}
</if>
+ <if test="ew.entryDate != null " >
+ and slpa.scheduling_date >= #{ew.entryDate}
+ and slpa.scheduling_date < DATE_ADD(#{ew.entryDate}, INTERVAL 1 DAY)
+ </if>
+ <if test="ew.entryDateStart != null and ew.entryDateEnd != null" >
+ and slpa.scheduling_date >= #{ew.entryDateStart}
+ and slpa.scheduling_date < date_add(#{ew.entryDateEnd}, INTERVAL 1 DAY)
+ </if>
</where>
</select>
diff --git a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
index ac3ccc5..aef7ead 100644
--- a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
+++ b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
@@ -53,18 +53,36 @@
<select id="pageProductionAccounting"
resultType="com.ruoyi.production.dto.SalesLedgerProductionAccountingDto">
SELECT
- slpa.scheduling_user_id,
- slpa.scheduling_user_name,
- sum(ppout.quantity) as output_num,
- sum(slpa.finished_num * work_hours) as wages,
- SUM(slpa.finished_num) / SUM(ppout.quantity) as output_rate
+ slpa.scheduling_user_id,
+ slpa.scheduling_user_name,
+ sum(ppout.quantity) as output_num,
+ sum(slpa.finished_num * work_hours) as wages,
+ CONCAT(
+ ROUND(
+ CASE
+ WHEN SUM(ppout.quantity) = 0 OR SUM(ppout.quantity) IS NULL THEN 0
+ ELSE SUM(slpa.finished_num) * 100.0 / SUM(ppout.quantity)
+ END,
+ 2
+ ),
+ '%'
+ ) as output_rate
FROM sales_ledger_production_accounting slpa
- LEFT JOIN production_product_main ppm ON slpa.sales_ledger_work_id = ppm.id
- LEFT JOIN production_product_output ppout ON ppm.id = ppout.product_main_id
+ LEFT JOIN production_product_main ppm ON slpa.sales_ledger_work_id = ppm.id
+ LEFT JOIN production_product_output ppout ON ppm.id = ppout.product_main_id
<where>
- <if test="ew.schedulingUserName != null and ew.schedulingUserName !=''" >
- and slpa.scheduling_user_name = #{ew.schedulingUserName}
+ <if test="ew.schedulingUserName != null and ew.schedulingUserName !=''">
+ and slpa.scheduling_user_name = #{ew.schedulingUserName}
</if>
+ <if test="ew.entryDate != null ">
+ and slpa.scheduling_date >= #{ew.entryDate}
+ and slpa.scheduling_date < DATE_ADD(DATE(#{ew.entryDate}), INTERVAL 1 DAY)
+ </if>
+ <if test="ew.entryDateStart != null and ew.entryDateEnd != null">
+ and slpa.scheduling_date >= #{ew.entryDateStart}
+ and slpa.scheduling_date < DATE_ADD(DATE(#{ew.entryDateEnd}), INTERVAL 1 DAY)
+ </if>
+
</where>
GROUP BY slpa.scheduling_user_name
--
Gitblit v1.9.3