From 4624b6fd58f262ab95f2d60472560b9fc162d677 Mon Sep 17 00:00:00 2001
From: dongyukun <1208714201@qq.com>
Date: 星期二, 01 四月 2025 14:56:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestReqVO.java                 |   24 ++++++++++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java |   12 ++++++
 iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql                                                                             |    2 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java                      |   34 ++++++++++++++--
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemDerEntity.java                      |    5 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java            |    9 ----
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestRespVO.java                |    2 +
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemDerVO.java                              |    5 ++
 iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java                                     |    5 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java                                     |    5 ++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java          |    4 ++
 iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml                                         |    5 +-
 12 files changed, 96 insertions(+), 16 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql b/iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql
index 9f63ba2..31bcd5a 100644
--- a/iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql
+++ b/iailab-module-data/iailab-module-data-biz/db/mysql/tenant.sql
@@ -324,6 +324,8 @@
                                 UNIQUE KEY `uk_item_id` (`item_id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT = '派生指标';
 
+ALTER TABLE t_ind_item_der ADD COLUMN month_start int COMMENT '月周期开始日';
+
 CREATE TABLE t_ind_item_cal(
                              `id` VARCHAR(36) NOT NULL  COMMENT 'ID' ,
                              `item_id` VARCHAR(36)   COMMENT '指标ID' ,
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java
index 96a9661..8de5cd4 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/collection/utils/IndSqlUtils.java
@@ -16,6 +16,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.text.SimpleDateFormat;
+import java.time.YearMonth;
+import java.time.format.DateTimeFormatter;
 import java.util.Calendar;
 import java.util.Date;
 
@@ -160,29 +163,29 @@
             case THIS_MONTH:
                 whereSql.append(indItem.getTimeLabel());
                 whereSql.append("='");
-                whereSql.append(DateUtils.format(calendar.getTime(), PATTERN_MON));
+                whereSql.append(getYearMonth(calendar,indItem.getMonthStart()));
                 whereSql.append("'");
                 break;
             case LAST_MONTH:
                 whereSql.append(indItem.getTimeLabel());
                 whereSql.append("' < '");
-                whereSql.append(DateUtils.format(calendar.getTime(), PATTERN_MON));
+                whereSql.append(getYearMonth(calendar,indItem.getMonthStart()));
                 whereSql.append("' AND ");
                 whereSql.append(indItem.getTimeLabel());
                 whereSql.append(" >= '");
                 calendar.add(Calendar.MONTH, -1);
-                whereSql.append(DateUtils.format(calendar.getTime(), PATTERN_MON));
+                whereSql.append(getYearMonth(calendar,indItem.getMonthStart()));
                 whereSql.append("'");
                 break;
             case LAST_MONTH_12:
                 whereSql.append(indItem.getTimeLabel());
                 whereSql.append(" <= '");
-                whereSql.append(DateUtils.format(calendar.getTime(), PATTERN_MON));
+                whereSql.append(getYearMonth(calendar,indItem.getMonthStart()));
                 whereSql.append("' AND ");
                 whereSql.append(indItem.getTimeLabel());
                 whereSql.append("' >= '");
                 calendar.add(Calendar.MONTH, -12);
-                whereSql.append(DateUtils.format(calendar.getTime(), PATTERN_MON));
+                whereSql.append(getYearMonth(calendar,indItem.getMonthStart()));
                 whereSql.append("'");
                 break;
             case THIS_YEAR_MONTH:
@@ -255,6 +258,27 @@
         return result;
     }
 
+    public static String getYearMonth(Calendar now,Integer monthStart) {
+        int day = now.get(Calendar.DAY_OF_MONTH);
+
+        // 当前月
+        if (monthStart > 0) {
+            if (day < monthStart) {
+                now.add(Calendar.MONTH, -1);
+            }
+        }
+
+        if (monthStart < 0) {
+            if (day >= Math.abs(monthStart)) {
+                now.add(Calendar.MONTH, 1);
+            }
+        }
+        // 定义日期格式化对象,指定格式为 yyyy-MM
+        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_MON);
+        // 格式化日期并返回结果
+        return sdf.format(now.getTime());
+    }
+
     public QuerySourceValueDTO getDerSql(String itemId, Date startTime, Date endTime) {
         QuerySourceValueDTO result = getAtomSql(itemId);
         IndItemDerVO indItem = indItemDerService.getByItemId(itemId);
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemDerEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemDerEntity.java
index 1c1b12e..0e2591f 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemDerEntity.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/entity/IndItemDerEntity.java
@@ -58,4 +58,9 @@
      * 分析维度
      */
     private String dimension;
+
+    /**
+     * 月周期开始日
+     */
+    private Integer monthStart;
 }
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemDerVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemDerVO.java
index af9424d..ade22f8 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemDerVO.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/ind/item/vo/IndItemDerVO.java
@@ -53,4 +53,9 @@
      * 分析维度
      */
     private String dimension;
+
+    /**
+     * 月周期开始日
+     */
+    private Integer monthStart;
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
index fcb8ff0..5186674 100644
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/McsApi.java
@@ -152,4 +152,9 @@
     @PostMapping(PREFIX + "/item/result/last-point")
     @Operation(summary = "获取")
     List<Object[]> getItemResultLastPoint(@RequestBody PreItemResultReqVO reqVO);
+
+    @PostMapping(PREFIX + "/schedule-suggest/update-status")
+    @Operation(summary = "修改调度建议状态")
+    Boolean updateSuggestStatus(@RequestBody StAlarmAndSuggestReqVO reqVO);
+
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestReqVO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestReqVO.java
new file mode 100644
index 0000000..00ffd2e
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestReqVO.java
@@ -0,0 +1,24 @@
+package com.iailab.module.model.api.mcs.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2025年01月07日
+ */
+@Schema(description = "RPC 模型 - 预警和建议 DTO")
+@Data
+public class StAlarmAndSuggestReqVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    private Integer status;
+}
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestRespVO.java b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestRespVO.java
index c9678be..bcd927b 100644
--- a/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestRespVO.java
+++ b/iailab-module-model/iailab-module-model-api/src/main/java/com/iailab/module/model/api/mcs/dto/StAlarmAndSuggestRespVO.java
@@ -18,6 +18,8 @@
 
     private static final long serialVersionUID = 1L;
 
+    private String id;
+
     @Schema(description = "类型(1:预警,2:建议)")
     private String type;
 
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
index b4b3cfa..0911d2f 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java
@@ -877,6 +877,11 @@
         return mmItemResultLastPointService.getData(reqVO.getOutputid(),reqVO.getStartTime(),reqVO.getEndTime(),reqVO.getTimeFormat());
     }
 
+    @Override
+    public Boolean updateSuggestStatus(StAlarmAndSuggestReqVO reqVO) {
+        return stScheduleSuggestService.updateSuggestStatus(reqVO);
+    }
+
     private Date[] calResultTime(ItemVO predictItem, Date startTimeReq, Date endTimeReq, int lengthLeft, int lengthRight) {
         Date[] result = new Date[3];
         Date predictTime = predictItem.getLastTime();
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java
index 4fae173..de7c43b 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/StScheduleSuggestService.java
@@ -4,6 +4,8 @@
 import com.iailab.framework.common.service.BaseService;
 import com.iailab.module.model.api.mcs.dto.ScheduleSuggestReqDTO;
 import com.iailab.module.model.api.mcs.dto.ScheduleSuggestRespDTO;
+import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestReqVO;
+import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestRespVO;
 import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity;
 import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestPageReqVO;
 import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestSaveReqVO;
@@ -36,4 +38,6 @@
     List<ScheduleSuggestRespDTO> list(ScheduleSuggestReqDTO vo);
 
     List<StScheduleSuggestEntity> getList(List<String> scheduleObjList, Date predictTime);
+
+    Boolean updateSuggestStatus(StAlarmAndSuggestReqVO reqVO);
 }
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java
index 1d4db1b..45037e1 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/service/impl/StScheduleSuggestServiceImpl.java
@@ -7,8 +7,11 @@
 import com.iailab.framework.common.util.object.ConvertUtils;
 import com.iailab.module.model.api.mcs.dto.ScheduleSuggestReqDTO;
 import com.iailab.module.model.api.mcs.dto.ScheduleSuggestRespDTO;
+import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestReqVO;
+import com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestRespVO;
 import com.iailab.module.model.common.enums.ScheduleSuggestStatusEnum;
 import com.iailab.module.model.mcs.sche.dao.StScheduleSuggestDao;
+import com.iailab.module.model.mcs.sche.entity.StScheduleSchemeEntity;
 import com.iailab.module.model.mcs.sche.entity.StScheduleSuggestEntity;
 import com.iailab.module.model.mcs.sche.service.StScheduleSuggestService;
 import com.iailab.module.model.mcs.sche.vo.StScheduleSuggestPageReqVO;
@@ -91,4 +94,13 @@
         queryWrapper.eq("schedule_time", predictTime);
         return baseDao.selectList(queryWrapper);
     }
+
+    @Override
+    public Boolean updateSuggestStatus(StAlarmAndSuggestReqVO reqVO) {
+        StScheduleSuggestEntity entity = new StScheduleSuggestEntity();
+        entity.setId(reqVO.getId());
+        entity.setStatus(reqVO.getStatus());
+        baseDao.updateById(entity);
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java
index 7723944..9f5f731 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/PredictSampleDataConstructor.java
@@ -81,15 +81,6 @@
             }
         }
 
-        // 判断要调整的列
-        for (ColumnItemPort itemPort : sampleInfo.getColumnInfo()) {
-
-            for (ColumnItem columnItem : itemPort.getColumnItemList()) {
-
-            }
-        }
-
-
         int portIdx = 1;
         //对每个爪分别进行计算
         for (ColumnItemPort entry : sampleInfo.getColumnInfo()) {
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml
index 3e4049e..45155f6 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mapper/mcs/StScheduleSchemeDao.xml
@@ -4,6 +4,7 @@
 
     <select id="getAlarmAndSuggestPage" resultType="com.iailab.module.model.api.mcs.dto.StAlarmAndSuggestRespVO">
         select
+        t.id,
         t.type,
         t.title,
         t.content,
@@ -11,10 +12,10 @@
         t.obj,
         t.status
         from (
-                 select 'alarm' type, t1.title, t1.content, t1.alarm_time `time`, t1.alarm_obj obj,0 status
+                 select id,'alarm' type, t1.title, t1.content, t1.alarm_time `time`, t1.alarm_obj obj,0 status
                  from t_mm_predict_alarm_message t1
                  UNION
-                 select 'suggest' type, t2.title, t2.content, t2.schedule_time `time`, t2.schedule_obj obj,t2.status
+                 select id,'suggest' type, t2.title, t2.content, t2.schedule_time `time`, t2.schedule_obj obj,t2.status
                  from t_st_schedule_suggest t2
         ) t
         <where>

--
Gitblit v1.9.3