From 26becb8ead5a00ed870a02da6535d7f1c54f32cc Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 22 七月 2024 19:59:02 +0800
Subject: [PATCH] 班次新增定时+检验任务负责人

---
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java              |    2 
 system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java                 |   32 ++++++++++
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java               |    2 
 inspect-server/src/main/resources/mapper/InsOrderMapper.xml                            |    2 
 inspect-server/src/main/resources/mapper/InsSampleMapper.xml                           |    5 +
 system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java                   |   75 ++++++++++++++++++++++++
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java        |    4 
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |   22 +++++--
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java     |    3 
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java    |    4 
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsSampleUser.java                   |   12 +++
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java          |    2 
 12 files changed, 144 insertions(+), 21 deletions(-)

diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java
index 169a309..89582d8 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java
@@ -62,8 +62,8 @@
     @ValueClassify("妫�楠屼笅鍗�")
     @ApiOperation(value = "妫�楠屽垎閰�")
     @PostMapping("/upInsOrder")
-    public Result<?> upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId) {
-        return Result.success(insOrderService.upInsOrder(orderId, sampleId, appointed, userId));
+    public Result<?> upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId,String sonLaboratory) {
+        return Result.success(insOrderService.upInsOrder(orderId, sampleId, appointed, userId,sonLaboratory));
     }
     @ValueClassify("妫�楠屼笅鍗�")
     @ApiOperation(value = "娣诲姞妫�楠屼笅鍗曟暟鎹�")
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
index 406831b..d53cc19 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -90,8 +90,8 @@
     @ValueClassify("妫�楠屼换鍔�")
     @ApiOperation(value = "浠诲姟浜ゆ帴")
     @PostMapping("/upPlanUser")
-    public Result<?> upPlanUser(Integer userId, Integer orderId) {
-        return Result.success(insOrderPlanService.upPlanUser(userId, orderId));
+    public Result<?> upPlanUser(Integer userId, Integer orderId,String sonLaboratory) {
+        return Result.success(insOrderPlanService.upPlanUser(userId, orderId, sonLaboratory));
     }
 
     @ValueClassify("妫�楠屼换鍔�")
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
index 69723bd..d776bbd 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
@@ -25,7 +25,7 @@
 */
 public interface InsSampleMapper extends BaseMapper<InsSample> {
 
-    IPage<InsOrderPlanVO> findInsSampleAndOrder(Page page, QueryWrapper<InsOrderPlanDTO> ew, Integer userId);
+    IPage<InsOrderPlanVO> findInsSampleAndOrder(Page page, QueryWrapper<InsOrderPlanDTO> ew, Integer userId,String sonLaboratory);
 
     IPage<InsOrderPlanTaskSwitchVo> inspectionOrderDetailsTaskSwitching(Page page, QueryWrapper<InsOrderPlanDTO> ew, Integer userId);
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsSampleUser.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsSampleUser.java
index 2afb817..8512567 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsSampleUser.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsSampleUser.java
@@ -10,6 +10,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.apache.poi.ss.formula.functions.T;
 
 /**
  * 鏍峰搧璐熻矗浜鸿褰�
@@ -57,9 +58,18 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;
 
-    public InsSampleUser(Integer insSampleId, Integer userId, Integer state) {
+    /**
+     * 瀛愯瘯楠屽
+     * @param insSampleId
+     * @param userId
+     * @param state
+     */
+    private String sonLaboratory;
+
+    public InsSampleUser(Integer insSampleId, Integer userId, Integer state,String sonLaboratory) {
         this.insSampleId = insSampleId;
         this.userId = userId;
         this.state = state;
+        this.sonLaboratory = sonLaboratory;
     }
 }
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
index cacd4cc..4aa76b8 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -24,7 +24,7 @@
 
     Map<String, Object> doInsOrder(Integer id, String laboratory);
 
-    int upPlanUser(Integer userId, Integer orderId);
+    int upPlanUser(Integer userId, Integer orderId,String sonLaboratory);
 
     int verifyPlan(Integer orderId, String laboratory, Integer type, String tell);
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java
index 2479a02..b6adc4e 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java
@@ -23,7 +23,7 @@
     Map<String, Object> selectInsOrderParameter(IPage<InsOrder> page, SampleOrderDto sampleOrderDto);
 
     //淇敼妫�楠屼笅鍗曟暟鎹�
-    int upInsOrder(Integer orderId,Integer sampleId, String appointed, Integer userId);
+    int upInsOrder(Integer orderId,Integer sampleId, String appointed, Integer userId,String sonLaboratory);
 
     int addInsOrder(List<SampleProductDto> list, InsOrder insOrder, List<List<Integer>> pairing);
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
index 192afae..8d61c07 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -142,7 +142,8 @@
              userId = map1.get("userId");
             insOrderPlanDTO.setUserId(userId.longValue());
         }
-        IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userId);
+        String sonLaboratory = insOrderPlanDTO.getSonLaboratory();//璇曢獙瀹�
+        IPage<InsOrderPlanVO> insOrderPage = insSampleMapper.findInsSampleAndOrder(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userId,sonLaboratory);
         map.put("body", insOrderPage);
         return map;
     }
@@ -161,6 +162,7 @@
         return map;
     }
 
+    //璁ら浠诲姟
     @Override
     public boolean claimInsOrderPlan(InsOrderPlanDTO entity) {
         if (Objects.isNull(entity)) {
@@ -168,7 +170,7 @@
         }
         Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
         Integer userId = map1.get("userId");
-        InsSampleUser insSampleUser = new InsSampleUser(entity.getInsSampleId().intValue(), userId, 1);
+        InsSampleUser insSampleUser = new InsSampleUser(entity.getInsSampleId().intValue(), userId, 1,entity.getSonLaboratory());
         return insSampleUserMapper.insert(insSampleUser) > 0;
     }
 
@@ -417,7 +419,7 @@
             productVos = productVos.stream().sorted(Comparator.comparing(productVo -> productVo.getInsProduct().getInspectionItemClass())).collect(Collectors.toList());
         }
         else {
-            //鐢靛姏--鐑惊鐜�
+            //鐢靛姏--鐑惊鐜拰娓╁崌璇曢獙
             List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                     .eq(InsProduct::getInsSampleId, sampleId)
                     .eq(InsProduct::getInspectionItem, inspectionItem));
@@ -544,7 +546,7 @@
                         .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, insProduct.getInspectionItemSubclass())
                         .eq(AuxiliaryOutputWorkingHours::getOrderNo, insOrder.getEntrustCode()));
                 if (count == 0 && ObjectUtils.isNotEmpty(insProduct.getManHour())) {
-                    //娣诲姞姣忎釜浜虹殑浜ч噺宸ユ椂
+                    //娣诲姞姣忎釜浜虹殑浜ч噺宸ユ椂,瑕佸垽鏂綋鍓嶆椂闂存槸鍚︽槸杩欎釜浜虹殑鎺掔彮鏃堕棿,濡傛灉涓嶆槸鍒欐槸鍔犵彮
                     AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
                     auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//妫�娴嬬埗椤�
                     auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//妫�娴嬪瓙椤�
@@ -607,12 +609,14 @@
         });
     }
 
+    //浜ゆ帴
     @Override
-    public int upPlanUser(Integer userId, Integer orderId) {
+    public int upPlanUser(Integer userId, Integer orderId,String sonLaboratory) {
         InsSampleUser insSampleUser = new InsSampleUser();
         insSampleUser.setUserId(userId);
         insSampleUser.setInsSampleId(orderId);
         insSampleUser.setState(0);
+        insSampleUser.setSonLaboratory(sonLaboratory);
         return insSampleUserMapper.insert(insSampleUser);
     }
 
@@ -3454,7 +3458,13 @@
         info.setViewStatus(false);
         info.setJumpPath("b1-inspect-order-plan");
         informationNotificationService.addInformationNotification(info);
-        upPlanUser(verifyUser, orderId);
+        //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜�
+        InsSampleUser insSampleUser = new InsSampleUser();
+        insSampleUser.setUserId(verifyUser);
+        insSampleUser.setInsSampleId(orderId);
+        insSampleUser.setState(0);
+        insSampleUser.setSonLaboratory(laboratory);
+         insSampleUserMapper.insert(insSampleUser);
         /*鏍¢獙涓�涓媟esult琛�*/
         CompletableFuture.supplyAsync(() -> {
             List<Integer> ips = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList());
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
index c9689b7..3588972 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -122,7 +122,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId) {
+    public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId,String sonLaboratory) {
         InsOrder insOrder = new InsOrder();
         insOrder.setId(orderId);
         insOrder.setAppointed(LocalDate.parse(appointed));
@@ -147,6 +147,7 @@
             insSampleUser.setState(0);
             insSampleUser.setUserId(userId);
             insSampleUser.setInsSampleId(orderId);
+            insSampleUser.setSonLaboratory(sonLaboratory);
             insSampleUserMapper.insert(insSampleUser);
         }
         return 1;
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index 8c0fbce..b6396c8 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -421,7 +421,7 @@
         GROUP_CONCAT(b.inspection_item2
         SEPARATOR ',')
         inspection_item from (select * ,
-        GROUP_CONCAT(CONCAT(inspection_item,'',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
+        GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
         BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
         where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
         GROUP BY
diff --git a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
index c644e16..b2f30cf 100644
--- a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -47,9 +47,10 @@
         LEFT JOIN ( <!--SELECT * FROM ins_sample_user GROUP BY ins_sample_id, user_id -->
         SELECT *
         FROM ins_sample_user u
-        WHERE (ins_sample_id, id) IN (
+        WHERE son_laboratory=#{sonLaboratory} and (ins_sample_id, id) IN (
         SELECT ins_sample_id, MAX(id)
         FROM ins_sample_user
+        WHERE son_laboratory=#{sonLaboratory}
         GROUP BY ins_sample_id
         )
         ORDER BY ins_sample_id, id
@@ -71,7 +72,7 @@
         ) a
         LEFT JOIN ins_order_state ios ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory
         left join (SELECT td.user_id order_user_id, td.ins_sample_id FROM ins_sample_user td,(SELECT max(id) id FROM
-        ins_sample_user GROUP BY ins_sample_id) md where td.id = md.id
+        ins_sample_user where son_laboratory=#{sonLaboratory} GROUP BY ins_sample_id) md where td.id = md.id
         <if test="userId !=null and userId!=''">
             and user_id = #{userId} OR user_id is NULL
         </if>
diff --git a/system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java b/system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java
index 1760331..2d3b8bd 100644
--- a/system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java
+++ b/system-run/src/main/java/com/yuanchu/mom/backup/MysqlDataBackup.java
@@ -1,16 +1,34 @@
 package com.yuanchu.mom.backup;
 
+import com.yuanchu.mom.dto.PerformanceShiftAddDto;
+import com.yuanchu.mom.mapper.EnumMapper;
+import com.yuanchu.mom.pojo.Enums;
+import com.yuanchu.mom.pojo.PerformanceShift;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.EnumService;
+import com.yuanchu.mom.service.PerformanceShiftService;
+import com.yuanchu.mom.service.UserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.io.*;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.temporal.TemporalAdjusters;
+import java.time.temporal.WeekFields;
 import java.util.Date;
+import java.util.Dictionary;
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
 
-//@Component
+@Component
 @EnableScheduling
 @Slf4j
 public class MysqlDataBackup {
@@ -55,11 +73,20 @@
     @Value("${backup.mysqldump}")
     private String mysqldump;
 
+    @Resource
+    private PerformanceShiftService performanceShiftService;
+
+    @Resource
+    private EnumService enumService;
+
+    @Resource
+    private UserService userService;
+
     /**
      * 姣忓ぉ鏅氫笂23鐐�05绉掓墽琛� 銆�  0 0 4 1/1 * ? 銆�
      * 娴嬭瘯 20 绉掍竴娆°��  0/20 * * * * ? 銆慇Scheduled(cron = "5 * 23 * * ?")
      */
-//    @Scheduled(cron = "5 0 23 * * ?")
+    //@Scheduled(cron = "0/20 * * * * ?")
     private void configureTasks() {
         log.info("銆愬浠芥暟鎹簱銆�--START");
         String dbUrl2 = dbUrl.replace("jdbc:mysql://", "");
@@ -171,6 +198,50 @@
         }
     }
 
+
+    /**
+     * 瀹氭椂浠诲姟,姣忎釜鏈�1鍙风殑00:00:00
+     * 缁欐瘡涓汉閮借繘琛屾帓鐝�(榛樿鏃╃彮)
+     */
+    //@Scheduled(cron = "0 0 0 1 *?")
+    //@Scheduled(cron = "0/20 * * * * ?")
+    private void timerCreateSchedule(){
+        System.out.println("寮�濮嬬粰姣忎釜浜鸿繘琛屾帓鐝�,榛樿鏃╃彮======start");
+        // TODO 缁欐瘡涓汉閮借繘琛屾帓鐝�(榛樿鏃╃彮)
+        PerformanceShiftAddDto performanceShiftAddDto = new PerformanceShiftAddDto();
+        //鐝--鏃�(鏌ヨ瀛楀吀)
+        List<Enums> shiftType = enumService.selectEnumByCategory("鐝绫诲瀷");
+        List<String> collect = shiftType.stream().filter(enums -> enums.getLabel().equals("鏃�")).map(enums -> enums.getValue()).collect(Collectors.toList());
+        performanceShiftAddDto.setShift(collect.get(0));
+        //浜哄憳--鎵�鏈変汉
+        String userIds = userService.getDeviceManager().stream().map(user -> user.getId().toString()).distinct().collect(Collectors.joining(","));
+        performanceShiftAddDto.setUserId(userIds);
+        //鍛ㄦ--褰撴湀鎵�鏈�
+        // 鑾峰彇褰撳墠鏃ユ湡
+        LocalDate today = LocalDate.now();
+        // 鑾峰彇鏈湀鐨勭涓�澶╁拰鏈�鍚庝竴澶�
+        LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
+        LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
+        // 鑾峰彇鍛ㄥ瓧娈典俊鎭紙鏍规嵁鍖哄煙璁剧疆锛�
+        WeekFields weekFields = WeekFields.of(Locale.getDefault());
+        // 鑾峰彇鏈湀绗竴澶╃殑鍛ㄤ竴
+        LocalDate startOfWeek = firstDayOfMonth.with(TemporalAdjusters.previousOrSame(weekFields.getFirstDayOfWeek()));
+        // 閬嶅巻鏈湀鎵�鏈夊ぉ鏁帮紝鎵惧嚭姣忓懆鐨勭涓�澶╁拰鏈�鍚庝竴澶�
+        LocalDate endOfWeek;
+        while (startOfWeek.isBefore(firstDayOfMonth.plusMonths(1))) {
+            endOfWeek = startOfWeek.plusDays(6);
+            LocalDateTime startDateTime = LocalDateTime.of(startOfWeek, LocalTime.MIDNIGHT);
+            LocalDateTime endDateTime = LocalDateTime.of(endOfWeek, LocalTime.MIDNIGHT);
+            System.out.println("Week starts on " + startDateTime + " and ends on " + endDateTime);
+            performanceShiftAddDto.setStartWeek(startDateTime);
+            performanceShiftAddDto.setEndWeek(endDateTime);
+            performanceShiftService.performanceShiftAdd(performanceShiftAddDto);
+            startOfWeek = startOfWeek.plusWeeks(1);
+        }
+
+        System.out.println("鎺掔彮缁撴潫======end");
+    }
+
     /**
      * 鍒ゆ柇鏂囦欢鏄惁瀛樺湪锛屼笉瀛樺湪鍒涘缓
      */
diff --git a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
index c9fa8ae..4e345ea 100644
--- a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
+++ b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
@@ -3,12 +3,42 @@
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.temporal.TemporalAdjusters;
+import java.time.temporal.WeekFields;
+import java.util.Locale;
+
 
 @SpringBootTest
 class SystemRunApplicationTest {
 
     @Test
-    void  contextLoads() throws Exception {
+    void  contextLoads() {
+                // 鑾峰彇褰撳墠鏃ユ湡
+                LocalDate today = LocalDate.now();
 
+                // 鑾峰彇鏈湀鐨勭涓�澶╁拰鏈�鍚庝竴澶�
+                LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
+                LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
+
+                // 鑾峰彇鍛ㄥ瓧娈典俊鎭紙鏍规嵁鍖哄煙璁剧疆锛�
+                WeekFields weekFields = WeekFields.of(Locale.getDefault());
+
+                // 鑾峰彇鏈湀绗竴澶╃殑鍛ㄤ竴
+                LocalDate startOfWeek = firstDayOfMonth.with(TemporalAdjusters.previousOrSame(weekFields.getFirstDayOfWeek()));
+
+                // 閬嶅巻鏈湀鎵�鏈夊ぉ鏁帮紝鎵惧嚭姣忓懆鐨勭涓�澶╁拰鏈�鍚庝竴澶�
+                LocalDate endOfWeek;
+                while (startOfWeek.isBefore(firstDayOfMonth.plusMonths(1))) {
+                    endOfWeek = startOfWeek.plusDays(6);
+                    LocalDateTime startDateTime = LocalDateTime.of(startOfWeek, LocalTime.MIDNIGHT);
+                    LocalDateTime endDateTime = LocalDateTime.of(endOfWeek, LocalTime.MIDNIGHT);
+
+                    System.out.println("Week starts on " + startDateTime + " and ends on " + endDateTime);
+
+                    startOfWeek = startOfWeek.plusWeeks(1);
+                }
     }
 }

--
Gitblit v1.9.3