From 6688232eaa889eeb6c58d0d804b587699db55ec2 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期四, 31 七月 2025 17:32:22 +0800 Subject: [PATCH] 2025.7.31 1. 新增基础数据产品相关接口 --- src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductController.kt | 13 ++ src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProblemChange.kt | 49 +++++---- src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProductServiceImpl.kt | 27 +++++ src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProbRecurrence.kt | 43 +++----- src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/DataProductMapper.kt | 16 +++ src/main/resources/mapper/ds1/DataProductMapper.xml | 79 +++++++++++++++ src/main/kotlin/cn/flightfeather/supervision/config/CorsConfig.kt | 4 src/test/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductControllerTest.kt | 46 +++++++++ 8 files changed, 222 insertions(+), 55 deletions(-) diff --git a/src/main/kotlin/cn/flightfeather/supervision/config/CorsConfig.kt b/src/main/kotlin/cn/flightfeather/supervision/config/CorsConfig.kt index 0b07853..50a22c2 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/config/CorsConfig.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/config/CorsConfig.kt @@ -6,7 +6,7 @@ import org.springframework.web.cors.UrlBasedCorsConfigurationSource import org.springframework.web.filter.CorsFilter -//@Configuration +@Configuration class CorsConfig { private fun buildConfig(): CorsConfiguration { @@ -18,7 +18,7 @@ } } -// @Bean + @Bean fun corsFilter(): CorsFilter { val source = UrlBasedCorsConfigurationSource().apply { registerCorsConfiguration("/**", buildConfig()) diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/DataProductMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/DataProductMapper.kt new file mode 100644 index 0000000..448251f --- /dev/null +++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/DataProductMapper.kt @@ -0,0 +1,16 @@ +package cn.flightfeather.supervision.domain.ds1.mapper + +import cn.flightfeather.supervision.model.dataproduct.DataProdOption +import cn.flightfeather.supervision.model.dataproduct.PPListProblemChange +import org.apache.ibatis.annotations.Mapper + +/** + * + * @date 2025/7/31 + * @author feiyu02 + */ +@Mapper +interface DataProductMapper { + + fun problemChangeList(option: DataProdOption): List<PPListProblemChange> +} \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProductServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProductServiceImpl.kt index 63d3578..5441142 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProductServiceImpl.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProductServiceImpl.kt @@ -7,6 +7,7 @@ import cn.flightfeather.supervision.business.report.file.ReportThree import cn.flightfeather.supervision.business.report.file.ReportTwo import cn.flightfeather.supervision.common.exception.BizException +import cn.flightfeather.supervision.domain.ds1.mapper.DataProductMapper import cn.flightfeather.supervision.domain.ds1.repository.TaskRep import cn.flightfeather.supervision.lightshare.service.DataProductService import cn.flightfeather.supervision.lightshare.vo.AreaVo @@ -14,6 +15,7 @@ import cn.flightfeather.supervision.model.dataproduct.DataProdOption import cn.flightfeather.supervision.model.dataproduct.PPListProbRecurrence import cn.flightfeather.supervision.model.dataproduct.PPListProblemChange +import org.springframework.beans.BeanUtils import org.springframework.beans.factory.annotation.Value import org.springframework.http.HttpHeaders import org.springframework.http.MediaType @@ -33,6 +35,7 @@ private val dbMapper: DbMapper, @Value("\${filePath}") private val filePath: String, private val reportTaskCtrl: ReportTaskCtrl, + private val dataProductMapper: DataProductMapper, ) : DataProductService { override fun downloadProduct( @@ -83,10 +86,30 @@ } override fun problemChangeList(option: DataProdOption): List<PPListProblemChange> { - TODO("Not yet implemented") + return dataProductMapper.problemChangeList(option) } override fun problemRecurrence(option: DataProdOption): List<PPListProbRecurrence> { - TODO("Not yet implemented") + val res = mutableListOf<PPListProbRecurrence>() + problemChangeList(option).forEach {pcl -> + val r = res.find { + it.sceneName == pcl.sceneName && it.problemName == pcl.problemName + } + if (r == null) { + val probRec = PPListProbRecurrence() + BeanUtils.copyProperties(pcl, probRec) + probRec.apply { + proNum = 1 + changeNum += pcl.changeSum + } + res.add(probRec) + } else { + r.apply { + proNum++ + changeNum += pcl.changeSum + } + } + } + return res } } \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductController.kt index a76f7f4..d36ec3e 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductController.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductController.kt @@ -3,6 +3,7 @@ import cn.flightfeather.supervision.lightshare.service.DataProductService import cn.flightfeather.supervision.lightshare.vo.AreaVo import cn.flightfeather.supervision.lightshare.vo.ExcelConfigVo +import cn.flightfeather.supervision.model.dataproduct.DataProdOption import io.swagger.annotations.Api import io.swagger.annotations.ApiOperation import io.swagger.annotations.ApiParam @@ -29,4 +30,16 @@ @ApiParam("鏄惁寮哄埗鐢熸垚鏂扮殑鎶ュ憡") @RequestParam forceUpdate: Boolean, @ApiIgnore response: HttpServletResponse, ) = resPack { dataProductService.downloadProduct(areaVo, type, forceUpdate, response) } + + @ApiOperation(value = "鑾峰彇闂鏁存敼娓呭崟") + @PostMapping("/problemChange") + fun problemChangeList( + @ApiParam("鏌ヨ鏉′欢") @RequestBody option: DataProdOption, + ) = resPack { dataProductService.problemChangeList(option) } + + @ApiOperation(value = "鑾峰彇闂澶嶅彂鎯呭喌") + @PostMapping("/problemRecurrence") + fun problemRecurrence( + @ApiParam("鏌ヨ鏉′欢") @RequestBody option: DataProdOption, + ) = resPack { dataProductService.problemRecurrence(option) } } \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProbRecurrence.kt b/src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProbRecurrence.kt index 1013740..22f1cc3 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProbRecurrence.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProbRecurrence.kt @@ -1,7 +1,5 @@ package cn.flightfeather.supervision.model.dataproduct -import cn.flightfeather.supervision.domain.ds1.entity.Scense - /** * 鍒濈骇鏁版嵁浜у搧 * 闂澶嶅彂鎯呭喌 @@ -10,33 +8,22 @@ */ class PPListProbRecurrence { - /** - * 鍦烘櫙淇℃伅 - */ - var scene: Scense? = null - - /** - * 闂绫诲瀷id - */ - var ptGuid: String? = null - - /** - * 闂绫诲瀷鍚嶇О - */ - var pTName: String? = null - - /** - * 闂鍚嶇О - */ + // 鍦烘櫙鍞竴缂栧彿 + var index: Int? = null + // 鍦烘櫙鍚嶇О + var sceneName: String? = null + // 鍦烘櫙绫诲瀷 + var sceneType: String? = null + var provinceName: String? = null + var cityName: String? = null + var districtName: String? = null + var townName: String? = null + // 闂绫诲瀷 + var problemType: String? = null + // 闂鍚嶇О var problemName: String? = null - - /** - * 闂鏁� - */ + // 闂鏁� var proNum: Int = 0 - - /** - * 鏁存敼鏁� - */ + // 鏁存敼鏁� var changeNum: Int = 0 } \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProblemChange.kt b/src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProblemChange.kt index d587397..a560fcb 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProblemChange.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/model/dataproduct/PPListProblemChange.kt @@ -1,9 +1,7 @@ package cn.flightfeather.supervision.model.dataproduct -import cn.flightfeather.supervision.domain.ds1.entity.Problemlist -import cn.flightfeather.supervision.domain.ds1.entity.Problemtype -import cn.flightfeather.supervision.domain.ds1.entity.Scense -import cn.flightfeather.supervision.domain.ds1.entity.Subtask +import java.util.* + /** * 鍒濈骇鏁版嵁浜у搧 @@ -13,23 +11,28 @@ */ class PPListProblemChange { - /** - * 闂淇℃伅 - */ - var problem: Problemlist? = null - - /** - * 鍦烘櫙淇℃伅 - */ - var scene: Scense? = null - - /** - * 宸℃煡淇℃伅 - */ - var subTask: Subtask? = null - - /** - * 闂绫诲瀷 - */ - var problemType: Problemtype? = null + // 鍦烘櫙鍞竴缂栧彿 + var index: Int? = null + // 鍦烘櫙鍚嶇О + var sceneName: String? = null + // 鍦烘櫙绫诲瀷 + var sceneType: String? = null + var provinceName: String? = null + var cityName: String? = null + var districtName: String? = null + var townName: String? = null + // 宸℃煡鏃堕棿 + var inspectionTime: Date? = null + // 闂绫诲瀷 + var problemType: String? = null + // 闂鍚嶇О + var problemName: String? = null + // 闂鍖哄煙 + var location: String? = null + var problemTime: Date? = null + // 闂鏄惁鏁存敼 + var hasChanged: Boolean = false + // 鏁存敼鏁� + var changeSum: Int = 0 + var changedTime: Date? = null } \ No newline at end of file diff --git a/src/main/resources/mapper/ds1/DataProductMapper.xml b/src/main/resources/mapper/ds1/DataProductMapper.xml new file mode 100644 index 0000000..55cc518 --- /dev/null +++ b/src/main/resources/mapper/ds1/DataProductMapper.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > +<mapper namespace="cn.flightfeather.supervision.domain.ds1.mapper.DataProductMapper"> + <!-- 琛屾斂鍖哄垝鏉′欢 --> + <sql id="Where_Area"> + <if test="provinceCode != null"> + AND ${pCode} = #{provinceCode} + </if> + <if test="cityCode != null"> + AND ${cCode} = #{cityCode} + </if> + <if test="districtCode != null"> + AND ${dCode} = #{districtCode} + </if> + <if test="townCode != null"> + AND ${tCode} = #{townCode} + </if> + </sql> + <!-- 鏃堕棿鏉′欢 --> + <sql id="Where_Time"> + <if test="startTime != null"> + AND ${sTime} >= #{startTime} + </if> + <if test="endTime != null"> + AND ${eTime} <= #{endTime} + </if> + </sql> + <!-- 鍦烘櫙淇℃伅鏉′欢 --> + <sql id="Where_Scene"> + <if test="sceneId != null"> + AND ${sId} = #{sceneId} + </if> + <if test="sceneTypeId != null"> + AND ${typeId} = #{sceneTypeId} + </if> + </sql> + + <!-- 鏌ヨ闂鏁存敼娓呭崟--> + <select id="problemChangeList" resultType="cn.flightfeather.supervision.model.dataproduct.PPListProblemChange"> + SELECT + b.S_Index as `index`, + a.PL_SenseName as sceneName, + b.S_Type as sceneType, + b.S_ProvinceName as provinceName, + b.S_CityName as cityName, + b.S_DistrictName as districtName, + b.S_TownName as townName, + c.ST_PlanStartTime as inspectionTime, + d.PT_TypeName as problemType, + d.PT_Name as problemName, + a.PL_Location as location, + a.PL_Time as problemTime, + a.PL_IsChanged as hasChanged, + a.PL_IsChanged as changeSum, + a.PL_ChangedTime as changedTime + FROM + im_t_problemlist AS a + LEFT JOIN sm_t_scense AS b ON a.S_GUID = b.S_GUID + LEFT JOIN tm_t_subtask as c on a.ST_GUID = c.ST_GUID + LEFT JOIN sm_t_problemtype as d on a.PT_GUID = d.PT_GUID + <where> + <include refid="Where_Area"> + <property name="pCode" value="b.S_ProvinceCode"/> + <property name="cCode" value="b.S_CityCode"/> + <property name="dCode" value="b.S_DistrictCode"/> + <property name="tCode" value="b.S_TownCode"/> + </include> + <include refid="Where_Time"> + <property name="sTime" value="a.PL_Time"/> + <property name="eTime" value="a.PL_Time"/> + </include> + <include refid="Where_Scene"> + <property name="sId" value="b.S_GUID"/> + <property name="typeId" value="b.S_TypeID"/> + </include> + </where> + ORDER BY a.PL_SenseName, c.ST_PlanStartTime, d.PT_TypeName, a.PL_Time ASC + </select> +</mapper> \ No newline at end of file diff --git a/src/test/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductControllerTest.kt b/src/test/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductControllerTest.kt new file mode 100644 index 0000000..7889fc4 --- /dev/null +++ b/src/test/kotlin/cn/flightfeather/supervision/lightshare/web/DataProductControllerTest.kt @@ -0,0 +1,46 @@ +package cn.flightfeather.supervision.lightshare.web + +import cn.flightfeather.supervision.common.utils.Constant +import cn.flightfeather.supervision.lightshare.service.DataProductService +import cn.flightfeather.supervision.model.dataproduct.DataProdOption +import org.junit.Test +import org.junit.jupiter.api.extension.ExtendWith +import org.junit.runner.RunWith +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.test.context.junit.jupiter.SpringExtension +import org.springframework.test.context.junit4.SpringRunner +import java.time.LocalDateTime + +@RunWith(SpringRunner::class) +@ExtendWith(SpringExtension::class) +@SpringBootTest +class DataProductControllerTest { + + @Autowired + lateinit var dataProductController: DataProductController + + @Autowired + lateinit var dataProductService: DataProductService + + private val option = DataProdOption().apply { + provinceCode = "31" + cityCode = "3100" + districtCode = "310106" + townCode + startTime = LocalDateTime.of(2025, 1, 1, 0, 0, 0) + endTime = LocalDateTime.of(2025, 7, 31, 23, 59, 59) + sceneId + sceneTypeId = Constant.SceneType.TYPE1.value.toInt() + } + + @Test + fun problemChangeList() { + val result = dataProductService.problemChangeList(option) + println(result) + } + + @Test + fun problemRecurrence() { + } +} \ No newline at end of file -- Gitblit v1.9.3