diff --git a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java index 10ae42bf..c4d0b605 100644 --- a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java @@ -80,6 +80,8 @@ public class SecurityConfig { .requestMatchers("/mapLayer/**").permitAll() .requestMatchers("/mapmodule/**").permitAll() .requestMatchers("/mapLegend/**").permitAll() + .requestMatchers("/base/msalongb/**").permitAll() + .requestMatchers("/base/msalongdetb/**").permitAll() .requestMatchers("/sms/**").permitAll() .requestMatchers(HttpMethod.GET, "/").permitAll() .requestMatchers(HttpMethod.GET, diff --git a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java index 85db8810..21d7f41b 100644 --- a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java @@ -197,4 +197,12 @@ public class SwaggerConfig { .packagesToScan("com.yfd.platform.qgc_sys.mapcfg.controller") .build(); } + + @Bean + public GroupedOpenApi groupLygkApi() { + return GroupedOpenApi.builder() + .group("6. 沿程配置管理") + .packagesToScan("com.yfd.platform.qgc_lygk.along.controller") + .build(); + } } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/controller/FbStationController.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/controller/FbStationController.java index 7fa6c42f..5b7c3eee 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fb/controller/FbStationController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/controller/FbStationController.java @@ -146,4 +146,10 @@ public class FbStationController { public ResponseResult getFishbreedrFishKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { return ResponseResult.successData(fbStationService.getFishbreedrFishKendoListCust(dataSourceRequest)); } + + @PostMapping("/point/GetKendoListCust") + @Operation(summary = "增殖站地图描点") + public ResponseResult getFbPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(fbStationService.getFbPointKendoListCust(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/entity/vo/FbTracingPointVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/entity/vo/FbTracingPointVo.java new file mode 100644 index 00000000..eb17b855 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/entity/vo/FbTracingPointVo.java @@ -0,0 +1,107 @@ +package com.yfd.platform.qgc_env.fb.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "增殖站描点VO") +public class FbTracingPointVo { + + @Schema(description = "站点编码") + private String stcd; + + @Schema(description = "站名") + private String stnm; + + @Schema(description = "站点类型 - 用于锚点弹框显示") + private String sttp; + + @Schema(description = "锚点类型 - 用于锚点浮框显示") + private String sttpMap; + + @Schema(description = "设施类型 用于下拉选构建树级结构") + private String sttpCode; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "高程") + private BigDecimal dtmel; + + @Schema(description = "描点状态 - 用于图例") + private String anchoPointState; + + @Schema(description = "弹框站点名称") + private String titleName; + + @Schema(description = "地图避让") + private Integer distance; + + @Schema(description = "流域编码") + private String rvcd; + + @Schema(description = "行政编码") + private String addvcd; + + @Schema(description = "基地编码") + private String baseId; + + @Schema(description = "设施、断面关联电站编码") + private String rstcd; + + @Schema(description = "设施、断面关联电站编码(冗余)") + private String rstcds; + + @Schema(description = "关联电站名称") + private String ennm; + + @Schema(description = "建设状态:0=规划&1=在建&2=已建") + private Integer bldstt; + + @Schema(description = "运行状态:0=未运行&1=运行") + private Integer status; + + @Schema(description = "运行状态名称") + private String statusName; + + @Schema(description = "计划完成总数(万尾)") + private Long jhCnt; + + @Schema(description = "已完成总数(万尾)") + private Long fished; + + @Schema(description = "未完成总数(万尾)") + private Long unfished; + + @Schema(description = "计划年度") + private String yr; + + @Schema(description = "是否接入:0=未接入 1=已接入") + private Integer dtin; + + @Schema(description = "是否接入名称") + private String dtinName; + + @Schema(description = "达标状态子类型(1=正常运行,2=暂无数据,3=未正常运行)") + private Integer stdSstate; + + @Schema(description = "达标状态子类型名称") + private String stdSstateName; + + @Schema(description = "澜沧江运行状态(特殊处理:1=正常运行,2=暂无数据)") + private Integer lcjStatus; + + @Schema(description = "澜沧江运行状态名称") + private String lcjStatusName; + + @Schema(description = "沿程排序") + private Integer siteStepSort; + + @Schema(description = "站点图片") + private String logo; +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/FbStationService.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/FbStationService.java index 77cd39aa..e0e19b45 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/FbStationService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/FbStationService.java @@ -16,6 +16,7 @@ import com.yfd.platform.qgc_env.fb.entity.vo.FbStInfoResultVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbStationStaticsDataVo; import com.yfd.platform.qgc_env.fb.entity.vo.YearRpStatisticsVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbStationOverviewSecondVo; +import com.yfd.platform.qgc_env.fb.entity.vo.FbTracingPointVo; import com.yfd.platform.qgc_env.fb.entity.vo.TableVo; import java.util.List; @@ -62,4 +63,6 @@ public interface FbStationService { DataSourceResult getFishhatchrecrFishKendoListCust(Integer type, DataSourceRequest dataSourceRequest); DataSourceResult getFishbreedrFishKendoListCust(DataSourceRequest dataSourceRequest); + + DataSourceResult getFbPointKendoListCust(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java index d3df7885..7963c7c4 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java @@ -30,12 +30,14 @@ import com.yfd.platform.qgc_env.fb.entity.vo.FbStInfoResultVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbStationOverviewSecondVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbStationStaticsDataVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbStationStaticsRawVo; +import com.yfd.platform.qgc_env.fb.entity.vo.FbTracingPointVo; import com.yfd.platform.qgc_env.fb.entity.vo.FishbreedRVo; import com.yfd.platform.qgc_env.fb.entity.vo.FishhatchrecRVo; import com.yfd.platform.qgc_env.fb.entity.vo.HeadColunmsVo; import com.yfd.platform.qgc_env.fb.entity.vo.TableVo; import com.yfd.platform.qgc_env.fb.entity.vo.YearRpStatisticsVo; import com.yfd.platform.qgc_env.fb.service.FbStationService; +import com.yfd.platform.qgc_env.wt.utils.SiteAvoidanceUtils; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -4572,4 +4574,131 @@ public class FbStationServiceImpl implements FbStationService { tableVo.setTotal(total); return tableVo; } + + @Override + public DataSourceResult getFbPointKendoListCust(DataSourceRequest dataSourceRequest) { + DataSourceResult dataSourceResult = new DataSourceResult<>(); + dataSourceResult.setAggregates(new HashMap<>()); + + if (dataSourceRequest == null) { + dataSourceResult.setData(new ArrayList<>()); + dataSourceResult.setTotal(0L); + return dataSourceResult; + } + + DataSourceLoadOptionsBase devRequest = dataSourceRequest.toDevRequest(); + String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "rstcd"); + String sttp = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "sttp"); + String bldsttCcode = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "bldsttCcode"); + + if (StrUtil.isEmpty(sttp)) { + dataSourceResult.setData(new ArrayList<>()); + dataSourceResult.setTotal(0L); + return dataSourceResult; + } + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append("a.STCD AS stcd, ") + .append("a.STNM AS stnm, ") + .append("a.LOGO AS logo, ") + .append("a.STNM AS titleName, ") + .append("a.STTP AS sttp, ") + .append("a.STTP AS sttpMap, ") + .append("a.STTP AS sttpCode, ") + .append("a.LGTD AS lgtd, ") + .append("a.LTTD AS lttd, ") + .append("a.ELEV AS dtmel, ") + .append("a.BLDSTT_CODE AS bldstt, ") + .append("a.RSTCD AS rstcd, ") + .append("a.RSTCD AS rstcds, ") + .append("a.BASE_ID AS baseId, ") + .append("a.DTIN AS dtin, ") + .append("eng.ENNM AS ennm, ") + .append("eng.RVCD AS rvcd, ") + .append("eng.ADDVCD AS addvcd, ") + .append("NVL(siteSort.SORT, 999999) AS siteStepSort, ") + .append("NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, ") + .append("NVL(rstSort.SORT, 999999) AS rstcdStepSort, ") + .append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ") + .append("'" + sttp + "' AS anchoPointState, ") + .append("CASE WHEN b.lcjStatus IS NOT NULL THEN 1 ELSE 2 END AS lcjStatus ") + .append("FROM SD_FBRD_B_H a ") + .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = a.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = a.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN ( ") + .append(" SELECT det.SORT, cfg.RVCD, det.STCD ") + .append(" FROM MS_ALONGDET_B det ") + .append(" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID ") + .append(" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' ") + .append(") rstSort ON rstSort.RVCD = eng.HBRVCD AND rstSort.STCD = a.RSTCD ") + .append("LEFT JOIN ( ") + .append(" SELECT det.SORT, cfg.RVCD, det.STCD ") + .append(" FROM MS_ALONGDET_B det ") + .append(" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID ") + .append(" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' ") + .append(") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = a.STCD ") + .append("LEFT JOIN ( ") + .append(" SELECT t.RSTCD AS stcd, COUNT(1) AS lcjStatus ") + .append(" FROM SD_ENGFR_R t ") + .append(" INNER JOIN SD_RPIMNFISH_R t1 ON t.ID = t1.RPIMN_ID ") + .append(" WHERE (t.TASK_STATUS IS NULL OR t.TASK_STATUS = 'Approved') ") + .append(" AND NVL(t.IS_DELETED, 0) = 0 AND NVL(t1.IS_DELETED, 0) = 0 ") + .append(" AND t.TM BETWEEN ADD_MONTHS(SYSDATE, -12) AND SYSDATE ") + .append(" GROUP BY t.RSTCD ") + .append(") b ON a.STCD = b.stcd ") + .append("WHERE NVL(a.USFL, 1) = 1 ") + .append("AND a.LGTD IS NOT NULL ") + .append("AND a.LTTD IS NOT NULL "); + + Map paramMap = new HashMap<>(); + + if (StrUtil.isNotEmpty(sttp)) { + sql.append(" AND a.STTP = :sttp "); + paramMap.put("sttp", sttp); + } + if (StrUtil.isNotEmpty(rstcd)) { + sql.append(" AND a.RSTCD LIKE '%' || :rstcd || '%' "); + paramMap.put("rstcd", rstcd); + } + if (StrUtil.isNotEmpty(bldsttCcode)) { + sql.append(" AND a.BLDSTT_CODE = :bldsttCcode "); + paramMap.put("bldsttCcode", Integer.parseInt(bldsttCcode)); + } + + sql.append(" ORDER BY NVL(siteSort.SORT, 999999) ASC "); + + Page page = devRequest == null ? null : QgcQueryWrapperUtil.buildPage(devRequest, devRequest.getSkip(), devRequest.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, FbTracingPointVo.class); + + list = getPointLegend(list); + + SiteAvoidanceUtils.calcSiteMapLev(list, + FbTracingPointVo::getStcd, + FbTracingPointVo::getLgtd, + FbTracingPointVo::getLttd, + FbTracingPointVo::getAnchoPointState, + FbTracingPointVo::setDistance); + + dataSourceResult.setData(list); + dataSourceResult.setTotal(page == null ? list.size() : page.getTotal()); + return dataSourceResult; + } + + private List getPointLegend(List voList) { + for (FbTracingPointVo pointVo : voList) { + Integer bldstt = pointVo.getBldstt(); + String sttp = pointVo.getSttp(); + if (bldstt == null || bldstt != 2) { + if ("FB".equals(sttp)) { + pointVo.setAnchoPointState("fb_incomplete"); + } + if ("SG".equals(sttp)) { + pointVo.setAnchoPointState("sg_incomplete"); + } + } + } + return voList; + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/controller/MsAlongBController.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/controller/MsAlongBController.java new file mode 100644 index 00000000..fbdbf065 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/controller/MsAlongBController.java @@ -0,0 +1,70 @@ +package com.yfd.platform.qgc_lygk.along.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.common.exception.BizException; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongB; +import com.yfd.platform.qgc_lygk.along.service.IMsAlongBService; +import com.yfd.platform.utils.DataSourceRequestUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 沿程配置表控制器 + * + * @author migration + */ +@RestController +@RequestMapping("/base/msalongb") +@Tag(name = "沿程配置表控制器") +public class MsAlongBController { + + @Resource + private IMsAlongBService msAlongBService; + /** + * 条件过滤数据列表 + */ + @Operation(summary = "条件过滤数据列表") + @PostMapping("/GetKendoList") + public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) { + DataSourceResult result = msAlongBService.getKendoList(dataSourceRequest); + return ResponseResult.successData(result); + } + + /** + * 保存或修改 + */ + @Operation(summary = "保存或修改") + @PostMapping("/save") + public ResponseResult save(@RequestBody MsAlongB msAlongB) { + if (msAlongB == null) { + return ResponseResult.error("沿程配置信息不能为空."); + } + if (StrUtil.isBlank(msAlongB.getName())) { + throw new BizException("沿程配置名称(name)不能为空."); + } + if (StrUtil.isBlank(msAlongB.getCode())) { + throw new BizException("沿程配置编码(code)不能为空."); + } + msAlongBService.saveOrUpdate(msAlongB); + return ResponseResult.success("保存成功."); + } + +// @Operation(summary = "沿程配置删除") +// @PostMapping("/delete") +// public ResponseResult deleteData(@RequestBody List ids) { +// mapmoduleBService.delelteByIds(ids); +// return ResponseResult.success("删除成功."); +// } +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/controller/MsAlongDetBController.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/controller/MsAlongDetBController.java new file mode 100644 index 00000000..dcb90386 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/controller/MsAlongDetBController.java @@ -0,0 +1,54 @@ +package com.yfd.platform.qgc_lygk.along.controller; + +import cn.hutool.core.util.StrUtil; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.common.exception.BizException; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongB; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongDetB; +import com.yfd.platform.qgc_lygk.along.service.IMsAlongDetBService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 沿程配置明细表控制器 + * + * @author migration + */ +@RestController +@RequestMapping("/base/msalongdetb") +@Tag(name = "沿程配置明细表控制器") +public class MsAlongDetBController { + + @Resource + private IMsAlongDetBService msAlongDetBService; + + /** + * 条件过滤数据列表 + */ + @Operation(summary = "条件过滤数据列表") + @PostMapping("/GetKendoList") + public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) { + DataSourceResult result = msAlongDetBService.getKendoList(dataSourceRequest); + return ResponseResult.successData(result); + } + + /** + * 保存或修改 + */ + @Operation(summary = "保存或修改") + @PostMapping("/save") + public ResponseResult save(@RequestBody MsAlongDetB msAlongDetB) { + if (msAlongDetB == null) { + return ResponseResult.error("沿程配置明细信息不能为空."); + } + msAlongDetBService.saveOrUpdate(msAlongDetB); + return ResponseResult.success("保存成功."); + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/domain/MsAlongB.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/domain/MsAlongB.java new file mode 100644 index 00000000..b185e06a --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/domain/MsAlongB.java @@ -0,0 +1,87 @@ +package com.yfd.platform.qgc_lygk.along.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 沿程配置表 + * + * @author migration + */ +@Data +@TableName("MS_ALONG_B") +@Schema(description = "沿程配置表") +public class MsAlongB implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** 沿程配置名称 */ + @TableField("NAME") + private String name; + + /** 沿程配置编码 */ + @TableField("CODE") + private String code; + + /** 沿程配置所属流域 */ + @TableField("RVCD") + private String rvcd; + + /** 河流名称(非数据库字段) */ + @TableField(exist = false) + private String rvnm; + + /** 备注 */ + @TableField("REMARK") + private String remark; + + /** 创建人 */ + @TableField("RECORD_USER") + private String recordUser; + + /** 创建人名称(非数据库字段) */ + @TableField(exist = false) + private String recordUserName; + + /** 创建时间 */ + @TableField("RECORD_TIME") + private Date recordTime; + + /** 更新人 */ + @TableField("MODIFY_USER") + private String modifyUser; + + /** 更新人名称(非数据库字段) */ + @TableField(exist = false) + private String modifyUserName; + + /** 更新时间 */ + @TableField("MODIFY_TIME") + private Date modifyTime; + + /** 是否已删除:0=未删除 1=已删除 */ + @TableField("IS_DELETED") + private Integer isDeleted; + + /** 删除人 */ + @TableField("DELETE_USER") + private String deleteUser; + + /** 删除时间 */ + @TableField("DELETE_TIME") + private Date deleteTime; + + /** 排序 */ + @TableField("ORDER_INDEX") + private Integer orderIndex; +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/domain/MsAlongDetB.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/domain/MsAlongDetB.java new file mode 100644 index 00000000..adf07f7d --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/domain/MsAlongDetB.java @@ -0,0 +1,85 @@ +package com.yfd.platform.qgc_lygk.along.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 沿程配置明细表 + * + * @author migration + */ +@Data +@TableName("MS_ALONGDET_B") +@Schema(description = "沿程配置明细表") +@Accessors(chain = true) +public class MsAlongDetB implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** 站点编码 */ + @TableField("STCD") + private String stcd; + + /** 站点名称(非数据库字段) */ + @TableField(exist = false) + private String stnm; + + /** 所属电站编码 */ + @TableField("RSTCD") + private String rstcd; + + /** 排序序号 */ + @TableField("SORT") + private String sort; + + /** 沿程配置表ID */ + @TableField("ALONG_ID") + private String alongId; + + /** 站类 */ + @TableField("STTP") + private String sttp; + + /** 站类名称(非数据库字段) */ + @TableField(exist = false) + private String sttpName; + + /** 创建人 */ + @TableField("RECORD_USER") + private String recordUser; + + /** 创建时间 */ + @TableField("RECORD_TIME") + private Date recordTime; + + /** 更新人 */ + @TableField("MODIFY_USER") + private String modifyUser; + + /** 更新时间 */ + @TableField("MODIFY_TIME") + private Date modifyTime; + + /** 是否已删除:0=未删除 1=已删除 */ + @TableField("IS_DELETED") + private Integer isDeleted; + + /** 删除人 */ + @TableField("DELETE_USER") + private String deleteUser; + + /** 删除时间 */ + @TableField("DELETE_TIME") + private Date deleteTime; +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/mapper/MsAlongBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/mapper/MsAlongBMapper.java new file mode 100644 index 00000000..bc85485c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/mapper/MsAlongBMapper.java @@ -0,0 +1,15 @@ +package com.yfd.platform.qgc_lygk.along.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongB; +import org.apache.ibatis.annotations.Mapper; + +/** + * 沿程配置表 Mapper 接口 + * + * @author migration + */ +@Mapper +public interface MsAlongBMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/mapper/MsAlongDetBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/mapper/MsAlongDetBMapper.java new file mode 100644 index 00000000..0e0e17bd --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/mapper/MsAlongDetBMapper.java @@ -0,0 +1,15 @@ +package com.yfd.platform.qgc_lygk.along.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongDetB; +import org.apache.ibatis.annotations.Mapper; + +/** + * 沿程配置明细表 Mapper 接口 + * + * @author migration + */ +@Mapper +public interface MsAlongDetBMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/IMsAlongBService.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/IMsAlongBService.java new file mode 100644 index 00000000..3f23532b --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/IMsAlongBService.java @@ -0,0 +1,28 @@ +package com.yfd.platform.qgc_lygk.along.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongB; + +/** + * 沿程配置表 Service 接口 + * + * @author migration + */ +public interface IMsAlongBService extends IService { + /** + * 条件过滤数据列表(Kendo 数据源) + * + * @param dataSourceRequest 数据源请求 + * @return 数据源结果 + */ + DataSourceResult getKendoList(DataSourceRequest dataSourceRequest); + +// /** +// * 保存或更新沿程配置 +// * +// * @param msAlongB 沿程配置实体 +// */ +// void saveOrUpdate(MsAlongB msAlongB); +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/IMsAlongDetBService.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/IMsAlongDetBService.java new file mode 100644 index 00000000..39aced84 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/IMsAlongDetBService.java @@ -0,0 +1,22 @@ +package com.yfd.platform.qgc_lygk.along.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongDetB; + +/** + * 沿程配置明细表 Service 接口 + * + * @author migration + */ +public interface IMsAlongDetBService extends IService { + + /** + * 条件过滤数据列表(Kendo 数据源) + * + * @param dataSourceRequest 数据源请求 + * @return 数据源结果 + */ + DataSourceResult getKendoList(DataSourceRequest dataSourceRequest); +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/impl/MsAlongBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/impl/MsAlongBServiceImpl.java new file mode 100644 index 00000000..7fd2fd93 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/impl/MsAlongBServiceImpl.java @@ -0,0 +1,60 @@ +package com.yfd.platform.qgc_lygk.along.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.common.DataSourceLoadOptionsBase; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongB; +import com.yfd.platform.qgc_lygk.along.mapper.MsAlongBMapper; +import com.yfd.platform.qgc_lygk.along.service.IMsAlongBService; +import com.yfd.platform.utils.DataSourceRequestUtil; +import com.yfd.platform.utils.QgcQueryWrapperUtil; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 沿程配置表 Service 实现类 + * + * @author migration + */ +@Service +public class MsAlongBServiceImpl extends ServiceImpl implements IMsAlongBService { + + @Override + public DataSourceResult getKendoList(DataSourceRequest dataSourceRequest) { + // 1. 构建查询条件 + QueryWrapper wrapper = DataSourceRequestUtil.buildQueryWrapper( + dataSourceRequest, MsAlongB.class); + + // 2. 分页参数处理 + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + Page page = loadOptions == null ? null + : (Page) QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + + // 3. 执行查询 + Page resultPage; + if (page != null) { + resultPage = this.page(page, wrapper); + } else { + List list = this.list(wrapper); + resultPage = new Page<>(); + resultPage.setRecords(list); + resultPage.setTotal(list.size()); + } + + // 4. 构建结果 + DataSourceResult dataSourceResult = new DataSourceResult<>(); + dataSourceResult.setData(resultPage.getRecords()); + dataSourceResult.setTotal(resultPage.getTotal()); + return dataSourceResult; + } + +// @Override +// public boolean saveOrUpdate(MsAlongB msAlongB) { +// super.saveOrUpdate(msAlongB); +// return super.saveOrUpdate(msAlongB); +// } +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/impl/MsAlongDetBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/impl/MsAlongDetBServiceImpl.java new file mode 100644 index 00000000..5410fbd5 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_lygk/along/service/impl/MsAlongDetBServiceImpl.java @@ -0,0 +1,71 @@ +package com.yfd.platform.qgc_lygk.along.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.common.DataSourceLoadOptionsBase; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_lygk.along.domain.MsAlongDetB; +import com.yfd.platform.qgc_lygk.along.mapper.MsAlongDetBMapper; +import com.yfd.platform.qgc_lygk.along.service.IMsAlongDetBService; +import com.yfd.platform.utils.CodeToNameMetadataBo; +import com.yfd.platform.utils.DataSourceRequestUtil; +import com.yfd.platform.utils.DictCodeToNameConverter; +import com.yfd.platform.utils.QgcQueryWrapperUtil; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 沿程配置明细表 Service 实现类 + * + * @author migration + */ +@Service +public class MsAlongDetBServiceImpl extends ServiceImpl implements IMsAlongDetBService { + + @Resource + private DictCodeToNameConverter dictCodeToNameConverter; + + private static final List CODE_TO_NAME_META_LIST = new ArrayList<>(); + + static { + CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("stcd").modifyProperty("stnm").dictType("DYNAMIC").dictSource("SD_ENGINFO_B_H").codeColumn("STCD").nameColumn("ENNM").filter("IS_DELETED = 0 ").build()); + CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("sttp").modifyProperty("sttpName").dictType("DYNAMIC").dictSource("SD_STTP_B").codeColumn("STTP_CODE").nameColumn("STTP_NAME").filter("IS_DELETED = 0 ").build()); + + } + + @Override + public DataSourceResult getKendoList(DataSourceRequest dataSourceRequest) { + // 1. 构建查询条件 + QueryWrapper wrapper = DataSourceRequestUtil.buildQueryWrapper( + dataSourceRequest, MsAlongDetB.class); + + // 2. 分页参数处理 + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + Page page = loadOptions == null ? null + : (Page) QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + + // 3. 执行查询 + Page resultPage; + if (page != null) { + resultPage = this.page(page, wrapper); + dictCodeToNameConverter.convertCodeToName(resultPage,CODE_TO_NAME_META_LIST); + } else { + List list = this.list(wrapper); + dictCodeToNameConverter.convertCodeToName(list,CODE_TO_NAME_META_LIST); + resultPage = new Page<>(); + resultPage.setRecords(list); + resultPage.setTotal(list.size()); + } + + // 4. 构建结果 + DataSourceResult dataSourceResult = new DataSourceResult<>(); + dataSourceResult.setData(resultPage.getRecords()); + dataSourceResult.setTotal(resultPage.getTotal()); + return dataSourceResult; + } +} \ No newline at end of file