feat: 保存修正后的河道水温日数据
This commit is contained in:
parent
8e3fa72fd1
commit
de480e3e19
@ -9,6 +9,7 @@ import com.yfd.platform.common.exception.BizException;
|
||||
import com.yfd.platform.config.ResponseResult;
|
||||
import com.yfd.platform.qgc_base.entity.vo.BatchDeleteAo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvInfo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendSaveVo;
|
||||
import com.yfd.platform.qgc_env.wt.service.*;
|
||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@ -17,6 +18,7 @@ import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@ -209,6 +211,13 @@ public class SdWTMonitorController {
|
||||
return ResponseResult.successData(sdWtMonitorService.getWtrvAmendDayList(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/wtrvAmend/dayAmend/saveAmendData")
|
||||
@Operation(summary = "保存修正后的河道水温日数据")
|
||||
public ResponseResult saveWtrvAmendData(@RequestBody List<WtrvAmendSaveVo> amendDataList) {
|
||||
sdWtMonitorService.saveWtrvAmendData(amendDataList);
|
||||
return ResponseResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/msstbprpt/getStcdInfo")
|
||||
@Operation(summary = "根据站码查询单条水温基础数据")
|
||||
public ResponseResult getStcdInfo(@RequestParam String stcd) {
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
package com.yfd.platform.qgc_env.wt.entity.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@Schema(description = "河道水温日修正保存入参")
|
||||
public class WtrvAmendSaveVo {
|
||||
|
||||
@Schema(description = "站点编码")
|
||||
private String stcd;
|
||||
|
||||
@Schema(description = "日期,支持 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss")
|
||||
private String dt;
|
||||
|
||||
@Schema(description = "修正后水温")
|
||||
private BigDecimal wt;
|
||||
}
|
||||
@ -10,6 +10,7 @@ import com.yfd.platform.qgc_env.wt.entity.vo.SdYearDetailVO;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.SttpInfoVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WbsbVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtBaseInfoVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendSaveVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendResultVo;
|
||||
|
||||
@ -27,6 +28,8 @@ public interface SdWtMonitorService {
|
||||
|
||||
DataSourceResult<WtrvAmendResultVo> getWtrvAmendDayList(DataSourceRequest dataSourceRequest);
|
||||
|
||||
void saveWtrvAmendData(List<WtrvAmendSaveVo> amendDataList);
|
||||
|
||||
WtBaseInfoVo getStcdInfo(String stcd);
|
||||
|
||||
DataSourceResult getCxDetailList(DataSourceRequest dataSourceRequest);
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.yfd.platform.qgc_env.wt.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.yfd.platform.common.*;
|
||||
@ -17,13 +18,16 @@ import com.yfd.platform.qgc_env.wt.entity.vo.WtBaseInfoVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtFishVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtTreeStcdVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendResultVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvAmendSaveVo;
|
||||
import com.yfd.platform.qgc_env.wt.entity.vo.WtrvVo;
|
||||
import com.yfd.platform.qgc_env.wt.mapper.SdWtMonitorMapper;
|
||||
import com.yfd.platform.qgc_env.wt.service.SdWtMonitorService;
|
||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.Data;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
@ -47,6 +51,9 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
|
||||
@Resource
|
||||
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
|
||||
|
||||
@Resource
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
|
||||
@Override
|
||||
public DataSourceResult getEvnmAutoMonitorList(DataSourceRequest dataSourceRequest) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||
@ -929,6 +936,19 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveWtrvAmendData(List<WtrvAmendSaveVo> amendDataList) {
|
||||
if (amendDataList == null || amendDataList.isEmpty()) {
|
||||
throw new BizException("数据不能为空");
|
||||
}
|
||||
int batchSize = 500;
|
||||
for (int i = 0; i < amendDataList.size(); i += batchSize) {
|
||||
List<WtrvAmendSaveVo> subList = amendDataList.subList(i, Math.min(i + batchSize, amendDataList.size()));
|
||||
mergeWtrvAmendDataBatch(subList, i);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSourceResult getCxDetailList(DataSourceRequest dataSourceRequest) {
|
||||
List<DataSourceRequest.FilterDescriptor> filters = new ArrayList<>();
|
||||
@ -2089,6 +2109,62 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
|
||||
return Collections.singletonList(value);
|
||||
}
|
||||
|
||||
private void mergeWtrvAmendDataBatch(List<WtrvAmendSaveVo> amendDataList, int startIndex) {
|
||||
StringBuilder sql = new StringBuilder("MERGE INTO SD_WTRVAMEND_S target USING (");
|
||||
List<Object> params = new ArrayList<>();
|
||||
for (int i = 0; i < amendDataList.size(); i++) {
|
||||
WtrvAmendSaveVo item = amendDataList.get(i);
|
||||
int rowNo = startIndex + i + 1;
|
||||
String stcd = item == null ? null : StrUtil.trimToNull(item.getStcd());
|
||||
if (StrUtil.isBlank(stcd)) {
|
||||
throw new BizException("第" + rowNo + "条数据站点编码不能为空");
|
||||
}
|
||||
String dt = normalizeWtrvAmendDate(item.getDt());
|
||||
if (StrUtil.isBlank(dt)) {
|
||||
throw new BizException("第" + rowNo + "条数据日期格式不正确");
|
||||
}
|
||||
if (i > 0) {
|
||||
sql.append(" UNION ALL ");
|
||||
}
|
||||
sql.append("SELECT ? AS STCD, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AS DT, ? AS WT FROM DUAL");
|
||||
params.add(stcd);
|
||||
params.add(dt);
|
||||
params.add(item.getWt());
|
||||
}
|
||||
sql.append(") source ON (target.STCD = source.STCD AND target.DT = source.DT) ")
|
||||
.append("WHEN MATCHED THEN UPDATE SET ")
|
||||
.append("target.WT = source.WT, ")
|
||||
.append("target.IS_DELETED = 0, ")
|
||||
.append("target.DELETE_USER = NULL, ")
|
||||
.append("target.DELETE_TIME = NULL, ")
|
||||
.append("target.MODIFY_TIME = SYSDATE ")
|
||||
.append("WHEN NOT MATCHED THEN INSERT (ID, STCD, DT, WT, RECORD_TIME, IS_DELETED) ")
|
||||
.append("VALUES (SYS_GUID(), source.STCD, source.DT, source.WT, SYSDATE, 0)");
|
||||
jdbcTemplate.update(sql.toString(), params.toArray());
|
||||
}
|
||||
|
||||
private String normalizeWtrvAmendDate(String value) {
|
||||
if (StrUtil.isBlank(value)) {
|
||||
return null;
|
||||
}
|
||||
String text = value.trim().replace('T', ' ');
|
||||
try {
|
||||
if (text.length() <= 10) {
|
||||
return DateUtil.formatDateTime(DateUtil.parse(text.substring(0, 10), "yyyy-MM-dd").toJdkDate());
|
||||
}
|
||||
if (text.length() >= 19) {
|
||||
return DateUtil.formatDateTime(DateUtil.parse(text.substring(0, 19), "yyyy-MM-dd HH:mm:ss").toJdkDate());
|
||||
}
|
||||
return DateUtil.formatDateTime(DateUtil.parse(text, "yyyy-MM-dd HH:mm").toJdkDate());
|
||||
} catch (Exception ex) {
|
||||
try {
|
||||
return DateUtil.formatDateTime(DateUtil.parse(value.trim()).toJdkDate());
|
||||
} catch (Exception ignore) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String buildSttpInfoFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||
Map<String, Object> paramMap,
|
||||
int[] indexHolder) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user