From 5ed5f51d479989d5b2149b09c82b6b3ea495b589 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期二, 23 七月 2024 16:21:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java                      |    2 
 system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java                         |   32 +++
 cnas-server/src/main/resources/mapper/DeviceMapper.xml                                         |    3 
 performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java            |    2 
 cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java                         |   66 +++++++
 cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java                  |    4 
 inspect-server/src/main/resources/mapper/InsOrderMapper.xml                                    |    2 
 performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml                        |   26 ++
 performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java |   23 ++
 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsSampleUser.java                           |   12 +
 cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java              |   19 +
 inspect-server/src/main/resources/mapper/InsSampleMapper.xml                                   |   66 ++++++
 cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java                               |   15 +
 cnas-server/src/main/resources/mapper/DataConfigMapper.xml                                     |   23 ++
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java         |   25 ++
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java             |    3 
 cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java                         |    6 
 cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java                           |   19 +
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java                       |    4 
 cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java                     |   45 ++++
 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/controller/InsOrderPlanController.java            |   11 +
 cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java                       |    6 
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java                  |    2 
 25 files changed, 443 insertions(+), 52 deletions(-)

diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
index eb36cf3..96f6c17 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
@@ -26,9 +26,11 @@
 import java.io.File;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 璁惧(DeviceController)琛ㄦ帶鍒跺眰
@@ -190,26 +192,55 @@
     @ValueClassify("璁惧")
     @ApiOperation(value = "缁存姢鏁伴噰閰嶇疆")
     @PostMapping("/saveDataAcquisitionConfiguration")
-    public Result<?> saveDataAcquisitionConfiguration(@RequestBody DataConfigDto dataConfigList) {
-        dataConfigService.saveOrUpdateBatch(dataConfigList.getDataConfigList());
+    public Result<?> saveDataAcquisitionConfiguration(@RequestParam(value = "deviceId") Integer deviceId, @RequestBody DataConfigDto dataConfigList) {
+        if (dataConfigList.getIsDevice()) {
+            System.out.println();
+            Device device = new Device();
+            device.setId(deviceId);
+            device.setCollectUrl(dataConfigList.getCollectUrl());
+            device.setStorageUrl(dataConfigList.getStorageUrl());
+            device.setIp(dataConfigList.getIp());
+            device.setFileType(dataConfigList.getFileType());
+            deviceService.updateById(device);
+        } else {
+            dataConfigService.saveOrUpdateBatch(dataConfigList.getDataConfigList());
+        }
         return Result.success();
     }
+
+//    @ValueClassify("璁惧")
+//    @ApiOperation(value = "鏌ヨ鏁伴噰閰嶇疆")
+//    @GetMapping("/queryDataAcquisitionConfiguration")
+//    public Result<?> queryDataAcquisitionConfiguration(@RequestParam("deviceId") Integer deviceId, @RequestParam("insProductItem") String insProductItem) {
+//        List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
+//                .eq(DataConfig::getDeviceId, deviceId)
+//                .eq(DataConfig::getInsProductItem, insProductItem));
+//        return Result.success(list);
+//    }
 
     @ValueClassify("璁惧")
     @ApiOperation(value = "鏌ヨ鏁伴噰閰嶇疆")
     @GetMapping("/queryDataAcquisitionConfiguration")
-    public Result<?> queryDataAcquisitionConfiguration(@RequestParam("deviceId") Integer deviceId, @RequestParam("insProductItem") String insProductItem) {
-        List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
+    public Result<?> queryDataAcquisitionConfiguration(@RequestParam("deviceId") Integer deviceId,
+                                                       @RequestParam("isDevice") Boolean isDevice,
+                                                       @RequestParam(value = "insProductItem", required = false) String insProductItem) {
+        if (isDevice) {
+            List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
                 .eq(DataConfig::getDeviceId, deviceId)
                 .eq(DataConfig::getInsProductItem, insProductItem));
-        return Result.success(list);
+            return Result.success(list);
+        } else {
+            return Result.success(dataConfigService.selectDataConfigList(deviceId));
+        }
     }
 
     @ValueClassify("璁惧")
     @ApiOperation(value = "鍒犻櫎鏁伴噰閰嶇疆")
     @DeleteMapping("/deleteDataAcquisitionConfiguration")
-    public Result<?> deleteDataAcquisitionConfiguration(@RequestParam("id") Integer id) {
-        dataConfigService.removeById(id);
+    public Result<?> deleteDataAcquisitionConfiguration(@RequestParam("ids") String ids) {
+        List<String> split = Arrays.asList(ids.split(","));
+        List<String> collect = split.stream().distinct().collect(Collectors.toList());
+        dataConfigService.removeBatchByIds(collect);
         return Result.success();
     }
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java
index 2f60a45..d3fafcc 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DataConfigDto.java
@@ -1,6 +1,7 @@
 package com.yuanchu.mom.dto;
 
 import com.yuanchu.mom.pojo.DataConfig;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.List;
@@ -9,4 +10,18 @@
 public class DataConfigDto {
 
     private List<DataConfig> dataConfigList;
+
+    private Boolean isDevice;
+
+    @ApiModelProperty("鏂囦欢鍚庣紑")
+    private String fileType;
+
+    @ApiModelProperty("閲囬泦鍦板潃")
+    private String collectUrl;
+
+    @ApiModelProperty("瀛樺偍鍦板潃")
+    private String storageUrl;
+
+    @ApiModelProperty("璁惧IP")
+    private String ip;
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java
new file mode 100644
index 0000000..779fce1
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceConfigDtoPage.java
@@ -0,0 +1,66 @@
+package com.yuanchu.mom.dto;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yuanchu.mom.annotation.ValueTableShow;
+import com.yuanchu.mom.common.OrderBy;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DeviceConfigDtoPage extends OrderBy {
+
+    @ValueTableShow(2)
+    @ApiModelProperty(value = "璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ValueTableShow(3)
+    @ApiModelProperty(value = "鏂囦欢鍚庣紑")
+    private String fileType;
+
+    @ValueTableShow(4)
+    @ApiModelProperty(value = "閲囬泦鍦板潃")
+    private String collectUrl;
+
+    @ValueTableShow(5)
+    @ApiModelProperty(value = "瀛樺偍鍦板潃")
+    private String storageUrl;
+
+    @ValueTableShow(6)
+    @ApiModelProperty(value = "IP鍦板潃")
+    private String ip;
+
+    @ValueTableShow(7)
+    @ApiModelProperty(value = "妫�楠岄」")
+    private String inspectionItem;
+
+    @ValueTableShow(8)
+    @ApiModelProperty(value = "妫�楠岄」瀛愰」")
+    private String inspectionItemSubClass;
+
+    @ValueTableShow(9)
+    @ApiModelProperty(value = "鍏紡")
+    private String formula;
+
+    @ValueTableShow(10)
+    @ApiModelProperty(value = "鍙傜収X")
+    private String referx;
+
+    @ValueTableShow(11)
+    @ApiModelProperty(value = "X")
+    private String x;
+
+    @ValueTableShow(12)
+    @ApiModelProperty(value = "鍙傜収Y")
+    private String refery;
+
+    @ValueTableShow(13)
+    @ApiModelProperty(value = "Y")
+    private String y;
+
+    private Integer id;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java
index c7184eb..277160f 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DataConfigMapper.java
@@ -1,7 +1,10 @@
 package com.yuanchu.mom.mapper;
 
-import com.yuanchu.mom.pojo.DataConfig;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.dto.DeviceConfigDtoPage;
+import com.yuanchu.mom.pojo.DataConfig;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface DataConfigMapper extends BaseMapper<DataConfig> {
 
+    List<DeviceConfigDtoPage> selectDataConfigList(Integer deviceId);
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java
index 5ca0df5..96133f1 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DataConfigService.java
@@ -1,7 +1,10 @@
 package com.yuanchu.mom.service;
 
-import com.yuanchu.mom.pojo.DataConfig;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.dto.DeviceConfigDtoPage;
+import com.yuanchu.mom.pojo.DataConfig;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface DataConfigService extends IService<DataConfig> {
 
+    List<DeviceConfigDtoPage> selectDataConfigList(Integer deviceId);
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java
index 766cf89..8035161 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DataConfigServiceImpl.java
@@ -1,10 +1,15 @@
 package com.yuanchu.mom.service.impl;
 
-import com.yuanchu.mom.pojo.DataConfig;
-import com.yuanchu.mom.mapper.DataConfigMapper;
-import com.yuanchu.mom.service.DataConfigService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceConfigDtoPage;
+import com.yuanchu.mom.mapper.DataConfigMapper;
+import com.yuanchu.mom.pojo.DataConfig;
+import com.yuanchu.mom.service.DataConfigService;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,6 +20,14 @@
  * @since 2024-07-13 12:23:00
  */
 @Service
+@AllArgsConstructor
 public class DataConfigServiceImpl extends ServiceImpl<DataConfigMapper, DataConfig> implements DataConfigService {
 
+    private GetLook getLook;
+
+    private DataConfigMapper dataConfigMapper;
+    @Override
+    public List<DeviceConfigDtoPage> selectDataConfigList(Integer deviceId) {
+        return dataConfigMapper.selectDataConfigList(deviceId);
+    }
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
index 7768262..9e25d22 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
@@ -138,7 +138,7 @@
     public Result<?> dataAcquisition(HttpServletRequest request, Integer id, String entrustCode, String sampleCode) {
         String ipAddress = request.getRemoteAddr();
         // 闃叉鍥炵幆鍦板潃鍙樹负IPv6
-        String ip = ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
+        String ip =  ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
         List<Device> device = baseMapper.selectList(Wrappers.<Device>lambdaQuery()
                 .eq(Device::getIp, ip));
         if (ObjectUtils.isEmpty(device)) {
@@ -156,6 +156,8 @@
                     .orderBy(false, false, DataConfig::getId));
             hashMap.putAll(DataAcquisition.dataAcquisitionEntrance(request, list, i, entrustCode, sampleCode, ip));
         });
+        String frequency = DataAcquisition.createFrequency(entrustCode, sampleCode);
+        hashMap.put("frequency", frequency);
         return Result.success(hashMap);
     }
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java b/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
index 505a27f..87b261b 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
@@ -84,10 +84,10 @@
             }
             // 濡傛灉瀛樺湪瀛樺偍鍦板潃锛屽垯绉诲姩鍦板潃
             if (ObjectUtils.isNotEmpty(device.getStorageUrl())) {
-                String s = HTTP + ip + MOVEFILE + "?startFilePath=" + device.getCollectUrl() + "&endFilePath=" + device.getStorageUrl();
+                String s = HTTP + ip + MOVEFILE + "?startFilePath=" + device.getCollectUrl() + "&endFilePath=" + device.getStorageUrl() + "&fileType=" + device.getFileType();
                 String storageUrlResult = HttpUtil.get(s);
                 JSONObject storageUrlResultJson = JSON.parseObject(storageUrlResult);
-                if (Objects.equals(storageUrlResultJson.get("code"), 1)) {
+                if (Objects.equals(storageUrlResultJson.get("code"), 0)) {
                     if (ObjectUtils.isEmpty(storageUrlResultJson.get("msg"))) {
                         throw new ErrorException("瀛樺偍鍦板潃閿欒锛屽彲鑳芥枃浠惰矾寰勯厤缃敊璇紒");
                     } else {
@@ -95,13 +95,11 @@
                     }
                 }
             }
-            String frequency = createFrequency(entrustCode, sampleCode);
-            map.put("frequency", frequency);
             return map;
         }
     }
 
-    private static String createFrequency(String entrustCode, String sampleCode) {
+    public static String createFrequency(String entrustCode, String sampleCode) {
         String key = frequency + ":" + entrustCode + ":" + sampleCode;
         boolean b = RedisUtil.hasKey(key);
         String frequencyValue;
@@ -142,7 +140,16 @@
                 JSONObject jsonObject1 = JSON.parseObject(dataList.get(y).toString());
                 Object o = jsonObject1.get(key);
                 if (ObjectUtils.isNotEmpty(o)) {
-                    list.add(o);
+                    // 灏忔暟鐐硅繘涓変綅
+                    double v1 = 0;
+                    try {
+                        v1 = Double.parseDouble(o.toString());
+                        double v2 = v1 / 1000;
+                        list.add(v2);
+                    } catch (NumberFormatException e) {
+                        list.add(o);
+                    }
+
                 }
             }
             // 杩涜鍏紡璁$畻
diff --git a/cnas-server/src/main/resources/mapper/DataConfigMapper.xml b/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
index 135e544..7701b02 100644
--- a/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DataConfigMapper.xml
@@ -12,4 +12,27 @@
         <result column="y" property="y" />
     </resultMap>
 
+    <select id="selectDataConfigList" resultType="com.yuanchu.mom.dto.DeviceConfigDtoPage">
+        SELECT d.device_name,
+               d.file_type,
+               d.collect_url,
+               d.storage_url,
+               d.ip,
+               ip.inspection_item,
+               if(ip.inspection_item_subclass is not null and ip.inspection_item_subclass != '',
+                  ip.inspection_item_subclass, ip.inspection_item) inspection_item_subclass,
+               ddc.formula,
+               ddc.referx,
+               ddc.refery,
+               ddc.x,
+               ddc.y,
+               ddc.id
+        FROM device d
+                 left join structure_item_parameter ip on FIND_IN_SET(ip.id, d.ins_product_ids)
+                 left join device_data_config ddc on ddc.device_id = d.id and
+                                                     if(ip.inspection_item_subclass is not null and
+                                                        ip.inspection_item_subclass != '', ip.inspection_item_subclass,
+                                                        ip.inspection_item) = ddc.ins_product_item
+        where d.id = #{deviceId}
+    </select>
 </mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
index 40bcc1f..60660a3 100644
--- a/cnas-server/src/main/resources/mapper/DeviceMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
@@ -119,7 +119,8 @@
     </select>
 
     <select id="getInspectionItemSubclass" resultType="java.lang.String">
-        SELECT ip.inspection_item_subclass FROM ins_product ip
+        SELECT if(ip.inspection_item_subclass is not null and ip.inspection_item_subclass != '',
+                  ip.inspection_item_subclass, ip.inspection_item) inspection_item_subclass FROM ins_product ip
         where ip.ins_sample_id = #{id}
     </select>
 </mapper>
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 3a47296..79c81a2 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
@@ -87,8 +87,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("妫�楠屼换鍔�")
@@ -113,6 +113,13 @@
         return num == 1 ? Result.success() : Result.fail("鎻愪氦澶辫触锛岄儴鍒嗛」鐩繕鏈繘琛屾楠�");
     }
 
+    @ValueClassify("妫�楠屼换鍔�")
+    @ApiOperation(value = "鏄惁鍏佽淇敼閲囬泦鍊�")
+    @DeleteMapping("/isItAllowedToModifyTheCollectedValues")
+    public Result<?> isItAllowedToModifyTheCollectedValues() {
+        return Result.success();
+    }
+
     @ApiOperation(value = "淇濆瓨妫�楠屽唴瀹�")
     @PostMapping("/saveInsContext")
     @ValueAuth
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..011666d 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,9 +25,9 @@
 */
 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);
+    IPage<InsOrderPlanTaskSwitchVo> inspectionOrderDetailsTaskSwitching(Page page, QueryWrapper<InsOrderPlanDTO> ew, Integer userId,String sonLaboratory);
 
     List<SampleProductDto> selectSampleProductListByOrderId(Integer id);
 
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 023bbaa..510fa39 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
@@ -23,7 +23,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 07d458c..9bab7c6 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
@@ -143,7 +143,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;
     }
@@ -157,11 +158,13 @@
         if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) {
             insOrderPlanDTO.setUserId(userId.longValue());
         }
-        IPage<InsOrderPlanTaskSwitchVo> insOrderPage = insSampleMapper.inspectionOrderDetailsTaskSwitching(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userId);
+        String sonLaboratory = insOrderPlanDTO.getSonLaboratory();//璇曢獙瀹�
+        IPage<InsOrderPlanTaskSwitchVo> insOrderPage = insSampleMapper.inspectionOrderDetailsTaskSwitching(page, QueryWrappers.queryWrappers(insOrderPlanDTO), userId,sonLaboratory);
         map.put("body", insOrderPage);
         return map;
     }
 
+    //璁ら浠诲姟
     @Override
     public boolean claimInsOrderPlan(InsOrderPlanDTO entity) {
         if (Objects.isNull(entity)) {
@@ -169,7 +172,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;
     }
 
@@ -418,7 +421,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));
@@ -545,7 +548,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());//妫�娴嬪瓙椤�
@@ -608,12 +611,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);
     }
 
@@ -3455,7 +3460,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..7d48c25 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>
@@ -92,8 +93,8 @@
     <select id="inspectionOrderDetailsTaskSwitching" resultType="com.yuanchu.mom.vo.InsOrderPlanTaskSwitchVo">
         select * from(
         SELECT
-        a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,(ios.verify_user = #{userId}) verify_user
-        FROM
+        a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,<!--(ios.verify_user = #{userId})--> verify_user
+        <!--FROM
         (
         SELECT
         io.id,
@@ -127,7 +128,64 @@
         a.user_id DESC,
         a.type DESC,
         a.id
+        ) b-->
+        FROM
+        (
+        SELECT
+        io.id,
+        io.entrust_code,
+        io.type,
+        io.appointed,
+        io.send_time,
+        group_concat(distinct isa.sample,' ') sample,
+        isu.user_id,
+        user.name userName,
+        ip.son_laboratory,
+        io.ins_time
+        FROM
+        ins_order io
+        LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
+        LEFT JOIN ( <!--SELECT * FROM ins_sample_user GROUP BY ins_sample_id, user_id -->
+        SELECT *
+        FROM ins_sample_user u
+        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
+        ) isu ON isu.ins_sample_id = io.id
+        LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id
+        LEFT JOIN user  ON isu.user_id = user.id
+        WHERE
+        io.state = 1
+        # AND io.ins_state != 5
+        and send_time is not null
+        <if test="userId !=null and userId!=''">
+            and (isu.user_id = #{userId} OR isu.user_id is NULL )
+        </if>
+        OR isu.user_id is NULL
+
+        GROUP BY
+        ip.son_laboratory,
+        io.id
+        ) 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 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>
+        OR user_id is NULL
+        ) isu2 on
+        isu2.ins_sample_id = a.id
+        ORDER BY
+        <!--a.user_id DESC,-->
+        a.type DESC,
+        a.id
         ) b
+        where ins_state is not null)A
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
diff --git a/performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java b/performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java
index 39157fe..f7fbfa0 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java
@@ -36,4 +36,6 @@
     List<Map<String, Object>> performanceShiftYearList(String time, String userName, String laboratory);
 
     List<PerformanceShiftMapDto> performanceShiftList(String time, String userName, String laboratory);
+
+    String seldepLimsId(int depLimsId);
 }
diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java b/performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java
index db37821..91d2ce3 100644
--- a/performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java
+++ b/performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java
@@ -6,11 +6,14 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.dto.PerformanceShiftAddDto;
 import com.yuanchu.mom.dto.PerformanceShiftMapDto;
 import com.yuanchu.mom.mapper.PerformanceShiftMapper;
+import com.yuanchu.mom.mapper.UserMapper;
 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.utils.JackSonUtil;
@@ -41,6 +44,12 @@
 
     @Autowired
     private EnumService enumService;
+
+    @Autowired
+    GetLook getLook;
+
+    @Autowired
+    UserMapper userMapper;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -94,6 +103,20 @@
 
     @Override
     public Map<String, Object> performanceShiftPage(Page<Object> page, String time, String userName, String laboratory) {
+        //鏌ヨ褰撳墠鐧诲綍浜哄憳鐨勬灦鏋�
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        //鍒ゆ柇鍏ㄩ儴,涓汉,缁勭粐鐨勬潈闄�
+        User user = userMapper.selectById(userId);//褰撳墠鐧诲綍鐨勪汉
+        //鑾峰彇褰撳墠浜烘墍灞炲疄楠屽id
+        String departLimsId = user.getDepartLimsId();
+        if (com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")) {
+            String[] split = departLimsId.split(",");
+            //鏌ヨ瀵瑰簲鏋舵瀯鍚嶇О(閫氫俊瀹為獙瀹�,鐢靛姏瀹為獙瀹�,妫�娴嬪姙)
+            String departLims = baseMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
+            if (departLims.contains("瀹為獙瀹�")) {
+                laboratory = departLims;
+            }
+        }
         IPage<PerformanceShiftMapDto> mapIPage = baseMapper.performanceShiftPage(page, time, userName, laboratory);
         List<Enums> shiftType = enumService.selectEnumByCategory("鐝绫诲瀷");
         List<Map<String, Object>> mapYearIPage = baseMapper.performanceShiftYearPage(time, userName, laboratory);
diff --git a/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml b/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
index 31d6551..1ada6d1 100644
--- a/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
+++ b/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
@@ -11,21 +11,27 @@
 
     <select id="performanceShiftPage" resultMap="performanceShiftPageMap">
         SELECT
-        if(u.department is not null and u.department != '', CONCAT(u.name, '锛�', u.department, '锛�'), u.name) name,
-        GROUP_CONCAT(s.work_time, '锛�', s.shift, '锛�', s.id order by s.work_time SEPARATOR ';') AS shift_time, u.id user_id
+        if(u2.department is not null and u2.department != '', CONCAT(u2.name, '锛�', u2.department, '锛�'), u2.name) name,
+        GROUP_CONCAT(s.work_time, '锛�', s.shift, '锛�', s.id order by s.work_time SEPARATOR ';') AS shift_time, u2.id user_id
         FROM performance_shift s
-        LEFT JOIN user u on u.id = s.user_id
+        LEFT JOIN (SELECT u.* from
+        user u
+        left join department_lims dl on FIND_IN_SET(dl.id,u.depart_lims_id)
+        where state=1
+        <if test="laboratory != null and laboratory != ''">
+          and   dl.name=#{laboratory}
+        </if>
+         ) u2    on u2.id = s.user_id
         <where>
+            name is not null
             <if test="time != null and time != ''">
                 and DATE_FORMAT(s.work_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m' )
             </if>
             <if test="userName != null and userName != ''">
-                and u.name like concat('%', #{userName}, '%')
-            </if>
-            <if test="laboratory != null and laboratory != ''">
+                and u2.name like concat('%', #{userName}, '%')
             </if>
         </where>
-        GROUP BY u.id
+        GROUP BY u2.id
         order by s.create_time
     </select>
 
@@ -108,4 +114,10 @@
         GROUP BY u.id
         order by s.create_time
     </select>
+
+    <select id="seldepLimsId" resultType="java.lang.String">
+        select name
+        from department_lims
+        where id = #{depLimsId}
+    </select>
 </mapper>
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..57d55d0 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