From a76e1d17d67641993dea6335cb8e1465a94df58d Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 21 五月 2026 15:39:05 +0800
Subject: [PATCH] feat(stock): 优化库存管理和成品树结构功能 1- 为ApproveProcessMapper.xml和ProductBomMapper.xml添加排序功能 2- 在ProductionProductMainDto中新增bomInputQty字段用于产品结构投入数量 3- 修改ProductionProductMainServiceImpl中投入数量计算逻辑,使用前端传入的bomInputQty值 4- 在ProductWorkOrderDto中添加bomInputQty字段并在服务实现中计算标准投入数量 5- 更新SalesLedgerMapper.xml查询逻辑,从product_summary获取电压信息 6- 为SalesLedgerProduct添加stockId字段并修改库存扣减逻辑使用具体库存ID 7- 重构StockInventoryController中的成品库存树查询接口和导入导出功能 8- 新增成品和非成品库存导入导出的数据模型和Excel工具类 9- 优化StockInventoryServiceImpl中的库存扣减逻辑,支持按特定库存ID操作 10- 更新库存导入导出功能,区分成品和非成品类型并提供相应模板
---
src/main/java/com/ruoyi/common/utils/DateUtils.java | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/utils/DateUtils.java b/src/main/java/com/ruoyi/common/utils/DateUtils.java
index 8ff95f1..0fa7e5a 100644
--- a/src/main/java/com/ruoyi/common/utils/DateUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -3,6 +3,11 @@
import java.lang.management.ManagementFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils;
@@ -22,7 +27,7 @@
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
-
+
private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
@@ -36,6 +41,15 @@
public static Date getNowDate()
{
return new Date();
+ }
+
+ public static LocalDate toLocalDate(Date date){
+ if(date == null) return LocalDate.now();
+ // 2. 鎸囧畾鍥哄畾鏃跺尯杞崲锛堝涓滃叓鍖篣TC+8銆乁TC闆舵椂鍖猴級
+ return date.toInstant()
+ .atZone(ZoneId.of("Asia/Shanghai")) // 涓滃叓鍖猴紙鍖椾含/涓婃捣鏃跺尯锛�
+ // .atZone(ZoneId.of("UTC")) // 鍙�夛細UTC闆舵椂鍖�
+ .toLocalDate();
}
/**
@@ -121,7 +135,7 @@
return null;
}
}
-
+
/**
* 鑾峰彇鏈嶅姟鍣ㄥ惎鍔ㄦ椂闂�
*/
@@ -132,16 +146,28 @@
}
/**
- * 璁$畻涓や釜鏃堕棿宸�
+ * 璁$畻鐩稿樊澶╂暟
*/
- public static String getDatePoor(Date endDate, Date nowDate)
+ public static int differentDaysByMillisecond(Date date1, Date date2)
+ {
+ return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
+ }
+
+ /**
+ * 璁$畻鏃堕棿宸�
+ *
+ * @param endDate 鏈�鍚庢椂闂�
+ * @param startTime 寮�濮嬫椂闂�
+ * @return 鏃堕棿宸紙澶�/灏忔椂/鍒嗛挓锛�
+ */
+ public static String timeDistance(Date endDate, Date startTime)
{
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
// long ns = 1000;
// 鑾峰緱涓や釜鏃堕棿鐨勬绉掓椂闂村樊寮�
- long diff = endDate.getTime() - nowDate.getTime();
+ long diff = endDate.getTime() - startTime.getTime();
// 璁$畻宸灏戝ぉ
long day = diff / nd;
// 璁$畻宸灏戝皬鏃�
@@ -152,4 +178,23 @@
// long sec = diff % nd % nh % nm / ns;
return day + "澶�" + hour + "灏忔椂" + min + "鍒嗛挓";
}
+
+ /**
+ * 澧炲姞 LocalDateTime ==> Date
+ */
+ public static Date toDate(LocalDateTime temporalAccessor)
+ {
+ ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
+ return Date.from(zdt.toInstant());
+ }
+
+ /**
+ * 澧炲姞 LocalDate ==> Date
+ */
+ public static Date toDate(LocalDate temporalAccessor)
+ {
+ LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));
+ ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
+ return Date.from(zdt.toInstant());
+ }
}
--
Gitblit v1.9.3