From 57f96bfa5d9dd779db8eb8c8d1a7524cd1f62127 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期日, 04 一月 2026 10:46:32 +0800
Subject: [PATCH] #getArmType$

---
 src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java                 |    3 
 src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java                |  406 ++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/entity/ViewStockUseBeanDigitalTwin.java       |   12 
 src/main/java/com/zy/asrs/entity/param/ViewOrderParam.java              |   24 ++
 src/main/java/com/zy/asrs/controller/OpenController.java                |   15 +
 src/main/resources/mapper/ViewWorkInMapper.xml                          |   22 ++
 src/main/java/com/zy/asrs/entity/param/DigitalTwinRecentOrderParam.java |   34 +++
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java             |   26 ++
 src/main/java/com/zy/asrs/service/OpenService.java                      |    1 
 9 files changed, 536 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 10e46eb..ca38880 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -228,4 +228,19 @@
         return R.ok().add(openService.digitalTwinOverview());
     }
 
+
+    /**
+     * 杩戞湡璁㈠崟  杩戞湡璁㈠崟鏁伴噺,榛樿7澶�
+     */
+    @RequestMapping("/digitalTwin/recentOrder")
+    public R digitalTwinRecentOrder(@RequestHeader(required = false) String appkey,
+                                 @RequestBody DigitalTwinRecentOrderParam param,
+                                 HttpServletRequest request) {
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        return R.ok().add(openService.digitalTwinRecentOrder(param));
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/entity/ViewStockUseBeanDigitalTwin.java b/src/main/java/com/zy/asrs/entity/ViewStockUseBeanDigitalTwin.java
index cc67192..ac08e00 100644
--- a/src/main/java/com/zy/asrs/entity/ViewStockUseBeanDigitalTwin.java
+++ b/src/main/java/com/zy/asrs/entity/ViewStockUseBeanDigitalTwin.java
@@ -9,12 +9,12 @@
  */
 @Data
 public class ViewStockUseBeanDigitalTwin {
-    private Long totalLoc;    	//搴撲綅鎬绘暟
-    private Long useLoc;    	//宸茬敤搴撲綅
-    private Long idleLoc;    	//鍓╀綑搴撲綅
-    private Long todayOutbound;    	//浠婃棩鍑哄簱
-    private Long todayWarehousing;    	//浠婃棩鍏ュ簱
-    private Long remainingStock;    	//鍓╀綑搴撳瓨
+    private Long totalLoc = 0L;    	//搴撲綅鎬绘暟
+    private Long useLoc = 0L;    	//宸茬敤搴撲綅
+    private Long idleLoc = 0L;    	//鍓╀綑搴撲綅
+    private Long todayOutbound = 0L;    	//浠婃棩鍑哄簱
+    private Long todayWarehousing = 0L;    	//浠婃棩鍏ュ簱
+    private Long remainingStock = 0L;    	//鍓╀綑搴撳瓨
     private String nowData;    	//鍓╀綑搴撳瓨
 
 }
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/entity/param/DigitalTwinRecentOrderParam.java b/src/main/java/com/zy/asrs/entity/param/DigitalTwinRecentOrderParam.java
new file mode 100644
index 0000000..7a3a2c4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/DigitalTwinRecentOrderParam.java
@@ -0,0 +1,34 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/6/13
+ */
+@Data
+public class DigitalTwinRecentOrderParam {
+
+    // 寮�濮嬫棩鏈燂紝鏍煎紡锛�20251022銆備笉浼犻粯璁�7澶┿��
+    private String startDate;
+
+    // 缁撴潫鏃ユ湡锛屾牸寮忥細20251022銆傞厤鍚坰tartDate浣跨敤銆�
+    private String endDate;
+
+    private String memo;
+
+    private List<ViewOrderParam> viewOrderParamList;
+    private List<DataCode> dataCodeList;
+
+    @Data
+    public static class DataCode {
+
+        // 鐗╂枡缂栧彿
+        private String orderDate;
+        // 鐗╂枡鏁伴噺
+        private Long orderNum;
+
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/ViewOrderParam.java b/src/main/java/com/zy/asrs/entity/param/ViewOrderParam.java
new file mode 100644
index 0000000..1344f8d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/ViewOrderParam.java
@@ -0,0 +1,24 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/6/13
+ */
+public class ViewOrderParam {
+
+    // 鐗╂枡缂栧彿
+    private String ymd;
+    // 鐗╂枡鏁伴噺
+    private Long qty;
+    public String getYmd() {
+        return ymd;
+    }
+    public void setYmd(String ymd) {
+        this.ymd = ymd;
+    }
+    public Long getQty() { return qty;}
+    public void setQty(Long qty) { this.qty = qty;}
+}
diff --git a/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java b/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
index 6a804db..c2028bb 100644
--- a/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.mapper;
 
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.ViewOrderParam;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -80,4 +81,6 @@
 	Integer selectWorkCountInSum(String matnr, @Param("start") String startTime, @Param("end") String endTime);
 
 	Integer selectWorkCountOutSum(String matnr, @Param("start") String startTime, @Param("end") String endTime);
+
+	List<ViewOrderParam> getAsrOrderView(@Param("ymdS") String startTime, @Param("ymdD") String endTime);
 }
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index c794e02..1640b12 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -49,4 +49,5 @@
      * 搴撳瓨缁熻
      */
     ViewStockUseBeanDigitalTwin digitalTwinOverview();
+    DigitalTwinRecentOrderParam digitalTwinRecentOrder(DigitalTwinRecentOrderParam digitalTwinRecentOrderParam);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index ddd2c06..bb47980 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
@@ -14,6 +15,7 @@
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.asrs.utils.TimeCalculatorUtils;
 import com.zy.common.model.DetlDto;
 import com.zy.common.utils.NodeUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -609,7 +611,7 @@
         viewStockUseBeanDigitalTwin.setIdleLoc(Integer.toUnsignedLong(selectCountLocMastO));
         List<ViewInOutBean> list = reportQueryMapper.getViewInOutAll(new ViewInOutBean());
         Date date = new Date();
-        String format = new SimpleDateFormat("yyyy-MM-dd").format(date);
+        String format = new SimpleDateFormat(DateUtils.yyyyMMdd_F).format(date);
         viewStockUseBeanDigitalTwin.setNowData(format);
         for (ViewInOutBean view : list) {
             if (view.getYmd().equals(format)) {
@@ -621,4 +623,26 @@
         return viewStockUseBeanDigitalTwin;
     }
 
+    @Override
+    @Transactional
+    public DigitalTwinRecentOrderParam digitalTwinRecentOrder(DigitalTwinRecentOrderParam param) {
+        Date date = new Date();
+        if (Cools.isEmpty(param.getStartDate()) || !TimeCalculatorUtils.isValidDateFormat(param.getStartDate(), DateUtils.yyyyMMdd) || TimeCalculatorUtils.isFutureDate(param.getStartDate(), DateUtils.yyyyMMdd)) {
+            param.setMemo("寮�濮嬫棩鏈熷紓甯� 锛�"+param.getStartDate());
+            String timeFrontSevenYesterday = new SimpleDateFormat(DateUtils.yyyyMMdd).format(TimeCalculatorUtils.timeFrontSevenYesterday6(date));//涓冨ぉ鍓�
+            param.setStartDate(timeFrontSevenYesterday);
+            String format = new SimpleDateFormat(DateUtils.yyyyMMdd).format(date);//褰撳ぉ
+            param.setEndDate(format);
+            param.setMemo(param.getMemo()+";鍒濆鍖栨棩鏈熶负 锛�"+param.getStartDate()+"===>" + param.getEndDate());
+        } else if (Cools.isEmpty(param.getEndDate()) || !TimeCalculatorUtils.isValidDateFormat(param.getEndDate(), DateUtils.yyyyMMdd)) {
+            param.setMemo("缁撴潫鏃ユ湡寮傚父 锛�"+param.getEndDate());
+            String format = new SimpleDateFormat(DateUtils.yyyyMMdd).format(date);//褰撳ぉ
+            param.setEndDate(format);
+            param.setMemo(param.getMemo()+";鍒濆鍖栨棩鏈熶负 锛�"+param.getStartDate()+"===>" + param.getEndDate());
+        }
+        List<ViewOrderParam> asrOrderView = reportQueryMapper.getAsrOrderView(param.getStartDate(), param.getEndDate());
+        param.setViewOrderParamList(asrOrderView);
+        return param;
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java b/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java
new file mode 100644
index 0000000..d4c3440
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/TimeCalculatorUtils.java
@@ -0,0 +1,406 @@
+package com.zy.asrs.utils;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.time.temporal.WeekFields;
+import java.util.*;
+
+public class TimeCalculatorUtils {
+
+
+
+    //鑾峰彇涓冨ぉ鍓嶇殑鏃ユ湡锛堟棩鏈熷ぉ鏁板噺涓冿級
+    public static Date timeFrontSevenYesterday(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, -7);
+        return calendar.getTime();
+    }
+
+
+
+    //鑾峰彇涓冨ぉ鍓嶇殑鏃ユ湡锛堟棩鏈熷ぉ鏁板噺涓冿紝鍖呭惈褰撳ぉ锛�
+    public static Date timeFrontSevenYesterday6(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, -6);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇涓冨ぉ鍚庣殑鏃ユ湡锛堟棩鏈熷ぉ鏁板姞涓冿級
+    public static Date timeAfterSevenYesterday(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, 7);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇鐩稿樊n澶╃殑鏃ユ湡锛堟棩鏈熷ぉ鏁板姞N锛�
+    public static Date timeYesterdayN(Date date,int day){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, day);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇骞存湀鏃�
+    public static String timeYestMonthDay(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH) + 1;  // 鏈堜唤浠�0寮�濮嬶紝闇�瑕佸姞1
+        int day = calendar.get(Calendar.DAY_OF_MONTH);
+        return year+"骞�"+month+"鏈�"+day+"鏃�";
+    }
+
+    //鑾峰彇骞�
+    public static int timeYest(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        return calendar.get(Calendar.YEAR);
+    }
+
+    //鑾峰彇鏈�
+    public static int timeMonth(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        return calendar.get(Calendar.MONTH) + 1;
+    }
+
+    //鑾峰彇鏃�
+    public static int timeDay(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+
+        return calendar.get(Calendar.DAY_OF_MONTH);
+    }
+    //鑾峰彇骞村樊寮�
+    public static int DifferenceYest(Date startDay,Date endDay){
+        int startYest = timeYest(startDay);
+        int endYest = timeYest(endDay);
+        return endYest-startYest;
+    }
+    //鑾峰彇鏈堝樊寮�
+    public static int DifferenceMonth(Date startDay,Date endDay){
+        int startMonth = timeMonth(startDay);
+        int endMonth = timeMonth(endDay);
+        return endMonth-startMonth;
+    }
+    //鑾峰彇澶╁樊寮�
+    public static int DifferenceDayInt(Date startDay,Date endDay){
+        return DifferenceDayLong(startDay,endDay).intValue();
+    }
+    //鑾峰彇澶╁樊寮�
+    public static Long DifferenceDayLong(Date startDay,Date endDay){
+
+        LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay));
+        LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay));
+
+        return ChronoUnit.DAYS.between(a, b)+1;
+    }
+    //鑾峰彇澶╁樊寮�
+    public static Double DifferenceDayMorningAfternoon(Date startDay,Date endDay,int startTime,int endTime){
+        double between = DifferenceDayLong(startDay, endDay).doubleValue();
+        if (startTime==2){
+            between = between-0.5;
+        }
+        if (endTime == 1){
+            between = between-0.5;
+        }
+        return between;
+    }
+
+    //鑾峰彇姣宸紓
+    public static Long differenceInMilliseconds(Date startDay, Date endDay) {
+        if (startDay == null || endDay == null) {
+            throw new IllegalArgumentException("Dates cannot be null");
+        }
+
+        // 鑾峰彇姣宸紓
+        return endDay.getTime() - startDay.getTime();
+    }
+
+    //鑾风宸紓
+    public static long differenceInSeconds(Date startDay, Date endDay) {
+        if (startDay == null || endDay == null) {
+            throw new IllegalArgumentException("Dates cannot be null");
+        }
+
+        // 鑾峰彇姣宸紓锛屽苟杞崲涓虹
+        long millisecondsDifference = endDay.getTime() - startDay.getTime();
+        return millisecondsDifference / 1000;
+    }
+
+    public static boolean CompareData(Date startDay,Date endDay){
+
+        // 灏嗘棩鏈熷瓧绗︿覆瑙f瀽涓篖ocalDate瀵硅薄
+        LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay));
+        LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay));
+
+        // 姣旇緝鏃ユ湡
+        if (a.isAfter(b)) {
+            return false;
+        } else if (a.isBefore(b)) {
+            return true;
+        } else {
+            return true;
+        }
+    }
+
+    //java.time.LocalDate 杞崲涓� java.util.Date;
+    public static Date DateLocalDate(LocalDate localDate) {
+        return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+    }
+
+    //鑾峰彇鐜板湪鏃ユ湡鏄綋鏈堢鍑犲懆
+    public static int WeeklyNowMonthDay(Date date) {
+//        int day = timeDay(date);
+//        if (day<7){
+//            if (WeeklyNowMonth(WeeklyMonday(date))>2){
+//                return 1;
+//            }
+//        }
+        return WeeklyNowMonth(WeeklyMonday(date));
+    }
+    public static int WeeklyNowMonth(Date date) {
+//        LocalDate currentDate = LocalDate.now();
+        LocalDate currentDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+
+        WeekFields weekFields = WeekFields.of(Locale.getDefault());
+
+        int weekOfMonth = currentDate.get(weekFields.weekOfMonth());
+
+
+        return weekOfMonth;
+    }
+
+    //闄愬埗涓や釜鏃ユ湡鏄懆涓�鍜屽懆鏈�  宸ヤ綔鏃�  鍛ㄤ竴鍒板懆鍏�
+    public static void WeeklySix(Date date) {
+//        LocalDate startDate = LocalDate.of(2022, 9, 5); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+        LocalDate startDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        System.out.println("褰撳墠鏃ユ湡 " + startDate + " 鍛�");
+
+        LocalDate endDate = startDate.plus(6, ChronoUnit.DAYS); // 缁撴潫鏃ユ湡鏄紑濮嬫棩鏈熷姞涓�6澶�
+        System.out.println("褰撳墠鏃ユ湡鍔犱笂6澶╂槸 " + endDate + " 鍛�");
+
+
+        // 濡傛灉寮�濮嬫棩鏈熶笉鏄懆涓�锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆涓�
+        if (startDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            startDate = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+        }
+
+        // 濡傛灉缁撴潫鏃ユ湡涓嶆槸鍛ㄦ湯锛堝嵆鍛ㄥ叚鎴栧懆鏃ワ級锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆鏈�
+        if (endDate.getDayOfWeek() != DayOfWeek.SATURDAY && endDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+            endDate = endDate.with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
+        }
+
+        // 纭繚涓や釜鏃ユ湡涔嬮棿鐩搁殧涓冨ぉ
+        while (startDate.plus(7, ChronoUnit.DAYS).isBefore(endDate)) {
+            startDate = startDate.plus(7, ChronoUnit.DAYS);
+        }
+
+        System.out.println("寮�濮嬫棩鏈燂細" + startDate);
+        System.out.println("缁撴潫鏃ユ湡锛�" + endDate);
+    }
+
+    //闄愬埗涓や釜鏃ユ湡鏄懆涓�鍜屽懆鏈�  鍛ㄤ竴鍒板懆鏃�
+    public static List<Date> WeeklySeven(Date date) {
+//        LocalDate startDate = LocalDate.of(2022, 9, 5); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+        LocalDate startDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+//        System.out.println("褰撳墠鏃ユ湡 " + startDate + " 鍛�");
+
+        LocalDate endDate = startDate.plus(6, ChronoUnit.DAYS); // 缁撴潫鏃ユ湡鏄紑濮嬫棩鏈熷姞涓�6澶�
+//        System.out.println("褰撳墠鏃ユ湡鍔犱笂6澶╂槸 " + endDate + " 鍛�");
+
+        // 濡傛灉寮�濮嬫棩鏈熶笉鏄懆涓�锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆涓�
+        if (startDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            startDate = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+        }
+
+        // 濡傛灉缁撴潫鏃ユ湡涓嶆槸鍛ㄦ棩锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆鏃�
+        if (endDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+            endDate = endDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
+        }
+
+        // 纭繚涓や釜鏃ユ湡涔嬮棿鐩搁殧涓冨ぉ
+        while (startDate.plus(7, ChronoUnit.DAYS).isBefore(endDate)) {
+            startDate = startDate.plus(7, ChronoUnit.DAYS);
+        }
+
+        List<Date> dateList = new ArrayList<>();
+        dateList.add(DateLocalDate(startDate));
+        dateList.add(DateLocalDate(endDate));
+        return dateList;
+//        System.out.println("寮�濮嬫棩鏈燂細" + startDate);
+//        System.out.println("缁撴潫鏃ユ湡锛�" + endDate);
+    }
+
+    //鍒ゆ柇鏄笉鏄懆涓�
+    public static boolean WeeklyOneSign(Date date) {
+        LocalDate localDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        // 鍒ゆ柇鏄笉鏄懆涓�
+        if (localDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            return false;
+        }
+        return true;
+    }
+
+    //鑾峰彇鏈懆鍛ㄤ竴
+    public static Date WeeklyMonday (Date date) {
+        LocalDate localDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        // 涓嬪懆鍛ㄤ竴
+        localDate = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+
+        // 灏哃ocalDate杞崲涓篋ate
+        Date monday = DateLocalDate(localDate);
+
+        // 鍒欏皢瀹冭皟鏁村埌鏈懆鍛ㄤ竴
+        return timeFrontSevenYesterday(monday);
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡鎵�鍦ㄧ殑鍛ㄤ竴鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayNow(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        return WeeklySeven(nowMonday);
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡涓婁竴鍛ㄥ懆涓�鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayFront(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        Date frontSevenYesterday = timeFrontSevenYesterday(nowMonday);
+        return WeeklySeven(frontSevenYesterday);
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡涓嬩竴鍛ㄥ懆涓�鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayAfter(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        Date afterSevenYesterday = timeAfterSevenYesterday(nowMonday);
+        return WeeklySeven(afterSevenYesterday);
+    }
+
+    //鑾峰彇鍛ㄤ竴鍒板懆鏈�
+    public static List<Date> WeeklyDays(Date date){
+        Date nowMonday = WeeklyMonday(date);
+        List<Date> dateList = new ArrayList<>();
+        dateList.add(nowMonday);
+        for (int i = 1; i<7 ; i++){
+            dateList.add(timeYesterdayN(nowMonday,i));
+        }
+        return dateList;
+    }
+
+    //鑾峰彇鍛ㄤ竴鍒板懆鏈�
+    public static List<Date> WeeklyListDays(List<Date> dates){
+        Date date = dates.get(0);
+        Date nowMonday = WeeklyMonday(date);
+        List<Date> dateList = new ArrayList<>();
+        dateList.add(nowMonday);
+        for (int i = 1; i<7 ; i++){
+            dateList.add(timeYesterdayN(nowMonday,i));
+        }
+        return dateList;
+    }
+
+    public static void main(String[] args) {
+        Date now = new Date();
+        int weeklyNowMonth = WeeklyNowMonthDay(now);
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth + " 鍛�");
+
+        LocalDate startDate1 = LocalDate.of(2024, 2, 29);
+        int weeklyNowMonth1 = WeeklyNowMonthDay(DateLocalDate(startDate1));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth1 + " 鍛�");
+
+        LocalDate startDate2 = LocalDate.of(2024, 3, 5);
+        int weeklyNowMonth2 = WeeklyNowMonthDay(DateLocalDate(startDate2));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth2 + " 鍛�");
+
+        LocalDate startDate3 = LocalDate.of(2024, 3, 10);
+        int weeklyNowMonth3 = WeeklyNowMonthDay(DateLocalDate(startDate3));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth3 + " 鍛�");
+
+        LocalDate startDate4 = LocalDate.of(2024, 3, 31);
+        int weeklyNowMonth4 = WeeklyNowMonthDay(DateLocalDate(startDate4));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth4 + " 鍛�");
+
+        LocalDate startDate5 = LocalDate.of(2024, 4, 1);
+        int weeklyNowMonth5 = WeeklyNowMonthDay(DateLocalDate(startDate5));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth5 + " 鍛�");
+
+        LocalDate startDate6 = LocalDate.of(2024, 4, 7);
+        int weeklyNowMonth6 = WeeklyNowMonthDay(DateLocalDate(startDate6));
+        System.out.println("褰撳墠鏃ユ湡鏄 " + weeklyNowMonth6 + " 鍛�");
+    }
+
+//    public static void main(String[] args) {
+//        Date now = new Date();
+//        //鏈懆
+//        List<Date> dateList = WeeklyMondayAndSundayNow(now);
+//        for (Date date : dateList){
+//            System.out.println("------------------------------");
+//            System.out.println(date);
+//        }
+//        //涓婂懆
+//        List<Date> dateList1 = WeeklyMondayAndSundayFront(now);
+//        for (Date date : dateList1){
+//            System.out.println("------------------------------");
+//            System.out.println(date);
+//        }
+//        //涓嬪懆
+//        List<Date> dateList2 = WeeklyMondayAndSundayAfter(now);
+//        for (Date date : dateList2){
+//            System.out.println("------------------------------");
+//            System.out.println(date);
+//        }
+//        //鍛�
+//        List<Date> dateList3 = WeeklyDays(now);
+//        for (Date date : dateList3){
+//            System.out.println("------------------------------");
+//            System.out.println(date);
+//        }
+//    }
+
+
+    /**
+     * 鏍¢獙瀛楃涓叉槸鍚︽槸鎸囧畾鏍煎紡鐨勫悎娉曟棩鏈�
+     * @param dateString 寰呮牎楠岀殑鏃ユ湡瀛楃涓诧紝濡� "20260104"
+     * @param dateFormat 棰勬湡鐨勬棩鏈熸牸寮忥紝濡� "yyyyMMdd"
+     * @return true 琛ㄧず鏍煎紡鍚堟硶涓旀槸鏈夋晥鏃ユ湡锛宖alse 琛ㄧず鏍煎紡閿欒鎴栨棩鏈熸棤鏁�
+     */
+    public static boolean isValidDateFormat(String dateString, String dateFormat) {
+        if (dateString == null || dateFormat == null || dateString.length() != dateFormat.length()) {
+            return false;
+        }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat);
+        try {
+            LocalDate parsedDate = LocalDate.parse(dateString, formatter);
+            return true; // 瑙f瀽鎴愬姛璇存槑鏍煎紡姝g‘涓旀棩鏈熸湁鏁�
+        } catch (DateTimeParseException e) {
+            return false; // 瑙f瀽澶辫触璇存槑鏍煎紡閿欒鎴栨棩鏈熸棤鏁�
+        }
+    }
+
+    /**
+     * 鏍¢獙瀛楃涓叉槸鍚﹁〃绀烘湭鏉ユ椂闂达紙棣栧厛浼氭牎楠屾牸寮忔槸鍚︽纭級
+     * @param dateString 寰呮牎楠岀殑鏃ユ湡瀛楃涓诧紝濡� "20260104"
+     * @param dateFormat 棰勬湡鐨勬棩鏈熸牸寮忥紝濡� "yyyyMMdd"
+     * @return true 琛ㄧず鏄湭鏉ユ椂闂达紝false 琛ㄧず涓嶆槸鏈潵鏃堕棿鎴栨牸寮忔棤鏁�
+     */
+    public static boolean isFutureDate(String dateString, String dateFormat) {
+        if (!isValidDateFormat(dateString, dateFormat)) {
+            return false; // 鏍煎紡鏃犳晥鐩存帴杩斿洖false
+        }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat);
+        LocalDate inputDate = LocalDate.parse(dateString, formatter);
+        LocalDate today = LocalDate.now();
+        return inputDate.isAfter(today); // 涓庡綋鍓嶆棩鏈熸瘮杈�
+    }
+
+}
diff --git a/src/main/resources/mapper/ViewWorkInMapper.xml b/src/main/resources/mapper/ViewWorkInMapper.xml
index 0f5d0cd..c4fb933 100644
--- a/src/main/resources/mapper/ViewWorkInMapper.xml
+++ b/src/main/resources/mapper/ViewWorkInMapper.xml
@@ -50,6 +50,19 @@
 		</if>
 </sql>
 
+<sql id="viewAsrOrderView">
+	<if test="ymdS!=null and ymdS!='' ">
+		<![CDATA[
+		and ymd >= #{ymdS}
+		]]>
+	</if>
+	<if test="ymdD!=null and ymdD!='' ">
+		<![CDATA[
+		and ymd <= #{ymdD}
+		]]>
+	</if>
+</sql>
+
 <sql id="viewWorkOutConditionSql">
 		<if test="loc_no!=null and loc_no!='' ">
 			and loc_no like '%' + #{loc_no} + '%'
@@ -157,4 +170,13 @@
 	Order by a.io_time desc
 </select>
 
+<!-- 涓嶅垎椤垫煡璇㈡墍鏈変俊鎭� -->
+<select id="getAsrOrderView" parameterType="com.zy.asrs.entity.param.ViewOrderParam" resultType="com.zy.asrs.entity.param.ViewOrderParam">
+	select *
+	from asr_order_view
+	where 1=1
+	<include refid="viewAsrOrderView"></include>
+	Order by ymd desc
+</select>
+
 </mapper>

--
Gitblit v1.9.1