diff --git a/docker-compose.yml b/docker-compose.yml index 77322fc..a9cc411 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: volumes: - /opt/hsz/java:/app ports: - - "24205:24205" + - "24305:24305" environment: - SPRING_PROFILES_ACTIVE=prod - TZ=Asia/Shanghai diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskByBMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskByBMapper.java deleted file mode 100644 index b231149..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskByBMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.JcskByB; -import org.apache.ibatis.annotations.Mapper; - -@DS("tsg") -@Mapper -public interface JcskByBMapper extends BaseMapper { -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskByRMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskByRMapper.java deleted file mode 100644 index 31705e3..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskByRMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.JcskByR; -import org.apache.ibatis.annotations.Mapper; - -@DS("tsg") -@Mapper -public interface JcskByRMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskGnssBMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskGnssBMapper.java deleted file mode 100644 index f3544e0..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskGnssBMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.vo.HomeJcskGnssBVo; -import com.gunshi.project.hsz.common.model.JcskGnssB; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@DS("tsg") -@Mapper -public interface JcskGnssBMapper extends BaseMapper { - - @Select(""" - - """) - List getDetailsAndMonitoringDataList(); - - - - @Select(""" - - """) - HomeJcskGnssBVo getDetailsById(String id); - - - @Select(""" - select ch from jcsk_gnss_b where ch is not null - group by ch -""") - List listDms(); - - @Select(""" - select ch from jcsk_gnss_b group by ch -""") - List selectCH(); - - - @Select(""" - select cd from jcsk_gnss_b where ch = #{ch} -""") - List selectCDbyCh(@Param("ch") String ch); - - @Select(""" - select * from jcsk_gnss_b where ch is null order by cd asc -""") - List selectArtificial(); - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskGnssRMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskGnssRMapper.java deleted file mode 100644 index 39fd0b3..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskGnssRMapper.java +++ /dev/null @@ -1,233 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.common.model.so.JcskGnssRPageSo; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.common.model.vo.JcskGnessListVo; -import com.gunshi.project.hsz.common.model.vo.JcskGnssRHisVo; -import com.gunshi.project.hsz.common.model.vo.OsmoticShiftListVo2; -import com.gunshi.project.hsz.common.model.vo.OsmoticShiftValueVo2; -import com.gunshi.project.hsz.common.model.JcskGnssR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@DS("tsg") -@Mapper -public interface JcskGnssRMapper extends BaseMapper { - -// @Select(""" -// -// """) -// List listValue(); - - - @Select(""" - - """) - List listValue(); - - @Select(""" - - """) - List queryWarn(@Param("obj") OsmoticQuerySo so); - - - @Select(""" - - """) - List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - @Select(""" - - """) - List queryReorganizeValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - - @Select(""" - - """) - List detailValue(@Param("obj") OsmoticDetailQuerySo so); - - @Select(""" - -""") - Page pageQuery(Page page, @Param("obj") JcskGnssRPageSo page1); - - - @Select(""" - -""") - Page historyPage(Page page, @Param("dto") JcskGnssRPageSo page1); - - - @Select(""" - -""") - Page artificialPage(Page page,@Param("dto") JcskGnssRPageSo page1); -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSlBMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSlBMapper.java deleted file mode 100644 index ba17cd1..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSlBMapper.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.common.model.vo.HomeJcskSlBVo; -import com.gunshi.project.hsz.common.model.vo.JcskSyRVo; -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.common.model.vo.OsmoticValueVo2; -import com.gunshi.project.hsz.common.model.JcskSlB; -import com.gunshi.project.hsz.common.model.JcskSlR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@DS("tsg") -@Mapper -public interface JcskSlBMapper extends BaseMapper { - - @Select(""" - - """) - List getDetailsAndMonitoringDataList(); - - - @Select(""" - - """) - HomeJcskSlBVo getDetailsById(String id); - - - @Select(""" - select dvcd from jcsk_sl_b where dm = #{dm} -""") - List getDvcdByProfileCode(@Param("dm") String profileCode); - - - @Select( - """ - -""" - ) - List listValue(); - - - @Select(""" - - """) - List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - @Select(""" - - """) - List syncqueryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - @Select(""" - - """) - List query8AmValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - - @Select(""" - - """) - List detailValue(@Param("obj") OsmoticDetailQuerySo so); - - - @Select(""" - -""") - String selectDvcdByStcdAndMpcd(@Param("mpcd") String mpcd); -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSlRMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSlRMapper.java deleted file mode 100644 index e13c34d..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSlRMapper.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.common.model.so.JcskSlRPageSo; -import com.gunshi.project.hsz.common.model.vo.JcskSlRHisVo; -import com.gunshi.project.hsz.common.model.JcskSlR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@DS("tsg") -@Mapper -public interface JcskSlRMapper extends BaseMapper { - - - @Select(""" - -""") - Page pageQuery(Page page, @Param("dto") JcskSlRPageSo page1); - - - @Select(""" - -""") - Page historyPage(Page page, JcskSlRPageSo page1); - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyBMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyBMapper.java deleted file mode 100644 index 0de6313..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyBMapper.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.JcskSyB; -import com.gunshi.project.hsz.common.model.vo.HomeJcskSYBVo; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@DS("tsg") -@Mapper -public interface JcskSyBMapper extends BaseMapper { - - - @Select(""" - - """) - List getDetailsAndMonitoringDataList(); - - - @Select(""" - - """) - HomeJcskSYBVo getDetailsById(@Param("id") String id); - - - @Select(""" - SELECT dvcd from jcsk_sy_b where dm = #{dm} - ORDER BY LENGTH(dvcd) ASC,dvcd ASC; -""") - List getDvcdByProfileCode(@Param("dm") String profileCode); - - @Select(""" - -""") - String selectDvcdByStcdAndMpcd(@Param("stcd")String stcd,@Param("mpcd") String mpcd); - - - @Select(""" - select DISTINCT(t1.dvcd) from jcsk_sy_b t1 -""") - List selectAllDvcd(); - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyRMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyRMapper.java deleted file mode 100644 index 6e488e6..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/JcskSyRMapper.java +++ /dev/null @@ -1,389 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.common.model.JcskSyB; -import com.gunshi.project.hsz.common.model.JcskSyR; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.common.model.vo.*; -import com.gunshi.project.hsz.common.model.so.JcskSyRPageSo; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; - -import jakarta.validation.constraints.Size; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@DS("tsg") -@Mapper -public interface JcskSyRMapper extends BaseMapper { - @Select( - """ - -""" - ) - List listValue(); - - - - @Select( - """ - -""" - ) - List flowListValue(); - - - @Select(""" - - """) - List queryWarn(@Param("obj") OsmoticQuerySo so); - - - @Select(""" - - """) - List detailValue(@Param("obj") OsmoticDetailQuerySo so); - - - @Select(""" - - """) - List queryLineRz(@Param("obj") OsmoticQuerySo osmoticQuerySo, @Param("stcd") String stcd); - - - @Select(""" - - """) - List queryDrp(@Param("year") Integer year,@Param("stcd") String stcd); - - - - @Select(""" - - """) - List queryRz(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); - - @Select(""" - - """) - List queryRz2(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); - - - @Select(""" - - """) - List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - @Select(""" - - """) - List query8AmValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - - @Select(""" - - """) - List syncqueryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - - - @Select(""" - - """) - List queryLineValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - - @Select(""" - -""") - Page queryPage(Page page, @Param("dto") JcskSyRPageSo pageSo); - - @Select(""" -select dm from jcsk_sy_b -GROUP BY dm -""") - List listDm(); - - - @Select(""" - select stcd,mpcd from jcsk_sy_b -""") - List listStcdMpcd(); - - - @Select(""" - select dvcd from jcsk_sy_b where dm = #{dm} -""") - List listDvcdByDm(@Param("dm") String dm); - - @Select(""" - -""") - Page historyPage(Page page, @Param("dto") JcskSyRPageSo page1); - - - @Select(""" - -""") - Page artificialPage(Page page,@Param("dto") JcskSyRPageSo page1); - - @Select(""" - WITH ranked_data AS ( - SELECT - tm, - rz, - ABS(EXTRACT(HOUR FROM tm) + EXTRACT(MINUTE FROM tm)/60.0 - 8) as time_diff, - ROW_NUMBER() OVER (PARTITION BY DATE(tm) ORDER BY ABS(EXTRACT(HOUR FROM tm) + EXTRACT(MINUTE FROM tm)/60.0 - 8)) as rn - FROM st_rsvr_r - WHERE stcd = #{stcd} - AND tm >= #{dto.dateTimeRangeSo.start} - AND tm <= #{dto.dateTimeRangeSo.end} - ) - SELECT - TO_CHAR(DATE(tm) + INTERVAL '8 hours', 'YYYY-MM-DD HH24:MI:SS') as tm, - rz - FROM ranked_data - WHERE rn = 1 - ORDER BY tm -""") - List qeury8AmRz(@Param("dto") OsmoticQuerySo dto, @Param("stcd") String stcd); -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StFlowRMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StFlowRMapper.java deleted file mode 100644 index 0840344..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StFlowRMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StFlowR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface StFlowRMapper extends BaseMapper { - - - - @Select(""" - select t1.sttp,t2.* from - st_stbprp_b t1 - join (SELECT id, stcd, tm, inq, q, otq, crtime - FROM ( - SELECT *, - ROW_NUMBER() OVER (PARTITION BY stcd ORDER BY tm DESC) as rn - FROM st_flow_r - ) t - WHERE rn = 1) t2 on t1.stcd = t2.stcd -""") - List listNewData(); - -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StPptnRMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StPptnRMapper.java deleted file mode 100644 index bc831d7..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StPptnRMapper.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StPptnR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import java.util.Map; - -/** - * 描述: 降水量表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StPptnRMapper extends BaseMapper { - @Select(""" - - """) - BigDecimal queryStPptnTimeQuantumByStcdAndTime(@Param("stcd") String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime); - - List getStcdLastPptnData(); - - List> getPptnRDataList(@Param("stcd") String stcd, @Param("tm") String tm); - - List> getPptnRDataListByTask(@Param("resCode") String resCode, @Param("stcd") String stcd, @Param("tm") String tm); - - List getStcdFirstPptnData(); - - @Select(""" - select DISTINCT ON (r.stcd) r.stcd, r.drp, r.tm - from public.st_stbprp_b_elem b - join public.st_pptn_r r on b.stcd=r.stcd - ORDER BY r.stcd, r.tm DESC - """) - List getNewestDataOfEachStcd(); - - /** - * 根据stcd查询24小时总降水量 - */ -// @Select(""" -// select SUM(drp) from public.st_pptn_r -// where stcd=#{stcd} and tm >= now() - interval '24 hours' -// """) - @Select(""" - SELECT SUM(drp) - FROM public.st_pptn_r - WHERE stcd = #{stcd} - AND tm > DATE_TRUNC('day', NOW() - INTERVAL '1 day') + INTERVAL '8 hours' - AND tm <= DATE_TRUNC('day', NOW()) + INTERVAL '8 hours' - """) - BigDecimal getdrp24SumByStcd(String stcd); - - /** - * 根据stcd查询24小时内最大降水量 - */ -// @Select(""" -// SELECT * -// FROM public.st_pptn_r -// WHERE stcd = #{stcd} -// AND drp = ( -// SELECT MAX(drp) -// FROM public.st_pptn_r -// WHERE stcd = #{stcd} -// AND tm >= NOW() - INTERVAL '24 hours' -// ) -// AND tm >= NOW() - INTERVAL '24 hours' -// LIMIT 1 -// """) - @Select(""" - SELECT * - FROM public.st_pptn_r - WHERE stcd = #{stcd} - AND drp = ( - SELECT MAX(drp) - FROM public.st_pptn_r - WHERE stcd = #{stcd} - AND tm > DATE_TRUNC('day', NOW() - INTERVAL '1 day') + INTERVAL '8 hours' - AND tm <= DATE_TRUNC('day', NOW()) + INTERVAL '8 hours' - ) - AND tm > DATE_TRUNC('day', NOW() - INTERVAL '1 day') + INTERVAL '8 hours' - AND tm <= DATE_TRUNC('day', NOW()) + INTERVAL '8 hours' - LIMIT 1 - """) - StPptnR getdrp24MaxByStcd(String stcd); -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StPptnRRealMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StPptnRRealMapper.java deleted file mode 100644 index 9115b6b..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StPptnRRealMapper.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 降水量历史表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StPptnRRealMapper extends BaseMapper { - - int updatePptnRReal(@Param("stcd") String stcd); - - @Select(""" - - """) - List queryList(); -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRiverRMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRiverRMapper.java deleted file mode 100644 index 3e619a3..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRiverRMapper.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.common.model.StRiverR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: - * author: cxw - * date: 2024-09-24 14:01:07 - */ -@Mapper -public interface StRiverRMapper extends BaseMapper { - - - @Select(""" - -""") - StRiverR queryByOneByTimeRange(@Param("stcd") String stcd, @Param("obj") DateTimeRangeSo dateTimeRangeSo); -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRiverRRealMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRiverRRealMapper.java deleted file mode 100644 index 454739d..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRiverRRealMapper.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StRiverRReal; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: - * author: cxw - * date: 2024-09-24 14:01:07 - */ -@Mapper -public interface StRiverRRealMapper extends BaseMapper { - - - @Select(""" - select t.*,t2.stnm from st_river_r_real t - left join st_stbprp_b t2 on t.stcd = t2.stcd - where t.stcd = #{stcd} - order by t.tm desc limit 1 - """) - StRiverRReal queryQByStcd(@Param("stcd") String stcd); -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRsvrRMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRsvrRMapper.java deleted file mode 100644 index 33d2a4f..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRsvrRMapper.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StRsvrR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 描述: 水库历史水位表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StRsvrRMapper extends BaseMapper { - - List getStcdLastRsvrData(); - - List getStcdFirstRsvrData(); - - /** - * 根据stcd获取8点的rz - */ - @Select(""" - select rz - from public.st_rsvr_r - where stcd = '232' - and tm <= date_trunc('day', now()) + interval '8 hours' - and tm >= now() - interval '24 hours' -- 增加这个条件 - order by tm desc - limit 1 - """) - BigDecimal getRz8ByStcd(String stcd); - - /** - * 根据stcd获取昨日8点的rz - */ - @Select(""" - select rz - from public.st_rsvr_r - where stcd = #{stcd} - and tm >= date_trunc('day', now() - interval '1 day') + interval '7 hours 50 minutes' - and tm <= date_trunc('day', now() - interval '1 day') + interval '8 hours 10 minutes' - order by tm desc - limit 1 - """) - BigDecimal getRzYesterday8ByStcd(String stcd); -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRsvrRRealMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRsvrRRealMapper.java deleted file mode 100644 index 7cbc72b..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StRsvrRRealMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StRsvrRReal; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: 水库水位实时数据表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StRsvrRRealMapper extends BaseMapper { - - @Select(""" - select t2.*,t1.stnm FROM - st_stbprp_b t1 - join st_rsvr_r_real t2 - on t1.stcd = t2.stcd - where t2.stcd = #{stcd} - order by t2.tm desc - limit 1 - """) - StRsvrRReal queryRzByStcd(@Param("stcd") String stcd); - -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StStbprpBElemMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StStbprpBElemMapper.java deleted file mode 100644 index a1bc4da..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StStbprpBElemMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StStbprpBElem; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 测站监测值类型 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StStbprpBElemMapper extends BaseMapper { - @Select(""" - - """) - List selectByElem(@Param("elem") String elem); -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StStbprpBMapper.java b/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StStbprpBMapper.java deleted file mode 100644 index b26ec63..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/mapper/StStbprpBMapper.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.common.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StStbprpB; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: sttp 以水利标准来 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StStbprpBMapper extends BaseMapper { - - - @Select(""" - select * from public.st_stbprp_b b - join public.st_stbprp_b_elem e - on b.stcd = e.stcd - where e.elem='drp' - """) - List getPptnStations(); - - @Select(""" - select * from public.st_stbprp_b b - join public.st_stbprp_b_elem e - on b.stcd =e.stcd - where e.elem = 'rz' - """) - List getRsvrStations(); - -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/InspectTask.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/InspectTask.java deleted file mode 100644 index 2d88f09..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/InspectTask.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 巡检任务 -* author: xusan -* date: 2024-08-29 14:21:14 -*/ -@Schema(description="巡检任务") -@Data -@TableName("public.inspect_task") -@IgnoreAutoMapperAndDao -public class InspectTask implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 任务类型(1日常巡查 2特别检查 3汛前巡检) - */ - @TableField(value="task_type") - @Schema(description="任务类型(1日常巡查 2特别检查 3汛前巡检)") - private Integer taskType; - - /** - * 任务标题 - */ - @TableField(value="task_title") - @Schema(description="任务标题") - @Size(max = 100,message = "任务标题最大长度要小于 100") - private String taskTitle; - - /** - * 巡查人id - */ - @TableField(value="inspect_user_id") - @Schema(description="巡查人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long inspectUserId; - - /** - * 巡查人 - */ - @TableField(value="inspect_user_name") - @Schema(description="巡查人") - @Size(max = 100,message = "巡查人最大长度要小于 100") - private String inspectUserName; - - /** - * 任务内容 - */ - @TableField(value="task_content") - @Schema(description="任务内容") - @Size(max = 500,message = "任务内容最大长度要小于 500") - private String taskContent; - - /** - * 开始日期 - */ - @TableField(value="start_date") - @Schema(description="开始日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date startDate; - - /** - * 结束日期 - */ - @TableField(value="end_date") - @Schema(description="结束日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date endDate; - - /** - * 接收时间 - */ - @TableField(value="receive_time") - @Schema(description="接收时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date receiveTime; - - /** - * 完成时间 - */ - @TableField(value="finish_time") - @Schema(description="完成时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date finishTime; - - /** - * 状态(0未完成 1进行中 2已完成) - */ - @TableField(value="status") - @Schema(description="状态(0未完成 1进行中 2已完成)") - private Integer status; - - /** - * 创建人id - */ - @TableField(value="create_user_id") - @Schema(description="创建人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long createUserId; - - /** - * 创建人 - */ - @TableField(value="create_user_name") - @Schema(description="创建人") - @Size(max = 100,message = "创建人最大长度要小于 100") - private String createUserName; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @TableField(exist = false) - @Schema(description="问题数量") - private Integer problemNum = 0; - - @TableField(exist = false) - @Schema(description="待处理数量") - private Integer handleNum = 0; - - @TableField(exist = false) - @Schema(description="巡检项") - private List items; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/InspectTaskDetail.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/InspectTaskDetail.java deleted file mode 100644 index bbbac54..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/InspectTaskDetail.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 巡查信息 -* author: xusan -* date: 2024-08-29 15:21:24 -*/ -@Schema(description="巡查信息") -@Data -@TableName("public.inspect_task_detail") -@IgnoreAutoMapperAndDao -public class InspectTaskDetail implements Serializable { - - public final static String thisTableName = "InspectTaskDetail"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 任务id - */ - @TableField(value="task_id") - @Schema(description="任务id") - @JsonSerialize(using = ToStringSerializer.class) - private Long taskId; - - /** - * 巡查点id - */ - @TableField(value="point_id") - @Schema(description="巡查点id") - @JsonSerialize(using = ToStringSerializer.class) - private Long pointId; - - /** - * 巡查项id - */ - @TableField(value="item_id") - @Schema(description="巡查项id") - @JsonSerialize(using = ToStringSerializer.class) - private Long itemId; - - /** - * 是否正常(0否 1是) - */ - @TableField(value="is_normal") - @Schema(description="是否正常(0否 1是)") - private Integer isNormal; - - /** - * 巡查问题描述 - */ - @TableField(value="problem_desc") - @Schema(description="巡查问题描述") - @Size(max = 500,message = "巡查问题描述最大长度要小于 500") - private String problemDesc; - - /** - * 是否处理(0否 1是) - */ - @TableField(value="is_handle") - @Schema(description="是否处理(0否 1是)") - private Integer isHandle; - - /** - * 处理人id - */ - @TableField(value="handle_user_id") - @Schema(description="处理人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long handleUserId; - - /** - * 处理人 - */ - @TableField(value="handle_user_name") - @Schema(description="处理人") - @Size(max = 100,message = "处理人最大长度要小于 100") - private String handleUserName; - - /** - * 处理描述 - */ - @TableField(value="handle_desc") - @Schema(description="处理描述") - @Size(max = 500,message = "处理描述最大长度要小于 500") - private String handleDesc; - - /** - * 处理时间 - */ - @TableField(value="handle_time") - @Schema(description="处理时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date handleTime; - -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByB.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByB.java deleted file mode 100644 index 522414b..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByB.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 白蚁设备表实体类 - * 数据源为WaterDevice - * 与r表通过device_id关联 - * @see com.gunshi.project.hsz.datasync.entity.jcsk.WaterDevice - */ -@Data -@TableName("jcsk_by_b") -@IgnoreAutoMapperAndDao -public class JcskByB { - /** - * 主键 - */ - @TableField("id") - private Integer id; - - /** - * 设备名称 - */ - @TableField("name") - private String name; - - /** - * 设备编码 - */ - @TableField("code") - private String code; - - /** - * 站点接入编码 - */ - @TableField("mn_no") - private String mnNo; - - /** - * 厂家id - */ - @TableField("factory_id") - private Integer factoryId; - - /** - * 服务站点id - */ - @TableField("station_id") - private Integer stationId; - - /** - * 服务站点名称 - */ - @TableField("station_name") - private String stationName; - - /** - * 创建时间 - */ - @TableField("created_at") - private Integer createdAt; - - /** - * 创建人id - */ - @TableField("created_user") - private Integer createdUser; - - /** - * 修改时间 - */ - @TableField("updated_at") - private Integer updatedAt; - - /** - * 修改人id - */ - @TableField("updated_user") - private Integer updatedUser; - - /** - * 状态 - */ - @TableField("status") - private Integer status; - - /** - * 纬度 - */ - @TableField("lat") - private BigDecimal lat; - - /** - * 经度 - */ - @TableField("lon") - private BigDecimal lon; - - /** - * 省份id - */ - @TableField("province_id") - private Long provinceId; - - /** - * 省份名称 - */ - @TableField("province_name") - private String provinceName; - - /** - * 城市id - */ - @TableField("city_id") - private Long cityId; - - /** - * 城市名称 - */ - @TableField("city_name") - private String cityName; - - /** - * 区域名称 - */ - @TableField("area_name") - private String areaName; - - /** - * 区域id - */ - @TableField("area_id") - private Long areaId; - - /** - * 设备类型 - */ - @TableField("type") - private Integer type; - - /** - * 设备类型详情 - */ - @TableField("send_type") - private String sendType; - - /** - * 联系人 - */ - @TableField("contact") - private String contact; - - /** - * 联系电话 - */ - @TableField("telephone") - private String telephone; - - /** - * 流域 - */ - @TableField("river") - private String river; - - /** - * 安装地点 - */ - @TableField("address") - private String address; - - /** - * 产品型号 - */ - @TableField("model") - private String model; - - /** - * 备注 - */ - @TableField("remark") - private String remark; - - /** - * 通信方式 - */ - @TableField("communication_type") - private Integer communicationType; - - /** - * 设备图片 - */ - @TableField("image_url") - private String imageUrl; - - /** - * 设备视频流地址的ip - */ - @TableField("video_ip") - private String videoIp; - - /** - * 设备视频id - */ - @TableField("video_id") - private String videoId; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByBD.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByBD.java deleted file mode 100644 index d8826a5..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByBD.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 设备站点关联表实体类 - * 对应表:jcsk_by_b_d - */ -@Data -@TableName("public.jcsk_by_b_d") -@IgnoreAutoMapperAndDao -public class JcskByBD { - - /** - * 机箱 - */ - @TableField(value="device_id") - @Schema(description="设备编号") - private Integer deviceId; - - /** - * 站点编号 - */ - @TableField(value = "\"order\"") - @Schema(description = "测点编号") - private String order; - - /** - * 联网方式 - */ - @TableField(value = "inte_type") - @Schema(description = "联网方式") - private String inteType; - - /** - * 安装位置 - */ - @TableField(value = "fix_place") - @Schema(description = "安装位置") - private String fixPlace; - - /** - * 经度 - */ - @TableField(value = "lgtd") - @Schema(description = "经度") - private BigDecimal lgtd; - - /** - * 备注 - */ - @TableField(value = "remark") - @Schema(description = "备注") - private String remark; - - /** - * 纬度 - */ - @TableField(value = "lttd") - @Schema(description = "纬度") - private BigDecimal lttd; - - - @TableField(exist = false) - @Schema(description = "有无白蚁 1为有 0为无") - private Integer status; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByR.java deleted file mode 100644 index d921ad5..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskByR.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.model.vo.JcskByRProcessVo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 白蚁数据表实体类 - * 数据源为WaterDataTermites - * nmNo = JcskByB. - * @see com.gunshi.project.hsz.datasync.entity.jcsk.WaterDataTermites - */ -@Data -@TableName("jcsk_by_r") -@IgnoreAutoMapperAndDao -public class JcskByR { - /** - * 设备编码 - */ - @TableField("mn_no") - private String mnNo; - - /** - * 白蚁蚁情状态,有白蚁入侵为1 - */ - @TableField("status") - private Integer status; - - /** - * 白蚁设备电量 - */ - @TableField("electricity") - private Integer electricity; - - /** - * 白蚁设备安装的点位顺序 - */ - @TableField("\"order\"") - private String order; - - /** - * 创建时间 - */ - @TableField("created_at") - private LocalDateTime createdAt; - - /** - * 观测时间 - */ - @TableField("ob_time") - private String obTime; - - /** - * 观测时间2 - */ - @TableField("ob_date") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime obDate; - - /** - * 主键id - */ - @TableField("id") - private Integer id; - - /** - * 水库id - */ - @TableField("station_id") - private Integer stationId; - - /** - * 站点名称 - */ - @TableField("station_name") - private String stationName; - - /** - * 设备id - */ - @TableField("device_id") - private Integer deviceId; - - /** - * 设备名称 - */ - @TableField("device_name") - private String deviceName; - - /** - * 任务状态 - */ - @TableField("task_status") - private String taskStatus; - - /** - * 任务id - */ - @TableField("task_id") - private String taskId; - - /** - * 接收类型 - */ - @TableField("receive_type") - private Short receiveType; - - - @Schema(description = "是否处理") - @TableField(exist = false) - private Boolean isProcess = false; - - @Schema(description = "是否有巡检任务") - @TableField(exist = false) - private Boolean hasInspectTask = false; - - - @Schema(description = "工单详情") - @TableField(exist = false) - private JcskByRProcessVo jcskByRProcessVo; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssB.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssB.java deleted file mode 100644 index 0020a10..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssB.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 位移设备表 - * 数据源为AttWyCdBase - * 与r表通过rscd加cd关联 - * @see com.gunshi.project.hsz.datasync.entity.jcsk.AttWyCdBase - */ -@Data -@TableName("jcsk_gnss_b") -@IgnoreAutoMapperAndDao -public class JcskGnssB { - /** - * 测点编码 - */ - @TableField("cd") - private String cd; - - /** - * 测点名称 - */ - @TableField("cd_nm") - private String cdNm; - - /** - * 桩号 - */ - @TableField("ch") - private String ch; - - /** - * 测点类型(sl/wy/sy) - */ - @TableField("cd_type") - private String cdType; - - /** - * 水库编码 - */ - @TableField("res_cd") - private String resCd; - - /** - * 设备状态 - */ - @TableField("device_status") - private String deviceStatus; - - @TableField(exist = false) - private String stationCode; - - @Schema(description = "0 离线 1 在线") - @TableField(exist = false) - private Integer status; - - @TableField("lttd") - private BigDecimal lttd; - - @TableField("lgtd") - private BigDecimal lgtd; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssR.java deleted file mode 100644 index fb38c5a..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskGnssR.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; - -/** - * 位移数据表 - * 数据源为AttMqttCalcData - * @see com.gunshi.project.hsz.datasync.entity.jcsk.AttMqttCalcData - */ -@Data -@TableName("jcsk_gnss_r") -@IgnoreAutoMapperAndDao -public class JcskGnssR { - /** - * 水库编码设备编码 - */ - @TableField("res_cd") - private String resCd; - - - @TableField("is_artificial") - private Integer isArtificial; - - - /** - * 测点编码 - */ - @TableField("cd") - private String cd; - - /** - * e方向变形值,单位(mm) - */ - @TableField("de") - private BigDecimal de; - - /** - * n方向变形值,单位(mm) - */ - @TableField("dn") - private BigDecimal dn; - - /** - * u方向变形值,单位(mm) - */ - @TableField("du") - private BigDecimal du; - - /** - * 站点高程 - */ - @TableField("alt") - private BigDecimal alt; - - /** - * 监测时间 - */ - @TableField("tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime tm; - - /** - * 更新时间 - */ - @TableField("update_tm") - private LocalDateTime updateTm; - - /** - * 人工录入时间,用于执行更新时用 - */ - @TableField(exist = false) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime newUpdateTm; - - - @TableField(exist = false) - private String ch; - - @TableField(exist = false) - private String cdnm; - - /** - * 人工录入cd,用于执行更新时用 - */ - @TableField(exist = false) - private String newUpdateCd; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSlB.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSlB.java deleted file mode 100644 index f439172..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSlB.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.LocalDateTime; - -/** - * 渗流测点表实体类 - * 数据源为DsmSpgSpqnmp - * 与r表通过rscd,stcd,mpcd关联 - * @see com.gunshi.project.hsz.datasync.entity.jcsk.DsmSpgSpqnmp - */ -@Data -@TableName("jcsk_sl_b") -@IgnoreAutoMapperAndDao -public class JcskSlB { - - - /** - * 水库代码 - */ - @TableField("rscd") - private String rscd; - - /** - * 水工建筑物编号 - */ - @TableField("hycncd") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("mpcd") - private String mpcd; - - /** - * rtu编号 - */ - @TableField("stcd") - private String stcd; - - /** - * 桩号 - */ - @TableField("ch") - private String ch; - - /** - * 轴距,单位m - */ - @TableField("ofax") - private BigDecimal ofax; - - /** - * 高程,单位m - */ - @TableField("el") - private BigDecimal el; - - /** - * 安装日期 - */ - @TableField("indt") - private LocalDate indt; - - /** - * 仪器编号 - */ - @TableField("dvcd") - private String dvcd; - - /** - * 经度 - */ - @TableField("lgtd") - private BigDecimal lgtd; - - /** - * 纬度 - */ - @TableField("lttd") - private BigDecimal lttd; - - /** - * 备注 - */ - @TableField("rm") - private String rm; - - /** - * 资料更新时间 - */ - @TableField("dtuptm") - private LocalDateTime dtuptm; - - /** - * 断面 - */ - @TableField("dm") - private String dm; - - /** - * 是否填报 - */ - @TableField("is_tb") - private String isTb; - - @TableField(exist = false) - private String stationCode; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSlR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSlR.java deleted file mode 100644 index e195c76..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSlR.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * 渗流数据表实体类 - * 数据源为DsmSpgSpqnNormal - * @see com.gunshi.project.hsz.datasync.entity.jcsk.DsmSpgSpqn - */ -@Data -@TableName("jcsk_sl_r") -@IgnoreAutoMapperAndDao -public class JcskSlR { - /** - * 水库代码 - */ - @TableField("rscd") - private String rscd; - - - /** - * 水工建筑物编号 - */ - @TableField("hycncd") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("mpcd") - private String mpcd; - - @TableField("stcd") - private String stcd; - - - /** - * 测量时间 - */ - @TableField("mstm") - private LocalDateTime mstm; - - /** - * 温度,单位℃ - */ - @TableField("tm") - private BigDecimal tm; - - /** - * 渗流量,单位l/s - */ - @TableField("spqn") - private BigDecimal spqn; - - /** - * 标准水温渗流量,单位l/s - */ - @TableField("stspqn") - private BigDecimal stspqn; - - @TableField(exist = false) - private String dvcd; - -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyB.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyB.java deleted file mode 100644 index dd0980c..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyB.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.LocalDateTime; - -/** - * 渗压测点表 - * 数据源为DsmSpgSpprmp - * 与r表通过rscd,stcd,mpcd关联 - * @see com.gunshi.project.hsz.datasync.entity.jcsk.DsmSpgSpprmp - */ -@Data -@TableName("jcsk_sy_b") -@IgnoreAutoMapperAndDao -public class JcskSyB { - /** - * 水库代码 - */ - @TableField("rscd") - private String rscd; - - /** - * rtu编码 - */ - @TableField("stcd") - private String stcd; - - /** - * 水工建筑物编号 - */ - @TableField("hycncd") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("mpcd") - private String mpcd; - - /** - * 桩号 - */ - @TableField("ch") - private String ch; - - /** - * 轴距,单位m - */ - @TableField("ofax") - private BigDecimal ofax; - - /** - * 高程,单位m - */ - @TableField("el") - private BigDecimal el; - - /** - * 监测类型 - */ - @TableField("msps") - private String msps; - - /** - * 透水段底高程,单位m - */ - @TableField("pmbtel") - private BigDecimal pmbtel; - - /** - * 透水段顶高程,单位m - */ - @TableField("pmtpel") - private BigDecimal pmtpel; - - /** - * 坝面高程 - */ - @TableField("dsel") - private BigDecimal dsel; - - /** - * 安装日期 - */ - @TableField("indt") - private LocalDate indt; - - /** - * 仪器编号 - */ - @TableField("dvcd") - private String dvcd; - - /** - * 经度 - */ - @TableField("lgtd") - private BigDecimal lgtd; - - /** - * 纬度 - */ - @TableField("lttd") - private BigDecimal lttd; - - /** - * 备注 - */ - @TableField("rm") - private String rm; - - /** - * 资料更新时间 - */ - @TableField("dtuptm") - private LocalDateTime dtuptm; - - /** - * 断面 - */ - @TableField("dm") - private String dm; - - /** - * 是否填报 - */ - @TableField("is_tb") - private String isTb; - - - @TableField(exist = false) - private String stationCode; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyR.java deleted file mode 100644 index f697ccd..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/JcskSyR.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; - -/** - * 渗压数据表实体类 - * 数据源为DsmSpgSpprNormal - * @see com.gunshi.project.hsz.datasync.entity.jcsk.DsmSpgSppr - */ -@Data -@TableName("jcsk_sy_r") -@IgnoreAutoMapperAndDao -public class JcskSyR { - /** - * 水库代码 - */ - @TableField("rscd") - private String rscd; - - /** - * rtu编码 - */ - @TableField("stcd") - private String stcd; - - /** - * 水工建筑物编号 - */ - @TableField("hycncd") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("mpcd") - private String mpcd; - - /** - * 测量时间 - */ - @TableField("mstm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime mstm; - - /** - * 温度 - */ - @TableField("tm") - private BigDecimal tm; - - /** - * 用于记录人工录入数据时的新时间 - */ - @TableField(exist = false) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date updateMstm; - - - @TableField("is_artificial") - @Schema(description = "是否为人工录入 0不是 1是") - private Integer isArtificial; - - - /** - * 渗流压力水位,单位m - */ - @TableField("spprwl") - private BigDecimal spprwl; - - /** - * 更新时间 - */ - @TableField("update_tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime updateTm; - - - @TableField(exist = false) - @Schema(description = "断面编码") - private String dm; - - - @TableField(exist = false) - @Schema(description = "断面名称") - private String dmName; - - - @TableField(exist = false) - @Schema(description = "测点编号") - private String dvcd; -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StFlowR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StFlowR.java deleted file mode 100644 index db1bdf5..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StFlowR.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gunshi.project.hsz.common.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * @author lyf - * @since 2025-10-16 - */ -@Data -@TableName("st_flow_r") -@IgnoreAutoMapperAndDao -public class StFlowR { - - /** - * 主键id - */ - @TableId(value = "id", type = IdType.NONE) - private Integer id; - - /** - * 测站编码 - */ - @TableField("stcd") - private String stcd; - - /** - * 观测时间 - */ - @TableField("tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime tm; - - /** - * 入库流量,单位m³/s - */ - @TableField("inq") - private BigDecimal inq; - - /** - * 瞬时流量,单位m³/s - */ - @TableField("q") - private BigDecimal q; - - /** - * 出库流量,单位m³/s - */ - @TableField("otq") - private BigDecimal otq; - - /** - * 创建时间 - */ - @TableField("crtime") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime crtime; - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StPptnR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StPptnR.java deleted file mode 100644 index c4ff514..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StPptnR.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Date; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.gunshi.core.dateformat.DateFormatString; - -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -/** -* 描述: 降水量表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="降水量表") -@Data -@TableName("public.st_pptn_r") -@JsonIgnoreProperties(ignoreUnknown = true) -@IgnoreAutoMapperAndDao -public class StPptnR implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测站编码 - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 20") - @NotBlank(message = "测站编码不能为空") - private String stcd; - - /** - * 时段降水量 - */ - @TableField(value="drp") - @Schema(description="时段降水量") - private String drp; - - /** - * 时间 - */ - @TableField(value="tm") - @Schema(description="时间") - @NotNull(message = "时间不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 时段长 - */ - @TableField(value="intv") - @Schema(description="时段长") - private String intv; - - /** - * 降水历时 - */ - @TableField(value="pdr") - @Schema(description="降水历时") - private String pdr; - - /** - * 日降水量 - */ - @TableField(value="dyp") - @Schema(description="日降水量") - private String dyp; - - /** - * 天气状况 - */ - @TableField(value="wth") - @Schema(description="天气状况") - @Size(max = 1,message = "天气状况最大长度要小于 1") - private String wth; - - /** - * chtm - */ - @TableField(value="chtm") - @Schema(description="chtm") - // @Size(max = 0,message = "chtm最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - - @TableField(exist = false) - private Date stm;// 同步的数据的开始时间 - - @TableField(exist = false) - private Date etm;// 同步的数据的结束时间 - - @TableField(exist = false) - private String source;// 测站数据源 - - @TableField(exist = false) - private String sttp;// 测站类型 -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StPptnRReal.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StPptnRReal.java deleted file mode 100644 index cd359ca..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StPptnRReal.java +++ /dev/null @@ -1,172 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 降水量历史表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="降水量历史表") -@Data -@TableName("public.st_pptn_r_real") -@JsonIgnoreProperties(ignoreUnknown = true) -@IgnoreAutoMapperAndDao -public class StPptnRReal implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * stcd - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="stcd") - @Size(max = 20,message = "stcd最大长度要小于 20") - @NotBlank(message = "stcd不能为空") - private String stcd; - - /** - * tm - */ - @TableField(value="tm") - @Schema(description="tm") - // @Size(max = 0,message = "tm最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * drp - */ - @TableField(value="drp") - @Schema(description="drp") - // @Size(max = 0,message = "drp最大长度要小于 0") - private BigDecimal drp; - - /** - * today - */ - @TableField(value="today") - @Schema(description="today") - // @Size(max = 0,message = "today最大长度要小于 0") - private BigDecimal today; - - /** - * m10 - */ - @TableField(value="m10") - @Schema(description="m10") - // @Size(max = 0,message = "m10最大长度要小于 0") - private BigDecimal m10; - - /** - * m30 - */ - @TableField(value="m30") - @Schema(description="m30") - // @Size(max = 0,message = "m30最大长度要小于 0") - private BigDecimal m30; - - /** - * h1 - */ - @TableField(value="h1") - @Schema(description="h1") - // @Size(max = 0,message = "h1最大长度要小于 0") - private BigDecimal h1; - - /** - * h3 - */ - @TableField(value="h3") - @Schema(description="h3") - // @Size(max = 0,message = "h3最大长度要小于 0") - private BigDecimal h3; - - /** - * h6 - */ - @TableField(value="h6") - @Schema(description="h6") - // @Size(max = 0,message = "h6最大长度要小于 0") - private BigDecimal h6; - - /** - * h12 - */ - @TableField(value="h12") - @Schema(description="h12") - // @Size(max = 0,message = "h12最大长度要小于 0") - private BigDecimal h12; - - /** - * h24 - */ - @TableField(value="h24") - @Schema(description="h24") - // @Size(max = 0,message = "h24最大长度要小于 0") - private BigDecimal h24; - - /** - * h48 - */ - @TableField(value="h48") - @Schema(description="h48") - // @Size(max = 0,message = "h48最大长度要小于 0") - private BigDecimal h48; - - /** - * chtm - */ - @TableField(value="chtm") - @Schema(description="chtm") - // @Size(max = 0,message = "chtm最大长度要小于 0") - @NotNull(message = "chtm不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * warning - */ - @TableField(value="warning") - @Schema(description="warning") - // @Size(max = 0,message = "warning最大长度要小于 0") - private Integer warning; - - /** - * status - */ - @TableField(value="status") - @Schema(description="status") - // @Size(max = 0,message = "status最大长度要小于 0") - private Integer status; - - /** - * cluster - */ - @TableField(value="cluster") - @Schema(description="cluster") - @Size(max = 10,message = "cluster最大长度要小于 10") - private String cluster; - - @TableField(exist = false) - @Schema(description = "站点名称") - private String stnm; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRiverR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRiverR.java deleted file mode 100644 index dbd334c..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRiverR.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: -* author: cxw -* date: 2024-09-24 14:01:07 -*/ -@Schema(description="河道水位表") -@Data -@TableName("public.st_river_r") -public class StRiverR implements Serializable { - - public final static String thisTableName = "StRiverR"; - - private static final long serialVersionUID = 1L; - - /** - * stcd - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="stcd") - @Size(max = 20,message = "stcd最大长度要小于 20") - @NotBlank(message = "stcd不能为空") - @NotNull(message = "stcd不能为空") - private String stcd; - - /** - * tm - */ - @TableField(value="tm") - @Schema(description="tm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * z - */ - @TableField(value="z") - @Schema(description="z") - private BigDecimal z; - - /** - * q - */ - @TableField(value="q") - @Schema(description="q") - private BigDecimal q; - - /** - * xsa - */ - @TableField(value="xsa") - @Schema(description="xsa") - private BigDecimal xsa; - - /** - * xsavv - */ - @TableField(value="xsavv") - @Schema(description="xsavv") - private BigDecimal xsavv; - - /** - * xsmxv - */ - @TableField(value="xsmxv") - @Schema(description="xsmxv") - private BigDecimal xsmxv; - - /** - * flwchrcd - */ - @TableField(value="flwchrcd") - @Schema(description="flwchrcd") - @Size(max = 4,message = "flwchrcd最大长度要小于 4") - private String flwchrcd; - - /** - * wptn - */ - @TableField(value="wptn") - @Schema(description="wptn") - @Size(max = 4,message = "wptn最大长度要小于 4") - private String wptn; - - /** - * msqmt - */ - @TableField(value="msqmt") - @Schema(description="msqmt") - @Size(max = 4,message = "msqmt最大长度要小于 4") - private String msqmt; - - /** - * msamt - */ - @TableField(value="msamt") - @Schema(description="msamt") - @Size(max = 4,message = "msamt最大长度要小于 4") - private String msamt; - - /** - * msvmt - */ - @TableField(value="msvmt") - @Schema(description="msvmt") - @Size(max = 4,message = "msvmt最大长度要小于 4") - private String msvmt; - - /** - * chtm - */ - @TableField(value="chtm") - @Schema(description="chtm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * sendtm - */ - @TableField(value="sendtm") - @Schema(description="sendtm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date sendtm; - - /** - * receivetm - */ - @TableField(value="receivetm") - @Schema(description="receivetm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date receivetm; - - /** - * source_int - */ - @TableField(value="source_int") - @Schema(description="source_int") - private Integer sourceInt; - - - @TableField(exist = false) - private String stnm; - - @TableField(exist = false) - private BigDecimal lgtd; - - @TableField(exist = false) - private BigDecimal lttd; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRiverRReal.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRiverRReal.java deleted file mode 100644 index 9c75a55..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRiverRReal.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: -* author: cxw -* date: 2024-09-24 14:01:07 -*/ -@Schema(description="") -@Data -@TableName("public.st_river_r_real") -public class StRiverRReal implements Serializable { - - public final static String thisTableName = "StRiverRReal"; - - private static final long serialVersionUID = 1L; - - /** - * stcd - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="stcd") - @Size(max = 20,message = "stcd最大长度要小于 20") - @NotBlank(message = "stcd不能为空") - @NotNull(message = "stcd不能为空") - private String stcd; - - @TableField(exist = false) - private String stnm; - - /** - * tm - */ - @TableField(value="tm") - @Schema(description="tm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * z - */ - @TableField(value="z") - @Schema(description="z") - private BigDecimal z; - - /** - * q - */ - @TableField(value="q") - @Schema(description="q") - private BigDecimal q; - - /** - * xsa - */ - @TableField(value="xsa") - @Schema(description="xsa") - private BigDecimal xsa; - - /** - * xsavv - */ - @TableField(value="xsavv") - @Schema(description="xsavv") - private BigDecimal xsavv; - - /** - * xsmxv - */ - @TableField(value="xsmxv") - @Schema(description="xsmxv") - private BigDecimal xsmxv; - - /** - * flwchrcdf - */ - @TableField(value="flwchrcdf") - @Schema(description="flwchrcdf") - @Size(max = 1,message = "flwchrcdf最大长度要小于 1") - private String flwchrcdf; - - /** - * wptn - */ - @TableField(value="wptn") - @Schema(description="wptn") - @Size(max = 1,message = "wptn最大长度要小于 1") - private String wptn; - - /** - * maxz - */ - @TableField(value="maxz") - @Schema(description="maxz") - private BigDecimal maxz; - - /** - * maxtm - */ - @TableField(value="maxtm") - @Schema(description="maxtm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date maxtm; - - /** - * msqmt - */ - @TableField(value="msqmt") - @Schema(description="msqmt") - @Size(max = 1,message = "msqmt最大长度要小于 1") - private String msqmt; - - /** - * msamt - */ - @TableField(value="msamt") - @Schema(description="msamt") - @Size(max = 1,message = "msamt最大长度要小于 1") - private String msamt; - - /** - * msvmt - */ - @TableField(value="msvmt") - @Schema(description="msvmt") - @Size(max = 1,message = "msvmt最大长度要小于 1") - private String msvmt; - - /** - * chtm - */ - @TableField(value="chtm") - @Schema(description="chtm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * warning - */ - @TableField(value="warning") - @Schema(description="warning") - private Integer warning; - - /** - * status - */ - @TableField(value="status") - @Schema(description="status") - private Integer status; - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRsvrR.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRsvrR.java deleted file mode 100644 index 2b61720..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRsvrR.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 水库历史水位表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库历史水位表") -@Data -@TableName("public.st_rsvr_r") -@JsonIgnoreProperties(ignoreUnknown = true) -public class StRsvrR implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * stcd - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="stcd") - @Size(max = 20,message = "stcd最大长度要小于 20") - @NotBlank(message = "stcd不能为空") - private String stcd; - - /** - * tm - */ - @TableField(value="tm") - @Schema(description="tm") - @NotNull(message = "tm不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * rz - */ - @TableField(value="rz") - @Schema(description="rz") - private String rz; - - /** - * inq - */ - @TableField(value="inq") - @Schema(description="inq") - private String inq; - - /** - * w - */ - @TableField(value="w") - @Schema(description="w") - private String w; - - /** - * blrz - */ - @TableField(value="blrz") - @Schema(description="blrz") - private String blrz; - - /** - * otq - */ - @TableField(value="otq") - @Schema(description="otq") - private String otq; - - /** - * rwchrcd - */ - @TableField(value="rwchrcd") - @Schema(description="rwchrcd") - @Size(max = 4,message = "rwchrcd最大长度要小于 4") - private String rwchrcd; - - /** - * rwptn - */ - @TableField(value="rwptn") - @Schema(description="rwptn") - @Size(max = 4,message = "rwptn最大长度要小于 4") - private String rwptn; - - /** - * inqdr - */ - @TableField(value="inqdr") - @Schema(description="inqdr") - // @Size(max = 0,message = "inqdr最大长度要小于 0") - private String inqdr; - - /** - * msqmt - */ - @TableField(value="msqmt") - @Schema(description="msqmt") - @Size(max = 4,message = "msqmt最大长度要小于 4") - private String msqmt; - - /** - * chtm - */ - @TableField(value="chtm") - @Schema(description="chtm") - // @Size(max = 0,message = "chtm最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * sendtm - */ - @TableField(value="sendtm") - @Schema(description="sendtm") - // @Size(max = 0,message = "sendtm最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date sendtm; - - /** - * receivetm - */ - @TableField(value="receivetm") - @Schema(description="receivetm") - // @Size(max = 0,message = "receivetm最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date receivetm; - - /** - * source_int - */ - @TableField(value="source_int") - @Schema(description="source_int") - // @Size(max = 0,message = "source_int最大长度要小于 0") - private Integer sourceInt; - - - @TableField(exist = false) - private Date stm;// 同步的数据的开始时间 - - @TableField(exist = false) - private Date etm;// 同步的数据的结束时间 - - @TableField(exist = false) - private String source;// 测站数据源 - - @TableField(exist = false) - private String sttp;// 测站类型 - - @TableField(exist = false) - private String z;// 山洪河道水位 - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRsvrRReal.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRsvrRReal.java deleted file mode 100644 index 17cb456..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StRsvrRReal.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 水库水位实时数据表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库水位实时数据表") -@Data -@TableName("public.st_rsvr_r_real") -@JsonIgnoreProperties(ignoreUnknown = true) -public class StRsvrRReal implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * stcd - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="stcd") - @Size(max = 20,message = "stcd最大长度要小于 20") - @NotBlank(message = "stcd不能为空") - private String stcd; - - - /** - * stnm - */ - @TableField(exist=false) - private String stnm; - - /** - * tm - */ - @TableField(value="tm") - @Schema(description="tm") - // @Size(max = 0,message = "tm最大长度要小于 0") - @NotNull(message = "tm不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * rz - */ - @TableField(value="rz") - @Schema(description="rz") - // @Size(max = 0,message = "rz最大长度要小于 0") - private BigDecimal rz; - - /** - * inq - */ - @TableField(value="inq") - @Schema(description="inq") - // @Size(max = 0,message = "inq最大长度要小于 0") - private String inq; - - /** - * w - */ - @TableField(value="w") - @Schema(description="w") - // @Size(max = 0,message = "w最大长度要小于 0") - private String w; - - /** - * blrz - */ - @TableField(value="blrz") - @Schema(description="blrz") - // @Size(max = 0,message = "blrz最大长度要小于 0") - private String blrz; - - /** - * otq - */ - @TableField(value="otq") - @Schema(description="otq") - // @Size(max = 0,message = "otq最大长度要小于 0") - private String otq; - - /** - * rwchrcd - */ - @TableField(value="rwchrcd") - @Schema(description="rwchrcd") - @Size(max = 1,message = "rwchrcd最大长度要小于 1") - private String rwchrcd; - - /** - * rwptn - */ - @TableField(value="rwptn") - @Schema(description="rwptn") - @Size(max = 1,message = "rwptn最大长度要小于 1") - private String rwptn; - - /** - * inqdr - */ - @TableField(value="inqdr") - @Schema(description="inqdr") - // @Size(max = 0,message = "inqdr最大长度要小于 0") - private String inqdr; - - /** - * msqmt - */ - @TableField(value="msqmt") - @Schema(description="msqmt") - @Size(max = 1,message = "msqmt最大长度要小于 1") - private String msqmt; - - /** - * chtm - */ - @TableField(value="chtm") - @Schema(description="chtm") - // @Size(max = 0,message = "chtm最大长度要小于 0") - @NotNull(message = "chtm不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * warning - */ - @TableField(value="warning") - @Schema(description="warning") - // @Size(max = 0,message = "warning最大长度要小于 0") - private Integer warning; - - /** - * status - */ - @TableField(value="status") - @Schema(description="status") - // @Size(max = 0,message = "status最大长度要小于 0") - private Integer status; - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StStbprpB.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StStbprpB.java deleted file mode 100644 index 3b5d0f4..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StStbprpB.java +++ /dev/null @@ -1,543 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: sttp 以水利标准来 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="sttp 以水利标准来") -@Data -@TableName("public.st_stbprp_b") -@IgnoreAutoMapperAndDao -public class StStbprpB implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测站编码 - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="测站编码") - @Size(max = 32,message = "测站编码最大长度要小于 32") - @NotBlank(message = "测站编码不能为空",groups = {Insert.class, Update.class}) - private String stcd; - - /** - * 测站名称 - */ - @TableField(value="stnm") - @Schema(description="测站名称") - @Size(max = 150,message = "测站名称最大长度要小于 150") - private String stnm; - - /** - * 河流名称 - */ - @TableField(value="rvnm") - @Schema(description="河流名称") - @Size(max = 300,message = "河流名称最大长度要小于 300") - private String rvnm; - - /** - * 水系名称 - */ - @TableField(value="hnnm") - @Schema(description="水系名称") - @Size(max = 300,message = "水系名称最大长度要小于 300") - private String hnnm; - - /** - * 流域名称 - */ - @TableField(value="bsnm") - @Schema(description="流域名称") - @Size(max = 300,message = "流域名称最大长度要小于 300") - private String bsnm; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - // @Size(max = 0,message = "经度最大长度要小于 0") - private String lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - // @Size(max = 0,message = "纬度最大长度要小于 0") - private String lttd; - - /** - * 站址 - */ - @TableField(value="stlc") - @Schema(description="站址") - @Size(max = 500,message = "站址最大长度要小于 500") - private String stlc; - - - /** - * alt - */ - @TableField(value="alt") - @Schema(description="alt") - // @Size(max = 0,message = "alt最大长度要小于 0") - private String alt; - - /** - * mdbz - */ - @TableField(value="mdbz") - @Schema(description="mdbz") - // @Size(max = 0,message = "mdbz最大长度要小于 0") - private String mdbz; - - /** - * mdpr - */ - @TableField(value="mdpr") - @Schema(description="mdpr") - // @Size(max = 0,message = "mdpr最大长度要小于 0") - private String mdpr; - - /** - * 基面名称 - */ - @TableField(value="dtmnm") - @Schema(description="基面名称") - @Size(max = 160,message = "基面名称最大长度要小于 160") - private String dtmnm; - - /** - * 基面高程 - */ - @TableField(value="dtmel") - @Schema(description="基面高程") - // @Size(max = 0,message = "基面高程最大长度要小于 0") - private String dtmel; - - /** - * 基面修正值 - */ - @TableField(value="dtpr") - @Schema(description="基面修正值") - // @Size(max = 0,message = "基面修正值最大长度要小于 0") - private String dtpr; - - /** - * 站类,PP=雨量站,RR=水库水位站,ZQ=河道水位站,TX=图像站 - */ - @TableField(value="sttp") - @Schema(description="站类,MM=气象站,PP=雨量站,BB=蒸发站,ZQ=河道水文站,DD=堰闸水文站,ZZ=河道水位站,TT=潮位站,RR=水库水文站,DP=泵站,ZG=地下水站,SS=墒情站,ZB=分洪水位站,QQ=流量站,TX=图像站,ZI=渠道水位站,ZL=田间水层,QI=渠道流量站,ZT=塘堰,ZS=渗压渗流站,GT=闸位站,SZ=水质站,PQ=管道流量站") - @Size(max = 30,message = "站类,MM=气象站,PP=雨量站,BB=蒸发站,ZQ=河道水文站,DD=堰闸水文站,ZZ=河道水位站,TT=潮位站,RR=水库水文站,DP=泵站,ZG=地下水站,SS=墒情站,ZB=分洪水位站,QQ=流量站,TX=图像站,ZI=渠道水位站,ZL=田间水层,QI=渠道流量站,ZT=塘堰,ZS=渗压渗流站,GT=闸位站,SZ=水质站,PQ=管道流量站。最大长度要小于 30") - private String sttp; - - /** - * dfrtms - */ - @TableField(value="dfrtms") - @Schema(description="dfrtms") - // @Size(max = 0,message = "dfrtms最大长度要小于 0") - private String dfrtms; - - /** - * fritm - */ - @TableField(value="fritm") - @Schema(description="fritm") - @Size(max = 320,message = "fritm最大长度要小于 320") - private String fritm; - - /** - * 报汛等级 - */ - @TableField(value="frgrd") - @Schema(description="报汛等级") - @Size(max = 500,message = "报汛等级最大长度要小于 500") - private String frgrd; - - /** - * 建站年月 - */ - @TableField(value="esstym") - @Schema(description="建站年月") - @Size(max = 60,message = "建站年月最大长度要小于 60") - private String esstym; - - /** - * bgfrym - */ - @TableField(value="bgfrym") - @Schema(description="bgfrym") - @Size(max = 60,message = "bgfrym最大长度要小于 60") - private String bgfrym; - - /** - * edfrym - */ - @TableField(value="edfrym") - @Schema(description="edfrym") - @Size(max = 60,message = "edfrym最大长度要小于 60") - private String edfrym; - - /** - * 隶属行业单位 - */ - @TableField(value="atcunit") - @Schema(description="隶属行业单位") - @Size(max = 200,message = "隶属行业单位最大长度要小于 200") - private String atcunit; - - /** - * 信息管理单位 - */ - @TableField(value="admauth") - @Schema(description="信息管理单位") - @Size(max = 500,message = "信息管理单位最大长度要小于 500") - private String admauth; - - /** - * 交换管理单位 - */ - @TableField(value="locality") - @Schema(description="交换管理单位") - @Size(max = 200,message = "交换管理单位最大长度要小于 200") - private String locality; - - /** - * 测站岸别 - */ - @TableField(value="stbk") - @Schema(description="测站岸别") - @Size(max = 1,message = "测站岸别最大长度要小于 1") - private String stbk; - - /** - * 测站方位 - */ - @TableField(value="stazt") - @Schema(description="测站方位") - // @Size(max = 0,message = "测站方位最大长度要小于 0") - private String stazt; - - /** - * 至河口距离 - */ - @TableField(value="dstrvm") - @Schema(description="至河口距离") - // @Size(max = 0,message = "至河口距离最大长度要小于 0") - private String dstrvm; - - /** - * 集水面积 - */ - @TableField(value="drna") - @Schema(description="集水面积") - // @Size(max = 0,message = "集水面积最大长度要小于 0") - private String drna; - - /** - * 拼音码 - */ - @TableField(value="phcd") - @Schema(description="拼音码") - @Size(max = 60,message = "拼音码最大长度要小于 60") - private String phcd; - - /** - * 启用标志 - */ - @TableField(value="usfl") - @Schema(description="启用标志") - @Size(max = 1,message = "启用标志最大长度要小于 1") - private String usfl; - - /** - * 备注 - */ - @TableField(value="comments") - @Schema(description="备注") - @Size(max = 200,message = "备注最大长度要小于 200") - private String comments; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - - /** - * rem_gd - */ - @TableField(value="rem_gd") - @Schema(description="rem_gd") - @Size(max = 300,message = "rem_gd最大长度要小于 300") - private String remGd; - - /** - * ogid - */ - @TableField(value="ogid") - @Schema(description="ogid") - @Size(max = 100,message = "ogid最大长度要小于 100") - private String ogid; - - /** - * vlfl - */ - @TableField(value="vlfl") - @Schema(description="vlfl") - // @Size(max = 0,message = "vlfl最大长度要小于 0") - private String vlfl; - - /** - * atid - */ - @TableField(value="atid") - @Schema(description="atid") - @Size(max = 180,message = "atid最大长度要小于 180") - private String atid; - - /** - * sdfl - */ - @TableField(value="sdfl") - @Schema(description="sdfl") - @Size(max = 500,message = "sdfl最大长度要小于 500") - private String sdfl; - - /** - * rma - */ - @TableField(value="rma") - @Schema(description="rma") - @Size(max = 256,message = "rma最大长度要小于 256") - private String rma; - - /** - * mdps - */ - @TableField(value="mdps") - @Schema(description="mdps") - @Size(max = 300,message = "mdps最大长度要小于 300") - private String mdps; - - /** - * mddt - */ - @TableField(value="mddt") - @Schema(description="mddt") - // @Size(max = 0,message = "mddt最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date mddt; - - /** - * stindex - */ - @TableField(value="stindex") - @Schema(description="stindex") - // @Size(max = 0,message = "stindex最大长度要小于 0") - private String stindex; - - /** - * starea - */ - @TableField(value="starea") - @Schema(description="starea") - @Size(max = 500,message = "starea最大长度要小于 500") - private String starea; - - /** - * stlevel - */ - @TableField(value="stlevel") - @Schema(description="stlevel") - @Size(max = 1,message = "stlevel最大长度要小于 1") - private String stlevel; - - /** - * code - */ - @TableField(value="code") - @Schema(description="code") - @Size(max = 300,message = "code最大长度要小于 300") - private String code; - - /** - * ispbj - */ - @TableField(value="ispbj") - @Schema(description="ispbj") - @Size(max = 1,message = "ispbj最大长度要小于 1") - private String ispbj; - - /** - * issxst - */ - @TableField(value="issxst") - @Schema(description="issxst") - @Size(max = 1,message = "issxst最大长度要小于 1") - private String issxst; - - /** - * stpq - */ - @TableField(value="stpq") - @Schema(description="stpq") - @Size(max = 500,message = "stpq最大长度要小于 500") - private String stpq; - - /** - * sthday - */ - @TableField(value="sthday") - @Schema(description="sthday") - // @Size(max = 0,message = "sthday最大长度要小于 0") - private Integer sthday; - - /** - * source - */ - @TableField(value="source") - @Schema(description="站点来源,SH=山洪,SW=水文,QX=气象,SK=水库") - @Size(max = 12,message = "站点来源,SH=山洪,SW=水文,QX=气象,SK=水库最大长度要小于 12") - @NotBlank(message = "站点来源不能为空") - private String source; - - /** - * importancy - */ - @TableField(value="importancy") - @Schema(description="importancy") - // @Size(max = 0,message = "importancy最大长度要小于 0") - private Integer importancy; - - /** - * clgtd - */ - @TableField(value="clgtd") - @Schema(description="clgtd") - // @Size(max = 0,message = "clgtd最大长度要小于 0") - private String clgtd; - - /** - * clttd - */ - @TableField(value="clttd") - @Schema(description="clttd") - // @Size(max = 0,message = "clttd最大长度要小于 0") - private String clttd; - - /** - * elev - */ - @TableField(value="elev") - @Schema(description="elev") - // @Size(max = 0,message = "elev最大长度要小于 0") - private String elev; - - /** - * crucial - */ - @TableField(value="crucial") - @Schema(description="crucial") - // @Size(max = 0,message = "crucial最大长度要小于 0") - private Integer crucial; - - /** - * build_year - */ - @TableField(value="build_year") - @Schema(description="build_year") - @Size(max = 50,message = "build_year最大长度要小于 50") - private String buildYear; - - /** - * 行政区划编码 - */ - @TableField(value="adcd") - @Schema(description="行政区划编码") - @Size(max = 15,message = "行政区划编码最大长度要小于 15") - private String adcd; - - /** - * 流域编码 - */ - @TableField(value="lyid") - @Schema(description="流域编码") - @Size(max = 255,message = "流域编码最大长度要小于 255") - private String lyid; - - /** - * 水库编码 - */ - @TableField(value="res_code") - @Schema(description="水库编码") - @Size(max = 255,message = "水库编码最大长度要小于 255") - private String resCode; - - /** - * 河流编码 - */ - @TableField(value="rv_code") - @Schema(description="河流编码") - @Size(max = 255,message = "河流编码最大长度要小于 255") - private String rvCode; - - /** - * 测站状态 0无效 1有效 - */ - @TableField(value="status") - @Schema(description="测站状态 0无效 1有效") - // @Size(max = 0,message = "测站状态 0无效 1有效最大长度要小于 0") - private Integer status; - - /** - * 归属协议 - */ - @Schema(description="归属协议") - @TableField(value="agreement") - private String agreement; - - /** - * SIM卡 - */ - @Schema(description="SIM卡") - @TableField(value="sim_card") - private String simCard; - - /** - * 北斗卡号 - */ - @Schema(description="北斗卡号") - @TableField(value="bd_card") - private String bdCard; - - public static final String COL_STCD = "stcd"; - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StStbprpBElem.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/StStbprpBElem.java deleted file mode 100644 index 0b875ae..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/StStbprpBElem.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gunshi.project.hsz.common.model; - - -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 com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 测站监测值类型 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="测站监测值类型") -@Data -@TableName("public.st_stbprp_b_elem") -@IgnoreAutoMapperAndDao -public class StStbprpBElem implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测站编码 - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="测站编码") - @Size(max = 32,message = "测站编码最大长度要小于 32") - @NotBlank(message = "测站编码不能为空") - private String stcd; - - /** - * 监测值类型, z是水位,drp是雨量,img是图像 - */ - @TableField(value="elem") - @Schema(description="监测值类型, z是水位,drp是雨量,img是图像") - @Size(max = 4,message = "监测值类型, z是水位,drp是雨量,img是图像最大长度要小于 4") - @NotBlank(message = "监测值类型, z是水位,drp是雨量,img是图像不能为空") - private String elem; - -} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/page/GenericPageParams.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/page/GenericPageParams.java deleted file mode 100644 index c3b8ade..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/page/GenericPageParams.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.common.model.page; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * @author cxw - * @description: 通用分页参数 - * @classname GenericPageParams.java - * @create 2024-07-09, 星期二, 11:29:56 - */ -@Schema(description = "通用分页查询对象") -@Data -public class GenericPageParams { - - @Schema(description = "分页参数") - @TableField(exist = false) - private PageSo pageSo; - - @Schema(description = "排序字段") - @TableField(exist = false) - private String orderField; - - @Schema(description = "排序规则,是否升序") - @TableField(exist = false) - private Boolean isAsc; - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskByBDPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskByBDPageSo.java deleted file mode 100644 index cc3959d..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskByBDPageSo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class JcskByBDPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "机箱编号 (一个机箱有多个设备)") - private String deviceId; - - @Schema(description = "设备编号") - private String order; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskByRPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskByRPageSo.java deleted file mode 100644 index aef40ad..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskByRPageSo.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; - - -@Data -@Schema(description = "分页查询对象") -public class JcskByRPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description = "监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date obDate; - - @Schema(description = "设备编号") - private String deviceCode; - - @Schema(description = "测点编号") - private String order; - - @Schema(description = "有无白蚁入侵") - private Integer status; - - - - - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskGnssBPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskGnssBPageSo.java deleted file mode 100644 index 2e59c20..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskGnssBPageSo.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class JcskGnssBPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "设备编码") - private String stationCode; - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskGnssRPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskGnssRPageSo.java deleted file mode 100644 index 4d175b0..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskGnssRPageSo.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class JcskGnssRPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "上报时间") - private DateTimeRangeSo dateTimeRangeSo; - - - @Schema(description = "测点编码") - private String cd; - - @Schema(description = "断面") - private String ch; - - @Schema(description = "录入方式") - private Integer isArtificial; - - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSlBPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSlBPageSo.java deleted file mode 100644 index 3d95391..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSlBPageSo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class JcskSlBPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - - @Schema(description = "水库代码") - private String rscd; - - @Schema(description = "RTU编号") - private String stcd; - - @Schema(description = "测点编号") - private String mpcd; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSlRPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSlRPageSo.java deleted file mode 100644 index 4974e4d..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSlRPageSo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class JcskSlRPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - - @Schema(description = "上报时间") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description = "断面") - private String dm; - - - @Schema(description = "测点") - private String dvcd; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSyBPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSyBPageSo.java deleted file mode 100644 index 96c474b..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSyBPageSo.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class JcskSyBPageSo { - - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - - @Schema(description = "断面") - private String dm; - - @Schema(description = "测点编号") - private String mpcd; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSyRPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSyRPageSo.java deleted file mode 100644 index 8836e37..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/JcskSyRPageSo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class JcskSyRPageSo { - - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - - @Schema(description = "上报时间") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description = "测点编号") - private String dvcd; - - @Schema(description = "断面") - private String dm; - - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticDetailQuerySo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticDetailQuerySo.java deleted file mode 100644 index a60a48c..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticDetailQuerySo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "布置图详细数据查询对象") -public class OsmoticDetailQuerySo { - - @Schema(description = "类型(2渗流 其他可不传)") - private Integer type = 1; - - @Schema(description = "时间") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description = "测点编号") - @NotEmpty(message = "测点编号不可为空") - private String stationCode; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticDevicePage.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticDevicePage.java deleted file mode 100644 index f4eb397..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticDevicePage.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/18. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class OsmoticDevicePage extends GenericPageParams { - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String stationCode; - - /** - * 仪器编号 - */ - @Schema(description="仪器编号") - private String deviceCode; - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticQueryPageSo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticQueryPageSo.java deleted file mode 100644 index c4a343f..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticQueryPageSo.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "渗压/渗流/位移分页查询对象") -public class OsmoticQueryPageSo{ - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "上报时间") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description = "监测断面") - private String profileCode; - - @Schema(description = "测点编号") - private String stationCode; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticQuerySo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticQuerySo.java deleted file mode 100644 index a9643a0..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/so/OsmoticQuerySo.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gunshi.project.hsz.common.model.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "测值查询对象") -public class OsmoticQuerySo { - - @Schema(description = "类型(1渗压 2渗流)") - private Integer type = 1; - - @Schema(description = "年度") - private String year; - - @Schema(description = "时间") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description = "监测断面名称(只有导出时传)") - private String profileName; - - @Schema(description = "测点编号") - private List<@NotEmpty String> stationCodes; - - @Schema(description = "wy (没啥用的字段)") - private String wy; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskGnssBVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskGnssBVo.java deleted file mode 100644 index 43d28b4..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskGnssBVo.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.JcskGnssB; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -@Data -public class HomeJcskGnssBVo extends JcskGnssB { - - /** - * x方向 - */ - @Schema(description="x方向") - private String x; - - /** - * y方向 - */ - @Schema(description="y方向") - private String y; - - /** - * h方向 - */ - @Schema(description="h方向") - private String h; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskSYBVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskSYBVo.java deleted file mode 100644 index f421062..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskSYBVo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.JcskSyB; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -@Data -public class HomeJcskSYBVo extends JcskSyB { - - /** - * 管水位 - */ - @Schema(description="管水位") - private String value; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskSlBVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskSlBVo.java deleted file mode 100644 index 92fd980..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/HomeJcskSlBVo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; - -import com.gunshi.project.hsz.common.model.JcskSlB; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -@Data -public class HomeJcskSlBVo extends JcskSlB { - - /** - * 管水位 - */ - @Schema(description="流量") - private String q; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskByInspectDetailVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskByInspectDetailVo.java deleted file mode 100644 index c133b33..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskByInspectDetailVo.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import lombok.Data; - -@Data -public class JcskByInspectDetailVo { - -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskByRProcessVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskByRProcessVo.java deleted file mode 100644 index c290de3..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskByRProcessVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.InspectTask; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -@Data -public class JcskByRProcessVo extends InspectTask { - - @Schema(description = "设备编号") - private String order; - - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @Schema(description = "监测时间") - private Date obDate; - - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @Schema(description = "监测时间 + hours之后的结束时间") - private Date obResolveDate; - - - private Integer hours; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskGnessListVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskGnessListVo.java deleted file mode 100644 index b60f060..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskGnessListVo.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class JcskGnessListVo { - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String cd; - - @Schema(description = "桩号/断面") - private String ch; - - @Schema(description = "测点名称") - private String cdnm; - - @Schema(description = "测点编号/另一种叫法") - private String stationCode; - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") - private Integer flag = 0; - - /** - * x方向 - */ - @Schema(description="e方向") - private BigDecimal de; - - @Schema(description = "e方向是否超过预警(0否 1是)") - private Integer xStatus = 0; - - /** - * y方向 - */ - @Schema(description="n方向") - private BigDecimal dn; - - @Schema(description = "n方向是否超过预警(0否 1是)") - private Integer yStatus = 0; - - /** - * h方向 - */ - @Schema(description="u方向") - private BigDecimal du; - - @Schema(description = "u方向是否超过预警(0否 1是)") - private Integer hStatus = 0; - - @JsonIgnore - private String direction; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskGnssRHisVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskGnssRHisVo.java deleted file mode 100644 index 74e3033..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskGnssRHisVo.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -@Data -public class JcskGnssRHisVo { - /** - * 水库编码设备编码 - */ - @TableField("res_cd") - private String resCd; - - /** - * 测点编码 - */ - @TableField("cd") - private String cd; - - @TableField(exist = false) - private String ch; - - /** - * e方向变形值,单位(mm) - */ - @TableField("de") - private BigDecimal de; - - /** - * n方向变形值,单位(mm) - */ - @TableField("dn") - private BigDecimal dn; - - /** - * u方向变形值,单位(mm) - */ - @TableField("du") - private BigDecimal du; - - /** - * 站点高程 - */ - @TableField("alt") - private BigDecimal alt; - - /** - * 监测时间 - */ - @TableField("tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date tm; - - /** - * 更新时间 - */ - @TableField("update_tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date updateTm; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSlRHisVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSlRHisVo.java deleted file mode 100644 index 77036d4..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSlRHisVo.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -@Data -public class JcskSlRHisVo { - - /** - * 水库代码 - */ - @TableField("rscd") - private String rscd; - - @TableField(exist = false) - private String dm; - - @TableField(exist = false) - private String dvcd; - - /** - * 水工建筑物编号 - */ - @TableField("hycncd") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("mpcd") - private String mpcd; - - - @TableField("stcd") - private String stcd; - - /** - * 测量时间 - */ - @TableField("mstm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date mstm; - - /** - * 温度,单位℃ - */ - @TableField("tm") - private BigDecimal tm; - - /** - * 渗流量,单位l/s - */ - @TableField("spqn") - private BigDecimal spqn; - - /** - * 标准水温渗流量,单位l/s - */ - @TableField("stspqn") - private BigDecimal stspqn; - - /** - * 创建时间 - */ - @TableField("create_time") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createTime; - - /** - * 更新时间 - */ - @TableField("update_tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date updateTm; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSyRHisVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSyRHisVo.java deleted file mode 100644 index 5b278f3..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSyRHisVo.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Data -public class JcskSyRHisVo { - - /** - * 水库代码 - */ - @TableField("rscd") - private String rscd; - - /** - * 测站编码 - */ - @TableField("stcd") - private String stcd; - - /** - * 水工建筑物编号 - */ - @TableField("hycncd") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("mpcd") - private String mpcd; - - /** - * 测量时间 - */ - @TableField("mstm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime mstm; - - /** - * 温度 - */ - @TableField("tm") - private BigDecimal tm; - - /** - * 渗流压力水位,单位m - */ - @TableField("spprwl") - private BigDecimal spprwl; - - /** - * 更新时间 - */ - @TableField("update_tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime updateTm; - - @TableField(exist = false) - @Schema(description = "断面编码") - private String dm; - - - @TableField(exist = false) - @Schema(description = "断面名称") - private String dmName; - - - @TableField(exist = false) - @Schema(description = "dvcd") - private String dvcd; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSyRVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSyRVo.java deleted file mode 100644 index d6ec527..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/JcskSyRVo.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class JcskSyRVo { - @Schema(description="测点编码") - private String stationCode; - - @Schema(description = "断面名称") - private String profileName; - - @Schema(description="监测时间") - private String tm; - - @Schema(description="监测值") - private BigDecimal value; - - @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") - private Integer flag = 0; - - @Schema(description = "是否超过预警(0否 1是)") - private Integer status = 0; - - @Schema(description = "0 离线 1在线") - private Integer onoffStauts; - - private BigDecimal lgtd; - - private BigDecimal lttd; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticChartDetailVo2.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticChartDetailVo2.java deleted file mode 100644 index 075173d..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticChartDetailVo2.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class OsmoticChartDetailVo2 { - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - /** - * 库水位 - */ - @Schema(description="库水位") - private BigDecimal rz; - - /** - * 管水位 - */ - @Schema(description="管水位") - private BigDecimal value; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticPressDetailVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticPressDetailVo.java deleted file mode 100644 index fd41e31..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticPressDetailVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * Description: - * Created by wanyan on 2024/7/9 - * - * @author wanyan - * @version 1.0 - */ - @Data - public class OsmoticPressDetailVo { - - - @Schema(description="监测时间") - private String tm; - - @Schema(description="监测值") - private BigDecimal value; - - @Schema(description="库水位") - private BigDecimal rz; - - } diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticShiftListVo2.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticShiftListVo2.java deleted file mode 100644 index 192b95d..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticShiftListVo2.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class OsmoticShiftListVo2 { - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String cd; - - private String cdNm; - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") - private Integer flag = 0; - - /** - * x方向 - */ - @Schema(description="x方向") - private BigDecimal de; - - @Schema(description = "x方向是否超过预警(0否 1是)") - private Integer xStatus = 0; - - /** - * y方向 - */ - @Schema(description="y方向") - private BigDecimal dn; - - @Schema(description = "y方向是否超过预警(0否 1是)") - private Integer yStatus = 0; - - /** - * h方向 - */ - @Schema(description="h方向") - private BigDecimal du; - - @Schema(description = "h方向是否超过预警(0否 1是)") - private Integer hStatus = 0; - - @JsonIgnore - private String direction; - - - private BigDecimal lttd; - - private BigDecimal lgtd; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticShiftValueVo2.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticShiftValueVo2.java deleted file mode 100644 index cb0f066..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticShiftValueVo2.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class OsmoticShiftValueVo2 { - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String cd; - - /** - * x方向 - */ - @Schema(description="e ->x方向") - private BigDecimal de; - - /** - * y方向 - */ - @Schema(description=" n ->y方向") - private BigDecimal dn; - - /** - * h方向 - */ - @Schema(description="u ->h方向") - private BigDecimal du; - - /** - * 库水位 - */ - @Schema(description="库水位") - private BigDecimal rz; - - - @Schema(description = "是否人工") - private Integer isArtificial; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticValueVo2.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticValueVo2.java deleted file mode 100644 index 98389cf..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/OsmoticValueVo2.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class OsmoticValueVo2 { - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String stationCode; - - /** - * 管水位 - */ - @Schema(description="管水位") - private BigDecimal value; - - /** - * 库水位 - */ - @Schema(description="库水位") - private BigDecimal rz; - - @Schema(description = "结果分析(0异常 1正常)") - private Integer status = 1; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/StRzVo.java b/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/StRzVo.java deleted file mode 100644 index f614715..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/model/vo/StRzVo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.common.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 水库水情 - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class StRzVo { - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - /** - * 库水位 - */ - @Schema(description="库水位") - private BigDecimal rz; -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/util/LocalDateTimeConverter.java b/module-common/src/main/java/com/gunshi/project/hsz/common/util/LocalDateTimeConverter.java deleted file mode 100644 index 416ff6b..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/util/LocalDateTimeConverter.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gunshi.project.hsz.common.util; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.Date; - -/** - * @author lyf - * @since 2025-11-06 - */ -public class LocalDateTimeConverter { - public static Date toDate(LocalDateTime localDateTime) { - return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); - } - - public static LocalDateTime fromDate(Date date) { - return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); - } -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Delete.java b/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Delete.java deleted file mode 100644 index 5efcdb7..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Delete.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gunshi.project.hsz.common.validate.markers; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-01-23 - */ -public interface Delete { -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Insert.java b/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Insert.java deleted file mode 100644 index 36200be..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Insert.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gunshi.project.hsz.common.validate.markers; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-01-23 - */ -public interface Insert { -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Query.java b/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Query.java deleted file mode 100644 index 713da6d..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Query.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gunshi.project.hsz.common.validate.markers; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-01-23 - */ -public interface Query { -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/QueryPage.java b/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/QueryPage.java deleted file mode 100644 index d44abb5..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/QueryPage.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gunshi.project.hsz.common.validate.markers; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-01-24 - */ -public interface QueryPage { -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/QueryTimeRange.java b/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/QueryTimeRange.java deleted file mode 100644 index 69fcb38..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/QueryTimeRange.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gunshi.project.hsz.common.validate.markers; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-01-24 - */ -public interface QueryTimeRange { -} diff --git a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Update.java b/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Update.java deleted file mode 100644 index 5411813..0000000 --- a/module-common/src/main/java/com/gunshi/project/hsz/common/validate/markers/Update.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gunshi.project.hsz.common.validate.markers; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-01-23 - */ -public interface Update { -} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskByBMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskByBMapper.java new file mode 100644 index 0000000..0386888 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskByBMapper.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.JcskByB; +import org.apache.ibatis.annotations.Mapper; + +@DS("tsg") +@Mapper +public interface JcskByBMapper extends BaseMapper { +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskByRMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskByRMapper.java new file mode 100644 index 0000000..de7257b --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskByRMapper.java @@ -0,0 +1,12 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.JcskByR; +import org.apache.ibatis.annotations.Mapper; + +@DS("tsg") +@Mapper +public interface JcskByRMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskGnssBMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskGnssBMapper.java new file mode 100644 index 0000000..12b5c73 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskGnssBMapper.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.vo.HomeJcskGnssBVo; +import com.gunshi.project.ss.common.model.JcskGnssB; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@DS("tsg") +@Mapper +public interface JcskGnssBMapper extends BaseMapper { + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); + + + + @Select(""" + + """) + HomeJcskGnssBVo getDetailsById(String id); + + + @Select(""" + select ch from jcsk_gnss_b where ch is not null + group by ch +""") + List listDms(); + + @Select(""" + select ch from jcsk_gnss_b group by ch +""") + List selectCH(); + + + @Select(""" + select cd from jcsk_gnss_b where ch = #{ch} +""") + List selectCDbyCh(@Param("ch") String ch); + + @Select(""" + select * from jcsk_gnss_b where ch is null order by cd asc +""") + List selectArtificial(); + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskGnssRMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskGnssRMapper.java new file mode 100644 index 0000000..948a654 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskGnssRMapper.java @@ -0,0 +1,233 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.common.model.so.JcskGnssRPageSo; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.common.model.vo.JcskGnessListVo; +import com.gunshi.project.ss.common.model.vo.JcskGnssRHisVo; +import com.gunshi.project.ss.common.model.vo.OsmoticShiftListVo2; +import com.gunshi.project.ss.common.model.vo.OsmoticShiftValueVo2; +import com.gunshi.project.ss.common.model.JcskGnssR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@DS("tsg") +@Mapper +public interface JcskGnssRMapper extends BaseMapper { + +// @Select(""" +// +// """) +// List listValue(); + + + @Select(""" + + """) + List listValue(); + + @Select(""" + + """) + List queryWarn(@Param("obj") OsmoticQuerySo so); + + + @Select(""" + + """) + List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List queryReorganizeValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + @Select(""" + + """) + List detailValue(@Param("obj") OsmoticDetailQuerySo so); + + @Select(""" + +""") + Page pageQuery(Page page, @Param("obj") JcskGnssRPageSo page1); + + + @Select(""" + +""") + Page historyPage(Page page, @Param("dto") JcskGnssRPageSo page1); + + + @Select(""" + +""") + Page artificialPage(Page page,@Param("dto") JcskGnssRPageSo page1); +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSlBMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSlBMapper.java new file mode 100644 index 0000000..74603bd --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSlBMapper.java @@ -0,0 +1,163 @@ +package com.gunshi.project.ss.common.mapper; + + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.common.model.vo.HomeJcskSlBVo; +import com.gunshi.project.ss.common.model.vo.JcskSyRVo; +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.common.model.vo.OsmoticValueVo2; +import com.gunshi.project.ss.common.model.JcskSlB; +import com.gunshi.project.ss.common.model.JcskSlR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@DS("tsg") +@Mapper +public interface JcskSlBMapper extends BaseMapper { + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); + + + @Select(""" + + """) + HomeJcskSlBVo getDetailsById(String id); + + + @Select(""" + select dvcd from jcsk_sl_b where dm = #{dm} +""") + List getDvcdByProfileCode(@Param("dm") String profileCode); + + + @Select( + """ + +""" + ) + List listValue(); + + + @Select(""" + + """) + List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List syncqueryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List query8AmValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + @Select(""" + + """) + List detailValue(@Param("obj") OsmoticDetailQuerySo so); + + + @Select(""" + +""") + String selectDvcdByStcdAndMpcd(@Param("mpcd") String mpcd); +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSlRMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSlRMapper.java new file mode 100644 index 0000000..37b91e8 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSlRMapper.java @@ -0,0 +1,84 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.common.model.so.JcskSlRPageSo; +import com.gunshi.project.ss.common.model.vo.JcskSlRHisVo; +import com.gunshi.project.ss.common.model.JcskSlR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@DS("tsg") +@Mapper +public interface JcskSlRMapper extends BaseMapper { + + + @Select(""" + +""") + Page pageQuery(Page page, @Param("dto") JcskSlRPageSo page1); + + + @Select(""" + +""") + Page historyPage(Page page, JcskSlRPageSo page1); + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSyBMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSyBMapper.java new file mode 100644 index 0000000..ad54ee2 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSyBMapper.java @@ -0,0 +1,67 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.JcskSyB; +import com.gunshi.project.ss.common.model.vo.HomeJcskSYBVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@DS("tsg") +@Mapper +public interface JcskSyBMapper extends BaseMapper { + + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); + + + @Select(""" + + """) + HomeJcskSYBVo getDetailsById(@Param("id") String id); + + + @Select(""" + SELECT dvcd from jcsk_sy_b where dm = #{dm} + ORDER BY LENGTH(dvcd) ASC,dvcd ASC; +""") + List getDvcdByProfileCode(@Param("dm") String profileCode); + + @Select(""" + +""") + String selectDvcdByStcdAndMpcd(@Param("stcd")String stcd,@Param("mpcd") String mpcd); + + + @Select(""" + select DISTINCT(t1.dvcd) from jcsk_sy_b t1 +""") + List selectAllDvcd(); + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSyRMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSyRMapper.java new file mode 100644 index 0000000..dd7d84f --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/JcskSyRMapper.java @@ -0,0 +1,387 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.common.model.JcskSyB; +import com.gunshi.project.ss.common.model.JcskSyR; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.common.model.vo.*; +import com.gunshi.project.ss.common.model.so.JcskSyRPageSo; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@DS("tsg") +@Mapper +public interface JcskSyRMapper extends BaseMapper { + @Select( + """ + +""" + ) + List listValue(); + + + + @Select( + """ + +""" + ) + List flowListValue(); + + + @Select(""" + + """) + List queryWarn(@Param("obj") OsmoticQuerySo so); + + + @Select(""" + + """) + List detailValue(@Param("obj") OsmoticDetailQuerySo so); + + + @Select(""" + + """) + List queryLineRz(@Param("obj") OsmoticQuerySo osmoticQuerySo, @Param("stcd") String stcd); + + + @Select(""" + + """) + List queryDrp(@Param("year") Integer year,@Param("stcd") String stcd); + + + + @Select(""" + + """) + List queryRz(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); + + @Select(""" + + """) + List queryRz2(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); + + + @Select(""" + + """) + List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List query8AmValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + @Select(""" + + """) + List syncqueryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + + @Select(""" + + """) + List queryLineValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + + @Select(""" + +""") + Page queryPage(Page page, @Param("dto") JcskSyRPageSo pageSo); + + @Select(""" +select dm from jcsk_sy_b +GROUP BY dm +""") + List listDm(); + + + @Select(""" + select stcd,mpcd from jcsk_sy_b +""") + List listStcdMpcd(); + + + @Select(""" + select dvcd from jcsk_sy_b where dm = #{dm} +""") + List listDvcdByDm(@Param("dm") String dm); + + @Select(""" + +""") + Page historyPage(Page page, @Param("dto") JcskSyRPageSo page1); + + + @Select(""" + +""") + Page artificialPage(Page page,@Param("dto") JcskSyRPageSo page1); + + @Select(""" + WITH ranked_data AS ( + SELECT + tm, + rz, + ABS(EXTRACT(HOUR FROM tm) + EXTRACT(MINUTE FROM tm)/60.0 - 8) as time_diff, + ROW_NUMBER() OVER (PARTITION BY DATE(tm) ORDER BY ABS(EXTRACT(HOUR FROM tm) + EXTRACT(MINUTE FROM tm)/60.0 - 8)) as rn + FROM st_rsvr_r + WHERE stcd = #{stcd} + AND tm >= #{dto.dateTimeRangeSo.start} + AND tm <= #{dto.dateTimeRangeSo.end} + ) + SELECT + TO_CHAR(DATE(tm) + INTERVAL '8 hours', 'YYYY-MM-DD HH24:MI:SS') as tm, + rz + FROM ranked_data + WHERE rn = 1 + ORDER BY tm +""") + List qeury8AmRz(@Param("dto") OsmoticQuerySo dto, @Param("stcd") String stcd); +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StFlowRMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StFlowRMapper.java new file mode 100644 index 0000000..28b573f --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StFlowRMapper.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StFlowR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface StFlowRMapper extends BaseMapper { + + + + @Select(""" + select t1.sttp,t2.* from + st_stbprp_b t1 + join (SELECT id, stcd, tm, inq, q, otq, crtime + FROM ( + SELECT *, + ROW_NUMBER() OVER (PARTITION BY stcd ORDER BY tm DESC) as rn + FROM st_flow_r + ) t + WHERE rn = 1) t2 on t1.stcd = t2.stcd +""") + List listNewData(); + +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StPptnRMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StPptnRMapper.java new file mode 100644 index 0000000..e2d976b --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StPptnRMapper.java @@ -0,0 +1,97 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StPptnR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 描述: 降水量表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StPptnRMapper extends BaseMapper { + @Select(""" + + """) + BigDecimal queryStPptnTimeQuantumByStcdAndTime(@Param("stcd") String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime); + + List getStcdLastPptnData(); + + List> getPptnRDataList(@Param("stcd") String stcd, @Param("tm") String tm); + + List> getPptnRDataListByTask(@Param("resCode") String resCode, @Param("stcd") String stcd, @Param("tm") String tm); + + List getStcdFirstPptnData(); + + @Select(""" + select DISTINCT ON (r.stcd) r.stcd, r.drp, r.tm + from public.st_stbprp_b_elem b + join public.st_pptn_r r on b.stcd=r.stcd + ORDER BY r.stcd, r.tm DESC + """) + List getNewestDataOfEachStcd(); + + /** + * 根据stcd查询24小时总降水量 + */ +// @Select(""" +// select SUM(drp) from public.st_pptn_r +// where stcd=#{stcd} and tm >= now() - interval '24 hours' +// """) + @Select(""" + SELECT SUM(drp) + FROM public.st_pptn_r + WHERE stcd = #{stcd} + AND tm > DATE_TRUNC('day', NOW() - INTERVAL '1 day') + INTERVAL '8 hours' + AND tm <= DATE_TRUNC('day', NOW()) + INTERVAL '8 hours' + """) + BigDecimal getdrp24SumByStcd(String stcd); + + /** + * 根据stcd查询24小时内最大降水量 + */ +// @Select(""" +// SELECT * +// FROM public.st_pptn_r +// WHERE stcd = #{stcd} +// AND drp = ( +// SELECT MAX(drp) +// FROM public.st_pptn_r +// WHERE stcd = #{stcd} +// AND tm >= NOW() - INTERVAL '24 hours' +// ) +// AND tm >= NOW() - INTERVAL '24 hours' +// LIMIT 1 +// """) + @Select(""" + SELECT * + FROM public.st_pptn_r + WHERE stcd = #{stcd} + AND drp = ( + SELECT MAX(drp) + FROM public.st_pptn_r + WHERE stcd = #{stcd} + AND tm > DATE_TRUNC('day', NOW() - INTERVAL '1 day') + INTERVAL '8 hours' + AND tm <= DATE_TRUNC('day', NOW()) + INTERVAL '8 hours' + ) + AND tm > DATE_TRUNC('day', NOW() - INTERVAL '1 day') + INTERVAL '8 hours' + AND tm <= DATE_TRUNC('day', NOW()) + INTERVAL '8 hours' + LIMIT 1 + """) + StPptnR getdrp24MaxByStcd(String stcd); +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StPptnRRealMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StPptnRRealMapper.java new file mode 100644 index 0000000..fad2d16 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StPptnRRealMapper.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StPptnRReal; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 降水量历史表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StPptnRRealMapper extends BaseMapper { + + int updatePptnRReal(@Param("stcd") String stcd); + + @Select(""" + + """) + List queryList(); +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRiverRMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRiverRMapper.java new file mode 100644 index 0000000..099fb5b --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRiverRMapper.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.common.model.StRiverR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: + * author: cxw + * date: 2024-09-24 14:01:07 + */ +@Mapper +public interface StRiverRMapper extends BaseMapper { + + + @Select(""" + +""") + StRiverR queryByOneByTimeRange(@Param("stcd") String stcd, @Param("obj") DateTimeRangeSo dateTimeRangeSo); +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRiverRRealMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRiverRRealMapper.java new file mode 100644 index 0000000..e8e3e7b --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRiverRRealMapper.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StRiverRReal; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: + * author: cxw + * date: 2024-09-24 14:01:07 + */ +@Mapper +public interface StRiverRRealMapper extends BaseMapper { + + + @Select(""" + select t.*,t2.stnm from st_river_r_real t + left join st_stbprp_b t2 on t.stcd = t2.stcd + where t.stcd = #{stcd} + order by t.tm desc limit 1 + """) + StRiverRReal queryQByStcd(@Param("stcd") String stcd); +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRsvrRMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRsvrRMapper.java new file mode 100644 index 0000000..f8a866b --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRsvrRMapper.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StRsvrR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 描述: 水库历史水位表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StRsvrRMapper extends BaseMapper { + + List getStcdLastRsvrData(); + + List getStcdFirstRsvrData(); + + /** + * 根据stcd获取8点的rz + */ + @Select(""" + select rz + from public.st_rsvr_r + where stcd = '232' + and tm <= date_trunc('day', now()) + interval '8 hours' + and tm >= now() - interval '24 hours' -- 增加这个条件 + order by tm desc + limit 1 + """) + BigDecimal getRz8ByStcd(String stcd); + + /** + * 根据stcd获取昨日8点的rz + */ + @Select(""" + select rz + from public.st_rsvr_r + where stcd = #{stcd} + and tm >= date_trunc('day', now() - interval '1 day') + interval '7 hours 50 minutes' + and tm <= date_trunc('day', now() - interval '1 day') + interval '8 hours 10 minutes' + order by tm desc + limit 1 + """) + BigDecimal getRzYesterday8ByStcd(String stcd); +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRsvrRRealMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRsvrRRealMapper.java new file mode 100644 index 0000000..6d05295 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StRsvrRRealMapper.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StRsvrRReal; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: 水库水位实时数据表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StRsvrRRealMapper extends BaseMapper { + + @Select(""" + select t2.*,t1.stnm FROM + st_stbprp_b t1 + join st_rsvr_r_real t2 + on t1.stcd = t2.stcd + where t2.stcd = #{stcd} + order by t2.tm desc + limit 1 + """) + StRsvrRReal queryRzByStcd(@Param("stcd") String stcd); + +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StStbprpBElemMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StStbprpBElemMapper.java new file mode 100644 index 0000000..b07d2ae --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StStbprpBElemMapper.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StStbprpBElem; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 测站监测值类型 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StStbprpBElemMapper extends BaseMapper { + @Select(""" + + """) + List selectByElem(@Param("elem") String elem); +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StStbprpBMapper.java b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StStbprpBMapper.java new file mode 100644 index 0000000..84ed64a --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/mapper/StStbprpBMapper.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.common.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StStbprpB; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: sttp 以水利标准来 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StStbprpBMapper extends BaseMapper { + + + @Select(""" + select * from public.st_stbprp_b b + join public.st_stbprp_b_elem e + on b.stcd = e.stcd + where e.elem='drp' + """) + List getPptnStations(); + + @Select(""" + select * from public.st_stbprp_b b + join public.st_stbprp_b_elem e + on b.stcd =e.stcd + where e.elem = 'rz' + """) + List getRsvrStations(); + +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/InspectTask.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/InspectTask.java new file mode 100644 index 0000000..65a7c0c --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/InspectTask.java @@ -0,0 +1,159 @@ +package com.gunshi.project.ss.common.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 巡检任务 +* author: xusan +* date: 2024-08-29 14:21:14 +*/ +@Schema(description="巡检任务") +@Data +@TableName("public.inspect_task") +@IgnoreAutoMapperAndDao +public class InspectTask implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 任务类型(1日常巡查 2特别检查 3汛前巡检) + */ + @TableField(value="task_type") + @Schema(description="任务类型(1日常巡查 2特别检查 3汛前巡检)") + private Integer taskType; + + /** + * 任务标题 + */ + @TableField(value="task_title") + @Schema(description="任务标题") + @Size(max = 100,message = "任务标题最大长度要小于 100") + private String taskTitle; + + /** + * 巡查人id + */ + @TableField(value="inspect_user_id") + @Schema(description="巡查人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long inspectUserId; + + /** + * 巡查人 + */ + @TableField(value="inspect_user_name") + @Schema(description="巡查人") + @Size(max = 100,message = "巡查人最大长度要小于 100") + private String inspectUserName; + + /** + * 任务内容 + */ + @TableField(value="task_content") + @Schema(description="任务内容") + @Size(max = 500,message = "任务内容最大长度要小于 500") + private String taskContent; + + /** + * 开始日期 + */ + @TableField(value="start_date") + @Schema(description="开始日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date startDate; + + /** + * 结束日期 + */ + @TableField(value="end_date") + @Schema(description="结束日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date endDate; + + /** + * 接收时间 + */ + @TableField(value="receive_time") + @Schema(description="接收时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date receiveTime; + + /** + * 完成时间 + */ + @TableField(value="finish_time") + @Schema(description="完成时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date finishTime; + + /** + * 状态(0未完成 1进行中 2已完成) + */ + @TableField(value="status") + @Schema(description="状态(0未完成 1进行中 2已完成)") + private Integer status; + + /** + * 创建人id + */ + @TableField(value="create_user_id") + @Schema(description="创建人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long createUserId; + + /** + * 创建人 + */ + @TableField(value="create_user_name") + @Schema(description="创建人") + @Size(max = 100,message = "创建人最大长度要小于 100") + private String createUserName; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @TableField(exist = false) + @Schema(description="问题数量") + private Integer problemNum = 0; + + @TableField(exist = false) + @Schema(description="待处理数量") + private Integer handleNum = 0; + + @TableField(exist = false) + @Schema(description="巡检项") + private List items; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/InspectTaskDetail.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/InspectTaskDetail.java new file mode 100644 index 0000000..64126a9 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/InspectTaskDetail.java @@ -0,0 +1,124 @@ +package com.gunshi.project.ss.common.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 巡查信息 +* author: xusan +* date: 2024-08-29 15:21:24 +*/ +@Schema(description="巡查信息") +@Data +@TableName("public.inspect_task_detail") +@IgnoreAutoMapperAndDao +public class InspectTaskDetail implements Serializable { + + public final static String thisTableName = "InspectTaskDetail"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 任务id + */ + @TableField(value="task_id") + @Schema(description="任务id") + @JsonSerialize(using = ToStringSerializer.class) + private Long taskId; + + /** + * 巡查点id + */ + @TableField(value="point_id") + @Schema(description="巡查点id") + @JsonSerialize(using = ToStringSerializer.class) + private Long pointId; + + /** + * 巡查项id + */ + @TableField(value="item_id") + @Schema(description="巡查项id") + @JsonSerialize(using = ToStringSerializer.class) + private Long itemId; + + /** + * 是否正常(0否 1是) + */ + @TableField(value="is_normal") + @Schema(description="是否正常(0否 1是)") + private Integer isNormal; + + /** + * 巡查问题描述 + */ + @TableField(value="problem_desc") + @Schema(description="巡查问题描述") + @Size(max = 500,message = "巡查问题描述最大长度要小于 500") + private String problemDesc; + + /** + * 是否处理(0否 1是) + */ + @TableField(value="is_handle") + @Schema(description="是否处理(0否 1是)") + private Integer isHandle; + + /** + * 处理人id + */ + @TableField(value="handle_user_id") + @Schema(description="处理人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long handleUserId; + + /** + * 处理人 + */ + @TableField(value="handle_user_name") + @Schema(description="处理人") + @Size(max = 100,message = "处理人最大长度要小于 100") + private String handleUserName; + + /** + * 处理描述 + */ + @TableField(value="handle_desc") + @Schema(description="处理描述") + @Size(max = 500,message = "处理描述最大长度要小于 500") + private String handleDesc; + + /** + * 处理时间 + */ + @TableField(value="handle_time") + @Schema(description="处理时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date handleTime; + +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByB.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByB.java new file mode 100644 index 0000000..80f170c --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByB.java @@ -0,0 +1,211 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 白蚁设备表实体类 + * 数据源为WaterDevice + * 与r表通过device_id关联 + * @see com.gunshi.project.ss.datasync.entity.jcsk.WaterDevice + */ +@Data +@TableName("jcsk_by_b") +@IgnoreAutoMapperAndDao +public class JcskByB { + /** + * 主键 + */ + @TableField("id") + private Integer id; + + /** + * 设备名称 + */ + @TableField("name") + private String name; + + /** + * 设备编码 + */ + @TableField("code") + private String code; + + /** + * 站点接入编码 + */ + @TableField("mn_no") + private String mnNo; + + /** + * 厂家id + */ + @TableField("factory_id") + private Integer factoryId; + + /** + * 服务站点id + */ + @TableField("station_id") + private Integer stationId; + + /** + * 服务站点名称 + */ + @TableField("station_name") + private String stationName; + + /** + * 创建时间 + */ + @TableField("created_at") + private Integer createdAt; + + /** + * 创建人id + */ + @TableField("created_user") + private Integer createdUser; + + /** + * 修改时间 + */ + @TableField("updated_at") + private Integer updatedAt; + + /** + * 修改人id + */ + @TableField("updated_user") + private Integer updatedUser; + + /** + * 状态 + */ + @TableField("status") + private Integer status; + + /** + * 纬度 + */ + @TableField("lat") + private BigDecimal lat; + + /** + * 经度 + */ + @TableField("lon") + private BigDecimal lon; + + /** + * 省份id + */ + @TableField("province_id") + private Long provinceId; + + /** + * 省份名称 + */ + @TableField("province_name") + private String provinceName; + + /** + * 城市id + */ + @TableField("city_id") + private Long cityId; + + /** + * 城市名称 + */ + @TableField("city_name") + private String cityName; + + /** + * 区域名称 + */ + @TableField("area_name") + private String areaName; + + /** + * 区域id + */ + @TableField("area_id") + private Long areaId; + + /** + * 设备类型 + */ + @TableField("type") + private Integer type; + + /** + * 设备类型详情 + */ + @TableField("send_type") + private String sendType; + + /** + * 联系人 + */ + @TableField("contact") + private String contact; + + /** + * 联系电话 + */ + @TableField("telephone") + private String telephone; + + /** + * 流域 + */ + @TableField("river") + private String river; + + /** + * 安装地点 + */ + @TableField("address") + private String address; + + /** + * 产品型号 + */ + @TableField("model") + private String model; + + /** + * 备注 + */ + @TableField("remark") + private String remark; + + /** + * 通信方式 + */ + @TableField("communication_type") + private Integer communicationType; + + /** + * 设备图片 + */ + @TableField("image_url") + private String imageUrl; + + /** + * 设备视频流地址的ip + */ + @TableField("video_ip") + private String videoIp; + + /** + * 设备视频id + */ + @TableField("video_id") + private String videoId; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByBD.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByBD.java new file mode 100644 index 0000000..2edb815 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByBD.java @@ -0,0 +1,73 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 设备站点关联表实体类 + * 对应表:jcsk_by_b_d + */ +@Data +@TableName("public.jcsk_by_b_d") +@IgnoreAutoMapperAndDao +public class JcskByBD { + + /** + * 机箱 + */ + @TableField(value="device_id") + @Schema(description="设备编号") + private Integer deviceId; + + /** + * 站点编号 + */ + @TableField(value = "\"order\"") + @Schema(description = "测点编号") + private String order; + + /** + * 联网方式 + */ + @TableField(value = "inte_type") + @Schema(description = "联网方式") + private String inteType; + + /** + * 安装位置 + */ + @TableField(value = "fix_place") + @Schema(description = "安装位置") + private String fixPlace; + + /** + * 经度 + */ + @TableField(value = "lgtd") + @Schema(description = "经度") + private BigDecimal lgtd; + + /** + * 备注 + */ + @TableField(value = "remark") + @Schema(description = "备注") + private String remark; + + /** + * 纬度 + */ + @TableField(value = "lttd") + @Schema(description = "纬度") + private BigDecimal lttd; + + + @TableField(exist = false) + @Schema(description = "有无白蚁 1为有 0为无") + private Integer status; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByR.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByR.java new file mode 100644 index 0000000..9fbb3cf --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskByR.java @@ -0,0 +1,127 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.model.vo.JcskByRProcessVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 白蚁数据表实体类 + * 数据源为WaterDataTermites + * nmNo = JcskByB. + * @see com.gunshi.project.ss.datasync.entity.jcsk.WaterDataTermites + */ +@Data +@TableName("jcsk_by_r") +@IgnoreAutoMapperAndDao +public class JcskByR { + /** + * 设备编码 + */ + @TableField("mn_no") + private String mnNo; + + /** + * 白蚁蚁情状态,有白蚁入侵为1 + */ + @TableField("status") + private Integer status; + + /** + * 白蚁设备电量 + */ + @TableField("electricity") + private Integer electricity; + + /** + * 白蚁设备安装的点位顺序 + */ + @TableField("\"order\"") + private String order; + + /** + * 创建时间 + */ + @TableField("created_at") + private LocalDateTime createdAt; + + /** + * 观测时间 + */ + @TableField("ob_time") + private String obTime; + + /** + * 观测时间2 + */ + @TableField("ob_date") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime obDate; + + /** + * 主键id + */ + @TableField("id") + private Integer id; + + /** + * 水库id + */ + @TableField("station_id") + private Integer stationId; + + /** + * 站点名称 + */ + @TableField("station_name") + private String stationName; + + /** + * 设备id + */ + @TableField("device_id") + private Integer deviceId; + + /** + * 设备名称 + */ + @TableField("device_name") + private String deviceName; + + /** + * 任务状态 + */ + @TableField("task_status") + private String taskStatus; + + /** + * 任务id + */ + @TableField("task_id") + private String taskId; + + /** + * 接收类型 + */ + @TableField("receive_type") + private Short receiveType; + + + @Schema(description = "是否处理") + @TableField(exist = false) + private Boolean isProcess = false; + + @Schema(description = "是否有巡检任务") + @TableField(exist = false) + private Boolean hasInspectTask = false; + + + @Schema(description = "工单详情") + @TableField(exist = false) + private JcskByRProcessVo jcskByRProcessVo; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskGnssB.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskGnssB.java new file mode 100644 index 0000000..2345423 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskGnssB.java @@ -0,0 +1,69 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 位移设备表 + * 数据源为AttWyCdBase + * 与r表通过rscd加cd关联 + * @see com.gunshi.project.ss.datasync.entity.jcsk.AttWyCdBase + */ +@Data +@TableName("jcsk_gnss_b") +@IgnoreAutoMapperAndDao +public class JcskGnssB { + /** + * 测点编码 + */ + @TableField("cd") + private String cd; + + /** + * 测点名称 + */ + @TableField("cd_nm") + private String cdNm; + + /** + * 桩号 + */ + @TableField("ch") + private String ch; + + /** + * 测点类型(sl/wy/sy) + */ + @TableField("cd_type") + private String cdType; + + /** + * 水库编码 + */ + @TableField("res_cd") + private String resCd; + + /** + * 设备状态 + */ + @TableField("device_status") + private String deviceStatus; + + @TableField(exist = false) + private String stationCode; + + @Schema(description = "0 离线 1 在线") + @TableField(exist = false) + private Integer status; + + @TableField("lttd") + private BigDecimal lttd; + + @TableField("lgtd") + private BigDecimal lgtd; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskGnssR.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskGnssR.java new file mode 100644 index 0000000..089234d --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskGnssR.java @@ -0,0 +1,94 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 位移数据表 + * 数据源为AttMqttCalcData + * @see com.gunshi.project.ss.datasync.entity.jcsk.AttMqttCalcData + */ +@Data +@TableName("jcsk_gnss_r") +@IgnoreAutoMapperAndDao +public class JcskGnssR { + /** + * 水库编码设备编码 + */ + @TableField("res_cd") + private String resCd; + + + @TableField("is_artificial") + private Integer isArtificial; + + + /** + * 测点编码 + */ + @TableField("cd") + private String cd; + + /** + * e方向变形值,单位(mm) + */ + @TableField("de") + private BigDecimal de; + + /** + * n方向变形值,单位(mm) + */ + @TableField("dn") + private BigDecimal dn; + + /** + * u方向变形值,单位(mm) + */ + @TableField("du") + private BigDecimal du; + + /** + * 站点高程 + */ + @TableField("alt") + private BigDecimal alt; + + /** + * 监测时间 + */ + @TableField("tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime tm; + + /** + * 更新时间 + */ + @TableField("update_tm") + private LocalDateTime updateTm; + + /** + * 人工录入时间,用于执行更新时用 + */ + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime newUpdateTm; + + + @TableField(exist = false) + private String ch; + + @TableField(exist = false) + private String cdnm; + + /** + * 人工录入cd,用于执行更新时用 + */ + @TableField(exist = false) + private String newUpdateCd; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSlB.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSlB.java new file mode 100644 index 0000000..91ab5a0 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSlB.java @@ -0,0 +1,116 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 渗流测点表实体类 + * 数据源为DsmSpgSpqnmp + * 与r表通过rscd,stcd,mpcd关联 + * @see com.gunshi.project.ss.datasync.entity.jcsk.DsmSpgSpqnmp + */ +@Data +@TableName("jcsk_sl_b") +@IgnoreAutoMapperAndDao +public class JcskSlB { + + + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * rtu编号 + */ + @TableField("stcd") + private String stcd; + + /** + * 桩号 + */ + @TableField("ch") + private String ch; + + /** + * 轴距,单位m + */ + @TableField("ofax") + private BigDecimal ofax; + + /** + * 高程,单位m + */ + @TableField("el") + private BigDecimal el; + + /** + * 安装日期 + */ + @TableField("indt") + private LocalDate indt; + + /** + * 仪器编号 + */ + @TableField("dvcd") + private String dvcd; + + /** + * 经度 + */ + @TableField("lgtd") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @TableField("lttd") + private BigDecimal lttd; + + /** + * 备注 + */ + @TableField("rm") + private String rm; + + /** + * 资料更新时间 + */ + @TableField("dtuptm") + private LocalDateTime dtuptm; + + /** + * 断面 + */ + @TableField("dm") + private String dm; + + /** + * 是否填报 + */ + @TableField("is_tb") + private String isTb; + + @TableField(exist = false) + private String stationCode; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSlR.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSlR.java new file mode 100644 index 0000000..68b2afc --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSlR.java @@ -0,0 +1,70 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 渗流数据表实体类 + * 数据源为DsmSpgSpqnNormal + * @see com.gunshi.project.ss.datasync.entity.jcsk.DsmSpgSpqn + */ +@Data +@TableName("jcsk_sl_r") +@IgnoreAutoMapperAndDao +public class JcskSlR { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + @TableField("stcd") + private String stcd; + + + /** + * 测量时间 + */ + @TableField("mstm") + private LocalDateTime mstm; + + /** + * 温度,单位℃ + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流量,单位l/s + */ + @TableField("spqn") + private BigDecimal spqn; + + /** + * 标准水温渗流量,单位l/s + */ + @TableField("stspqn") + private BigDecimal stspqn; + + @TableField(exist = false) + private String dvcd; + +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSyB.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSyB.java new file mode 100644 index 0000000..5caa79e --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSyB.java @@ -0,0 +1,139 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 渗压测点表 + * 数据源为DsmSpgSpprmp + * 与r表通过rscd,stcd,mpcd关联 + * @see com.gunshi.project.ss.datasync.entity.jcsk.DsmSpgSpprmp + */ +@Data +@TableName("jcsk_sy_b") +@IgnoreAutoMapperAndDao +public class JcskSyB { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * rtu编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * 桩号 + */ + @TableField("ch") + private String ch; + + /** + * 轴距,单位m + */ + @TableField("ofax") + private BigDecimal ofax; + + /** + * 高程,单位m + */ + @TableField("el") + private BigDecimal el; + + /** + * 监测类型 + */ + @TableField("msps") + private String msps; + + /** + * 透水段底高程,单位m + */ + @TableField("pmbtel") + private BigDecimal pmbtel; + + /** + * 透水段顶高程,单位m + */ + @TableField("pmtpel") + private BigDecimal pmtpel; + + /** + * 坝面高程 + */ + @TableField("dsel") + private BigDecimal dsel; + + /** + * 安装日期 + */ + @TableField("indt") + private LocalDate indt; + + /** + * 仪器编号 + */ + @TableField("dvcd") + private String dvcd; + + /** + * 经度 + */ + @TableField("lgtd") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @TableField("lttd") + private BigDecimal lttd; + + /** + * 备注 + */ + @TableField("rm") + private String rm; + + /** + * 资料更新时间 + */ + @TableField("dtuptm") + private LocalDateTime dtuptm; + + /** + * 断面 + */ + @TableField("dm") + private String dm; + + /** + * 是否填报 + */ + @TableField("is_tb") + private String isTb; + + + @TableField(exist = false) + private String stationCode; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSyR.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSyR.java new file mode 100644 index 0000000..438a426 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/JcskSyR.java @@ -0,0 +1,100 @@ +package com.gunshi.project.ss.common.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * 渗压数据表实体类 + * 数据源为DsmSpgSpprNormal + * @see com.gunshi.project.ss.datasync.entity.jcsk.DsmSpgSppr + */ +@Data +@TableName("jcsk_sy_r") +@IgnoreAutoMapperAndDao +public class JcskSyR { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * rtu编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime mstm; + + /** + * 温度 + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 用于记录人工录入数据时的新时间 + */ + @TableField(exist = false) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateMstm; + + + @TableField("is_artificial") + @Schema(description = "是否为人工录入 0不是 1是") + private Integer isArtificial; + + + /** + * 渗流压力水位,单位m + */ + @TableField("spprwl") + private BigDecimal spprwl; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTm; + + + @TableField(exist = false) + @Schema(description = "断面编码") + private String dm; + + + @TableField(exist = false) + @Schema(description = "断面名称") + private String dmName; + + + @TableField(exist = false) + @Schema(description = "测点编号") + private String dvcd; +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StFlowR.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StFlowR.java new file mode 100644 index 0000000..28a2992 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StFlowR.java @@ -0,0 +1,67 @@ +package com.gunshi.project.ss.common.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @author lyf + * @since 2025-10-16 + */ +@Data +@TableName("st_flow_r") +@IgnoreAutoMapperAndDao +public class StFlowR { + + /** + * 主键id + */ + @TableId(value = "id", type = IdType.NONE) + private Integer id; + + /** + * 测站编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 观测时间 + */ + @TableField("tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime tm; + + /** + * 入库流量,单位m³/s + */ + @TableField("inq") + private BigDecimal inq; + + /** + * 瞬时流量,单位m³/s + */ + @TableField("q") + private BigDecimal q; + + /** + * 出库流量,单位m³/s + */ + @TableField("otq") + private BigDecimal otq; + + /** + * 创建时间 + */ + @TableField("crtime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime crtime; + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StPptnR.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StPptnR.java new file mode 100644 index 0000000..9ad30c7 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StPptnR.java @@ -0,0 +1,112 @@ +package com.gunshi.project.ss.common.model; + + +import java.io.Serializable; +import java.util.Date; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.gunshi.core.dateformat.DateFormatString; + +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +/** +* 描述: 降水量表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="降水量表") +@Data +@TableName("public.st_pptn_r") +@JsonIgnoreProperties(ignoreUnknown = true) +@IgnoreAutoMapperAndDao +public class StPptnR implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测站编码 + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 20") + @NotBlank(message = "测站编码不能为空") + private String stcd; + + /** + * 时段降水量 + */ + @TableField(value="drp") + @Schema(description="时段降水量") + private String drp; + + /** + * 时间 + */ + @TableField(value="tm") + @Schema(description="时间") + @NotNull(message = "时间不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 时段长 + */ + @TableField(value="intv") + @Schema(description="时段长") + private String intv; + + /** + * 降水历时 + */ + @TableField(value="pdr") + @Schema(description="降水历时") + private String pdr; + + /** + * 日降水量 + */ + @TableField(value="dyp") + @Schema(description="日降水量") + private String dyp; + + /** + * 天气状况 + */ + @TableField(value="wth") + @Schema(description="天气状况") + @Size(max = 1,message = "天气状况最大长度要小于 1") + private String wth; + + /** + * chtm + */ + @TableField(value="chtm") + @Schema(description="chtm") + // @Size(max = 0,message = "chtm最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + + @TableField(exist = false) + private Date stm;// 同步的数据的开始时间 + + @TableField(exist = false) + private Date etm;// 同步的数据的结束时间 + + @TableField(exist = false) + private String source;// 测站数据源 + + @TableField(exist = false) + private String sttp;// 测站类型 +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StPptnRReal.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StPptnRReal.java new file mode 100644 index 0000000..0eb1bd2 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StPptnRReal.java @@ -0,0 +1,172 @@ +package com.gunshi.project.ss.common.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 降水量历史表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="降水量历史表") +@Data +@TableName("public.st_pptn_r_real") +@JsonIgnoreProperties(ignoreUnknown = true) +@IgnoreAutoMapperAndDao +public class StPptnRReal implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * stcd + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="stcd") + @Size(max = 20,message = "stcd最大长度要小于 20") + @NotBlank(message = "stcd不能为空") + private String stcd; + + /** + * tm + */ + @TableField(value="tm") + @Schema(description="tm") + // @Size(max = 0,message = "tm最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * drp + */ + @TableField(value="drp") + @Schema(description="drp") + // @Size(max = 0,message = "drp最大长度要小于 0") + private BigDecimal drp; + + /** + * today + */ + @TableField(value="today") + @Schema(description="today") + // @Size(max = 0,message = "today最大长度要小于 0") + private BigDecimal today; + + /** + * m10 + */ + @TableField(value="m10") + @Schema(description="m10") + // @Size(max = 0,message = "m10最大长度要小于 0") + private BigDecimal m10; + + /** + * m30 + */ + @TableField(value="m30") + @Schema(description="m30") + // @Size(max = 0,message = "m30最大长度要小于 0") + private BigDecimal m30; + + /** + * h1 + */ + @TableField(value="h1") + @Schema(description="h1") + // @Size(max = 0,message = "h1最大长度要小于 0") + private BigDecimal h1; + + /** + * h3 + */ + @TableField(value="h3") + @Schema(description="h3") + // @Size(max = 0,message = "h3最大长度要小于 0") + private BigDecimal h3; + + /** + * h6 + */ + @TableField(value="h6") + @Schema(description="h6") + // @Size(max = 0,message = "h6最大长度要小于 0") + private BigDecimal h6; + + /** + * h12 + */ + @TableField(value="h12") + @Schema(description="h12") + // @Size(max = 0,message = "h12最大长度要小于 0") + private BigDecimal h12; + + /** + * h24 + */ + @TableField(value="h24") + @Schema(description="h24") + // @Size(max = 0,message = "h24最大长度要小于 0") + private BigDecimal h24; + + /** + * h48 + */ + @TableField(value="h48") + @Schema(description="h48") + // @Size(max = 0,message = "h48最大长度要小于 0") + private BigDecimal h48; + + /** + * chtm + */ + @TableField(value="chtm") + @Schema(description="chtm") + // @Size(max = 0,message = "chtm最大长度要小于 0") + @NotNull(message = "chtm不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * warning + */ + @TableField(value="warning") + @Schema(description="warning") + // @Size(max = 0,message = "warning最大长度要小于 0") + private Integer warning; + + /** + * status + */ + @TableField(value="status") + @Schema(description="status") + // @Size(max = 0,message = "status最大长度要小于 0") + private Integer status; + + /** + * cluster + */ + @TableField(value="cluster") + @Schema(description="cluster") + @Size(max = 10,message = "cluster最大长度要小于 10") + private String cluster; + + @TableField(exist = false) + @Schema(description = "站点名称") + private String stnm; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StRiverR.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StRiverR.java new file mode 100644 index 0000000..9f7b68c --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StRiverR.java @@ -0,0 +1,167 @@ +package com.gunshi.project.ss.common.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: +* author: cxw +* date: 2024-09-24 14:01:07 +*/ +@Schema(description="河道水位表") +@Data +@TableName("public.st_river_r") +public class StRiverR implements Serializable { + + public final static String thisTableName = "StRiverR"; + + private static final long serialVersionUID = 1L; + + /** + * stcd + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="stcd") + @Size(max = 20,message = "stcd最大长度要小于 20") + @NotBlank(message = "stcd不能为空") + @NotNull(message = "stcd不能为空") + private String stcd; + + /** + * tm + */ + @TableField(value="tm") + @Schema(description="tm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * z + */ + @TableField(value="z") + @Schema(description="z") + private BigDecimal z; + + /** + * q + */ + @TableField(value="q") + @Schema(description="q") + private BigDecimal q; + + /** + * xsa + */ + @TableField(value="xsa") + @Schema(description="xsa") + private BigDecimal xsa; + + /** + * xsavv + */ + @TableField(value="xsavv") + @Schema(description="xsavv") + private BigDecimal xsavv; + + /** + * xsmxv + */ + @TableField(value="xsmxv") + @Schema(description="xsmxv") + private BigDecimal xsmxv; + + /** + * flwchrcd + */ + @TableField(value="flwchrcd") + @Schema(description="flwchrcd") + @Size(max = 4,message = "flwchrcd最大长度要小于 4") + private String flwchrcd; + + /** + * wptn + */ + @TableField(value="wptn") + @Schema(description="wptn") + @Size(max = 4,message = "wptn最大长度要小于 4") + private String wptn; + + /** + * msqmt + */ + @TableField(value="msqmt") + @Schema(description="msqmt") + @Size(max = 4,message = "msqmt最大长度要小于 4") + private String msqmt; + + /** + * msamt + */ + @TableField(value="msamt") + @Schema(description="msamt") + @Size(max = 4,message = "msamt最大长度要小于 4") + private String msamt; + + /** + * msvmt + */ + @TableField(value="msvmt") + @Schema(description="msvmt") + @Size(max = 4,message = "msvmt最大长度要小于 4") + private String msvmt; + + /** + * chtm + */ + @TableField(value="chtm") + @Schema(description="chtm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * sendtm + */ + @TableField(value="sendtm") + @Schema(description="sendtm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date sendtm; + + /** + * receivetm + */ + @TableField(value="receivetm") + @Schema(description="receivetm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date receivetm; + + /** + * source_int + */ + @TableField(value="source_int") + @Schema(description="source_int") + private Integer sourceInt; + + + @TableField(exist = false) + private String stnm; + + @TableField(exist = false) + private BigDecimal lgtd; + + @TableField(exist = false) + private BigDecimal lttd; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StRiverRReal.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StRiverRReal.java new file mode 100644 index 0000000..708acc3 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StRiverRReal.java @@ -0,0 +1,167 @@ +package com.gunshi.project.ss.common.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: +* author: cxw +* date: 2024-09-24 14:01:07 +*/ +@Schema(description="") +@Data +@TableName("public.st_river_r_real") +public class StRiverRReal implements Serializable { + + public final static String thisTableName = "StRiverRReal"; + + private static final long serialVersionUID = 1L; + + /** + * stcd + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="stcd") + @Size(max = 20,message = "stcd最大长度要小于 20") + @NotBlank(message = "stcd不能为空") + @NotNull(message = "stcd不能为空") + private String stcd; + + @TableField(exist = false) + private String stnm; + + /** + * tm + */ + @TableField(value="tm") + @Schema(description="tm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * z + */ + @TableField(value="z") + @Schema(description="z") + private BigDecimal z; + + /** + * q + */ + @TableField(value="q") + @Schema(description="q") + private BigDecimal q; + + /** + * xsa + */ + @TableField(value="xsa") + @Schema(description="xsa") + private BigDecimal xsa; + + /** + * xsavv + */ + @TableField(value="xsavv") + @Schema(description="xsavv") + private BigDecimal xsavv; + + /** + * xsmxv + */ + @TableField(value="xsmxv") + @Schema(description="xsmxv") + private BigDecimal xsmxv; + + /** + * flwchrcdf + */ + @TableField(value="flwchrcdf") + @Schema(description="flwchrcdf") + @Size(max = 1,message = "flwchrcdf最大长度要小于 1") + private String flwchrcdf; + + /** + * wptn + */ + @TableField(value="wptn") + @Schema(description="wptn") + @Size(max = 1,message = "wptn最大长度要小于 1") + private String wptn; + + /** + * maxz + */ + @TableField(value="maxz") + @Schema(description="maxz") + private BigDecimal maxz; + + /** + * maxtm + */ + @TableField(value="maxtm") + @Schema(description="maxtm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date maxtm; + + /** + * msqmt + */ + @TableField(value="msqmt") + @Schema(description="msqmt") + @Size(max = 1,message = "msqmt最大长度要小于 1") + private String msqmt; + + /** + * msamt + */ + @TableField(value="msamt") + @Schema(description="msamt") + @Size(max = 1,message = "msamt最大长度要小于 1") + private String msamt; + + /** + * msvmt + */ + @TableField(value="msvmt") + @Schema(description="msvmt") + @Size(max = 1,message = "msvmt最大长度要小于 1") + private String msvmt; + + /** + * chtm + */ + @TableField(value="chtm") + @Schema(description="chtm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * warning + */ + @TableField(value="warning") + @Schema(description="warning") + private Integer warning; + + /** + * status + */ + @TableField(value="status") + @Schema(description="status") + private Integer status; + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StRsvrR.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StRsvrR.java new file mode 100644 index 0000000..30560cb --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StRsvrR.java @@ -0,0 +1,170 @@ +package com.gunshi.project.ss.common.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 水库历史水位表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库历史水位表") +@Data +@TableName("public.st_rsvr_r") +@JsonIgnoreProperties(ignoreUnknown = true) +public class StRsvrR implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * stcd + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="stcd") + @Size(max = 20,message = "stcd最大长度要小于 20") + @NotBlank(message = "stcd不能为空") + private String stcd; + + /** + * tm + */ + @TableField(value="tm") + @Schema(description="tm") + @NotNull(message = "tm不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * rz + */ + @TableField(value="rz") + @Schema(description="rz") + private String rz; + + /** + * inq + */ + @TableField(value="inq") + @Schema(description="inq") + private String inq; + + /** + * w + */ + @TableField(value="w") + @Schema(description="w") + private String w; + + /** + * blrz + */ + @TableField(value="blrz") + @Schema(description="blrz") + private String blrz; + + /** + * otq + */ + @TableField(value="otq") + @Schema(description="otq") + private String otq; + + /** + * rwchrcd + */ + @TableField(value="rwchrcd") + @Schema(description="rwchrcd") + @Size(max = 4,message = "rwchrcd最大长度要小于 4") + private String rwchrcd; + + /** + * rwptn + */ + @TableField(value="rwptn") + @Schema(description="rwptn") + @Size(max = 4,message = "rwptn最大长度要小于 4") + private String rwptn; + + /** + * inqdr + */ + @TableField(value="inqdr") + @Schema(description="inqdr") + // @Size(max = 0,message = "inqdr最大长度要小于 0") + private String inqdr; + + /** + * msqmt + */ + @TableField(value="msqmt") + @Schema(description="msqmt") + @Size(max = 4,message = "msqmt最大长度要小于 4") + private String msqmt; + + /** + * chtm + */ + @TableField(value="chtm") + @Schema(description="chtm") + // @Size(max = 0,message = "chtm最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * sendtm + */ + @TableField(value="sendtm") + @Schema(description="sendtm") + // @Size(max = 0,message = "sendtm最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date sendtm; + + /** + * receivetm + */ + @TableField(value="receivetm") + @Schema(description="receivetm") + // @Size(max = 0,message = "receivetm最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date receivetm; + + /** + * source_int + */ + @TableField(value="source_int") + @Schema(description="source_int") + // @Size(max = 0,message = "source_int最大长度要小于 0") + private Integer sourceInt; + + + @TableField(exist = false) + private Date stm;// 同步的数据的开始时间 + + @TableField(exist = false) + private Date etm;// 同步的数据的结束时间 + + @TableField(exist = false) + private String source;// 测站数据源 + + @TableField(exist = false) + private String sttp;// 测站类型 + + @TableField(exist = false) + private String z;// 山洪河道水位 + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StRsvrRReal.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StRsvrRReal.java new file mode 100644 index 0000000..fd8e732 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StRsvrRReal.java @@ -0,0 +1,159 @@ +package com.gunshi.project.ss.common.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 水库水位实时数据表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库水位实时数据表") +@Data +@TableName("public.st_rsvr_r_real") +@JsonIgnoreProperties(ignoreUnknown = true) +public class StRsvrRReal implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * stcd + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="stcd") + @Size(max = 20,message = "stcd最大长度要小于 20") + @NotBlank(message = "stcd不能为空") + private String stcd; + + + /** + * stnm + */ + @TableField(exist=false) + private String stnm; + + /** + * tm + */ + @TableField(value="tm") + @Schema(description="tm") + // @Size(max = 0,message = "tm最大长度要小于 0") + @NotNull(message = "tm不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * rz + */ + @TableField(value="rz") + @Schema(description="rz") + // @Size(max = 0,message = "rz最大长度要小于 0") + private BigDecimal rz; + + /** + * inq + */ + @TableField(value="inq") + @Schema(description="inq") + // @Size(max = 0,message = "inq最大长度要小于 0") + private String inq; + + /** + * w + */ + @TableField(value="w") + @Schema(description="w") + // @Size(max = 0,message = "w最大长度要小于 0") + private String w; + + /** + * blrz + */ + @TableField(value="blrz") + @Schema(description="blrz") + // @Size(max = 0,message = "blrz最大长度要小于 0") + private String blrz; + + /** + * otq + */ + @TableField(value="otq") + @Schema(description="otq") + // @Size(max = 0,message = "otq最大长度要小于 0") + private String otq; + + /** + * rwchrcd + */ + @TableField(value="rwchrcd") + @Schema(description="rwchrcd") + @Size(max = 1,message = "rwchrcd最大长度要小于 1") + private String rwchrcd; + + /** + * rwptn + */ + @TableField(value="rwptn") + @Schema(description="rwptn") + @Size(max = 1,message = "rwptn最大长度要小于 1") + private String rwptn; + + /** + * inqdr + */ + @TableField(value="inqdr") + @Schema(description="inqdr") + // @Size(max = 0,message = "inqdr最大长度要小于 0") + private String inqdr; + + /** + * msqmt + */ + @TableField(value="msqmt") + @Schema(description="msqmt") + @Size(max = 1,message = "msqmt最大长度要小于 1") + private String msqmt; + + /** + * chtm + */ + @TableField(value="chtm") + @Schema(description="chtm") + // @Size(max = 0,message = "chtm最大长度要小于 0") + @NotNull(message = "chtm不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * warning + */ + @TableField(value="warning") + @Schema(description="warning") + // @Size(max = 0,message = "warning最大长度要小于 0") + private Integer warning; + + /** + * status + */ + @TableField(value="status") + @Schema(description="status") + // @Size(max = 0,message = "status最大长度要小于 0") + private Integer status; + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StStbprpB.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StStbprpB.java new file mode 100644 index 0000000..235a4de --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StStbprpB.java @@ -0,0 +1,543 @@ +package com.gunshi.project.ss.common.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: sttp 以水利标准来 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="sttp 以水利标准来") +@Data +@TableName("public.st_stbprp_b") +@IgnoreAutoMapperAndDao +public class StStbprpB implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测站编码 + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="测站编码") + @Size(max = 32,message = "测站编码最大长度要小于 32") + @NotBlank(message = "测站编码不能为空",groups = {Insert.class, Update.class}) + private String stcd; + + /** + * 测站名称 + */ + @TableField(value="stnm") + @Schema(description="测站名称") + @Size(max = 150,message = "测站名称最大长度要小于 150") + private String stnm; + + /** + * 河流名称 + */ + @TableField(value="rvnm") + @Schema(description="河流名称") + @Size(max = 300,message = "河流名称最大长度要小于 300") + private String rvnm; + + /** + * 水系名称 + */ + @TableField(value="hnnm") + @Schema(description="水系名称") + @Size(max = 300,message = "水系名称最大长度要小于 300") + private String hnnm; + + /** + * 流域名称 + */ + @TableField(value="bsnm") + @Schema(description="流域名称") + @Size(max = 300,message = "流域名称最大长度要小于 300") + private String bsnm; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + // @Size(max = 0,message = "经度最大长度要小于 0") + private String lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + // @Size(max = 0,message = "纬度最大长度要小于 0") + private String lttd; + + /** + * 站址 + */ + @TableField(value="stlc") + @Schema(description="站址") + @Size(max = 500,message = "站址最大长度要小于 500") + private String stlc; + + + /** + * alt + */ + @TableField(value="alt") + @Schema(description="alt") + // @Size(max = 0,message = "alt最大长度要小于 0") + private String alt; + + /** + * mdbz + */ + @TableField(value="mdbz") + @Schema(description="mdbz") + // @Size(max = 0,message = "mdbz最大长度要小于 0") + private String mdbz; + + /** + * mdpr + */ + @TableField(value="mdpr") + @Schema(description="mdpr") + // @Size(max = 0,message = "mdpr最大长度要小于 0") + private String mdpr; + + /** + * 基面名称 + */ + @TableField(value="dtmnm") + @Schema(description="基面名称") + @Size(max = 160,message = "基面名称最大长度要小于 160") + private String dtmnm; + + /** + * 基面高程 + */ + @TableField(value="dtmel") + @Schema(description="基面高程") + // @Size(max = 0,message = "基面高程最大长度要小于 0") + private String dtmel; + + /** + * 基面修正值 + */ + @TableField(value="dtpr") + @Schema(description="基面修正值") + // @Size(max = 0,message = "基面修正值最大长度要小于 0") + private String dtpr; + + /** + * 站类,PP=雨量站,RR=水库水位站,ZQ=河道水位站,TX=图像站 + */ + @TableField(value="sttp") + @Schema(description="站类,MM=气象站,PP=雨量站,BB=蒸发站,ZQ=河道水文站,DD=堰闸水文站,ZZ=河道水位站,TT=潮位站,RR=水库水文站,DP=泵站,ZG=地下水站,SS=墒情站,ZB=分洪水位站,QQ=流量站,TX=图像站,ZI=渠道水位站,ZL=田间水层,QI=渠道流量站,ZT=塘堰,ZS=渗压渗流站,GT=闸位站,SZ=水质站,PQ=管道流量站") + @Size(max = 30,message = "站类,MM=气象站,PP=雨量站,BB=蒸发站,ZQ=河道水文站,DD=堰闸水文站,ZZ=河道水位站,TT=潮位站,RR=水库水文站,DP=泵站,ZG=地下水站,SS=墒情站,ZB=分洪水位站,QQ=流量站,TX=图像站,ZI=渠道水位站,ZL=田间水层,QI=渠道流量站,ZT=塘堰,ZS=渗压渗流站,GT=闸位站,SZ=水质站,PQ=管道流量站。最大长度要小于 30") + private String sttp; + + /** + * dfrtms + */ + @TableField(value="dfrtms") + @Schema(description="dfrtms") + // @Size(max = 0,message = "dfrtms最大长度要小于 0") + private String dfrtms; + + /** + * fritm + */ + @TableField(value="fritm") + @Schema(description="fritm") + @Size(max = 320,message = "fritm最大长度要小于 320") + private String fritm; + + /** + * 报汛等级 + */ + @TableField(value="frgrd") + @Schema(description="报汛等级") + @Size(max = 500,message = "报汛等级最大长度要小于 500") + private String frgrd; + + /** + * 建站年月 + */ + @TableField(value="esstym") + @Schema(description="建站年月") + @Size(max = 60,message = "建站年月最大长度要小于 60") + private String esstym; + + /** + * bgfrym + */ + @TableField(value="bgfrym") + @Schema(description="bgfrym") + @Size(max = 60,message = "bgfrym最大长度要小于 60") + private String bgfrym; + + /** + * edfrym + */ + @TableField(value="edfrym") + @Schema(description="edfrym") + @Size(max = 60,message = "edfrym最大长度要小于 60") + private String edfrym; + + /** + * 隶属行业单位 + */ + @TableField(value="atcunit") + @Schema(description="隶属行业单位") + @Size(max = 200,message = "隶属行业单位最大长度要小于 200") + private String atcunit; + + /** + * 信息管理单位 + */ + @TableField(value="admauth") + @Schema(description="信息管理单位") + @Size(max = 500,message = "信息管理单位最大长度要小于 500") + private String admauth; + + /** + * 交换管理单位 + */ + @TableField(value="locality") + @Schema(description="交换管理单位") + @Size(max = 200,message = "交换管理单位最大长度要小于 200") + private String locality; + + /** + * 测站岸别 + */ + @TableField(value="stbk") + @Schema(description="测站岸别") + @Size(max = 1,message = "测站岸别最大长度要小于 1") + private String stbk; + + /** + * 测站方位 + */ + @TableField(value="stazt") + @Schema(description="测站方位") + // @Size(max = 0,message = "测站方位最大长度要小于 0") + private String stazt; + + /** + * 至河口距离 + */ + @TableField(value="dstrvm") + @Schema(description="至河口距离") + // @Size(max = 0,message = "至河口距离最大长度要小于 0") + private String dstrvm; + + /** + * 集水面积 + */ + @TableField(value="drna") + @Schema(description="集水面积") + // @Size(max = 0,message = "集水面积最大长度要小于 0") + private String drna; + + /** + * 拼音码 + */ + @TableField(value="phcd") + @Schema(description="拼音码") + @Size(max = 60,message = "拼音码最大长度要小于 60") + private String phcd; + + /** + * 启用标志 + */ + @TableField(value="usfl") + @Schema(description="启用标志") + @Size(max = 1,message = "启用标志最大长度要小于 1") + private String usfl; + + /** + * 备注 + */ + @TableField(value="comments") + @Schema(description="备注") + @Size(max = 200,message = "备注最大长度要小于 200") + private String comments; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + + /** + * rem_gd + */ + @TableField(value="rem_gd") + @Schema(description="rem_gd") + @Size(max = 300,message = "rem_gd最大长度要小于 300") + private String remGd; + + /** + * ogid + */ + @TableField(value="ogid") + @Schema(description="ogid") + @Size(max = 100,message = "ogid最大长度要小于 100") + private String ogid; + + /** + * vlfl + */ + @TableField(value="vlfl") + @Schema(description="vlfl") + // @Size(max = 0,message = "vlfl最大长度要小于 0") + private String vlfl; + + /** + * atid + */ + @TableField(value="atid") + @Schema(description="atid") + @Size(max = 180,message = "atid最大长度要小于 180") + private String atid; + + /** + * sdfl + */ + @TableField(value="sdfl") + @Schema(description="sdfl") + @Size(max = 500,message = "sdfl最大长度要小于 500") + private String sdfl; + + /** + * rma + */ + @TableField(value="rma") + @Schema(description="rma") + @Size(max = 256,message = "rma最大长度要小于 256") + private String rma; + + /** + * mdps + */ + @TableField(value="mdps") + @Schema(description="mdps") + @Size(max = 300,message = "mdps最大长度要小于 300") + private String mdps; + + /** + * mddt + */ + @TableField(value="mddt") + @Schema(description="mddt") + // @Size(max = 0,message = "mddt最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date mddt; + + /** + * stindex + */ + @TableField(value="stindex") + @Schema(description="stindex") + // @Size(max = 0,message = "stindex最大长度要小于 0") + private String stindex; + + /** + * starea + */ + @TableField(value="starea") + @Schema(description="starea") + @Size(max = 500,message = "starea最大长度要小于 500") + private String starea; + + /** + * stlevel + */ + @TableField(value="stlevel") + @Schema(description="stlevel") + @Size(max = 1,message = "stlevel最大长度要小于 1") + private String stlevel; + + /** + * code + */ + @TableField(value="code") + @Schema(description="code") + @Size(max = 300,message = "code最大长度要小于 300") + private String code; + + /** + * ispbj + */ + @TableField(value="ispbj") + @Schema(description="ispbj") + @Size(max = 1,message = "ispbj最大长度要小于 1") + private String ispbj; + + /** + * issxst + */ + @TableField(value="issxst") + @Schema(description="issxst") + @Size(max = 1,message = "issxst最大长度要小于 1") + private String issxst; + + /** + * stpq + */ + @TableField(value="stpq") + @Schema(description="stpq") + @Size(max = 500,message = "stpq最大长度要小于 500") + private String stpq; + + /** + * sthday + */ + @TableField(value="sthday") + @Schema(description="sthday") + // @Size(max = 0,message = "sthday最大长度要小于 0") + private Integer sthday; + + /** + * source + */ + @TableField(value="source") + @Schema(description="站点来源,SH=山洪,SW=水文,QX=气象,SK=水库") + @Size(max = 12,message = "站点来源,SH=山洪,SW=水文,QX=气象,SK=水库最大长度要小于 12") + @NotBlank(message = "站点来源不能为空") + private String source; + + /** + * importancy + */ + @TableField(value="importancy") + @Schema(description="importancy") + // @Size(max = 0,message = "importancy最大长度要小于 0") + private Integer importancy; + + /** + * clgtd + */ + @TableField(value="clgtd") + @Schema(description="clgtd") + // @Size(max = 0,message = "clgtd最大长度要小于 0") + private String clgtd; + + /** + * clttd + */ + @TableField(value="clttd") + @Schema(description="clttd") + // @Size(max = 0,message = "clttd最大长度要小于 0") + private String clttd; + + /** + * elev + */ + @TableField(value="elev") + @Schema(description="elev") + // @Size(max = 0,message = "elev最大长度要小于 0") + private String elev; + + /** + * crucial + */ + @TableField(value="crucial") + @Schema(description="crucial") + // @Size(max = 0,message = "crucial最大长度要小于 0") + private Integer crucial; + + /** + * build_year + */ + @TableField(value="build_year") + @Schema(description="build_year") + @Size(max = 50,message = "build_year最大长度要小于 50") + private String buildYear; + + /** + * 行政区划编码 + */ + @TableField(value="adcd") + @Schema(description="行政区划编码") + @Size(max = 15,message = "行政区划编码最大长度要小于 15") + private String adcd; + + /** + * 流域编码 + */ + @TableField(value="lyid") + @Schema(description="流域编码") + @Size(max = 255,message = "流域编码最大长度要小于 255") + private String lyid; + + /** + * 水库编码 + */ + @TableField(value="res_code") + @Schema(description="水库编码") + @Size(max = 255,message = "水库编码最大长度要小于 255") + private String resCode; + + /** + * 河流编码 + */ + @TableField(value="rv_code") + @Schema(description="河流编码") + @Size(max = 255,message = "河流编码最大长度要小于 255") + private String rvCode; + + /** + * 测站状态 0无效 1有效 + */ + @TableField(value="status") + @Schema(description="测站状态 0无效 1有效") + // @Size(max = 0,message = "测站状态 0无效 1有效最大长度要小于 0") + private Integer status; + + /** + * 归属协议 + */ + @Schema(description="归属协议") + @TableField(value="agreement") + private String agreement; + + /** + * SIM卡 + */ + @Schema(description="SIM卡") + @TableField(value="sim_card") + private String simCard; + + /** + * 北斗卡号 + */ + @Schema(description="北斗卡号") + @TableField(value="bd_card") + private String bdCard; + + public static final String COL_STCD = "stcd"; + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/StStbprpBElem.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/StStbprpBElem.java new file mode 100644 index 0000000..1406834 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/StStbprpBElem.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.common.model; + + +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 com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 测站监测值类型 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="测站监测值类型") +@Data +@TableName("public.st_stbprp_b_elem") +@IgnoreAutoMapperAndDao +public class StStbprpBElem implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测站编码 + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="测站编码") + @Size(max = 32,message = "测站编码最大长度要小于 32") + @NotBlank(message = "测站编码不能为空") + private String stcd; + + /** + * 监测值类型, z是水位,drp是雨量,img是图像 + */ + @TableField(value="elem") + @Schema(description="监测值类型, z是水位,drp是雨量,img是图像") + @Size(max = 4,message = "监测值类型, z是水位,drp是雨量,img是图像最大长度要小于 4") + @NotBlank(message = "监测值类型, z是水位,drp是雨量,img是图像不能为空") + private String elem; + +} \ No newline at end of file diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/page/GenericPageParams.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/page/GenericPageParams.java new file mode 100644 index 0000000..a05c5f2 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/page/GenericPageParams.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.common.model.page; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author cxw + * @description: 通用分页参数 + * @classname GenericPageParams.java + * @create 2024-07-09, 星期二, 11:29:56 + */ +@Schema(description = "通用分页查询对象") +@Data +public class GenericPageParams { + + @Schema(description = "分页参数") + @TableField(exist = false) + private PageSo pageSo; + + @Schema(description = "排序字段") + @TableField(exist = false) + private String orderField; + + @Schema(description = "排序规则,是否升序") + @TableField(exist = false) + private Boolean isAsc; + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskByBDPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskByBDPageSo.java new file mode 100644 index 0000000..dd2cd07 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskByBDPageSo.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.common.model.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskByBDPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "机箱编号 (一个机箱有多个设备)") + private String deviceId; + + @Schema(description = "设备编号") + private String order; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskByRPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskByRPageSo.java new file mode 100644 index 0000000..4ba77cc --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskByRPageSo.java @@ -0,0 +1,41 @@ +package com.gunshi.project.ss.common.model.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; + + +@Data +@Schema(description = "分页查询对象") +public class JcskByRPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date obDate; + + @Schema(description = "设备编号") + private String deviceCode; + + @Schema(description = "测点编号") + private String order; + + @Schema(description = "有无白蚁入侵") + private Integer status; + + + + + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskGnssBPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskGnssBPageSo.java new file mode 100644 index 0000000..207a34d --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskGnssBPageSo.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.common.model.so; + + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskGnssBPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "设备编码") + private String stationCode; + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskGnssRPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskGnssRPageSo.java new file mode 100644 index 0000000..f4fa7d2 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskGnssRPageSo.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.common.model.so; + + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskGnssRPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "上报时间") + private DateTimeRangeSo dateTimeRangeSo; + + + @Schema(description = "测点编码") + private String cd; + + @Schema(description = "断面") + private String ch; + + @Schema(description = "录入方式") + private Integer isArtificial; + + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSlBPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSlBPageSo.java new file mode 100644 index 0000000..4fe89d1 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSlBPageSo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.common.model.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskSlBPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "水库代码") + private String rscd; + + @Schema(description = "RTU编号") + private String stcd; + + @Schema(description = "测点编号") + private String mpcd; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSlRPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSlRPageSo.java new file mode 100644 index 0000000..7668623 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSlRPageSo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.common.model.so; + + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskSlRPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "上报时间") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "断面") + private String dm; + + + @Schema(description = "测点") + private String dvcd; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSyBPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSyBPageSo.java new file mode 100644 index 0000000..7631b8f --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSyBPageSo.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.common.model.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskSyBPageSo { + + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "断面") + private String dm; + + @Schema(description = "测点编号") + private String mpcd; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSyRPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSyRPageSo.java new file mode 100644 index 0000000..027ca2b --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/JcskSyRPageSo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.common.model.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class JcskSyRPageSo { + + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "上报时间") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "测点编号") + private String dvcd; + + @Schema(description = "断面") + private String dm; + + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticDetailQuerySo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticDetailQuerySo.java new file mode 100644 index 0000000..f0d82e8 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticDetailQuerySo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.common.model.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "布置图详细数据查询对象") +public class OsmoticDetailQuerySo { + + @Schema(description = "类型(2渗流 其他可不传)") + private Integer type = 1; + + @Schema(description = "时间") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "测点编号") + @NotEmpty(message = "测点编号不可为空") + private String stationCode; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticDevicePage.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticDevicePage.java new file mode 100644 index 0000000..96b958c --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticDevicePage.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.common.model.so; + +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/18. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class OsmoticDevicePage extends GenericPageParams { + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String stationCode; + + /** + * 仪器编号 + */ + @Schema(description="仪器编号") + private String deviceCode; + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticQueryPageSo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticQueryPageSo.java new file mode 100644 index 0000000..7c698f9 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticQueryPageSo.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.common.model.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "渗压/渗流/位移分页查询对象") +public class OsmoticQueryPageSo{ + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "上报时间") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "监测断面") + private String profileCode; + + @Schema(description = "测点编号") + private String stationCode; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticQuerySo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticQuerySo.java new file mode 100644 index 0000000..940327e --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/so/OsmoticQuerySo.java @@ -0,0 +1,38 @@ +package com.gunshi.project.ss.common.model.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "测值查询对象") +public class OsmoticQuerySo { + + @Schema(description = "类型(1渗压 2渗流)") + private Integer type = 1; + + @Schema(description = "年度") + private String year; + + @Schema(description = "时间") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "监测断面名称(只有导出时传)") + private String profileName; + + @Schema(description = "测点编号") + private List<@NotEmpty String> stationCodes; + + @Schema(description = "wy (没啥用的字段)") + private String wy; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskGnssBVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskGnssBVo.java new file mode 100644 index 0000000..1e30c25 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskGnssBVo.java @@ -0,0 +1,38 @@ +package com.gunshi.project.ss.common.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.JcskGnssB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class HomeJcskGnssBVo extends JcskGnssB { + + /** + * x方向 + */ + @Schema(description="x方向") + private String x; + + /** + * y方向 + */ + @Schema(description="y方向") + private String y; + + /** + * h方向 + */ + @Schema(description="h方向") + private String h; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskSYBVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskSYBVo.java new file mode 100644 index 0000000..d94cb2d --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskSYBVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.common.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.JcskSyB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class HomeJcskSYBVo extends JcskSyB { + + /** + * 管水位 + */ + @Schema(description="管水位") + private String value; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskSlBVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskSlBVo.java new file mode 100644 index 0000000..14df31a --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/HomeJcskSlBVo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.common.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; + +import com.gunshi.project.ss.common.model.JcskSlB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class HomeJcskSlBVo extends JcskSlB { + + /** + * 管水位 + */ + @Schema(description="流量") + private String q; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskByInspectDetailVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskByInspectDetailVo.java new file mode 100644 index 0000000..372c662 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskByInspectDetailVo.java @@ -0,0 +1,8 @@ +package com.gunshi.project.ss.common.model.vo; + +import lombok.Data; + +@Data +public class JcskByInspectDetailVo { + +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskByRProcessVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskByRProcessVo.java new file mode 100644 index 0000000..ba77b49 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskByRProcessVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.common.model.vo; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.InspectTask; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class JcskByRProcessVo extends InspectTask { + + @Schema(description = "设备编号") + private String order; + + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间") + private Date obDate; + + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间 + hours之后的结束时间") + private Date obResolveDate; + + + private Integer hours; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskGnessListVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskGnessListVo.java new file mode 100644 index 0000000..1a98d27 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskGnessListVo.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.common.model.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class JcskGnessListVo { + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String cd; + + @Schema(description = "桩号/断面") + private String ch; + + @Schema(description = "测点名称") + private String cdnm; + + @Schema(description = "测点编号/另一种叫法") + private String stationCode; + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") + private Integer flag = 0; + + /** + * x方向 + */ + @Schema(description="e方向") + private BigDecimal de; + + @Schema(description = "e方向是否超过预警(0否 1是)") + private Integer xStatus = 0; + + /** + * y方向 + */ + @Schema(description="n方向") + private BigDecimal dn; + + @Schema(description = "n方向是否超过预警(0否 1是)") + private Integer yStatus = 0; + + /** + * h方向 + */ + @Schema(description="u方向") + private BigDecimal du; + + @Schema(description = "u方向是否超过预警(0否 1是)") + private Integer hStatus = 0; + + @JsonIgnore + private String direction; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskGnssRHisVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskGnssRHisVo.java new file mode 100644 index 0000000..6350b0f --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskGnssRHisVo.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.common.model.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class JcskGnssRHisVo { + /** + * 水库编码设备编码 + */ + @TableField("res_cd") + private String resCd; + + /** + * 测点编码 + */ + @TableField("cd") + private String cd; + + @TableField(exist = false) + private String ch; + + /** + * e方向变形值,单位(mm) + */ + @TableField("de") + private BigDecimal de; + + /** + * n方向变形值,单位(mm) + */ + @TableField("dn") + private BigDecimal dn; + + /** + * u方向变形值,单位(mm) + */ + @TableField("du") + private BigDecimal du; + + /** + * 站点高程 + */ + @TableField("alt") + private BigDecimal alt; + + /** + * 监测时间 + */ + @TableField("tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date tm; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTm; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSlRHisVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSlRHisVo.java new file mode 100644 index 0000000..290458a --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSlRHisVo.java @@ -0,0 +1,79 @@ +package com.gunshi.project.ss.common.model.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class JcskSlRHisVo { + + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + @TableField(exist = false) + private String dm; + + @TableField(exist = false) + private String dvcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + + @TableField("stcd") + private String stcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date mstm; + + /** + * 温度,单位℃ + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流量,单位l/s + */ + @TableField("spqn") + private BigDecimal spqn; + + /** + * 标准水温渗流量,单位l/s + */ + @TableField("stspqn") + private BigDecimal stspqn; + + /** + * 创建时间 + */ + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTm; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSyRHisVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSyRHisVo.java new file mode 100644 index 0000000..78e1fb5 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSyRHisVo.java @@ -0,0 +1,77 @@ +package com.gunshi.project.ss.common.model.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class JcskSyRHisVo { + + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * 测站编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime mstm; + + /** + * 温度 + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流压力水位,单位m + */ + @TableField("spprwl") + private BigDecimal spprwl; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTm; + + @TableField(exist = false) + @Schema(description = "断面编码") + private String dm; + + + @TableField(exist = false) + @Schema(description = "断面名称") + private String dmName; + + + @TableField(exist = false) + @Schema(description = "dvcd") + private String dvcd; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSyRVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSyRVo.java new file mode 100644 index 0000000..834b368 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/JcskSyRVo.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.common.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class JcskSyRVo { + @Schema(description="测点编码") + private String stationCode; + + @Schema(description = "断面名称") + private String profileName; + + @Schema(description="监测时间") + private String tm; + + @Schema(description="监测值") + private BigDecimal value; + + @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") + private Integer flag = 0; + + @Schema(description = "是否超过预警(0否 1是)") + private Integer status = 0; + + @Schema(description = "0 离线 1在线") + private Integer onoffStauts; + + private BigDecimal lgtd; + + private BigDecimal lttd; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticChartDetailVo2.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticChartDetailVo2.java new file mode 100644 index 0000000..3d45a8d --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticChartDetailVo2.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.common.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OsmoticChartDetailVo2 { + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + + /** + * 管水位 + */ + @Schema(description="管水位") + private BigDecimal value; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticPressDetailVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticPressDetailVo.java new file mode 100644 index 0000000..1b51582 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticPressDetailVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.common.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Description: + * Created by wanyan on 2024/7/9 + * + * @author wanyan + * @version 1.0 + */ + @Data + public class OsmoticPressDetailVo { + + + @Schema(description="监测时间") + private String tm; + + @Schema(description="监测值") + private BigDecimal value; + + @Schema(description="库水位") + private BigDecimal rz; + + } diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticShiftListVo2.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticShiftListVo2.java new file mode 100644 index 0000000..4b02680 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticShiftListVo2.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.common.model.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OsmoticShiftListVo2 { + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String cd; + + private String cdNm; + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") + private Integer flag = 0; + + /** + * x方向 + */ + @Schema(description="x方向") + private BigDecimal de; + + @Schema(description = "x方向是否超过预警(0否 1是)") + private Integer xStatus = 0; + + /** + * y方向 + */ + @Schema(description="y方向") + private BigDecimal dn; + + @Schema(description = "y方向是否超过预警(0否 1是)") + private Integer yStatus = 0; + + /** + * h方向 + */ + @Schema(description="h方向") + private BigDecimal du; + + @Schema(description = "h方向是否超过预警(0否 1是)") + private Integer hStatus = 0; + + @JsonIgnore + private String direction; + + + private BigDecimal lttd; + + private BigDecimal lgtd; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticShiftValueVo2.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticShiftValueVo2.java new file mode 100644 index 0000000..ac13374 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticShiftValueVo2.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.common.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OsmoticShiftValueVo2 { + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String cd; + + /** + * x方向 + */ + @Schema(description="e ->x方向") + private BigDecimal de; + + /** + * y方向 + */ + @Schema(description=" n ->y方向") + private BigDecimal dn; + + /** + * h方向 + */ + @Schema(description="u ->h方向") + private BigDecimal du; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + + + @Schema(description = "是否人工") + private Integer isArtificial; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticValueVo2.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticValueVo2.java new file mode 100644 index 0000000..143a108 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/OsmoticValueVo2.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.common.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OsmoticValueVo2 { + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String stationCode; + + /** + * 管水位 + */ + @Schema(description="管水位") + private BigDecimal value; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + + @Schema(description = "结果分析(0异常 1正常)") + private Integer status = 1; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/StRzVo.java b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/StRzVo.java new file mode 100644 index 0000000..259699e --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/model/vo/StRzVo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.common.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 水库水情 + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class StRzVo { + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/util/LocalDateTimeConverter.java b/module-common/src/main/java/com/gunshi/project/ss/common/util/LocalDateTimeConverter.java new file mode 100644 index 0000000..cfcafb8 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/util/LocalDateTimeConverter.java @@ -0,0 +1,19 @@ +package com.gunshi.project.ss.common.util; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; + +/** + * @author lyf + * @since 2025-11-06 + */ +public class LocalDateTimeConverter { + public static Date toDate(LocalDateTime localDateTime) { + return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } + + public static LocalDateTime fromDate(Date date) { + return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); + } +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Delete.java b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Delete.java new file mode 100644 index 0000000..57b8b34 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Delete.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.common.validate.markers; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-23 + */ +public interface Delete { +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Insert.java b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Insert.java new file mode 100644 index 0000000..d0772f6 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Insert.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.common.validate.markers; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-23 + */ +public interface Insert { +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Query.java b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Query.java new file mode 100644 index 0000000..2b81f4a --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Query.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.common.validate.markers; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-23 + */ +public interface Query { +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/QueryPage.java b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/QueryPage.java new file mode 100644 index 0000000..4a5158f --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/QueryPage.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.common.validate.markers; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-24 + */ +public interface QueryPage { +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/QueryTimeRange.java b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/QueryTimeRange.java new file mode 100644 index 0000000..06d8e64 --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/QueryTimeRange.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.common.validate.markers; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-24 + */ +public interface QueryTimeRange { +} diff --git a/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Update.java b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Update.java new file mode 100644 index 0000000..40bc19d --- /dev/null +++ b/module-common/src/main/java/com/gunshi/project/ss/common/validate/markers/Update.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.common.validate.markers; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-23 + */ +public interface Update { +} diff --git a/module-common/src/main/resources/mapper/StPptnRMapper.xml b/module-common/src/main/resources/mapper/StPptnRMapper.xml index ff0fe8f..f15a47f 100644 --- a/module-common/src/main/resources/mapper/StPptnRMapper.xml +++ b/module-common/src/main/resources/mapper/StPptnRMapper.xml @@ -2,7 +2,7 @@ - SELECT stb.stcd, r.tm stm, stb.source, @@ -14,7 +14,7 @@ WHERE stb.source in ('QX', 'SW', 'SH', 'SHYLRES') - SELECT stb.stcd, r.tm etm, stb.source, diff --git a/module-common/src/main/resources/mapper/StRsvrRMapper.xml b/module-common/src/main/resources/mapper/StRsvrRMapper.xml index 6aaae54..1d1c60a 100644 --- a/module-common/src/main/resources/mapper/StRsvrRMapper.xml +++ b/module-common/src/main/resources/mapper/StRsvrRMapper.xml @@ -2,7 +2,7 @@ - SELECT stb.stcd, case UPPER(stb.sttp) when 'RR' then r.tm when 'ZZ' then r2.tm end stm, stb.source, @@ -16,7 +16,7 @@ WHERE subquery2.rn = 1) r2 ON stb.stcd = r2.stcd WHERE stb.source in ('SW', 'SH', 'SHYLRES') - SELECT stb.stcd, case UPPER(stb.sttp) when 'RR' then r.tm when 'ZZ' then r2.tm end etm, stb.source, diff --git a/pom.xml b/pom.xml index cff0836..329d151 100644 --- a/pom.xml +++ b/pom.xml @@ -154,7 +154,7 @@ true lib/ - com.gunshi.project.hsz.Main + com.gunshi.project.ss.Main diff --git a/service-datasync/pom.xml b/service-datasync/pom.xml index 6484e65..d351c05 100644 --- a/service-datasync/pom.xml +++ b/service-datasync/pom.xml @@ -56,7 +56,7 @@ true lib/ - com.gunshi.project.hsz.datasync.Main + com.gunshi.project.ss.datasync.Main diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/Main.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/Main.java deleted file mode 100644 index 152aa40..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/Main.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.datasync; - -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableScheduling; - -/** - * 应用程序入口类 - */ -@SpringBootApplication -@EnableScheduling -@MapperScan({ - "com.gunshi.project.hsz.datasync.flow.**.datasource", - "com.gunshi.project.hsz.datasync.gnss.**.datasource", - "com.gunshi.project.hsz.datasync.rainfall.**.datasource", - "com.gunshi.project.hsz.datasync.seepage.**.datasource", - "com.gunshi.project.hsz.datasync.waterLevel.**.datasource", - "com.gunshi.**.mapper" -}) -public class Main { - - public static void main(String[] args) { - SpringApplication.run(Main.class, args); - } -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/SyncTableRService.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/SyncTableRService.java deleted file mode 100644 index 039e2e5..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/SyncTableRService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.datasync; - -import org.springframework.lang.NonNull; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * 数据同步服务接口 - */ -public interface SyncTableRService { - - int syncData(); - - @NonNull - TargetEntity getLatestTargetEntity(TargetEntity targetParams); - - List getSourceEntityListByLatestTargetEntity(@NonNull TargetEntity targetEntity); - - int saveToTarget(List sourceEntityList); - - default LocalDateTime calculateEtm(LocalDateTime stm) { - LocalDateTime etm = LocalDateTime.now(); - if (etm.isAfter(stm.plusDays(30))) { - etm = stm.plusDays(30); - } - return etm; - } - -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/config/SyncTaskScheduler.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/config/SyncTaskScheduler.java deleted file mode 100644 index 21a2740..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/config/SyncTaskScheduler.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.gunshi.project.hsz.datasync.config; - -import com.gunshi.project.hsz.datasync.gnss.SyncGnssRService; -import com.gunshi.project.hsz.datasync.seepage.SyncSlRService; -import com.gunshi.project.hsz.datasync.seepage.SyncSyRService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; - -import java.util.concurrent.Executor; - -@Configuration -@EnableScheduling -@Slf4j -public class SyncTaskScheduler implements ApplicationRunner { - - @Autowired - private SyncGnssRService syncGnssRService; - - @Autowired - private SyncSlRService syncSlRService; - - @Autowired - private SyncSyRService syncSyRService; - - private boolean isApplicationReady = false; - - // 任务执行状态标志,确保每个任务串行执行 - private volatile boolean isSyncByRRunning = false; - private volatile boolean isSyncGnssRRunning = false; - private volatile boolean isSyncSlRRunning = false; - private volatile boolean isSyncSyRRunning = false; - - /** - * 配置定时任务线程池,确保并行执行 - */ - public Executor taskScheduler() { - ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); - scheduler.setPoolSize(4); // 4个线程,每个服务一个 - scheduler.setThreadNamePrefix("SyncTask-"); - scheduler.initialize(); - return scheduler; - } - - /** - * 在应用启动完成后设置标志 - */ - @Override - public void run(ApplicationArguments args) { - isApplicationReady = true; - log.info("应用初始化完成,定时任务将在下次调度时开始执行"); - } - - /** - * 位移数据同步任务 - 每15分钟执行一次 - * 确保上一次执行完毕后才会再次执行 - */ - @Scheduled(cron = "0 */15 * * * ?") - public void scheduleSyncGnssR() { - if (!isApplicationReady) { - return; - } - - // 检查任务是否正在运行,如果是则跳过本次执行 - if (isSyncGnssRRunning) { - log.info("位移数据同步任务正在执行中,跳过本次调度"); - return; - } - - try { - isSyncGnssRRunning = true; // 标记任务开始执行 - log.info("开始执行位移数据同步任务"); - syncGnssRService.syncData(); - log.info("位移数据同步任务执行完成"); - } catch (Exception e) { - log.error("位移数据同步任务执行异常", e); - } finally { - isSyncGnssRRunning = false; // 无论成功失败,都标记任务执行完毕 - } - } - - /** - * 渗流量数据同步任务 - 每15分钟执行一次 - * 确保上一次执行完毕后才会再次执行 - */ - @Scheduled(cron = "0 */15 * * * ?") - public void scheduleSyncSlR() { - if (!isApplicationReady) { - return; - } - - // 检查任务是否正在运行,如果是则跳过本次执行 - if (isSyncSlRRunning) { - log.info("渗流量数据同步任务正在执行中,跳过本次调度"); - return; - } - - try { - isSyncSlRRunning = true; // 标记任务开始执行 - log.info("开始执行渗流量数据同步任务"); - syncSlRService.syncData(); - log.info("渗流量数据同步任务执行完成"); - } catch (Exception e) { - log.error("渗流量数据同步任务执行异常", e); - } finally { - isSyncSlRRunning = false; // 无论成功失败,都标记任务执行完毕 - } - } - - /** - * 渗压数据同步任务 - 每15分钟执行一次 - * 确保上一次执行完毕后才会再次执行 - */ - @Scheduled(cron = "0 */15 * * * ?") - public void scheduleSyncSyR() { - if (!isApplicationReady) { - return; - } - - // 检查任务是否正在运行,如果是则跳过本次执行 - if (isSyncSyRRunning) { - log.info("渗压数据同步任务正在执行中,跳过本次调度"); - return; - } - - try { - isSyncSyRRunning = true; // 标记任务开始执行 - log.info("开始执行渗压数据同步任务"); - syncSyRService.syncData(); - log.info("渗压数据同步任务执行完成"); - } catch (Exception e) { - log.error("渗压数据同步任务执行异常", e); - } finally { - isSyncSyRRunning = false; // 无论成功失败,都标记任务执行完毕 - } - } -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/SyncFlowService.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/SyncFlowService.java deleted file mode 100644 index 008101f..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/SyncFlowService.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.gunshi.project.hsz.datasync.flow; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.mapper.StFlowRMapper; -import com.gunshi.project.hsz.common.model.StFlowR; -import com.gunshi.project.hsz.common.model.StStbprpBElem; -import com.gunshi.project.hsz.datasync.flow.datasource.JcskStFlowR; -import com.gunshi.project.hsz.common.mapper.StStbprpBElemMapper; -import com.gunshi.project.hsz.datasync.flow.datasource.JcskStFlowRMapper; -import com.gunshi.project.hsz.datasync.SyncTableRService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.lang.NonNull; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * @author lyf - * @since 2025-10-16 - */ -@Slf4j -@Service -public class SyncFlowService implements SyncTableRService { - @Autowired - private JcskStFlowRMapper jcskStFlowRMapper; - - @Autowired - private StFlowRMapper stFlowRMapper; - - @Autowired - private StStbprpBElemMapper stbprpMapper; - - @Scheduled(cron = "0 */15 * * * ?") - @Override - public int syncData() { - log.info("开始同步流量数据"); - // 获取所有流量要素的站点 - List stbprps = stbprpMapper.selectByElem("flow"); - - int cnt = 0; - for (StStbprpBElem StStbprpBElem : stbprps) { - StFlowR targetParams = new StFlowR(); - targetParams.setStcd(StStbprpBElem.getStcd()); - - StFlowR latestTarget = getLatestTargetEntity(targetParams); - List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); - cnt += saveToTarget(sourceEntityList); - } - log.info("完成同步流量数据 {} {}", stbprps, cnt); - return cnt; - } - - @NonNull - @Override - public StFlowR getLatestTargetEntity(StFlowR targetParams) { - String stcd = targetParams.getStcd(); - - StFlowR target = stFlowRMapper.selectOne( - new LambdaQueryWrapper() - .eq(StFlowR::getStcd, stcd) - .orderByDesc(StFlowR::getId) - .last("limit 1") - ); - - if (target == null) { - target = new StFlowR(); - target.setStcd(stcd); - //流量有主键自增id,所以不用时间比较 - target.setId(0); - } - - return target; - } - - @Override - public List getSourceEntityListByLatestTargetEntity(@NonNull StFlowR targetEntity) { - String stcd = targetEntity.getStcd(); - Integer id = targetEntity.getId(); - return jcskStFlowRMapper.selectList( - new LambdaQueryWrapper() - .gt(JcskStFlowR::getId, id) - .eq(JcskStFlowR::getStcd, stcd) - ); - } - - @Override - public int saveToTarget(List sourceEntityList) { - int count = 0; - for (JcskStFlowR sourceEntity : sourceEntityList) { - Integer id = sourceEntity.getId(); - StFlowR existingTarget = stFlowRMapper.selectById(id); - - if (existingTarget == null) { - StFlowR targetEntity = new StFlowR(); - BeanUtils.copyProperties(sourceEntity, targetEntity); - targetEntity.setCrtime(LocalDateTime.now()); - stFlowRMapper.insert(targetEntity); - } - count++; - } - return count; - } -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/datasource/JcskStFlowR.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/datasource/JcskStFlowR.java deleted file mode 100644 index 7971373..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/datasource/JcskStFlowR.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gunshi.project.hsz.datasync.flow.datasource; - -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 com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * @author lyf - * @since 2025-10-16 - */ -@Data -@TableName("SJZT_ODS.\"st_flow_r\"") -@IgnoreAutoMapperAndDao -public class JcskStFlowR { - - /** - * 主键id - */ - @TableId(value = "\"id\"", type = IdType.NONE) - private Integer id; - - /** - * 测站编码 - */ - @TableField("\"stcd\"") - private String stcd; - - /** - * 观测时间 - */ - @TableField("\"tm\"") - private LocalDateTime tm; - - /** - * 入库流量,单位m³/s - */ - @TableField("\"inq\"") - private BigDecimal inq; - - /** - * 瞬时流量,单位m³/s - */ - @TableField("\"q\"") - private BigDecimal q; - - /** - * 出库流量,单位m³/s - */ - @TableField("\"otq\"") - private BigDecimal otq; - - -} diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/datasource/JcskStFlowRMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/datasource/JcskStFlowRMapper.java deleted file mode 100644 index 55c8a40..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/flow/datasource/JcskStFlowRMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.datasync.flow.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * @author lyf - * @since 2025-10-16 - */ -@DS("jcsk") -@Mapper -public interface JcskStFlowRMapper extends BaseMapper { -} diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/SyncGnssRService.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/SyncGnssRService.java deleted file mode 100644 index 3f62ad4..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/SyncGnssRService.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.gunshi.project.hsz.datasync.gnss; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.model.JcskGnssB; -import com.gunshi.project.hsz.common.model.JcskGnssR; -import com.gunshi.project.hsz.datasync.gnss.datasource.AttMqttCalcData; -import com.gunshi.project.hsz.common.mapper.JcskGnssBMapper; -import com.gunshi.project.hsz.common.mapper.JcskGnssRMapper; -import com.gunshi.project.hsz.datasync.gnss.datasource.AttMqttCalcDataNormalMapper; -import com.gunshi.project.hsz.datasync.SyncTableRService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.lang.NonNull; -import org.springframework.stereotype.Service; - -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.util.List; - -/** - * @author lyf - * @since 2025-08-22 - */ -@Service -@Slf4j -public class SyncGnssRService implements SyncTableRService { - - @Autowired - private AttMqttCalcDataNormalMapper sourceMapper; - - @Autowired - private JcskGnssBMapper targetBMapper; - - @Autowired - private JcskGnssRMapper targetMapper; - - @Override - public int syncData() { - List targetBList = targetBMapper.selectList(null); - - int cnt = 0; - for (JcskGnssB targetB : targetBList) { - JcskGnssR targetParams = new JcskGnssR(); - targetParams.setResCd(targetB.getResCd()); - targetParams.setCd(targetB.getCd()); - - JcskGnssR latestTarget = getLatestTargetEntity(targetParams); - List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); - cnt += saveToTarget(sourceEntityList); - } - return cnt; - } - - @NonNull - @Override - public JcskGnssR getLatestTargetEntity(JcskGnssR targetParams) { - String resCd = targetParams.getResCd(); - String cd = targetParams.getCd(); - - JcskGnssR target = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(JcskGnssR::getResCd, resCd) - .eq(JcskGnssR::getCd, cd) - .orderByDesc(JcskGnssR::getTm) - .last("limit 1") - ); - - if (target == null) { - target = new JcskGnssR(); - target.setResCd(resCd); - target.setCd(cd); - //数据源最早的数据时间 - target.setTm(LocalDateTime.of(2025, 9, 15, 18, 30, 0)); - } - - return target; - } - - @Override - public List getSourceEntityListByLatestTargetEntity(@NonNull JcskGnssR targetEntity) { - String resCd = targetEntity.getResCd(); - String cd = targetEntity.getCd(); - LocalDateTime stm = targetEntity.getTm(); - LocalDateTime etm = calculateEtm(stm); - - Long stmMillis = stm.toInstant(ZoneOffset.of("+8")).toEpochMilli(); - Long etmMillis = etm.toInstant(ZoneOffset.of("+8")).toEpochMilli(); -// log.info("开始同步 位移 {} {} {} {}", resCd, cd, stm, etm); - return sourceMapper.selectList( - new LambdaQueryWrapper() - .eq(AttMqttCalcData::getStationCode, resCd+cd) - .gt(AttMqttCalcData::getCalcTime, stmMillis) - .le(AttMqttCalcData::getCalcTime, etmMillis) - ); - } - - @Override - public int saveToTarget(List sourceEntityList) { - int count = 0; - for (AttMqttCalcData sourceEntity : sourceEntityList) { - LocalDateTime tm = LocalDateTime.ofInstant( - Instant.ofEpochMilli(sourceEntity.getCalcTime()), ZoneOffset.of("+8") - ); - String stationCode = sourceEntity.getStationCode(); - String resCd = stationCode.substring(0, 11); - String cd = stationCode.substring(11); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(JcskGnssR::getResCd, resCd) - .eq(JcskGnssR::getCd, cd) - .eq(JcskGnssR::getTm, tm) - .last("limit 1"); - JcskGnssR existingTarget = targetMapper.selectOne(queryWrapper); - - if (existingTarget == null) { - JcskGnssR targetEntity = new JcskGnssR(); - BeanUtils.copyProperties(sourceEntity, targetEntity); - targetEntity.setResCd(resCd); - targetEntity.setCd(cd); - targetEntity.setTm(tm); - targetEntity.setUpdateTm(LocalDateTime.now()); - targetMapper.insert(targetEntity); - } - count++; - } - return count; - } -} diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttMqttCalcData.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttMqttCalcData.java deleted file mode 100644 index cdb4b24..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttMqttCalcData.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.datasync.gnss.datasource; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.model.JcskGnssR; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 位移数据表(数据源表) - * 对应数据库表:SJZT_MD.att_mqtt_calc_data_normal - * 数据来源:该表数据同步至jcsk_gnss_r表 - * @see AttWyCdBase - * @see JcskGnssR - */ -@Data -@TableName("SJZT_MD.\"att_mqtt_calc_data\"") -@IgnoreAutoMapperAndDao -public class AttMqttCalcData { - /** - * 水库编码设备编码 - */ - @TableField("\"station_code\"") - private String stationCode; - - /** - * e方向变形值,单位(mm) - */ - @TableField("\"de\"") - private BigDecimal de; - - /** - * n方向变形值,单位(mm) - */ - @TableField("\"dn\"") - private BigDecimal dn; - - /** - * u方向变形值,单位(mm) - */ - @TableField("\"du\"") - private BigDecimal du; - - /** - * 站点高程 - */ - @TableField("\"alt\"") - private BigDecimal alt; - - /** - * 解算时间 - */ - @TableField("\"calc_time\"") - private Long calcTime; -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttMqttCalcDataNormalMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttMqttCalcDataNormalMapper.java deleted file mode 100644 index 5171a56..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttMqttCalcDataNormalMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.datasync.gnss.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * AttMqttCalcDataNormal的Mapper接口 - */ -@DS("jcsk") -@Mapper -public interface AttMqttCalcDataNormalMapper extends BaseMapper { - - // 可以在这里添加自定义的SQL方法 - -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttWyCdBase.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttWyCdBase.java deleted file mode 100644 index daf10f8..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttWyCdBase.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gunshi.project.hsz.datasync.gnss.datasource; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.model.JcskGnssB; -import lombok.Data; - -/** - * 位移设备表(数据源表) - * 对应数据库表:SJZT_MD.att_wy_cd_base - * 数据来源:该表数据同步至jcsk_gnss_b表 - * @see JcskGnssB - * @see AttMqttCalcData - */ -@Data -@TableName("SJZT_MD.\"att_wy_cd_base\"") -@IgnoreAutoMapperAndDao -public class AttWyCdBase { - /** - * 测点编码 - */ - @TableField("\"cd\"") - private String cd; - - /** - * 测点名称 - */ - @TableField("\"cd_nm\"") - private String cdNm; - - /** - * 桩号 - */ - @TableField("\"ch\"") - private String ch; - - /** - * 测点类型(sl/wy/sy) - */ - @TableField("\"cd_type\"") - private String cdType; - - /** - * 水库编码 - */ - @TableField("\"res_cd\"") - private String resCd; - - /** - * 设备状态 - */ - @TableField("\"device_status\"") - private String deviceStatus; -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttWyCdBaseMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttWyCdBaseMapper.java deleted file mode 100644 index d7b6fbb..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/gnss/datasource/AttWyCdBaseMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.datasync.gnss.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * AttWyCdBase的Mapper接口 - */ -@DS("jcsk") -@Mapper -public interface AttWyCdBaseMapper extends BaseMapper { - - // 可以在这里添加自定义的SQL方法 - -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/SyncRainfallService.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/SyncRainfallService.java deleted file mode 100644 index 25dbfac..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/SyncRainfallService.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.gunshi.project.hsz.datasync.rainfall; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.mapper.StPptnRMapper; -import com.gunshi.project.hsz.common.mapper.StPptnRRealMapper; -import com.gunshi.project.hsz.common.mapper.StStbprpBElemMapper; -import com.gunshi.project.hsz.common.model.StPptnR; -import com.gunshi.project.hsz.common.model.StStbprpBElem; -import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; -import com.gunshi.project.hsz.datasync.rainfall.datasource.JcskStPptnR; -import com.gunshi.project.hsz.datasync.rainfall.datasource.JcskStPptnRMapper; -import com.gunshi.project.hsz.datasync.SyncTableRService; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.lang.NonNull; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.ZoneOffset; -import java.util.Date; -import java.util.List; - -/** - * @author lyf - * @since 2025-10-20 - */ -@Service -public class SyncRainfallService implements SyncTableRService { - @Autowired - private JcskStPptnRMapper sourceMapper; - - @Autowired - private StPptnRRealMapper targetRealMapper; - - @Autowired - private StPptnRMapper targetMapper; - - @Autowired - private StStbprpBElemMapper stbprpMapper; - - @Scheduled(cron = "0 */5 * * * ?") - @Override - public int syncData() { - // 获取所有降雨要素的站点 - List stbprps = stbprpMapper.selectByElem("drp"); - - int cnt = 0; - for (StStbprpBElem StStbprpBElem : stbprps) { - StPptnR targetParams = new StPptnR(); - targetParams.setStcd(StStbprpBElem.getStcd()); - - StPptnR latestTarget = getLatestTargetEntity(targetParams); - List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); - cnt += saveToTarget(sourceEntityList); - } - return cnt; - } - - @NonNull - @Override - public StPptnR getLatestTargetEntity(StPptnR targetParams) { - String stcd = targetParams.getStcd(); - - StPptnR target = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(StPptnR::getStcd, stcd) - .orderByDesc(StPptnR::getTm) - .last("limit 1") - ); - - if (target == null) { - target = new StPptnR(); - target.setStcd(stcd); - - Date date = LocalDateTimeConverter.toDate(LocalDateTime.of(2025, 10, 20, 15, 0, 0)); - target.setTm(date); - } - - return target; - } - - @Override - public List getSourceEntityListByLatestTargetEntity(@NonNull StPptnR targetEntity) { - String stcd = targetEntity.getStcd(); - LocalDateTime tm = LocalDateTimeConverter.fromDate(targetEntity.getTm()); - return sourceMapper.selectList( - new LambdaQueryWrapper() - .gt(JcskStPptnR::getTm, tm) - .eq(JcskStPptnR::getStcd, stcd) - ); - } - - @Override - public int saveToTarget(List sourceEntityList) { - int count = 0; - for (JcskStPptnR sourceEntity : sourceEntityList) { - String stcd = sourceEntity.getStcd(); - LocalDateTime tm = sourceEntity.getTm(); - StPptnR existingTarget = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(StPptnR::getStcd, stcd) - .eq(StPptnR::getTm, tm) - ); - - if (existingTarget == null) { - StPptnR targetEntity = new StPptnR(); - BeanUtils.copyProperties(sourceEntity, targetEntity); - targetEntity.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); - targetEntity.setChtm(new Date()); - if(sourceEntity.getDrp() != null){ - targetEntity.setDrp(sourceEntity.getDrp().toString()); - } - targetMapper.insert(targetEntity); - } - count++; - } - - if (!sourceEntityList.isEmpty()) { - JcskStPptnR sourceEntity = sourceEntityList.getFirst(); - String stcd = sourceEntity.getStcd(); - targetRealMapper.updatePptnRReal(stcd); - } - return count; - } -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/datasource/JcskStPptnR.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/datasource/JcskStPptnR.java deleted file mode 100644 index 3023a67..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/datasource/JcskStPptnR.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gunshi.project.hsz.datasync.rainfall.datasource; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * @author lyf - * @since 2025-10-20 - */ -@Data -@TableName("SJZT_MD.\"st_pptn_r\"") -@IgnoreAutoMapperAndDao -public class JcskStPptnR { - /** - * 测站编码 - */ - @TableField("\"stcd\"") - private String stcd; - - /** - * 时段降水量 - */ - @TableField("\"drp\"") - private BigDecimal drp; - - /** - * 时间 - */ - @TableField("\"tm\"") - private LocalDateTime tm; - - /** - * 时段长 - */ - @TableField("\"intv\"") - private BigDecimal intv; - - /** - * 天气状况 - */ - @TableField("\"wth\"") - private String wth; -} diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/datasource/JcskStPptnRMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/datasource/JcskStPptnRMapper.java deleted file mode 100644 index 6561577..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/rainfall/datasource/JcskStPptnRMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.datasync.rainfall.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * @author lyf - * @since 2025-10-20 - */ -@DS("jcsk") -@Mapper -public interface JcskStPptnRMapper extends BaseMapper { -} diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/SyncSlRService.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/SyncSlRService.java deleted file mode 100644 index 705a358..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/SyncSlRService.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.model.JcskSlB; -import com.gunshi.project.hsz.common.model.JcskSlR; -import com.gunshi.project.hsz.datasync.seepage.datasource.DsmSpgSpqn; -import com.gunshi.project.hsz.common.mapper.JcskSlBMapper; -import com.gunshi.project.hsz.common.mapper.JcskSlRMapper; -import com.gunshi.project.hsz.datasync.seepage.datasource.DsmSpgSpqnMapper; -import com.gunshi.project.hsz.datasync.SyncTableRService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.lang.NonNull; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * @author lyf - * @since 2025-08-22 - */ -@Service -@Slf4j -public class SyncSlRService implements SyncTableRService { - - @Autowired - private DsmSpgSpqnMapper sourceMapper; - - @Autowired - private JcskSlBMapper targetBMapper; - - @Autowired - private JcskSlRMapper targetMapper; - - @Override - public int syncData() { - List targetBList = targetBMapper.selectList(null); - - int cnt = 0; - for (JcskSlB targetB : targetBList) { - JcskSlR targetParams = new JcskSlR(); - targetParams.setRscd(targetB.getRscd()); - targetParams.setMpcd(targetB.getMpcd()); - - JcskSlR latestTarget = getLatestTargetEntity(targetParams); - List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); - cnt += saveToTarget(sourceEntityList); - } - return cnt; - } - - @NonNull - @Override - public JcskSlR getLatestTargetEntity(JcskSlR targetParams) { - String resCd = targetParams.getRscd(); - String mpcd = targetParams.getMpcd(); - - JcskSlR target = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(JcskSlR::getRscd, resCd) - .eq(JcskSlR::getMpcd, mpcd) - .orderByDesc(JcskSlR::getMstm) - .last("limit 1") - ); - - if (target == null) { - target = new JcskSlR(); - target.setRscd(resCd); - target.setMpcd(mpcd); - //数据源最早的数据时间 - target.setMstm(LocalDateTime.of(2025, 8, 1, 0, 0, 0)); - } - - return target; - } - - @Override - public List getSourceEntityListByLatestTargetEntity(@NonNull JcskSlR targetEntity) { - String rscd = targetEntity.getRscd(); - String mpcd = targetEntity.getMpcd(); - LocalDateTime stm = targetEntity.getMstm(); - LocalDateTime etm = calculateEtm(stm); - - // 修复数据类型不匹配问题:使用mstm(LocalDateTime)字段进行时间比较,而不是tm(BigDecimal)字段 - return sourceMapper.selectList( - new LambdaQueryWrapper() - .eq(DsmSpgSpqn::getRscd, rscd) - .eq(DsmSpgSpqn::getMpcd, mpcd) - .gt(DsmSpgSpqn::getMstm, stm) - .le(DsmSpgSpqn::getMstm, etm) - ); - } - - @Override - public int saveToTarget(List sourceEntityList) { - int count = 0; - for (DsmSpgSpqn sourceEntity : sourceEntityList) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(JcskSlR::getRscd, sourceEntity.getRscd()) - .eq(JcskSlR::getMpcd, sourceEntity.getMpcd()) - .eq(JcskSlR::getMstm, sourceEntity.getMstm()) - .last("limit 1"); - JcskSlR existingTarget = targetMapper.selectOne(queryWrapper); - - if (existingTarget == null) { - JcskSlR targetEntity = new JcskSlR(); - BeanUtils.copyProperties(sourceEntity, targetEntity); - targetMapper.insert(targetEntity); - } - count++; - } - return count; - } -} diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/SyncSyRService.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/SyncSyRService.java deleted file mode 100644 index 2b5e4ed..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/SyncSyRService.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.model.JcskSyB; -import com.gunshi.project.hsz.common.model.JcskSyR; -import com.gunshi.project.hsz.datasync.seepage.datasource.DsmSpgSppr; -import com.gunshi.project.hsz.common.mapper.JcskSyBMapper; -import com.gunshi.project.hsz.common.mapper.JcskSyRMapper; -import com.gunshi.project.hsz.datasync.seepage.datasource.DsmSpgSpprMapper; -import com.gunshi.project.hsz.datasync.SyncTableRService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.lang.NonNull; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.List; - -@Service -@Slf4j -public class SyncSyRService implements SyncTableRService { - - @Autowired - private DsmSpgSpprMapper sourceMapper; - - @Autowired - private JcskSyBMapper targetBMapper; - - @Autowired - private JcskSyRMapper targetMapper; - - @Override - public int syncData() { - List targetBList = targetBMapper.selectList(null); - - int cnt = 0; - for (JcskSyB targetB : targetBList) { - JcskSyR targetParams = new JcskSyR(); - targetParams.setRscd(targetB.getRscd()); - targetParams.setStcd(targetB.getStcd()); - targetParams.setMpcd(targetB.getMpcd()); - - JcskSyR latestTarget = getLatestTargetEntity(targetParams); - List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); - cnt += saveToTarget(sourceEntityList); - } - return cnt; - } - - @NonNull - @Override - public JcskSyR getLatestTargetEntity(JcskSyR targetParams) { - String resCd = targetParams.getRscd(); - String mpcd = targetParams.getMpcd(); - String stcd = targetParams.getStcd(); - - JcskSyR target = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(JcskSyR::getRscd, resCd) - .eq(JcskSyR::getMpcd, mpcd) - .eq(JcskSyR::getStcd, stcd) - .orderByDesc(JcskSyR::getMstm) - .last("limit 1") - ); - - if (target == null) { - target = new JcskSyR(); - target.setRscd(resCd); - target.setMpcd(mpcd); - target.setStcd(stcd); - target.setMstm(LocalDateTime.of(2025, 9, 1, 16, 30, 0)); - } - - return target; - } - - @Override - public List getSourceEntityListByLatestTargetEntity(@NonNull JcskSyR targetEntity) { - String rscd = targetEntity.getRscd(); - String mpcd = targetEntity.getMpcd(); - String stcd = targetEntity.getStcd(); - LocalDateTime stm = targetEntity.getMstm(); - LocalDateTime etm = calculateEtm(stm); - - return sourceMapper.selectList( - new LambdaQueryWrapper() - .eq(DsmSpgSppr::getRscd, rscd) - .eq(DsmSpgSppr::getMpcd, mpcd) - .eq(DsmSpgSppr::getStcd, stcd) - .gt(DsmSpgSppr::getMstm, stm) - .le(DsmSpgSppr::getMstm, etm) - ); - } - - @Override - public int saveToTarget(List sourceEntityList) { - LocalDateTime now = LocalDateTime.now(); - int count = 0; - for (DsmSpgSppr sourceEntity : sourceEntityList) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(JcskSyR::getRscd, sourceEntity.getRscd()) - .eq(JcskSyR::getMpcd, sourceEntity.getMpcd()) - .eq(JcskSyR::getStcd, sourceEntity.getStcd()) - .eq(JcskSyR::getMstm, sourceEntity.getMstm()) - .last("limit 1"); - JcskSyR existingTarget = targetMapper.selectOne(queryWrapper); - - if (existingTarget == null) { - JcskSyR targetEntity = new JcskSyR(); - BeanUtils.copyProperties(sourceEntity, targetEntity); - targetEntity.setUpdateTm(now); - targetMapper.insert(targetEntity); - count++; - } - } - return count; - } -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSppr.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSppr.java deleted file mode 100644 index 18beaa7..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSppr.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage.datasource; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.model.JcskSyR; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * 渗压数据表(数据源表) - * 对应数据库表:SJZT_ODS.dsm_spg_sppr_normal - * 数据来源:该表数据同步至jcsk_sy_r表 - * @see DsmSpgSpprmp - * @see JcskSyR - */ -@Data -@TableName("SJZT_ODS.\"dsm_spg_sppr\"") -@IgnoreAutoMapperAndDao -public class DsmSpgSppr { - /** - * 水库代码 - */ - @TableField("\"rscd\"") - private String rscd; - - /** - * rtu编码 - */ - @TableField("\"stcd\"") - private String stcd; - - /** - * 水工建筑物编号 - */ - @TableField("\"hycncd\"") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("\"mpcd\"") - private String mpcd; - - /** - * 测量时间 - */ - @TableField("\"mstm\"") - private LocalDateTime mstm; - - /** - * 温度 - */ - @TableField("\"tm\"") - private BigDecimal tm; - - /** - * 渗流压力水位,单位m - */ - @TableField("\"spprwl\"") - private BigDecimal spprwl; - -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprMapper.java deleted file mode 100644 index 2313fc4..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * DsmSpgSpprNormal的Mapper接口 - */ -@DS("jcsk") -@Mapper -public interface DsmSpgSpprMapper extends BaseMapper { -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprmp.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprmp.java deleted file mode 100644 index 342a533..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprmp.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage.datasource; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.model.JcskSyB; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.LocalDateTime; - -/** - * 渗压测点表(数据源表) - * 对应数据库表:SJZT_ODS.dsm_spg_spprmp - * 数据来源:该表数据同步至jcsk_sy_b表 - * @see JcskSyB - * @see DsmSpgSppr - */ -@Data -@TableName("SJZT_ODS.\"dsm_spg_spprmp\"") -@IgnoreAutoMapperAndDao -public class DsmSpgSpprmp { - /** - * 水库代码 - */ - @TableField("\"rscd\"") - private String rscd; - - /** - * rtu编码 - */ - @TableField("\"stcd\"") - private String stcd; - - /** - * 水工建筑物编号 - */ - @TableField("\"hycncd\"") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("\"mpcd\"") - private String mpcd; - - /** - * 桩号 - */ - @TableField("\"ch\"") - private String ch; - - /** - * 轴距,单位m - */ - @TableField("\"ofax\"") - private BigDecimal ofax; - - /** - * 高程,单位m - */ - @TableField("\"el\"") - private BigDecimal el; - - /** - * 监测类型 - */ - @TableField("\"msps\"") - private String msps; - - /** - * 透水段底高程,单位m - */ - @TableField("\"pmbtel\"") - private BigDecimal pmbtel; - - /** - * 透水段顶高程,单位m - */ - @TableField("\"pmtpel\"") - private BigDecimal pmtpel; - - /** - * 坝面高程 - */ - @TableField("\"dsel\"") - private BigDecimal dsel; - - /** - * 安装日期 - */ - @TableField("\"indt\"") - private LocalDate indt; - - /** - * 仪器编号 - */ - @TableField("\"dvcd\"") - private String dvcd; - - /** - * 经度 - */ - @TableField("\"lgtd\"") - private BigDecimal lgtd; - - /** - * 纬度 - */ - @TableField("\"lttd\"") - private BigDecimal lttd; - - /** - * 备注 - */ - @TableField("\"rm\"") - private String rm; - - /** - * 资料更新时间 - */ - @TableField("\"dtuptm\"") - private LocalDateTime dtuptm; - - /** - * 断面 - */ - @TableField("\"dm\"") - private String dm; - - /** - * 是否填报 - */ - @TableField("\"is_tb\"") - private String isTb; -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprmpMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprmpMapper.java deleted file mode 100644 index bea586d..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpprmpMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * DsmSpgSpprmp的Mapper接口 - */ -@DS("jcsk") -@Mapper -public interface DsmSpgSpprmpMapper extends BaseMapper { - - // 可以在这里添加自定义的SQL方法 - -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqn.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqn.java deleted file mode 100644 index 9642f38..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqn.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage.datasource; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.model.JcskSlR; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * 渗流数据表(数据源表) - * 对应数据库表:SJZT_ODS.dsm_spg_spqn_normal - * 数据来源:该表数据同步至jcsk_sl_r表 - * @see DsmSpgSpqnmp - * @see JcskSlR - */ -@Data -@TableName("SJZT_ODS.\"dsm_spg_spqn\"") -@IgnoreAutoMapperAndDao -public class DsmSpgSpqn { - /** - * 水库代码 - */ - @TableField("\"rscd\"") - private String rscd; - - - /** - * 水工建筑物编号 - */ - @TableField("\"hycncd\"") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("\"mpcd\"") - private String mpcd; - - /** - * 测量时间 - */ - @TableField("\"mstm\"") - private LocalDateTime mstm; - - /** - * 温度,单位℃ - */ - @TableField("\"tm\"") - private BigDecimal tm; - - /** - * 渗流量,单位l/s - */ - @TableField("\"spqn\"") - private BigDecimal spqn; - - /** - * 标准水温渗流量,单位l/s - */ - @TableField("\"stspqn\"") - private BigDecimal stspqn; - -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnMapper.java deleted file mode 100644 index 6824565..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * DsmSpgSpqnNormal的Mapper接口 - */ -@DS("jcsk") -@Mapper -public interface DsmSpgSpqnMapper extends BaseMapper { - - // 可以在这里添加自定义的SQL方法 - -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnmp.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnmp.java deleted file mode 100644 index 6258770..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnmp.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage.datasource; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import com.gunshi.project.hsz.common.model.JcskSlB; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.LocalDateTime; - -/** - * 渗流测点表(数据源表) - * 对应数据库表:SJZT_ODS.dsm_spg_spqnmp - * 数据来源:该表数据同步至jcsk_sl_b表 - * @see DsmSpgSpqn - * @see JcskSlB - */ -@Data -@TableName("SJZT_ODS.\"dsm_spg_spqnmp\"") -@IgnoreAutoMapperAndDao -public class DsmSpgSpqnmp { - /** - * 水库代码 - */ - @TableField("\"rscd\"") - private String rscd; - - /** - * 水工建筑物编号 - */ - @TableField("\"hycncd\"") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("\"mpcd\"") - private String mpcd; - - /** - * rtu编号 - */ - @TableField("\"stcd\"") - private String stcd; - - /** - * 桩号 - */ - @TableField("\"ch\"") - private String ch; - - /** - * 轴距,单位m - */ - @TableField("\"ofax\"") - private BigDecimal ofax; - - /** - * 高程,单位m - */ - @TableField("\"el\"") - private BigDecimal el; - - /** - * 安装日期 - */ - @TableField("\"indt\"") - private LocalDate indt; - - /** - * 仪器编号 - */ - @TableField("\"dvcd\"") - private String dvcd; - - /** - * 经度 - */ - @TableField("\"lgtd\"") - private BigDecimal lgtd; - - /** - * 纬度 - */ - @TableField("\"lttd\"") - private BigDecimal lttd; - - /** - * 备注 - */ - @TableField("\"rm\"") - private String rm; - - /** - * 资料更新时间 - */ - @TableField("\"dtuptm\"") - private LocalDateTime dtuptm; - - /** - * 断面 - */ - @TableField("\"dm\"") - private String dm; - - /** - * 是否填报 - */ - @TableField("\"is_tb\"") - private String isTb; -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnmpMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnmpMapper.java deleted file mode 100644 index 1e99193..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/seepage/datasource/DsmSpgSpqnmpMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.datasync.seepage.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * DsmSpgSpqnmp的Mapper接口 - */ -@DS("jcsk") -@Mapper -public interface DsmSpgSpqnmpMapper extends BaseMapper { - - // 可以在这里添加自定义的SQL方法 - -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/SyncRiverWaterLevelService.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/SyncRiverWaterLevelService.java deleted file mode 100644 index 6008b02..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/SyncRiverWaterLevelService.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.gunshi.project.hsz.datasync.waterLevel; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.mapper.StRiverRMapper; -import com.gunshi.project.hsz.common.mapper.StRiverRRealMapper; -import com.gunshi.project.hsz.common.model.StRiverR; -import com.gunshi.project.hsz.common.model.StRiverRReal; -import com.gunshi.project.hsz.common.model.StStbprpBElem; -import com.gunshi.project.hsz.common.mapper.StStbprpBElemMapper; -import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; -import com.gunshi.project.hsz.datasync.waterLevel.datasource.JcskStRsvrR; -import com.gunshi.project.hsz.datasync.waterLevel.datasource.JcskStRsvrRMapper; -import com.gunshi.project.hsz.datasync.SyncTableRService; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.lang.NonNull; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; - -/** - * @author lyf - * @since 2025-10-20 - * 荆楚水库的河道水位和水库水位共用一张表 - */ -@Service -public class SyncRiverWaterLevelService implements SyncTableRService { - @Autowired - private JcskStRsvrRMapper sourceMapper; - - @Autowired - private StRiverRRealMapper targetRealMapper; - - @Autowired - private StRiverRMapper targetMapper; - - @Autowired - private StStbprpBElemMapper stbprpMapper; - - @Scheduled(cron = "0 */5 * * * ?") - @Override - public int syncData() { - //从水库表中获取所有的站点信息(比如 黑石咀,檀树岗水库) - List stbprps = stbprpMapper.selectByElem("z"); - - int cnt = 0; - for (StStbprpBElem StStbprpBElem : stbprps) { - StRiverR targetParams = new StRiverR(); - targetParams.setStcd(StStbprpBElem.getStcd()); - //获取该站点在水库表中最新的那一条数据 - StRiverR latestTarget = getLatestTargetEntity(targetParams); - List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); - cnt += saveToTarget(sourceEntityList); - } - return cnt; - } - - @NonNull - @Override - public StRiverR getLatestTargetEntity(StRiverR targetParams) { - String stcd = targetParams.getStcd(); - - StRiverR target = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(StRiverR::getStcd, stcd) - .orderByDesc(StRiverR::getTm) - .last("limit 1") - ); - - if (target == null) { - target = new StRiverR(); - target.setStcd(stcd); - - Date date = LocalDateTimeConverter.toDate(LocalDateTime.of(2025, 10, 20, 15, 0, 0)); - target.setTm(date); - } - - return target; - } - - @Override - public List getSourceEntityListByLatestTargetEntity(@NonNull StRiverR targetEntity) { - //去荆楚水库中查询出,时间大于水库中最新那一条时间的记录 - String stcd = targetEntity.getStcd(); - LocalDateTime tm = LocalDateTimeConverter.fromDate(targetEntity.getTm()); - return sourceMapper.selectList( - new LambdaQueryWrapper() - .gt(JcskStRsvrR::getTm, tm) - .eq(JcskStRsvrR::getStcd, stcd) - ); - } - - @Override - public int saveToTarget(List sourceEntityList) { - //将查询出的数据保存至目标水库表中 - int count = 0; - for (JcskStRsvrR sourceEntity : sourceEntityList) { - String stcd = sourceEntity.getStcd(); - LocalDateTime tm = sourceEntity.getTm(); - StRiverR existingTarget = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(StRiverR::getStcd, stcd) - .eq(StRiverR::getTm, tm) - ); - - if (existingTarget == null) { - StRiverR targetEntity = new StRiverR(); - BeanUtils.copyProperties(sourceEntity, targetEntity); - targetEntity.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); - targetEntity.setZ(sourceEntity.getRz()); - targetEntity.setWptn(sourceEntity.getRwptn()); - targetMapper.insert(targetEntity); - } - count++; - } - - if (!sourceEntityList.isEmpty()) { - sourceEntityList.sort((o1, o2) -> o2.getTm().compareTo(o1.getTm())); - JcskStRsvrR sourceEntity = sourceEntityList.getFirst(); - String stcd = sourceEntity.getStcd(); - StRiverRReal real = targetRealMapper.selectById(stcd); - if (real == null) { - real = new StRiverRReal(); - } - real.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); - real.setStcd(stcd); - real.setZ(sourceEntity.getRz()); - real.setWptn(sourceEntity.getRwptn()); - real.setChtm(new Date()); - targetRealMapper.insertOrUpdate(real); - } - return count; - } -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/SyncRsvrWaterLevelService.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/SyncRsvrWaterLevelService.java deleted file mode 100644 index f4cfeca..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/SyncRsvrWaterLevelService.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.gunshi.project.hsz.datasync.waterLevel; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.mapper.StRsvrRMapper; -import com.gunshi.project.hsz.common.mapper.StRsvrRRealMapper; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.common.model.StRsvrRReal; -import com.gunshi.project.hsz.common.model.StStbprpBElem; -import com.gunshi.project.hsz.common.mapper.StStbprpBElemMapper; -import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; -import com.gunshi.project.hsz.datasync.waterLevel.datasource.JcskStRsvrR; -import com.gunshi.project.hsz.datasync.waterLevel.datasource.JcskStRsvrRMapper; -import com.gunshi.project.hsz.datasync.SyncTableRService; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.lang.NonNull; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; - -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; - -/** - * @author lyf - * @since 2025-10-20 - */ -@Service -public class SyncRsvrWaterLevelService implements SyncTableRService { - @Autowired - private JcskStRsvrRMapper sourceMapper; - - @Autowired - private StRsvrRRealMapper targetRealMapper; - - @Autowired - private StRsvrRMapper targetMapper; - - @Autowired - private StStbprpBElemMapper stbprpMapper; - - @Scheduled(cron = "0 */5 * * * ?") - @Override - public int syncData() { - // 获取所有水库水位要素的站点 - List stbprps = stbprpMapper.selectByElem("rz"); - - int cnt = 0; - for (StStbprpBElem StStbprpBElem : stbprps) { - StRsvrR targetParams = new StRsvrR(); - targetParams.setStcd(StStbprpBElem.getStcd()); - - StRsvrR latestTarget = getLatestTargetEntity(targetParams); - List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); - cnt += saveToTarget(sourceEntityList); - } - return cnt; - } - - @NonNull - @Override - public StRsvrR getLatestTargetEntity(StRsvrR targetParams) { - String stcd = targetParams.getStcd(); - - StRsvrR target = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(StRsvrR::getStcd, stcd) - .orderByDesc(StRsvrR::getTm) - .last("limit 1") - ); - - if (target == null) { - target = new StRsvrR(); - target.setStcd(stcd); - target.setTm(LocalDateTimeConverter.toDate(LocalDateTime.of(2025, 10, 20, 15, 0, 0))); - } - - return target; - } - - @Override - public List getSourceEntityListByLatestTargetEntity(@NonNull StRsvrR targetEntity) { - String stcd = targetEntity.getStcd(); - LocalDateTime tm = LocalDateTimeConverter.fromDate(targetEntity.getTm()); - return sourceMapper.selectList( - new LambdaQueryWrapper() - .gt(JcskStRsvrR::getTm, tm) - .eq(JcskStRsvrR::getStcd, stcd) - ); - } - - @Override - public int saveToTarget(List sourceEntityList) { - int count = 0; - for (JcskStRsvrR sourceEntity : sourceEntityList) { - String stcd = sourceEntity.getStcd(); - LocalDateTime tm = sourceEntity.getTm(); - StRsvrR existingTarget = targetMapper.selectOne( - new LambdaQueryWrapper() - .eq(StRsvrR::getStcd, stcd) - .eq(StRsvrR::getTm, tm) - ); - - if (existingTarget == null) { - StRsvrR targetEntity = new StRsvrR(); - BeanUtils.copyProperties(sourceEntity, targetEntity); - targetEntity.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); - if(sourceEntity.getRz() != null){ - targetEntity.setRz(sourceEntity.getRz().toString()); - } - targetMapper.insert(targetEntity); - } - count++; - } - - if (!sourceEntityList.isEmpty()) { - sourceEntityList.sort((o1, o2) -> o2.getTm().compareTo(o1.getTm())); - JcskStRsvrR sourceEntity = sourceEntityList.getFirst(); - String stcd = sourceEntity.getStcd(); - StRsvrRReal real = targetRealMapper.selectById(stcd); - if (real == null) { - real = new StRsvrRReal(); - } - real.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); - real.setStcd(stcd); - real.setRz(sourceEntity.getRz()); - real.setRwptn(sourceEntity.getRwptn()); - real.setChtm(new Date()); - targetRealMapper.insertOrUpdate(real); - } - return count; - } -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/datasource/JcskStRsvrR.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/datasource/JcskStRsvrR.java deleted file mode 100644 index 78b8c10..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/datasource/JcskStRsvrR.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.gunshi.project.hsz.datasync.waterLevel.datasource; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * @author lyf - * @since 2025-10-20 - */ -@Data -@TableName("SJZT_MD.\"st_rsvr_r\"") -@IgnoreAutoMapperAndDao -public class JcskStRsvrR { - - /** - * 站码 - */ - @TableId("\"stcd\"") - private String stcd; - - /** - * 监测时间 - */ - @TableField("\"tm\"") - private LocalDateTime tm; - - /** - * 水位 - */ - @TableField("\"rz\"") - private BigDecimal rz; - - /** - * 入库流量 - */ - @TableField("\"inq\"") - private BigDecimal inq; - - /** - * 蓄水量 - */ - @TableField("\"w\"") - private BigDecimal w; - - /** - * 库下水位 - */ - @TableField("\"blrz\"") - private BigDecimal blrz; - - /** - * 出库流量 - */ - @TableField("\"otq\"") - private BigDecimal otq; - - /** - * 水库特征码 - */ - @TableField("\"rwchrcd\"") - private String rwchrcd; - - /** - * 水库水势 - */ - @TableField("\"rwptn\"") - private String rwptn; - - /** - * 入流时段长 - */ - @TableField("\"inqdr\"") - private BigDecimal inqdr; - - /** - * 测流方法 - */ - @TableField("\"msqmt\"") - private String msqmt; -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/datasource/JcskStRsvrRMapper.java b/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/datasource/JcskStRsvrRMapper.java deleted file mode 100644 index f30cb17..0000000 --- a/service-datasync/src/main/java/com/gunshi/project/hsz/datasync/waterLevel/datasource/JcskStRsvrRMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.datasync.waterLevel.datasource; - -import com.baomidou.dynamic.datasource.annotation.DS; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * @author lyf - * @since 2025-10-20 - */ -@DS("jcsk") -@Mapper -public interface JcskStRsvrRMapper extends BaseMapper { -} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/Main.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/Main.java new file mode 100644 index 0000000..d525c9d --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/Main.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.datasync; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +/** + * 应用程序入口类 + */ +@SpringBootApplication +@EnableScheduling +@MapperScan({ + "com.gunshi.project.ss.datasync.flow.**.datasource", + "com.gunshi.project.ss.datasync.gnss.**.datasource", + "com.gunshi.project.ss.datasync.rainfall.**.datasource", + "com.gunshi.project.ss.datasync.seepage.**.datasource", + "com.gunshi.project.ss.datasync.waterLevel.**.datasource", + "com.gunshi.**.mapper" +}) +public class Main { + + public static void main(String[] args) { + SpringApplication.run(Main.class, args); + } +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/SyncTableRService.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/SyncTableRService.java new file mode 100644 index 0000000..2c5a41c --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/SyncTableRService.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.datasync; + +import org.springframework.lang.NonNull; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 数据同步服务接口 + */ +public interface SyncTableRService { + + int syncData(); + + @NonNull + TargetEntity getLatestTargetEntity(TargetEntity targetParams); + + List getSourceEntityListByLatestTargetEntity(@NonNull TargetEntity targetEntity); + + int saveToTarget(List sourceEntityList); + + default LocalDateTime calculateEtm(LocalDateTime stm) { + LocalDateTime etm = LocalDateTime.now(); + if (etm.isAfter(stm.plusDays(30))) { + etm = stm.plusDays(30); + } + return etm; + } + +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/config/SyncTaskScheduler.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/config/SyncTaskScheduler.java new file mode 100644 index 0000000..aced6a8 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/config/SyncTaskScheduler.java @@ -0,0 +1,142 @@ +package com.gunshi.project.ss.datasync.config; + +import com.gunshi.project.ss.datasync.gnss.SyncGnssRService; +import com.gunshi.project.ss.datasync.seepage.SyncSlRService; +import com.gunshi.project.ss.datasync.seepage.SyncSyRService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; + +import java.util.concurrent.Executor; + +@Configuration +@EnableScheduling +@Slf4j +public class SyncTaskScheduler implements ApplicationRunner { + + @Autowired + private SyncGnssRService syncGnssRService; + + @Autowired + private SyncSlRService syncSlRService; + + @Autowired + private SyncSyRService syncSyRService; + + private boolean isApplicationReady = false; + + // 任务执行状态标志,确保每个任务串行执行 + private volatile boolean isSyncByRRunning = false; + private volatile boolean isSyncGnssRRunning = false; + private volatile boolean isSyncSlRRunning = false; + private volatile boolean isSyncSyRRunning = false; + + /** + * 配置定时任务线程池,确保并行执行 + */ + public Executor taskScheduler() { + ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); + scheduler.setPoolSize(4); // 4个线程,每个服务一个 + scheduler.setThreadNamePrefix("SyncTask-"); + scheduler.initialize(); + return scheduler; + } + + /** + * 在应用启动完成后设置标志 + */ + @Override + public void run(ApplicationArguments args) { + isApplicationReady = true; + log.info("应用初始化完成,定时任务将在下次调度时开始执行"); + } + + /** + * 位移数据同步任务 - 每15分钟执行一次 + * 确保上一次执行完毕后才会再次执行 + */ + @Scheduled(cron = "0 */15 * * * ?") + public void scheduleSyncGnssR() { + if (!isApplicationReady) { + return; + } + + // 检查任务是否正在运行,如果是则跳过本次执行 + if (isSyncGnssRRunning) { + log.info("位移数据同步任务正在执行中,跳过本次调度"); + return; + } + + try { + isSyncGnssRRunning = true; // 标记任务开始执行 + log.info("开始执行位移数据同步任务"); + syncGnssRService.syncData(); + log.info("位移数据同步任务执行完成"); + } catch (Exception e) { + log.error("位移数据同步任务执行异常", e); + } finally { + isSyncGnssRRunning = false; // 无论成功失败,都标记任务执行完毕 + } + } + + /** + * 渗流量数据同步任务 - 每15分钟执行一次 + * 确保上一次执行完毕后才会再次执行 + */ + @Scheduled(cron = "0 */15 * * * ?") + public void scheduleSyncSlR() { + if (!isApplicationReady) { + return; + } + + // 检查任务是否正在运行,如果是则跳过本次执行 + if (isSyncSlRRunning) { + log.info("渗流量数据同步任务正在执行中,跳过本次调度"); + return; + } + + try { + isSyncSlRRunning = true; // 标记任务开始执行 + log.info("开始执行渗流量数据同步任务"); + syncSlRService.syncData(); + log.info("渗流量数据同步任务执行完成"); + } catch (Exception e) { + log.error("渗流量数据同步任务执行异常", e); + } finally { + isSyncSlRRunning = false; // 无论成功失败,都标记任务执行完毕 + } + } + + /** + * 渗压数据同步任务 - 每15分钟执行一次 + * 确保上一次执行完毕后才会再次执行 + */ + @Scheduled(cron = "0 */15 * * * ?") + public void scheduleSyncSyR() { + if (!isApplicationReady) { + return; + } + + // 检查任务是否正在运行,如果是则跳过本次执行 + if (isSyncSyRRunning) { + log.info("渗压数据同步任务正在执行中,跳过本次调度"); + return; + } + + try { + isSyncSyRRunning = true; // 标记任务开始执行 + log.info("开始执行渗压数据同步任务"); + syncSyRService.syncData(); + log.info("渗压数据同步任务执行完成"); + } catch (Exception e) { + log.error("渗压数据同步任务执行异常", e); + } finally { + isSyncSyRRunning = false; // 无论成功失败,都标记任务执行完毕 + } + } +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/SyncFlowService.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/SyncFlowService.java new file mode 100644 index 0000000..d3b723a --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/SyncFlowService.java @@ -0,0 +1,107 @@ +package com.gunshi.project.ss.datasync.flow; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.mapper.StFlowRMapper; +import com.gunshi.project.ss.common.model.StFlowR; +import com.gunshi.project.ss.common.model.StStbprpBElem; +import com.gunshi.project.ss.datasync.flow.datasource.JcskStFlowR; +import com.gunshi.project.ss.common.mapper.StStbprpBElemMapper; +import com.gunshi.project.ss.datasync.flow.datasource.JcskStFlowRMapper; +import com.gunshi.project.ss.datasync.SyncTableRService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author lyf + * @since 2025-10-16 + */ +@Slf4j +@Service +public class SyncFlowService implements SyncTableRService { + @Autowired + private JcskStFlowRMapper jcskStFlowRMapper; + + @Autowired + private StFlowRMapper stFlowRMapper; + + @Autowired + private StStbprpBElemMapper stbprpMapper; + + @Scheduled(cron = "0 */15 * * * ?") + @Override + public int syncData() { + log.info("开始同步流量数据"); + // 获取所有流量要素的站点 + List stbprps = stbprpMapper.selectByElem("flow"); + + int cnt = 0; + for (StStbprpBElem StStbprpBElem : stbprps) { + StFlowR targetParams = new StFlowR(); + targetParams.setStcd(StStbprpBElem.getStcd()); + + StFlowR latestTarget = getLatestTargetEntity(targetParams); + List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); + cnt += saveToTarget(sourceEntityList); + } + log.info("完成同步流量数据 {} {}", stbprps, cnt); + return cnt; + } + + @NonNull + @Override + public StFlowR getLatestTargetEntity(StFlowR targetParams) { + String stcd = targetParams.getStcd(); + + StFlowR target = stFlowRMapper.selectOne( + new LambdaQueryWrapper() + .eq(StFlowR::getStcd, stcd) + .orderByDesc(StFlowR::getId) + .last("limit 1") + ); + + if (target == null) { + target = new StFlowR(); + target.setStcd(stcd); + //流量有主键自增id,所以不用时间比较 + target.setId(0); + } + + return target; + } + + @Override + public List getSourceEntityListByLatestTargetEntity(@NonNull StFlowR targetEntity) { + String stcd = targetEntity.getStcd(); + Integer id = targetEntity.getId(); + return jcskStFlowRMapper.selectList( + new LambdaQueryWrapper() + .gt(JcskStFlowR::getId, id) + .eq(JcskStFlowR::getStcd, stcd) + ); + } + + @Override + public int saveToTarget(List sourceEntityList) { + int count = 0; + for (JcskStFlowR sourceEntity : sourceEntityList) { + Integer id = sourceEntity.getId(); + StFlowR existingTarget = stFlowRMapper.selectById(id); + + if (existingTarget == null) { + StFlowR targetEntity = new StFlowR(); + BeanUtils.copyProperties(sourceEntity, targetEntity); + targetEntity.setCrtime(LocalDateTime.now()); + stFlowRMapper.insert(targetEntity); + } + count++; + } + return count; + } +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/datasource/JcskStFlowR.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/datasource/JcskStFlowR.java new file mode 100644 index 0000000..7c9537c --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/datasource/JcskStFlowR.java @@ -0,0 +1,59 @@ +package com.gunshi.project.ss.datasync.flow.datasource; + +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 com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @author lyf + * @since 2025-10-16 + */ +@Data +@TableName("SJZT_ODS.\"st_flow_r\"") +@IgnoreAutoMapperAndDao +public class JcskStFlowR { + + /** + * 主键id + */ + @TableId(value = "\"id\"", type = IdType.NONE) + private Integer id; + + /** + * 测站编码 + */ + @TableField("\"stcd\"") + private String stcd; + + /** + * 观测时间 + */ + @TableField("\"tm\"") + private LocalDateTime tm; + + /** + * 入库流量,单位m³/s + */ + @TableField("\"inq\"") + private BigDecimal inq; + + /** + * 瞬时流量,单位m³/s + */ + @TableField("\"q\"") + private BigDecimal q; + + /** + * 出库流量,单位m³/s + */ + @TableField("\"otq\"") + private BigDecimal otq; + + +} diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/datasource/JcskStFlowRMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/datasource/JcskStFlowRMapper.java new file mode 100644 index 0000000..7c68c4d --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/flow/datasource/JcskStFlowRMapper.java @@ -0,0 +1,14 @@ +package com.gunshi.project.ss.datasync.flow.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author lyf + * @since 2025-10-16 + */ +@DS("jcsk") +@Mapper +public interface JcskStFlowRMapper extends BaseMapper { +} diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/SyncGnssRService.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/SyncGnssRService.java new file mode 100644 index 0000000..fa72461 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/SyncGnssRService.java @@ -0,0 +1,129 @@ +package com.gunshi.project.ss.datasync.gnss; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.model.JcskGnssB; +import com.gunshi.project.ss.common.model.JcskGnssR; +import com.gunshi.project.ss.datasync.gnss.datasource.AttMqttCalcData; +import com.gunshi.project.ss.common.mapper.JcskGnssBMapper; +import com.gunshi.project.ss.common.mapper.JcskGnssRMapper; +import com.gunshi.project.ss.datasync.gnss.datasource.AttMqttCalcDataNormalMapper; +import com.gunshi.project.ss.datasync.SyncTableRService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Service; + +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.List; + +/** + * @author lyf + * @since 2025-08-22 + */ +@Service +@Slf4j +public class SyncGnssRService implements SyncTableRService { + + @Autowired + private AttMqttCalcDataNormalMapper sourceMapper; + + @Autowired + private JcskGnssBMapper targetBMapper; + + @Autowired + private JcskGnssRMapper targetMapper; + + @Override + public int syncData() { + List targetBList = targetBMapper.selectList(null); + + int cnt = 0; + for (JcskGnssB targetB : targetBList) { + JcskGnssR targetParams = new JcskGnssR(); + targetParams.setResCd(targetB.getResCd()); + targetParams.setCd(targetB.getCd()); + + JcskGnssR latestTarget = getLatestTargetEntity(targetParams); + List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); + cnt += saveToTarget(sourceEntityList); + } + return cnt; + } + + @NonNull + @Override + public JcskGnssR getLatestTargetEntity(JcskGnssR targetParams) { + String resCd = targetParams.getResCd(); + String cd = targetParams.getCd(); + + JcskGnssR target = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(JcskGnssR::getResCd, resCd) + .eq(JcskGnssR::getCd, cd) + .orderByDesc(JcskGnssR::getTm) + .last("limit 1") + ); + + if (target == null) { + target = new JcskGnssR(); + target.setResCd(resCd); + target.setCd(cd); + //数据源最早的数据时间 + target.setTm(LocalDateTime.of(2025, 9, 15, 18, 30, 0)); + } + + return target; + } + + @Override + public List getSourceEntityListByLatestTargetEntity(@NonNull JcskGnssR targetEntity) { + String resCd = targetEntity.getResCd(); + String cd = targetEntity.getCd(); + LocalDateTime stm = targetEntity.getTm(); + LocalDateTime etm = calculateEtm(stm); + + Long stmMillis = stm.toInstant(ZoneOffset.of("+8")).toEpochMilli(); + Long etmMillis = etm.toInstant(ZoneOffset.of("+8")).toEpochMilli(); +// log.info("开始同步 位移 {} {} {} {}", resCd, cd, stm, etm); + return sourceMapper.selectList( + new LambdaQueryWrapper() + .eq(AttMqttCalcData::getStationCode, resCd+cd) + .gt(AttMqttCalcData::getCalcTime, stmMillis) + .le(AttMqttCalcData::getCalcTime, etmMillis) + ); + } + + @Override + public int saveToTarget(List sourceEntityList) { + int count = 0; + for (AttMqttCalcData sourceEntity : sourceEntityList) { + LocalDateTime tm = LocalDateTime.ofInstant( + Instant.ofEpochMilli(sourceEntity.getCalcTime()), ZoneOffset.of("+8") + ); + String stationCode = sourceEntity.getStationCode(); + String resCd = stationCode.substring(0, 11); + String cd = stationCode.substring(11); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(JcskGnssR::getResCd, resCd) + .eq(JcskGnssR::getCd, cd) + .eq(JcskGnssR::getTm, tm) + .last("limit 1"); + JcskGnssR existingTarget = targetMapper.selectOne(queryWrapper); + + if (existingTarget == null) { + JcskGnssR targetEntity = new JcskGnssR(); + BeanUtils.copyProperties(sourceEntity, targetEntity); + targetEntity.setResCd(resCd); + targetEntity.setCd(cd); + targetEntity.setTm(tm); + targetEntity.setUpdateTm(LocalDateTime.now()); + targetMapper.insert(targetEntity); + } + count++; + } + return count; + } +} diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttMqttCalcData.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttMqttCalcData.java new file mode 100644 index 0000000..b26d886 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttMqttCalcData.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.datasync.gnss.datasource; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.model.JcskGnssR; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 位移数据表(数据源表) + * 对应数据库表:SJZT_MD.att_mqtt_calc_data_normal + * 数据来源:该表数据同步至jcsk_gnss_r表 + * @see AttWyCdBase + * @see JcskGnssR + */ +@Data +@TableName("SJZT_MD.\"att_mqtt_calc_data\"") +@IgnoreAutoMapperAndDao +public class AttMqttCalcData { + /** + * 水库编码设备编码 + */ + @TableField("\"station_code\"") + private String stationCode; + + /** + * e方向变形值,单位(mm) + */ + @TableField("\"de\"") + private BigDecimal de; + + /** + * n方向变形值,单位(mm) + */ + @TableField("\"dn\"") + private BigDecimal dn; + + /** + * u方向变形值,单位(mm) + */ + @TableField("\"du\"") + private BigDecimal du; + + /** + * 站点高程 + */ + @TableField("\"alt\"") + private BigDecimal alt; + + /** + * 解算时间 + */ + @TableField("\"calc_time\"") + private Long calcTime; +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttMqttCalcDataNormalMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttMqttCalcDataNormalMapper.java new file mode 100644 index 0000000..7a510c3 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttMqttCalcDataNormalMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.datasync.gnss.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * AttMqttCalcDataNormal的Mapper接口 + */ +@DS("jcsk") +@Mapper +public interface AttMqttCalcDataNormalMapper extends BaseMapper { + + // 可以在这里添加自定义的SQL方法 + +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttWyCdBase.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttWyCdBase.java new file mode 100644 index 0000000..cc1a33e --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttWyCdBase.java @@ -0,0 +1,55 @@ +package com.gunshi.project.ss.datasync.gnss.datasource; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.model.JcskGnssB; +import lombok.Data; + +/** + * 位移设备表(数据源表) + * 对应数据库表:SJZT_MD.att_wy_cd_base + * 数据来源:该表数据同步至jcsk_gnss_b表 + * @see JcskGnssB + * @see AttMqttCalcData + */ +@Data +@TableName("SJZT_MD.\"att_wy_cd_base\"") +@IgnoreAutoMapperAndDao +public class AttWyCdBase { + /** + * 测点编码 + */ + @TableField("\"cd\"") + private String cd; + + /** + * 测点名称 + */ + @TableField("\"cd_nm\"") + private String cdNm; + + /** + * 桩号 + */ + @TableField("\"ch\"") + private String ch; + + /** + * 测点类型(sl/wy/sy) + */ + @TableField("\"cd_type\"") + private String cdType; + + /** + * 水库编码 + */ + @TableField("\"res_cd\"") + private String resCd; + + /** + * 设备状态 + */ + @TableField("\"device_status\"") + private String deviceStatus; +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttWyCdBaseMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttWyCdBaseMapper.java new file mode 100644 index 0000000..b7cd9b0 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/gnss/datasource/AttWyCdBaseMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.datasync.gnss.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * AttWyCdBase的Mapper接口 + */ +@DS("jcsk") +@Mapper +public interface AttWyCdBaseMapper extends BaseMapper { + + // 可以在这里添加自定义的SQL方法 + +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/SyncRainfallService.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/SyncRainfallService.java new file mode 100644 index 0000000..05f5de5 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/SyncRainfallService.java @@ -0,0 +1,125 @@ +package com.gunshi.project.ss.datasync.rainfall; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.mapper.StPptnRMapper; +import com.gunshi.project.ss.common.mapper.StPptnRRealMapper; +import com.gunshi.project.ss.common.mapper.StStbprpBElemMapper; +import com.gunshi.project.ss.common.model.StPptnR; +import com.gunshi.project.ss.common.model.StStbprpBElem; +import com.gunshi.project.ss.common.util.LocalDateTimeConverter; +import com.gunshi.project.ss.datasync.rainfall.datasource.JcskStPptnR; +import com.gunshi.project.ss.datasync.rainfall.datasource.JcskStPptnRMapper; +import com.gunshi.project.ss.datasync.SyncTableRService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + * @author lyf + * @since 2025-10-20 + */ +@Service +public class SyncRainfallService implements SyncTableRService { + @Autowired + private JcskStPptnRMapper sourceMapper; + + @Autowired + private StPptnRRealMapper targetRealMapper; + + @Autowired + private StPptnRMapper targetMapper; + + @Autowired + private StStbprpBElemMapper stbprpMapper; + + @Scheduled(cron = "0 */5 * * * ?") + @Override + public int syncData() { + // 获取所有降雨要素的站点 + List stbprps = stbprpMapper.selectByElem("drp"); + + int cnt = 0; + for (StStbprpBElem StStbprpBElem : stbprps) { + StPptnR targetParams = new StPptnR(); + targetParams.setStcd(StStbprpBElem.getStcd()); + + StPptnR latestTarget = getLatestTargetEntity(targetParams); + List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); + cnt += saveToTarget(sourceEntityList); + } + return cnt; + } + + @NonNull + @Override + public StPptnR getLatestTargetEntity(StPptnR targetParams) { + String stcd = targetParams.getStcd(); + + StPptnR target = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(StPptnR::getStcd, stcd) + .orderByDesc(StPptnR::getTm) + .last("limit 1") + ); + + if (target == null) { + target = new StPptnR(); + target.setStcd(stcd); + + Date date = LocalDateTimeConverter.toDate(LocalDateTime.of(2025, 10, 20, 15, 0, 0)); + target.setTm(date); + } + + return target; + } + + @Override + public List getSourceEntityListByLatestTargetEntity(@NonNull StPptnR targetEntity) { + String stcd = targetEntity.getStcd(); + LocalDateTime tm = LocalDateTimeConverter.fromDate(targetEntity.getTm()); + return sourceMapper.selectList( + new LambdaQueryWrapper() + .gt(JcskStPptnR::getTm, tm) + .eq(JcskStPptnR::getStcd, stcd) + ); + } + + @Override + public int saveToTarget(List sourceEntityList) { + int count = 0; + for (JcskStPptnR sourceEntity : sourceEntityList) { + String stcd = sourceEntity.getStcd(); + LocalDateTime tm = sourceEntity.getTm(); + StPptnR existingTarget = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(StPptnR::getStcd, stcd) + .eq(StPptnR::getTm, tm) + ); + + if (existingTarget == null) { + StPptnR targetEntity = new StPptnR(); + BeanUtils.copyProperties(sourceEntity, targetEntity); + targetEntity.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); + targetEntity.setChtm(new Date()); + if(sourceEntity.getDrp() != null){ + targetEntity.setDrp(sourceEntity.getDrp().toString()); + } + targetMapper.insert(targetEntity); + } + count++; + } + + if (!sourceEntityList.isEmpty()) { + JcskStPptnR sourceEntity = sourceEntityList.getFirst(); + String stcd = sourceEntity.getStcd(); + targetRealMapper.updatePptnRReal(stcd); + } + return count; + } +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/datasource/JcskStPptnR.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/datasource/JcskStPptnR.java new file mode 100644 index 0000000..0f85bc6 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/datasource/JcskStPptnR.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.datasync.rainfall.datasource; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @author lyf + * @since 2025-10-20 + */ +@Data +@TableName("SJZT_MD.\"st_pptn_r\"") +@IgnoreAutoMapperAndDao +public class JcskStPptnR { + /** + * 测站编码 + */ + @TableField("\"stcd\"") + private String stcd; + + /** + * 时段降水量 + */ + @TableField("\"drp\"") + private BigDecimal drp; + + /** + * 时间 + */ + @TableField("\"tm\"") + private LocalDateTime tm; + + /** + * 时段长 + */ + @TableField("\"intv\"") + private BigDecimal intv; + + /** + * 天气状况 + */ + @TableField("\"wth\"") + private String wth; +} diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/datasource/JcskStPptnRMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/datasource/JcskStPptnRMapper.java new file mode 100644 index 0000000..750354b --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/rainfall/datasource/JcskStPptnRMapper.java @@ -0,0 +1,14 @@ +package com.gunshi.project.ss.datasync.rainfall.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author lyf + * @since 2025-10-20 + */ +@DS("jcsk") +@Mapper +public interface JcskStPptnRMapper extends BaseMapper { +} diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/SyncSlRService.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/SyncSlRService.java new file mode 100644 index 0000000..53b9303 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/SyncSlRService.java @@ -0,0 +1,116 @@ +package com.gunshi.project.ss.datasync.seepage; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.model.JcskSlB; +import com.gunshi.project.ss.common.model.JcskSlR; +import com.gunshi.project.ss.datasync.seepage.datasource.DsmSpgSpqn; +import com.gunshi.project.ss.common.mapper.JcskSlBMapper; +import com.gunshi.project.ss.common.mapper.JcskSlRMapper; +import com.gunshi.project.ss.datasync.seepage.datasource.DsmSpgSpqnMapper; +import com.gunshi.project.ss.datasync.SyncTableRService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author lyf + * @since 2025-08-22 + */ +@Service +@Slf4j +public class SyncSlRService implements SyncTableRService { + + @Autowired + private DsmSpgSpqnMapper sourceMapper; + + @Autowired + private JcskSlBMapper targetBMapper; + + @Autowired + private JcskSlRMapper targetMapper; + + @Override + public int syncData() { + List targetBList = targetBMapper.selectList(null); + + int cnt = 0; + for (JcskSlB targetB : targetBList) { + JcskSlR targetParams = new JcskSlR(); + targetParams.setRscd(targetB.getRscd()); + targetParams.setMpcd(targetB.getMpcd()); + + JcskSlR latestTarget = getLatestTargetEntity(targetParams); + List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); + cnt += saveToTarget(sourceEntityList); + } + return cnt; + } + + @NonNull + @Override + public JcskSlR getLatestTargetEntity(JcskSlR targetParams) { + String resCd = targetParams.getRscd(); + String mpcd = targetParams.getMpcd(); + + JcskSlR target = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(JcskSlR::getRscd, resCd) + .eq(JcskSlR::getMpcd, mpcd) + .orderByDesc(JcskSlR::getMstm) + .last("limit 1") + ); + + if (target == null) { + target = new JcskSlR(); + target.setRscd(resCd); + target.setMpcd(mpcd); + //数据源最早的数据时间 + target.setMstm(LocalDateTime.of(2025, 8, 1, 0, 0, 0)); + } + + return target; + } + + @Override + public List getSourceEntityListByLatestTargetEntity(@NonNull JcskSlR targetEntity) { + String rscd = targetEntity.getRscd(); + String mpcd = targetEntity.getMpcd(); + LocalDateTime stm = targetEntity.getMstm(); + LocalDateTime etm = calculateEtm(stm); + + // 修复数据类型不匹配问题:使用mstm(LocalDateTime)字段进行时间比较,而不是tm(BigDecimal)字段 + return sourceMapper.selectList( + new LambdaQueryWrapper() + .eq(DsmSpgSpqn::getRscd, rscd) + .eq(DsmSpgSpqn::getMpcd, mpcd) + .gt(DsmSpgSpqn::getMstm, stm) + .le(DsmSpgSpqn::getMstm, etm) + ); + } + + @Override + public int saveToTarget(List sourceEntityList) { + int count = 0; + for (DsmSpgSpqn sourceEntity : sourceEntityList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(JcskSlR::getRscd, sourceEntity.getRscd()) + .eq(JcskSlR::getMpcd, sourceEntity.getMpcd()) + .eq(JcskSlR::getMstm, sourceEntity.getMstm()) + .last("limit 1"); + JcskSlR existingTarget = targetMapper.selectOne(queryWrapper); + + if (existingTarget == null) { + JcskSlR targetEntity = new JcskSlR(); + BeanUtils.copyProperties(sourceEntity, targetEntity); + targetMapper.insert(targetEntity); + } + count++; + } + return count; + } +} diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/SyncSyRService.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/SyncSyRService.java new file mode 100644 index 0000000..3e6e404 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/SyncSyRService.java @@ -0,0 +1,119 @@ +package com.gunshi.project.ss.datasync.seepage; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.model.JcskSyB; +import com.gunshi.project.ss.common.model.JcskSyR; +import com.gunshi.project.ss.datasync.seepage.datasource.DsmSpgSppr; +import com.gunshi.project.ss.common.mapper.JcskSyBMapper; +import com.gunshi.project.ss.common.mapper.JcskSyRMapper; +import com.gunshi.project.ss.datasync.seepage.datasource.DsmSpgSpprMapper; +import com.gunshi.project.ss.datasync.SyncTableRService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +@Slf4j +public class SyncSyRService implements SyncTableRService { + + @Autowired + private DsmSpgSpprMapper sourceMapper; + + @Autowired + private JcskSyBMapper targetBMapper; + + @Autowired + private JcskSyRMapper targetMapper; + + @Override + public int syncData() { + List targetBList = targetBMapper.selectList(null); + + int cnt = 0; + for (JcskSyB targetB : targetBList) { + JcskSyR targetParams = new JcskSyR(); + targetParams.setRscd(targetB.getRscd()); + targetParams.setStcd(targetB.getStcd()); + targetParams.setMpcd(targetB.getMpcd()); + + JcskSyR latestTarget = getLatestTargetEntity(targetParams); + List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); + cnt += saveToTarget(sourceEntityList); + } + return cnt; + } + + @NonNull + @Override + public JcskSyR getLatestTargetEntity(JcskSyR targetParams) { + String resCd = targetParams.getRscd(); + String mpcd = targetParams.getMpcd(); + String stcd = targetParams.getStcd(); + + JcskSyR target = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(JcskSyR::getRscd, resCd) + .eq(JcskSyR::getMpcd, mpcd) + .eq(JcskSyR::getStcd, stcd) + .orderByDesc(JcskSyR::getMstm) + .last("limit 1") + ); + + if (target == null) { + target = new JcskSyR(); + target.setRscd(resCd); + target.setMpcd(mpcd); + target.setStcd(stcd); + target.setMstm(LocalDateTime.of(2025, 9, 1, 16, 30, 0)); + } + + return target; + } + + @Override + public List getSourceEntityListByLatestTargetEntity(@NonNull JcskSyR targetEntity) { + String rscd = targetEntity.getRscd(); + String mpcd = targetEntity.getMpcd(); + String stcd = targetEntity.getStcd(); + LocalDateTime stm = targetEntity.getMstm(); + LocalDateTime etm = calculateEtm(stm); + + return sourceMapper.selectList( + new LambdaQueryWrapper() + .eq(DsmSpgSppr::getRscd, rscd) + .eq(DsmSpgSppr::getMpcd, mpcd) + .eq(DsmSpgSppr::getStcd, stcd) + .gt(DsmSpgSppr::getMstm, stm) + .le(DsmSpgSppr::getMstm, etm) + ); + } + + @Override + public int saveToTarget(List sourceEntityList) { + LocalDateTime now = LocalDateTime.now(); + int count = 0; + for (DsmSpgSppr sourceEntity : sourceEntityList) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(JcskSyR::getRscd, sourceEntity.getRscd()) + .eq(JcskSyR::getMpcd, sourceEntity.getMpcd()) + .eq(JcskSyR::getStcd, sourceEntity.getStcd()) + .eq(JcskSyR::getMstm, sourceEntity.getMstm()) + .last("limit 1"); + JcskSyR existingTarget = targetMapper.selectOne(queryWrapper); + + if (existingTarget == null) { + JcskSyR targetEntity = new JcskSyR(); + BeanUtils.copyProperties(sourceEntity, targetEntity); + targetEntity.setUpdateTm(now); + targetMapper.insert(targetEntity); + count++; + } + } + return count; + } +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSppr.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSppr.java new file mode 100644 index 0000000..1c1e172 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSppr.java @@ -0,0 +1,65 @@ +package com.gunshi.project.ss.datasync.seepage.datasource; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.model.JcskSyR; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 渗压数据表(数据源表) + * 对应数据库表:SJZT_ODS.dsm_spg_sppr_normal + * 数据来源:该表数据同步至jcsk_sy_r表 + * @see DsmSpgSpprmp + * @see JcskSyR + */ +@Data +@TableName("SJZT_ODS.\"dsm_spg_sppr\"") +@IgnoreAutoMapperAndDao +public class DsmSpgSppr { + /** + * 水库代码 + */ + @TableField("\"rscd\"") + private String rscd; + + /** + * rtu编码 + */ + @TableField("\"stcd\"") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("\"hycncd\"") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("\"mpcd\"") + private String mpcd; + + /** + * 测量时间 + */ + @TableField("\"mstm\"") + private LocalDateTime mstm; + + /** + * 温度 + */ + @TableField("\"tm\"") + private BigDecimal tm; + + /** + * 渗流压力水位,单位m + */ + @TableField("\"spprwl\"") + private BigDecimal spprwl; + +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprMapper.java new file mode 100644 index 0000000..5752972 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprMapper.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.datasync.seepage.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * DsmSpgSpprNormal的Mapper接口 + */ +@DS("jcsk") +@Mapper +public interface DsmSpgSpprMapper extends BaseMapper { +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprmp.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprmp.java new file mode 100644 index 0000000..32d3d64 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprmp.java @@ -0,0 +1,137 @@ +package com.gunshi.project.ss.datasync.seepage.datasource; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.model.JcskSyB; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 渗压测点表(数据源表) + * 对应数据库表:SJZT_ODS.dsm_spg_spprmp + * 数据来源:该表数据同步至jcsk_sy_b表 + * @see JcskSyB + * @see DsmSpgSppr + */ +@Data +@TableName("SJZT_ODS.\"dsm_spg_spprmp\"") +@IgnoreAutoMapperAndDao +public class DsmSpgSpprmp { + /** + * 水库代码 + */ + @TableField("\"rscd\"") + private String rscd; + + /** + * rtu编码 + */ + @TableField("\"stcd\"") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("\"hycncd\"") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("\"mpcd\"") + private String mpcd; + + /** + * 桩号 + */ + @TableField("\"ch\"") + private String ch; + + /** + * 轴距,单位m + */ + @TableField("\"ofax\"") + private BigDecimal ofax; + + /** + * 高程,单位m + */ + @TableField("\"el\"") + private BigDecimal el; + + /** + * 监测类型 + */ + @TableField("\"msps\"") + private String msps; + + /** + * 透水段底高程,单位m + */ + @TableField("\"pmbtel\"") + private BigDecimal pmbtel; + + /** + * 透水段顶高程,单位m + */ + @TableField("\"pmtpel\"") + private BigDecimal pmtpel; + + /** + * 坝面高程 + */ + @TableField("\"dsel\"") + private BigDecimal dsel; + + /** + * 安装日期 + */ + @TableField("\"indt\"") + private LocalDate indt; + + /** + * 仪器编号 + */ + @TableField("\"dvcd\"") + private String dvcd; + + /** + * 经度 + */ + @TableField("\"lgtd\"") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @TableField("\"lttd\"") + private BigDecimal lttd; + + /** + * 备注 + */ + @TableField("\"rm\"") + private String rm; + + /** + * 资料更新时间 + */ + @TableField("\"dtuptm\"") + private LocalDateTime dtuptm; + + /** + * 断面 + */ + @TableField("\"dm\"") + private String dm; + + /** + * 是否填报 + */ + @TableField("\"is_tb\"") + private String isTb; +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprmpMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprmpMapper.java new file mode 100644 index 0000000..c708ce2 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpprmpMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.datasync.seepage.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * DsmSpgSpprmp的Mapper接口 + */ +@DS("jcsk") +@Mapper +public interface DsmSpgSpprmpMapper extends BaseMapper { + + // 可以在这里添加自定义的SQL方法 + +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqn.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqn.java new file mode 100644 index 0000000..a0dc9c8 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqn.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.datasync.seepage.datasource; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.model.JcskSlR; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 渗流数据表(数据源表) + * 对应数据库表:SJZT_ODS.dsm_spg_spqn_normal + * 数据来源:该表数据同步至jcsk_sl_r表 + * @see DsmSpgSpqnmp + * @see JcskSlR + */ +@Data +@TableName("SJZT_ODS.\"dsm_spg_spqn\"") +@IgnoreAutoMapperAndDao +public class DsmSpgSpqn { + /** + * 水库代码 + */ + @TableField("\"rscd\"") + private String rscd; + + + /** + * 水工建筑物编号 + */ + @TableField("\"hycncd\"") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("\"mpcd\"") + private String mpcd; + + /** + * 测量时间 + */ + @TableField("\"mstm\"") + private LocalDateTime mstm; + + /** + * 温度,单位℃ + */ + @TableField("\"tm\"") + private BigDecimal tm; + + /** + * 渗流量,单位l/s + */ + @TableField("\"spqn\"") + private BigDecimal spqn; + + /** + * 标准水温渗流量,单位l/s + */ + @TableField("\"stspqn\"") + private BigDecimal stspqn; + +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnMapper.java new file mode 100644 index 0000000..e0da83d --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.datasync.seepage.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * DsmSpgSpqnNormal的Mapper接口 + */ +@DS("jcsk") +@Mapper +public interface DsmSpgSpqnMapper extends BaseMapper { + + // 可以在这里添加自定义的SQL方法 + +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnmp.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnmp.java new file mode 100644 index 0000000..e47e568 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnmp.java @@ -0,0 +1,113 @@ +package com.gunshi.project.ss.datasync.seepage.datasource; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import com.gunshi.project.ss.common.model.JcskSlB; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 渗流测点表(数据源表) + * 对应数据库表:SJZT_ODS.dsm_spg_spqnmp + * 数据来源:该表数据同步至jcsk_sl_b表 + * @see DsmSpgSpqn + * @see JcskSlB + */ +@Data +@TableName("SJZT_ODS.\"dsm_spg_spqnmp\"") +@IgnoreAutoMapperAndDao +public class DsmSpgSpqnmp { + /** + * 水库代码 + */ + @TableField("\"rscd\"") + private String rscd; + + /** + * 水工建筑物编号 + */ + @TableField("\"hycncd\"") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("\"mpcd\"") + private String mpcd; + + /** + * rtu编号 + */ + @TableField("\"stcd\"") + private String stcd; + + /** + * 桩号 + */ + @TableField("\"ch\"") + private String ch; + + /** + * 轴距,单位m + */ + @TableField("\"ofax\"") + private BigDecimal ofax; + + /** + * 高程,单位m + */ + @TableField("\"el\"") + private BigDecimal el; + + /** + * 安装日期 + */ + @TableField("\"indt\"") + private LocalDate indt; + + /** + * 仪器编号 + */ + @TableField("\"dvcd\"") + private String dvcd; + + /** + * 经度 + */ + @TableField("\"lgtd\"") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @TableField("\"lttd\"") + private BigDecimal lttd; + + /** + * 备注 + */ + @TableField("\"rm\"") + private String rm; + + /** + * 资料更新时间 + */ + @TableField("\"dtuptm\"") + private LocalDateTime dtuptm; + + /** + * 断面 + */ + @TableField("\"dm\"") + private String dm; + + /** + * 是否填报 + */ + @TableField("\"is_tb\"") + private String isTb; +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnmpMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnmpMapper.java new file mode 100644 index 0000000..8800173 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/seepage/datasource/DsmSpgSpqnmpMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.datasync.seepage.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * DsmSpgSpqnmp的Mapper接口 + */ +@DS("jcsk") +@Mapper +public interface DsmSpgSpqnmpMapper extends BaseMapper { + + // 可以在这里添加自定义的SQL方法 + +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/SyncRiverWaterLevelService.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/SyncRiverWaterLevelService.java new file mode 100644 index 0000000..53e0709 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/SyncRiverWaterLevelService.java @@ -0,0 +1,137 @@ +package com.gunshi.project.ss.datasync.waterLevel; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.mapper.StRiverRMapper; +import com.gunshi.project.ss.common.mapper.StRiverRRealMapper; +import com.gunshi.project.ss.common.model.StRiverR; +import com.gunshi.project.ss.common.model.StRiverRReal; +import com.gunshi.project.ss.common.model.StStbprpBElem; +import com.gunshi.project.ss.common.mapper.StStbprpBElemMapper; +import com.gunshi.project.ss.common.util.LocalDateTimeConverter; +import com.gunshi.project.ss.datasync.waterLevel.datasource.JcskStRsvrR; +import com.gunshi.project.ss.datasync.waterLevel.datasource.JcskStRsvrRMapper; +import com.gunshi.project.ss.datasync.SyncTableRService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + * @author lyf + * @since 2025-10-20 + * 荆楚水库的河道水位和水库水位共用一张表 + */ +@Service +public class SyncRiverWaterLevelService implements SyncTableRService { + @Autowired + private JcskStRsvrRMapper sourceMapper; + + @Autowired + private StRiverRRealMapper targetRealMapper; + + @Autowired + private StRiverRMapper targetMapper; + + @Autowired + private StStbprpBElemMapper stbprpMapper; + + @Scheduled(cron = "0 */5 * * * ?") + @Override + public int syncData() { + //从水库表中获取所有的站点信息(比如 黑石咀,檀树岗水库) + List stbprps = stbprpMapper.selectByElem("z"); + + int cnt = 0; + for (StStbprpBElem StStbprpBElem : stbprps) { + StRiverR targetParams = new StRiverR(); + targetParams.setStcd(StStbprpBElem.getStcd()); + //获取该站点在水库表中最新的那一条数据 + StRiverR latestTarget = getLatestTargetEntity(targetParams); + List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); + cnt += saveToTarget(sourceEntityList); + } + return cnt; + } + + @NonNull + @Override + public StRiverR getLatestTargetEntity(StRiverR targetParams) { + String stcd = targetParams.getStcd(); + + StRiverR target = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(StRiverR::getStcd, stcd) + .orderByDesc(StRiverR::getTm) + .last("limit 1") + ); + + if (target == null) { + target = new StRiverR(); + target.setStcd(stcd); + + Date date = LocalDateTimeConverter.toDate(LocalDateTime.of(2025, 10, 20, 15, 0, 0)); + target.setTm(date); + } + + return target; + } + + @Override + public List getSourceEntityListByLatestTargetEntity(@NonNull StRiverR targetEntity) { + //去荆楚水库中查询出,时间大于水库中最新那一条时间的记录 + String stcd = targetEntity.getStcd(); + LocalDateTime tm = LocalDateTimeConverter.fromDate(targetEntity.getTm()); + return sourceMapper.selectList( + new LambdaQueryWrapper() + .gt(JcskStRsvrR::getTm, tm) + .eq(JcskStRsvrR::getStcd, stcd) + ); + } + + @Override + public int saveToTarget(List sourceEntityList) { + //将查询出的数据保存至目标水库表中 + int count = 0; + for (JcskStRsvrR sourceEntity : sourceEntityList) { + String stcd = sourceEntity.getStcd(); + LocalDateTime tm = sourceEntity.getTm(); + StRiverR existingTarget = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(StRiverR::getStcd, stcd) + .eq(StRiverR::getTm, tm) + ); + + if (existingTarget == null) { + StRiverR targetEntity = new StRiverR(); + BeanUtils.copyProperties(sourceEntity, targetEntity); + targetEntity.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); + targetEntity.setZ(sourceEntity.getRz()); + targetEntity.setWptn(sourceEntity.getRwptn()); + targetMapper.insert(targetEntity); + } + count++; + } + + if (!sourceEntityList.isEmpty()) { + sourceEntityList.sort((o1, o2) -> o2.getTm().compareTo(o1.getTm())); + JcskStRsvrR sourceEntity = sourceEntityList.getFirst(); + String stcd = sourceEntity.getStcd(); + StRiverRReal real = targetRealMapper.selectById(stcd); + if (real == null) { + real = new StRiverRReal(); + } + real.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); + real.setStcd(stcd); + real.setZ(sourceEntity.getRz()); + real.setWptn(sourceEntity.getRwptn()); + real.setChtm(new Date()); + targetRealMapper.insertOrUpdate(real); + } + return count; + } +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/SyncRsvrWaterLevelService.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/SyncRsvrWaterLevelService.java new file mode 100644 index 0000000..0620665 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/SyncRsvrWaterLevelService.java @@ -0,0 +1,133 @@ +package com.gunshi.project.ss.datasync.waterLevel; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.mapper.StRsvrRMapper; +import com.gunshi.project.ss.common.mapper.StRsvrRRealMapper; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.common.model.StRsvrRReal; +import com.gunshi.project.ss.common.model.StStbprpBElem; +import com.gunshi.project.ss.common.mapper.StStbprpBElemMapper; +import com.gunshi.project.ss.common.util.LocalDateTimeConverter; +import com.gunshi.project.ss.datasync.waterLevel.datasource.JcskStRsvrR; +import com.gunshi.project.ss.datasync.waterLevel.datasource.JcskStRsvrRMapper; +import com.gunshi.project.ss.datasync.SyncTableRService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + * @author lyf + * @since 2025-10-20 + */ +@Service +public class SyncRsvrWaterLevelService implements SyncTableRService { + @Autowired + private JcskStRsvrRMapper sourceMapper; + + @Autowired + private StRsvrRRealMapper targetRealMapper; + + @Autowired + private StRsvrRMapper targetMapper; + + @Autowired + private StStbprpBElemMapper stbprpMapper; + + @Scheduled(cron = "0 */5 * * * ?") + @Override + public int syncData() { + // 获取所有水库水位要素的站点 + List stbprps = stbprpMapper.selectByElem("rz"); + + int cnt = 0; + for (StStbprpBElem StStbprpBElem : stbprps) { + StRsvrR targetParams = new StRsvrR(); + targetParams.setStcd(StStbprpBElem.getStcd()); + + StRsvrR latestTarget = getLatestTargetEntity(targetParams); + List sourceEntityList = getSourceEntityListByLatestTargetEntity(latestTarget); + cnt += saveToTarget(sourceEntityList); + } + return cnt; + } + + @NonNull + @Override + public StRsvrR getLatestTargetEntity(StRsvrR targetParams) { + String stcd = targetParams.getStcd(); + + StRsvrR target = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(StRsvrR::getStcd, stcd) + .orderByDesc(StRsvrR::getTm) + .last("limit 1") + ); + + if (target == null) { + target = new StRsvrR(); + target.setStcd(stcd); + target.setTm(LocalDateTimeConverter.toDate(LocalDateTime.of(2025, 10, 20, 15, 0, 0))); + } + + return target; + } + + @Override + public List getSourceEntityListByLatestTargetEntity(@NonNull StRsvrR targetEntity) { + String stcd = targetEntity.getStcd(); + LocalDateTime tm = LocalDateTimeConverter.fromDate(targetEntity.getTm()); + return sourceMapper.selectList( + new LambdaQueryWrapper() + .gt(JcskStRsvrR::getTm, tm) + .eq(JcskStRsvrR::getStcd, stcd) + ); + } + + @Override + public int saveToTarget(List sourceEntityList) { + int count = 0; + for (JcskStRsvrR sourceEntity : sourceEntityList) { + String stcd = sourceEntity.getStcd(); + LocalDateTime tm = sourceEntity.getTm(); + StRsvrR existingTarget = targetMapper.selectOne( + new LambdaQueryWrapper() + .eq(StRsvrR::getStcd, stcd) + .eq(StRsvrR::getTm, tm) + ); + + if (existingTarget == null) { + StRsvrR targetEntity = new StRsvrR(); + BeanUtils.copyProperties(sourceEntity, targetEntity); + targetEntity.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); + if(sourceEntity.getRz() != null){ + targetEntity.setRz(sourceEntity.getRz().toString()); + } + targetMapper.insert(targetEntity); + } + count++; + } + + if (!sourceEntityList.isEmpty()) { + sourceEntityList.sort((o1, o2) -> o2.getTm().compareTo(o1.getTm())); + JcskStRsvrR sourceEntity = sourceEntityList.getFirst(); + String stcd = sourceEntity.getStcd(); + StRsvrRReal real = targetRealMapper.selectById(stcd); + if (real == null) { + real = new StRsvrRReal(); + } + real.setTm(LocalDateTimeConverter.toDate(sourceEntity.getTm())); + real.setStcd(stcd); + real.setRz(sourceEntity.getRz()); + real.setRwptn(sourceEntity.getRwptn()); + real.setChtm(new Date()); + targetRealMapper.insertOrUpdate(real); + } + return count; + } +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/datasource/JcskStRsvrR.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/datasource/JcskStRsvrR.java new file mode 100644 index 0000000..96131df --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/datasource/JcskStRsvrR.java @@ -0,0 +1,86 @@ +package com.gunshi.project.ss.datasync.waterLevel.datasource; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @author lyf + * @since 2025-10-20 + */ +@Data +@TableName("SJZT_MD.\"st_rsvr_r\"") +@IgnoreAutoMapperAndDao +public class JcskStRsvrR { + + /** + * 站码 + */ + @TableId("\"stcd\"") + private String stcd; + + /** + * 监测时间 + */ + @TableField("\"tm\"") + private LocalDateTime tm; + + /** + * 水位 + */ + @TableField("\"rz\"") + private BigDecimal rz; + + /** + * 入库流量 + */ + @TableField("\"inq\"") + private BigDecimal inq; + + /** + * 蓄水量 + */ + @TableField("\"w\"") + private BigDecimal w; + + /** + * 库下水位 + */ + @TableField("\"blrz\"") + private BigDecimal blrz; + + /** + * 出库流量 + */ + @TableField("\"otq\"") + private BigDecimal otq; + + /** + * 水库特征码 + */ + @TableField("\"rwchrcd\"") + private String rwchrcd; + + /** + * 水库水势 + */ + @TableField("\"rwptn\"") + private String rwptn; + + /** + * 入流时段长 + */ + @TableField("\"inqdr\"") + private BigDecimal inqdr; + + /** + * 测流方法 + */ + @TableField("\"msqmt\"") + private String msqmt; +} \ No newline at end of file diff --git a/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/datasource/JcskStRsvrRMapper.java b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/datasource/JcskStRsvrRMapper.java new file mode 100644 index 0000000..126e699 --- /dev/null +++ b/service-datasync/src/main/java/com/gunshi/project/ss/datasync/waterLevel/datasource/JcskStRsvrRMapper.java @@ -0,0 +1,14 @@ +package com.gunshi.project.ss.datasync.waterLevel.datasource; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author lyf + * @since 2025-10-20 + */ +@DS("jcsk") +@Mapper +public interface JcskStRsvrRMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/Tests.java b/src/main/java/com/gunshi/Tests.java index 104c472..66dbe65 100644 --- a/src/main/java/com/gunshi/Tests.java +++ b/src/main/java/com/gunshi/Tests.java @@ -1,19 +1,14 @@ package com.gunshi; -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.model.RegressionEquation; -import com.gunshi.project.hsz.util.ProjectCalculateUtil; -import com.gunshi.project.hsz.util.RegressionAnalysis; +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.model.RegressionEquation; +import com.gunshi.project.ss.util.RegressionAnalysis; import java.math.BigDecimal; import java.math.RoundingMode; -import java.text.Format; -import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; -import java.util.concurrent.CountDownLatch; public class Tests extends Thread { diff --git a/src/main/java/com/gunshi/project/hsz/Main.java b/src/main/java/com/gunshi/project/hsz/Main.java deleted file mode 100644 index 96ae6c0..0000000 --- a/src/main/java/com/gunshi/project/hsz/Main.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz; - -import com.github.jeffreyning.mybatisplus.conf.EnableMPP; -import com.gunshi.core.annotation.GunShiApplication; -import io.swagger.v3.oas.annotations.OpenAPIDefinition; -import io.swagger.v3.oas.annotations.servers.Server; -import lombok.extern.slf4j.Slf4j; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.cache.annotation.EnableCaching; - -@OpenAPIDefinition( - servers = { - @Server( - url = "http://localhost:24105/gunshiApp/hsz", - description = "本地测试环境" - ), - @Server( - url = "http://local.gunshiiot.com:18083/gunshiApp/hsz", - description = "线上测试环境" - ) - } -) -@GunShiApplication -@MapperScan(basePackages = {"com.gunshi.**.mapper", "com.gunshi.**.model"}) -@Slf4j -@EnableMPP -@EnableCaching -public class Main { - public static void main(String[] args) { - SpringApplication.run(Main.class, args); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/config/MyE500UnknownExceptionResolver.java b/src/main/java/com/gunshi/project/hsz/config/MyE500UnknownExceptionResolver.java deleted file mode 100644 index 7bd0e7d..0000000 --- a/src/main/java/com/gunshi/project/hsz/config/MyE500UnknownExceptionResolver.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.config; - -import com.gunshi.core.result.R; -import com.gunshi.core.result.exception.ressolver.E500UnknownExceptionResolver; -import lombok.extern.slf4j.Slf4j; -import org.springframework.core.annotation.Order; -import org.springframework.security.access.AccessDeniedException; -import org.springframework.web.bind.annotation.RestControllerAdvice; - - - -/** - * Description: - * Created by XuSan on 2024/7/10. - * - * @author XuSan - * @version 1.0 - */ -@RestControllerAdvice -@Order -@Slf4j -public class MyE500UnknownExceptionResolver extends E500UnknownExceptionResolver { - - public R resolve(Exception exception) { - log.error("系统未知异常,错误信息: " + exception.getMessage(), exception); - if (exception instanceof AccessDeniedException || exception.getMessage().contains("获取用户信息异常")) { - return R.error(405, "登录状态失效,请重新登录"); - } - return R.error(500, "系统未知异常,错误信息: " + exception.getMessage()); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/config/OpenApiConfig.java b/src/main/java/com/gunshi/project/hsz/config/OpenApiConfig.java deleted file mode 100644 index d5353d6..0000000 --- a/src/main/java/com/gunshi/project/hsz/config/OpenApiConfig.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.config; - -import org.springdoc.core.models.GroupedOpenApi; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * Description: - * Created by wanyan on 2024/7/8 - * - * @author wanyan - * @version 1.0 - */ -@Configuration -public class OpenApiConfig { - - @Bean - public GroupedOpenApi openApi() { - String[] packagesToScan = { - "com.gunshi.project.hsz.controller", - }; - return GroupedOpenApi.builder() - .group("hsz") - .packagesToScan(packagesToScan) - .build(); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/AbstractCommonFileController.java b/src/main/java/com/gunshi/project/hsz/controller/AbstractCommonFileController.java deleted file mode 100644 index 1b2347a..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AbstractCommonFileController.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.GunShiCoreProperties; -import com.gunshi.core.result.R; -import com.gunshi.core.session.entity.SessionUser; -import com.gunshi.core.session.service.BaseSessionService; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.file.service.IFileService; -import com.gunshi.file.service.LoginFileService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import jakarta.servlet.http.HttpServletRequest; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.multipart.MultipartFile; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-03-12 - */ -public abstract class AbstractCommonFileController implements ICommonFileController { - - @Override - public R uploadSingle(MultipartFile file, String groupId, String businessType, Long userId, HttpServletRequest request) throws Exception { - return ICommonFileController.super.uploadSingle(file, getGroupId(), getBusinessType(), userId, request); - } - - /** - * 单个文件上传 - * - * @param file 文件 - * @param userId 上传者userId - */ - @Operation(summary = "单个文件上传,不需要groupId和businessType") - @PostMapping(path = "/file/upload/singleSimple", consumes = "multipart/form-data") - @Override - public R uploadSingle( - @Parameter(description = "文件") @RequestPart("file") MultipartFile file, - @Parameter(description = "上传者用户id", hidden = true) @RequestParam(value = "userId", required = false) Long userId, - @Parameter(hidden = true) HttpServletRequest request) throws Exception { - - if (userId == null) { - SessionUser sessionUser = checkLogin(request); - if (sessionUser == null) { - return R.error(400, "未登录", null); - } - userId = sessionUser.getUserId(); - } - - FileDescriptor fd = new FileDescriptor(); - fd.setBusinessType(getBusinessType()); - fd.setGroupId(getGroupId()); - fd.setUserId(userId); - fd.setAccessGroup(getService().getAccessGroup()); - fd.setFilePath(generateFilePath(getProperty().getAppCode(), getBusinessType(), userId, getGroupId(), file.getOriginalFilename())); - fd.setFileName(file.getOriginalFilename()); - fd.setFileLength(file.getSize()); - - getService().upload(fd, file.getInputStream()); - - return R.ok(fd); - } - - @Override - public String getBusinessType() { - return "common"; - } - - @Autowired - private LoginFileService service; - - @Autowired - private GunShiCoreProperties properties; - - @Autowired - private BaseSessionService sessionService; - - @Override - public IFileService getService() { - return service; - } - - @Override - public SessionUser checkLogin(HttpServletRequest request) { -// String token = sessionService.getToken(request); -// return sessionService.getSessionUser(token); - SessionUser user = new SessionUser(); - user.setUserId(1L); - return user; - } - - @Override - public GunShiCoreProperties getProperty() { - return properties; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/AlarmSetController.java b/src/main/java/com/gunshi/project/hsz/controller/AlarmSetController.java deleted file mode 100644 index 4c6a978..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AlarmSetController.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.so.AlarmSetPageSo; -import com.gunshi.project.hsz.model.AlarmSet; -import com.gunshi.project.hsz.service.AlarmSetService; -import com.gunshi.project.hsz.timetask.AlarmTask; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "告警设置") -@RestController -@RequestMapping(value="/alarmSet") -public class AlarmSetController { - - @Autowired - private AlarmSetService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AlarmSet dto) { - boolean result = service.saveData(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AlarmSet dto) { - boolean result = service.updateInfo(dto); - //boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = service.removeById(id); - return R.ok(b); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody AlarmSetPageSo pageSo) { - return R.ok(service.queryPage(pageSo)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public List list(@RequestBody AlarmSetPageSo pageSo) { - List list = service.lambdaQuery().list(); - return list; - } - - @Autowired - private AlarmTask alarmTask; - - @GetMapping("/test") - public void test(){ - alarmTask.updateAlarmSet(); - } - - - @Operation(summary = "获取河道站点") - @GetMapping("/listStation") - public R> listStation(){ - return R.ok(service.listStation()); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/AppVersionRecordController.java b/src/main/java/com/gunshi/project/hsz/controller/AppVersionRecordController.java deleted file mode 100644 index 214f624..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AppVersionRecordController.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.AppVersionRecord; -import com.gunshi.project.hsz.service.AppVersionRecordService; -import com.ruoyi.common.config.RuoYiConfig; -import com.ruoyi.common.utils.file.FileUploadUtils; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.util.HashMap; -import java.util.Map; - -/** - * 描述: APP版本记录 - * author: xusan - * date: 2024-11-12 10:14:50 - */ -@Tag(name = "APP版本记录") -@RestController -@RequestMapping(value="/appVersionRecord") -public class AppVersionRecordController { - - @Autowired - private AppVersionRecordService service; - - @PostMapping("/upload") - public R upload(@RequestParam("file") MultipartFile file, @RequestParam("version") String version, @RequestParam("versionDesc") String versionDesc) throws Exception - { - Map map = new HashMap<>(); - if (!file.isEmpty()) - { - String url = FileUploadUtils.upload(RuoYiConfig.getUploadPath(),file,null); - if (service.insertData(version,versionDesc,url)) - { - map.put("url", url); - return R.ok(map); - } - } - return R.error(400,"上传失败"); - } - - - - @Operation(summary = "最新记录") - @GetMapping("/latest") - public R latest() { - return R.ok(service.getLatest()); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AssessCategoryController.java b/src/main/java/com/gunshi/project/hsz/controller/AssessCategoryController.java deleted file mode 100644 index a3053e1..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AssessCategoryController.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.AssessCategory; -import com.gunshi.project.hsz.service.AssessCategoryService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 考核类目 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Tag(name = "考核类目") -@RestController -@RequestMapping(value="/assessCategory") -public class AssessCategoryController { - - @Autowired - private AssessCategoryService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AssessCategory dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AssessCategory dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().orderByAsc(AssessCategory::getOrderIndex).list()); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AssessIndicatorController.java b/src/main/java/com/gunshi/project/hsz/controller/AssessIndicatorController.java deleted file mode 100644 index ea020ba..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AssessIndicatorController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.dto.InspectItemDto; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.model.AssessIndicator; -import com.gunshi.project.hsz.service.AssessIndicatorService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -/** - * 描述: 考核指标 - * author: xusan - * date: 2024-09-03 17:46:56 - */ -@Tag(name = "考核指标") -@RestController -@RequestMapping(value="/assessIndicator") -public class AssessIndicatorController { - - @Autowired - private AssessIndicatorService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AssessIndicator dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AssessIndicator dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "启停") - @PostMapping("/startStop") - public R startStop(@RequestBody InspectItemDto dto) { - return R.ok(service.startStop(dto)); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated AttCctvBasePage page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "选择指标") - @PostMapping("/choose") - public R> choosePage(@RequestBody @Validated AttCctvBasePage page) { - return R.ok(service.choosePage(page)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AssessTaskController.java b/src/main/java/com/gunshi/project/hsz/controller/AssessTaskController.java deleted file mode 100644 index 3c61ff1..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AssessTaskController.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.so.AssessTaskPageSo; -import com.gunshi.project.hsz.entity.vo.AssessResultVo; -import com.gunshi.project.hsz.model.AssessTask; -import com.gunshi.project.hsz.service.AssessTaskService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Map; - -/** - * 描述: 考核任务 - * author: xusan - * date: 2024-09-05 14:19:04 - */ -@Tag(name = "考核任务") -@RestController -@RequestMapping(value="/assessTask") -public class AssessTaskController extends AbstractCommonFileController{ - - @Autowired - private AssessTaskService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AssessTask dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AssessTask dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "详情") - @GetMapping("/detail/{id}") - public R detail(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.detail(id)); - } - - @Operation(summary = "考核任务清单") - @PostMapping("/list/page") - public R> listPage(@Validated @RequestBody AssessTaskPageSo page) { - return R.ok(service.listPage(page)); - } - - @Operation(summary = "启动") - @GetMapping("/start/{id}") - public R start(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.start(id)); - } - - @Operation(summary = "我的待办") - @PostMapping("/myTodo/page") - public R> myTodo(@Validated @RequestBody AssessTaskPageSo page) { - return R.ok(service.myTodo(page)); - } - - @Operation(summary = "我的已办") - @PostMapping("/myDone/page") - public R> myDone(@Validated @RequestBody AssessTaskPageSo page) { - return R.ok(service.myDone(page)); - } - - @Operation(summary = "审核通过") - @GetMapping("/pass/{id}") - public R pass(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.pass(id)); - } - - @Operation(summary = "作废") - @GetMapping("/cancel/{id}") - public R cancel(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.cancel(id)); - } - - @Operation(summary = "驳回评分") - @GetMapping("/reject/{id}") - public R reject(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.reject(id)); - } - - @Operation(summary = "考核结果") - @GetMapping("/result/{id}") - public R> result(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.result(id)); - } - - @Operation(summary = "考核结果导出") - @GetMapping("/result/export") - public void resultExport(@RequestParam("id") @Parameter(description = "考核任务id") Long id, HttpServletResponse response) { - service.resultExport(id,response); - } - - @Operation(summary = "人员考核结果") - @PostMapping("/result/stat") - public R> resultStat(@Validated @RequestBody MonthRangeSo monthRangeSo) { - return R.ok(service.resultStat(monthRangeSo)); - } - - @Operation(summary = "等级统计") - @PostMapping("/level/stat") - public R> levelStat(@Validated @RequestBody MonthRangeSo monthRangeSo) { - return R.ok(service.levelStat(monthRangeSo)); - } - - @Override - public String getGroupId() { - return "assessTask"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AssessTeamRatingController.java b/src/main/java/com/gunshi/project/hsz/controller/AssessTeamRatingController.java deleted file mode 100644 index 5c3c693..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AssessTeamRatingController.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.so.AssessTaskPageSo; -import com.gunshi.project.hsz.entity.vo.AssessRatingVo; -import com.gunshi.project.hsz.entity.vo.AssessRectifyVo; -import com.gunshi.project.hsz.entity.vo.AssessScoreVo; -import com.gunshi.project.hsz.model.AssessTeamRating; -import com.gunshi.project.hsz.service.AssessTeamRatingService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Map; - -/** - * 描述: 考核评分详情 - * author: xusan - * date: 2024-09-05 14:20:04 - */ -@Tag(name = "考核评分详情") -@RestController -@RequestMapping(value="/assessTeamRating") -public class AssessTeamRatingController extends AbstractCommonFileController{ - - @Autowired - private AssessTeamRatingService service; - - - @Operation(summary = "完成评分") - @PostMapping("/score") - public R score(@Validated @RequestBody AssessScoreVo vo) { - return R.ok(service.score(vo)); - } - - @Operation(summary = "保存评分") - @PostMapping("/saveScore") - public R saveScore(@Validated @RequestBody AssessScoreVo vo) { - return R.ok(service.saveScore(vo)); - } - - @Operation(summary = "我的待办/已办-查看评分详情") - @GetMapping("/do/detail/{teamId}") - public R> doDetail(@Schema(name = "teamId") @PathVariable("teamId") Long teamId) { - return R.ok(service.doDetail(teamId)); - } - - @Operation(summary = "考核任务清单-查看评分详情") - @GetMapping("/scoreDetail/{objectId}") - public R>> scoreDetail(@Schema(name = "objectId") @PathVariable("objectId") Long objectId) { - return R.ok(service.scoreDetail(objectId)); - } - - @Operation(summary = "考核问题整改") - @PostMapping("/list/page") - public R> listPage(@Validated @RequestBody AssessTaskPageSo page) { - return R.ok(service.listPage(page)); - } - - @Operation(summary = "整改") - @PostMapping("/rectify") - public R rectify(@Validated @RequestBody AssessTeamRating rating) { - return R.ok(service.rectify(rating)); - } - - @Operation(summary = "整改统计") - @PostMapping("/rectify/stat") - public R> rectifyStat(@Validated @RequestBody MonthRangeSo monthRangeSo) { - return R.ok(service.rectifyStat(monthRangeSo)); - } - - @Override - public String getGroupId() { - return "assessTeamRating"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AssessTemplateController.java b/src/main/java/com/gunshi/project/hsz/controller/AssessTemplateController.java deleted file mode 100644 index e5a298b..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AssessTemplateController.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.dto.InspectItemDto; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.model.AssessIndicator; -import com.gunshi.project.hsz.model.AssessTemplate; -import com.gunshi.project.hsz.service.AssessTemplateService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -/** - * 描述: 考核模板 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Tag(name = "考核模板") -@RestController -@RequestMapping(value="/assessTemplate") -public class AssessTemplateController { - - @Autowired - private AssessTemplateService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AssessTemplate dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AssessTemplate dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "启停") - @PostMapping("/startStop") - public R startStop(@RequestBody InspectItemDto dto) { - return R.ok(service.startStop(dto)); - } - - @Operation(summary = "列表") - @PostMapping("/listByType/{templateFreq}") - public R> listByType(@Schema(name = "templateFreq") @PathVariable("templateFreq") Integer templateFreq) { - return R.ok(service.listByType(templateFreq)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated AttCctvBasePage page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "根据模板id查询模板详情") - @GetMapping("/detail/{id}") - public R detail(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.getById(id)); - } - - @Operation(summary = "根据模板id查询关联的指标") - @GetMapping("/queryIndicators/{id}") - public R> queryIndicators(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.queryIndicators(id)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttCctvBaseController.java b/src/main/java/com/gunshi/project/hsz/controller/AttCctvBaseController.java deleted file mode 100644 index 543afe1..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttCctvBaseController.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.entity.vo.CctvControlVo; -import com.gunshi.project.hsz.model.AttCctvBase; -import com.gunshi.project.hsz.model.CctvBMenu; -import com.gunshi.project.hsz.service.AttCctvBaseService; -import com.gunshi.project.hsz.service.CctvBMenuService; -import com.gunshi.project.hsz.util.OkHttpUtil; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 视频基本信息表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "视频基本信息表") -@RestController -@RequestMapping(value="/attCctvBase") -public class AttCctvBaseController { - - @Autowired - private AttCctvBaseService service; - - @Autowired - private CctvBMenuService menuService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttCctvBase dto) { - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - if (StringUtils.isNotBlank(dto.getName()) && service.lambdaQuery().eq(AttCctvBase::getName,dto.getName()) - .count() > 0){ - throw new IllegalArgumentException("当前名称已存在"); - } - if (Objects.nonNull(dto.getMenuId()) && menuService.lambdaQuery().eq(CctvBMenu::getId,dto.getMenuId()) - .count() == 0 - ){ - throw new IllegalArgumentException("当前视频点目录不存在"); - } - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttCctvBase dto) { - - if (Objects.isNull(service.getById(dto.getId()))){ - throw new RuntimeException("当前数据不存在"); - } - if (StringUtils.isNotBlank(dto.getName()) && service.lambdaQuery().eq(AttCctvBase::getName,dto.getName()) - .ne(AttCctvBase::getId,dto.getId()) - .count() > 0){ - throw new IllegalArgumentException("当前名称已存在"); - } - - if (Objects.nonNull(dto.getMenuId()) && menuService.lambdaQuery().eq(CctvBMenu::getId,dto.getMenuId()) - .count() == 0 - ){ - throw new IllegalArgumentException("当前视频点目录不存在"); - } - dto.setCreateTime(null); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))){ - throw new RuntimeException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List res = service.queryList(); - //没时间只能默认为离线 - for (AttCctvBase re : res) { - re.setStatus(0); - } - return R.ok(res); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated AttCctvBasePage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - if (ObjectUtils.isNotNull(page.getCode())) { - query.like(AttCctvBase::getIndexCode, page.getCode()); - } - if (ObjectUtils.isNotNull(page.getMenuId())) { - query.eq(AttCctvBase::getMenuId, page.getMenuId()); - } - if (ObjectUtils.isNotNull(page.getName())) { - query.like(AttCctvBase::getName, page.getName()); - } - if (ObjectUtils.isNotNull(page.getType())) { - query.eq(AttCctvBase::getType, Integer.valueOf(page.getType())); - } - query.orderByDesc(AttCctvBase::getCreateTime); - Page basePage = service.page(page.getPageSo().toPage(), query); - List records = basePage.getRecords(); - if (CollectionUtils.isNotEmpty(records)){ - List list = menuService.list(); - if (CollectionUtils.isNotEmpty(list)){ - Map> listMap = list.stream(). - collect(Collectors.groupingBy(CctvBMenu::getId, Collectors.mapping(CctvBMenu::getName, Collectors.toList()))); - - records.forEach(item -> { - if (Objects.nonNull(item.getMenuId())){ - item.setMenuName(listMap.get(item.getMenuId()).getFirst()); - } - }); - } - basePage.setRecords(records); - } - return R.ok(basePage); - } - - @Operation(summary = "获取预览地址") - @GetMapping("/preview/{indexCode}") - public R preview(@PathVariable("indexCode") String indexCode) { - String api = "http://10.42.6.68:7000/liveAddressLimited?cameraIndexCode=%s&protocol=ws&token=111"; - OkHttpClient client = OkHttpUtil.build(); - String ret = null; - try { - Response resp = client.newCall(new Request.Builder().url(String.format(api, indexCode)).build()).execute(); - String respStr = resp.body().string(); - ObjectMapper om = new ObjectMapper(); - Map map = om.readValue(respStr, Map.class); - ret = map.get("data").toString(); - } catch (IOException e) { - throw new RuntimeException(e); - } - return R.ok(ret); - } - - @Operation(summary = "云台控制") - @PostMapping("/control") - public R control(@RequestBody CctvControlVo vo) { - String indexCode = vo.getIndexCode(); - Integer action = vo.getAction(); - Integer speed = vo.getSpeed(); - String command = vo.getCommand(); - String api = "http://10.42.6.68:7000/controlling?cameraIndexCode="+indexCode+"&action="+action+"&speed="+speed+"&command="+command+"&token=111"; - OkHttpClient client = OkHttpUtil.build(); - String ret = null; - try { - Response resp = client.newCall(new Request.Builder().url(api).build()).execute(); - ret = resp.body().string(); - } catch (IOException e) { - throw new RuntimeException(e); - } - return R.ok(ret); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttDamBaseController.java b/src/main/java/com/gunshi/project/hsz/controller/AttDamBaseController.java deleted file mode 100644 index 3042677..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttDamBaseController.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.GeneralDataPage; -import com.gunshi.project.hsz.model.AttDamBase; -import com.gunshi.project.hsz.service.AttDamBaseService; -import com.gunshi.project.hsz.service.AttResBaseService; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 大坝表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "大坝表") -@RestController -@RequestMapping(value="/attDamBase") -public class AttDamBaseController extends AbstractCommonFileController{ - - @Autowired - private AttDamBaseService service; - - @Autowired - private FileAssociationsService fileService; - - @Autowired - private AttResBaseService resService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttDamBase dto) { - if (StringUtils.isNotBlank(dto.getResCode()) && Objects.isNull(resService.getById(dto.getResCode()))){ - throw new RuntimeException("当前水库不存在"); - } - dto.setDamCode(IdWorker.get32UUID()); - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getDamCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttDamBase dto) { - if (StringUtils.isNotBlank(dto.getResCode()) && Objects.isNull(resService.getById(dto.getResCode()))){ - throw new RuntimeException("当前水库不存在"); - } - if (Objects.isNull(service.getById(dto.getDamCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = service.updateById(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getDamCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = service.removeById(id); - if (data){ - fileService.deleteFile(getGroupId(),id.toString()); - } - return R.ok(data); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List list = service.lambdaQuery().list(); - for (AttDamBase attDamBase : list) { - attDamBase.setFiles(fileService.getFiles(getGroupId(), attDamBase.getDamCode())); - } - return R.ok(list); - } - - @Operation(summary = "获取主副坝,拦洪坝信息") - @GetMapping("/info") - public R> info(@Schema(name = "isMain",description = "是否主坝(0否 1是 2拦洪坝)") @RequestParam(name = "isMain") Integer isMain) { - List list = service.lambdaQuery().eq(AttDamBase::getIsMain, isMain).list(); - for (AttDamBase attDamBase : list) { - attDamBase.setFiles(fileService.getFiles(getGroupId(), attDamBase.getDamCode())); - } - return R.ok(list); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated GeneralDataPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - if (ObjectUtils.isNotNull(page.getCode())){ - query.like(AttDamBase::getDamCode, page.getCode()); - } - if (ObjectUtils.isNotNull(page.getName())){ - query.like(AttDamBase::getDamName, page.getName()); - } - return R.ok(service.page(page.getPageSo().toPage(),query)); - } - @Operation(summary = "查看详情") - @GetMapping("/get/{id}") - public R page(@PathVariable("id") Serializable id) { - AttDamBase data = service.getById(id); - if (Objects.nonNull(data)){ - data.setFiles(fileService.getFiles(getGroupId(),data.getDamCode())); - } - return R.ok(data); - } - - @Override - public String getGroupId() { - return "attDamBase"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttDamProfileController.java b/src/main/java/com/gunshi/project/hsz/controller/AttDamProfileController.java deleted file mode 100644 index 48cb98a..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttDamProfileController.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.GeneralDataPage; -import com.gunshi.project.hsz.entity.vo.ProfilePressTreeVo; -import com.gunshi.project.hsz.model.AttDamProfile; -import com.gunshi.project.hsz.service.AttDamProfileService; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 监测断面信息表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "监测断面信息表") -@RestController -@RequestMapping(value="/attDamProfile") -public class AttDamProfileController extends AbstractCommonFileController{ - - @Autowired - private AttDamProfileService service; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttDamProfile dto) { - if (Objects.nonNull(service.getById(dto.getProfileCode()))) { - throw new IllegalArgumentException("当前编号已存在"); - }else{ - dto.setProfileCode(String.valueOf(IdWorker.getId())); - } - if (StringUtils.isNotBlank(dto.getProfileName())){ - if (service.lambdaQuery().eq(AttDamProfile::getProfileName,dto.getProfileName()).count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - } - - boolean result = service.save(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getProfileCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttDamProfile dto) { - if (Objects.isNull(service.getById(dto.getProfileCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - - if (StringUtils.isNotBlank(dto.getProfileName())){ - if (service.lambdaQuery().eq(AttDamProfile::getProfileName,dto.getProfileName()) - .ne(AttDamProfile::getProfileCode,dto.getProfileCode()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - } - boolean result = service.updateById(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getProfileCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - - LambdaQueryWrapper wq = new LambdaQueryWrapper(); - wq.orderByAsc(AttDamProfile::getProfileCode); - List list = service.list(wq); - return R.ok(list); - } - - @Operation(summary = "断面渗压树") - @PostMapping("/tree") - public R> tree() { - return R.ok(service.tree()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated GeneralDataPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - if (ObjectUtils.isNotNull(page.getName())) { - query.like(AttDamProfile::getProfileName, page.getName()); - } - - Page data = service.page(page.getPageSo().toPage(), query); - data.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getProfileCode()) - )); - return R.ok(data); - } - - - @Override - public String getGroupId() { - return "AttDamProfile"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttGateBController.java b/src/main/java/com/gunshi/project/hsz/controller/AttGateBController.java deleted file mode 100644 index d5a548b..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttGateBController.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.GateMonitorDataVo; -import com.gunshi.project.hsz.model.AttGateB; -import com.gunshi.project.hsz.service.AttGateBService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 水闸基本情况调查表 - * author: xusan - * date: 2024-09-26 10:44:06 - */ -@Tag(name = "水闸基本情况调查表") -@RestController -@RequestMapping(value="/attGateB") -public class AttGateBController { - - @Autowired - private AttGateBService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttGateB dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttGateB dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.queryList()); - } - - @Operation(summary = "监测数据") - @GetMapping("/data") - public R> dataList(@Schema(name = "gateCode",description = "水闸编码") @RequestParam("gateCode") String gateCode) { - return R.ok(service.dataList(gateCode)); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttGateValveController.java b/src/main/java/com/gunshi/project/hsz/controller/AttGateValveController.java deleted file mode 100644 index 34c7802..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttGateValveController.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.GeneralDataPage; -import com.gunshi.project.hsz.model.AttGateValve; -import com.gunshi.project.hsz.service.AttGateValveService; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 闸阀信息表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "闸阀信息表") -@RestController -@RequestMapping(value="/attGateValve") -public class AttGateValveController extends AbstractCommonFileController{ - - @Autowired - private AttGateValveService service; - - @Autowired - private FileAssociationsService fileService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttGateValve dto) { - dto.setValveCode(IdWorker.get32UUID()); - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getValveCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttGateValve dto) { - if (Objects.isNull(service.getById(dto.getValveCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = service.updateById(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getValveCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = service.removeById(id); - if (data){ - fileService.deleteFile(getGroupId(),id.toString()); - } - return R.ok(data); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated GeneralDataPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - if (ObjectUtils.isNotNull(page.getCode())){ - query.like(AttGateValve::getValveCode, page.getCode()); - } - if (ObjectUtils.isNotNull(page.getName())){ - query.like(AttGateValve::getValveName, page.getName()); - } - query.orderByDesc(AttGateValve::getCreateTime); - return R.ok(service.page(page.getPageSo().toPage(),query)); - } - - @Operation(summary = "详情") - @GetMapping("/detail") - public R detail(@Schema(name = "valveCode",description = "闸阀编码") @RequestParam("valveCode") String valveCode) { - return R.ok(service.getById(valveCode)); - } - - @Operation(summary = "查看详情") - @GetMapping("/get/{id}") - public R getDetail(@PathVariable("id") Serializable id) { - AttGateValve data = service.getById(id); - if (Objects.nonNull(data)){ - data.setFiles(fileService.getFiles(getGroupId(),data.getValveCode())); - } - return R.ok(data); - } - - - @Override - public String getGroupId() { - return "attGateValve"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttMeaWeirController.java b/src/main/java/com/gunshi/project/hsz/controller/AttMeaWeirController.java deleted file mode 100644 index d41342f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttMeaWeirController.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.GeneralDataPage; -import com.gunshi.project.hsz.model.AttMeaWeir; -import com.gunshi.project.hsz.service.AttMeaWeirService; -import com.gunshi.project.hsz.service.StAddvcdDService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 量水堰表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "量水堰表") -@RestController -@RequestMapping(value="/attMeaWeir") -public class AttMeaWeirController { - - @Autowired - private AttMeaWeirService service; - - @Autowired - private StAddvcdDService stAddvcdDService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttMeaWeir dto) { - dto.setWeirCode(IdWorker.get32UUID()); - dto.setCreateTime(new Date()); - if (StringUtils.isNotBlank(dto.getAdcd()) && Objects.isNull(stAddvcdDService.getById(dto.getAdcd()))){ - throw new IllegalArgumentException("当前行政区划不存在"); - } - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttMeaWeir dto) { - if (Objects.isNull(service.getById(dto.getWeirCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - - if (StringUtils.isNotBlank(dto.getAdcd()) && Objects.isNull(stAddvcdDService.getById(dto.getAdcd()))){ - throw new IllegalArgumentException("当前行政区划不存在"); - } - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated GeneralDataPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - if (ObjectUtils.isNotNull(page.getCode())) { - query.like(AttMeaWeir::getWeirCode, page.getCode()); - } - if (ObjectUtils.isNotNull(page.getName())) { - query.like(AttMeaWeir::getWeirName, page.getName()); - } - query.orderByDesc(AttMeaWeir::getCreateTime); - return R.ok(service.page(page.getPageSo().toPage(), query)); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttResBaseController.java b/src/main/java/com/gunshi/project/hsz/controller/AttResBaseController.java deleted file mode 100644 index 5b8ecd3..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttResBaseController.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.AttResBase; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.service.AttResBaseService; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 水库基本信息表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库基本信息表") -@RestController -@RequestMapping(value="/attResBase") -public class AttResBaseController extends AbstractCommonFileController { - - @Autowired - private AttResBaseService service; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttResBase dto) { - if (Objects.nonNull(service.getById(dto.getResCode()))) { - throw new IllegalArgumentException("当前编号已存在"); - } - if (StringUtils.isNotBlank(dto.getResName())){ - if (service.lambdaQuery().eq(AttResBase::getResName,dto.getResName()).count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - } - boolean result = service.save(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getResCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttResBase dto) { - if (Objects.isNull(service.getById(dto.getResCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - - if (StringUtils.isNotBlank(dto.getResName())){ - if (service.lambdaQuery() - .eq(AttResBase::getResName,dto.getResName()) - .ne(AttResBase::getResCode,dto.getResCode()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - } - boolean result = service.updateById(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getResCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = service.removeById(id); - if (data){ - fileService.deleteFile(getGroupId(),id.toString()); - } - return R.ok(data); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List list = service.lambdaQuery().list(); - if (CollectionUtils.isNotEmpty(list)){ - list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),o.getResCode()))); - } - return R.ok(list); - } - - @Operation(summary = "设计图纸和资料文件上传") - @PostMapping("/updateFile") - public R updateFile(@Validated(Update.class) @RequestBody AttResBase dto) { - if (Objects.isNull(service.getById(dto.getResCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - List files = dto.getFiles(); - fileService.saveFileNotDel(files, getGroupId(), dto.getResCode(),"1"); - return R.ok(dto); - } - - @Operation(summary = "设计图纸和资料列表") - @GetMapping("/fileList/{resCode}") - public R> list(@PathVariable("resCode") String resCode) { - List files = fileService.getFiles(getGroupId(), resCode); - if (CollectionUtils.isEmpty(files)){ - return R.ok(files); - } - List datas = files.stream().filter(o -> "1".equals(o.getType())) - .collect(Collectors.toList()); - return R.ok(datas); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - @Override - public String getGroupId() { - return "attResBase"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttResBuildingController.java b/src/main/java/com/gunshi/project/hsz/controller/AttResBuildingController.java deleted file mode 100644 index c38657a..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttResBuildingController.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.AttResBuilding; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.service.AttResBuildingService; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * 描述: 水库基本信息表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库基本信息表") -@RestController -@RequestMapping(value="/attResBuilding") -public class AttResBuildingController extends AbstractCommonFileController { - - @Autowired - private AttResBuildingService attResBuildingService; - - @Autowired - private FileAssociationsService fileService; - - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttResBuilding dto) { -// if (Objects.isNull(attResBuildingService.getById(dto.getId()))) { -// throw new IllegalArgumentException("当前数据不存在"); -// } - boolean result = attResBuildingService.updateById(dto); -// if (result){ -// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getResCode()); -// } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @GetMapping("/info") - public R info() { - List list = attResBuildingService.list(); - - if (CollectionUtils.isEmpty(list)) { - throw new IllegalArgumentException("当前数据不存在"); - } - AttResBuilding byId = list.stream().findFirst().orElse(null); - //boolean result = attResBuildingService.updateById(dto); -// if (result){ -// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getResCode()); -// } - return R.ok(byId); - } - -// @Operation(summary = "设计图纸和资料文件上传") -// @PostMapping("/updateFile") -// public R updateFile(@Validated(Update.class) @RequestBody AttResBase dto) { -// if (Objects.isNull(service.getById(dto.getResCode()))) { -// throw new IllegalArgumentException("当前数据不存在"); -// } -// List files = dto.getFiles(); -// fileService.saveFileNotDel(files, getGroupId(), dto.getResCode(),"1"); -// return R.ok(dto); -// } - - @Operation(summary = "设计图纸和资料列表") - @GetMapping("/fileList/{resCode}") - public R> list(@PathVariable("resCode") String resCode) { - List files = fileService.getFiles(getGroupId(), resCode); - if (CollectionUtils.isEmpty(files)){ - return R.ok(files); - } - List datas = files.stream().filter(o -> "1".equals(o.getType())) - .collect(Collectors.toList()); - return R.ok(datas); - } - - @Override - public String getGroupId() { - return "attResBase"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttSpillwayBaseController.java b/src/main/java/com/gunshi/project/hsz/controller/AttSpillwayBaseController.java deleted file mode 100644 index 2a02273..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttSpillwayBaseController.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.GeneralDataPage; -import com.gunshi.project.hsz.model.AttSpillwayBase; -import com.gunshi.project.hsz.service.AttSpillwayBaseService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 溢洪道 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "溢洪道") -@RestController -@RequestMapping(value="/attSpillwayBase") -public class AttSpillwayBaseController { - - @Autowired - private AttSpillwayBaseService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttSpillwayBase dto) { - dto.setCode(String.valueOf(IdWorker.getId())); - - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttSpillwayBase dto) { - if (Objects.isNull(service.getById(dto.getCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated GeneralDataPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getCode())){ - query.like(AttSpillwayBase::getCode, page.getCode()); - } - if (ObjectUtils.isNotNull(page.getName())){ - query.like(AttSpillwayBase::getName, page.getName()); - } - return R.ok(service.page(page.getPageSo().toPage(),query)); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/AttWaterItemController.java b/src/main/java/com/gunshi/project/hsz/controller/AttWaterItemController.java deleted file mode 100644 index bf60c81..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/AttWaterItemController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.AttWaterItem; -import com.gunshi.project.hsz.service.AttWaterItemService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.io.Serializable; -import java.util.List; -/** - * 描述: 水质整编展示项目表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水质整编展示项目表") -@RestController -@RequestMapping(value="/attWaterItem") -public class AttWaterItemController { - - @Autowired - private AttWaterItemService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody AttWaterItem dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody AttWaterItem dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - LambdaQueryWrapper wrapper = new QueryWrapper().lambda() - .eq(true, AttWaterItem::getIsEnable, "0") - .orderBy(true, true, AttWaterItem::getSort); - return R.ok(service.list(wrapper)); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/BroadcastStationController.java b/src/main/java/com/gunshi/project/hsz/controller/BroadcastStationController.java deleted file mode 100644 index ac5c50c..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/BroadcastStationController.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.BroadcastStation; -import com.gunshi.project.hsz.service.BroadcastStationService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: - * author: xusan - * date: 2024-09-25 10:12:34 - */ -@Tag(name = "广播站") -@RestController -@RequestMapping(value="/broadcastStation") -public class BroadcastStationController { - - @Autowired - private BroadcastStationService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody BroadcastStation dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody BroadcastStation dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().orderByAsc(BroadcastStation::getOrderIndex).list()); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/BroadcastTemplateController.java b/src/main/java/com/gunshi/project/hsz/controller/BroadcastTemplateController.java deleted file mode 100644 index 33d6f3f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/BroadcastTemplateController.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.BroadcastTemplate; -import com.gunshi.project.hsz.service.BroadcastTemplateService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: - * author: xusan - * date: 2024-09-25 10:12:13 - */ -@Tag(name = "广播模板") -@RestController -@RequestMapping(value="/broadcastTemplate") -public class BroadcastTemplateController { - - @Autowired - private BroadcastTemplateService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody BroadcastTemplate dto) { - return R.ok(service.saveData(dto)); - } - - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().orderByAsc(BroadcastTemplate::getOrderIndex).list()); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/BroadcastWarnController.java b/src/main/java/com/gunshi/project/hsz/controller/BroadcastWarnController.java deleted file mode 100644 index 6388006..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/BroadcastWarnController.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.BroadcastWarnPageSo; -import com.gunshi.project.hsz.model.BroadcastWarn; -import com.gunshi.project.hsz.service.BroadcastWarnService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -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: xusan - * date: 2024-09-25 10:12:51 - */ -@Tag(name = "广播预警") -@RestController -@RequestMapping(value="/broadcastWarn") -public class BroadcastWarnController { - - @Autowired - private BroadcastWarnService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody BroadcastWarn dto) { - return R.ok(service.saveData(dto)); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@Validated @RequestBody BroadcastWarnPageSo page) { - return R.ok(service.pageQuery(page)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ByLogController.java b/src/main/java/com/gunshi/project/hsz/controller/ByLogController.java deleted file mode 100644 index 2048452..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ByLogController.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.dto.ExportCommonDto; -import com.gunshi.project.hsz.entity.so.ByLogPageSo; -import com.gunshi.project.hsz.model.ByLog; -import com.gunshi.project.hsz.model.ByLogDetail; -import com.gunshi.project.hsz.service.ByLogDetailService; -import com.gunshi.project.hsz.service.ByLogService; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -@Tag(name = "白蚁-日志管理") -@RestController -@RequestMapping(value="/byLog") -public class ByLogController extends AbstractCommonFileController { - - - @Autowired - private ByLogService byLogService; - - @Autowired - private ByLogDetailService byLogDetailService; - - @Autowired - private FileAssociationsService fileService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ByLog dto) { - - boolean flag = byLogService.saveData(dto); - if (flag) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(flag? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ByLog dto) { - - boolean flag = byLogService.update(dto); - - if (flag) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(flag ? dto : null); - } - - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - ByLog byId = byLogService.getById(id); - if(Objects.isNull(byId)){ - throw new IllegalArgumentException("该日志不存在"); - } - //先删除细节 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ByLogDetail::getByLogId,id); - boolean remove = byLogDetailService.remove(queryWrapper); - //再删除主体 - if(remove){ - byLogService.removeById(id); - } - return R.ok(true); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody ByLogPageSo pageSo) { - Page res = byLogService.pageQuery(pageSo); - if(!CollectionUtils.isEmpty(res.getRecords())){ - res.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getId().toString()) - )); - } - return R.ok(res); - } - - @Override - public String getGroupId() { - return "byLog"; - } - - @Operation(description = "日志导出") - @PostMapping("/export") - public void export(@RequestBody ExportCommonDto dto, HttpServletResponse response) { - List byLogs = byLogService.selectByIds(dto.getIds()); - - byLogService.exportToExcel(byLogs,response); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ByPlanController.java b/src/main/java/com/gunshi/project/hsz/controller/ByPlanController.java deleted file mode 100644 index c269acd..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ByPlanController.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ByPlanPageSo; -import com.gunshi.project.hsz.model.ByPlan; -import com.gunshi.project.hsz.model.ByPlanDetail; -import com.gunshi.project.hsz.service.ByPlanDetailService; -import com.gunshi.project.hsz.service.ByPlanService; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysUserMapper; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -@Tag(name = "白蚁-计划管理") -@RestController -@RequestMapping(value="/byPlan") -public class ByPlanController extends AbstractCommonFileController{ - - @Autowired - private FileAssociationsService fileService; - - @Autowired - private ByPlanService byPlanService; - - - @Autowired - private ByPlanDetailService byPlanDetailService; - - - @Autowired - private SysUserMapper sysUserMapper; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ByPlan dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ByPlan::getPlanId, dto.getPlanId()); - ByPlan one = byPlanService.getOne(queryWrapper); - if(Objects.nonNull(one)){ - throw new IllegalArgumentException("该计划编号已存在"); - } - dto.setId(IdWorker.getId()); - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(dto.getUserId())); - if(sysUser != null){ - dto.setUserName(sysUser.getNickName()); - } - List byPlanDetail = dto.getByPlanDetail(); - if(byPlanDetail == null || byPlanDetail.isEmpty()){ - throw new IllegalArgumentException("防止部位至少需要一条数据"); - } - byPlanDetail.forEach(detail -> { - detail.setId(IdWorker.getId()); - }); - boolean save = byPlanService.saveData(dto); - if (save) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(save ? dto : null); - } - - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ByPlan dto) { - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(dto.getUserId())); - if(sysUser != null){ - dto.setUserName(sysUser.getNickName()); - } - boolean flag = byPlanService.update(dto); - - if (flag) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(flag ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ByPlan::getId, id); - ByPlan one = byPlanService.getOne(queryWrapper); - if(Objects.isNull(one)){ - throw new IllegalArgumentException("该计划不存在"); - } - String planId = one.getPlanId(); - LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); - queryWrapperDetail.eq(ByPlanDetail::getPlanId, planId); - //先删细节 - boolean remove = byPlanDetailService.remove(queryWrapperDetail); - //再删主体 - byPlanService.remove(queryWrapper); - return R.ok(true); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody ByPlanPageSo byPlanPageSo) { - Page byPlanPage = byPlanService.pageQuery(byPlanPageSo); - if(!CollectionUtils.isEmpty(byPlanPage.getRecords())){ - byPlanPage.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getId().toString()) - )); - } - return R.ok(byPlanPage); - } - - - @Override - public String getGroupId() { - return "byPlan"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/CctvBMenuController.java b/src/main/java/com/gunshi/project/hsz/controller/CctvBMenuController.java deleted file mode 100644 index deeb655..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/CctvBMenuController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.CctvBMenu; -import com.gunshi.project.hsz.service.CctvBMenuService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 视频点目录 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "视频点目录") -@RestController -@RequestMapping(value="/cctvBMenu") -public class CctvBMenuController { - - @Autowired - private CctvBMenuService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody CctvBMenu dto) { - if (Objects.isNull(dto.getParentId())){ - dto.setParentId(0L); - } - if (StringUtils.isNotBlank(dto.getName()) && service.lambdaQuery().eq(CctvBMenu::getName,dto.getName()) - .count() > 0){ - throw new IllegalArgumentException("当前名称已存在"); - } - dto.setId(IdWorker.getId()); - if (Objects.isNull(dto.getOrderIndex())){ - CctvBMenu one = service.lambdaQuery() - .select(CctvBMenu::getOrderIndex) - .orderByDesc(CctvBMenu::getOrderIndex) - .one(); - if (Objects.nonNull(one)){ - dto.setOrderIndex(one.getOrderIndex() + 1); - } - } - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody CctvBMenu dto) { - if (StringUtils.isNotBlank(dto.getName()) && service.lambdaQuery().eq(CctvBMenu::getName,dto.getName()) - .ne(CctvBMenu::getId,dto.getId()) - .count() > 0){ - throw new IllegalArgumentException("当前名称已存在"); - } - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "树") - @GetMapping("/tree") - public R> tree() { - return R.ok(service.tree()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/CurrentFormAnalysisController.java b/src/main/java/com/gunshi/project/hsz/controller/CurrentFormAnalysisController.java deleted file mode 100644 index d0ca40f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/CurrentFormAnalysisController.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.RainfallAnalysisSo; -import com.gunshi.project.hsz.entity.vo.RainfallAnalysisVo; -import com.gunshi.project.hsz.service.CurrentFormAnalysisService; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -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; -import java.util.Map; - -/** - * TODO - * - * @ClassName CurrentFormAnalysisController - * @Author Huang Qianxiang - * @Date 2024/3/12 17:39 - */ -@RestController -@RequestMapping("/analysis") -@Tag(name = "防汛调度-当前形势分析-降雨分析") -public class CurrentFormAnalysisController { - - @Resource - private CurrentFormAnalysisService currentFormAnalysisService; - - @Post(path = "/rainfallAnalysis",summary = "当前形势分析-降雨分析") - public R>> rainfallAnalysis(@RequestBody RainfallAnalysisSo rainfallAnalysisSo){ - return R.ok(currentFormAnalysisService.rainfallAnalysis(rainfallAnalysisSo)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/DebugController.java b/src/main/java/com/gunshi/project/hsz/controller/DebugController.java deleted file mode 100644 index 2cfad11..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/DebugController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.timetask.JcskDataTask; -import com.gunshi.project.hsz.timetask.PaDataTask; -import com.gunshi.project.hsz.timetask.StWaterDataTask; -import com.gunshi.project.hsz.timetask.WarningRuleTask; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.text.ParseException; - -@Tag(name = "后门") -@RestController -@RequestMapping(value="/debug") -public class DebugController { - - - @Autowired - private PaDataTask paDataTask; - - @Autowired - private JcskDataTask jcskDataTask; - - @Autowired - private WarningRuleTask warningRuleTask; - - @Autowired - private StWaterDataTask stWaterDataTask; - - @GetMapping("/syncWateData") - public String syncWateData() { - try { - stWaterDataTask.syncFlowToWater(); - Thread.sleep(1000); - stWaterDataTask.syncWaterToReorganize(); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - return "success"; - } - - @GetMapping("/syRegressionCaculate") - public String syRegressionCaculate(){ - try { - jcskDataTask.calculate(); - return "SUCCESS"; - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - @GetMapping("/warnRule") - public String warningRuleTast(){ - try { - warningRuleTask.warningRuleExecute(); - return "success"; - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - - @GetMapping("/patask") - public String patask(){ - try { - paDataTask.PaDataCalc(); - return "成功"; - } catch (ParseException e) { - return "失败"; - } - } - - @Operation(description = "同步一次渗压、渗流、位移的数据") - @GetMapping("/syncJcskData") - public R syncJcskData(){ - jcskDataTask.syncGnssREightAmData(); - - jcskDataTask.syncSlREightAmData(); - - jcskDataTask.syncSyREightAmData(); - return R.ok("ok"); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/DeptempController.java b/src/main/java/com/gunshi/project/hsz/controller/DeptempController.java deleted file mode 100644 index d73c228..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/DeptempController.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.github.pagehelper.PageInfo; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.service.DeptempService; -import com.ruoyi.common.constant.HttpStatus; -import com.ruoyi.common.core.domain.entity.SysDept; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.utils.PageUtils; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * - */ -@Tag(name = "dept") -@RestController -@RequestMapping(value="/deptemp") -public class DeptempController { - - @Autowired - private DeptempService deptempService; - - @GetMapping("/deptlist") - public R> deptlist(SysDept dept) - { - List depts = deptempService.selectDeptList(dept); - return R.ok(depts); - } - - @GetMapping("/userlist") - public TableDataInfo userlist(SysUser user) - { - PageUtils.startPage(); - List list = deptempService.selectUserList(user); - return getDataTable(list); - } - - private TableDataInfo getDataTable(List list) - { - TableDataInfo rspData = new TableDataInfo(); - rspData.setCode(HttpStatus.SUCCESS); - rspData.setMsg("查询成功"); - rspData.setRows(list); - rspData.setTotal(new PageInfo(list).getTotal()); - return rspData; - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/DispatchRecordController.java b/src/main/java/com/gunshi/project/hsz/controller/DispatchRecordController.java deleted file mode 100644 index b20ab7c..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/DispatchRecordController.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.DispatchRecordPageSo; -import com.gunshi.project.hsz.model.DispatchRecord; -import com.gunshi.project.hsz.service.DispatchRecordService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -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: xusan - * date: 2024-10-09 09:56:28 - */ -@Tag(name = "调度记录") -@RestController -@RequestMapping(value="/dispatchRecord") -public class DispatchRecordController extends AbstractCommonFileController{ - - @Autowired - private DispatchRecordService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody DispatchRecord dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody DispatchRecord dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @PostMapping("/del") - public R del(@RequestBody @Validated List ids) { - return R.ok(service.delData(ids)); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated DispatchRecordPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "导出") - @PostMapping("/export") - public void export(@RequestBody @Validated DispatchRecordPageSo page, HttpServletResponse response) { - service.export(page,response); - } - - @Override - public String getGroupId() { - return "dispatchRecord"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/FileAssociationsController.java b/src/main/java/com/gunshi/project/hsz/controller/FileAssociationsController.java deleted file mode 100644 index d0ecdb2..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/FileAssociationsController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 文件关联业务表 - * author: xusan - * date: 2024-07-17 10:09:40 - */ -@Tag(name = "文件关联业务表") -@RestController -@RequestMapping(value="/fileAssociations") -public class FileAssociationsController { - - @Autowired - private FileAssociationsService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody FileAssociations dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody FileAssociations dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastDispatchPlanController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastDispatchPlanController.java deleted file mode 100644 index 60e9ca0..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastDispatchPlanController.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.CommonDataPageSo; -import com.gunshi.project.hsz.entity.so.ForecastDispatchPlanPageSo; -import com.gunshi.project.hsz.model.ForecastDispatchPlan; -import com.gunshi.project.hsz.model.ForecastK; -import com.gunshi.project.hsz.service.ForecastDispatchPlanService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - - -@Tag(name = "预报-调度方案管理") -@RestController -@RequestMapping(value="/forecastDispatchPlan") -public class ForecastDispatchPlanController { - - @Autowired - private ForecastDispatchPlanService forecastDispatchPlanService; - - @Operation(summary = "插入") - @PostMapping("/insert") - public R insert(@RequestBody ForecastDispatchPlan dto) { - return R.ok(forecastDispatchPlanService.saveData(dto)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ForecastDispatchPlanPageSo pageSo) { - return R.ok(forecastDispatchPlanService.pageDetail(pageSo)); - } - - @Operation(summary = "删除") - @PostMapping("/delete/{id}") - public R delete(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(forecastDispatchPlanService.deleteById(id)); - } - -// @Operation(summary = "导出") -// @PostMapping("/export") -// public void export(@RequestBody @Validated ForecastDispatchPlanPageSo page, HttpServletResponse response) { -// page.getPageSo().setPageSize(90000); -// Page forecastDispatchPlanPage = forecastDispatchPlanService.pageDetail(page); -// List records = forecastDispatchPlanPage.getRecords(); -// forecastDispatchPlanService.export(records,response); -// } - - @Operation(summary = "导出") - @PostMapping("/export") - public void export(@RequestParam("ids") List ids, HttpServletResponse response) { - List records = forecastDispatchPlanService.selectByIds(ids); - forecastDispatchPlanService.export(records,response); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastKController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastKController.java deleted file mode 100644 index b38154f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastKController.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ForecastK; -import com.gunshi.project.hsz.service.ForecastKService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 预报_前期影响雨量折减系数表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Tag(name = "预报_前期影响雨量折减系数表") -@RestController -@RequestMapping(value="/forecastK") -public class ForecastKController { - - @Autowired - private ForecastKService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ForecastK dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ForecastK dto) { - ForecastK oldK = service.getById(dto.getMonth()); - if (Objects.isNull(oldK)) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setChtm(oldK.getChtm()); - dto.setUpdateTime(new Date()); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated ForecastK forecastK) { - QueryWrapper wrapper = new QueryWrapper(); - if(StringUtils.isNotBlank(forecastK.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastK.getIsAsc()) ? false : forecastK.getIsAsc(), forecastK.getOrderField()); - } - return R.ok(service.list(wrapper)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ForecastK forecastK) { - QueryWrapper wrapper = new QueryWrapper(); - if(StringUtils.isNotBlank(forecastK.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastK.getIsAsc()) ? false : forecastK.getIsAsc(), forecastK.getOrderField()); - } - return R.ok(service.page(forecastK.getPageSo().toPage(), wrapper)); - } - - @Operation(summary = "批量保存") - @PostMapping("/saveBatch") - public R saveBatch(@RequestBody List dtos) { - boolean result = false; - if (CollectionUtils.isNotEmpty(dtos)) { - boolean remove = service.remove(new QueryWrapper<>()); - if (remove) { - result = service.saveBatch(dtos); - } - } - return R.ok(result); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastPPaRController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastPPaRController.java deleted file mode 100644 index 8d6c967..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastPPaRController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ForecastPPaR; -import com.gunshi.project.hsz.service.ForecastPPaRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.io.Serializable; -import java.util.List; -/** - * 描述: 预报_降雨径流关系表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Tag(name = "预报_降雨径流关系表") -@RestController -@RequestMapping(value="/forecastPPaR") -public class ForecastPPaRController { - - @Autowired - private ForecastPPaRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ForecastPPaR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ForecastPPaR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List PPaRList = service.handleList(); - return R.ok(PPaRList); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ForecastPPaR forecastPPaR) { - QueryWrapper wrapper = new QueryWrapper(); - if(StringUtils.isNotBlank(forecastPPaR.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastPPaR.getIsAsc()) ? false : forecastPPaR.getIsAsc(), forecastPPaR.getOrderField()); - } - return R.ok(service.page(forecastPPaR.getPageSo().toPage(), wrapper)); - } - - @Operation(summary = "批量保存") - @PostMapping("/saveBatch") - public R saveBatch(@RequestBody List PPaRList) { - if (PPaRList.size() == 0) { - throw new IllegalArgumentException("数据格式不正确"); - } - boolean result = service.handleSaveBatch(PPaRList); - return R.ok(result); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastPaController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastPaController.java deleted file mode 100644 index ca362c8..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastPaController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ForecastPa; -import com.gunshi.project.hsz.service.ForecastPaService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 预报_土壤含水量表 - * author: cxw - * date: 2024-08-02 12:23:07 - */ -@Tag(name = "预报_土壤含水量表") -@RestController -@RequestMapping(value="/forecastPa") -public class ForecastPaController { - - @Autowired - private ForecastPaService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ForecastPa dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ForecastPa dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastProjectController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastProjectController.java deleted file mode 100644 index 066f986..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastProjectController.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.ForecastResultVo; -import com.gunshi.project.hsz.model.ForecastProject; -import com.gunshi.project.hsz.model.ForecastResults; -import com.gunshi.project.hsz.service.ForecastProjectService; -import com.gunshi.project.hsz.service.ForecastResultsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.io.IOException; -import java.io.Serializable; -import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -/** - * 描述: 预报_预测方案管理表 - * author: cxw - * date: 2024-08-05 11:41:45 - */ -@Tag(name = "预报_预测方案管理表") -@RestController -@RequestMapping(value="/forecastProject") -@Slf4j -public class ForecastProjectController { - - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - @Autowired - private ForecastProjectService service; - - @Autowired - private ForecastResultsService forecastResultsService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ForecastProject dto) { - dto.setId(IdWorker.getId()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ForecastProject dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = service.removeById(id); - // 级联删除 - if(b){ - forecastResultsService.remove(new QueryWrapper().eq("project_id", id)); - } - return R.ok(b); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated ForecastProject forecastProject) { - QueryWrapper wrapper = new QueryWrapper() - .like(ObjectUtils.isNotNull(forecastProject.getName()), "name", forecastProject.getName()) - .like(ObjectUtils.isNotNull(forecastProject.getType()), "type", forecastProject.getType()) - .ge(ObjectUtils.isNotNull(forecastProject.getStartTm()), "forecast_tm", forecastProject.getStartTm()) - .le(ObjectUtils.isNotNull(forecastProject.getEndTm()), "forecast_tm", forecastProject.getEndTm()); - if(StringUtils.isNotBlank(forecastProject.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastProject.getIsAsc()) ? false : forecastProject.getIsAsc(), forecastProject.getOrderField()); - } - List list = service.list(wrapper); - if (list.size() > 0) { - for (ForecastProject fp : list) { - if (StringUtils.isNotEmpty(fp.getUserId()) && fp.getUserId().contains("_")) { - fp.setUserId(fp.getUserId().substring(fp.getUserId().indexOf("_") + 1)); - } - } - } - return R.ok(list); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ForecastProject forecastProject) { - QueryWrapper wrapper = new QueryWrapper() - .like(ObjectUtils.isNotNull(forecastProject.getName()), "name", forecastProject.getName()) - .like(ObjectUtils.isNotNull(forecastProject.getType()), "type", forecastProject.getType()) - .ge(ObjectUtils.isNotNull(forecastProject.getStartTm()), "forecast_tm", forecastProject.getStartTm()) - .le(ObjectUtils.isNotNull(forecastProject.getEndTm()), "forecast_tm", forecastProject.getEndTm()); - if(StringUtils.isNotBlank(forecastProject.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastProject.getIsAsc()) ? false : forecastProject.getIsAsc(), forecastProject.getOrderField()); - } - Page page = service.page(forecastProject.getPageSo().toPage(), wrapper); - if (page.getRecords().size() > 0) { - for (ForecastProject fp : page.getRecords()) { - if (StringUtils.isNotEmpty(fp.getUserId()) && fp.getUserId().contains("_")) { - fp.setUserId(fp.getUserId().substring(fp.getUserId().indexOf("_") + 1)); - } - } - } - return R.ok(page); - } - - - @Operation(summary = "保存人工交互洪水预报结果") - @PostMapping("/saveHumanForecastResults") - public R saveHumanForecastResults(@RequestBody @Validated ForecastProject forecastProject) throws ParseException { - if (CollectionUtils.isEmpty(forecastProject.getVoList())) { - throw new IllegalArgumentException("数据格式不正确"); - } - forecastProject.setId(IdWorker.getId()); - boolean result = service.save(forecastProject); - if (result) { - service.saveForecastResults(forecastProject); - } - return R.ok(result ? forecastProject : null); - } - - - @Operation(summary = "根据方案id查看方案洪水预报结果") - @GetMapping("/getForecastProjectResults") - public R getForecastProjectResults(@Schema(name = "projectId", description = "预测方案id") @RequestParam("projectId") String projectId) { - ForecastProject forecastProject = service.getById(projectId); - if (Objects.isNull(forecastProject)) { - throw new IllegalArgumentException("当前数据不存在"); - } - List resultList = forecastResultsService.list(new QueryWrapper().eq("project_id", projectId).orderBy(true, true, "tm")); - if (CollectionUtils.isNotEmpty(resultList)) { - List vos = resultList.stream() - .map(result -> { - ForecastResultVo vo = new ForecastResultVo(); - vo.setTm(sdf.format(result.getTm())); - vo.setYcRkQValue(result.getYcRkQValue()); - vo.setRealRkQValue(result.getRealRkQValue()); - vo.setYcCkQValue(result.getYcCkQValue()); - vo.setRealCkQValue(result.getRealCkQValue()); - vo.setYcSwHValue(result.getYcSwHValue()); - vo.setRealSwHValue(result.getRealSwHValue()); - BigDecimal ycSwHValue = result.getYcSwHValue() == null ? BigDecimal.ZERO : result.getYcSwHValue(); - BigDecimal realSwHValue = result.getRealSwHValue() == null ? BigDecimal.ZERO : result.getRealSwHValue(); - vo.setSwHDValue(ycSwHValue.subtract(realSwHValue));// 处理预测与实测水位差 - vo.setDrp(result.getDrp()); - vo.setIspreDrp(result.getIspreDrp()); - vo.setR(result.getR()); - vo.setFlLowLimLev(result.getFlLowLimLev()); - vo.setCurrentYdgdyjz(result.getCurrentYdgdyjz()); - vo.setPa(result.getPa()); - return vo; - }).collect(Collectors.toList()); - forecastProject.setVoList(vos); - forecastResultsService.handleVoList(forecastProject); - } - return R.ok(forecastProject); - } - - - @Operation(summary = "pdf导出") - @PostMapping("export") - public void export(@RequestParam("ids") List ids, HttpServletResponse response) { - try { - // 设置响应头 - response.setContentType("application/zip"); - response.setHeader("Content-Disposition", "attachment; filename=\"forecast_reports.zip\""); - - // 创建ZIP输出流 - ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream()); - - - for (String projectId : ids) { - ForecastProject forecastProject = service.getById(projectId); - if (Objects.isNull(forecastProject)) { - throw new IllegalArgumentException("当前数据不存在"); - } - List resultList = forecastResultsService.list(new QueryWrapper().eq("project_id", projectId).orderBy(true, true, "tm")); - if (CollectionUtils.isNotEmpty(resultList)) { - List vos = resultList.stream() - .map(result -> { - ForecastResultVo vo = new ForecastResultVo(); - vo.setTm(sdf.format(result.getTm())); - vo.setYcRkQValue(result.getYcRkQValue()); - vo.setRealRkQValue(result.getRealRkQValue()); - vo.setYcCkQValue(result.getYcCkQValue()); - vo.setRealCkQValue(result.getRealCkQValue()); - vo.setYcSwHValue(result.getYcSwHValue()); - vo.setRealSwHValue(result.getRealSwHValue()); - BigDecimal ycSwHValue = result.getYcSwHValue() == null ? BigDecimal.ZERO : result.getYcSwHValue(); - BigDecimal realSwHValue = result.getRealSwHValue() == null ? BigDecimal.ZERO : result.getRealSwHValue(); - vo.setSwHDValue(ycSwHValue.subtract(realSwHValue));// 处理预测与实测水位差 - vo.setDrp(result.getDrp()); - vo.setIspreDrp(result.getIspreDrp()); - vo.setR(result.getR()); - vo.setFlLowLimLev(result.getFlLowLimLev()); - vo.setCurrentYdgdyjz(result.getCurrentYdgdyjz()); - vo.setPa(result.getPa()); - return vo; - }).collect(Collectors.toList()); - forecastProject.setVoList(vos); - forecastResultsService.handleVoList(forecastProject); - } - //进行pdf导出 - // 为每个项目生成PDF - String fileName = "预报报告_" + forecastProject.getName() + "_" + - new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".pdf"; - // 添加到ZIP - zipOut.putNextEntry(new ZipEntry(fileName)); - service.generatePdf(forecastProject, zipOut); - zipOut.closeEntry(); - } - zipOut.finish(); - zipOut.close(); - } catch (IOException e) { - log.error("PDF导出失败", e); - throw new RuntimeException("导出失败: " + e.getMessage()); - } - - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastResultsController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastResultsController.java deleted file mode 100644 index 5c74b78..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastResultsController.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.ForecastResultVo; -import com.gunshi.project.hsz.model.ForecastProject; -import com.gunshi.project.hsz.model.ForecastResults; -import com.gunshi.project.hsz.model.ForecastTask; -import com.gunshi.project.hsz.service.ForecastResultsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.io.Serializable; -import java.math.BigDecimal; -import java.util.List; -import java.util.stream.Collectors; - -/** - * 描述: 预报_预测结果表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Tag(name = "预报_预测结果表") -@RestController -@RequestMapping(value="/forecastResults") -public class ForecastResultsController { - - @Autowired - private ForecastResultsService service; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ForecastResults dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ForecastResults dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated ForecastResults forecastResults) { - QueryWrapper wrapper = new QueryWrapper(); - if(StringUtils.isNotBlank(forecastResults.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastResults.getIsAsc()) ? false : forecastResults.getIsAsc(), forecastResults.getOrderField()); - } - return R.ok(service.list(wrapper)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ForecastResults forecastResults) { - QueryWrapper wrapper = new QueryWrapper<>(); - if(StringUtils.isNotBlank(forecastResults.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastResults.getIsAsc()) ? false : forecastResults.getIsAsc(), forecastResults.getOrderField()); - } - return R.ok(service.page(forecastResults.getPageSo().toPage(), wrapper)); - } - - @Operation(summary = "获取人工交互洪水预报结果") - @PostMapping("/getHumanForecastResult") - public R getHumanForecastResult(@RequestBody ForecastTask forecastTask) { - ForecastProject forecastProject = new ForecastProject(); - List voList = service.getHumanForecastResult(forecastTask); - forecastProject.setType("2"); - forecastProject.setForecastTm(forecastTask.getForecastTime()); - forecastProject.setProjectTm(forecastTask.getNowTime()); - forecastProject.setStartTm(forecastTask.getStartTime()); - forecastProject.setEndTm(forecastTask.getEndTime()); - forecastProject.setForecastPeriod(forecastTask.getForecastPeriod()); - forecastProject.setForecastWarm(forecastTask.getForecastWarm()); - forecastProject.setVoList(voList); - if (CollectionUtils.isNotEmpty(voList)) { - service.handleVoList(forecastProject); - } - - //收集实际数据和 - List collect = voList.stream().filter(o -> { - return o.getRealRkQValue() != null; - }).collect(Collectors.toList()); - BigDecimal rkVValue = BigDecimal.ZERO; - for (ForecastResultVo entity : collect) { - rkVValue = rkVValue.add(entity.getRealRkQValue().multiply(new BigDecimal("3600"))); - } - // 转换为万m³ - rkVValue = rkVValue.divide(new BigDecimal("10000"), 2, BigDecimal.ROUND_HALF_UP); - forecastProject.setRkVValue(rkVValue); - return R.ok(forecastProject); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastTaskController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastTaskController.java deleted file mode 100644 index 916efa6..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastTaskController.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ForecastTask; -import com.gunshi.project.hsz.schedule.TaskGroupHandler; -import com.gunshi.project.hsz.service.ForecastTaskService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 预报_预测自动任务管理表 - * author: cxw - * date: 2024-08-05 11:41:45 - */ -@Tag(name = "预报_预测自动任务管理表") -@RestController -@RequestMapping(value="/forecastTask") -public class ForecastTaskController { - - @Autowired - private ForecastTaskService service; - - @Autowired - private TaskGroupHandler taskGroupHandler; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ForecastTask dto) { - dto.setId(IdWorker.getId()); - boolean result = service.save(dto); - if (result) { - taskGroupHandler.addCronJob(String.valueOf(dto.getId()), dto); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ForecastTask dto) { - ForecastTask oldTask = service.getById(dto.getId()); - if (Objects.isNull(oldTask)) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setChtm(oldTask.getChtm()); - dto.setUpdateTm(new Date()); - boolean result = service.updateById(dto); - if (result) { - // 先删除,再重新添加 - taskGroupHandler.removeCronJob(String.valueOf(dto.getId())); - taskGroupHandler.addCronJob(String.valueOf(dto.getId()), dto); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = service.removeById(id); - if (b) { - taskGroupHandler.removeCronJob((String) id); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated ForecastTask forecastTask) { - QueryWrapper wrapper = new QueryWrapper() - .in("status", "0", "1")// 只返回启用和暂停的 - .like(ObjectUtils.isNotNull(forecastTask.getName()), "name", forecastTask.getName()); - if(StringUtils.isNotBlank(forecastTask.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastTask.getIsAsc()) ? false : forecastTask.getIsAsc(), forecastTask.getOrderField()); - } - List list = service.list(wrapper); - if (list.size() > 0) { - for (ForecastTask task : list) { - if (StringUtils.isNotEmpty(task.getUserId()) && task.getUserId().contains("_")) { - task.setUserName(task.getUserId().substring(task.getUserId().indexOf("_") + 1)); - } - } - } - return R.ok(list); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ForecastTask forecastTask) { - QueryWrapper wrapper = new QueryWrapper() - .in("status", "0", "1")// 只返回启用和暂停的 - .like(ObjectUtils.isNotNull(forecastTask.getName()), "name", forecastTask.getName()); - if(StringUtils.isNotBlank(forecastTask.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastTask.getIsAsc()) ? false : forecastTask.getIsAsc(), forecastTask.getOrderField()); - } - Page page = service.page(forecastTask.getPageSo().toPage(), wrapper); - if (page.getRecords().size() > 0) { - for (ForecastTask task : page.getRecords()) { - if (StringUtils.isNotEmpty(task.getUserId()) && task.getUserId().contains("_")) { - task.setUserName(task.getUserId().substring(task.getUserId().indexOf("_") + 1)); - } - } - } - return R.ok(page); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastUController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastUController.java deleted file mode 100644 index 64c0317..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastUController.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ForecastU; -import com.gunshi.project.hsz.service.ForecastUService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 预报_时段单位线表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Tag(name = "预报_时段单位线表") -@RestController -@RequestMapping(value="/forecastU") -public class ForecastUController { - - @Autowired - private ForecastUService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ForecastU dto) { - dto.setId(IdWorker.getId()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ForecastU dto) { - ForecastU oldU = service.getById(dto.getId()); - if (Objects.isNull(oldU)) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setChtm(oldU.getChtm()); - dto.setUpdateTime(new Date()); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated ForecastU forecastU) { - QueryWrapper wrapper = new QueryWrapper(); - if(StringUtils.isNotBlank(forecastU.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastU.getIsAsc()) ? false : forecastU.getIsAsc(), forecastU.getOrderField()); - } - return R.ok(service.list(wrapper)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ForecastU forecastU) { - QueryWrapper wrapper = new QueryWrapper(); - if(StringUtils.isNotBlank(forecastU.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastU.getIsAsc()) ? false : forecastU.getIsAsc(), forecastU.getOrderField()); - } - return R.ok(service.page(forecastU.getPageSo().toPage(), wrapper)); - } - - @Operation(summary = "批量保存") - @PostMapping("/saveBatch") - public R saveBatch(@RequestBody List dtos) { - boolean result = false; - if (CollectionUtils.isNotEmpty(dtos)) { - boolean remove = service.remove(new QueryWrapper<>()); - if (remove) { - for (ForecastU u : dtos) { - u.setId(IdWorker.getId()); - } - result = service.saveBatch(dtos); - } - } - return R.ok(result); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ForecastUseparamController.java b/src/main/java/com/gunshi/project/hsz/controller/ForecastUseparamController.java deleted file mode 100644 index 3b4af33..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ForecastUseparamController.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ForecastU; -import com.gunshi.project.hsz.model.ForecastUseparam; -import com.gunshi.project.hsz.service.ForecastUService; -import com.gunshi.project.hsz.service.ForecastUseparamService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.io.Serializable; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 预报_通用参数管理 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Tag(name = "预报_通用参数管理") -@RestController -@RequestMapping(value="/forecastUseparam") -public class ForecastUseparamController { - - @Autowired - private ForecastUseparamService service; - - @Autowired - private ForecastUService forecastUService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ForecastUseparam dto) { - dto.setId(IdWorker.getId()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ForecastUseparam dto) { - ForecastUseparam oldData = service.getById(dto.getId()); - if (Objects.isNull(oldData)) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setChtm(oldData.getChtm()); - dto.setUpdateTime(new Date()); - boolean result = service.updateById(dto); - // 修改计算单位线的参数时,需要重新计算一次 - if (result && (dto.getParamCode().equals("cymj") || dto.getParamCode().equals("hdc") || dto.getParamCode().equals("hdpj") || dto.getParamCode().equals("dt") || dto.getParamCode().equals("h")) && !dto.getParamValue().equals(oldData.getParamValue())) { - // 承雨面积areaF:"cymj", 河道长lengthL:"hdc", 河道坡降j:"hdpj", 时段∆t:"dt", h毫米净雨:"h" - QueryWrapper qw = new QueryWrapper().in("param_code", "cymj", "hdc", "hdpj", "dt", "h"); - List> uMaps = service.listMaps(qw); - Map uMap = uMaps.stream().collect(Collectors.toMap(map -> (String) map.get("param_code"), map -> (String) map.get("param_value"))); - if (uMap.containsKey("cymj") && StringUtils.isNotEmpty(uMap.get("cymj")) - && uMap.containsKey("hdc") && StringUtils.isNotEmpty(uMap.get("hdc")) - && uMap.containsKey("hdpj") && StringUtils.isNotEmpty(uMap.get("hdpj")) - && uMap.containsKey("dt") && StringUtils.isNotEmpty(uMap.get("dt"))) { - List uParam = service.calcU(new BigDecimal(uMap.get("cymj")), - new BigDecimal(uMap.get("hdc")), - new BigDecimal(uMap.get("hdpj")), - Double.valueOf(uMap.get("dt")), - StringUtils.isNotEmpty(uMap.get("h")) ? new BigDecimal(uMap.get("h")) : BigDecimal.ONE, StringUtils.isNotEmpty(uMap.get("swfq")) ? uMap.get("swfq") : "I"); - if (CollectionUtils.isNotEmpty(uParam)) { - forecastUService.remove(new UpdateWrapper<>()); - List uList = new ArrayList<>(); - Date date = new Date(); - for (BigDecimal u : uParam) { - ForecastU forecastU = new ForecastU(); - forecastU.setId(IdWorker.getId()); - forecastU.setUValue(u); - forecastU.setChtm(date); - forecastU.setUpdateTime(date); - uList.add(forecastU); - } - forecastUService.saveBatch(uList); - } - } - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated ForecastUseparam forecastUseparam) { - QueryWrapper wrapper = new QueryWrapper(); - if(StringUtils.isNotBlank(forecastUseparam.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastUseparam.getIsAsc()) ? false : forecastUseparam.getIsAsc(), forecastUseparam.getOrderField()); - } - return R.ok(service.list(wrapper)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ForecastUseparam forecastUseparam) { - QueryWrapper wrapper = new QueryWrapper(); - if(StringUtils.isNotBlank(forecastUseparam.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(forecastUseparam.getIsAsc()) ? false : forecastUseparam.getIsAsc(), forecastUseparam.getOrderField()); - } - return R.ok(service.page(forecastUseparam.getPageSo().toPage(), wrapper)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/GatePoreController.java b/src/main/java/com/gunshi/project/hsz/controller/GatePoreController.java deleted file mode 100644 index c37d16e..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/GatePoreController.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.GatePore; -import com.gunshi.project.hsz.service.GatePoreService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 闸孔信息表 - * author: xusan - * date: 2024-09-26 10:44:57 - */ -@Tag(name = "闸孔信息表") -@RestController -@RequestMapping(value="/gatePore") -public class GatePoreController { - - @Autowired - private GatePoreService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody GatePore dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody GatePore dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "通过stcd获取闸孔开度") - @GetMapping("/listByStcd") - public R> list(@Schema(name = "stcd",description = "测站编码") @RequestParam("stcd") String stcd) { - return R.ok(service.lambdaQuery().eq(GatePore::getStcd,stcd).orderByAsc(GatePore::getGateNumber).list()); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/GateValveCctvRelController.java b/src/main/java/com/gunshi/project/hsz/controller/GateValveCctvRelController.java deleted file mode 100644 index 83bebd4..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/GateValveCctvRelController.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.GateValveCctvRelPage; -import com.gunshi.project.hsz.entity.vo.GateValveCctvRelVo; -import com.gunshi.project.hsz.model.GateValveCctvRel; -import com.gunshi.project.hsz.service.GateValveCctvRelService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 闸阀关联视频点 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "闸阀关联视频点") -@RestController -@RequestMapping(value="/gateValveCctvRel") -public class GateValveCctvRelController { - - @Autowired - private GateValveCctvRelService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class)@RequestBody GateValveCctvRel dto) { - if (service.lambdaQuery() - .eq(GateValveCctvRel::getValveCode,dto.getValveCode()) - .eq(GateValveCctvRel::getIndexCode,dto.getIndexCode()) - .count() > 0) { - throw new IllegalArgumentException("当前编号已关联"); - } - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody GateValveCctvRel dto) { - if (Objects.isNull(service.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - if (service.lambdaQuery() - .eq(GateValveCctvRel::getValveCode,dto.getValveCode()) - .eq(GateValveCctvRel::getIndexCode,dto.getIndexCode()) - .ne(GateValveCctvRel::getId,dto.getId()) - .count() > 0) { - throw new IllegalArgumentException("当前编号已关联"); - } - dto.setCreateTime(null); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestParam(value = "valveCode",required = false) @Parameter(description = "闸阀编码") String valveCode) { - return R.ok(service.queryList(valveCode)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody GateValveCctvRelPage page) { - return R.ok(service.pages(page)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/GateValveRController.java b/src/main/java/com/gunshi/project/hsz/controller/GateValveRController.java deleted file mode 100644 index 7e120b2..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/GateValveRController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.GateHisPageSo; -import com.gunshi.project.hsz.entity.vo.GateStautsVo; -import com.gunshi.project.hsz.model.GateValveR; -import com.gunshi.project.hsz.service.GateValveRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 闸阀开关历史表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "闸阀开关历史表") -@RestController -@RequestMapping(value="/gateValveR") -public class GateValveRController { - - @Autowired - private GateValveRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody GateValveR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody GateValveR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody GateHisPageSo so) { - return R.ok(service.pageQuery(so)); - } - - @Operation(summary = "导出") - @PostMapping("/export") - public void export(@RequestBody GateHisPageSo so, HttpServletResponse response) { - service.export(so,response); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/GateValveRealController.java b/src/main/java/com/gunshi/project/hsz/controller/GateValveRealController.java deleted file mode 100644 index c076195..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/GateValveRealController.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.write.metadata.style.WriteCellStyle; -import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; -import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.GateHisPageSo; -import com.gunshi.project.hsz.entity.vo.GateStautsVo; -import com.gunshi.project.hsz.entity.vo.GateValveOplogVo; -import com.gunshi.project.hsz.model.GateValveKey; -import com.gunshi.project.hsz.model.GateValveOplog; -import com.gunshi.project.hsz.model.GateValveReal; -import com.gunshi.project.hsz.service.GateValveRealService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.apache.poi.ss.usermodel.FillPatternType; -import org.apache.poi.ss.usermodel.IndexedColors; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.net.URLEncoder; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 闸阀开关表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "闸阀开关表") -@RestController -@RequestMapping(value="/gateValveReal") -public class GateValveRealController { - - private static final Logger log = LoggerFactory.getLogger(GateValveRealController.class); - - - @Autowired - private GateValveRealService service; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody GateValveReal dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody GateValveReal dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.gateStatusList()); - } - - @Operation(summary = "通过闸阀查询实时流量") - @GetMapping("/realQ") - public R realQ(@RequestParam("valveCode") @Parameter(description = "闸阀编码") String valveCode) { - return R.ok(service.realQ(valveCode)); - } - - @Operation(summary = "调节闸阀") - @PostMapping("/control") - public R control(@RequestBody GateValveKey gateValveKey) { - return R.ok(service.control(gateValveKey)); - } - - @Operation(summary = "闸阀操作日志-分页") - @PostMapping("/log/page") - public R> logPage(@RequestBody GateHisPageSo so) { - return R.ok(service.logPage(so)); - } - - @Operation(summary = "闸阀操作日志-导出") - @PostMapping("/log/exp") - public void logexp(@RequestBody GateHisPageSo so, HttpServletResponse response) { - so.getPageSo().setPageSize(1000000); - Page gateValveOplogVoPage = service.logPage(so); - - try { -// 设置响应 - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setCharacterEncoding("utf-8"); - String fileName = URLEncoder.encode("闸阀操作日志_" + System.currentTimeMillis(), "UTF-8") - .replaceAll("\\+", "%20"); - response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); - - // 自定义表头样式 - WriteCellStyle headStyle = new WriteCellStyle(); - headStyle.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex()); - headStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); - - // 自定义内容样式 - WriteCellStyle contentStyle = new WriteCellStyle(); - contentStyle.setWrapped(true); // 自动换行 - List> headlist= Arrays.asList( - Arrays.asList("闸阀名称"), - Arrays.asList("操作人"), - Arrays.asList("操作时间"), - Arrays.asList("操作内容"), - Arrays.asList("设定开度"), - Arrays.asList("操作前开度") - ); - // 构建导出器 - EasyExcel.write(response.getOutputStream()) - .head(headlist) // 自定义表头 - .registerWriteHandler(new HorizontalCellStyleStrategy(headStyle, contentStyle)) - .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 自动列宽 - .sheet("闸阀操作日志") - .doWrite(gateValveOplogVoPage.getRecords()); - }catch (Exception e){ - log.error("导出异常", e); - } - } - - @Operation(summary = "闸阀操作日志-分页") - @PostMapping("/log/loglist") - public R> loglist(@RequestBody GateHisPageSo so) { - List gateStautsVos = service.gateStatusList(); - if(CollectionUtil.isEmpty(gateStautsVos)){ - return R.ok(null); - } - List collect = gateStautsVos.stream().map(e -> { - GateValveOplogVo vo = new GateValveOplogVo(); - GateValveOplog loginfo = service.loginfo(e.getValveCode()); - if(Objects.nonNull(loginfo)){ - BeanUtils.copyProperties(loginfo, vo); - } - vo.setValveCode(e.getValveCode()); - vo.setValveName(e.getValveName()); - return vo; - }).collect(Collectors.toList()); - return R.ok(collect); - } - - - - - @Operation(summary = "闸阀操作日志-导出") - @PostMapping("/log/export") - public void logExport(@RequestBody GateHisPageSo so, HttpServletResponse response) { - service.logExport(so,response); - } - - @Operation(summary = "预计可供水时间") - @GetMapping("/supply/time") - public R> supplyTime(@RequestParam(value = "year",required = false) @Parameter(description = "年份") Integer year,@RequestParam(value = "month",required = false) @Parameter(description = "月份") Integer month) { - return R.ok(service.supplyTime(year,month)); - } - - @Operation(summary = "预测来水量") - @GetMapping("/predict/water") - public R predictWater(@RequestParam(value = "year") @Parameter(description = "年份") Integer year, @RequestParam(value = "month") @Parameter(description = "月份") Integer month) { - return R.ok(service.predictWater(year,month)); - } - - @Operation(summary = "预测来水量分月份") - @GetMapping("/predict/water/month") - public R predictWaterMonth(@RequestParam(value = "year") @Parameter(description = "年份") Integer year, @RequestParam(value = "month") @Parameter(description = "月份") Integer month) { - return R.ok(service.predictWaterMonth(year,month)); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/HiddenInfoController.java b/src/main/java/com/gunshi/project/hsz/controller/HiddenInfoController.java deleted file mode 100644 index 5e0c6b2..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/HiddenInfoController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@Tag(name = "维护养护-隐患点") -@RestController -@RequestMapping(value="/hiddeninfo") -public class HiddenInfoController extends AbstractCommonFileController { - @Override - public String getGroupId() { - return "hiddeninfo"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/HisWaterDataController.java b/src/main/java/com/gunshi/project/hsz/controller/HisWaterDataController.java deleted file mode 100644 index 025a376..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/HisWaterDataController.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.JcskSlB; -import com.gunshi.project.hsz.common.model.so.JcskSlBPageSo; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.gunshi.project.hsz.entity.dto.ExportCommonDto; -import com.gunshi.project.hsz.entity.so.HisWaterDataPageSo; -import com.gunshi.project.hsz.entity.vo.HisWaterDataVo; -import com.gunshi.project.hsz.mapper.HisWaterDataMapper; -import com.gunshi.project.hsz.model.HisWaterData; -import com.gunshi.project.hsz.service.HisWaterDataService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Objects; - -@Tag(name = "预警-历史水库水量资料") -@RestController -@RequestMapping(value="/hiswater") -public class HisWaterDataController { - - - @Autowired - private HisWaterDataService hisWaterDataService; - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated HisWaterDataPageSo page) { - return R.ok(hisWaterDataService.pageQuery(page)); - } - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody HisWaterDataVo dto) { - boolean result = hisWaterDataService.saveData(dto); - return R.ok(result); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody HisWaterDataVo dto) { - boolean result = hisWaterDataService.updateData(dto); - return R.ok(result); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(hisWaterDataService.removeData(id)); - } - - @Operation(summary = "导出") - @PostMapping("/export") - public void export(@RequestBody ExportCommonDto dto, HttpServletResponse response) { - List records = hisWaterDataService.selectList(dto); - hisWaterDataService.export(records,response); - } - - @Operation(summary = "年份列表") - @GetMapping("/year/list") - public R> yearList(){ - return R.ok(hisWaterDataService.yearList()); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ICommonDeleteByIdWithAttach.java b/src/main/java/com/gunshi/project/hsz/controller/ICommonDeleteByIdWithAttach.java deleted file mode 100644 index ce2bc1e..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ICommonDeleteByIdWithAttach.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.db.dao.BaseDao; -import com.gunshi.db.dao.IMapper; -import com.gunshi.project.hsz.service.AbstractModelWithAttachService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; - -import java.io.Serializable; - -/** - * 通用按id删除 - * - * @author lyf - * @version 1.0.0 - * @since 2024-01-31 - */ -public interface ICommonDeleteByIdWithAttach, AutoDao extends BaseDao, - AttachModel, AttachModelAutoMapper extends IMapper, AttachModelAutoDao extends BaseDao> { - - AbstractModelWithAttachService getModelService(); - - Serializable getId(Serializable id); - - @Operation(summary = "按id删除") - @GetMapping("/deleteById/{id}") - default R commonDeleteById(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(getModelService().removeById(getId(id))); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ICommonFileController.java b/src/main/java/com/gunshi/project/hsz/controller/ICommonFileController.java deleted file mode 100644 index a091984..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ICommonFileController.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.file.controller.IFileController; -import com.gunshi.file.model.FileDescriptor; -import io.swagger.v3.oas.annotations.Parameter; -import jakarta.servlet.http.HttpServletRequest; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.multipart.MultipartFile; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-03-12 - */ -public interface ICommonFileController extends IFileController { - - String getGroupId(); - - String getBusinessType(); - - R uploadSingle( - @Parameter(description = "文件") @RequestPart("file") MultipartFile file, - @Parameter(description = "上传者用户id", hidden = true) @RequestParam(value = "userId", required = false) Long userId, - @Parameter(hidden = true) HttpServletRequest request) throws Exception; -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ICommonInsertWithAttach.java b/src/main/java/com/gunshi/project/hsz/controller/ICommonInsertWithAttach.java deleted file mode 100644 index 5c0aab0..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ICommonInsertWithAttach.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.db.dao.BaseDao; -import com.gunshi.db.dao.IMapper; -import com.gunshi.project.hsz.service.AbstractModelWithAttachService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-03-19 - */ -public interface ICommonInsertWithAttach, AutoDao extends BaseDao, - AttachModel, AttachModelAutoMapper extends IMapper, AttachModelAutoDao extends BaseDao> { - AbstractModelWithAttachService getModelService(); - - void customSetFieldForInsert(Model model); - - @Operation(summary = "实体类新增") - @PostMapping("/insert") - default R commonInsert(@Validated(Insert.class) @RequestBody Model model) { - customSetFieldForInsert(model); - boolean result = getModelService().save(model); - return R.ok(result ? model : null); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ICommonQueryAttach.java b/src/main/java/com/gunshi/project/hsz/controller/ICommonQueryAttach.java deleted file mode 100644 index 10c6712..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ICommonQueryAttach.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.gunshi.core.result.R; -import com.gunshi.db.dao.BaseDao; -import com.gunshi.db.dao.IMapper; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; - -import java.io.Serializable; -import java.util.List; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-03-19 - */ -public interface ICommonQueryAttach, AutoDao extends BaseDao> { - AutoDao getAttachAutoDao(); - - String getAttachBzIdName(); - - IdType getId(Serializable id); - - @Operation(summary = "按id查询") - @GetMapping("/attach/getById/{id}") - default R commonGetAttachById(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(getAttachAutoDao().getById(id)); - } - - @Operation(summary = "按bzId查询") - @GetMapping("/attach/getByBzId/{bzId}") - default R> commonGetAttachByBzId(@Schema(name = "bzId") @PathVariable("bzId") Serializable bzId) { - return R.ok(getAttachAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), getId(bzId)))); - } - - @Operation(summary = "列表查询") - @GetMapping("/attach/find") - default R> commonFind(@Schema(name = "bzId") @PathVariable("bzId") Serializable bzId) { - return R.ok(getAttachAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), getId(bzId)))); - } -} - diff --git a/src/main/java/com/gunshi/project/hsz/controller/ICommonUpdateByIdWithAttach.java b/src/main/java/com/gunshi/project/hsz/controller/ICommonUpdateByIdWithAttach.java deleted file mode 100644 index 1edbe3c..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ICommonUpdateByIdWithAttach.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.db.dao.BaseDao; -import com.gunshi.db.dao.IMapper; -import com.gunshi.project.hsz.service.AbstractModelWithAttachService; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - -/** - * 通用实体类新增 - * - * @author lyf - * @version 1.0.0 - * @since 2024-02-19 - */ -public interface ICommonUpdateByIdWithAttach, AutoDao extends BaseDao, - AttachModel, AttachModelAutoMapper extends IMapper, AttachModelAutoDao extends BaseDao> { - - AbstractModelWithAttachService getModelService(); - - void customSetFieldForUpdate(Model model); - - @Operation(summary = "实体类修改") - @PostMapping("/update") - default R commonUpdateById(@Validated(Update.class) @RequestBody Model model) { - customSetFieldForUpdate(model); - boolean result = getModelService().updateById(model); - return R.ok(result ? model : null); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ISCAIEventController.java b/src/main/java/com/gunshi/project/hsz/controller/ISCAIEventController.java deleted file mode 100644 index 4e72423..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ISCAIEventController.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ISCAIEventPageSo; -import com.gunshi.project.hsz.model.ISCAIEvent; -import com.gunshi.project.hsz.service.ISCAIEventService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@Tag(name = "海康ai事件Controller") -@RestController -@RequestMapping(value="/iscaiEvent") -public class ISCAIEventController { - - - @Autowired - private ISCAIEventService iscaiEventService; - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> pageInfo(@RequestBody ISCAIEventPageSo dto) { - return R.ok(iscaiEventService.pageInfo(dto)); - } - - @Operation(summary = "列表") - @GetMapping("/list") - public R> list() { - return R.ok(iscaiEventService.lambdaQuery().list()); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/IaCBsnssinfoController.java b/src/main/java/com/gunshi/project/hsz/controller/IaCBsnssinfoController.java deleted file mode 100644 index 141e08f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/IaCBsnssinfoController.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.google.common.collect.Lists; -import com.gunshi.core.result.R; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.entity.vo.HomeIaCBsnssinfoVo; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.model.IaCBsnssinfo; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.IaCBsnssinfoService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 防治区企事业单位汇总表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "防治区企事业单位汇总表") -@RestController -@RequestMapping(value="/iaCBsnssinfo") -public class IaCBsnssinfoController extends AbstractCommonFileController{ - - @Autowired - private IaCBsnssinfoService service; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody IaCBsnssinfo dto) { - if (Objects.nonNull(service.getById(dto.getEicd()))) { - throw new IllegalArgumentException("当前编号已存在"); - } - if (StringUtils.isNotBlank(dto.getName())){ - if (service.lambdaQuery().eq(IaCBsnssinfo::getName,dto.getName()).count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - } - - boolean result = service.save(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getEicd()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody IaCBsnssinfo dto) { - if (Objects.isNull(service.getById(dto.getEicd()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = service.updateById(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getEicd()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = service.removeById(id); - - if (data){ - fileService.deleteFile(getGroupId(),id.toString()); - } - - return R.ok(data); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - @Operation(summary = "详情和行政区划数据查询") - @PostMapping("/getDetailsAndAddvcdDataList") - public R> getDetailsAndMonitoringDataList() { - List list = service.getDetailsAndMonitoringDataLis(); - if (CollectionUtils.isNotEmpty(list)){ - list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),o.getEicd()))); - } - return R.ok(list); - } - - @Operation(summary = "上传相关图片文件") - @PostMapping(path = "/setImgFile", consumes = "multipart/form-data") - public R setImgFile(@Parameter(description = "文件") @RequestPart("files") MultipartFile[] files) throws Exception { - - for (MultipartFile file : files) { - - String fileName = file.getOriginalFilename(); - String eicd = fileName.split("\\.")[0]; - - FileDescriptor fd = new FileDescriptor(); - fd.setBusinessType(getBusinessType()); - fd.setGroupId(getGroupId()); - fd.setUserId(1L); - fd.setAccessGroup(getService().getAccessGroup()); - fd.setFilePath(generateFilePath(getProperty().getAppCode(), getBusinessType(), 1L, getGroupId(), fileName)); - fd.setFileName(fileName); - fd.setFileLength(file.getSize()); - - getService().upload(fd, file.getInputStream()); - - FileAssociations fileAssociations = new FileAssociations(); - fileAssociations.setFileId(fd.getFileId()); - - fileService.saveFile(Lists.newArrayList(fileAssociations), getGroupId(), eicd); - } - - - return R.ok(); - } - - - - @Override - public String getGroupId() { - return "iaCBsnssinfo"; - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/IaCDanadController.java b/src/main/java/com/gunshi/project/hsz/controller/IaCDanadController.java deleted file mode 100644 index 648af8b..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/IaCDanadController.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.HomeIaCDanadVo; -import com.gunshi.project.hsz.model.IaCDanad; -import com.gunshi.project.hsz.service.IaCDanadService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 危险区基本情况调查成果汇总表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "危险区基本情况调查成果汇总表") -@RestController -@RequestMapping(value="/iaCDanad") -public class IaCDanadController { - - @Autowired - private IaCDanadService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody IaCDanad dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody IaCDanad dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "详情") - @GetMapping("/detail/{id}") - public R detail(@Schema(name = "id") @PathVariable("id") String id) { - return R.ok(service.detail(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - - @Operation(summary = "详情和行政区划数据查询") - @PostMapping("/getDetailsAndAddvcdDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataLis()); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/IaCFlrvvlgController.java b/src/main/java/com/gunshi/project/hsz/controller/IaCFlrvvlgController.java deleted file mode 100644 index ee91380..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/IaCFlrvvlgController.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.google.common.collect.Lists; -import com.gunshi.core.result.R; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.entity.vo.HomeIaCFlrvvlgVo; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.model.IaCFlrvvlg; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.IaCFlrvvlgService; -import com.gunshi.project.hsz.service.StAddvcdDService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 重要沿河村落居民户调查成果表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "重要沿河村落居民户调查成果表") -@RestController -@RequestMapping(value="/iaCFlrvvlg") -public class IaCFlrvvlgController extends AbstractCommonFileController{ - - @Autowired - private IaCFlrvvlgService service; - - @Autowired - private StAddvcdDService stAddvcdDService; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody IaCFlrvvlg dto) { - if (Objects.isNull(stAddvcdDService.getById(dto.getAdcd()))) { - throw new RuntimeException("请输入正确的行政区划代码"); - } - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody IaCFlrvvlg dto) { - - if (Objects.isNull( service.getById(dto.getAvrcd()))){ - throw new RuntimeException("请输入正确的沿河村落居民户编码"); - } - if (Objects.isNull(stAddvcdDService.getById(dto.getAdcd()))) { - throw new RuntimeException("请输入正确的行政区划代码"); - } - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(stAddvcdDService.getById(id))) { - throw new RuntimeException("请输入正确的行政区划代码"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - - @Operation(summary = "详情和行政区划数据查询") - @PostMapping("/getDetailsAndAddvcdDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataLis()); - } - - - - @Operation(summary = "上传相关图片文件") - @PostMapping(path = "/setImgFile", consumes = "multipart/form-data") - public R setImgFile(@Parameter(description = "文件") @RequestPart("files") MultipartFile[] files) throws Exception { - - for (MultipartFile file : files) { - - String fileName = file.getOriginalFilename(); - String eicd = fileName.split("\\.")[0]; - - FileDescriptor fd = new FileDescriptor(); - fd.setBusinessType(getBusinessType()); - fd.setGroupId(getGroupId()); - fd.setUserId(1L); - fd.setAccessGroup(getService().getAccessGroup()); - fd.setFilePath(generateFilePath(getProperty().getAppCode(), getBusinessType(), 1L, getGroupId(), fileName)); - fd.setFileName(fileName); - fd.setFileLength(file.getSize()); - - getService().upload(fd, file.getInputStream()); - - FileAssociations fileAssociations = new FileAssociations(); - fileAssociations.setFileId(fd.getFileId()); - - fileService.saveFile(Lists.newArrayList(fileAssociations), getGroupId(), eicd); - } - - - return R.ok(); - } - - @Override - public String getGroupId() { - return "iaCFlrvvlg"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/IcWaterForecastController.java b/src/main/java/com/gunshi/project/hsz/controller/IcWaterForecastController.java deleted file mode 100644 index 12b2fd8..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/IcWaterForecastController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.gunshi.project.hsz.entity.dto.icWaterForecastCaculateDto; -import com.gunshi.project.hsz.entity.so.IcWaterForecastPageSo; -import com.gunshi.project.hsz.mapper.IaCBsnssinfoMapper; -import com.gunshi.project.hsz.model.IcWaterForecast; -import com.gunshi.project.hsz.model.IcWaterForecastDetail; -import com.gunshi.project.hsz.model.InspectPoint; -import com.gunshi.project.hsz.service.IcWaterForecastService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "来水预测") -@RestController -@RequestMapping(value="/icWaterForecast") -public class IcWaterForecastController { - - @Autowired - private IcWaterForecastService icWaterForecastService; - - @Operation(summary = "分页查询") - @PostMapping("/page") - public R> page(@RequestBody IcWaterForecastPageSo pageSo) { - return R.ok(icWaterForecastService.pageQuery(pageSo)); - } - - - @Operation(summary = "来水预测计算") - @PostMapping("/caculate") - public R> caculate(@RequestBody icWaterForecastCaculateDto dto) { - return R.ok(icWaterForecastService.caculate(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody IcWaterForecast dto) { - return R.ok(icWaterForecastService.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(icWaterForecastService.delData(id)); - } - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@RequestBody IcWaterForecast dto) { - return R.ok(icWaterForecastService.saveData(dto)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/InspectItemController.java b/src/main/java/com/gunshi/project/hsz/controller/InspectItemController.java deleted file mode 100644 index 6ba1f30..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/InspectItemController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.dto.InspectItemDto; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.model.InspectItem; -import com.gunshi.project.hsz.service.InspectItemService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -/** - * 描述: 巡检项 - * author: xusan - * date: 2024-08-29 09:58:10 - */ -@Tag(name = "巡检项") -@RestController -@RequestMapping(value="/inspectItem") -public class InspectItemController { - - @Autowired - private InspectItemService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody InspectItem dto) { - dto.setId(IdWorker.getId()); - dto.setStatus(0); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody InspectItem dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "启停") - @PostMapping("/startStop") - public R startStop(@RequestBody InspectItemDto dto) { - return R.ok(service.startStop(dto)); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated AttCctvBasePage page) { - return R.ok(service.pageQuery(page)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/InspectPointController.java b/src/main/java/com/gunshi/project/hsz/controller/InspectPointController.java deleted file mode 100644 index 4481a06..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/InspectPointController.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.InspectPoint; -import com.gunshi.project.hsz.service.InspectPointService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 巡检点 - * author: xusan - * date: 2024-08-29 09:57:47 - */ -@Tag(name = "巡检点") -@RestController -@RequestMapping(value="/inspect/point") -public class InspectPointController { - - @Autowired - private InspectPointService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody InspectPoint dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody InspectPoint dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "列表") - @GetMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().orderByAsc(InspectPoint::getOrderIndex).list()); - } - - @Operation(summary = "列表(带巡检项)") - @GetMapping("/listWithItem") - public R> listWithItem() { - return R.ok(service.listWithItem()); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/InspectTaskController.java b/src/main/java/com/gunshi/project/hsz/controller/InspectTaskController.java deleted file mode 100644 index 439e7ba..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/InspectTaskController.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.InspectTaskPageSo; -import com.gunshi.project.hsz.entity.so.InspectTaskSo; -import com.gunshi.project.hsz.entity.vo.InspectTaskVo; -import com.gunshi.project.hsz.common.model.InspectTask; -import com.gunshi.project.hsz.service.InspectTaskService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 描述: 巡检任务 - * author: xusan - * date: 2024-08-29 14:21:15 - */ -@Tag(name = "巡检任务") -@RestController -@RequestMapping(value="/inspect/task") -public class InspectTaskController extends AbstractCommonFileController{ - - @Autowired - private InspectTaskService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody InspectTask dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody InspectTask dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated InspectTaskPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "开始巡检") - @GetMapping("/startInspect/{id}") - public R startInspect(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.startInspect(id)); - } - - @Operation(summary = "APP-保存/结束巡查") - @PostMapping("/finish") - public R finish(@RequestBody @Validated InspectTaskVo vo) { - return R.ok(service.finish(vo)); - } - - @Operation(summary = "APP-我的巡查任务") - @PostMapping("/list") - public R> list(@RequestBody @Validated InspectTaskSo so) { - return R.ok(service.listQuery(so)); - } - - @Operation(summary = "本月巡查记录") - @PostMapping("/month") - public R> month() { - return R.ok(service.month()); - } - - @Operation(summary = "本年巡查") - @PostMapping("/year") - public R year() { - return R.ok(service.year()); - } - - - @Override - public String getGroupId() { - return "inspectTask"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/InspectTaskDetailController.java b/src/main/java/com/gunshi/project/hsz/controller/InspectTaskDetailController.java deleted file mode 100644 index c4c7856..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/InspectTaskDetailController.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.InspectProblemPageSo; -import com.gunshi.project.hsz.entity.vo.InspectProblemVo; -import com.gunshi.project.hsz.entity.vo.InspectTaskDetailVo; -import com.gunshi.project.hsz.common.model.InspectTaskDetail; -import com.gunshi.project.hsz.service.InspectTaskDetailService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -/** - * 描述: 巡查信息 - * author: xusan - * date: 2024-08-29 14:21:45 - */ -@Tag(name = "巡查信息") -@RestController -@RequestMapping(value="/inspect/detail") -public class InspectTaskDetailController{ - - @Autowired - private InspectTaskDetailService service; - - @Operation(summary = "编辑详情") - @GetMapping("/getByTaskId") - public R> getByTaskId(@Schema(name = "taskId",description = "任务id") @RequestParam(name = "taskId") Long taskId) { - return R.ok(service.getByTaskId(taskId)); - } - - @Operation(summary = "巡查任务详情-巡查信息") - @GetMapping("/info") - public R> inspectInfo(@Schema(name = "taskId",description = "任务id") @RequestParam(name = "taskId") Long taskId) { - return R.ok(service.inspectInfo(taskId)); - } - - @Operation(summary = "巡检问题处理分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated InspectProblemPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "APP-处理") - @PostMapping("/handle") - public R handle(@RequestBody @Validated InspectProblemVo vo) { - return R.ok(service.handle(vo)); - } - - - @Operation(summary = "待处理问题清单") - @PostMapping("/handle/list") - public R> handelList() { - return R.ok(service.handelList()); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/InspectTaskTrackController.java b/src/main/java/com/gunshi/project/hsz/controller/InspectTaskTrackController.java deleted file mode 100644 index 7fbec9a..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/InspectTaskTrackController.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.InspectTaskTrack; -import com.gunshi.project.hsz.service.InspectTaskTrackService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Date; -import java.util.List; -/** - * 描述: 巡查轨迹 - * author: xusan - * date: 2024-09-18 13:59:21 - */ -@Tag(name = "巡查轨迹") -@RestController -@RequestMapping(value="/inspectTaskTrack") -public class InspectTaskTrackController { - - @Autowired - private InspectTaskTrackService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody InspectTaskTrack dto) { - dto.setCreateTime(new Date()); - dto.setId(IdWorker.getId()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@Schema(name = "taskId",description = "任务id") @RequestParam(name = "taskId") Long taskId) { - return R.ok(service.lambdaQuery().eq(InspectTaskTrack::getTaskId,taskId).orderByAsc(InspectTaskTrack::getCreateTime).list()); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskByBController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskByBController.java deleted file mode 100644 index c5a8edf..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskByBController.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.WaterDevicePageSo; -import com.gunshi.project.hsz.common.model.JcskByB; -import com.gunshi.project.hsz.service.WaterDeviceService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -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; - -@Tag(name = "白蚁监测设备") -@RestController -@RequestMapping(value="/jcskByB") -public class JcskByBController { - @Autowired - private WaterDeviceService service; - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated WaterDevicePageSo page) { - return R.ok(service.pageQuery(page)); - } - -// @Operation(summary = "新增") -// public R insert(@Validated(Insert.class) @RequestBody JcskByB dto) { -// return R.ok(service.saveDate(dto)); -// } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskByBDController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskByBDController.java deleted file mode 100644 index f77db03..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskByBDController.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gunshi.project.hsz.controller;//package com.gunshi.project.xyt.controller; -// -//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -//import com.gunshi.core.result.R; -//import com.gunshi.project.xyt.entity.so.JcskByBDPageSo; -//import com.gunshi.project.xyt.model.JcskByB; -//import com.gunshi.project.xyt.model.JcskByBD; -//import com.gunshi.project.xyt.service.JcskByBDService; -//import com.gunshi.project.xyt.service.JcskByBService; -//import io.swagger.v3.oas.annotations.Operation; -//import io.swagger.v3.oas.annotations.tags.Tag; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.validation.annotation.Validated; -//import org.springframework.web.bind.annotation.*; -// -//import java.util.List; -// -//public class JcskByBDController { -// -// -// @Autowired -// private JcskByBDService jcskByBDService; -// -// @Autowired -// private JcskByBService jcskByBService; -// -// -// @Operation(summary = "分页") -// @PostMapping("/page") -// public R> page(@RequestBody @Validated JcskByBDPageSo page){ -// Page res = jcskByBDService.pageQuery(page); -// return R.ok(res); -// } -// -// @Operation(summary = "列表") -// @GetMapping("/list") -// public R> list(){ -// List res = jcskByBDService.list(); -// return R.ok(res); -// } -// -// @Operation(summary = "获取白蚁机箱设备") -// @GetMapping("/list/byDevice") -// public R> getJcskByBD(){ -// return R.ok(jcskByBService.lambdaQuery().list()); -// } -// -// @Operation(summary = "获取所有设备编码") -// @GetMapping("/list/device") -// public R> listDevices(){ -// List res = jcskByBDService.listDevices(); -// return R.ok(res); -// } -// -//} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskByRController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskByRController.java deleted file mode 100644 index 41eab8f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskByRController.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.so.JcskByRPageSo; -import com.gunshi.project.hsz.common.model.JcskByB; -import com.gunshi.project.hsz.common.model.JcskByBD; -import com.gunshi.project.hsz.common.model.JcskByR; -import com.gunshi.project.hsz.model.JcskByRProcess; -import com.gunshi.project.hsz.service.JcskByBDService; -import com.gunshi.project.hsz.service.JcskByBService; -import com.gunshi.project.hsz.service.JcskByRProcessService; -import com.gunshi.project.hsz.service.JcskByRService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -//@Tag(name = "白蚁监测数据") -//@RestController -//@RequestMapping(value="/termite/survey") -public class JcskByRController { - - - @Autowired - private JcskByRService service; - - @Autowired - private JcskByRProcessService jcskByRProcessService; - - @Autowired - private JcskByBService jcskByBService; - - @Operation(summary = "分页") - @PostMapping("/pageDetail") - public R> page(@RequestBody @Validated JcskByRPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "统计白蚁有无") - @PostMapping("/count") - public R> count(@RequestBody @Validated JcskByRPageSo page){ - page.getPageSo().setPageSize(1000000); - Map countMap = new HashMap<>(); - countMap.put("totalPoint",0l); - countMap.put("hasAnt",0l); - countMap.put("notAnt",0l); - countMap.put("noData",0l); - Map res = service.pageQueryCount(page,countMap); - return R.ok(res); - } - - @Operation(summary = "根据测点编号查询时间范围内的所有数据") - @PostMapping("/detail") - public R> detailList(@RequestBody @Validated JcskByRPageSo page){ - return R.ok(service.detailList(page)); - } - - - @Autowired - private JcskByBDService jcskByBDService; - - - @Operation(summary = "获取所有白蚁测点信息") - @PostMapping("/list/allOrder") - public R> listAllOrder(@RequestBody JcskByRPageSo page){ - return R.ok(jcskByBDService.listAll(page.getObDate())); - } - - @Operation(summary = "获取白蚁机箱设备") - @GetMapping("/list/byDevice") - public R> getJcskByBD(){ - return R.ok(jcskByBService.lambdaQuery().list()); - } - - @Operation(summary = "获取所有设备编码") - @GetMapping("/list/device") - public R> listDevices(){ - List res = jcskByBDService.listDevices(); - return R.ok(res); - } - - @Operation(summary = "处理") - @PostMapping("/process") - public R process(@RequestBody JcskByRProcess jcskByRProcess){ - Boolean flag = jcskByRProcessService.process(jcskByRProcess); - return R.ok(flag); - } - - @Operation(summary = "查询所有测点最新的一条数据") - @GetMapping("/listNewData") - public R> listNewData(@RequestParam(value = "deviceId",required = false) String deviceId){ - List res = service.listNewData(deviceId); - return R.ok(res); - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskGnssBController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskGnssBController.java deleted file mode 100644 index 7596737..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskGnssBController.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.so.JcskGnssBPageSo; -import com.gunshi.project.hsz.common.model.vo.HomeJcskGnssBVo; -import com.gunshi.project.hsz.common.model.JcskGnssB; -import com.gunshi.project.hsz.service.JcskGnssBService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -@Tag(name = "位移设备Controller") -@RestController -@RequestMapping(value="/osmoticShiftDevice") -public class JcskGnssBController { - - @Autowired - private JcskGnssBService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody JcskGnssB dto) { - if (Objects.nonNull(service.getById(dto.getCd()))) { - throw new IllegalArgumentException("当前编号已存在"); - } - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody JcskGnssB dto) { - if (Objects.isNull(service.getById(dto.getCd()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated JcskGnssBPageSo page) { - return R.ok(service.pageQuery(page)); - } - - - @Operation(summary = "详情和监测数据查询(暂无设备表,无法使用)") - @PostMapping("/getDetailsAndMonitoringDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataList()); - } - - @Operation(summary = "根据id查询详细数据") - @GetMapping("/getDetailsById") - public R getDetailsById(@RequestParam(name = "id") String id) { - HomeJcskGnssBVo byId = service.getDetailsById(id); - return R.ok(byId); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List list = service.lambdaQuery() - .orderByAsc(JcskGnssB::getCd) - .list(); - list.stream().forEach(o ->{ - o.setStationCode(o.getCd()); - }); - service.checkStatus(list); - return R.ok(list); - } - - @Operation(summary = "获取位移的断面数据") - @GetMapping("/list/dm") - public R> listDm(){ - - List res = service.listDms(); - return R.ok(res); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskGnssRController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskGnssRController.java deleted file mode 100644 index 0e956f7..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskGnssRController.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.vo.JcskGnessListVo; -import com.gunshi.project.hsz.common.model.vo.JcskGnssRHisVo; -import com.gunshi.project.hsz.common.model.vo.OsmoticShiftValueVo2; -import com.gunshi.project.hsz.entity.dto.ArtificialJcskGnssDeleteDto; -import com.gunshi.project.hsz.common.model.so.JcskGnssRPageSo; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.common.model.JcskGnssB; -import com.gunshi.project.hsz.common.model.JcskGnssR; -import com.gunshi.project.hsz.service.JcskGnssBService; -import com.gunshi.project.hsz.service.JcskGnssRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@Tag(name = "位移R表") -@RestController -@RequestMapping(value="/osmoticShiftR") -public class JcskGnssRController { - - @Autowired - private JcskGnssRService service; - - @Autowired - private JcskGnssBService jcskGnssBService; - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated JcskGnssRPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "历史") - @PostMapping("/history") - public R> historyPage(@RequestBody @Validated JcskGnssRPageSo page) { - return R.ok(service.historyPage(page)); - } - - @Operation(summary = "人工分页") - @PostMapping("/artificial/page") - public R> artificialPage(@RequestBody @Validated JcskGnssRPageSo page) { - return R.ok(service.artificialPage(page)); - } - - @Operation(summary = "人工分页-导出") - @PostMapping("/artificial/export") - public void artificialExport(@RequestBody @Validated JcskGnssRPageSo page,HttpServletResponse response){ - service.artificialExport(page,response); - } - - - @Operation(summary = "新增") - @PostMapping("/artificial/insert") - public R insert(@Validated(Insert.class) @RequestBody JcskGnssR dto) { -// // 通过时间戳去除毫秒 -// long currentTime = System.currentTimeMillis(); -// long seconds = currentTime / 1000; // 去掉毫秒部分 -// Date dateWithoutMillis = new Date(seconds * 1000); // 转回毫秒时间戳 -// dto.setTm(dateWithoutMillis); - boolean result = service.saveData(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "获取人工录入测点") - @GetMapping("/artificial/tree") - public R> artificialTree() { - List res = jcskGnssBService.artificialTree(); - return R.ok(res); - } - - - @Operation(summary = "修改") - @PostMapping("/artificial/update") - public R update(@Validated(Update.class) @RequestBody JcskGnssR dto) { - boolean update = service.updateData(dto); - return R.ok(update ? dto : null); - } - - @Operation(summary = "删除") - @PostMapping("/artificial/delete") - public R del(@RequestBody @Validated ArtificialJcskGnssDeleteDto dto) { - boolean delete = service.deleteData(dto); - return R.ok(delete); - } - - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - - @Operation(summary = "获取断面对应测点编号") - @GetMapping("/tree") - public R> getChAndCd() { - List res = service.getChAndCd(); - return R.ok(res); - } - - - @Operation(summary = "年度位移统计(表格)") - @PostMapping("/year/stat") - public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.yearStat(osmoticQuerySo)); - } - - @Operation(summary = "年度位移统计(全年度特征值统计)") - @PostMapping("/year/stat/value") - public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.yearStatValue(osmoticQuerySo)); - } - - @Operation(summary = "年度位移统计导出") - @PostMapping( "/year/stat/export") - public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - service.yearStatExport(osmoticQuerySo,response); - } - - @Operation(summary = "布置图-位移监测") - @GetMapping("/list/value") - public R> listValue() { - return R.ok(service.listValue()); - } - - @Operation(summary = "布置图-按测站查询位移监测数据") - @PostMapping("/detail/value") - public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { - return R.ok(service.detailValue(so)); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskSlBController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskSlBController.java deleted file mode 100644 index e15f8b0..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskSlBController.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.so.JcskSlBPageSo; -import com.gunshi.project.hsz.common.model.vo.HomeJcskSlBVo; -import com.gunshi.project.hsz.common.model.JcskSlB; -import com.gunshi.project.hsz.service.JcskSlBService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -@Tag(name = "渗压测力点-设备基础信息") -@RestController -@RequestMapping(value="/osmoticFlowDevice") -public class JcskSlBController { - @Autowired - private JcskSlBService service; - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated JcskSlBPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody JcskSlB dto) { - if (Objects.nonNull(service.getById(dto.getMpcd()))) { - throw new IllegalArgumentException("当前编号已存在"); - } - - dto.setDtuptm(LocalDateTime.now()); - boolean result = service.save(dto); -// if (result){ -// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); -// } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody JcskSlB dto) { - if (Objects.isNull(service.getById(dto.getMpcd()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setDtuptm(null); - boolean result = service.updateById(dto); -// if (result){ -// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); -// } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List list = service.lambdaQuery().list(); - list.stream().forEach(o ->{ - o.setStationCode(o.getDvcd()); - }); - return R.ok(list); - } - - - @Operation(summary = "详情和监测数据查询") - @PostMapping("/getDetailsAndMonitoringDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataList()); - } - - @Operation(summary = "根据id查询详细数据") - @GetMapping("/getDetailsById") - public R getDetailsById(@RequestParam(name = "id") String id) { - HomeJcskSlBVo byId = service.getDetailsById(id.toString()); - return R.ok(byId); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskSlRController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskSlRController.java deleted file mode 100644 index 8059d77..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskSlRController.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.so.JcskSlRPageSo; -import com.gunshi.project.hsz.common.model.vo.JcskSlRHisVo; -import com.gunshi.project.hsz.common.model.JcskSlR; -import com.gunshi.project.hsz.service.JcskSlRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "渗流量(剔除异常)") -@RestController -@RequestMapping(value="/osmoticFlowR") -public class JcskSlRController { - - - @Autowired - private JcskSlRService service; - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated JcskSlRPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "分页") - @PostMapping("/history") - public R> historyPage(@RequestBody @Validated JcskSlRPageSo page) { - return R.ok(service.historyPage(page)); - } - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody JcskSlR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody JcskSlR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskSyBController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskSyBController.java deleted file mode 100644 index 7f50bd3..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskSyBController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.so.JcskSyBPageSo; -import com.gunshi.project.hsz.common.model.vo.HomeJcskSYBVo; -import com.gunshi.project.hsz.common.model.JcskSyB; -import com.gunshi.project.hsz.service.JcskSyBService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Objects; - -@Tag(name = "测压管表") -@RestController -@RequestMapping(value="/osmoticPressDevice") -public class JcskSyBController extends AbstractCommonFileController { - - - @Autowired - private JcskSyBService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody JcskSyB dto) { - if (Objects.nonNull(service.getById(dto.getMpcd()))) { - throw new IllegalArgumentException("当前编号已存在"); - } - dto.setDtuptm(LocalDateTime.now()); - boolean result = service.save(dto); -// if (result){ -// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); -// } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody JcskSyB dto) { - if (Objects.isNull(service.getById(dto.getMpcd()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setDtuptm(LocalDateTime.now()); - boolean result = service.updateById(dto); -// if (result){ -// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); -// } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated JcskSyBPageSo page) { - return R.ok(service.pageQuery(page)); - } - - - - @Operation(summary = "详情和监测数据查询") - @PostMapping("/getDetailsAndMonitoringDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataList()); - } - - @Operation(summary = "根据id查询详细数据") - @GetMapping("/getDetailsById") - public R getDetailsById(@RequestParam(name = "id") String id) { - HomeJcskSYBVo byId = service.getDetailsById(id); - return R.ok(byId); - } - - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List list = service.lambdaQuery().list(); - list.stream().forEach(item -> { - item.setStationCode(item.getDvcd()); - }); - return R.ok(list); - } - - @Override - public String getGroupId() { - return "OsmoticPressDevice"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/JcskSyRController.java b/src/main/java/com/gunshi/project/hsz/controller/JcskSyRController.java deleted file mode 100644 index 8fb78e6..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/JcskSyRController.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; - -import com.gunshi.project.hsz.common.model.JcskSyR; -import com.gunshi.project.hsz.common.model.vo.JcskSyRHisVo; -import com.gunshi.project.hsz.common.model.vo.JcskSyRVo; -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.entity.dto.ArtificialJcskSyDeleteDto; -import com.gunshi.project.hsz.common.model.so.JcskSyRPageSo; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.common.model.JcskSyB; -import com.gunshi.project.hsz.service.JcskSyRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Map; - -@Tag(name = "渗流压力水位") -@RestController -@RequestMapping(value="/osmoticPressR") -public class JcskSyRController { - @Autowired - private JcskSyRService service; - - @Operation(summary = "获取dvcd") - @GetMapping("/list/dvcd") - public R> listDvcd(){ - List res = service.listDvcd(); - return R.ok(res); - } - - @Operation(summary = "获取测站编码和测站编号") - @GetMapping("/list/stcdMpcd") - public R> listStcdMpcd(){ - return R.ok(service.listStcdMpcd()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated JcskSyRPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "人工分页") - @PostMapping("/artificial/page") - public R> artificialPage(@RequestBody @Validated JcskSyRPageSo page) { - return R.ok(service.artificialPage(page)); - } - - @Operation(summary = "人工分页-导出") - @PostMapping("/artificial/export") - public void artificialExport(@RequestBody @Validated JcskSyRPageSo page,HttpServletResponse response){ - service.artificialExport(page,response); - } - - @Operation(summary = "历史") - @PostMapping("/history") - public R> historyPage(@RequestBody @Validated JcskSyRPageSo page) { - return R.ok(service.historyPage(page)); - } - - - @Operation(summary = "新增") - @PostMapping("/artificial/insert") - public R insert(@Validated(Insert.class) @RequestBody JcskSyR dto) { -// // 通过时间戳去除毫秒 -// long currentTime = System.currentTimeMillis(); -// long seconds = currentTime / 1000; // 去掉毫秒部分 -// Date dateWithoutMillis = new Date(seconds * 1000); // 转回毫秒时间戳 -// dto.setTm(dateWithoutMillis); - boolean result = service.saveData(dto); - return R.ok(result ? dto : null); - } - - - @Operation(summary = "修改") - @PostMapping("/artificial/update") - public R update(@Validated(Update.class) @RequestBody JcskSyR dto) { - boolean update = service.updateData(dto); - return R.ok(update ? dto : null); - } - - @Operation(summary = "删除") - @PostMapping("/artificial/delete") - public R del(@RequestBody @Validated ArtificialJcskSyDeleteDto dto) { - boolean delete = service.deleteData(dto); - return R.ok(delete); - } - - @Operation(summary = "大屏-大坝安全监测统计") - @GetMapping("/stat") - public R> stat() { - return R.ok(service.stat()); - } - - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "布置图-渗压/渗流监测") - @GetMapping("/list/value") - public R> listValue(@Schema(name = "type",description = "类型(1渗压 2渗流)") @RequestParam("type") Integer type) { - return R.ok(service.listValue(type)); - } - - - - @Operation(summary = "布置图-按测站查询渗压/渗流监测数据") - @PostMapping("/detail/value") - public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { - return R.ok(service.detailValue(so)); - } - - @Operation(summary = "测值查询(数据表)") - @PostMapping("/query/value") - public R> queryValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.queryValue(osmoticQuerySo,null)); - } - - @Operation(summary = "测值查询(多图单表)") - @PostMapping("/query/chart") - public R> queryChart(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.queryChart(osmoticQuerySo,null)); - } - - @Operation(summary = "浸润线查询") - @PostMapping("/infiltra/line") - public R> infiltraLine(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.infiltraLine(osmoticQuerySo)); - } - - @Operation(summary = "浸润线导出") - @PostMapping( "/export") - public void export(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - service.export(osmoticQuerySo,response); - } - - @Operation(summary = "年度渗压/渗流统计(表格)") - @PostMapping("/year/stat") - public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.yearStat(osmoticQuerySo)); - } - - @Operation(summary = "年度渗压/渗流统计(全年度特征值统计)") - @PostMapping("/year/stat/value") - public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { - return R.ok(service.yearStatValue(osmoticQuerySo)); - } - - @Operation(summary = "年度渗压/渗流统计导出") - @PostMapping( "/year/stat/export") - public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - service.yearStatExport(osmoticQuerySo,response); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/MaintainServiceController.java b/src/main/java/com/gunshi/project/hsz/controller/MaintainServiceController.java deleted file mode 100644 index b169969..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/MaintainServiceController.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.MaintainPageSo; -import com.gunshi.project.hsz.model.MaintainService; -import com.gunshi.project.hsz.service.MaintainServiceService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 维修养护 - * author: xusan - * date: 2024-08-27 15:15:14 - */ -@Tag(name = "维修养护") -@RestController -@RequestMapping(value="/maintain/service") -public class MaintainServiceController extends AbstractCommonFileController{ - - @Autowired - private MaintainServiceService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody MaintainService dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody MaintainService dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody MaintainPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Override - public String getGroupId() { - return "maintainService"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/MentenceFarmerRecordController.java b/src/main/java/com/gunshi/project/hsz/controller/MentenceFarmerRecordController.java deleted file mode 100644 index 1fa9c23..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/MentenceFarmerRecordController.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo; -import com.gunshi.project.hsz.model.HiddenInfo; -import com.gunshi.project.hsz.model.MentenceFarmerRecord; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.HiddenInfoService; -import com.gunshi.project.hsz.service.MentenceFarmerRecordService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "维护养护-日常养护记录") -@RestController -@RequestMapping(value="/mfr") -public class MentenceFarmerRecordController extends AbstractCommonFileController{ - - - @Autowired - private MentenceFarmerRecordService mentenceFarmerRecordService; - - @Autowired - private HiddenInfoService hiddenInfoService; - - - @Autowired - private FileAssociationsService fileService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody MentenceFarmerRecord dto, HttpServletRequest request) { - boolean result = mentenceFarmerRecordService.saveDate(dto); - if(result){ - fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); - for (HiddenInfo detail : dto.getDetails()) { - fileService.saveFile(detail.getFiles(), getGroupId(),detail.getId().toString()); - } - } - return R.ok(result ? dto : null); - } - - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody MentenceFarmerRecord dto) { - boolean flag = mentenceFarmerRecordService.update(dto); - if (flag) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - for (HiddenInfo detail : dto.getDetails()) { - fileService.saveFile(detail.getFiles(), getGroupId(),detail.getId().toString()); - } - } - return R.ok(flag ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - List res = mentenceFarmerRecordService.delete(id); - if(res != null){ - fileService.deleteFile(getGroupId(),id.toString()); - for (Long cid : res) { - fileService.deleteFile(getGroupId(),cid.toString()); - } - } - return R.ok(true); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody MentenceFarmerRecordPageSo pageSo) { - Page byPage = mentenceFarmerRecordService.pageQuery(pageSo); - if(!CollectionUtils.isEmpty(byPage.getRecords())){ - byPage.getRecords().forEach(o ->{ - - o.setFiles( - fileService.getFiles(getGroupId(),o.getId().toString()) - ); - - List details = o.getDetails(); - details.forEach(detail -> { - detail.setFiles(fileService.getFiles(getGroupId(),detail.getId().toString())); - }); - }); - } - return R.ok(byPage); - } - - @Operation(description = "日志导出") - @PostMapping("/export") - public void export(@RequestBody MentenceFarmerRecordPageSo pageSo,HttpServletResponse response) { - pageSo.getPageSo().setPageSize(9999); - Page byPage = mentenceFarmerRecordService.pageQuery(pageSo); - List records = byPage.getRecords(); - mentenceFarmerRecordService.exportToExcel(records,response); - } - - - @Override - public String getGroupId() { - return "mentenceFarmerRecord"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/MentenceInfoCountController.java b/src/main/java/com/gunshi/project/hsz/controller/MentenceInfoCountController.java deleted file mode 100644 index 022f7a2..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/MentenceInfoCountController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo; -import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo; -import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.MentenceFarmerRecordService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Map; - -@Tag(name = "维修养护-维护信息统计分析") -@RestController -@RequestMapping(value="/mic") -public class MentenceInfoCountController extends AbstractCommonFileController { - - - @Autowired - private MentenceFarmerRecordService mentenceFarmerRecordService; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody MentenceFarmerRecordPageSo pageSo) { - Page byPage = mentenceFarmerRecordService.pageInfoCountQuery(pageSo); - if(!CollectionUtils.isEmpty(byPage.getRecords())){ - byPage.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getId().toString()) - )); - } - return R.ok(byPage); - } - - @Operation(summary = "根据时间统计 隐患 数目") - @PostMapping("/count12") - public R> count12(@RequestBody MonthRangeSo monthRangeSo){ - List list = mentenceFarmerRecordService.count12(monthRangeSo); - return R.ok(list); - } - - @Operation(summary = "根据时间统计 隐患类型 数目") - @PostMapping("/countType") - public R> countType(@RequestBody MonthRangeSo monthRangeSo){ - Map map = mentenceFarmerRecordService.countType(monthRangeSo); - return R.ok(map); - } - - @Operation(summary = "统计本年的隐患数") - @GetMapping("/countYear/{year}") - public R> countYear(@PathVariable("year") String year){ - Map map = mentenceFarmerRecordService.countYear(year); - return R.ok(map); - } - @Override - public String getGroupId() { - return "mentenceFarmerRecord"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/MentencePlanController.java b/src/main/java/com/gunshi/project/hsz/controller/MentencePlanController.java deleted file mode 100644 index 8f245ed..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/MentencePlanController.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.core.session.entity.SessionUser; -import com.gunshi.project.hsz.entity.so.MentencePlanPageSo; -import com.gunshi.project.hsz.model.MentencePlan; -import com.gunshi.project.hsz.model.MentencePlanDetail; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.MentencePlanDetailService; -import com.gunshi.project.hsz.service.MentencePlanService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import jakarta.servlet.http.HttpServletRequest; - -import java.io.Serializable; -import java.util.Objects; - -@Tag(name = "维护养护-维护计划") -@RestController -@RequestMapping(value="/mtpl") -public class MentencePlanController extends AbstractCommonFileController { - - @Autowired - private MentencePlanService mentencePlanService; - - @Autowired - private MentencePlanDetailService mentencePlanDetailService; - - @Autowired - private FileAssociationsService fileService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody MentencePlan dto, HttpServletRequest request) { - SessionUser sessionUser = checkLogin(request); - if(sessionUser == null){ - throw new IllegalArgumentException("未登录"); - } - Long userId = sessionUser.getUserId(); - dto.setCreateId(userId.toString()); - boolean flag = mentencePlanService.saveData(dto); - if(flag){ - fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); - } - return R.ok(dto); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody MentencePlan dto,HttpServletRequest request) { - SessionUser sessionUser = checkLogin(request); - if(sessionUser == null){ - throw new IllegalArgumentException("未登录"); - } -// Long userId = sessionUser.getUserId(); -// if(!userId.equals(dto.getCreateId())){ -// throw new IllegalArgumentException("对不起,您没有编辑的权限"); -// } - boolean flag = mentencePlanService.update(dto); - if (flag) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(flag ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id,HttpServletRequest request) { - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentencePlan::getId, id); - MentencePlan one = mentencePlanService.getOne(queryWrapper); - if(Objects.isNull(one)){ - throw new RuntimeException("该计划不存在"); - } - SessionUser sessionUser = checkLogin(request); - if(sessionUser == null){ - throw new IllegalArgumentException("未登录"); - } -// Long userId = sessionUser.getUserId(); -// if(!userId.equals(one.getCreateId())){ -// throw new IllegalArgumentException("对不起,您没有编辑的权限"); -// } - LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); - queryWrapperDetail.eq(MentencePlanDetail::getMentencePlanId, id); - //先删细节 - boolean remove = mentencePlanDetailService.remove(queryWrapperDetail); - if(remove){ - //再删主体 - mentencePlanService.removeById(id); - } - return R.ok(true); - } - - @Operation(summary = "审批") - @PostMapping("/approving") - public R approve(@Validated @RequestBody MentencePlan dto,HttpServletRequest request){ - mentencePlanService.approve(dto); - return R.ok(true); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody MentencePlanPageSo pageSo) { - Page byPlanPage = mentencePlanService.pageQuery(pageSo); - if(!CollectionUtils.isEmpty(byPlanPage.getRecords())){ - byPlanPage.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getId().toString()) - )); - } - return R.ok(byPlanPage); - } - - @Override - public String getGroupId() { - return "mentencePlan"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/MentenceStController.java b/src/main/java/com/gunshi/project/hsz/controller/MentenceStController.java deleted file mode 100644 index 68a4680..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/MentenceStController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.MentenceStPageSo; -import com.gunshi.project.hsz.model.MentenceSt; -import com.gunshi.project.hsz.model.MentenceStDetail; -import com.gunshi.project.hsz.service.MentenceStDetailService; -import com.gunshi.project.hsz.service.MentenceStService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "维护养护-维护标准") -@RestController -@RequestMapping(value="/mtst") -public class MentenceStController { - - - @Autowired - private MentenceStService mentenceStService; - - @Autowired - private MentenceStDetailService mentenceStDetailService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody MentenceSt dto) { - - boolean result = mentenceStService.saveDate(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody MentenceSt dto) { - boolean result = mentenceStService.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = mentenceStService.deleteById(id); - return R.ok(b); - } - - @Operation(summary = "列表") - @GetMapping("/list") - public R> list() { - List list = mentenceStService.lambdaQuery().orderByAsc(MentenceSt::getCreateTime).list(); - return R.ok(list); - } - - - @Operation(summary = "维护项目新增") - @PostMapping("/detail/insert") - public R insert(@Validated(Insert.class) @RequestBody MentenceStDetail dto) { - dto.setId(IdWorker.getId()); - boolean result = mentenceStDetailService.save(dto); - return R.ok(result ? dto : null); - } - - - @Operation(summary = "维护项目修改") - @PostMapping("/detail/update") - public R detailUpdate(@Validated(Update.class) @RequestBody MentenceStDetail dto) { - boolean result = mentenceStDetailService.update(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "维护项目列表") - @GetMapping("/detail/list") - public R> detailList() { - List list = mentenceStDetailService.lambdaQuery().orderByAsc(MentenceStDetail::getOrder).list(); - return R.ok(list); - } - - - @Operation(summary = "维护项目删除") - @GetMapping("/detail/del/{id}") - public R detailDel(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = mentenceStDetailService.deleteById(id); - return R.ok(b); - } - - - @Operation(summary = "是否启用") - @GetMapping("/switch/{id}") - public R isEnable(@Schema(name = "id") @PathVariable("id") Serializable id) { - MentenceStDetail byId = mentenceStDetailService.getById(id); - if(byId == null) { - throw new RuntimeException("该数据不存在,请检查"); - } - Integer isEnable = byId.getIsEnable(); - if(isEnable > 0){ - byId.setIsEnable(0); - }else{ - byId.setIsEnable(1); - } - boolean result = mentenceStDetailService.updateById(byId); - return R.ok(result ? false : true); - } - - - //根据维护对象id,查询维护项目 - @Operation(summary = "根据维护对象id,查询维护项目") - @PostMapping("/detail/page") - public R> page(@RequestBody MentenceStPageSo dto) { - return R.ok(mentenceStDetailService.pageQuery(dto)); - } - - //查询养护对象 (可根据 防治点查询,也可以根据防治部位查询) - @Operation(summary = "查询防治部位(可根据 维护对象,也可以根据维护项目查询)") - @PostMapping("/tree") - public R> tree(@RequestBody MentenceStPageSo dto) { - List res = mentenceStService.tree(dto); - return R.ok(res); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/MentenceTemplateController.java b/src/main/java/com/gunshi/project/hsz/controller/MentenceTemplateController.java deleted file mode 100644 index b3db68f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/MentenceTemplateController.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.core.session.entity.SessionUser; -import com.gunshi.project.hsz.entity.so.MentenceTemplatePageSo; -import com.gunshi.project.hsz.model.MentenceTemplate; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.MentenceTemplateService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletRequest; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import java.io.Serializable; - - -@Tag(name = "维护养护-模板") -@RestController -@RequestMapping(value="/mt") -public class MentenceTemplateController extends AbstractCommonFileController { - - @Autowired - private MentenceTemplateService mentenceTemplateService; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody MentenceTemplate dto, HttpServletRequest request) { - SessionUser sessionUser = checkLogin(request); - if(sessionUser == null){ - throw new IllegalArgumentException("未登录"); - } - Long userId = sessionUser.getUserId(); - dto.setCreateId(userId.toString()); - boolean result = mentenceTemplateService.saveDate(dto); - if(result){ - fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); - } - return R.ok(result ? dto : null); - } - - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody MentenceTemplate dto) { - boolean flag = mentenceTemplateService.update(dto); - if (flag) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(flag ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentenceTemplate::getId, id); - boolean result = mentenceTemplateService.remove(queryWrapper); - if(result){ - fileService.deleteFile(getGroupId(),id.toString()); - } - return R.ok(true); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody MentenceTemplatePageSo pageSo) { - Page byPage = mentenceTemplateService.pageQuery(pageSo); - if(!CollectionUtils.isEmpty(byPage.getRecords())){ - byPage.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getId().toString()) - )); - } - return R.ok(byPage); - } - - @Override - public String getGroupId() { - return "mentenceTemplate"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/MessageCenterController.java b/src/main/java/com/gunshi/project/hsz/controller/MessageCenterController.java deleted file mode 100644 index 4e0fe53..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/MessageCenterController.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.entity.so.MessageCenterPageSo; -import com.gunshi.project.hsz.model.MessageCenter; -import com.gunshi.project.hsz.service.MessageCenterService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 描述: 消息中心 - * author: xusan - * date: 2024-09-19 10:39:29 - */ -@Tag(name = "消息中心") -@RestController -@RequestMapping(value="/messageCenter") -public class MessageCenterController { - - @Autowired - private MessageCenterService service; - - @Operation(summary = "分页查询") - @PostMapping("/list/page") - public R> listPage(@Validated @RequestBody MessageCenterPageSo page) { - return R.ok(service.listPage(page)); - } - - @Operation(summary = "已读") - @PostMapping("/update") - public R update(@Validated @RequestBody MessageCenter dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "全部标注已读") - @GetMapping("/all/read") - public R allRead() { - return R.ok(service.allRead()); - } - - @Operation(summary = "APP-消息中心") - @PostMapping("/list") - public R> listMes(@Validated @RequestBody DateTimeRangeSo dateTimeRangeSo) { - return R.ok(service.listMes(dateTimeRangeSo)); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowDeviceController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowDeviceController.java deleted file mode 100644 index d9836d7..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowDeviceController.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.so.OsmoticDevicePage; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticFlowDeviceVo; -import com.gunshi.project.hsz.model.OsmoticFlowDevice; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.OsmoticFlowDeviceService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 渗流设备表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -//@Tag(name = "渗流设备表") -//@RestController -//@RequestMapping(value="/osmoticFlowDevice") -public class OsmoticFlowDeviceController extends AbstractCommonFileController{ - - @Autowired - private OsmoticFlowDeviceService service; - - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticFlowDevice dto) { - if (Objects.nonNull(service.getById(dto.getStationCode()))) { - throw new IllegalArgumentException("当前编号已存在"); - } - - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticFlowDevice dto) { - if (Objects.isNull(service.getById(dto.getStationCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setCreateTime(null); - boolean result = service.updateById(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated OsmoticDevicePage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getStationCode())) { - query.like(OsmoticFlowDevice::getStationCode, page.getStationCode()); - } - if (ObjectUtils.isNotNull(page.getDeviceCode())) { - query.like(OsmoticFlowDevice::getDeviceName, page.getDeviceCode()); - } - query.orderByDesc(OsmoticFlowDevice::getCreateTime); - - Page data = service.page(page.getPageSo().toPage(), query); - data.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getStationCode()) - )); - return R.ok(data); - } - - @Operation(summary = "详情和监测数据查询") - @PostMapping("/getDetailsAndMonitoringDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataList()); - } - - @Override - public String getGroupId() { - return "OsmoticFlowDevice"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowRController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowRController.java deleted file mode 100644 index 818284b..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticFlowRController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.so.OsmoticQueryPageSo; -import com.gunshi.project.hsz.model.OsmoticFlowR; -import com.gunshi.project.hsz.service.OsmoticFlowRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 渗流监测记录表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -//@Tag(name = "渗流监测记录表") -//@RestController -//@RequestMapping(value="/osmoticFlowR") -public class OsmoticFlowRController { - - @Autowired - private OsmoticFlowRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticFlowR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticFlowR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody OsmoticQueryPageSo osmoticQueryPageSo) { - return R.ok(service.queryPage(osmoticQueryPageSo)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressDeviceController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressDeviceController.java deleted file mode 100644 index 431626f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressDeviceController.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.so.OsmoticDevicePage; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticPressDeviceVo; -import com.gunshi.project.hsz.model.OsmoticPressDevice; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.OsmoticPressDeviceService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 渗压设备表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -//@Tag(name = "渗压设备表") -//@RestController -//@RequestMapping(value="/osmoticPressDevice") -public class OsmoticPressDeviceController extends AbstractCommonFileController{ - - @Autowired - private OsmoticPressDeviceService service; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticPressDevice dto) { - if (Objects.nonNull(service.getById(dto.getStationCode()))) { - throw new IllegalArgumentException("当前编号已存在"); - } - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticPressDevice dto) { - if (Objects.isNull(service.getById(dto.getStationCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setCreateTime(null); - boolean result = service.updateById(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated OsmoticDevicePage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - if (ObjectUtils.isNotNull(page.getStationCode())) { - query.like(OsmoticPressDevice::getStationCode, page.getStationCode()); - } - if (ObjectUtils.isNotNull(page.getDeviceCode())) { - query.like(OsmoticPressDevice::getDeviceName, page.getDeviceCode()); - } - - query.orderByDesc(OsmoticPressDevice::getCreateTime); - - Page data = service.page(page.getPageSo().toPage(), query); - data.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getStationCode()) - )); - return R.ok(data); - } - - - @Operation(summary = "详情和监测数据查询") - @PostMapping("/getDetailsAndMonitoringDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataList()); - } - - @Override - public String getGroupId() { - return "OsmoticPressDevice"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftDeviceController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftDeviceController.java deleted file mode 100644 index 06e43c5..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftDeviceController.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticShiftDeviceVo; -import com.gunshi.project.hsz.model.OsmoticShiftDevice; -import com.gunshi.project.hsz.service.OsmoticShiftDeviceService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 位移监测记录表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -//@Tag(name = "位移设备表") -//@RestController -//@RequestMapping(value="/osmoticShiftDevice") -public class OsmoticShiftDeviceController { - - @Autowired - private OsmoticShiftDeviceService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticShiftDevice dto) { - if (Objects.nonNull(service.getById(dto.getStationCode()))) { - throw new IllegalArgumentException("当前编号已存在"); - } - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticShiftDevice dto) { - if (Objects.isNull(service.getById(dto.getStationCode()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setCreateTime(null); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - - @Operation(summary = "详情和监测数据查询(暂无设备表,无法使用)") - @PostMapping("/getDetailsAndMonitoringDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataList()); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticWarnRController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticWarnRController.java deleted file mode 100644 index c931b35..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticWarnRController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.WarnPageSo; -import com.gunshi.project.hsz.entity.so.WarnSo; -import com.gunshi.project.hsz.entity.vo.OsmoticWarnVo; -import com.gunshi.project.hsz.model.OsmoticWarnR; -import com.gunshi.project.hsz.service.OsmoticWarnRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Map; - -/** - * 描述: 隐患预警记录表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "隐患预警记录表") -@RestController -@RequestMapping(value="/osmoticWarnR") -public class OsmoticWarnRController { - - @Autowired - private OsmoticWarnRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticWarnR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticWarnR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "统计") - @PostMapping("/stat") - public R> stat(@RequestBody WarnSo warnSo) { - return R.ok(service.stat(warnSo)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody WarnPageSo warnPageSo) { - return R.ok(service.queryPage(warnPageSo)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticWarnRuleController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticWarnRuleController.java deleted file mode 100644 index 4330612..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticWarnRuleController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.WarnRulePageSo; -import com.gunshi.project.hsz.model.OsmoticWarnRule; -import com.gunshi.project.hsz.service.OsmoticWarnRuleService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Date; -import java.util.List; -/** - * 描述: 预警规则配置表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "预警规则配置表") -@RestController -@RequestMapping(value="/osmoticWarnRule") -public class OsmoticWarnRuleController { - - @Autowired - private OsmoticWarnRuleService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticWarnRule dto) { - checkParam(dto); - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - private void checkParam(OsmoticWarnRule dto) { - Long id = dto.getId(); - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(OsmoticWarnRule::getStationCode,dto.getStationCode()) - .eq(OsmoticWarnRule::getLevel,dto.getLevel()); - if(dto.getType() == 3){ - queryWrapper.eq(OsmoticWarnRule::getDirection,dto.getDirection()); - } - if(id != null){ - queryWrapper.ne(OsmoticWarnRule::getId,id); - } - if(service.count(queryWrapper ) > 0){ - throw new IllegalArgumentException("该测点已存在该类型的告警"); - } - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticWarnRule dto) { - checkParam(dto); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody WarnRulePageSo warnRulePageSo) { - return R.ok(service.queryPage(warnRulePageSo)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticWaterRController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticWaterRController.java deleted file mode 100644 index 32cdeeb..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticWaterRController.java +++ /dev/null @@ -1,218 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.alibaba.fastjson2.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.OsmoticWaterRVo; -import com.gunshi.project.hsz.listener.OsmoticWaterRImportListener; -import com.gunshi.project.hsz.model.OsmoticWaterR; -import com.gunshi.project.hsz.model.OsmoticWaterRule; -import com.gunshi.project.hsz.service.OsmoticWaterRService; -import com.gunshi.project.hsz.service.OsmoticWaterRuleService; -import com.gunshi.project.hsz.util.ConvertUtil; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.util.ExcelUtil; -import com.gunshi.project.hsz.util.ResultJson; -import com.gunshi.project.hsz.util.excel.ExcelResult; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.RequestPart; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Serializable; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 描述: 水质采样记录表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水质采样记录表") -@RestController -@RequestMapping(value="/osmoticWaterR") -public class OsmoticWaterRController { - - @Autowired - private OsmoticWaterRService service; - - @Autowired - private OsmoticWaterRuleService osmoticWaterRuleService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticWaterR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticWaterR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "获取最新一条数据") - @PostMapping("/getLastData") - public R> getLastData() { - Map resMap = new HashMap<>(); - QueryWrapper qw = new QueryWrapper<>(); - qw.orderBy(true, false, "tm").last(" limit 1"); - OsmoticWaterR osmoticWaterR = service.getOne(qw); - if(ObjectUtils.isNotEmpty(osmoticWaterR)){ - resMap = JSON.parseObject(JSON.toJSONString(osmoticWaterR), Map.class); - // 获取标准值 - List list = osmoticWaterRuleService.list(); - if(CollectionUtils.isNotEmpty(list)){ - for (OsmoticWaterRule rule : list){ - String code = rule.getCode(); - String codeStandard = code + "Standard"; - if(resMap.containsKey(code)){ - if("~".equals(rule.getCondition())){ - resMap.put(codeStandard, "(" + rule.getOne() + rule.getCondition() + rule.getTwo() + ")"); - } else { - String codeLevel = resMap.get(code + "Level").toString(); - if(codeLevel.contains("Ⅰ")){ - resMap.put(codeStandard, "(" + rule.getCondition() + rule.getOne() + ")"); - } else if (codeLevel.contains("Ⅱ")){ - resMap.put(codeStandard, "(" + rule.getCondition() + rule.getTwo() + ")"); - } else if (codeLevel.contains("Ⅲ")){ - resMap.put(codeStandard, "(" + rule.getCondition() + rule.getThree() + ")"); - } else if (codeLevel.contains("Ⅳ")){ - resMap.put(codeStandard, "(" + rule.getCondition() + rule.getFour() + ")"); - } else if (codeLevel.contains("Ⅴ")){ - resMap.put(codeStandard, "(" + rule.getCondition() + rule.getFive() + ")"); - } - } - } - } - } - } - return R.ok(resMap); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated OsmoticWaterR osmoticWaterR) { - QueryWrapper wrapper = new QueryWrapper() - .ge(ObjectUtils.isNotNull(osmoticWaterR.getStartTime()), "tm", osmoticWaterR.getStartTime()) - .le(ObjectUtils.isNotNull(osmoticWaterR.getEndTime()), "tm", osmoticWaterR.getEndTime()); - if(StringUtils.isNotBlank(osmoticWaterR.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(osmoticWaterR.getIsAsc()) ? false : osmoticWaterR.getIsAsc(), osmoticWaterR.getOrderField()); - } - return R.ok(service.list(wrapper)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated OsmoticWaterR osmoticWaterR) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.ge(ObjectUtils.isNotNull(osmoticWaterR.getStartTime()), "tm", osmoticWaterR.getStartTime()) - .le(ObjectUtils.isNotNull(osmoticWaterR.getEndTime()), "tm", osmoticWaterR.getEndTime()); - if(StringUtils.isNotBlank(osmoticWaterR.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(osmoticWaterR.getIsAsc()) ? false : osmoticWaterR.getIsAsc(), osmoticWaterR.getOrderField()); - } - return R.ok(service.page(osmoticWaterR.getPageSo().toPage(), wrapper)); - } - - /** - * 获取导入模板 - */ - @Operation(summary = "获取导入模板") - @PostMapping("/importTemplate") - public void importTemplate(HttpServletResponse response) { - ExcelUtil.exportExcel(new ArrayList<>(), "水质整编表", OsmoticWaterRVo.class, response, "水质整编表"); - } - - /** - * 导入数据 - * - * @param file 导入文件 - * - */ - @Operation(summary = "导入数据") - @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public ResultJson importData(@RequestPart("file") MultipartFile file) throws Exception { - ExcelResult result = ExcelUtil.importExcel(file.getInputStream(), OsmoticWaterRVo.class, new OsmoticWaterRImportListener()); - return ResultJson.ok(result.getAnalysis()); - } - - @Operation(summary = "导出") - @PostMapping("/exportOsmoticWaterRDataExcel") - @CrossOrigin - public void exportOsmoticWaterRDataExcel(@RequestBody @Validated OsmoticWaterR osmoticWaterR, HttpServletResponse response) { - String filename = "水质整编表"; - if (ObjectUtils.isNotEmpty(osmoticWaterR.getStartTime())) { - filename.concat("_").concat(DateUtil.convertDateToString(osmoticWaterR.getStartTime())); - } - if (ObjectUtils.isNotEmpty(osmoticWaterR.getStartTime())) { - filename.concat("_").concat(DateUtil.convertDateToString(osmoticWaterR.getEndTime())); - } - List vos = ConvertUtil.entityToVoList(this.list(osmoticWaterR).getData(), OsmoticWaterRVo.class); - ExcelUtil.exportExcel(vos, filename, OsmoticWaterRVo.class, response, "水质整编表"); - } - - - @Operation(summary = "文件下载") - @PostMapping("/downloadFile") - @CrossOrigin - public void downloadFile(HttpServletResponse response) throws IOException { - String filePath = "doc/2002年6月1日_GB3838-2002地表水环境质量标准.pdf"; - File file = new File(filePath); - if (!file.exists()) { - new FileNotFoundException("文件不存在!"); - } - response.setCharacterEncoding("utf-8"); - response.setContentType("application/octet-stream; charset=UTF-8"); - response.setHeader("content-disposition", "attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode("GB3838-2002地表水环境质量标准.pdf", "UTF-8")); - InputStream inputStream = null; - OutputStream outputStream = null; - try { - inputStream = this.getClass().getClassLoader().getResourceAsStream(filePath); - outputStream = response.getOutputStream(); - byte[] buffer = new byte[1024]; - int len = 0; - while ((len = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, len); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - inputStream.close(); - outputStream.close(); - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticWaterRuleController.java b/src/main/java/com/gunshi/project/hsz/controller/OsmoticWaterRuleController.java deleted file mode 100644 index 4ca73e2..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/OsmoticWaterRuleController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.OsmoticWaterRule; -import com.gunshi.project.hsz.service.OsmoticWaterRuleService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 水质质量标准规则表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水质质量标准规则表") -@RestController -@RequestMapping(value="/osmoticWaterRule") -public class OsmoticWaterRuleController { - - @Autowired - private OsmoticWaterRuleService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody OsmoticWaterRule dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody OsmoticWaterRule dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/PersonnelPlanController.java b/src/main/java/com/gunshi/project/hsz/controller/PersonnelPlanController.java deleted file mode 100644 index a2aef3b..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/PersonnelPlanController.java +++ /dev/null @@ -1,295 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.PersonnelPlanPage; -import com.gunshi.project.hsz.model.PersonnelPlan; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.PersonnelPlanService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.ruoyi.common.utils.poi.ExcelUtil; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.util.ObjectUtils; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@Tag(name = "培训计划表") -@RestController -@RequestMapping(value = "/personnelPlan") -public class PersonnelPlanController extends AbstractCommonFileController { - - - @Autowired - private PersonnelPlanService service; - - @Autowired - private FileAssociationsService fileService; - - @Override - public String getGroupId() { - return "personnelPlan"; - } - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody PersonnelPlan dto) { - - LambdaQueryChainWrapper query = service.lambdaQuery() - .eq(PersonnelPlan::getType, dto.getType()) - .eq(PersonnelPlan::getName, dto.getName()); - if (query.count() > 0) { - throw new IllegalArgumentException("当前培训主题培训班名称重复"); - } - - if (Objects.nonNull(dto.getStm()) && Objects.nonNull(dto.getEtm()) && dto.getStm().compareTo(dto.getEtm()) > 0) { - throw new IllegalArgumentException("开始时间不能大于结束时间"); - } - - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody PersonnelPlan dto) { - - LambdaQueryChainWrapper query = service.lambdaQuery() - .ne(PersonnelPlan::getId, dto.getId()) - .eq(PersonnelPlan::getType, dto.getType()) - .eq(PersonnelPlan::getName, dto.getName()); - if (query.count() > 0) { - throw new IllegalArgumentException("当前培训主题培训班名称重复"); - } - - if (Objects.nonNull(dto.getStm()) && Objects.nonNull(dto.getEtm()) && dto.getStm().compareTo(dto.getEtm()) > 0) { - throw new IllegalArgumentException("开始时间不能大于结束时间"); - } - - dto.setCreateTime(null); - dto.setCreateBy(null); - dto.setCreateName(null); - dto.setUpdateTime(new Date()); - boolean result = service.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(result ? dto : null); - } - - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean data = service.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return R.ok(data); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated PersonnelPlanPage dto) { - LambdaQueryChainWrapper query = service.lambdaQuery(); - if (StringUtils.isNotBlank(dto.getName())){ - query.like(PersonnelPlan::getName, dto.getName()); - } - return R.ok(query - .eq(PersonnelPlan::getStatus, 1) - .list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated PersonnelPlanPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - Date stm = page.getStm(); - Date etm = page.getEtm(); - - if (Objects.nonNull(etm) && Objects.nonNull(stm)) { - query.nested(o -> o.between(PersonnelPlan::getStm, stm, etm).or().between(PersonnelPlan::getEtm, stm, etm)); - } else { - - if (Objects.nonNull(stm)) { - query.ge(PersonnelPlan::getStm, stm); - } - - if (Objects.nonNull(etm)) { - query.le(PersonnelPlan::getEtm, etm); - } - } - - - String name = page.getName(); - if (StringUtils.isNotBlank(name)) { - query.like(PersonnelPlan::getName, name); - } - - String applicant = page.getApplicant(); - if (StringUtils.isNotBlank(applicant)) { - query.like(PersonnelPlan::getApplicant, applicant); - } - query.orderByDesc(PersonnelPlan::getStm).orderByDesc(PersonnelPlan::getCreateTime); - Page data = service.page(page.getPageSo().toPage(), query); - data.getRecords().forEach(item -> - item.setFiles(fileService.getFiles(getGroupId(), item.getId().toString())) - ); - return R.ok(data); - } - - - @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - @Operation(summary = "上传") - public R> uploading(@RequestPart("file") MultipartFile file) throws IOException { - - //判断文件是否有数据 - if (ObjectUtils.isEmpty(file) || file.getSize() <= 0) { - throw new IllegalArgumentException("上传文件为空"); - } - - ExcelUtil util = new ExcelUtil<>(PersonnelPlan.class); - - List plans = util.importExcel(file.getInputStream()); - - if (CollectionUtils.isNotEmpty(plans)) { - checkData(plans); - Date regDate = new Date(); - plans.forEach(o -> o.setId(IdWorker.getId()) - .setRegDate(regDate) - .setStatus(1) -// .setApplicant(SecurityUtils.getUsername()) - ); - boolean b = service.saveBatch(plans); - if (!b) { - throw new IllegalArgumentException("上传失败"); - } - } - - return R.ok(plans); - } - - /** - * 校验上传的数据 - * name type,stm ,etm , , addr, unit, content,numPeople,scope 不能为空 - * stm etm 进行时间格式校验 - */ - private void checkData(List list) { - if (CollectionUtils.isEmpty(list)) { - throw new IllegalArgumentException("上传数据为空"); - } - - int rowNumber = 1; - for (PersonnelPlan o : list) { - if (StringUtils.isBlank(o.getName())) { - throw new IllegalArgumentException("第" + rowNumber + "行的培训班名称不能为空"); - } - if (Objects.isNull(o.getType())) { - throw new IllegalArgumentException("第" + rowNumber + "行的培训主题不能为空"); - } - if (Objects.isNull(o.getStm())) { - throw new IllegalArgumentException("第" + rowNumber + "行的开始培训时间不能为空"); - } - if (Objects.isNull(o.getEtm())) { - throw new IllegalArgumentException("第" + rowNumber + "行的结束培训时间不能为空"); - } - if (StringUtils.isBlank(o.getAddr())) { - throw new IllegalArgumentException("第" + rowNumber + "行的培训地点不能为空"); - } - if (StringUtils.isBlank(o.getUnit())) { - throw new IllegalArgumentException("第" + rowNumber + "行的培训单位不能为空"); - } - if (StringUtils.isBlank(o.getContent())) { - throw new IllegalArgumentException("第" + rowNumber + "行的培训内容不能为空"); - } - if (o.getNumPeople() == null || o.getNumPeople() <= 0) { - throw new IllegalArgumentException("第" + rowNumber + "行的参训人数必须大于0"); - } - if (StringUtils.isBlank(o.getScope())) { - throw new IllegalArgumentException("第" + rowNumber + "行的培训范围不能为空"); - } - rowNumber++; - } - } - - @PostMapping("/download") - @Operation(summary = "下载") - public void download(@RequestBody PersonnelPlanPage page, HttpServletResponse response) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - Date stm = page.getStm(); - Date etm = page.getEtm(); - - if (Objects.nonNull(etm) && Objects.nonNull(stm)) { - query.nested(o -> o.between(PersonnelPlan::getStm, stm, etm).or().between(PersonnelPlan::getEtm, stm, etm)); - } else { - - if (Objects.nonNull(stm)) { - query.ge(PersonnelPlan::getStm, stm); - } - - if (Objects.nonNull(etm)) { - query.le(PersonnelPlan::getEtm, etm); - } - } - - - String name = page.getName(); - if (StringUtils.isNotBlank(name)) { - query.like(PersonnelPlan::getName, name); - } - - String applicant = page.getApplicant(); - if (StringUtils.isNotBlank(applicant)) { - query.like(PersonnelPlan::getApplicant, applicant); - } - query.orderByDesc(PersonnelPlan::getStm).orderByDesc(PersonnelPlan::getCreateTime); - - List list = service.list(query); - - ExcelUtil util = new ExcelUtil<>(PersonnelPlan.class); - - util.exportExcel(response, list, "培训计划"); - - } - - @GetMapping("/template") - @Operation(summary = "下载模板") - public void download(HttpServletResponse response) { - ExcelUtil util = new ExcelUtil<>(PersonnelPlan.class); - - util.importTemplateExcel(response, "培训计划"); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/PersonnelPlanLogController.java b/src/main/java/com/gunshi/project/hsz/controller/PersonnelPlanLogController.java deleted file mode 100644 index 8030d4e..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/PersonnelPlanLogController.java +++ /dev/null @@ -1,267 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.PersonnelPlanLogPage; -import com.gunshi.project.hsz.entity.vo.PersonnelPlanLogStatisticsVo; -import com.gunshi.project.hsz.model.PersonnelPlan; -import com.gunshi.project.hsz.model.PersonnelPlanLog; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.PersonnelPlanLogService; -import com.gunshi.project.hsz.service.PersonnelPlanService; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.time.LocalDate; -import java.util.*; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@Tag(name = "培训记录表") -@RestController -@RequestMapping(value = "/personnelPlanLog") -public class PersonnelPlanLogController extends AbstractCommonFileController{ - - - @Autowired - private PersonnelPlanLogService service; - - - @Autowired - private PersonnelPlanService planService; - - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody PersonnelPlanLog dto) { - - if (Objects.nonNull(dto.getStm()) && Objects.nonNull(dto.getEtm()) && dto.getStm().compareTo(dto.getEtm()) >= 0){ - throw new IllegalArgumentException("开始时间不能大于结束时间"); - } - - LambdaQueryChainWrapper query = service.lambdaQuery() - .eq(PersonnelPlanLog::getPlanDate, dto. getPlanDate()) - .eq(PersonnelPlanLog::getName, dto.getName()); - if (query.count() > 0){ - throw new IllegalArgumentException("当前培训日期标题名称重复"); - } - - if (Objects.nonNull(dto.getPlanId()) && planService.lambdaQuery().eq(PersonnelPlan::getId, dto.getPlanId()).count() == 0) { - throw new IllegalArgumentException("培训计划不存在"); - } - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - boolean result = service.save(dto); - - if (result){ - fileService.saveFile(dto.getFiles1(), getGroupId(), String.valueOf( dto.getId()),"1"); - fileService.saveFile(dto.getFiles2(), getGroupId(), String.valueOf( dto.getId()),"2"); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody PersonnelPlanLog dto) { - - if (Objects.nonNull(dto.getStm()) && Objects.nonNull(dto.getEtm()) && dto.getStm().compareTo(dto.getEtm()) >= 0){ - throw new IllegalArgumentException("开始时间不能大于结束时间"); - } - - LambdaQueryChainWrapper query = service.lambdaQuery() - .ne(PersonnelPlanLog::getId, dto.getId()) - .eq(PersonnelPlanLog::getPlanDate, dto. getPlanDate()) - .eq(PersonnelPlanLog::getName, dto.getName()); - if (query.count() > 0){ - throw new IllegalArgumentException("当前培训日期标题名称重复"); - } - if (Objects.nonNull(dto.getPlanId()) && planService.lambdaQuery().eq(PersonnelPlan::getId, dto.getPlanId()).count() == 0) { - throw new IllegalArgumentException("培训计划不存在"); - } - - dto.setCreateTime(null); - dto.setCreateBy(null); - dto.setCreateName(null); - dto.setUpdateTime(new Date()); - boolean result = service.updateById(dto); - if (result){ - fileService.saveFile(dto.getFiles1(), getGroupId(), String.valueOf( dto.getId()),"1"); - fileService.saveFile(dto.getFiles2(), getGroupId(), String.valueOf( dto.getId()),"2"); - } - return R.ok(result ? dto : null); - } - - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - @Operation(summary = "获取详情(包括文件信息)") - @GetMapping("/get/{id}") - public R get(@Schema(name = "id") @PathVariable("id") Serializable id) { - PersonnelPlanLog o = service.getById(id); - if (Objects.isNull(o)) { - throw new IllegalArgumentException("当前数据不存在"); - } - - o.setFiles1(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"1")); - o.setFiles2(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"2")); - return R.ok(o); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery() - .list()); - } - - @Operation(summary = "统计") - @GetMapping("/statistics/{year}") - public R statistics(@PathVariable("year") Integer year) { - if (year < 1970 || year > LocalDate.now().getYear()) { - throw new IllegalArgumentException("年份不合法"); - } - //plan planLog - Date stm = DateUtil.convertStringToDate(year + "-01-01 00:00:00"); - Date etm = DateUtil.convertStringToDate(year + "-12-31 23:59:59"); - List planLogs = service.lambdaQuery() - .between(PersonnelPlanLog::getPlanDate, stm, etm) - .list(); - List plans = planService.lambdaQuery() - .between(PersonnelPlan::getStm, stm, etm) - .list(); - - PersonnelPlanLogStatisticsVo vo = new PersonnelPlanLogStatisticsVo(); - -// Map map1 = Maps.newHashMap(); -// Calendar calendar = Calendar.getInstance(); -// int month = calendar.get(Calendar.MONTH) + 1; - if (CollectionUtils.isNotEmpty(planLogs)) { - - vo.setNumberOfPeriods1(planLogs.size()); - vo.setNumberOfPeriods2(plans.stream().mapToInt(PersonnelPlan::getNum).sum()); - vo.setPersonNum1(planLogs.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()); - vo.setPersonNum2(plans.stream() - .map( - item -> item.getNumPeople() * item.getNum() - ).mapToInt(Integer::intValue).sum() - ); - - Calendar calendar = Calendar.getInstance(); - List logStatPerMonth = new ArrayList<>(); - for (int i = 0; i < 12; i++) { - int month = i; //calendar的月份是从0开始 - List logsPerMonth = planLogs.stream().filter(log -> { - Date planDate = log.getPlanDate(); - calendar.setTime(planDate); - return month == calendar.get(Calendar.MONTH); - }).toList(); - - //month num1实际人数 num2实际期数 - PersonnelPlanLogStatisticsVo.EchartsData chartItem = new PersonnelPlanLogStatisticsVo.EchartsData(); - chartItem.setMonth(i + 1); //calendar的月份是从0开始 - chartItem.setNum1(logsPerMonth.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()); - chartItem.setNum2(logsPerMonth.size()); - - logStatPerMonth.add(chartItem); -// PersonnelPlanLogStatisticsVo.EchartsData echartsData1 = map1.get(i); -// if (Objects.isNull(echartsData1)) { -// echartsData1 = new PersonnelPlanLogStatisticsVo.EchartsData(); -// } -// int finalI = i; -// List list = planLogs.stream() -// .filter(item -> -// { -// calendar.setTime(item.getPlanDate()); -// return month == finalI; -// }) -// .toList(); -// -// echartsData1.setMonth(finalI) -// .setNum1(list.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()) -// .setNum2(list.size()); -// map1.put(i, echartsData1); - } - vo.setList1(logStatPerMonth); - } - - - return R.ok(vo); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated PersonnelPlanLogPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - Date stm = page.getStm(); - if (Objects.nonNull(stm)) { - query.ge(PersonnelPlanLog::getPlanDate, stm); - } - - Date etm = page.getEtm(); - if (Objects.nonNull(etm)) { - query.le(PersonnelPlanLog::getPlanDate, etm); - } - - Integer type = page.getType(); - if (Objects.nonNull(type)) { - query.eq(PersonnelPlanLog::getType, type); - } - - Long planId = page.getPlanId(); - if (Objects.nonNull(planId)) { - query.eq(PersonnelPlanLog::getPlanId, planId); - } - - String trainees = page.getTrainees(); - if (StringUtils.isNotBlank(trainees)) { - query.like(PersonnelPlanLog::getTrainees, trainees); - } - - String unit = page.getUnit(); - if (StringUtils.isNotBlank(unit)) { - query.like(PersonnelPlanLog::getUnit, unit); - } - - query.orderByDesc(PersonnelPlanLog::getPlanDate); - - Page data = service.page(page.getPageSo().toPage(), query); - data.getRecords().forEach(o -> { - o.setFiles1(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"1")); - o.setFiles2(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"2")); - }); - return R.ok(data); - } - - @Override - public String getGroupId() { - return "personnelPlanLog"; - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/PrePlaceController.java b/src/main/java/com/gunshi/project/hsz/controller/PrePlaceController.java deleted file mode 100644 index b5fa5ea..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/PrePlaceController.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.PrePlacePageSo; -import com.gunshi.project.hsz.model.PrePlace; -import com.gunshi.project.hsz.model.PrePlaceDetail; -import com.gunshi.project.hsz.service.PrePlaceDetailService; -import com.gunshi.project.hsz.service.PrePlaceService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "白蚁-防治点") -@RestController -@RequestMapping(value="/bypp") -public class PrePlaceController { - - @Autowired - private PrePlaceService prePlaceService; - - @Autowired - private PrePlaceDetailService prePlaceDetailService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody PrePlace dto) { - - boolean result = prePlaceService.saveData(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody PrePlace dto) { - boolean result = prePlaceService.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = prePlaceService.deleteById(id); - return R.ok(b); - } - - @Operation(summary = "列表") - @GetMapping("/list") - public R> list() { - List list = prePlaceService.lambdaQuery().orderByAsc(PrePlace::getCreateTime).list(); - return R.ok(list); - } - - - @Operation(summary = "防治部位新增") - @PostMapping("/detail/insert") - public R detailInsert(@Validated(Insert.class) @RequestBody PrePlaceDetail dto) { - boolean result = prePlaceDetailService.saveData(dto); - return R.ok(result ? dto:null); - } - - @Operation(summary = "防治部位修改") - @PostMapping("/detail/update") - public R detailUpdate(@Validated(Update.class) @RequestBody PrePlaceDetail dto) { - boolean result = prePlaceDetailService.update(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "防治部位列表") - @GetMapping("/detail/list") - public R> detailList() { - List list = prePlaceDetailService.lambdaQuery().orderByAsc(PrePlaceDetail::getOrder).list(); - return R.ok(list); - } - - @Operation(summary = "防治部位列表") - @PostMapping("/detail/page") - public R> detailList(@RequestBody PrePlacePageSo pageSo) { - return R.ok(prePlaceDetailService.pageQuery(pageSo)); - } - - - @Operation(summary = "防治部位删除") - @GetMapping("/detail/del/{id}") - public R detailDel(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = prePlaceDetailService.deleteById(id); - return R.ok(b); - } - - @Operation(summary = "是否启用") - @GetMapping("/switch/{id}") - public R isEnable(@Schema(name = "id") @PathVariable("id") Serializable id) { - PrePlaceDetail byId = prePlaceDetailService.getById(id); - if(byId == null) { - throw new RuntimeException("该数据不存在,请检查"); - } - Integer isEnable = byId.getIsEnable(); - if(isEnable > 0){ - byId.setIsEnable(0); - }else{ - byId.setIsEnable(1); - } - boolean result = prePlaceDetailService.updateById(byId); - return R.ok(result ? false : true); - } - - //查询防治部位 (可根据 防治点查询,也可以根据防治部位查询) - @Operation(summary = "查询防治部位(可根据 防治点查询,也可以根据防治部位查询)") - @PostMapping("/tree") - public R> tree(@RequestBody PrePlacePageSo dto) { - List res = prePlaceService.tree(dto); - return R.ok(res); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ProjectEventsController.java b/src/main/java/com/gunshi/project/hsz/controller/ProjectEventsController.java deleted file mode 100644 index ff2cb7e..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ProjectEventsController.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.CommonDataPageSo; -import com.gunshi.project.hsz.entity.vo.ProjectEventsVo; -import com.gunshi.project.hsz.model.ProjectEvents; -import com.gunshi.project.hsz.service.ProjectEventsService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -/** - * 描述: 工程大事记 - * author: wanyan - * date: 2024-08-20 17:40:37 - */ -@Tag(name = "工程大事记") -@RestController -@RequestMapping(value="/projectEvents") -public class ProjectEventsController extends AbstractCommonFileController{ - - @Autowired - private ProjectEventsService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ProjectEvents dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ProjectEvents dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated CommonDataPageSo so) { - return R.ok(service.queryList(so)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated CommonDataPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "全周期档案") - @PostMapping("/doc/page") - public R> filePage(@RequestBody @Validated CommonDataPageSo page) { - return R.ok(service.filePage(page)); - } - - @Operation(summary = "导出") - @PostMapping("/export") - public void export(@RequestBody @Validated CommonDataPageSo page, HttpServletResponse response) { - service.export(page,response); - } - - @Override - public String getGroupId() { - return "ProjectEvents"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ProjectSafeAnalyseController.java b/src/main/java/com/gunshi/project/hsz/controller/ProjectSafeAnalyseController.java deleted file mode 100644 index 721b9cf..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ProjectSafeAnalyseController.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.entity.dto.ProjectSafeCalculateDto; -import com.gunshi.project.hsz.entity.dto.ProjectSaveReportDto; -import com.gunshi.project.hsz.entity.dto.SyRegressionDataDto; -import com.gunshi.project.hsz.entity.vo.ForecastResultVo; -import com.gunshi.project.hsz.entity.vo.ProjectSafeCalculateVo; -import com.gunshi.project.hsz.entity.vo.ProjectSaveReportVo; -import com.gunshi.project.hsz.model.ForecastTask; -import com.gunshi.project.hsz.model.RegressionEquation; -import com.gunshi.project.hsz.model.SyRegressionData; -import com.gunshi.project.hsz.service.ForecastResultsService; -import com.gunshi.project.hsz.service.JcskSyRService; -import com.gunshi.project.hsz.service.SyRegressionDataService; -import com.gunshi.project.hsz.util.RegressionEquationFormatter; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -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; -import java.util.Map; - -@Tag(name = "工程安全监测") -@RestController -@RequestMapping(value="/projectSafe") -public class ProjectSafeAnalyseController { - - - @Autowired - private JcskSyRService jcskSyRService; - - @Autowired - private SyRegressionDataService syRegressionDataService; - - @Autowired - private ForecastResultsService forecastResultsService; - - @Operation(summary = "多项式回归") - @PostMapping("/caculate") - public R calculate(@RequestBody ProjectSafeCalculateDto dto){ - ProjectSafeCalculateVo ans = jcskSyRService.calculate(dto); - return R.ok(ans); - } - - @Operation(summary = "多项式回归-导出") - @PostMapping("/caculate/export") - public void caculateExport(@RequestBody ProjectSafeCalculateDto dto, HttpServletResponse response){ - ProjectSafeCalculateVo ans = jcskSyRService.calculate(dto); - syRegressionDataService.export(dto.getDvcd(),ans,response); - } - - @Operation(summary = "预报") - @PostMapping("/report") - public R report(@RequestBody ProjectSaveReportDto projectSaveReportDto){ - ProjectSaveReportVo res = new ProjectSaveReportVo(); - ForecastTask forecastTask = projectSaveReportDto.getForecastTask(); - List voList = forecastResultsService.getHumanForecastResult(forecastTask); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setDvcd(projectSaveReportDto.getDvcd()); - syRegressionData.setOrder(projectSaveReportDto.getOrder()); - List queryReg = syRegressionDataService.queryData(syRegressionData);//获取方程组 - if(queryReg.isEmpty()){ - return R.ok(null); - } - //计算 - List datas = forecastResultsService.calculateY(queryReg.get(0),voList); - res.setDatas(datas); - String formatEquation = RegressionEquationFormatter.formatEquation(queryReg.get(0).getRegressionEquation()); - res.setRegression(formatEquation); - return R.ok(res); - } - - @Operation(summary = "预报-导出") - @PostMapping("/report/export") - public void reportExport(@RequestBody ProjectSaveReportDto projectSaveReportDto,HttpServletResponse response){ - ForecastTask forecastTask = projectSaveReportDto.getForecastTask(); - List voList = forecastResultsService.getHumanForecastResult(forecastTask); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setDvcd(projectSaveReportDto.getDvcd()); - syRegressionData.setOrder(projectSaveReportDto.getOrder()); - List queryReg = syRegressionDataService.queryData(syRegressionData);//获取方程组 - if(queryReg.isEmpty()){ - return; - } - //计算 - List res = forecastResultsService.calculateY(queryReg.get(0),voList); - String formatEquation = RegressionEquationFormatter.formatEquation(queryReg.get(0).getRegressionEquation()); - forecastResultsService.reportExport(res,formatEquation,projectSaveReportDto.getDvcd(),response); - } - - - - @Operation(summary = "保存多线程回归方程") - @PostMapping("/save") - public R save(@RequestBody SyRegressionDataDto dto){ - if(!dto.getList().isEmpty()){ - syRegressionDataService.saveBatch(dto.getList()); - } - return R.ok(true); - } - - @Operation(summary = "删除多线程回归方程") - @PostMapping("/del") - public R delete(@RequestBody SyRegressionDataDto dto){ - if(!dto.getList().isEmpty()){ - syRegressionDataService.removeBatchByIds(dto.getList()); - } - return R.ok(true); - } - - @Operation(summary = "查找多线程回归方程") - public R> list(@RequestBody SyRegressionData dto){ - List res = syRegressionDataService.queryData(dto); - return R.ok(res); - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RainBasinDivisionController.java b/src/main/java/com/gunshi/project/hsz/controller/RainBasinDivisionController.java deleted file mode 100644 index f426a2f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RainBasinDivisionController.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.annotation.Get; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.StPptnSo; -import com.gunshi.project.hsz.entity.vo.CartogramVo; -import com.gunshi.project.hsz.entity.vo.StPptnDetailsVo; -import com.gunshi.project.hsz.entity.vo.StPptnVo; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import com.gunshi.project.hsz.service.RainBasinDivisionService; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - - -@RestController -@RequestMapping("/attResBase") -@Tag(name = "雨情站详细信息查询接口") -public class RainBasinDivisionController { - - @Autowired - private RainBasinDivisionService rainBasinDivisionService; - - - @Post(path = "/rainBasinDivision/queryStStbprpPerHour/StcdAndStartTimeAndEndTime",summary = "根据测站编码查询时间段内每小时的雨量") - public R> queryStPptnPerHourByStcdAndStartTimeAndEndTime(@RequestBody @Validated StPptnSo stPptnSo){ - return R.ok(rainBasinDivisionService.queryStPptnPerHourByStcdAndStartTimeAndEndTime(stPptnSo)); - } - - @Post(path = "/rainBasinDivision/queryStStbprpPerHourChart/StcdAndStartTimeAndEndTime",summary = "根据测站编码查询时间段内每小时的雨量统计") - public R queryStPptnPerHourChartByStcdAndStartTimeAndEndTime(@RequestBody @Validated StPptnSo stPptnSo){ - return R.ok(rainBasinDivisionService.queryStPptnPerHourChartByStcdAndStartTimeAndEndTime(stPptnSo)); - } - - @Post(path = "/rainBasinDivision/queryStStbprpPerDay/StcdAndStartTimeAndEndTime",summary = "根据测站编码查询时间段内每天的雨量") - public R> queryStPptnPerDayByStcdAndStartTimeAndEndTime(@RequestBody @Validated StPptnSo stPptnSo){ - return R.ok(rainBasinDivisionService.queryStPptnPerDayByStcdAndStartTimeAndEndTime(stPptnSo).reversed()); - } - - @Post(path = "/rainBasinDivision/queryStStbprpPerDayChart/StcdAndStartTimeAndEndTime",summary = "根据测站编码查询时间段内每天的雨量统计") - public R queryStPptnPerDayChartChartByStcdAndStartTimeAndEndTime(@RequestBody @Validated StPptnSo stPptnSo){ - return R.ok(rainBasinDivisionService.queryStPptnPerDayChartChartByStcdAndStartTimeAndEndTime(stPptnSo)); - } - - @Get(path = "/rainBasinDivision/queryStPptnDetails/stcd",summary = "根据测站编码查询详细雨量情况") - public R queryStPptnDetailsByStcd(@RequestParam("stcd") @Parameter(description = "测站编码") String stcd){ - return R.ok(rainBasinDivisionService.queryStPptnDetailsByStcd(stcd)); - } - - @Post(path = "/maxRain",summary = "根据测站编码查询时间段内最大小时雨量") - public R maxRain(@RequestBody @Validated StPptnSo stPptnSo){ - return R.ok(rainBasinDivisionService.maxRain(stPptnSo)); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RealRainController.java b/src/main/java/com/gunshi/project/hsz/controller/RealRainController.java deleted file mode 100644 index ea7d3e6..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RealRainController.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.RealRainBaseSo; -import com.gunshi.project.hsz.entity.vo.RealRainListVo; -import com.gunshi.project.hsz.service.RealRainService; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.Data; -import org.springframework.beans.factory.annotation.Autowired; -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; - - -@RestController -@RequestMapping("/real/rain") -@Tag(name = "降雨信息查询接口") -@Data -public class RealRainController { - - @Autowired - private RealRainService realRainService; - - - @Post(path="/list", summary = "实时雨情-降雨信息-查询接口") - public R> getRealRainList(@RequestBody RealRainBaseSo realRainBaseSo) { - List list = realRainService.getRealRainList(realRainBaseSo); - return R.ok(list); - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResBriefController.java b/src/main/java/com/gunshi/project/hsz/controller/ResBriefController.java deleted file mode 100644 index debbe99..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResBriefController.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.project.hsz.model.ResBriefR; -import com.gunshi.project.hsz.service.ResBriefRService; -import com.ruoyi.common.core.domain.R; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Date; -import java.util.List; - -/** - * @author lyf - * @since 2025-04-25 - */ -@Tag(name = "汛情简报接口") -@RestController -@RequestMapping(value="/resBrief") -public class ResBriefController { - @Autowired - private ResBriefRService resBriefRService; - - @GetMapping("/getResBriefList") - public R> getResBriefList( - @RequestParam(value = "startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate, - @RequestParam(value = "endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate - ) { - if (startDate.after(endDate)) { - return R.fail("开始日期不能大于结束日期"); - } - return R.ok(resBriefRService.getResBriefList(startDate, endDate)); - } - - @GetMapping("/execute") - public void executeSyncData(){ - resBriefRService.scheduledScan(); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResFloodRoadController.java b/src/main/java/com/gunshi/project/hsz/controller/ResFloodRoadController.java deleted file mode 100644 index b941926..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResFloodRoadController.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ResFloodRoad; -import com.gunshi.project.hsz.service.ResFloodRoadService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 防汛道路 - * author: xusan - * date: 2024-11-14 10:37:15 - */ -@Tag(name = "防汛道路") -@RestController -@RequestMapping(value="/resFloodRoad") -public class ResFloodRoadController { - - @Autowired - private ResFloodRoadService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ResFloodRoad dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ResFloodRoad dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResMangUnitController.java b/src/main/java/com/gunshi/project/hsz/controller/ResMangUnitController.java deleted file mode 100644 index 18f99f5..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResMangUnitController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ResCodeSo; -import com.gunshi.project.hsz.model.ResMangUnit; -import com.gunshi.project.hsz.service.ResMangUnitService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 水库管理单位表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库管理单位表") -@RestController -@RequestMapping(value="/resMangUnit") -public class ResMangUnitController { - - @Autowired - private ResMangUnitService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ResMangUnit dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ResMangUnit dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@Validated @RequestBody ResCodeSo so) { - return R.ok(service.lambdaQuery().eq(ResMangUnit::getResCode,so.getResCode()).list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResMonthEcoFlowController.java b/src/main/java/com/gunshi/project/hsz/controller/ResMonthEcoFlowController.java deleted file mode 100644 index f3fa0b0..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResMonthEcoFlowController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ResMonthEcoFlowListSo; -import com.gunshi.project.hsz.model.ResMonthEcoFlow; -import com.gunshi.project.hsz.service.ResMonthEcoFlowService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 水库月核定生态流量表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库月核定生态流量表") -@RestController -@RequestMapping(value="/resMonthEcoFlow") -public class ResMonthEcoFlowController { - - @Autowired - private ResMonthEcoFlowService service; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ResMonthEcoFlow dto) { - dto.setModitime(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ResMonthEcoFlow dto) { - if (Objects.isNull(service.getById(dto.getId()))){ - throw new IllegalArgumentException("当前数据不存在"); - } - dto.setModitime(null); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "批量修改") - @PostMapping("/updates") - public R updates(@Validated(Update.class) @RequestBody List dto) { - - dto = dto.stream().map(x -> x.setModitime(new Date())).collect(Collectors.toList()); - boolean result = service.updateBatchById(dto); - - return R.ok(result); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))){ - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@Validated @RequestBody ResMonthEcoFlowListSo vo) { - LocalDateTime stm = LocalDateTime.of(vo.getYear(), 1, 1, 0, 0, 0); - LocalDateTime etm = LocalDateTime.of(vo.getYear(), 12, 31, 23, 59, 59); - return R.ok(service.lambdaQuery().between(ResMonthEcoFlow::getModitime,stm,etm).orderByAsc(ResMonthEcoFlow::getMonth).list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResPersonController.java b/src/main/java/com/gunshi/project/hsz/controller/ResPersonController.java deleted file mode 100644 index eca707f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResPersonController.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ResPersonPage; -import com.gunshi.project.hsz.model.ResPerson; -import com.gunshi.project.hsz.service.ResPersonService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@Tag(name = "责任人表") -@RestController -@RequestMapping(value="/resPerson") -public class ResPersonController { - - - @Autowired - private ResPersonService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ResPerson dto) { - - LambdaQueryChainWrapper query = service.lambdaQuery() - .eq(ResPerson::getType, dto.getType()) - .eq(ResPerson::getName, dto.getName()); - if (query.count() > 0){ - throw new IllegalArgumentException("当前责任类型名字重复"); - } - - dto.setCreateTime(new Date()); - dto.setId(IdWorker.getId()); - - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ResPerson dto) { - - LambdaQueryChainWrapper query = service.lambdaQuery() - .ne(ResPerson::getId, dto.getId()) - .eq(ResPerson::getType, dto.getType()) - .eq(ResPerson::getName, dto.getName()); - if (query.count() > 0){ - throw new IllegalArgumentException("当前责任类型名字重复"); - } - dto.setCreateTime(null); - dto.setCreateBy(null); - dto.setCreateName(null); - dto.setUpdateTime(new Date()); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated ResPersonPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - Integer type = page.getType(); - if (Objects.nonNull(type)){ - query.eq(ResPerson::getType, type); - } - - String name = page.getName(); - if (StringUtils.isNotBlank(name)){ - query.like(ResPerson::getName, name); - } - - String contactInfo = page.getContactInfo(); - if (StringUtils.isNotBlank(contactInfo)){ - query.like(ResPerson::getContactInfo, contactInfo); - } - - return R.ok(service.page(page.getPageSo().toPage(),query)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResPlanBController.java b/src/main/java/com/gunshi/project/hsz/controller/ResPlanBController.java deleted file mode 100644 index 2ab8021..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResPlanBController.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ResCodeSo; -import com.gunshi.project.hsz.model.ResPlanB; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.ResPlanBService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 水库预案表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库预案表") -@RestController -@RequestMapping(value="/resPlanB") -public class ResPlanBController extends AbstractCommonFileController{ - - @Autowired - private ResPlanBService service; - - @Autowired - private FileAssociationsService fileService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ResPlanB dto) { - dto.setId(IdWorker.getId()); - dto.setModitime(new Date()); - boolean result = service.save(dto); - - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf( dto.getId())); - } - - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ResPlanB dto) { - if (Objects.isNull(service.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - if(dto.getFiles() != null && !dto.getFiles().isEmpty()){ - dto.setModitime(new Date()); - } - boolean result = service.updateById(dto); - - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf( dto.getId())); - } - - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = service.removeById(id); - - if (data){ - fileService.deleteFile(getGroupId(),id.toString()); - } - - return R.ok(data); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@Validated @RequestBody ResCodeSo so) { - LambdaQueryChainWrapper query = service.lambdaQuery(); - if (StringUtils.isNotBlank(so.getResCode())){ - query.eq(ResPlanB::getResCode, so.getResCode()); - } - if (StringUtils.isNotBlank(so.getType())){ - query.eq(ResPlanB::getType, so.getType()); - } - query.orderByDesc(ResPlanB::getModitime); - List list = query.list(); - - if (CollectionUtils.isNotEmpty(list)){ - list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),String.valueOf( o.getId())))); - } - - return R.ok(list); - } -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - @Override - public String getGroupId() { - return "ResPlanB"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResProjectImgController.java b/src/main/java/com/gunshi/project/hsz/controller/ResProjectImgController.java deleted file mode 100644 index 57dc496..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResProjectImgController.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ResCodeSo; -import com.gunshi.project.hsz.model.ResProjectImg; -import com.gunshi.project.hsz.service.AttResBaseService; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.ResProjectImgService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 水库工程图片 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库工程图片") -@RestController -@RequestMapping(value="/resProjectImg") -public class ResProjectImgController extends AbstractCommonFileController{ - - @Autowired - private ResProjectImgService service; - - @Autowired - private FileAssociationsService fileService; - - @Autowired - private AttResBaseService resService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ResProjectImg dto) { - if (Objects.isNull(resService.getById(dto.getResCode()))){ - throw new RuntimeException("当前水库不存在"); - } - dto.setId(IdWorker.getId()); - dto.setModitime(new Date()); - boolean result = service.save(dto); - if (result){ - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf( dto.getId())); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ResProjectImg dto) { - if (Objects.isNull(resService.getById(dto.getResCode()))){ - throw new RuntimeException("当前水库不存在"); - } - if (Objects.isNull(service.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = service.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf( dto.getId())); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = service.removeById(id); - - if (data){ - fileService.deleteFile(getGroupId(),id.toString()); - } - - return R.ok(data); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@Validated @RequestBody ResCodeSo so) { - List list = service.lambdaQuery().eq(ResProjectImg::getResCode, so.getResCode()) - .orderByAsc(ResProjectImg::getSortOn) - .orderByDesc(ResProjectImg::getModitime) - .list(); - if (CollectionUtils.isNotEmpty(list)){ - list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),String.valueOf( o.getId())))); - } - return R.ok(list); - } -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - @Override - public String getGroupId() { - return "ResProjectImg"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResSafePersonBController.java b/src/main/java/com/gunshi/project/hsz/controller/ResSafePersonBController.java deleted file mode 100644 index 81e4cc8..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResSafePersonBController.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ResCodeSo; -import com.gunshi.project.hsz.model.ResSafePersonB; -import com.gunshi.project.hsz.service.AttResBaseService; -import com.gunshi.project.hsz.service.ResSafePersonBService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 水库责任体系表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库责任体系表") -@RestController -@RequestMapping(value="/resSafePersonB") -public class ResSafePersonBController { - - @Autowired - private ResSafePersonBService service; - - @Autowired - private AttResBaseService resService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ResSafePersonB dto) { - if (Objects.isNull(resService.getById(dto.getResCode()))){ - throw new RuntimeException("当前水库不存在"); - } - dto.setModitime(new Date()); - dto.setId(IdWorker.getId()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ResSafePersonB dto) { - if (Objects.isNull(resService.getById(dto.getResCode()))){ - throw new RuntimeException("当前水库不存在"); - } - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))){ - throw new RuntimeException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@Validated @RequestBody ResCodeSo so) { - return R.ok(service.lambdaQuery().eq(ResSafePersonB::getResCode,so.getResCode()).list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResTunnelController.java b/src/main/java/com/gunshi/project/hsz/controller/ResTunnelController.java deleted file mode 100644 index fbdbdfc..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResTunnelController.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ResTunnel; -import com.gunshi.project.hsz.service.ResTunnelService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 水库建筑物 - 放空洞/灌溉发电洞 - * author: xusan - * date: 2024-11-14 10:34:11 - */ -@Tag(name = "水库建筑物 - 放空洞/灌溉发电洞") -@RestController -@RequestMapping(value="/resTunnel") -public class ResTunnelController { - - @Autowired - private ResTunnelService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ResTunnel dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ResTunnel dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @GetMapping("/list") - public R> list(@Schema(name = "type",description = "类型(1放空洞 2灌溉发电洞)") @RequestParam(name = "type") Integer type) { - return R.ok(service.lambdaQuery().eq(ResTunnel::getType,type).list()); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ResWarnController.java b/src/main/java/com/gunshi/project/hsz/controller/ResWarnController.java deleted file mode 100644 index 8a51485..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ResWarnController.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.entity.so.WaterCommonSo; -import com.gunshi.project.hsz.entity.vo.AttResBaseVo; -import com.gunshi.project.hsz.entity.vo.ResWarnVo; -import com.gunshi.project.hsz.entity.vo.ResWarningVo; -import com.gunshi.project.hsz.entity.vo.SKWarningVo; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.model.ResSafePersonB; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -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.math.BigDecimal; -import java.math.RoundingMode; -import java.util.*; - -@Tag(name = "水库建筑物 - 放空洞/灌溉发电洞") -@RestController -@RequestMapping(value="/current/situation") -public class ResWarnController { - - @Autowired - private AttResBaseMapper attResBaseMapper; - - @Operation(summary = "预警") - @PostMapping("/res/warn") - public R warn(@Validated(Insert.class) @RequestBody WaterCommonSo dto) { - ResWarnVo vo = new ResWarnVo(); - List attResBaseVos = attResBaseMapper.queryList2(); - List calFloodLevList = new ArrayList<>(); - - List desFloodLevList = new ArrayList<>(); - - List aboutAFsltdzList = new ArrayList<>(); - vo.setCalFloodLevList(calFloodLevList); - vo.setDesFloodLevList(desFloodLevList); - vo.setAboutAFsltdzList(aboutAFsltdzList); - Calendar now = Calendar.getInstance(); - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - now.set(Calendar.MILLISECOND, 0); - Date currentDate = now.getTime(); - for (AttResBaseVo attResBaseVo : attResBaseVos) { - Date tm = attResBaseVo.getTm(); - if(tm == null){ - continue; - } - //水位的最新采集时间不在24小时内 - if (tm.before(currentDate)) { - continue; - }else{ - BigDecimal rz = attResBaseVo.getRz(); - if(rz == null){ - continue; - } - ResWarningVo resWarningVo = new ResWarningVo(); - resWarningVo.setLttd(attResBaseVo.getLttd()); - resWarningVo.setLgtd(attResBaseVo.getLgtd()); - resWarningVo.setStnm(attResBaseVo.getStnm()); - resWarningVo.setStcd(attResBaseVo.getStcd()); - resWarningVo.setRz(rz); - if (attResBaseVo.getCalState() == 1) { - BigDecimal aboveCal = rz.subtract(attResBaseVo.getCalFloodLev()); - resWarningVo.setAfsltdz(aboveCal); - calFloodLevList.add(resWarningVo); - } else if (attResBaseVo.getDesState() == 1) { - BigDecimal aboveDes = rz.subtract(attResBaseVo.getDesFloodLev()); - resWarningVo.setAfsltdz(aboveDes); - desFloodLevList.add(resWarningVo); - } else if (attResBaseVo.getFlState() == 1) { - BigDecimal aboveFl = attResBaseVo.getAFsltdz().setScale(2, RoundingMode.HALF_UP); - resWarningVo.setAfsltdz(aboveFl); - aboutAFsltdzList.add(resWarningVo); - } - } - } - return R.ok(vo); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RescueGoodsBController.java b/src/main/java/com/gunshi/project/hsz/controller/RescueGoodsBController.java deleted file mode 100644 index 88d31f7..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RescueGoodsBController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.annotation.Get; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.entity.so.RescueGoodsPageSo; -import com.gunshi.project.hsz.model.RescueGoodsB; -import com.gunshi.project.hsz.model.RescueGoodsFile; -import com.gunshi.project.hsz.model.RescueGoodsFileAutoDao; -import com.gunshi.project.hsz.model.RescueGoodsFileAutoMapper; -import com.gunshi.project.hsz.service.AbstractModelWithAttachService; -import com.gunshi.project.hsz.service.RescueGoodsService; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/3/18 - * - * @author wanyan - * @version 1.0 - */ -@Tag(name = "抢险物资") -@RestController -@RequestMapping("/rescue/goods") -public class RescueGoodsBController extends AbstractCommonFileController implements - ICommonInsertWithAttach, - ICommonUpdateByIdWithAttach, - ICommonDeleteByIdWithAttach, - ICommonQueryAttach -{ - - - @Autowired - private RescueGoodsFileAutoDao fileAutoDao; - - @Autowired - private RescueGoodsService rescueGoodsService; - - - @Override - public void customSetFieldForUpdate(RescueGoodsB model) { - model.setTm(new Date()); - } - - @Override - public RescueGoodsFileAutoDao getAttachAutoDao() { - return fileAutoDao; - } - - @Override - public String getAttachBzIdName() { - return "goods_id"; - } - - @Override - public Long getId(Serializable id) { - return Long.valueOf(id.toString()); - } - - @Override - public AbstractModelWithAttachService getModelService() { - return rescueGoodsService; - } - - @Override - public void customSetFieldForInsert(RescueGoodsB model) { - long id = IdWorker.getId(); - model.setGoodsId(id); - model.setTm(new Date()); - } - - @Override - public String getGroupId() { - return "rescueGoodsB"; - } - - - /** - * 分页查询 - */ - @Post(path = "/page/query", summary = "分页查询") - public R> pageQuery(@RequestBody @Validated RescueGoodsPageSo RescueGoodsPageSo) { - return R.ok(rescueGoodsService.pageQuery(RescueGoodsPageSo)); - } - - /** - * 详情 - */ - @Get(path = "/detail", summary = "详情") - public R> detail(@Schema(name = "goodsId",description = "物资id") @RequestParam(name = "goodsId") Long goodsId) { - return R.ok(rescueGoodsService.detail(goodsId)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RescueTeamBController.java b/src/main/java/com/gunshi/project/hsz/controller/RescueTeamBController.java deleted file mode 100644 index 31cb91f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RescueTeamBController.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.annotation.Get; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.RescueTeamPageSo; -import com.gunshi.project.hsz.entity.vo.RescueTeamVo; -import com.gunshi.project.hsz.model.RescueTeamB; -import com.gunshi.project.hsz.model.RescueTeamBAutoMapper; -import com.gunshi.project.hsz.model.RescueTeamFile; -import com.gunshi.project.hsz.model.RescueTeamFileAutoDao; -import com.gunshi.project.hsz.service.AbstractModelWithAttachService; -import com.gunshi.project.hsz.service.RescueTeamService; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -/** - * 描述: 抢险队伍 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "抢险队伍") -@RestController -@RequestMapping("/rescue/team") -public class RescueTeamBController extends AbstractCommonFileController implements - ICommonInsertWithAttach, - ICommonUpdateByIdWithAttach, - ICommonDeleteByIdWithAttach, - ICommonQueryAttach -{ - - @Autowired - private RescueTeamBAutoMapper rescueTeamBAutoMapper; - - @Autowired - private RescueTeamFileAutoDao attachAutoDao; - - @Autowired - private RescueTeamService rescueTeamService; - - - @Override - public Long getId(Serializable id) { - return Long.valueOf(id.toString()); - } - - @Override - public void customSetFieldForUpdate(RescueTeamB model) { - model.setTm(new Date()); - rescueTeamService.updateDetailAndObj(model); - } - - @Override - public AbstractModelWithAttachService getModelService() { - return rescueTeamService; - } - - @Override - public void customSetFieldForInsert(RescueTeamB model) { - long teamId = IdWorker.getId(); - model.setTeamId(teamId); - model.setTm(new Date()); - rescueTeamService.saveDetailAndObj(model,teamId); - } - - @Override - public String getGroupId() { - return "rescueTeamB"; - } - - - /** - * 防汛准备-分页查询 - */ - @Post(path = "/page/query", summary = "防汛准备-分页查询") - public R> pageQuery(@RequestBody @Validated RescueTeamPageSo RescueTeamPageSo) { - return R.ok(rescueTeamService.pageQuery(RescueTeamPageSo)); - } - - - /** - * 列表查询 - */ - @Get(path = "/list", summary = "列表查询") - public R> list(@Schema(name = "teamName",description = "队伍名称") @RequestParam(name = "teamName",required = false) String teamName) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - if(StringUtils.isNotEmpty(teamName)){ - queryWrapper.like(RescueTeamB::getTeamName,teamName); - } - return R.ok(rescueTeamBAutoMapper.selectList(queryWrapper)); - } - - /** - * 详情 - */ - @Get(path = "/detail", summary = "详情") - public R detail(@Schema(name = "teamId",description = "队伍ID") @RequestParam(name = "teamId") Long teamId) { - return R.ok(rescueTeamService.detail(teamId)); - } - - @Get(path ="/delete/{id}", summary = "删除") - public R delete(@Schema(name = "teamId") @PathVariable("teamId") Long teamId) { - return R.ok(rescueTeamService.delete(teamId)); - } - - @Override - public RescueTeamFileAutoDao getAttachAutoDao() { - return attachAutoDao; - } - - @Override - public String getAttachBzIdName() { - return "team_id"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/ReservoirWaterController.java b/src/main/java/com/gunshi/project/hsz/controller/ReservoirWaterController.java deleted file mode 100644 index 1ca42d1..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ReservoirWaterController.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.annotation.Get; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StPptnR; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.so.DataQueryCommonSo; -import com.gunshi.project.hsz.entity.so.PicQuerySo; -import com.gunshi.project.hsz.entity.so.ReservoirWaterCommonSo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.service.*; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.checkerframework.checker.units.qual.A; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.math.BigDecimal; -import java.util.Calendar; -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@RestController -@RequestMapping("/reservoir/water") -@Tag(name = "水库水情") -public class ReservoirWaterController { - - - @Autowired - private ReservoirWaterService reservoirWaterService; - - @Autowired - private RealRainService realRainService; - - @Autowired - private StWaterRRealService stWaterRRealService; - - @Autowired - private ResMonthEcoFlowService resMonthEcoFlowService; - - @Autowired - private StRsvrRService stRsvrRService; - - @Autowired - private StPptnRService stPptnRService; - - @Autowired - private RiverWaterService riverWaterService; - - @Post(path = "/rz", summary = "水库水位") - public R rz(@RequestBody ReservoirWaterCommonSo reservoirWaterCommonSo) { - return R.ok(reservoirWaterService.rz(reservoirWaterCommonSo)); - } - - @Post(path = "/list", summary = "水库水情列表") - public R> list() { - return R.ok(reservoirWaterService.list()); - } - - - @Post(path = "/listV2", summary = "水库水情列表") - public R> listV2() { - return R.ok(reservoirWaterService.listV2()); - } - - @Post(path = "/listV22", summary = "供水能力分析-水库水情列表") - public R> listV22() { - return R.ok(reservoirWaterService.listV22()); - } - - @Get(path = "/image/channel", summary = "图像监测视角下拉") - public R> channel(@Schema(name = "resCode") @RequestParam("resCode") String resCode) { - return R.ok(reservoirWaterService.channel(resCode)); - } - - @Post(path = "/image/info", summary = "图片信息") - public R> imageInfo(@RequestBody @Validated PicQuerySo picQuerySo) { - return R.ok(reservoirWaterService.imageInfo(picQuerySo)); - } - - @Post(path = "/real/img", summary = "水库实时图像") - public R> realImg(@RequestBody ReservoirWaterCommonSo reservoirWaterCommonSo) { - return R.ok(reservoirWaterService.realImg(reservoirWaterCommonSo)); - } - - @Post(path = "/monitor/data", summary = "监测数据") - public R> monitorData(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) { - return R.ok(reservoirWaterService.monitorData(dataQueryCommonSo)); - } - - @Post(path = "/data", summary = "闸阀总览-库容曲线") - public R> data(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) { - dataQueryCommonSo.setStcd("232");//黑石咀水库 - return R.ok(reservoirWaterService.data(dataQueryCommonSo)); - } - - @Post(path = "/waterInfo", summary = "闸阀总览-库容曲线") - public R waterInfo(@RequestBody DataQueryCommonSo dataQueryCommonSo) { - AttResMonitorVo attResMonitorVo = new AttResMonitorVo(); - - LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); - qw.eq(StRsvrR::getStcd,dataQueryCommonSo.getStcd()).orderByDesc(StRsvrR::getTm).last(" limit 1"); - List list1 = stRsvrRService.list(qw); - if(CollectionUtils.isNotEmpty(list1)){ - attResMonitorVo.setRz(new BigDecimal(list1.get(0).getRz())); - attResMonitorVo.setTm(list1.get(0).getTm()); - } - LambdaQueryWrapper qw2= new LambdaQueryWrapper<>(); - qw2.eq(StPptnR::getStcd,dataQueryCommonSo.getStcd()).orderByDesc(StPptnR::getTm).last(" limit 1"); - List list3 = stPptnRService.list(qw2); - if(CollectionUtils.isNotEmpty(list3)){ - attResMonitorVo.setTodayRainNum(new BigDecimal(list3.get(0).getDrp())); - attResMonitorVo.setTodayRainNumTm(list3.get(0).getTm()); - } - - List list2 = stWaterRRealService.listRelated(); - if(CollectionUtils.isNotEmpty(list2)){ - // 获取当月核定流量 - ResMonthEcoFlow resMonthEcoFlow = resMonthEcoFlowService.getOne(new QueryWrapper().eq("month", Calendar.getInstance().get(Calendar.MONTH) + 1)); - if(ObjectUtils.isNotEmpty(resMonthEcoFlow)){ - for(StWaterRReal real : list2){ - real.setResMonthEcoFlow(resMonthEcoFlow); - } - } - StWaterRReal stWaterRReal = list2.stream().max((o1, o2) -> o1.getTm().compareTo(o2.getTm())).orElse(new StWaterRReal()); - attResMonitorVo.setOutPowerNum(stWaterRReal.getQ()); - attResMonitorVo.setOutPowerNumTm(stWaterRReal.getTm()); - } - return R.ok(attResMonitorVo); - } - - @Post(path = "/data/page", summary = "分页库容曲线") - public R> dataPage(@RequestBody @Validated PicQuerySo picQuerySo) { - return R.ok(reservoirWaterService.dataPage(picQuerySo)); - } - - @Get(path = "/detail", summary = "监测详细数据(下方表格)") - public R detail(@Schema(name = "stcd") @RequestParam("stcd") String stcd) { - AttRvMonitorDetailVo detail; - List riverStcd = riverWaterService.getRiverStcd(); - if(riverStcd.contains(stcd)){ - detail = riverWaterService.detail(stcd); - }else{ - detail = reservoirWaterService.detail(stcd); - } - return R.ok(detail); - } - - - @Post(path = "/listV3",summary = "获取溢洪道水位站") - public R> listV3(){ - return R.ok(reservoirWaterService.listV3()); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RiceRqWaterController.java b/src/main/java/com/gunshi/project/hsz/controller/RiceRqWaterController.java deleted file mode 100644 index db3490a..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RiceRqWaterController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.gunshi.project.hsz.entity.dto.RiceWaterCaculateDto; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.entity.so.RiceRqWaterPageSo; -import com.gunshi.project.hsz.entity.vo.RiceRqWaterCaculateVo; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.service.RiceRqWaterService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@Tag(name = "农业需水预测") -@RestController -@RequestMapping(value="/riceRqWater") -public class RiceRqWaterController { - - - - @Autowired - private RiceRqWaterService riceRqWaterService; - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated RiceRqWaterPageSo page) { - return R.ok(riceRqWaterService.pageQuery(page)); - } - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody RiceRqWater dto) { - return R.ok(riceRqWaterService.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody RiceRqWater dto) { - return R.ok(riceRqWaterService.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(riceRqWaterService.delData(id)); - } - - @Operation(summary = "阶段耗水量计算") - @PostMapping("/stage/caculate") - public R> stageCaculate(@RequestBody RiceWaterCaculateDto dto){ - List res = riceRqWaterService.stageCaculate(dto); - return R.ok(res); - } - - @Operation(summary = "综合计算") - @PostMapping("/caculate") - public R caculate(@RequestBody RiceWaterCaculateDto dto){ - RiceRqWaterCaculateVo res = riceRqWaterService.caculate(dto); - return R.ok(res); - } - - - @Operation(summary = "灌区用水量计算") - @PostMapping("/irrigation/caculate") - public R> irrigationCaculate(@RequestBody RiceWaterCaculateDto dto){ - List res = riceRqWaterService.irrigationCaculate(dto); - return R.ok(res); - } - - @Operation(summary = "灌区综合用水量计算-按月份计算") - @PostMapping("/irrigation/caculate/month") - public R> irrigationCaculateMonth(@RequestBody RiceWaterCaculateDto dto){ - List res = riceRqWaterService.irrigationComprehensiveCaculateMonth(dto); - return R.ok(res); - } - - @Operation(summary = "灌区综合用水量计算-按生长周期计算") - @PostMapping("/irrigation/caculate/cycle") - public R> irrigationCaculateCycle(@RequestBody RiceWaterCaculateDto dto){ - List res = riceRqWaterService.irrigationComprehensiveCaculateCycle(dto); - return R.ok(res); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RiceSupportBalanceController.java b/src/main/java/com/gunshi/project/hsz/controller/RiceSupportBalanceController.java deleted file mode 100644 index 76bf073..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RiceSupportBalanceController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.dto.RiceSupportBalanceCaculateDto; -import com.gunshi.project.hsz.entity.so.RiceSupportBalanceCaculateIcPageSo; -import com.gunshi.project.hsz.entity.so.RiceSupportBalanceCaculatePageSo; -import com.gunshi.project.hsz.entity.so.RiceSupportBalanceCaculateRcPageSo; -import com.gunshi.project.hsz.model.IcWaterForecast; -import com.gunshi.project.hsz.model.RiceRqWater; -import com.gunshi.project.hsz.model.RiceSupportBalance; -import com.gunshi.project.hsz.service.RiceSupportBalanceService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -@Tag(name = "供需平衡分析") -@RestController -@RequestMapping(value="/riceSupportBalance") -public class RiceSupportBalanceController { - - @Autowired - private RiceSupportBalanceService riceSupportBalanceService; - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody RiceSupportBalanceCaculatePageSo page){ - Page res = riceSupportBalanceService.queryPage(page); - return R.ok(res); - } - - @Operation(summary = "删除") - @PostMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id){ - boolean flag = riceSupportBalanceService.delData(id); - return R.ok(flag); - } - - @Operation(summary = "计算") - @PostMapping("/insert") - public R caculate(@RequestBody RiceSupportBalanceCaculateDto dto){ - riceSupportBalanceService.caculateAndSave(dto); - return R.ok(true); - } - - @Operation(summary = "来水预测-分页查询,供需平衡版") - @PostMapping("/icpage") - public R> icPage(@RequestBody RiceSupportBalanceCaculateIcPageSo pageSo){ - Page page = riceSupportBalanceService.icPage(pageSo); - return R.ok(page); - } - - @Operation(summary = "农业需水-分页查询,供需平衡版") - @PostMapping("/rcpage") - public R> rcPage(@RequestBody RiceSupportBalanceCaculateRcPageSo pageSo){ - Page page = riceSupportBalanceService.rcPage(pageSo); - return R.ok(page); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RiskControlInfoController.java b/src/main/java/com/gunshi/project/hsz/controller/RiskControlInfoController.java deleted file mode 100644 index a2563f2..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RiskControlInfoController.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.model.RiskControlInfo; -import com.gunshi.project.hsz.service.RiskControlInfoService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -/** - * 描述: 风险管控清单 - * author: xusan - * date: 2024-08-22 14:17:28 - */ -@Tag(name = "风险管控清单") -@RestController -@RequestMapping(value="/risk/info") -public class RiskControlInfoController extends AbstractCommonFileController{ - - @Autowired - private RiskControlInfoService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody RiskControlInfo dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody RiskControlInfo dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated AttCctvBasePage page) { - return R.ok(service.pageQuery(page)); - } - - - @Override - public String getGroupId() { - return "riskControlInfo"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/RiskControlMenuController.java b/src/main/java/com/gunshi/project/hsz/controller/RiskControlMenuController.java deleted file mode 100644 index 7ab8db7..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RiskControlMenuController.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.RiskControlMenu; -import com.gunshi.project.hsz.service.RiskControlMenuService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 风险管控目录 - * author: xusan - * date: 2024-08-22 14:16:35 - */ -@Tag(name = "风险管控目录") -@RestController -@RequestMapping(value="/risk/menu") -public class RiskControlMenuController { - - @Autowired - private RiskControlMenuService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody RiskControlMenu dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody RiskControlMenu dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "树") - @PostMapping("/tree") - public R> tree() { - return R.ok(service.tree()); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/RiverWaterController.java b/src/main/java/com/gunshi/project/hsz/controller/RiverWaterController.java deleted file mode 100644 index d5042ac..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RiverWaterController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.annotation.Get; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.DataQueryCommonSo; -import com.gunshi.project.hsz.entity.vo.AttRiverNowDataVo; -import com.gunshi.project.hsz.entity.vo.AttRvBaseVo; -import com.gunshi.project.hsz.entity.vo.AttRvMonitorDetailVo; -import com.gunshi.project.hsz.entity.vo.AttRvMonitorVo; -import com.gunshi.project.hsz.model.StZqR; -import com.gunshi.project.hsz.model.StZqrlB; -import com.gunshi.project.hsz.service.RiverWaterService; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/2/21 - * - * @author wanyan - * @version 1.0 - */ -@RestController -@RequestMapping("/river/water") -@Tag(name = "河道水情") -public class RiverWaterController { - - @Autowired - private RiverWaterService riverWaterService; - - @Get(path = "/get", summary = "河道水情上下游") - public R> get(@RequestParam("stcd") String stcd) { - return R.ok(riverWaterService.get(stcd)); - } - - @Get(path = "/list",summary = "河道水情上下游list(后端固定2个站点编号)") - public R> list() { - return R.ok(riverWaterService.list()); - } - - - @Get(path = "/zqrl", summary = "水位流量关系") - public R> zqrl(@Schema(name = "stcd") @RequestParam("stcd") String stcd) { - return R.ok(riverWaterService.zqr(stcd)); - } - - - @Post(path = "/monitor/data", summary = "数据查询-监测数据(上方表格)") - public R> monitorData(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) { - return R.ok(riverWaterService.monitorData(dataQueryCommonSo)); - } - - @Get(path = "/detail", summary = "数据查询-监测详细数据(下方表格)") - public R detail(@Schema(name = "stcd") @RequestParam("stcd") String stcd) { - return R.ok(riverWaterService.detail(stcd)); - } - - @Get(path = "/nowData",summary = "实时监测") - public R nowData(@RequestParam("stcd") String stcd) { - return R.ok(riverWaterService.nowData(stcd)); - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RotaController.java b/src/main/java/com/gunshi/project/hsz/controller/RotaController.java deleted file mode 100644 index 860e360..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RotaController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.alibaba.excel.EasyExcel; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.gunshi.core.annotation.Get; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.dto.RotaDto; -import com.gunshi.project.hsz.entity.vo.RotaVo; -import com.gunshi.project.hsz.listener.RotaImportListener; -import com.gunshi.project.hsz.model.RotaB; -import com.gunshi.project.hsz.service.RotaService; -import com.gunshi.project.hsz.util.ExcelUtil; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.http.MediaType; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * Description: - * Created by wanyan on 2024/3/25 - * - * @author wanyan - * @version 1.0 - */ -@RestController -@RequestMapping("/rota") -@Tag(name = "值班表") -public class RotaController { - - @Resource - private RotaService rotaService; - - - @Get(path = "/query", summary = "按年月查询") - public R>> query(@Schema(name = "yearMonth",description = "年月",example = "2024-03") @RequestParam(name = "yearMonth") String yearMonth) { - return R.ok(rotaService.query(yearMonth)); - } - - - @Post(path = "/edit/info", summary = "编辑值班信息") - public R editInfo(@RequestBody @Validated RotaDto rotaDto) { - return R.ok(rotaService.editInfo(rotaDto)); - } - - @Get(path = "/date/list", summary = "按年月日查询") - public R> dateList(@Schema(name = "rotaDate",description = "年月日",example = "2024-08-19") @RequestParam(name = "rotaDate") String rotaDate) { - return R.ok(rotaService.dateList(rotaDate)); - } - - /** - * 获取导入模板 - */ - @Operation(summary = "获取导入模板") - @PostMapping("/importTemplate") - public void importTemplate(HttpServletResponse response) { - ExcelUtil.exportExcel(new ArrayList<>(), "值班表", RotaVo.class, response, "值班表"); - } - - /** - * 导入数据 - * - * @param file 导入文件 - * - */ - @Operation(summary = "导入数据") - @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public R importData(@RequestPart("file") MultipartFile file) throws Exception { - //获取正确数据 - ArrayList successArrayList = new ArrayList<>(); - //获取错误数据 - ArrayList errorArrayList = new ArrayList<>(); - EasyExcel.read(file.getInputStream()) - .head(RotaVo.class) - .registerReadListener(new RotaImportListener( - // 监听器中doAfterAllAnalysed执行此方法;所有读取完成之后处理逻辑 - successArrayList::addAll, errorArrayList::addAll)) - // 设置sheet,默认读取第一个 - .sheet() - // 设置标题(字段列表)所在行数 - .headRowNumber(2) - .doRead(); - if(CollectionUtils.isNotEmpty(errorArrayList)){ - List errMsg = errorArrayList.stream().map(RotaVo::getErrorMsg).collect(Collectors.toList()); - return R.error(400,String.join(";",errMsg)); - } - if(CollectionUtils.isNotEmpty(successArrayList)){ - rotaService.saveImportData(successArrayList); - return R.ok(); - } - return R.ok(); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/RotaLogController.java b/src/main/java/com/gunshi/project/hsz/controller/RotaLogController.java deleted file mode 100644 index c6cfae3..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/RotaLogController.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.RotaLogPageSo; -import com.gunshi.project.hsz.model.RotaLog; -import com.gunshi.project.hsz.service.RotaLogService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -/** - * Description: - * Created by wanyan on 2024/3/25 - * - * @author wanyan - * @version 1.0 - */ -@RestController -@RequestMapping("/rota/log") -@Tag(name = "值班日志") -public class RotaLogController { - - @Resource - private RotaLogService service; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody RotaLog dto) { - checkParam(dto); - dto.setId(IdWorker.getId()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody RotaLog dto) { - checkParam(dto); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.removeById(id)); - } - - private void checkParam(RotaLog dto) { - Long id = dto.getId(); - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(RotaLog::getRotaDate,dto.getRotaDate()); - if(id != null){ - queryWrapper.ne(RotaLog::getId,id); - } - if(service.count(queryWrapper ) > 0){ - throw new IllegalArgumentException("该日期已存在值班日志"); - } - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody RotaLogPageSo rotaLogPageSo) { - return R.ok(service.queryPage(rotaLogPageSo)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/SafetyAccidentRegController.java b/src/main/java/com/gunshi/project/hsz/controller/SafetyAccidentRegController.java deleted file mode 100644 index 4313e39..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SafetyAccidentRegController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.CommonDataPageSo2; -import com.gunshi.project.hsz.model.SafetyAccidentReg; -import com.gunshi.project.hsz.service.SafetyAccidentRegService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; - -/** - * 描述: 安全事故登记 - * author: xusan - * date: 2024-08-21 14:45:44 - */ -@Tag(name = "安全事故登记") -@RestController -@RequestMapping(value="/safety/accident/reg") -public class SafetyAccidentRegController extends AbstractCommonFileController { - - @Autowired - private SafetyAccidentRegService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SafetyAccidentReg dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SafetyAccidentReg dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody CommonDataPageSo2 page) { - return R.ok(service.pageQuery(page)); - } - - @Override - public String getGroupId() { - return "safetyAccidentReg"; - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/SafetyCheckController.java b/src/main/java/com/gunshi/project/hsz/controller/SafetyCheckController.java deleted file mode 100644 index 070ddb7..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SafetyCheckController.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.CommonDataPageSo; -import com.gunshi.project.hsz.model.SafetyCheck; -import com.gunshi.project.hsz.service.SafetyCheckService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; - -/** - * 描述: 安全检查管理 - * author: wanyan - * date: 2024-08-20 17:40:37 - */ -@Tag(name = "安全检查管理") -@RestController -@RequestMapping(value="/safety/check") -public class SafetyCheckController extends AbstractCommonFileController{ - - @Autowired - private SafetyCheckService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SafetyCheck dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SafetyCheck dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated CommonDataPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Override - public String getGroupId() { - return "safetyCheck"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/SafetyHazardInvestController.java b/src/main/java/com/gunshi/project/hsz/controller/SafetyHazardInvestController.java deleted file mode 100644 index 2533612..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SafetyHazardInvestController.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.CommonDataPageSo; -import com.gunshi.project.hsz.model.SafetyHazardInvest; -import com.gunshi.project.hsz.service.SafetyHazardInvestService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; - -/** - * 描述: 安全隐患排查 - * author: wanyan - * date: 2024-08-20 17:40:37 - */ -@Tag(name = "安全隐患排查") -@RestController -@RequestMapping(value="/safety/hazard/invest") -public class SafetyHazardInvestController extends AbstractCommonFileController{ - - @Autowired - private SafetyHazardInvestService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SafetyHazardInvest dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SafetyHazardInvest dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated CommonDataPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Override - public String getGroupId() { - return "safetyHazardInvest"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/SafetyIdentifyController.java b/src/main/java/com/gunshi/project/hsz/controller/SafetyIdentifyController.java deleted file mode 100644 index 35fed72..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SafetyIdentifyController.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.db.dto.PageSo; -import com.gunshi.project.hsz.model.SafetyIdentify; -import com.gunshi.project.hsz.service.SafetyIdentifyService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -/** - * 描述: 安全鉴定台账 - * author: xusan - * date: 2024-08-21 14:45:44 - */ -@Tag(name = "安全鉴定台账") -@RestController -@RequestMapping(value="/safety/identify") -public class SafetyIdentifyController extends AbstractCommonFileController { - - @Autowired - private SafetyIdentifyService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SafetyIdentify dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SafetyIdentify dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody PageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Override - public String getGroupId() { - return "safetyIdentify"; - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/SafetyReinforcementController.java b/src/main/java/com/gunshi/project/hsz/controller/SafetyReinforcementController.java deleted file mode 100644 index af95f0c..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SafetyReinforcementController.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.db.dto.PageSo; -import com.gunshi.project.hsz.model.SafetyReinforcement; -import com.gunshi.project.hsz.service.SafetyReinforcementService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -/** - * 描述: 除险加固台账 - * author: xusan - * date: 2024-08-22 11:27:44 - */ -@Tag(name = "除险加固台账") -@RestController -@RequestMapping(value="/safety/reinforcement") -public class SafetyReinforcementController extends AbstractCommonFileController{ - - @Autowired - private SafetyReinforcementService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SafetyReinforcement dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SafetyReinforcement dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody PageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Override - public String getGroupId() { - return "safetyReinforcement"; - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/ShpPlacementController.java b/src/main/java/com/gunshi/project/hsz/controller/ShpPlacementController.java deleted file mode 100644 index cc039d4..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/ShpPlacementController.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.HomeShpPlacementVo; -import com.gunshi.project.hsz.model.ShpPlacement; -import com.gunshi.project.hsz.service.ShpPlacementService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 安置点 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "安置点") -@RestController -@RequestMapping(value="/shpPlacement") -public class ShpPlacementController { - - @Autowired - private ShpPlacementService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody ShpPlacement dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody ShpPlacement dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - - - @Operation(summary = "详情和行政区划数据查询") - @PostMapping("/getDetailsAndAddvcdDataList") - public R> getDetailsAndMonitoringDataList() { - return R.ok(service.getDetailsAndMonitoringDataLis()); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/SoilMoistureController.java b/src/main/java/com/gunshi/project/hsz/controller/SoilMoistureController.java deleted file mode 100644 index f0cda24..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SoilMoistureController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.annotation.Get; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.SoilMoisturePageSo; -import com.gunshi.project.hsz.entity.vo.SoilMoistureVO; -import com.gunshi.project.hsz.model.SoilMoistureData; -import com.gunshi.project.hsz.model.SoilMoistureStation; -import com.gunshi.project.hsz.service.SoilMoistureDataService; -import com.gunshi.project.hsz.service.SoilMoistureStationService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.stream.Collectors; - -/** - * 土壤墒情 - */ -@RestController -@RequestMapping("/soilMoisture") -@Tag(name = "土壤墒情") -public class SoilMoistureController { - - @Autowired - private SoilMoistureStationService soilMoistureStationService; - - @Autowired - private SoilMoistureDataService soilMoistureDataService; - - @Get(path = "/stationList", summary = "站点列表") - public R> listStation() { - List list = soilMoistureStationService.list(); - if(CollectionUtil.isEmpty(list)){ - return R.ok(list); - } - List collect = list.stream().peek(e -> { - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(SoilMoistureData::getStcd,e.getStcd()).orderByDesc(SoilMoistureData::getCreateTime).last(" limit 1"); - SoilMoistureData one = soilMoistureDataService.getOne(qw); - e.setTm(one.getCreateTime()); - e.setVal(one.getVal()); - }).collect(Collectors.toList()); - return R.ok(collect); - } - - @Post(path = "/page", summary = "分页") - public R> page(@RequestBody SoilMoisturePageSo page) { - return R.ok(soilMoistureDataService.pageQuery(page)); - } - - @GetMapping("/count/{stcd}") - public R count(@Schema(name = "stcd") @PathVariable("stcd") Serializable stcd) { - return R.ok(soilMoistureDataService.count(stcd.toString())); - } - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SoilMoistureData dto) { - boolean result = soilMoistureDataService.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SoilMoistureData dto) { - boolean result = soilMoistureDataService.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(soilMoistureDataService.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(soilMoistureDataService.lambdaQuery().list()); - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StAddvcdDController.java b/src/main/java/com/gunshi/project/hsz/controller/StAddvcdDController.java deleted file mode 100644 index 6ea107c..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StAddvcdDController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.annotation.Get; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.StAddvcdTreeVo; -import com.gunshi.project.hsz.model.StAddvcdD; -import com.gunshi.project.hsz.service.StAddvcdDService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 行政区划表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "行政区划表") -@RestController -@RequestMapping(value="/stAddvcdD") -public class StAddvcdDController { - - @Autowired - private StAddvcdDService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StAddvcdD dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StAddvcdD dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - /** - * 行政区划树 - */ - @Get(path = "/tree", summary = "行政区划树") - public R> tree(@Schema(description = "以根节点为基础,返回数据的深度,最低到组(自然村)") @RequestParam("level") String level) { - return R.ok(service.tree(level)); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StEvpoController.java b/src/main/java/com/gunshi/project/hsz/controller/StEvpoController.java deleted file mode 100644 index dd0451b..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StEvpoController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.gunshi.project.hsz.model.StEvpo; -import com.gunshi.project.hsz.service.StEvpoService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "水库蒸发") -@RestController -@RequestMapping(value="/evpo") -public class StEvpoController { - - @Autowired - private StEvpoService stEvpoService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StEvpo dto) { - dto.setId(IdWorker.getId()); - boolean result = stEvpoService.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StEvpo dto) { - boolean result = stEvpoService.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(stEvpoService.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List list = stEvpoService.lambdaQuery().orderByAsc(StEvpo::getMonth).list(); - list.stream().forEach(o ->{ - o.setEvaporation(o.getEvaporation().setScale(2)); - }); - return R.ok(list); - } - - - @Operation(summary = "导出") - @PostMapping("/export") - public void export(HttpServletResponse response){ - stEvpoService.export(response); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StFlowRController.java b/src/main/java/com/gunshi/project/hsz/controller/StFlowRController.java deleted file mode 100644 index 5e64054..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StFlowRController.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - - -@Tag(name = "流量表") -@RestController -@RequestMapping(value="/stFlowR") -public class StFlowRController { - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StImgRController.java b/src/main/java/com/gunshi/project/hsz/controller/StImgRController.java deleted file mode 100644 index 6217967..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StImgRController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.StImgR; -import com.gunshi.project.hsz.service.StImgRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 图像历史表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "图像历史表") -@RestController -@RequestMapping(value="/stImgR") -public class StImgRController { - - @Autowired - private StImgRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StImgR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StImgR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StImgRRealController.java b/src/main/java/com/gunshi/project/hsz/controller/StImgRRealController.java deleted file mode 100644 index aec0c38..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StImgRRealController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.StImgRReal; -import com.gunshi.project.hsz.service.StImgRRealService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 图像表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "图像表") -@RestController -@RequestMapping(value="/stImgRReal") -public class StImgRRealController { - - @Autowired - private StImgRRealService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StImgRReal dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StImgRReal dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StImgWarnRController.java b/src/main/java/com/gunshi/project/hsz/controller/StImgWarnRController.java deleted file mode 100644 index 9634fb5..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StImgWarnRController.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ImgWarnPageSo; -import com.gunshi.project.hsz.model.StImgWarnR; -import com.gunshi.project.hsz.service.StImgWarnRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: AI告警表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "AI告警表") -@RestController -@RequestMapping(value="/stImgWarnR") -public class StImgWarnRController { - - @Autowired - private StImgWarnRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StImgWarnR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StImgWarnR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody ImgWarnPageSo imgWarnPageSo) { - return R.ok(service.pageQuery(imgWarnPageSo)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StPptnRController.java b/src/main/java/com/gunshi/project/hsz/controller/StPptnRController.java deleted file mode 100644 index 4830a32..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StPptnRController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StPptnR; -import com.gunshi.project.hsz.service.StPptnRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 降水量表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "降水量表") -@RestController -@RequestMapping(value="/stPptnR") -public class StPptnRController { - - @Autowired - private StPptnRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StPptnR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StPptnR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StPptnRDController.java b/src/main/java/com/gunshi/project/hsz/controller/StPptnRDController.java deleted file mode 100644 index dd38ab9..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StPptnRDController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.StPptnRD; -import com.gunshi.project.hsz.service.StPptnRDService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 降水量天表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "降水量天表") -@RestController -@RequestMapping(value="/stPptnRD") -public class StPptnRDController { - - @Autowired - private StPptnRDService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StPptnRD dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StPptnRD dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - @Operation(summary = "整编降雨历史降雨情况") - @PostMapping("/reorganizeStPptnRD") - public void reorganizeStPptnRD(@Schema(name = "stcdList", description = "站码列表") @RequestParam("stcdList") List stcdList, @Schema(name = "startDateStr", description = "开始时间") @RequestParam("startDateStr") String startDateStr) { - service.reorganizeStPptnRD(stcdList, startDateStr); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StPptnRHController.java b/src/main/java/com/gunshi/project/hsz/controller/StPptnRHController.java deleted file mode 100644 index 91d7bb9..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StPptnRHController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.StPptnRH; -import com.gunshi.project.hsz.service.StPptnRHService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 降雨量小时表 - * author: cxw - * date: 2024-09-02 09:34:31 - */ -@Tag(name = "降雨量小时表") -@RestController -@RequestMapping(value="/stPptnRH") -public class StPptnRHController { - - @Autowired - private StPptnRHService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StPptnRH dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StPptnRH dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StPptnRRealController.java b/src/main/java/com/gunshi/project/hsz/controller/StPptnRRealController.java deleted file mode 100644 index ae0d019..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StPptnRRealController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import com.gunshi.project.hsz.service.StPptnRRealService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 降水量历史表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "降水量历史表") -@RestController -@RequestMapping(value="/stPptnRReal") -public class StPptnRRealController { - - @Autowired - private StPptnRRealService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StPptnRReal dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StPptnRReal dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.queryList()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StQxWarnRController.java b/src/main/java/com/gunshi/project/hsz/controller/StQxWarnRController.java deleted file mode 100644 index ff34d80..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StQxWarnRController.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.entity.vo.HomeWarnVo; -import com.gunshi.project.hsz.model.StQxWarnR; -import com.gunshi.project.hsz.service.StQxWarnRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 气象预警表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "气象预警表") -@RestController -@RequestMapping(value="/stQxWarnR") -public class StQxWarnRController { - - @Autowired - private StQxWarnRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StQxWarnR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StQxWarnR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody DateTimeRangeSo dateTimeRangeSo) { - return R.ok(service.lambdaQuery() - .ge(StQxWarnR::getTm,dateTimeRangeSo.getStart()).lt(StQxWarnR::getTm,dateTimeRangeSo.getEnd()).list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - - - @Operation(summary = "首页-告警") - @PostMapping("/home/warn") - public R homeWarn(@RequestBody DateTimeRangeSo dateTimeRangeSo) { - return R.ok(service.homeWarn(dateTimeRangeSo)); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StRiverRController.java b/src/main/java/com/gunshi/project/hsz/controller/StRiverRController.java deleted file mode 100644 index 38a3def..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StRiverRController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StRiverR; -import com.gunshi.project.hsz.service.StRiverRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: - * author: cxw - * date: 2024-09-24 14:01:07 - */ -@Tag(name = "") -@RestController -@RequestMapping(value="/stRiverR") -public class StRiverRController { - - @Autowired - private StRiverRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StRiverR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StRiverR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StRiverRRealController.java b/src/main/java/com/gunshi/project/hsz/controller/StRiverRRealController.java deleted file mode 100644 index 538ec8c..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StRiverRRealController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StRiverRReal; -import com.gunshi.project.hsz.service.StRiverRRealService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: - * author: cxw - * date: 2024-09-24 14:01:07 - */ -@Tag(name = "") -@RestController -@RequestMapping(value="/stRiverRReal") -public class StRiverRRealController { - - @Autowired - private StRiverRRealService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StRiverRReal dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StRiverRReal dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StRsvrRController.java b/src/main/java/com/gunshi/project/hsz/controller/StRsvrRController.java deleted file mode 100644 index bf9dd8e..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StRsvrRController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.service.StRsvrRService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 水库历史水位表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库历史水位表") -@RestController -@RequestMapping(value="/stRsvrR") -public class StRsvrRController { - - @Autowired - private StRsvrRService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StRsvrR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StRsvrR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StRsvrRRealController.java b/src/main/java/com/gunshi/project/hsz/controller/StRsvrRRealController.java deleted file mode 100644 index ab48ec3..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StRsvrRRealController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StRsvrRReal; -import com.gunshi.project.hsz.service.StRsvrRRealService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 水库水位实时数据表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水库水位实时数据表") -@RestController -@RequestMapping(value="/stRsvrRReal") -public class StRsvrRRealController { - - @Autowired - private StRsvrRRealService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StRsvrRReal dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StRsvrRReal dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StStbprpBController.java b/src/main/java/com/gunshi/project/hsz/controller/StStbprpBController.java deleted file mode 100644 index fcc2fe0..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StStbprpBController.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.HomeStStbprpBSo; -import com.gunshi.project.hsz.entity.so.StStbprpBPage; -import com.gunshi.project.hsz.entity.so.StStbprpBSo; -import com.gunshi.project.hsz.entity.vo.HomeStStbprpBVo; -import com.gunshi.project.hsz.entity.vo.StStatusListVo; -import com.gunshi.project.hsz.entity.vo.StStatusVo; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.service.StStbprpBService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 测站基础信息表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "测站基础信息表") -@RestController -@RequestMapping(value="/stStbprpB") -public class StStbprpBController { - - @Autowired - private StStbprpBService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StStbprpB dto) { - if (Objects.nonNull(service.getById(dto.getStcd()))){ - throw new RuntimeException("测站编号已存在"); - } - dto.setModitime(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StStbprpB dto) { - if (Objects.isNull(service.getById(dto.getStcd()))){ - throw new RuntimeException("当前数据不存在"); - } - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))){ - throw new RuntimeException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody StStbprpBSo dto) { - LambdaQueryChainWrapper query = service.lambdaQuery(); - query - .eq(StStbprpB::getSttp,dto.getSttp()) - .eq(StStbprpB::getStcd,dto.getStcd()) - .like(StStbprpB::getStnm,dto.getStnm()) - .like(StStbprpB::getRvnm,dto.getRvnm()) - .like(StStbprpB::getHnnm,dto.getHnnm()) - .like(StStbprpB::getBsnm,dto.getBsnm()) - ; - return R.ok(query.list()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated StStbprpBPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getCode())) { - query.like(StStbprpB::getStcd, page.getCode()); - } - if (ObjectUtils.isNotNull(page.getName())) { - query.like(StStbprpB::getStnm, page.getName()); - } - if (ObjectUtils.isNotNull(page.getAgreement())) { - query.like(StStbprpB::getAgreement, page.getAgreement()); - } - query.orderByDesc(StStbprpB::getModitime); - return R.ok(service.page(page.getPageSo().toPage(), query)); - } - - @Operation(summary = "雨量站详情带雨量列表") - @PostMapping("/rainfallStationDetails/rainfallList") - public R> rainfallStationDetailsList(@RequestBody @Validated HomeStStbprpBSo dto) { - return R.ok(service.rainfallStationDetailsList(dto)); - } - - @Operation(summary = "水库站点详情带实时水位列表") - @PostMapping("/reservoirStationDetails/realTimeWaterLevelList") - public R> reservoirStationDetailsList() { - return R.ok(service.reservoirStationDetailsList()); - } - - @Operation(summary = "输/放水管流量站点详情带实时流量列表") - @PostMapping("/trafficSiteDetails/realTimeTrafficList") - public R> trafficStationDetailsList() { - return R.ok(service.flowStationDetailsList()); - } - - - @Operation(summary = "监测设备状态") - @PostMapping("/status/list") - public R statusList() { - return R.ok(service.statusList()); - } - - @Operation(summary = "雨情站点下拉") - @PostMapping("/rain/list") - public R> rainList() { - return R.ok(service.rainList()); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StStbprpBElemController.java b/src/main/java/com/gunshi/project/hsz/controller/StStbprpBElemController.java deleted file mode 100644 index fdaa2aa..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StStbprpBElemController.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StStbprpBElem; -import com.gunshi.project.hsz.service.StStbprpBElemService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 测站监测值类型 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "测站监测值类型") -@RestController -@RequestMapping(value="/stStbprpBElem") -public class StStbprpBElemController { - - @Autowired - private StStbprpBElemService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StStbprpBElem dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StStbprpBElem dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.lambdaQuery().list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StStbprpCctvController.java b/src/main/java/com/gunshi/project/hsz/controller/StStbprpCctvController.java deleted file mode 100644 index 53befca..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StStbprpCctvController.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.annotation.Get; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.StStbprpCctvVo; -import com.gunshi.project.hsz.service.StStbprpCctvService; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * 站点与视频关系 - * Created by wanyan on 2024/4/9 - * - * @author wanyan - * @version 1.0 - */ -@RestController -@RequestMapping("/stbprp/cctv") -@Tag(name = "站点与视频关系") -public class StStbprpCctvController { - - - @Autowired - private StStbprpCctvService stStbprpCctvService; - - - - @Get(path = "/listByStcd/{stcd}", summary = "按stcd查询") - public R> listByStcd(@PathVariable("stcd") String stcd) { - return R.ok(stStbprpCctvService.listByStcd(stcd)); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StWaterRController.java b/src/main/java/com/gunshi/project/hsz/controller/StWaterRController.java deleted file mode 100644 index 821917c..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StWaterRController.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.entity.vo.StWaterRVo; -import com.gunshi.project.hsz.model.ResMonthEcoFlow; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.model.StWaterR; -import com.gunshi.project.hsz.service.ResMonthEcoFlowService; -import com.gunshi.project.hsz.service.StStbprpBService; -import com.gunshi.project.hsz.service.StWaterRService; -import com.gunshi.project.hsz.util.ConvertUtil; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.util.ExcelUtil; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 供水量表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "供水量表") -@RestController -@RequestMapping(value="/stWaterR") -public class StWaterRController { - - @Autowired - private StWaterRService service; - - @Autowired - private ResMonthEcoFlowService resMonthEcoFlowService; - - @Autowired - private StStbprpBService stStbprpBService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StWaterR dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StWaterR dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated StWaterR stWaterR) { - QueryWrapper wrapper = new QueryWrapper() - .eq(StringUtils.isNotBlank(stWaterR.getStcd()), "stcd", stWaterR.getStcd()) - .ge(ObjectUtils.isNotNull(stWaterR.getStartTime()), "tm", stWaterR.getStartTime()) - .le(ObjectUtils.isNotNull(stWaterR.getEndTime()), "tm", stWaterR.getEndTime()); - if(StringUtils.isNotBlank(stWaterR.getOrderField())){ - wrapper.orderByDesc("tm"); - } - return R.ok(service.list(wrapper)); - } - - @Operation(summary = "获取月核定流量") - @GetMapping("/getResMonthEcoFlow") - public R> getResMonthEcoFlow(@Schema(name = "startTime", description = "开始时间") @RequestParam("startTime") String startTime, @Schema(name = "endTime", description = "开始时间") @RequestParam("endTime") String endTime) { - Map resMap = new HashMap<>(); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.orderByAsc("month"); - if(StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)){ - List monthsBetweenDates = DateUtil.getMonthsBetweenDates(startTime, endTime); - wrapper.in("month", monthsBetweenDates); - } - List list = resMonthEcoFlowService.list(wrapper); - if(CollectionUtils.isNotEmpty(list)){ - resMap = list.stream().collect(Collectors.toMap(ResMonthEcoFlow::getMonth, ResMonthEcoFlow::getValue)); - } - return R.ok(resMap); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated StWaterR stWaterR) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(stWaterR.getStcd()), "stcd", stWaterR.getStcd()) - .ge(ObjectUtils.isNotNull(stWaterR.getStartTime()), "tm", stWaterR.getStartTime()) - .le(ObjectUtils.isNotNull(stWaterR.getEndTime()), "tm", stWaterR.getEndTime()); - if(StringUtils.isNotBlank(stWaterR.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterR.getIsAsc()) ? false : stWaterR.getIsAsc(), stWaterR.getOrderField()); - } - return R.ok(service.page(stWaterR.getPageSo().toPage(), wrapper)); - } - - @Operation(summary = "导出") - @PostMapping("/exportWaterRDataExcel") - @CrossOrigin - public void exportWaterRDataExcel(@RequestBody @Validated StWaterR stWaterR, HttpServletResponse response) { - String filename = "供水流量表" + DateUtil.convertDateToString(stWaterR.getStartTime()) + "_" + DateUtil.convertDateToString(stWaterR.getEndTime()); - List vos = ConvertUtil.entityToVoList(this.list(stWaterR).getData(), StWaterRVo.class); - ExcelUtil.exportExcel(vos, filename, StWaterRVo.class, response, "供水流量表"); - } - - @Operation(summary = "闸阀总览-供水统计") - @PostMapping("/stat") - public R> stat(@RequestBody @Validated DateTimeRangeSo dateTimeRangeSo) { - return R.ok(service.stat(dateTimeRangeSo)); - } - - - @Operation(summary = "生态流量监控-列表") - @PostMapping("/ecologyFlowList") - public R> ecologyFlowList(@RequestBody @Validated StWaterR stWaterR) { - List list = new ArrayList<>(); - // 查询生态(放水管流量站QQ) - StStbprpB stStbprpB = stStbprpBService.getOne(new QueryWrapper().eq("sttp", "QQ").last(" limit 1")); - if(ObjectUtils.isEmpty(stStbprpB) || StringUtils.isEmpty(stStbprpB.getStcd())){ - return R.ok(list); - } - QueryWrapper wrapper = new QueryWrapper() - .eq("stcd", stStbprpB.getStcd()) - .ge(ObjectUtils.isNotNull(stWaterR.getStartTime()), "tm", stWaterR.getStartTime()) - .le(ObjectUtils.isNotNull(stWaterR.getEndTime()), "tm", stWaterR.getEndTime()); - if(StringUtils.isNotBlank(stWaterR.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterR.getIsAsc()) ? false : stWaterR.getIsAsc(), stWaterR.getOrderField()); - } - list = service.list(wrapper); - List resMonthEcoFlows = resMonthEcoFlowService.list(); - if(CollectionUtils.isNotEmpty(list) && CollectionUtils.isNotEmpty(resMonthEcoFlows)){ - Map resMonthEcoFlowMap = resMonthEcoFlows.stream().collect(Collectors.toMap(ResMonthEcoFlow::getMonth, ResMonthEcoFlow::getValue)); - list.stream().forEach(w -> { - BigDecimal value = resMonthEcoFlowMap.get(w.getTm().getMonth() + 1); - w.setApprovalV(value); - w.setIsStandard(w.getQ().compareTo(value) >= 0 ? true : false); - }); - } - return R.ok(list); - } - - @Operation(summary = "生态流量监控-分页") - @PostMapping("/ecologyFlowPage") - public R> ecologyFlowPage(@RequestBody @Validated StWaterR stWaterR) { - // 查询生态(放水管流量站QQ) - StStbprpB stStbprpB = stStbprpBService.getOne(new QueryWrapper().eq("sttp", "QQ").last(" limit 1")); - if(ObjectUtils.isEmpty(stStbprpB) || StringUtils.isEmpty(stStbprpB.getStcd())){ - return R.ok(new Page<>()); - } - QueryWrapper wrapper = new QueryWrapper() - .eq("stcd", stStbprpB.getStcd()) - .ge(ObjectUtils.isNotNull(stWaterR.getStartTime()), "tm", stWaterR.getStartTime()) - .le(ObjectUtils.isNotNull(stWaterR.getEndTime()), "tm", stWaterR.getEndTime()); - if(StringUtils.isNotBlank(stWaterR.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterR.getIsAsc()) ? false : stWaterR.getIsAsc(), stWaterR.getOrderField()); - } - return R.ok(service.page(stWaterR.getPageSo().toPage(), wrapper)); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StWaterRRealController.java b/src/main/java/com/gunshi/project/hsz/controller/StWaterRRealController.java deleted file mode 100644 index 7f2270c..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StWaterRRealController.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import java.io.Serializable; -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import com.gunshi.project.hsz.model.StWaterR; -import com.gunshi.project.hsz.service.StWaterRService; -import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.ResMonthEcoFlow; -import com.gunshi.project.hsz.model.StWaterRReal; -import com.gunshi.project.hsz.service.ResMonthEcoFlowService; -import com.gunshi.project.hsz.service.StStbprpBService; -import com.gunshi.project.hsz.service.StWaterRRealService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -/** - * 描述: 供水量实时表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "供水量实时表") -@RestController -@RequestMapping(value="/stWaterRReal") -public class StWaterRRealController { - - @Autowired - private StStbprpBService stStbprpBService; - - @Autowired - private StWaterRRealService service; - - @Autowired - private ResMonthEcoFlowService resMonthEcoFlowService; - - @Autowired - private StWaterRService stWaterRService; - - @Operation(summary = "根据测站编码查询实时供水量") - @PostMapping("/getByStcd/{stcd}") - public R getById(@Schema(name = "stcd", description = "测站编码")@PathVariable("stcd") @NotNull String stcd) { - QueryWrapper qw = new QueryWrapper<>(); - qw.eq("stcd", stcd).orderBy(true, false, "tm"); - StWaterRReal result = service.getOne(qw); - // 获取当月核定流量 - if (ObjectUtils.isNotEmpty(result)) { - ResMonthEcoFlow resMonthEcoFlow = resMonthEcoFlowService.getOne( - new QueryWrapper().eq("month", Calendar.getInstance().get(Calendar.MONTH) + 1)); - result.setResMonthEcoFlow(resMonthEcoFlow); - } - return R.ok(result); - } - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StWaterRReal dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StWaterRReal dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - List list = service.listRelated(); - if(CollectionUtils.isNotEmpty(list)){ - // 获取当月核定流量 - ResMonthEcoFlow resMonthEcoFlow = resMonthEcoFlowService.getOne(new QueryWrapper().eq("month", Calendar.getInstance().get(Calendar.MONTH) + 1)); - if(ObjectUtils.isNotEmpty(resMonthEcoFlow)){ - for(StWaterRReal real : list){ - real.setResMonthEcoFlow(resMonthEcoFlow); - } - } - } - return R.ok(list); - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StWaterRReorganizeController.java b/src/main/java/com/gunshi/project/hsz/controller/StWaterRReorganizeController.java deleted file mode 100644 index 80a345f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StWaterRReorganizeController.java +++ /dev/null @@ -1,299 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.vo.StWaterRRVo; -import com.gunshi.project.hsz.entity.vo.StWaterRReorganizeVo; -import com.gunshi.project.hsz.entity.vo.StWaterRReorganizeYearVo; -import com.gunshi.project.hsz.model.StWaterRReorganize; -import com.gunshi.project.hsz.service.StWaterRReorganizeService; -import com.gunshi.project.hsz.util.ConvertUtil; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.util.ExcelUtil; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -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.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -/** - * 描述: 供水量整编表 - * author: cxw - * date: 2024-07-24 11:22:46 - */ -@Tag(name = "供水量整编表") -@RestController -@RequestMapping(value="/stWaterRReorganize") -public class StWaterRReorganizeController { - - @Autowired - private StWaterRReorganizeService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StWaterRReorganize dto) { - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StWaterRReorganize dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.removeById(id)); - } - -// @Operation(summary = "列表") -// @PostMapping("/list") -// public R> list(@RequestBody @Validated StWaterRReorganize stWaterRReorganize) { -// String searchType = stWaterRReorganize.getSearchType(); -// String groupBy = ""; -// if("2".equals(searchType)){ -// groupBy = "LEFT(tm, 10)"; -// } else if("3".equals(searchType)){ -// groupBy = "LEFT(tm, 7)"; -// } else if("4".equals(searchType)){ -// groupBy = "LEFT(tm, 4)"; -// } else { -// groupBy = "LEFT(tm, 13)"; -// } -// QueryWrapper wrapper = new QueryWrapper() -// .select(groupBy + " tm,ROUND( AVG ( ecology_q ), 2 ) ecology_q,SUM ( ecology_v ) ecology_v,ROUND( AVG ( life_q ), 2 ) life_q,SUM ( life_v ) life_v,SUM ( sum_v ) sum_v") -// .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) -// .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) -// .groupBy(groupBy); -// if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ -// wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), stWaterRReorganize.getOrderField()); -// } -// List list = service.list(wrapper); -// if(CollectionUtils.isNotEmpty(list)){ -// for(StWaterRReorganize dto : list){ -// dto.setSumV(dto.getEcologyV().add(dto.getLifeV())); -// } -// } -// return R.ok(list); -// } -// -// @Operation(summary = "分页") -// @PostMapping("/page") -// public R> page(@RequestBody @Validated StWaterRReorganize stWaterRReorganize) { -// String searchType = stWaterRReorganize.getSearchType(); -// String groupBy = ""; -// if("2".equals(searchType)){ -// groupBy = "LEFT(tm, 10)"; -// } else if("3".equals(searchType)){ -// groupBy = "LEFT(tm, 7)"; -// } else if("4".equals(searchType)){ -// groupBy = "LEFT(tm, 4)"; -// } else { -// groupBy = "LEFT(tm, 13)"; -// } -// QueryWrapper wrapper = new QueryWrapper() -// .select(groupBy + " tm,ROUND( AVG ( ecology_q ), 2 ) ecology_q,SUM ( ecology_v ) ecology_v,ROUND( AVG ( life_q ), 2 ) life_q,SUM ( life_v ) life_v,SUM ( sum_v ) sum_v") -// .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) -// .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) -// .groupBy(groupBy); -// if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ -// wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), stWaterRReorganize.getOrderField()); -// } -// Page page = service.page(stWaterRReorganize.getPageSo().toPage(), wrapper); -// if(CollectionUtils.isNotEmpty(page.getRecords())){ -// for(StWaterRReorganize dto : page.getRecords()){ -// dto.setSumV(dto.getEcologyV().add(dto.getLifeV())); -// } -// } -// return R.ok(page); -// } - - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody @Validated StWaterRReorganize stWaterRReorganize) { - String searchType = stWaterRReorganize.getSearchType(); - String groupBy = ""; - if("2".equals(searchType)){ - groupBy = "LEFT(tm, 10)"; // 按天分组 - } else if("3".equals(searchType)){ - groupBy = "LEFT(tm, 7)"; // 按月分组 - } else if("4".equals(searchType)){ - groupBy = "LEFT(tm, 4)"; // 按年分组 - } else { - groupBy = "LEFT(tm, 13)"; // 默认按小时分组 - } - - QueryWrapper wrapper = new QueryWrapper() - .select(groupBy + " tm," + - "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + - "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + - "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") - .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) - .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) - .groupBy(groupBy); - - if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), - stWaterRReorganize.getOrderField()); - } - - List list = service.list(wrapper); - - // 计算总量(如果需要的话) - if(CollectionUtils.isNotEmpty(list)){ - for(StWaterRReorganize dto : list){ - // 如果需要计算总量,可以在这里添加 - dto.setSumV(dto.getMci1V().add(dto.getMci2V()).add(dto.getEcologyV())); - } - } - return R.ok(list); - } - - @Operation(summary = "供水统计-右边四项统计") - @PostMapping("/count") - public R count(@RequestBody @Validated StWaterRReorganize stWaterRReorganize ){ - String searchType = stWaterRReorganize.getSearchType(); - String groupBy = ""; - if("2".equals(searchType)){ - groupBy = "LEFT(tm, 10)"; // 按天分组 - } else if("3".equals(searchType)){ - groupBy = "LEFT(tm, 7)"; // 按月分组 - } else if("4".equals(searchType)){ - groupBy = "LEFT(tm, 4)"; // 按年分组 - } else { - groupBy = "LEFT(tm, 13)"; // 默认按小时分组 - } - - QueryWrapper wrapper = new QueryWrapper() - .select(groupBy + " tm," + - "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + - "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + - "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") - .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) - .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) - .groupBy(groupBy); - - if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), - stWaterRReorganize.getOrderField()); - } - - List list = service.list(wrapper); - StWaterRRVo vo = new StWaterRRVo(); - for (StWaterRReorganize entity : list) { - vo.setMci1VSum(vo.getMci2VSum().add(entity.getMci1V())); - vo.setMci2VSum(vo.getMci2VSum().add(entity.getMci2V())); - vo.setEcologyVSum(vo.getEcologyVSum().add(entity.getEcologyV())); - } - return R.ok(vo); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated StWaterRReorganize stWaterRReorganize) { - String searchType = stWaterRReorganize.getSearchType(); - String groupBy = ""; - if("2".equals(searchType)){ - groupBy = "LEFT(tm, 10)"; // 按天分组 - } else if("3".equals(searchType)){ - groupBy = "LEFT(tm, 7)"; // 按月分组 - } else if("4".equals(searchType)){ - groupBy = "LEFT(tm, 4)"; // 按年分组 - } else { - groupBy = "LEFT(tm, 13)"; // 默认按小时分组 - } - - QueryWrapper wrapper = new QueryWrapper() - .select(groupBy + " tm," + - "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + - "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + - "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") - .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) - .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) - .groupBy(groupBy); - - if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ - wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), - stWaterRReorganize.getOrderField()); - } - - Page page = service.page(stWaterRReorganize.getPageSo().toPage(), wrapper); - - // 计算总量(如果需要的话) - if(CollectionUtils.isNotEmpty(page.getRecords())){ - for(StWaterRReorganize dto : page.getRecords()){ - //水量小计 - dto.setSumV(dto.getMci1V() == null?BigDecimal.ZERO:dto.getMci1V().add(dto.getMci2V() == null? BigDecimal.ZERO:dto.getMci2V()).add(dto.getEcologyV() == null?BigDecimal.ZERO:dto.getEcologyV())); - } - } - return R.ok(page); - } - - - @Operation(summary = "供水水方数据导出") - @PostMapping("/exportWaterRReorganizeDataExcel") - @CrossOrigin - public void exportWaterRReorganizeDataExcel(@RequestBody @Validated StWaterRReorganize stWaterRReorganize, HttpServletResponse response) { - String searchType = stWaterRReorganize.getSearchType(); - String start = DateUtil.convertDateToMDSString(stWaterRReorganize.getStartTime()); - String end = DateUtil.convertDateToMDSString(stWaterRReorganize.getEndTime()); - if("2".equals(searchType)){ - start = start.substring(0, 10); - end = end.substring(0, 10); - } else if("3".equals(searchType)){ - start = start.substring(0, 7); - end = end.substring(0, 7); - } else if("4".equals(searchType)){ - start = start.substring(0, 4); - end = end.substring(0, 4); - } else { - start = start.substring(0, 13); - end = end.substring(0, 13); - } - String filename = "供水水方表" + start + "_" + end; - List vos = ConvertUtil.entityToVoList(this.list(stWaterRReorganize).getData(), StWaterRReorganizeVo.class); - ExcelUtil.exportExcel(vos, filename, StWaterRReorganizeVo.class, response, "供水水方表"); - } - - @Operation(summary = "统计分析") - @PostMapping("/getYearStatisticAnalysis") - public R> getYearStatisticAnalysis(@Schema(name = "year", description = "年度") @RequestParam("year") int year) { - List resList = new ArrayList<>(); - service.getYearStatisticAnalysis(year, resList); - return R.ok(resList); - } - - @Operation(summary = "统计分析数据导出") - @PostMapping("/exportYearStatisticAnalysisExcel") - @CrossOrigin - public void exportYearStatisticAnalysisExcel(@Schema(name = "year", description = "年度") @RequestParam("year") int year, HttpServletResponse response) { - String filename = year + "年度统计分析"; - List resList = new ArrayList<>(); - service.getYearStatisticAnalysis(year, resList); - ExcelUtil.exportExcel(resList, filename, StWaterRReorganizeYearVo.class, response, "统计分析"); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/StZqrlBController.java b/src/main/java/com/gunshi/project/hsz/controller/StZqrlBController.java deleted file mode 100644 index 441fd7d..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StZqrlBController.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.dto.StZqrlBDto; -import com.gunshi.project.hsz.entity.vo.StZqrlBCount24Vo; -import com.gunshi.project.hsz.entity.vo.StZqrlBCountVo; -import com.gunshi.project.hsz.entity.vo.StZqrlBVo; -import com.gunshi.project.hsz.model.AttResBase; -import com.gunshi.project.hsz.model.StZqrlB; -import com.gunshi.project.hsz.service.AttResBaseService; -import com.gunshi.project.hsz.service.StStbprpBService; -import com.gunshi.project.hsz.service.StZqrlBService; -import com.gunshi.project.hsz.service.StZvarlBService; -import com.gunshi.project.hsz.common.validate.markers.Delete; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 水位流量关系曲线表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "水位流量关系曲线表") -@RestController -@RequestMapping(value="/stZqrlB") -public class StZqrlBController { - - @Autowired - private StZqrlBService service; - - @Autowired - private AttResBaseService resBaseService; - - @Autowired - private StStbprpBService stStbprpBService; - - @Autowired - private StZvarlBService stZvarlBService; - - - @Post(path = "/flowList", summary = "曲线数据") - public R> flowList(@RequestBody StZqrlBDto obj) { - return R.ok(stStbprpBService.flowList(obj)); - } - - @GetMapping(path = "/count/{stcd}") - @Schema(description = "实时数据") - public R count(@Schema(name = "stcd") @PathVariable("stcd") Serializable stcd) { - return R.ok(stStbprpBService.count(stcd)); - } - - - @GetMapping(path = "/count24/{stcd}") - public R count24(@Schema(name = "stcd") @PathVariable("stcd") Serializable stcd) { - return R.ok(stStbprpBService.count24(stcd)); - } - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StZqrlB dto) { - if (StringUtils.isNotBlank(dto.getResCode())){ - AttResBase one = resBaseService.list().get(0); -// if (Objects.isNull(one)){ -// throw new IllegalArgumentException("水库编码不存在"); -// } - if (StringUtils.isBlank(dto.getStcd())){ - dto.setStcd(one.getStcd()); - } - } - if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ - throw new IllegalArgumentException("测站编码不存在"); - } - - if (service.lambdaQuery() - .eq(StZqrlB::getStcd, dto.getStcd()) - .eq(StZqrlB::getZ, dto.getZ()) - .eq(StZqrlB::getQ, dto.getQ()) - .count() > 0) { - throw new IllegalArgumentException("当前数据已存在"); - } - dto.setId(IdWorker.getId()); - dto.setModitime(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StZqrlB dto) { - if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ - throw new IllegalArgumentException("测站编码不存在"); - } - - if (service.lambdaQuery() - .eq(StZqrlB::getStcd, dto.getStcd()) - .eq(StZqrlB::getZ, dto.getZ()) - .eq(StZqrlB::getQ, dto.getQ()) - .ne(StZqrlB::getId,dto.getId()) - .count() > 0) { - throw new IllegalArgumentException("当前数据已存在"); - } - - - - boolean result = service.lambdaUpdate() - .set(StZqrlB::getZ, dto.getZ()) - .set(StZqrlB::getQ, dto.getQ()) - .eq(StZqrlB::getId, dto.getId()) - .update(); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @PostMapping("/del") - public R del(@Validated(Delete.class) @RequestBody StZqrlB dto) { - if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ - throw new IllegalArgumentException("测站编码不存在"); - } - if (service.lambdaQuery() - .eq(StZqrlB::getId, dto.getId()) - .count() == 0) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.lambdaUpdate() - .eq(StZqrlB::getId, dto.getId()) - .remove() ); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody StZqrlB dto) { - LambdaQueryChainWrapper q = service.lambdaQuery().orderByAsc(StZqrlB::getZ); -// String stcd = dto.getStcd(); -// if (StringUtils.isNotBlank(stcd)){ -// q.eq(StZqrlB::getStcd, stcd); -// } - return R.ok(q.list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StZvarlBController.java b/src/main/java/com/gunshi/project/hsz/controller/StZvarlBController.java deleted file mode 100644 index 7500623..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StZvarlBController.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.AttResBase; -import com.gunshi.project.hsz.model.StZvarlB; -import com.gunshi.project.hsz.service.AttResBaseService; -import com.gunshi.project.hsz.service.StStbprpBService; -import com.gunshi.project.hsz.service.StZvarlBService; -import com.gunshi.project.hsz.common.validate.markers.Delete; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -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.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 库( 湖)容曲线表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "库( 湖)容曲线表") -@RestController -@RequestMapping(value="/stZvarlB") -public class StZvarlBController { - - @Autowired - private StZvarlBService service; - - @Autowired - private AttResBaseService resBaseService; - - @Autowired - private StStbprpBService stStbprpBService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody StZvarlB dto) { - if (StringUtils.isNotBlank(dto.getResCode())){ - AttResBase one = resBaseService.lambdaQuery().eq(AttResBase::getResCode, dto.getResCode()).one(); - if (Objects.isNull(one)){ - throw new IllegalArgumentException("水库编码不存在"); - } - if (StringUtils.isBlank(dto.getStcd())){ - dto.setStcd(one.getStcd()); - } - } - if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ - throw new IllegalArgumentException("测站编码不存在"); - } - if (service.lambdaQuery() - .eq(StZvarlB::getStcd, dto.getStcd()) - .eq(StZvarlB::getRz, dto.getRz()) - .eq(StZvarlB::getW, dto.getW()) - .count() > 0) { - throw new IllegalArgumentException("当前数据已存在"); - } - dto.setId(IdWorker.getId()); - dto.setModitime(new Date()); - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody StZvarlB dto) { - if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ - throw new IllegalArgumentException("测站编码不存在"); - } - - - if (service.lambdaQuery() - .eq(StZvarlB::getStcd, dto.getStcd()) - .eq(StZvarlB::getRz, dto.getRz()) - .eq(StZvarlB::getW, dto.getW()) - .ne(StZvarlB::getId, dto.getId()) - .count() > 0) { - throw new IllegalArgumentException("当前数据已存在"); - } - - - boolean result = service.lambdaUpdate() - .set(StZvarlB::getRz, dto.getRz()) - .set(StZvarlB::getW, dto.getW()) - .set(StZvarlB::getWsfa, dto.getWsfa()) - .eq(StZvarlB::getId, dto.getId()) - .update(); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @PostMapping("/del") - public R del(@Validated(Delete.class) @RequestBody StZvarlB dto) { - if (service.lambdaQuery() - .eq(StZvarlB::getId, dto.getId()) - .count() == 0) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.lambdaUpdate() - .eq(StZvarlB::getId, dto.getId()) - .remove() ); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list(@RequestBody StZvarlB dto) { - LambdaQueryChainWrapper q = service.lambdaQuery().orderByAsc(StZvarlB::getRz); - String stcd = dto.getStcd(); - if (StringUtils.isNotBlank(stcd)){ - q.eq(StZvarlB::getStcd, stcd); - } - return R.ok(q.list()); - } - -// @Operation(summary = "分页") -// @PostMapping("/page") - public R> page() { - return R.ok(service.page(null,null)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/StatisticsController.java b/src/main/java/com/gunshi/project/hsz/controller/StatisticsController.java deleted file mode 100644 index 05f8218..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/StatisticsController.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.project.hsz.entity.so.StatisticsQuerySo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.service.StatisticsService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -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: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "报图报表") -@RestController -@RequestMapping(value="/statistics") -public class StatisticsController{ - - @Autowired - private StatisticsService service; - - @Operation(summary = "时段降雨日报表") - @PostMapping("/sdJyRb") - public R> sdJyRb(@Validated @RequestBody DateRangeSo dateRangeSo) { - return R.ok(service.sdJyRb(dateRangeSo)); - } - - @Operation(summary = "时段降雨日报表导出") - @PostMapping( "/sdJyRb/export") - public void export(@RequestBody @Validated DateRangeSo dateRangeSo, HttpServletResponse response) { - service.sdJyRbExport(dateRangeSo,response); - } - - @Operation(summary = "时段水位日报表") - @PostMapping("/sdSwRb") - public R> sdSwRb(@Validated @RequestBody DateRangeSo dateRangeSo) { - return R.ok(service.sdSwRb(dateRangeSo)); - } - - @Operation(summary = "时段水位日报表导出") - @PostMapping("/sdSwRb/export") - public void sdSwRbExport(@Validated @RequestBody DateRangeSo dateRangeSo, HttpServletResponse response) { - service.sdSwRbExport(dateRangeSo,response); - } - - @Operation(summary = "日降雨年报表(上方表格)") - @PostMapping("/rjyNb") - public R> rjyNb(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo) { - return R.ok(service.rjyNb(statisticsQuerySo,null)); - } - - @Operation(summary = "日降雨年报表(下方统计)") - @PostMapping("/rjyNb/stat") - public R rjyNbStat(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo) { - return R.ok(service.rjyNbStat(statisticsQuerySo)); - } - - @Operation(summary = "日降雨年报表导出") - @PostMapping("/rjyNb/export") - public void rjyNbExport(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo, HttpServletResponse response) { - service.rjyNbExport(statisticsQuerySo,response); - } - - @Operation(summary = "日均水位年报表(上方表格)") - @PostMapping("/rjswNb") - public R> rjswNb(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo) { - return R.ok(service.rjswNb(statisticsQuerySo)); - } - - @Operation(summary = "日均水位年报表(下方统计)") - @PostMapping("/rjswNb/stat") - public R rjswNbStat(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo) { - return R.ok(service.rjswNbStat(statisticsQuerySo)); - } - - @Operation(summary = "日均水位年报表导出") - @PostMapping("/rjswNb/export") - public void rjswNbExport(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo, HttpServletResponse response) { - service.rjswNbExport(statisticsQuerySo,response); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/SyDataCheckRuleController.java b/src/main/java/com/gunshi/project/hsz/controller/SyDataCheckRuleController.java deleted file mode 100644 index f78ef4f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SyDataCheckRuleController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.JcskGnssR; -import com.gunshi.project.hsz.common.model.JcskSyB; -import com.gunshi.project.hsz.common.model.so.JcskGnssRPageSo; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.gunshi.project.hsz.entity.so.SyDataCheckRulePageSo; -import com.gunshi.project.hsz.model.SyDataCheckRule; -import com.gunshi.project.hsz.service.SyDataCheckRuleService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Objects; - -@Tag(name = "渗压数据清洗规则") -@RestController -@RequestMapping(value="/syDataCheckRule") -public class SyDataCheckRuleController { - - @Autowired - private SyDataCheckRuleService syDataCheckRuleService; - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated SyDataCheckRulePageSo page) { - return R.ok(syDataCheckRuleService.pageQuery(page)); - } - - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SyDataCheckRule dto) { - return R.ok(syDataCheckRuleService.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SyDataCheckRule dto) { - return R.ok(syDataCheckRuleService.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(syDataCheckRuleService.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(syDataCheckRuleService.removeById(id)); - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/SysDictBController.java b/src/main/java/com/gunshi/project/hsz/controller/SysDictBController.java deleted file mode 100644 index 3285c23..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SysDictBController.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import com.gunshi.project.hsz.model.SysDictB; -import com.gunshi.project.hsz.service.SysDictBService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 系统字典表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "系统字典表") -@RestController -@RequestMapping(value="/sysDictB") -public class SysDictBController { - - @Autowired - private SysDictBService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SysDictB dto) { - - if (StringUtils.isNotBlank(dto.getDictNm())){ - if (service.lambdaQuery().eq(SysDictB::getDictNm,dto.getDictNm()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - } - if (Objects.nonNull(dto.getPid()) && !"0".equals(dto.getPid()) ){ - if (service.lambdaQuery().eq(SysDictB::getId,dto.getPid()) - .count() == 0) { - throw new IllegalArgumentException("当父级不存在"); - } - } - if (null == dto.getPid()){ - dto.setPid(0L); - } - dto.setCreateTm(new Date()); - dto.setId(IdWorker.getId()); - - boolean result = service.save(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SysDictB dto) { - - if (StringUtils.isNotBlank(dto.getDictNm())){ - if (service.lambdaQuery().eq(SysDictB::getDictNm,dto.getDictNm()) - .ne(SysDictB::getId,dto.getId()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - } - if (Objects.nonNull(dto.getPid()) && !"0".equals(dto.getPid()) ){ - if (service.lambdaQuery().eq(SysDictB::getId,dto.getPid()) - .count() == 0) { - throw new IllegalArgumentException("当父级不存在"); - } - } - dto.setTm(new Date()); - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "列表 通过父id查子项") - @PostMapping("/list") - public R> list(@RequestBody SysDictB dto) { - LambdaQueryChainWrapper query = service.lambdaQuery(); - Long pid = dto.getPid(); - if (Objects.nonNull(pid)){ - query.eq(SysDictB::getPid, pid); - } - return R.ok(query.list()); - } - - @Operation(summary = "列表 通过父编码查子项") - @GetMapping("/listByCd") - public R> listByCd(@Schema(name = "dictCd",description = "父编码") @RequestParam(name = "dictCd") String dictCd) { - return R.ok(service.listByCd(dictCd)); - } - - @Operation(summary = "分页 只查父项") - @PostMapping("/page") - public R> page(@RequestBody GenericPageParams page) { - - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - - Page data = service.page(page.getPageSo().toPage(), queryWrapper.eq(SysDictB::getPid,0L)); - - data.getRecords().forEach( o-> o.setChildren(service.lambdaQuery().eq(SysDictB::getPid,o.getId()).list())); - - return R.ok(data); - } - - @Operation(summary = "树") - @GetMapping("/tree") - public R> tree() { - return R.ok(service.tree()); - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/SzCaseController.java b/src/main/java/com/gunshi/project/hsz/controller/SzCaseController.java deleted file mode 100644 index f134a6e..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SzCaseController.java +++ /dev/null @@ -1,272 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Maps; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.SzCasePage; -import com.gunshi.project.hsz.entity.vo.SzCaseStatisticsVo; -import com.gunshi.project.hsz.model.SzCase; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.SzCaseService; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.compress.utils.Lists; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 案件登记表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "案件登记表") -@RestController -@RequestMapping(value="/szCase") -public class SzCaseController extends AbstractCommonFileController{ - - @Autowired - private SzCaseService service; - - @Autowired - private FileAssociationsService fileService; - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SzCase dto) { - - if (service.lambdaQuery().eq(SzCase::getCaseName,dto.getCaseName()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - - dto.setCreateTime(new Date()); - dto.setId(IdWorker.getId()); - - boolean result = service.save(dto); - - - if (result){ - fileService.saveFile(dto.getFiles1(), getGroupId(), String.valueOf( dto.getId()),"1"); - fileService.saveFile(dto.getFiles2(), getGroupId(), String.valueOf( dto.getId()),"2"); - fileService.saveFile(dto.getFiles3(), getGroupId(), String.valueOf( dto.getId()),"3"); - fileService.saveFile(dto.getFiles4(), getGroupId(), String.valueOf( dto.getId()),"4"); - fileService.saveFile(dto.getFiles5(), getGroupId(), String.valueOf( dto.getId()),"5"); - fileService.saveFile(dto.getFiles6(), getGroupId(), String.valueOf( dto.getId()),"6"); - fileService.saveFile(dto.getFiles7(), getGroupId(), String.valueOf( dto.getId()),"7"); - fileService.saveFile(dto.getFiles8(), getGroupId(), String.valueOf( dto.getId()),"8"); - fileService.saveFile(dto.getFiles9(), getGroupId(), String.valueOf( dto.getId()),"9"); - } - - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SzCase dto) { - - - if (service.lambdaQuery() - .ne(SzCase::getId,dto.getId()) - .eq(SzCase::getCaseName,dto.getCaseName()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - - dto.setCreateTime(null); - dto.setCreateBy(null); - dto.setCreateName(null); - dto.setUpdateTime(new Date()); - boolean result = service.updateById(dto); - - if (result){ - fileService.saveFile(dto.getFiles1(), getGroupId(), String.valueOf( dto.getId()),"1"); - fileService.saveFile(dto.getFiles2(), getGroupId(), String.valueOf( dto.getId()),"2"); - fileService.saveFile(dto.getFiles3(), getGroupId(), String.valueOf( dto.getId()),"3"); - fileService.saveFile(dto.getFiles4(), getGroupId(), String.valueOf( dto.getId()),"4"); - fileService.saveFile(dto.getFiles5(), getGroupId(), String.valueOf( dto.getId()),"5"); - fileService.saveFile(dto.getFiles6(), getGroupId(), String.valueOf( dto.getId()),"6"); - fileService.saveFile(dto.getFiles7(), getGroupId(), String.valueOf( dto.getId()),"7"); - fileService.saveFile(dto.getFiles8(), getGroupId(), String.valueOf( dto.getId()),"8"); - fileService.saveFile(dto.getFiles9(), getGroupId(), String.valueOf( dto.getId()),"9"); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated SzCasePage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - if (Objects.nonNull(page.getCaseType())){ - query.eq(SzCase::getCaseType, page.getCaseType()); - } - - if (Objects.nonNull(page.getCaseName())){ - query.like(SzCase::getCaseName, page.getCaseName()); - } - - if (Objects.nonNull(page.getCaseId())){ - query.like(SzCase::getCaseId, page.getCaseId()); - } - - if (Objects.nonNull(page.getStm())){ - query.ge(SzCase::getCreateTime, page.getStm()); - } - - if (Objects.nonNull(page.getEtm())){ - query.le(SzCase::getCreateTime, page.getEtm()); - } - - query.orderByDesc(SzCase::getCreateTime); - return R.ok(service.page(page.getPageSo().toPage(),query)); - } - - @Operation(summary = "获取详情(包含文件)") - @GetMapping("/get/{id}") - public R getFiles(@Schema(name = "id") @PathVariable("id") Serializable id) { - SzCase o = service.getById(id); - if (Objects.isNull(o)) { - throw new IllegalArgumentException("当前数据不存在"); - } - - o.setFiles1(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"1")); - o.setFiles2(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"2")); - o.setFiles3(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"3")); - o.setFiles4(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"4")); - o.setFiles5(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"5")); - o.setFiles6(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"6")); - o.setFiles7(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"7")); - o.setFiles8(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"8")); - o.setFiles9(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"9")); - - return R.ok(o); - } - - @Operation(summary = "案件统计") - @PostMapping("/statistics/{num}") - public R> statistics( - @Schema(name = "统计类型 0:案件来源,1:案件类型,2:执行类型") @PathVariable("num") Integer num, - @RequestBody @Validated SzCasePage page) { - LambdaQueryChainWrapper query = service.lambdaQuery(); - - if (Objects.nonNull(page.getStm())){ - query.ge(SzCase::getCreateTime, page.getStm()); - } - - if (Objects.nonNull(page.getEtm())){ - query.le(SzCase::getCreateTime, page.getEtm()); - } - - List vos = Lists.newArrayList(); - - List list = query.list(); - - if (CollectionUtils.isNotEmpty(list)){ - Map sourceCount = Maps.newHashMap(); - switch (num){ - case 0:{ // 案件来源 - sourceCount = list.stream() - .filter(o -> Objects.nonNull(o.getCaseSource())) - .collect(Collectors.groupingBy(SzCase::getCaseSource, Collectors.counting())); - break; - } - case 1:{ // 案件类型 - sourceCount = list.stream() - .filter(o -> Objects.nonNull(o.getCaseType())) - .collect(Collectors.groupingBy(SzCase::getCaseType, Collectors.counting())); - break; - } - case 2:{ // 执行类型 - sourceCount = list.stream() - .filter(o -> Objects.nonNull(o.getCaseImplementation())) - .collect(Collectors.groupingBy(SzCase::getCaseImplementation, Collectors.counting())); - break; - } - default:break; - } - - sourceCount.forEach((k,v) -> vos.add(new SzCaseStatisticsVo(null,k,v.intValue()))); - } - - return R.ok(vos); - } - - @Operation(summary = "案件数量趋势") - @GetMapping("/statisticsNum/{year}") - public R> statisticsNum(@Schema(name = "年份") @PathVariable("year") Integer year) { - LambdaQueryChainWrapper query = service.lambdaQuery(); - - query.ge(SzCase::getCreateTime, DateUtil.beginOfYearToDate(year)); - - query.le(SzCase::getCreateTime, DateUtil.endOfYearToDate(year)); - - List vos = Lists.newArrayList(); - - List list = query.list(); - - Calendar calendar = Calendar.getInstance(); - for (int i = 0; i < 12; i++) { - int month = i; - long cnt = list.stream().filter(item -> { - calendar.setTime(item.getCreateTime()); - return month == calendar.get(Calendar.MONTH); - }).count(); - vos.add(new SzCaseStatisticsVo(month + 1,null,Integer.valueOf(String.valueOf(cnt)))); - } -// -// Calendar calendar = Calendar.getInstance(); -// int currYear = calendar.get(Calendar.YEAR); -// int month = calendar.get(Calendar.MONTH) + 1; -// if(year.intValue() != currYear){ -// calendar.set(Calendar.YEAR,year); -// month = 12; -// } -// final int finalMonth = month; -// for (int i = 1; i <= finalMonth; i++) { -// int finalI = i; -// long count = 0; -// if(CollectionUtils.isNotEmpty(list)){ -// count = list.stream() -// .filter(item -> -// { -// calendar.setTime(item.getCaseDate()); -// return finalMonth == finalI; -// }) -// .count(); -// } -// vos.add(new SzCaseStatisticsVo(i,null,Integer.valueOf(String.valueOf(count)))); -// } - - return R.ok(vos); - } - - @Override - public String getGroupId() { - return "szCase"; - } - public String getGroupId(Integer num) { - return getGroupId() + num; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/SzRegulatoryFrameworkController.java b/src/main/java/com/gunshi/project/hsz/controller/SzRegulatoryFrameworkController.java deleted file mode 100644 index d4c4c96..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SzRegulatoryFrameworkController.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.SzRegulatoryFrameworkPage; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.model.SzRegulatoryFramework; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.SzRegulatoryFrameworkService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 案件登记表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "制度管理表") -@RestController -@RequestMapping(value = "/SzRegulatoryFramework") -public class SzRegulatoryFrameworkController extends AbstractCommonFileController { - - @Autowired - private SzRegulatoryFrameworkService service; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SzRegulatoryFramework dto) { - - if (service.lambdaQuery().eq(SzRegulatoryFramework::getName, dto.getName()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - - dto.setCreateTime(new Date()); - dto.setId(IdWorker.getId()); - dto.setUploadDate(new Date()); - dto.setUpdateTime(new Date()); - dto.setMinUpTime(new Date()); - boolean result = service.save(dto); - - - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SzRegulatoryFramework dto) { - - - if (service.lambdaQuery() - .ne(SzRegulatoryFramework::getId, dto.getId()) - .eq(SzRegulatoryFramework::getName, dto.getName()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - dto.setCreateBy(null); - dto.setCreateName(null); - dto.setUpdateTime(new Date()); - dto.setCreateTime(null); - boolean result = service.updateById(dto); - - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated SzRegulatoryFrameworkPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - - if (Objects.nonNull(page.getType())) { - query.eq(SzRegulatoryFramework::getType, page.getType()); - } - - if (Objects.nonNull(page.getName())) { - query.like(SzRegulatoryFramework::getName, page.getName()); - } - - if (Objects.nonNull(page.getFillUnit())) { - query.like(SzRegulatoryFramework::getFillUnit, page.getFillUnit()); - } - - if (Objects.nonNull(page.getStm())) { - query.ge(SzRegulatoryFramework::getReleaseDate, page.getStm()); - } - - if (Objects.nonNull(page.getEtm())) { - query.le(SzRegulatoryFramework::getReleaseDate, page.getEtm()); - } - - query.orderByDesc(SzRegulatoryFramework::getUpdateTime); - Page data = service.page(page.getPageSo().toPage(), query); - data.getRecords().forEach(item -> { - List files = fileService.getFiles(getGroupId(), String.valueOf(item.getId())); - if(CollectionUtils.isNotEmpty(files)){ - Date minDate = files.stream() - .map(FileAssociations::getTm) // 提取每个对象的 tm 字段 - .min(Date::compareTo).orElse(null); // 找到最小的 Date - item.setMinUpTime(minDate); - } - item.setFiles(files); - }); - return R.ok(data); - } - - - - @Override - public String getGroupId() { - return "SzRegulatoryFramework"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/SzRuleByLawController.java b/src/main/java/com/gunshi/project/hsz/controller/SzRuleByLawController.java deleted file mode 100644 index acb730f..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SzRuleByLawController.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.SzRuleByLawPage; -import com.gunshi.project.hsz.model.SzRuleByLaw; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.SzRuleByLawService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Calendar; -import java.util.Date; -import java.util.Objects; - -/** - * 描述: 法律法规管理表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "法律法规管理表") -@RestController -@RequestMapping(value = "/SzRuleByLaw") -public class SzRuleByLawController extends AbstractCommonFileController { - - @Autowired - private SzRuleByLawService service; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SzRuleByLaw dto) { - - if (service.lambdaQuery().eq(SzRuleByLaw::getName, dto.getName()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - - if (CollectionUtils.isNotEmpty(dto.getFiles())){ - dto.setUploadDate(new Date()); - } - boolean result = service.save(dto); - - - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SzRuleByLaw dto) { - - - if (service.lambdaQuery() - .ne(SzRuleByLaw::getId, dto.getId()) - .eq(SzRuleByLaw::getName, dto.getName()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - - dto.setCreateTime(null); - dto.setCreateBy(null); - dto.setCreateName(null); - dto.setUpdateTime(new Date()); - - if (CollectionUtils.isNotEmpty(dto.getFiles())){ - dto.setUploadDate(new Date()); - } - - boolean result = service.updateById(dto); - - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated SzRuleByLawPage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - Calendar calendar=Calendar.getInstance(); - - if (Objects.nonNull(page.getType())) { - query.eq(SzRuleByLaw::getType, page.getType()); - } - - if (Objects.nonNull(page.getName())) { - query.like(SzRuleByLaw::getName, page.getName()); - } - - if (Objects.nonNull(page.getFillUnit())) { - query.like(SzRuleByLaw::getFillUnit, page.getFillUnit()); - } - - if (Objects.nonNull(page.getTimeliness())) { - query.eq(SzRuleByLaw::getTimeliness, page.getTimeliness()); - } - - if (Objects.nonNull(page.getStmAd())) { - query.ge(SzRuleByLaw::getCreateTime, page.getStmAd()); - } - - Date etmAd = page.getEtmAd(); - if (Objects.nonNull(etmAd)) { - calendar.setTime(etmAd); - calendar.set(Calendar.HOUR,23); - calendar.set(Calendar.MINUTE,59); - calendar.set(Calendar.SECOND,59); - query.le(SzRuleByLaw::getCreateTime, calendar.getTime()); - } - - if (Objects.nonNull(page.getStmIm())) { - query.ge(SzRuleByLaw::getImplementationDate, page.getStmIm()); - } - - Date etmIm = page.getEtmIm(); - if (Objects.nonNull(etmIm)) { - calendar.setTime(etmIm); - calendar.set(Calendar.HOUR,23); - calendar.set(Calendar.MINUTE,59); - calendar.set(Calendar.SECOND,59); - query.le(SzRuleByLaw::getImplementationDate, calendar.getTime()); - } - - if (Objects.nonNull(page.getStmUd())) { - query.ge(SzRuleByLaw::getCreateTime, page.getStmUd()); - } - - Date etmUd = page.getEtmUd(); - if (Objects.nonNull(etmUd)) { - calendar.setTime(etmUd); - calendar.set(Calendar.HOUR,23); - calendar.set(Calendar.MINUTE,59); - calendar.set(Calendar.SECOND,59); - query.le(SzRuleByLaw::getCreateTime, calendar.getTime()); - } - - query.orderByDesc(SzRuleByLaw::getCreateTime); - Page data = service.page(page.getPageSo().toPage(), query); - data.getRecords() - .forEach(item -> item.setFiles(fileService.getFiles(getGroupId(), String.valueOf(item.getId())))); - return R.ok(data); - } - - - @Override - public String getGroupId() { - return "SzRuleByLaw"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/SzTreatmentBasisController.java b/src/main/java/com/gunshi/project/hsz/controller/SzTreatmentBasisController.java deleted file mode 100644 index 4cc5e2d..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/SzTreatmentBasisController.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.SzTreatmentBasis; -import com.gunshi.project.hsz.service.SzTreatmentBasisService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 案件登记表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "处理依据表") -@RestController -@RequestMapping(value="/szTreatmentBasis") -public class SzTreatmentBasisController{ - - @Autowired - private SzTreatmentBasisService service; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody SzTreatmentBasis dto) { - - if (service.lambdaQuery().eq(SzTreatmentBasis::getLegalName,dto.getLegalName()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - - if (Objects.isNull(dto.getPId())){ - dto.setPId(0L); - } - - dto.setCreateTime(new Date()); - dto.setId(IdWorker.getId()); - - if (dto.getStatus() == 0) { - dto.setDisplay(0); - } else { - dto.setDisplay(1); - } - - boolean result = service.save(dto); - - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody SzTreatmentBasis dto) { - - - if (service.lambdaQuery() - .ne(SzTreatmentBasis::getId,dto.getId()) - .eq(SzTreatmentBasis::getLegalName,dto.getLegalName()) - .count() > 0) { - throw new IllegalArgumentException("当前名称已存在"); - } - - dto.setCreateTime(null); - dto.setCreateBy(null); - dto.setCreateName(null); - dto.setUpdateTime(new Date()); - if (dto.getStatus() == 0) { - dto.setDisplay(0); - } else { - dto.setDisplay(1); - } - boolean result = service.updateById(dto); - - return R.ok(result ? dto : null); - } - - @Operation(summary = "获取详情") - @GetMapping("/get/{id}") - public R get(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.getById(id)); - } - - @Operation(summary = "获取树") - @GetMapping("/get/tree") - public R> getTree() { - List list = service.list(); - if (CollectionUtils.isEmpty(list)){ - return R.ok(list); - } - Map> listMap = list.stream().collect(Collectors.groupingBy(SzTreatmentBasis::getPId)); - - list.forEach(o -> o.setChildren(listMap.get(o.getId()))); - List parentList = list.stream() - .filter(o -> 0L == o.getPId()) - .collect(Collectors.toList()); - - return R.ok(parentList); - } - - @Operation(summary = "获取树-不显示禁用的") - @GetMapping("/get/treeFiltered") - public R> getTreeFiltered() { - List list = service.list(); - if (CollectionUtils.isEmpty(list)){ - return R.ok(list); - } - Map> listMap = list.stream().collect(Collectors.groupingBy(SzTreatmentBasis::getPId)); - - list.forEach(o -> o.setChildren(listMap.get(o.getId()))); - List parentList = list.stream() - .filter(o -> 0L == o.getPId()) - .collect(Collectors.toList()); - - parentList.forEach(this::trim); - parentList.removeIf(node -> CollectionUtils.isEmpty(node.getChildren()) && (Integer.valueOf(0).equals(node.getDisplay()) || node.getDisplay() == null)); - - return R.ok(parentList); - } - - private boolean trim(SzTreatmentBasis node) { - List children = node.getChildren(); - boolean isMiddleNode = false; - if (CollectionUtils.isNotEmpty(children)) { - isMiddleNode = true; - children.removeIf(this::trim); - } - //没有子节点的节点,且display是0,是末端节点;没有子节点的节点,且曾经有过子节点,是中间节点 - //末端节点的display是0就删,中间节点没有子节点就删 - return CollectionUtils.isEmpty(children) && (isMiddleNode || Integer.valueOf(0).equals(node.getDisplay())); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - if (Objects.isNull(service.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - return R.ok(service.removeById(id)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/TermiteAdverController.java b/src/main/java/com/gunshi/project/hsz/controller/TermiteAdverController.java deleted file mode 100644 index 1298e6d..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/TermiteAdverController.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.mapper.TermiteSurveyMapper; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * 描述: 白蚁防治宣传 - * author: xusan - * date: 2024-08-28 10:29:58 - */ -@Tag(name = "白蚁防治宣传资料") -@RestController -@RequestMapping(value="/termite/adver") -public class TermiteAdverController extends AbstractCommonFileController{ - - @Autowired - private TermiteSurveyMapper termiteSurveyMapper; - - @Operation(summary = "宣传资料") - @GetMapping("/list") - public R> list() { - return R.ok(termiteSurveyMapper.queryFileList(getGroupId())); - } - - - @Override - public String getGroupId() { - return "termiteAdver"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/TermiteAdverPicController.java b/src/main/java/com/gunshi/project/hsz/controller/TermiteAdverPicController.java deleted file mode 100644 index 78c0273..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/TermiteAdverPicController.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.model.TermiteAdverPic; -import com.gunshi.project.hsz.service.TermiteAdverPicService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -/** - * 描述: 白蚁防治宣传图片墙 - * author: xusan - * date: 2024-08-29 17:33:09 - */ -@Tag(name = "白蚁防治宣传图片墙") -@RestController -@RequestMapping(value="/termite/pic") -public class TermiteAdverPicController extends AbstractCommonFileController{ - - @Autowired - private TermiteAdverPicService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody TermiteAdverPic dto) { - return R.ok(service.saveData(dto)); - } - - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.queryList()); - } - - - @Override - public String getGroupId() { - return "termiteAdverPic"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/TermiteSurveyController.java b/src/main/java/com/gunshi/project/hsz/controller/TermiteSurveyController.java deleted file mode 100644 index eba283d..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/TermiteSurveyController.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.TermiteSurveyPageSo; -import com.gunshi.project.hsz.model.TermiteSurvey; -import com.gunshi.project.hsz.model.TermiteSurveyDetail; -import com.gunshi.project.hsz.service.TermiteSurveyDetailService; -import com.gunshi.project.hsz.service.TermiteSurveyService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 白蚁普查 - * author: xusan - * date: 2024-08-28 10:29:58 - */ -@Tag(name = "白蚁普查") -@RestController -@RequestMapping(value="/termite/survey") -public class TermiteSurveyController extends AbstractCommonFileController{ - - @Autowired - private TermiteSurveyService service; - @Autowired - private TermiteSurveyDetailService termiteSurveyDetailService; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody TermiteSurvey dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody TermiteSurvey dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.delData(id)); - } - - @Operation(summary = "详情") - @GetMapping("/detail/{id}") - public R detail(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.detail(id)); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated TermiteSurveyPageSo page) { - return R.ok(service.pageQuery(page)); - } - - @Operation(summary = "分页") - @PostMapping("/pageDetail") - public R> pageDetail(@RequestBody @Validated TermiteSurveyPageSo page) { - return R.ok(termiteSurveyDetailService.pageQuery(page)); - } - - @Operation(summary = "统计") - @PostMapping("/count") - public R> count(@RequestBody @Validated TermiteSurveyPageSo page) { - page.getPageSo().setPageSize(1000000); - Page termiteSurveyPage = termiteSurveyDetailService.pageQuery(page); - List records = termiteSurveyPage.getRecords(); - Map countMap = new HashMap<>(); - countMap.put("totalPoint",0l); - countMap.put("hasAnt",0l); - countMap.put("notAnt",0l); - countMap.put("noData",0l); - if(CollectionUtils.isEmpty(records)){ - return R.ok(countMap); - } - - page.getPageSo().setPageSize(1000000); - page.setPileNumber(null); - page.setSearchDate(null); - Page totalPage = termiteSurveyDetailService.pageQuery(page); - - if(CollectionUtils.isNotEmpty(totalPage.getRecords())){ - //所有点 去除空的 - long pileNumberCount = totalPage.getRecords().stream() - //.map(TermiteSurveyDetail::getPileNumber).filter(e -> StringUtils.isNotEmpty(e)) - .collect(Collectors.toSet()).stream().count(); - countMap.put("totalPoint", pileNumberCount); - } - - - //有危害 && 未处置 - long harmNumCount = records.stream() - .filter(e-> Objects.nonNull(e.getIsHarm()) && Objects.nonNull(e.getIsHandle()) - && e.getIsHarm().intValue() > 0 && e.getIsHandle().intValue()!=1).count(); - countMap.put("hasAnt", harmNumCount); - - //无危害 || (有危害&& 以处置) - long handleNummCount = records.stream() - .filter(e-> Objects.nonNull(e.getIsHarm()) && Objects.nonNull(e.getIsHandle()) - && (e.getIsHarm().intValue() == 0 || e.getIsHarm().intValue() > 0 && e.getIsHandle().intValue()==1)).count(); - - countMap.put("notAnt", handleNummCount); - - //无数据 - long count = records.stream().filter(e -> Objects.isNull(e.getIsHandle()) || e.getIsHandle().intValue() == 0).count(); - countMap.put("noData",count); - - return R.ok(countMap); - } - - - - @Override - public String getGroupId() { - return "termiteSurvey"; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/TyYearRainfallController.java b/src/main/java/com/gunshi/project/hsz/controller/TyYearRainfallController.java deleted file mode 100644 index 5d25229..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/TyYearRainfallController.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.TyYearRainfallPageSo; -import com.gunshi.project.hsz.entity.vo.TyYearRainfallVo; -import com.gunshi.project.hsz.service.TyYearRainfallService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -/** - * 描述: 典型年降雨资料表 - * author: xusan - * date: 2024-07-08 17:40:37 - */ -@Tag(name = "典型年降雨资料表") -@RestController -@RequestMapping(value="/tyYearRainfall") -public class TyYearRainfallController { - - @Autowired - private TyYearRainfallService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody TyYearRainfallVo dto) { - return R.ok(service.saveData(dto)); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody TyYearRainfallVo dto) { - return R.ok(service.updateData(dto)); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Long id) { - return R.ok(service.removeData(id)); - } - - @Operation(summary = "列表") - @PostMapping("/list") - public R> list() { - return R.ok(service.queryList()); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> pageQuery(@RequestBody TyYearRainfallPageSo tyYearRainfallPageSo) { - return R.ok(service.pageQuery(tyYearRainfallPageSo)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/WarningRuleController.java b/src/main/java/com/gunshi/project/hsz/controller/WarningRuleController.java deleted file mode 100644 index d4a09ae..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/WarningRuleController.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.core.session.entity.SessionUser; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.gunshi.project.hsz.entity.so.TermiteSurveyPageSo; -import com.gunshi.project.hsz.entity.so.WarningRulePageSo; -import com.gunshi.project.hsz.model.TermiteSurvey; -import com.gunshi.project.hsz.model.WarningRule; -import com.gunshi.project.hsz.model.WarningRuleInfo; -import com.gunshi.project.hsz.model.WaterAlarm; -import com.gunshi.project.hsz.service.HisWaterDataService; -import com.gunshi.project.hsz.service.StStbprpBService; -import com.gunshi.project.hsz.service.WarningRuleInfoService; -import com.gunshi.project.hsz.service.WarningRuleService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletRequest; -import org.hibernate.validator.constraints.NotEmpty; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.time.Year; -import java.util.List; - -@Tag(name = "预警规则") -@RestController -@RequestMapping(value="/warningRule") -public class WarningRuleController extends AbstractCommonFileController { - - @Autowired - private WarningRuleService warningRuleService; - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody @Validated WarningRulePageSo page) { - return R.ok(warningRuleService.pageQuery(page)); - } - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@RequestBody @Validated WarningRule dto, HttpServletRequest request) { -// SessionUser sessionUser = checkLogin(request); -// if(sessionUser == null){ -// throw new IllegalArgumentException("未登录"); -// } -// Long userId = sessionUser.getUserId(); -// dto.setCreateName(userId.toString()); - return R.ok(warningRuleService.saveData(dto)); - } - - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody WarningRule dto) { - boolean result = warningRuleService.updateData(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = warningRuleService.deleteById(id); - return R.ok(b); - } - - - @Autowired - private WarningRuleInfoService warningRuleInfoService; - - @Operation(summary = "预警信息分页") - @PostMapping("/info/page") - public R> infoPage(@RequestBody @Validated WarningRulePageSo page) { - return R.ok(warningRuleInfoService.pageQuery(page)); - } - - //获取水位站测点 - @Operation(summary = "获取水位站测点") - @GetMapping("/getRsvrStcd") - public R> gerRsvrOrRiverStcd(){ - return R.ok(stStbprpBService.getRsvrStations()); - } - - //获取降雨量测点 - - @Autowired - private StStbprpBService stStbprpBService; - - @Operation(summary = "获取降雨量测点") - @GetMapping("/getRainStcd") - public R> gerRainStcd(){ - return R.ok(stStbprpBService.getPptnStations()); - } - - @Autowired - private HisWaterDataService hisWaterDataService; - - @Operation(summary = "获取年份") - @GetMapping("/getYear") - public R> getYear(){ - return R.ok(hisWaterDataService.getYearList()); - } - - @Override - public String getGroupId() { - return "warningRule"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/WaterAlarmController.java b/src/main/java/com/gunshi/project/hsz/controller/WaterAlarmController.java deleted file mode 100644 index 4664297..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/WaterAlarmController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.gunshi.project.hsz.controller; - - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.so.WaterAlarmPageSo; -import com.gunshi.project.hsz.entity.vo.WaterAlarmCount; -import com.gunshi.project.hsz.entity.vo.WaterAlarmTypeCount; -import com.gunshi.project.hsz.model.WaterAlarm; -import com.gunshi.project.hsz.service.WaterAlarmService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "水情告警") -@RestController -@RequestMapping(value="/waterAlarm") -public class WaterAlarmController { - - @Autowired - private WaterAlarmService service; - - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody WaterAlarm dto) { - boolean result = service.saveData(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody WaterAlarm dto) { - boolean result = service.updateById(dto); - return R.ok(result ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - boolean b = service.removeById(id); - return R.ok(b); - } - - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody WaterAlarmPageSo pageSo) { - return R.ok(service.queryPage(pageSo)); - } - - @Operation(summary = "列表") - @GetMapping("/list") - public List list() { - List list = service.lambdaQuery().list(); - return list; - } - - @Operation(summary = "根据年份进行统计柱形图") - @GetMapping("/count12") - public R> count12(@RequestParam(value = "year") Integer year){ - List counts = service.count12(year); - return R.ok(counts); - } - - @Operation(summary = "根据年份进行统计圆饼图") - @GetMapping("/countTypeByYear") - public R> countTypeByYear(@RequestParam(value = "year") Integer year){ - List res = service.countTypeByYear(year); - return R.ok(res); - } - - @Operation(summary = "获取河道和水库站点") - @GetMapping("/listStation") - public R> listStation(){ - return R.ok(service.listStation()); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/WaterCountAnalysisController.java b/src/main/java/com/gunshi/project/hsz/controller/WaterCountAnalysisController.java deleted file mode 100644 index f26a745..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/WaterCountAnalysisController.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.result.R; -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.vo.WaterAnalysisVo; -import com.gunshi.project.hsz.entity.vo.WaterCapacityAnalysisVo; -import com.gunshi.project.hsz.model.WaterDispatch; -import com.gunshi.project.hsz.model.XlPlan; -import com.gunshi.project.hsz.service.WaterCountAnalysisService; -import com.gunshi.project.hsz.service.XlPlanService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; - -@Tag(name = "水资源调度-统计分析") -@RestController -@RequestMapping(value="/wca") -public class WaterCountAnalysisController { - - - @Autowired - private WaterCountAnalysisService waterCountAnalysisService; - - - @Operation(summary = "供水分析") - @GetMapping("/waterSupplyAnalysis") - public R> waterSupplyAnalysis(@RequestParam("id") Serializable id) { - - List res = waterCountAnalysisService.waterSupplyAnalysis(id); - return R.ok(res); - } - - - @Operation(summary = "调度执行分析") - @GetMapping("/waterDispatchAnalysis") - public R> waterDispatchAnalysis(@RequestParam("year") Serializable year) { - List res = waterCountAnalysisService.waterDispatchAnalysis(year); - return R.ok(res); - } - - @Operation(summary = "水库蓄水量分析") - @PostMapping("/waterCapacityAnalysis") - public R> waterCapacityAnalysis(@RequestBody DateRangeSo dateRangeSo) { - List res = waterCountAnalysisService.waterCapacityAnalysis(dateRangeSo); - return R.ok(res); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/WaterDispatchController.java b/src/main/java/com/gunshi/project/hsz/controller/WaterDispatchController.java deleted file mode 100644 index 1b029a1..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/WaterDispatchController.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.core.session.entity.SessionUser; -import com.gunshi.project.hsz.entity.so.WaterDispatchPageSo; -import com.gunshi.project.hsz.entity.vo.WdCountVo; -import com.gunshi.project.hsz.model.WaterDispatch; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.WaterDispatchService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletRequest; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.Objects; - -@Tag(name = "水量调度") -@RestController -@RequestMapping(value="/waterDis") -public class WaterDispatchController extends AbstractCommonFileController { - - @Autowired - private WaterDispatchService waterDispatchService; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody WaterDispatch dto) { - dto.setId(IdWorker.getId()); - boolean flag = waterDispatchService.saveData(dto); - if(flag){ - fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); - } - return R.ok(dto); - } - - @Operation(summary = "下发") - @GetMapping("/distribute/{id}") - public R distribute(@PathVariable("id") String id) { - WaterDispatch byId = waterDispatchService.getById(id); - if(byId == null){ - throw new IllegalArgumentException("抱歉,该调度不存在,无法下发"); - } - byId.setExeStatus(2); - boolean flag = waterDispatchService.updateById(byId); - return R.ok(flag); - } - - @Operation(summary = "反馈") - @PostMapping("/feedback") - public R feedback(@RequestBody WaterDispatch dto, HttpServletRequest request) { - boolean flag = waterDispatchService.feedBack(dto); - if(flag){ - fileService.saveFile(dto.getResFiles(),getResGroupId(),dto.getId().toString()); - } - return R.ok(dto); - } - - @Operation(summary = "更新") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody WaterDispatch dto) { - boolean flag = waterDispatchService.update(dto); - if(flag){ - fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); - } - return R.ok(dto); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - WaterDispatch byId = waterDispatchService.getById(id); - if(Objects.isNull(byId)){ - throw new IllegalArgumentException("该计划不存在"); - } - boolean flag = waterDispatchService.removeById(id); - if(flag){ - fileService.deleteFile(getGroupId(),byId.getId().toString()); - fileService.deleteFile(getResGroupId(),byId.getId().toString()); - } - return R.ok(true); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody WaterDispatchPageSo pageSo) { - Page res = waterDispatchService.pageQuery(pageSo); - if(!CollectionUtils.isEmpty(res.getRecords())){ - res.getRecords().stream().forEach(o ->{ - o.setFiles(fileService.getFiles(getGroupId(),o.getId().toString())); - o.setResFiles(fileService.getFiles2(getResGroupId(),o.getId().toString())); - }); - } - return R.ok(res); - } - - @Operation(summary = "统计当年完成调度次数") - @GetMapping("/count") - public R getCount(){ - WdCountVo vo = waterDispatchService.getCount(); - return R.ok(vo); - } - - @Override - public String getGroupId() { - return "waterDispatch"; - } - - public String getResGroupId(){ - return "waterDispatchRes"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/WeatherController.java b/src/main/java/com/gunshi/project/hsz/controller/WeatherController.java deleted file mode 100644 index 682f985..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/WeatherController.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ShortWeatherSo; -import com.gunshi.project.hsz.entity.so.WeatherSo; -import com.gunshi.project.hsz.entity.vo.ForeRainVo; -import com.gunshi.project.hsz.service.ForecastService; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -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; - -/** - * Description: - * Created by wanyan on 2024/3/11 - * - * @author wanyan - * @version 1.0 - */ -@RestController -@RequestMapping("/weather") -@Tag(name = "天气预报") -public class WeatherController { - - - @Resource - private ForecastService forecastService; - - - @Post(path = "/fore", summary = "24小时") - public R> fore(@RequestBody WeatherSo weatherSo) { - return R.ok(forecastService.fore(weatherSo)); - } - - - @Post(path = "/short/fore", summary = "短临预报") - public R> shortFore(@RequestBody ShortWeatherSo weatherSo) { - return R.ok(forecastService.shortFore(weatherSo)); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/controller/XlPlanController.java b/src/main/java/com/gunshi/project/hsz/controller/XlPlanController.java deleted file mode 100644 index bcab030..0000000 --- a/src/main/java/com/gunshi/project/hsz/controller/XlPlanController.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.gunshi.project.hsz.controller; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.XlPlanPageSo; -import com.gunshi.project.hsz.model.XlPlan; -import com.gunshi.project.hsz.service.FileAssociationsService; -import com.gunshi.project.hsz.service.XlPlanService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -@RestController -@RequestMapping("/xlPlan") -@Tag(name = "兴利计划") -public class XlPlanController extends AbstractCommonFileController { - - @Autowired - private XlPlanService xlPlanService; - - @Autowired - private FileAssociationsService fileService; - - @Operation(summary = "新增") - @PostMapping("/insert") - public R insert(@Validated(Insert.class) @RequestBody XlPlan dto) { - dto.setId(IdWorker.getId()); - boolean flag = xlPlanService.saveData(dto); - if(flag){ - fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); - } - return R.ok(dto); - } - - @Operation(summary = "修改") - @PostMapping("/update") - public R update(@Validated(Update.class) @RequestBody XlPlan dto) { - - boolean flag = xlPlanService.update(dto); - - if (flag) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return R.ok(flag ? dto : null); - } - - @Operation(summary = "删除") - @GetMapping("/del/{id}") - public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { - XlPlan byId = xlPlanService.getById(id); - if(Objects.isNull(byId)){ - throw new IllegalArgumentException("该计划不存在"); - } - boolean flag = xlPlanService.removeById(id); - if(flag){ - fileService.deleteFile(getGroupId(),byId.getId().toString()); - } - return R.ok(true); - } - - @Operation(summary = "分页") - @PostMapping("/page") - public R> page(@RequestBody XlPlanPageSo pageSo) { - Page res = xlPlanService.pageQuery(pageSo); - if(!CollectionUtils.isEmpty(res.getRecords())){ - res.getRecords().forEach(o -> o.setFiles( - fileService.getFiles(getGroupId(),o.getId().toString()) - )); - } - return R.ok(res); - } - - - @Operation(summary = "列表") - @GetMapping("/list") - public R> list() { - List list = xlPlanService.lambdaQuery().list(); - if(!CollectionUtils.isEmpty(list)){ - list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),o.getId().toString()))); - } - return R.ok(list); - } - - - @Override - public String getGroupId() { - return "xlPlan"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/MyConstant.java b/src/main/java/com/gunshi/project/hsz/entity/MyConstant.java deleted file mode 100644 index b964cfc..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/MyConstant.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity; - -/** - * @author xusan - * @date 2023/4/27 9:41 - */ -public class MyConstant { - - public static final String - - // 删除 - DEL = "0", - - // 未删除 - REC = "1"; - - /** - * 数据-数据服务运维员 角色编码 - */ - public static final String ROLE_PUSH = "data_zh_om"; - public static final String REDIS_KEY = "hsz:"; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/RiceSupportMidCaculate.java b/src/main/java/com/gunshi/project/hsz/entity/RiceSupportMidCaculate.java deleted file mode 100644 index b8dfc4e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/RiceSupportMidCaculate.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.entity; - -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * 供需平衡分析参数计算中间值实体类 - */ -@Data -public class RiceSupportMidCaculate { - - private String name;//灌溉生长周期 - - private LocalDateTime startTime;// 开始时间 - private LocalDateTime endTime;//结束时间 - - private BigDecimal irrigationUse;//灌溉用水万m³ - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/SkSyncData.java b/src/main/java/com/gunshi/project/hsz/entity/SkSyncData.java deleted file mode 100644 index ae59ef0..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/SkSyncData.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gunshi.project.hsz.entity; - - -import com.gunshi.project.hsz.model.StPptnRD; -import lombok.Data; - -import java.util.List; - -/** - * @author Sun Lejun - * @version 1.0 - * @date 2024/2/23 - */ - -@Data -public class SkSyncData { - List stPptnRD; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/SkSyncResp.java b/src/main/java/com/gunshi/project/hsz/entity/SkSyncResp.java deleted file mode 100644 index 83d6549..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/SkSyncResp.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.entity; - -import lombok.Data; - -/** - * @author Sun Lejun - * @version 1.0 - * @date 2024/2/26 - */ -@Data -public class SkSyncResp { - SkSyncData data; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/SyncDataReq.java b/src/main/java/com/gunshi/project/hsz/entity/SyncDataReq.java deleted file mode 100644 index 36e6ed7..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/SyncDataReq.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity; - -import lombok.Data; - -/** - * @author Sun Lejun - * @version 1.0 - * @date 2024/2/20 - */ - -@Data -public class SyncDataReq { - /** - * 抽取的行政区划编码 6位 - */ - private String adcd; - /** - * 抽取的开始时间 格式 yyyy-MM-dd - */ - private String startDate; - /** - * 抽取的结束时间 格式 yyyy-MM-dd - */ - private String endDate; - /** - * 抽取的类型 QX SW SK SH - */ - private String type; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskGnssDeleteDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskGnssDeleteDto.java deleted file mode 100644 index 7d82c5a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskGnssDeleteDto.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.util.Date; - -@Data -public class ArtificialJcskGnssDeleteDto { - - - private String cd; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date tm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskSyDeleteDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskSyDeleteDto.java deleted file mode 100644 index 7ef2c05..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/ArtificialJcskSyDeleteDto.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.util.Date; - -@Data -public class ArtificialJcskSyDeleteDto { - - private String stcd; - - private String mpcd; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date mstm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/BusinessRuleDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/BusinessRuleDto.java deleted file mode 100644 index 54e98b9..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/BusinessRuleDto.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - - -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -@Data -public class BusinessRuleDto extends GenericPageParams { - - @Schema(description = "开始时间") - @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) - private Date stm; - - - @Schema(description = "结束时间") - @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) - private Date etm; - - - @Schema(description = "规则名称") - private String name; - - @Schema(description = "规则类型 1 水资源调度,2 防洪调度,3 工程安全,4 应急抢险,5 其他") - private Integer type; - - @Schema(description = "状态") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/DispatchSchemeDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/DispatchSchemeDto.java deleted file mode 100644 index 07d82b0..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/DispatchSchemeDto.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.db.dto.PageSo; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -@Data -public class DispatchSchemeDto extends GenericPageParams { - - @Schema(description = "开始时间") - @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) - private Date stm; - - - @Schema(description = "结束时间") - @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) - private Date etm; - - - @Schema(description = "方案名称") - private String name; - - @Schema(description = "调度类型 1 防洪调度,2 兴利调度,3 生态调度,4 应急调度,5 其他") - private Integer type; - - @Schema(description = "状态") - private Integer status; - - PageSo pageSo = new PageSo(); - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ExportCommonDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ExportCommonDto.java deleted file mode 100644 index d1ad3ce..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/ExportCommonDto.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import lombok.Data; - -import java.util.List; - -@Data -public class ExportCommonDto { - - private List ids; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/InspectItemDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/InspectItemDto.java deleted file mode 100644 index 2c6d527..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/InspectItemDto.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 用户启停参数 - * Created by wanyan on 2024/1/22 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class InspectItemDto { - - @Schema(description = "id") - private Long id; - - @Schema(description = "状态(0启用 1停用)") - private Integer status; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafeCalculateDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafeCalculateDto.java deleted file mode 100644 index 9faddc9..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafeCalculateDto.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import com.gunshi.db.dto.DateTimeRangeSo; -import lombok.Data; - -@Data -public class ProjectSafeCalculateDto { - - - private DateTimeRangeSo dateTimeRangeSo;//时间范围 - - private String dvcd;//测点编号 -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafetyDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafetyDto.java deleted file mode 100644 index b42cd03..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSafetyDto.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - - -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.util.Date; - -@Data -public class ProjectSafetyDto extends GenericPageParams { - - @Schema(description = "开始时间") - @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) - private Date stm; - - - @Schema(description = "结束时间") - @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) - private Date etm; - - - @Schema(description = "标题") - private String name; - - @Schema(description = "知识库类型 ") - private String type; - - @Schema(description = "状态") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSaveReportDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSaveReportDto.java deleted file mode 100644 index f13e00d..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/ProjectSaveReportDto.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - - -import com.gunshi.project.hsz.model.ForecastTask; -import lombok.Data; - -@Data -public class ProjectSaveReportDto { - - private ForecastTask forecastTask; - - private String dvcd; - - private Integer order; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/RiceSupportBalanceCaculateDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/RiceSupportBalanceCaculateDto.java deleted file mode 100644 index cbef673..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/RiceSupportBalanceCaculateDto.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Data -public class RiceSupportBalanceCaculateDto { - - - - - private String planName;//方案名称 - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime;//开始时间 - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime;//结束时间 - - private Long icId;//来水方案Id - - private Long rqId;//需水方案Id - - private BigDecimal ecoQ;//生态最小径流(单位m³/s) - - private String createName;//创建人 - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/RiceWaterCaculateDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/RiceWaterCaculateDto.java deleted file mode 100644 index 34c52d3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/RiceWaterCaculateDto.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.gunshi.project.hsz.model.RiceGrowConfig; -import com.gunshi.project.hsz.model.RiceWaterKi; -import lombok.Data; - -import java.util.List; - -@Data -public class RiceWaterCaculateDto { - - private List riceWaterKis;//灌水定额配置 - - private RiceGrowConfig riceGrowConfig;//水稻生长参数配置表 -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/RotaDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/RotaDto.java deleted file mode 100644 index beaf938..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/RotaDto.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -/** - * 值班表人员参数 - * Created by wanyan on 2024/3/25 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class RotaDto { - - /** - * 日期 - */ - @Schema(description="日期",example = "2024-03-25") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - @NotNull(message = "日期不能为空") - private Date rotaDate; - - /** - * 是否节假日(0否 1是) - */ - @Schema(description="是否节假日(0否 1是)") - private Integer isHoliday; - - @Schema(description = "值班人员") - private List userDtoList; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/RotaUserDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/RotaUserDto.java deleted file mode 100644 index 5b8185b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/RotaUserDto.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 值班表参数 - * Created by wanyan on 2024/3/25 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class RotaUserDto { - - /** - * 类型(1带班领导 2值班人员) - */ - @Schema(description="类型(1带班领导 2值班人员)") - private Integer rotaType; - - /** - * 用户id - */ - @Schema(description="用户id") - private Long userId; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/SqlRequest.java b/src/main/java/com/gunshi/project/hsz/entity/dto/SqlRequest.java deleted file mode 100644 index e373fdd..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/SqlRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - - -import lombok.Data; - -@Data -public class SqlRequest { - private String sql; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/StGateRDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/StGateRDto.java deleted file mode 100644 index 6036e54..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/StGateRDto.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Data -public class StGateRDto { - - private String stcd; - - private BigDecimal gtop; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime tm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/StZqrlBDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/StZqrlBDto.java deleted file mode 100644 index f9646a3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/StZqrlBDto.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import com.gunshi.db.dto.DateTimeRangeSo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 用户启停参数 - * Created by wanyan on 2024/1/22 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class StZqrlBDto { - - private String stcd; - - @Schema(description = "时间范围") - private DateTimeRangeSo dateSo; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/SyRegressionDataDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/SyRegressionDataDto.java deleted file mode 100644 index 50171e5..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/SyRegressionDataDto.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - -import com.gunshi.project.hsz.model.SyRegressionData; -import lombok.Data; - -import java.util.List; - -@Data -public class SyRegressionDataDto { - - - List list; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/dto/icWaterForecastCaculateDto.java b/src/main/java/com/gunshi/project/hsz/entity/dto/icWaterForecastCaculateDto.java deleted file mode 100644 index e8da0ba..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/dto/icWaterForecastCaculateDto.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.dto; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.time.LocalDateTime; - -@Data -public class icWaterForecastCaculateDto { - - //预测开始时间(用于长期预测) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; - - //预测结束时间(用于长期预测) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; - - //典型年降雨量(用于长期预测) - private Integer year; - - //预测小时(用于短期预测) - private Integer hours; - - private Integer type; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/enums/AlarmTypeEnum.java b/src/main/java/com/gunshi/project/hsz/entity/enums/AlarmTypeEnum.java deleted file mode 100644 index 06ecb84..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/enums/AlarmTypeEnum.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.gunshi.project.hsz.entity.enums; - -import lombok.Getter; - -/** - * 防汛预警类型枚举 - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@Getter -public enum AlarmTypeEnum { - - /** - * 水库超汛限 - */ - RESERVOIR_OVER_FLOOD_LIMIT("RESERVOIR_OVER_FLOOD_LIMIT", "水库超汛限", "水库水位超过汛限水位", 1, "水库"), - - /** - * 水库超设计 - */ - RESERVOIR_OVER_DESIGN("RESERVOIR_OVER_DESIGN", "水库超设计", "水库水位超过设计洪水位", 2, "水库"), - - /** - * 水库超校核 - */ - RESERVOIR_OVER_CHECK("RESERVOIR_OVER_CHECK", "水库超校核", "水库水位超过校核洪水位", 3, "水库"), - - /** - * 河道超警戒 - */ - RIVER_OVER_WARNING("RIVER_OVER_WARNING", "河道超警戒", "河道水位超过警戒水位", 4, "河道"), - - /** - * 河道超保证 - */ - RIVER_OVER_GUARANTEE("RIVER_OVER_GUARANTEE", "河道超保证", "河道水位超过保证水位", 5, "河道"); - - /** - * 枚举编码 - */ - private final String code; - - /** - * 枚举名称 - */ - private final String name; - - /** - * 描述信息 - */ - private final String description; - - /** - * 预警等级 - */ - private final Integer level; - - /** - * 预警类型(水库/河道) - */ - private final String category; - - AlarmTypeEnum(String code, String name, String description, Integer level, String category) { - this.code = code; - this.name = name; - this.description = description; - this.level = level; - this.category = category; - } - - /** - * 根据编码获取枚举 - */ - public static AlarmTypeEnum getByCode(String code) { - for (AlarmTypeEnum value : values()) { - if (value.getCode().equals(code)) { - return value; - } - } - return null; - } - - /** - * 根据名称获取枚举 - */ - public static AlarmTypeEnum getByName(String name) { - for (AlarmTypeEnum value : values()) { - if (value.getName().equals(name)) { - return value; - } - } - return null; - } - - /** - * 判断是否为水库相关预警 - */ - public boolean isReservoirWarning() { - return "水库".equals(this.category); - } - - /** - * 判断是否为河道相关预警 - */ - public boolean isRiverWarning() { - return "河道".equals(this.category); - } - - /** - * 获取所有水库预警类型 - */ - public static AlarmTypeEnum[] getReservoirWarnings() { - return new AlarmTypeEnum[]{ - RESERVOIR_OVER_FLOOD_LIMIT, - RESERVOIR_OVER_DESIGN, - RESERVOIR_OVER_CHECK - }; - } - - /** - * 获取所有河道预警类型 - */ - public static AlarmTypeEnum[] getRiverWarnings() { - return new AlarmTypeEnum[]{ - RIVER_OVER_WARNING, - RIVER_OVER_GUARANTEE - }; - } - - - @Override - public String toString() { - return this.name + "(" + this.code + ") - " + this.description; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/enums/IndicatorTypeEnum.java b/src/main/java/com/gunshi/project/hsz/entity/enums/IndicatorTypeEnum.java deleted file mode 100644 index 5cd9651..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/enums/IndicatorTypeEnum.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.entity.enums; - -import lombok.Getter; - -@Getter -public enum IndicatorTypeEnum { - - REAL_WATER_LEVEL("REAL_WATER_LEVEL", "实时水位"), - PEAK_FLOW("PEAK_FLOW", "预报洪峰流量"), - RAINFALL("RAINFALL", "降雨量"), - WATER_STORAGE("WATER_STORAGE", "蓄水量"), - FORECAST_RAINFALL("FORECAST_RAINFALL", "预报降雨量"); - - private final String code; - private final String description; - - IndicatorTypeEnum(String code, String description) { - this.code = code; - this.description = description; - } - - public static IndicatorTypeEnum getByCode(String code) { - for (IndicatorTypeEnum type : values()) { - if (type.getCode().equals(code)) { - return type; - } - } - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/enums/OperatorEnum.java b/src/main/java/com/gunshi/project/hsz/entity/enums/OperatorEnum.java deleted file mode 100644 index 414b1bc..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/enums/OperatorEnum.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.enums; - -import lombok.Getter; - -@Getter -public enum OperatorEnum { - - GREATER_THAN(">", "大于"), - GREATER_EQUAL(">=", "大于等于"), - LESS_THAN("<", "小于"), - LESS_EQUAL("<=", "小于等于"); - - private final String symbol; - private final String description; - - OperatorEnum(String symbol, String description) { - this.symbol = symbol; - this.description = description; - } - - public static OperatorEnum getBySymbol(String symbol) { - for (OperatorEnum operator : values()) { - if (operator.getSymbol().equals(symbol)) { - return operator; - } - } - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/enums/RelationTypeEnum.java b/src/main/java/com/gunshi/project/hsz/entity/enums/RelationTypeEnum.java deleted file mode 100644 index b1630e0..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/enums/RelationTypeEnum.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.entity.enums; - -import lombok.Getter; - -@Getter -public enum RelationTypeEnum { - - AND("AND", "且"), - OR("OR", "或"); - - private final String code; - private final String description; - - RelationTypeEnum(String code, String description) { - this.code = code; - this.description = description; - } - - public static RelationTypeEnum getByCode(String code) { - for (RelationTypeEnum type : values()) { - if (type.getCode().equals(code)) { - return type; - } - } - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/enums/SysFileType.java b/src/main/java/com/gunshi/project/hsz/entity/enums/SysFileType.java deleted file mode 100644 index 5b8456c..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/enums/SysFileType.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.entity.enums; - -import org.apache.commons.lang3.StringUtils; - -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -/** - * @author xusan - * @date 2022/7/14 16:55 - * 系统业务文件类型 对应 file_associations.type - */ -public enum SysFileType { - - SFT000("0", "水库基本信息-工程基础信息-工程特性表"), - SFT001("1", "水库基本信息-设计图纸和资料"), - SFT099("99", ""); - - - private String name; - private String value; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - private SysFileType(String name, String value) { - this.name = name; - this.value = value; - } - - public static Map map() { - Map map = new HashMap<>(); - SysFileType[] values = SysFileType.values(); - for (SysFileType e : values) { - map.put(e.getValue(), e); - } - return map; - } - - public static Map mapName() { - Map map = new HashMap<>(); - SysFileType[] values = SysFileType.values(); - for (SysFileType e : values) { - map.put(e.getName(), e); - } - return map; - } - - public static SysFileType getByValue(String value) { - if (Objects.isNull(value)) return null; - return map().get(value); - } - - public static SysFileType getByName(String name) { - if (StringUtils.isEmpty(name)) return null; - return mapName().get(name); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/enums/WarningTypeEnum.java b/src/main/java/com/gunshi/project/hsz/entity/enums/WarningTypeEnum.java deleted file mode 100644 index 97b9f95..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/enums/WarningTypeEnum.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.entity.enums; - -import lombok.Getter; - -@Getter -public enum WarningTypeEnum { - - FLOOD("FLOOD", "洪水预警"), - DROUGHT("DROUGHT", "干旱预警"); - - private final String code; - private final String description; - - WarningTypeEnum(String code, String description) { - this.code = code; - this.description = description; - } - - public static WarningTypeEnum getByCode(String code) { - for (WarningTypeEnum type : values()) { - if (type.getCode().equals(code)) { - return type; - } - } - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/AlarmSetPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/AlarmSetPageSo.java deleted file mode 100644 index 01ea8f5..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/AlarmSetPageSo.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class AlarmSetPageSo { - - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "测点编号") - private String stcd; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/AssessTaskPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/AssessTaskPageSo.java deleted file mode 100644 index a416f33..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/AssessTaskPageSo.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "考核任务分页查询对象") -public class AssessTaskPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="时段") - private DateRangeSo dateRangeSo; - - @Schema(description="考核任务名称") - private String taskName; - - @Schema(description="任务状态(0未启动 1评分中 2审核中 3已审核 5已作废);整改状态(0未整改 1已整改)") - private Integer status; - - @Schema(description="当前登录人id") - private Long userId; - - @Schema(description="整改对象") - private String objectUserName; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/AttCctvBasePage.java b/src/main/java/com/gunshi/project/hsz/entity/so/AttCctvBasePage.java deleted file mode 100644 index 12e667b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/AttCctvBasePage.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/17. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class AttCctvBasePage extends GeneralDataPage{ - - /** - * menu_id - */ - @Schema(description="menu_id") - private Long menuId; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/BroadcastWarnPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/BroadcastWarnPageSo.java deleted file mode 100644 index 65e1c3a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/BroadcastWarnPageSo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "广播告警分页查询对象") -public class BroadcastWarnPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="时段") - private DateTimeRangeSo timeRangeSo; - - @Schema(description="站点id") - private Long stationId; - - @Schema(description="告警内容") - private String warnContent; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ByLogPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ByLogPageSo.java deleted file mode 100644 index 6fff99b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ByLogPageSo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class ByLogPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="防治日期时段") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description = "日志名称") - private String logNmae; - - @Schema(description = "防治部位") - private String preDetailName; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ByPlanPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ByPlanPageSo.java deleted file mode 100644 index b743431..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ByPlanPageSo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class ByPlanPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - - @Schema(description = "计划名称") - private String planName; - - @Schema(description = "防治部位") - private String preDetailName; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/CommonDataPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/CommonDataPageSo.java deleted file mode 100644 index 6e4a0f6..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/CommonDataPageSo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "分页查询对象") -public class CommonDataPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="名称") - private String name; - - @Schema(description = "时间范围") - private DateRangeSo dateSo; - - @Schema(description = "类型(1大事记 2调度记录 3维修养护 4安全鉴定 5除险加固 6白蚁普查)") - private List types; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/CommonDataPageSo2.java b/src/main/java/com/gunshi/project/hsz/entity/so/CommonDataPageSo2.java deleted file mode 100644 index 214d91e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/CommonDataPageSo2.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "分页查询对象") -public class CommonDataPageSo2 { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="名称") - private String name; - - @Schema(description = "时间范围") - private DateTimeRangeSo dateSo; - - @Schema(description = "类型(1大事记 2调度记录 3维修养护 4安全鉴定 5除险加固 6白蚁普查)") - private List types; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/DataQueryCommonSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/DataQueryCommonSo.java deleted file mode 100644 index 0540e52..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/DataQueryCommonSo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.Pattern; -import lombok.Data; - -/** - * - * Created by wanyan on 2024/2/2. - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "查询条件") -public class DataQueryCommonSo { - - @Schema(description="测站编码") - @NotEmpty(message = "测站编码不可为空") - private String stcd; - - @Schema(description = "开始时间") - @NotEmpty(message = "开始时间不能为空") - @Pattern(regexp = "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "时间格式应为:yyyy-MM-dd HH:mm:ss") - private String stm; - - @Schema(description = "结束时间") - @NotEmpty(message = "结束时间不能为空") - @Pattern(regexp = "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "时间格式应为:yyyy-MM-dd HH:mm:ss") - private String etm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/DispatchRecordPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/DispatchRecordPageSo.java deleted file mode 100644 index abba89f..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/DispatchRecordPageSo.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "分页查询对象") -public class DispatchRecordPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="操作人名称") - private String opUserName; - - @Schema(description = "时间范围") - private DateTimeRangeSo dateTimeSo; - - @Schema(description="状态(0执行中 1完成)") - private Integer status; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ForecastDispatchPlanPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ForecastDispatchPlanPageSo.java deleted file mode 100644 index 4651b0a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ForecastDispatchPlanPageSo.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class ForecastDispatchPlanPageSo { - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - - private String planName; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/GateHisPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/GateHisPageSo.java deleted file mode 100644 index 9effdc2..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/GateHisPageSo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "开关历史分页查询对象") -public class GateHisPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="时段") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description="闸阀ID") - @NotEmpty(message = "闸阀代码不可为空") - private String valveCode; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/GateValveCctvRelPage.java b/src/main/java/com/gunshi/project/hsz/entity/so/GateValveCctvRelPage.java deleted file mode 100644 index 90c9a2f..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/GateValveCctvRelPage.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/19. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class GateValveCctvRelPage extends GenericPageParams { - - /** - * 闸阀编号 - */ - @Schema(description="闸阀编号名称") - private String valveName; - - /** - * 视频点 - */ - @Schema(description="视频点名称") - private String indexName; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/GeneralDataPage.java b/src/main/java/com/gunshi/project/hsz/entity/so/GeneralDataPage.java deleted file mode 100644 index 39f4945..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/GeneralDataPage.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: 数据通用查询 - * Created by XuSan on 2024/7/17. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class GeneralDataPage extends GenericPageParams { - - /** - * 代码 - */ - @Schema(description="代码") - private String code; - - /** - * 名称 - */ - @Schema(description="名称") - private String name; - - /** - * 类型 - */ - @Schema(description="类型") - private String type; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/HisWaterDataPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/HisWaterDataPageSo.java deleted file mode 100644 index ef40f92..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/HisWaterDataPageSo.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class HisWaterDataPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/HomeStStbprpBSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/HomeStStbprpBSo.java deleted file mode 100644 index 0e5a99e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/HomeStStbprpBSo.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; - - -/** - * TODO - * - * @ClassName StPptnSo - * @Author Huang Qianxiang - * @Date 2024/2/21 14:20 - */ -@Data -@Schema(description = "首页站点查询参数") -public class HomeStStbprpBSo { - - - /** - * 开始时间 - */ - @Schema(description = "开始时间") - @NotNull(message = "开始时间不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date stm; - - /** - * 结束时间 - */ - @Schema(description="结束时间") - @NotNull(message = "结束时间不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date etm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ISCAIEventPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ISCAIEventPageSo.java deleted file mode 100644 index f0939cc..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ISCAIEventPageSo.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.time.LocalDateTime; - -@Data -@Schema(description = "海康AI事件分页Dto") -public class ISCAIEventPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @Schema(description = "开始时间") - private LocalDateTime startTime; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @Schema(description = "结束时间") - private LocalDateTime endTime; - - - /* - 事件等级,1-低,2-中,3-高 - */ - @Schema(description = "事件等级 1-低,2-中,3-高") - private Integer eventLevel; - - - /* - 事件处理状态,0-未处理,1-已处理 - */ - @Schema(description = "事件处理状态 0-未处理,1-已处理") - private Integer handleStatus; - - - /* - 事件类型名称 - */ - @Schema(description = "事件类型名称") - private String eventTypeName; - - /* - 事件源名称 - */ - @Schema(description = "事件源名称") - private String resName; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/IcWaterForecastPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/IcWaterForecastPageSo.java deleted file mode 100644 index 9cba297..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/IcWaterForecastPageSo.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.time.LocalDateTime; - -@Data -public class IcWaterForecastPageSo { - - private String planName; - - private Integer type; - - private DateTimeRangeSo dateTimeRangeSo; - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ImgWarnPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ImgWarnPageSo.java deleted file mode 100644 index 4c2b06e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ImgWarnPageSo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "AI告警分页查询对象") -public class ImgWarnPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "告警时间") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description="index_code") - private String indexCode; - - @Schema(description="告警类型(1人员闯入 2工程车辆识别 3漂浮物识别 4游泳识别)") - private Integer type; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/InspectProblemPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/InspectProblemPageSo.java deleted file mode 100644 index 7ae8a87..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/InspectProblemPageSo.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "分页查询对象") -public class InspectProblemPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="巡查人id") - @NotNull(message = "巡查人id不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long inspectUserId; - - @Schema(description="是否处理(0否 1是)") - private Integer isHandle; - - @Schema(description = "时间范围") - private DateTimeRangeSo dateTimeRangeSo; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/InspectTaskPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/InspectTaskPageSo.java deleted file mode 100644 index c9cabbd..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/InspectTaskPageSo.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "分页查询对象") -public class InspectTaskPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="创建人id") - @NotNull(message = "创建人id不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long createUserId; - - @Schema(description="状态(0未完成 1进行中 2已完成)") - private Integer status; - - @Schema(description="任务类型(1日常巡查 2特别检查 3汛前巡检)") - private Integer taskType; - - @Schema(description = "时间范围") - private DateTimeRangeSo dateTimeRangeSo; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/InspectTaskSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/InspectTaskSo.java deleted file mode 100644 index 7438a8b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/InspectTaskSo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.db.dto.DateRangeSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "巡检任务查询对象") -public class InspectTaskSo { - - - @Schema(description="巡查人id") - @NotNull(message = "巡查人id不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long inspectUserId; - - @Schema(description = "时间范围") - private DateRangeSo dateRangeSo; - - @Schema(description = "状态") - private List statusList; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/MaintainPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/MaintainPageSo.java deleted file mode 100644 index 5d76eb6..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/MaintainPageSo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "分页查询对象") -public class MaintainPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="管护类型(1溢洪道淸障 2除草除杂 3设备养护 4环境清洁 5危险提示 6其他)") - private Integer maintainType; - - @Schema(description = "时间范围") - private DateTimeRangeSo dateTimeSo; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/MentenceFarmerRecordPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/MentenceFarmerRecordPageSo.java deleted file mode 100644 index b3d7c8e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/MentenceFarmerRecordPageSo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class MentenceFarmerRecordPageSo { - - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "维护对象主键ID") - @JsonSerialize(using = ToStringSerializer.class) - private Long mentenceStId; - - @Schema(description = "维护项目Id") - @JsonSerialize(using = ToStringSerializer.class) - private Long mentenceStDetailId; - - @Schema(description = "状态") - private Integer status; - - @Schema(description = "时间范围") - private DateTimeRangeSo dateTimeSo; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/MentencePlanPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/MentencePlanPageSo.java deleted file mode 100644 index bc8ed88..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/MentencePlanPageSo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.bouncycastle.cert.dane.DANEEntry; - - -@Data -@Schema(description = "分页查询对象") -public class MentencePlanPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "年度") - private String year; - - - @Schema(description = "计划名称") - private String planName; - - @Schema(description = "审批状态 0 待审批 1 未通过 2 已通过 ") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/MentenceStPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/MentenceStPageSo.java deleted file mode 100644 index ca1ce17..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/MentenceStPageSo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class MentenceStPageSo { - - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "维护标注名称") - private String stName; - - @Schema(description = "维护项目名称") - private String stDetailName; - - @Schema(description = "维护对象id") - @JsonSerialize(using = ToStringSerializer.class) - private Long stId; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/MentenceTemplatePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/MentenceTemplatePageSo.java deleted file mode 100644 index 7891e82..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/MentenceTemplatePageSo.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.bouncycastle.cert.dane.DANEEntry; - -@Data -public class MentenceTemplatePageSo { - - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "模板名称") - private String name; - - @Schema(description = "模板类型") - private Integer type; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/MessageCenterPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/MessageCenterPageSo.java deleted file mode 100644 index 207ad41..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/MessageCenterPageSo.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "消息中心分页查询对象") -public class MessageCenterPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="主题") - private String title; - - @Schema(description="发布人名字") - private String publishUserName; - - @Schema(description="接收人id") - @NotNull(message = "接收人id不可为空") - private Long receiveUserId; - - @Schema(description="是否已读(0否 1是)") - @NotNull(message = "是否已读不可为空") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/PersonnelPlanLogPage.java b/src/main/java/com/gunshi/project/hsz/entity/so/PersonnelPlanLogPage.java deleted file mode 100644 index a33cf23..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/PersonnelPlanLogPage.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class PersonnelPlanLogPage extends GenericPageParams { - - - /** - * 名字 - */ - @Schema(description="培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") - private Integer type; - - /** - * 参训人员 - */ - @Schema(description="参训人员") - private String trainees; - - /** - * 主办单位 - */ - @Schema(description="主办单位") - private String unit; - - /** - * 培训计划 - */ - @Schema(description="培训计划id") - private Long planId; - - /** - * 开始培训时间 - */ - @Schema(description="培训日期开始时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date stm; - - /** - * 结束培训时间 - */ - @Schema(description="培训日期结束时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date etm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/PersonnelPlanPage.java b/src/main/java/com/gunshi/project/hsz/entity/so/PersonnelPlanPage.java deleted file mode 100644 index 9a43a93..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/PersonnelPlanPage.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class PersonnelPlanPage extends GenericPageParams { - - /** - * 联系方式 - */ - @Schema(description="填报人") - private String applicant; - - /** - * 名字 - */ - @Schema(description="培训班名称") - private String name; - - /** - * 开始培训时间 - */ - @Schema(description="开始培训时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date stm; - - /** - * 结束培训时间 - */ - @Schema(description="结束培训时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date etm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/PicQuerySo.java b/src/main/java/com/gunshi/project/hsz/entity/so/PicQuerySo.java deleted file mode 100644 index 6406040..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/PicQuerySo.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.Pattern; -import lombok.Data; - -/** - * - * Created by wanyan on 2024/2/2. - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "查询条件") -public class PicQuerySo { - - @Schema(description="水库编码") - private String resCode; - - @Schema(description="测站编码") - private String stcd; - - @Schema(description = "开始时间") - @NotEmpty(message = "开始时间不能为空") - @Pattern(regexp = "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "时间格式应为:yyyy-MM-dd HH:mm:ss") - private String stm; - - @Schema(description = "结束时间") - @NotEmpty(message = "结束时间不能为空") - @Pattern(regexp = "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "时间格式应为:yyyy-MM-dd HH:mm:ss") - private String etm; - - @Schema(description="分页参数") - private PageSo pageSo; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/PrePlacePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/PrePlacePageSo.java deleted file mode 100644 index 3738b68..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/PrePlacePageSo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.bouncycastle.cert.dane.DANEEntry; - -@Data -public class PrePlacePageSo { - - - @Schema(description = "分页参数") - private PageSo pageSo; - - private String preName; - - private String preDetailName; - - private String preId; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RainfallAnalysisSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RainfallAnalysisSo.java deleted file mode 100644 index 8f1b3e3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RainfallAnalysisSo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.util.List; - -/** - * TODO - * - * @ClassName RainfallAnalysisSo - * @Author Huang Qianxiang - * @Date 2024/3/12 16:33 - */ -@Data -public class RainfallAnalysisSo { - - @Schema(description="频率统计中时间段范围类型 1:1小时 3:3小时 6:6小时 12:12小时 24:24小时") - private Integer timeType; - - @Schema(description="来源 只能是SH SW SK QX这4种") - @Size(min = 1, message = "来源不能为空") - private List source; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RealRainBaseSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RealRainBaseSo.java deleted file mode 100644 index 3acef19..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RealRainBaseSo.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.util.List; - - -@Data -public class RealRainBaseSo { - @Schema(description="开始时间 格式:yyyy-MM-dd HH:mm:ss") - @NotBlank(message = "开始时间不能为空") - private String stm; - - @Schema(description="结束时间 格式:yyyy-MM-dd HH:mm:ss") - @NotBlank(message = "结束时间不能为空") - private String etm; - - @Schema(description="行政区划15位") - private String adcd; - - @Schema(description="流域编码") - private String basCode; - - @Schema(description="来源 只能是SH SW SK QX这4种") - @Size(min = 1, message = "来源不能为空") - private List source; - - @Schema(description="查询类型 1:量级统计 2:频率统计 3:流域降雨 4:区域降雨") - private Integer queryType; - - @Schema(description="频率统计中时间段范围类型 1:1小时 3:3小时 6:6小时 12:12小时 24:24小时") - private Integer timeType; - - @Schema(description = "站点模糊查询参数") - private String stArg; - - @Schema(description="APP中雨情排序 1:按昨日降雨降序 2:按时段雨量降序") - private Integer orderType = 2; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ResCodeSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ResCodeSo.java deleted file mode 100644 index 462476e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ResCodeSo.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; - -/** - * Description: - * Created by XuSan on 2024/7/15. - * - * @author XuSan - * @version 1.0 - */ -@Data -@Schema(description = "水库代码查询对象") -public class ResCodeSo { - - - /** - * 水库代码 - */ - @Schema(description="水库代码") - @NotBlank(message = "水库代码不能为空") - private String resCode; - - /** - * 水库代码 - */ - @Schema(description="类型(1防汛预案 2调度规程)") - private String type; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ResMonthEcoFlowListSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ResMonthEcoFlowListSo.java deleted file mode 100644 index c1c29e3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ResMonthEcoFlowListSo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by XuSan on 2024/7/15. - * - * @author XuSan - * @version 1.0 - */ -@Data -@Schema(description = "水库月核定生态流量列表查询对象") -public class ResMonthEcoFlowListSo { - - @NotNull(message = "年度不能为空") - @Schema(description = "年度") - private Integer year; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ResPersonPage.java b/src/main/java/com/gunshi/project/hsz/entity/so/ResPersonPage.java deleted file mode 100644 index 0fcfc2b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ResPersonPage.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/17. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class ResPersonPage extends GenericPageParams { - - - /** - * 联系方式 - */ - @Schema(description="联系方式") - private String contactInfo; - - /** - * 名字 - */ - @Schema(description="名字") - private String name; - - /** - * 类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术 - */ - @Schema(description="类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术") - private Integer type; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RescueGoodsPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RescueGoodsPageSo.java deleted file mode 100644 index 169b2cf..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RescueGoodsPageSo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "抢险物资分页查询对象") -public class RescueGoodsPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="物资名称") - private String goodsName; - - @Schema(description = "排序字段") - private String sortField; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RescueTeamPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RescueTeamPageSo.java deleted file mode 100644 index e8fd8a6..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RescueTeamPageSo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "抢险队伍分页查询对象") -public class RescueTeamPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="队伍名称") - private String teamName; - - @Schema(description = "时间范围") - private DateRangeSo dateSo; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ReservoirWaterCommonSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ReservoirWaterCommonSo.java deleted file mode 100644 index b5eeb36..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ReservoirWaterCommonSo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; - -/** - * - * Created by wanyan on 2024/2/2. - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "水库代码查询条件") -public class ReservoirWaterCommonSo { - - @Schema(description="水库代码") - @NotEmpty(message = "水库代码不可为空") - private String resCode; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RiceRqWaterPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RiceRqWaterPageSo.java deleted file mode 100644 index 88f975f..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RiceRqWaterPageSo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - - -@Data -public class RiceRqWaterPageSo { - - - private PageSo pageSo; - - //方案名称 - private String planName; - - - //相似年 - private Integer year; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculateIcPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculateIcPageSo.java deleted file mode 100644 index 38fd0b7..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculateIcPageSo.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.dto.PageSo; -import lombok.Data; - -import java.time.LocalDateTime; - -@Data -public class RiceSupportBalanceCaculateIcPageSo { - - - private PageSo pageSo; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; // 开始时间 - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; // 结束时间 - - private String icplanName; // 计划名称 - - private Integer type; // 类型 0 长期 1短期 -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculatePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculatePageSo.java deleted file mode 100644 index f55386b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculatePageSo.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.dto.PageSo; -import lombok.Data; - -import java.time.LocalDateTime; - -@Data -public class RiceSupportBalanceCaculatePageSo { - - - private PageSo pageSo; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; // 开始时间 - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; // 结束时间 - - private String planName; // 计划名称 - - private Integer type; // 类型 0 长期 1短期 -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculateRcPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculateRcPageSo.java deleted file mode 100644 index a25dd3b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RiceSupportBalanceCaculateRcPageSo.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.dto.PageSo; -import lombok.Data; - -import java.time.LocalDateTime; - -@Data -public class RiceSupportBalanceCaculateRcPageSo { - - - private PageSo pageSo; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; // 开始时间 - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; // 结束时间 - - private String rcplanName; // 计划名称 - - private Integer type; // 类型 0 长期 1短期 -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/RotaLogPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/RotaLogPageSo.java deleted file mode 100644 index ff5e5c0..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/RotaLogPageSo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "值班日志分页查询对象") -public class RotaLogPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "时间范围") - private DateRangeSo dateSo; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/ShortWeatherSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/ShortWeatherSo.java deleted file mode 100644 index 96ddace..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/ShortWeatherSo.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.Pattern; -import lombok.Data; - - -@Data -public class ShortWeatherSo { - - - @Schema(description = "时间点(格式YYYYMMDDHHmm,mm只能取00和30)", example = "202402251100") - @NotEmpty(message = "时间点不能为空") - @Pattern(regexp = "^20[0-9]{6}[0-2][0-9]00|20[0-9]{6}[0-2][0-9]30", message = "时间格式应为:YYYYMMDDHHmm其中mm只能取00和30") - private String tm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/SoilMoisturePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/SoilMoisturePageSo.java deleted file mode 100644 index 9d8abf4..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/SoilMoisturePageSo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * - */ -@Data -@Schema(description = "考核任务分页查询对象") -public class SoilMoisturePageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="时段") - private DateRangeSo dateRangeSo; - - - @Schema(description="stcd") - private String stcd; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/StPptnSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/StPptnSo.java deleted file mode 100644 index 42db207..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/StPptnSo.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - - -/** - * TODO - * - * @ClassName StPptnSo - * @Author Huang Qianxiang - * @Date 2024/2/21 14:20 - */ -@Data -@Schema(description = "雨量站降雨量查询参数") -public class StPptnSo { - - - /** - * 测站名称 - */ - @Schema(description = "测站名称") - private String stnm; - - /** - * 时间段 - */ - @Schema(description = "时间段") - private Integer timeQuantum; - - /** - * 测站编码 - */ - @Schema(description="测站编码") - private String stcd; - - /** - * 选择的起始时间 - */ - @Schema(description = "选择的起始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date startTime; - - /** - * 选择的结束时间 - */ - @Schema(description = "选择的结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date endTime; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/StStbprpBPage.java b/src/main/java/com/gunshi/project/hsz/entity/so/StStbprpBPage.java deleted file mode 100644 index 2b84983..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/StStbprpBPage.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/17. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class StStbprpBPage extends GeneralDataPage{ - /** - * 归属协议 - */ - @Schema(description="归属协议") - private String agreement; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/StStbprpBSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/StStbprpBSo.java deleted file mode 100644 index 04f72cf..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/StStbprpBSo.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - - -/** - * TODO - * - * @ClassName StPptnSo - * @Author Huang Qianxiang - * @Date 2024/2/21 14:20 - */ -@Data -@Schema(description = "站点查询参数") -public class StStbprpBSo { - - - /** - * 测站名称 - */ - @Schema(description = "测站名称") - private String stnm; - - /** - * 测站编码 - */ - @Schema(description="测站编码") - private String stcd; - - /** - * 河流名称 - */ - @Schema(description="河流名称") - private String rvnm; - - /** - * 水系名称 - */ - @Schema(description="水系名称") - private String hnnm; - - /** - * 流域名称 - */ - @Schema(description="流域名称") - private String bsnm; - - - /** - * 站类,PP=雨量站,RR=水库水位站,ZQ=河道水位站,TX=图像站 - */ - @Schema(description="站类,PP=雨量站,RR=水库水位站,ZQ=河道水位站,TX=图像站") - private String sttp; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/StatisticsQuerySo.java b/src/main/java/com/gunshi/project/hsz/entity/so/StatisticsQuerySo.java deleted file mode 100644 index eeb8c87..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/StatisticsQuerySo.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "报表统计查询对象") -public class StatisticsQuerySo { - - @Schema(description="年份") - private Integer year; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/SyDataCheckRulePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/SyDataCheckRulePageSo.java deleted file mode 100644 index 0f2e1c3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/SyDataCheckRulePageSo.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class SyDataCheckRulePageSo { - - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - private String dvcd; - - private String dm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/SzCasePage.java b/src/main/java/com/gunshi/project/hsz/entity/so/SzCasePage.java deleted file mode 100644 index ad9f9c8..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/SzCasePage.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class SzCasePage extends GenericPageParams { - - @Schema(description="案件类型 0:违建,1:毁林垦荒,2:筑坝拦汊,3:填占库容,4:违法取水,5:其他") - private Integer caseType; - - @Schema(description="案件名称") - private String caseName; - - @Schema(description="案件编号") - private String caseId; - - @Schema(description="开始时间 格式:yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date stm; - - @Schema(description="结束时间 格式:yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date etm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/SzRegulatoryFrameworkPage.java b/src/main/java/com/gunshi/project/hsz/entity/so/SzRegulatoryFrameworkPage.java deleted file mode 100644 index c65db88..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/SzRegulatoryFrameworkPage.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class SzRegulatoryFrameworkPage extends GenericPageParams { - - @Schema(description="制度类型 0:党支部工作制度,1:行政工作制度,2:部门工作制度,3:安全管理制度,4:工程管理制度,5:技术规程,6:岗位责任制") - private Integer type; - - @Schema(description="标题") - private String name; - - @Schema(description="发布单位") - private String fillUnit; - - @Schema(description="开始时间 格式:yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date stm; - - @Schema(description="结束时间 格式:yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date etm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/SzRuleByLawPage.java b/src/main/java/com/gunshi/project/hsz/entity/so/SzRuleByLawPage.java deleted file mode 100644 index 42156fa..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/SzRuleByLawPage.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class SzRuleByLawPage extends GenericPageParams { - - @Schema(description="法律性质 0:宪法,1:法律,2:行政法规,3:督察法规,4:司法解释,5:地方性法规") - private Integer type; - - @Schema(description="标题") - private String name; - - @Schema(description="制定机关") - private String fillUnit; - - - /** - * 公布日期开始时间 - */ - @Schema(description="公布日期开始时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date stmAd; - - /** - * 公布日期结束时间 - */ - @Schema(description="公布日期结束时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date etmAd; - - - /** - * 施行日期开始时间 - */ - @Schema(description="施行日期开始时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date stmIm; - - /** - * 施行日期结束时间 - */ - @Schema(description="施行日期结束时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date etmIm; - - - /** - * 上传时间开始时间 - */ - @Schema(description="上传时间开始时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date stmUd; - - /** - * 施行日期结束时间 - */ - @Schema(description="施行日期结束时间 格式:yyyy-MM-dd") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date etmUd; - - - /** - * 时效性 - */ - @Schema(description="时效性 0:尚未生效,1:有效,2:已修改,3:已废止") - private Integer timeliness; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/TermiteSurveyPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/TermiteSurveyPageSo.java deleted file mode 100644 index 7d7fcc0..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/TermiteSurveyPageSo.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.sql.Date; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "白蚁普查分页查询对象") -public class TermiteSurveyPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="年份") - private String year; - - @Schema(description="危害情况(0无危害 1有危害)") - private Integer isHarm; - - @Schema(description = "监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date searchDate; - - @Schema(description = "监测点") - private String pileNumber; - - @Schema(description="普查类型(1日常检查排查 2定期普查 3专项调查)") - private Integer surveyType; - - @Schema(description="普查方式(1人工排查法 2引诱法 3仪器探测法 4其它)") - private Integer surveyWay; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/TyYearRainfallPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/TyYearRainfallPageSo.java deleted file mode 100644 index e4049f9..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/TyYearRainfallPageSo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "典型年降雨分页查询对象") -public class TyYearRainfallPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="丰平枯(1枯 2偏枯 3平 4偏丰 5丰)") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WarnPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WarnPageSo.java deleted file mode 100644 index d0b3c5c..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WarnPageSo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -@Schema(description = "隐患预警分页查询对象") -public class WarnPageSo extends WarnSo{ - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WarnRulePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WarnRulePageSo.java deleted file mode 100644 index 507235b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WarnRulePageSo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "预警规则配置分页查询对象") -public class WarnRulePageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="告警类型(1渗压监测 2渗流监测 3位移监测)") - private Integer type; - - @Schema(description="测点编号") - private String stationCode; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WarnSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WarnSo.java deleted file mode 100644 index b9bda01..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WarnSo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.DateTimeRangeSo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "隐患预警查询对象") -public class WarnSo { - - @Schema(description = "时间段") - private DateTimeRangeSo dateTimeRangeSo; - - @Schema(description="告警类型(1渗压监测 2渗流监测 3位移监测)") - private Integer type; - - @Schema(description="测点编号") - private String stationCode; - - @Schema(description="告警级别(1黄色 2红色)") - private Integer level; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WarningRulePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WarningRulePageSo.java deleted file mode 100644 index 350b632..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WarningRulePageSo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class WarningRulePageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - private String ruleName; - - private String warningType; - - private DateTimeRangeSo dateTimeRangeSo; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WaterAlarmPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WaterAlarmPageSo.java deleted file mode 100644 index 5674c45..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WaterAlarmPageSo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class WaterAlarmPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "测点编号") - private String stcd; - - @Schema(description = "告警类型") - private Integer type; - - @Schema(description = "测点名称") - private String name; - - @Schema(description="告警时间段") - private DateTimeRangeSo timeRangeSo; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WaterCommonSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WaterCommonSo.java deleted file mode 100644 index 1b7261c..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WaterCommonSo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -/** - * 水情查询条件 - * Created by wanyan on 2024/3/11 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class WaterCommonSo { - - @Schema(description ="来源") - private List sources; - - @Schema(description ="站点名称或编码") - private String args; - - @Schema(description ="行政区划编码(仅APP乡镇用户需要传参)") - private String adcd; - - @Schema(description ="预警类型(仅APP需要传参,水库(1超校核 2超设计 3超讯限) 河道(1超危险 2超警戒))") - private List types; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WaterDevicePageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WaterDevicePageSo.java deleted file mode 100644 index 21aba2d..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WaterDevicePageSo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@Schema(description = "分页查询对象") -public class WaterDevicePageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - - @Schema(description = "设备编码") - private String code; - - @Schema(description = "设备名称") - private String name; - - @Schema(description = "接入站点编码") - private String mnNo; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WaterDispatchPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WaterDispatchPageSo.java deleted file mode 100644 index 3666d4a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WaterDispatchPageSo.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class WaterDispatchPageSo { - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description = "调度名称") - private String name; - - @Schema(description = "执行状态") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/WeatherSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/WeatherSo.java deleted file mode 100644 index 6293034..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/WeatherSo.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.Pattern; -import lombok.Data; - - -@Data -public class WeatherSo { - - - @Schema(description = "时间点(tm格式YYYYMMDDHH,HH只能取08和20)",example = "2023062908") - @NotEmpty(message = "时间点不能为空") - @Pattern(regexp = "^20[0-9]{6}08|20[0-9]{6}20", message = "时间格式应为:YYYYMMDDHH其中HH只能为08或20") - private String tm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/so/XlPlanPageSo.java b/src/main/java/com/gunshi/project/hsz/entity/so/XlPlanPageSo.java deleted file mode 100644 index ea9631d..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/so/XlPlanPageSo.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.entity.so; - -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -public class XlPlanPageSo { - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - - @Schema(description = "计划名称") - private String name; - - @Schema(description = "计划类型") - private Integer type; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AiWarningVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AiWarningVo.java deleted file mode 100644 index a4c22e8..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AiWarningVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class AiWarningVo { - - @Schema(description = "视频点名称") - private String stnm; - - @Schema(description = "告警时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime warningTime; - - private BigDecimal lgtd; - - private BigDecimal lttd; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ApiVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ApiVo.java deleted file mode 100644 index 9b86fc9..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ApiVo.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class ApiVo { - - @Schema(description = "开始时间, 格式应为:yyyy-MM-dd HH:mm:ss", example = "2023-06-15 08:00:00") - private String startTime; - - @Schema(description = "结束时间, 格式应为:yyyy-MM-dd HH:mm:ss", example = "2023-06-15 08:00:00") - private String endTime; - - @Schema(description = "页数", example = "1") - private Integer pageNumber = 1; - - @Schema(description = "条数", example = "10") - private Integer pageSize = 10; - - @Schema(description = "过滤条件", example = "[]") - private List filter; - - @AllArgsConstructor - @NoArgsConstructor - @Data - public static class Filter { - - @Schema(description = "查询列名 publishUnit:发布单位,warnSignalType:类型,warnSignalLevel:级别", example = "publishUnit") - private String name; - - @Schema(description = "查询类型", example = "like") - private String condition; - - @Schema(description = "值", example = "%1%") - private String description; - - } -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AssessRatingVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AssessRatingVo.java deleted file mode 100644 index a37a0a4..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AssessRatingVo.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.model.AssessIndicatorRating; -import com.gunshi.project.hsz.model.AssessTeamRating; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -@Data -public class AssessRatingVo extends AssessTeamRating { - - @Schema(description="考核类目id") - @JsonSerialize(using = ToStringSerializer.class) - private Long categoryId; - - @Schema(description="考核类目名称") - private String name; - - @Schema(description="指标名称") - private String indicatorName; - - @Schema(description="标准分数") - private Integer standardScore; - - @Schema(description="指标得分") - private BigDecimal indicatorScore; - - @Schema(description="考核成员id") - @JsonSerialize(using = ToStringSerializer.class) - private Long teamUserId; - - @Schema(description="考核成员") - private String teamUserName; - - @Schema(description = "评分细则") - private List indicatorRatings; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AssessRectifyVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AssessRectifyVo.java deleted file mode 100644 index 498b75e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AssessRectifyVo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.model.AssessTeamRating; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class AssessRectifyVo extends AssessTeamRating { - - @Schema(description="考核类目id") - @JsonSerialize(using = ToStringSerializer.class) - private Long categoryId; - - @Schema(description="考核类目名称") - private String name; - - @Schema(description="指标名称") - private String indicatorName; - - @Schema(description="任务名称") - private String taskName; - - @Schema(description="考核对象id") - @JsonSerialize(using = ToStringSerializer.class) - private Long objectUserId; - - @Schema(description="考核对象") - private String objectUserName; - - @Schema(description="考核等级(1优秀 2良好 3合格)") - private Integer assessLevel; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AssessResultVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AssessResultVo.java deleted file mode 100644 index 37408d6..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AssessResultVo.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnore; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -@ExcelIgnoreUnannotated -public class AssessResultVo { - - @ExcelProperty({"考核对象"}) - @ColumnWidth(15) - private String objectUserName; - - @ExcelProperty({"考核类目"}) - @ColumnWidth(15) - private String categoryName; - - @ExcelProperty({"指标名称"}) - @ColumnWidth(15) - private String indicatorName; - - @ExcelProperty({"扣分"}) - private BigDecimal deductScore; - - @ExcelProperty({"考核得分"}) - @ColumnWidth(15) - private BigDecimal resScore; - - - @ExcelIgnore - @JsonSerialize(using = ToStringSerializer.class) - private Long objectId; - - @ExcelIgnore - @JsonSerialize(using = ToStringSerializer.class) - private Long indicatorId; - - @ExcelIgnore - private Integer standardScore; - - @ExcelIgnore - private BigDecimal assessScore; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AssessScoreVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AssessScoreVo.java deleted file mode 100644 index 2830ac3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AssessScoreVo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.AssessTeamRating; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -@Data -public class AssessScoreVo { - - @Schema(description="任务Id") - private Long taskId; - - @Schema(description="总分") - private BigDecimal score; - - @Schema(description="评分信息") - private List ratings; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AttResBaseVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AttResBaseVo.java deleted file mode 100644 index b438484..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AttResBaseVo.java +++ /dev/null @@ -1,250 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * 水库水情 - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class AttResBaseVo { - - /** - * 测站编码 - */ - @Schema(description = "测站编码") - private String stcd; - - /** - * 测站名称 - */ - @Schema(description = "测站名称") - private String stnm; - - /** - * 站类 - */ - @Schema(description = "站类(RR水库水文站 ZQ,ZP河道水文站)") - private String sttp; - - /** - * 来源 - */ - @Schema(description = "来源") - private String source; - - /** - * 水库代码 - */ - @Schema(description = "水库代码") - private String resCode; - - /** - * 经度 - */ - @Schema(description = "经度") - private BigDecimal lgtd; - - /** - * 纬度 - */ - @Schema(description = "纬度") - private BigDecimal lttd; - - /** - * 行政区划代码 - */ - @Schema(description="行政区划代码") - private String adcd; - - /** - * 行政区划名称 - */ - @Schema(description="行政区划名称") - private String adnm; - - /** - * 站址 - */ - @Schema(description="站址") - private String stlc; - - - /** - * 主汛期防洪限制水位 - */ - @Schema(description = "主汛期防洪限制水位") - private BigDecimal flLowLimLev; - - /** - * 总库容 - */ - @Schema(description = "总库容") - private BigDecimal totCap; - - /** - * 流域名称 - */ - @Schema(description="流域名称") - private String lyname; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 监测水位 - */ - @Schema(description="监测水位") - private BigDecimal rz; - - @Schema(description="坝址控制流域面积") - private BigDecimal watShedArea; - - /** - * 超讯限 - */ - @Schema(description="超讯限") - private BigDecimal aFsltdz; - - /** - * 水位涨跌情况 - */ - @Schema(description="水位涨跌情况(0无变化 1涨 2跌)") - private Integer state; - - /** - * 设计洪水位 - */ - @Schema(description="设计洪水位") - private BigDecimal desFloodLev; - - /** - * 校核洪水位 - */ - @Schema(description = "校核洪水位") - private BigDecimal calFloodLev; - - - /** - * 正常蓄水位 - */ - @Schema(description = "正常蓄水位") - private BigDecimal normWatLev; - - - /** - * 死水位 - */ - @Schema(description = "死水位") - private BigDecimal deadLev; - - - /** - * 坝顶高程 - */ - @Schema(description = "坝顶高程") - private BigDecimal crestElev; - - @Schema(description="死库容") - private BigDecimal deadCap; - - /** - * 兴利库容 - */ - @Schema(description = "兴利库容") - private BigDecimal benResCap; - - /** - * 水库当前库容 - */ - @Schema(description = "水库当前库容") - private BigDecimal nowCap; - - - /** - * 雨量时间 - */ - @Schema(description="雨量时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date drpTm; - - /** - * 小时雨量 - */ - @Schema(description="小时雨量") - private BigDecimal h1; - - /** - * 3小时雨量 - */ - @Schema(description="3小时雨量") - private BigDecimal h3; - - /** - * 6小时雨量 - */ - @Schema(description="6小时雨量") - private BigDecimal h6; - - /** - * 12小时雨量 - */ - @Schema(description="12小时雨量") - private BigDecimal h12; - - - /** - * 24小时雨量 - */ - @Schema(description="24小时雨量") - private BigDecimal h24; - - /** - * 今日雨量 - */ - @Schema(description="今日雨量") - private BigDecimal today; - - @Schema(description = "是否超校核水位(0否 1是)") - private Integer calState; - - @Schema(description = "是否超设计水位(0否 1是)") - private Integer desState; - - @Schema(description = "是否超汛限水位(0否 1是)") - private Integer flState; - - @Schema(description = "建站日期") - private String esstym; - - @Schema(description = "灌溉流量 (m³/s)") - private BigDecimal irrigationFlowSum; - - @Schema(description = "灌溉时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date irrigationFlowTm; - - @Schema(description = "生态供水流量 (m³/s)") - private BigDecimal ecologyFlow; - - @Schema(description = "生态供水时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date ecologyFlowTm; - - @Schema(description = "状态 0 离线 1在线") - private Integer status; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AttResMonitorVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AttResMonitorVo.java deleted file mode 100644 index c8daf09..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AttResMonitorVo.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * 水库监测数据 - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class AttResMonitorVo { - - /** - * 测站编码 - */ - @Schema(description = "测站编码") - private String stcd; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 雨量 - */ - @Schema(description="雨量") - private BigDecimal drp; - - /** - * 监测水位 - */ - @Schema(description="监测水位") - private BigDecimal rz; - - /** - * 库容 - */ - @Schema(description="库容") - private BigDecimal w; - - /** - * 今日雨量 - */ - @Schema(description="今日雨量") - private BigDecimal todayRainNum; - - /** - * 今日雨量 - */ - @Schema(description="今日雨量") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date todayRainNumTm; - - /** - * 灌溉发电流量 - */ - @Schema(description="灌溉发电流量") - private BigDecimal outPowerNum; - - /** - * 灌溉发电流量 - */ - @Schema(description="灌溉发电流量") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date outPowerNumTm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AttRiverNowDataVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AttRiverNowDataVo.java deleted file mode 100644 index 8ab3b1f..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AttRiverNowDataVo.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.gunshi.project.hsz.common.model.StPptnRReal; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -@Data -public class AttRiverNowDataVo extends StPptnRReal { - - @Schema(description = "水位上报时间") - private Date waterTm; - - @Schema(description = "监测水位") - private BigDecimal rz; - - - @Schema(description = "警戒水位") - private BigDecimal waterAlarm; - - @Schema(description = "监测水位差值") - private BigDecimal waterAlarmGap; - - @Schema(description = "保证水位") - private BigDecimal waterPromise; - - @Schema(description = "保证水位差值") - private BigDecimal waterPromiseGap; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvBaseVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvBaseVo.java deleted file mode 100644 index 4e6b668..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvBaseVo.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * 河道水情 - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class AttRvBaseVo { - - /** - * 测站编码 - */ - @Schema(description = "测站编码") - private String stcd; - - /** - * 测站名称 - */ - @Schema(description = "测站名称") - private String stnm; - - /** - * 站类 - */ - @Schema(description = "站类(RR水库水文站 ZQ,ZP河道水文站)") - private String sttp; - - /** - * 来源 - */ - @Schema(description = "来源") - private String source; - - /** - * 经度 - */ - @Schema(description = "经度") - private BigDecimal lgtd; - - /** - * 纬度 - */ - @Schema(description = "纬度") - private BigDecimal lttd; - - /** - * 行政区划代码 - */ - @Schema(description="行政区划代码") - private String adcd; - - /** - * 行政区划名称 - */ - @Schema(description="行政区划名称") - private String adnm; - - - /** - * 河流名称 - */ - @Schema(description = "河流名称") - private String rvnm; - - /** - * 流域名称 - */ - @Schema(description="流域名称") - private String lyname; - - /** - * 站址 - */ - @Schema(description="站址") - private String stlc; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 水位涨跌情况 - */ - @Schema(description="水位涨跌情况(0无变化 1涨 2跌)") - private Integer state; - - /** - * 监测水位 - */ - @Schema(description="监测水位") - private BigDecimal z; - - @Schema(description="警戒水位") - private BigDecimal wrz; - - @Schema(description="保证水位") - private BigDecimal grz; - - /** - * 图片路径 - */ - @Schema(description = "图片路径") - private String imgPath; - - @Schema(description="是否超保证水位(0否 1是)") - private Integer gstate; - - @Schema(description="是否超警戒水位(0否 1是)") - private Integer wstate; - - @Schema(description = "建站日期") - private String esstym; - - /** - * 小时雨量 - */ - @Schema(description="小时雨量") - private BigDecimal h1; - - /** - * 3小时雨量 - */ - @Schema(description="3小时雨量") - private BigDecimal h3; - - /** - * 6小时雨量 - */ - @Schema(description="6小时雨量") - private BigDecimal h6; - - /** - * 12小时雨量 - */ - @Schema(description="12小时雨量") - private BigDecimal h12; - - - /** - * 24小时雨量 - */ - @Schema(description="24小时雨量") - private BigDecimal h24; - - /** - * 今日雨量 - */ - @Schema(description="今日雨量") - private BigDecimal today; - - - /** - * 死水位 - */ - @Schema(description = "死水位 写死") - private BigDecimal deadLev; - - - @Schema(description = "状态 0 离线 1在线") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvMonitorDetailVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvMonitorDetailVo.java deleted file mode 100644 index 96d9f38..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvMonitorDetailVo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.math.BigDecimal; - -/** - * 河道监测数据(下方表格) - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class AttRvMonitorDetailVo extends StPptnDetailsVo { - - @Schema(description="24小时水位变幅(m)") - private BigDecimal rzDiff; - - @Schema(description="本年最高水位(m)") - private BigDecimal maxRz; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvMonitorVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvMonitorVo.java deleted file mode 100644 index a1d693b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/AttRvMonitorVo.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * 河道监测数据 - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class AttRvMonitorVo { - - /** - * 测站编码 - */ - @Schema(description = "测站编码") - private String stcd; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 雨量 - */ - @Schema(description="雨量") - private BigDecimal drp; - - /** - * 监测水位 - */ - @Schema(description="监测水位") - private BigDecimal z; - - /** - * 实测流量 - */ - @Schema(description="实测流量") - private BigDecimal q; - - /** - * 转换流量 - */ - @Schema(description="转换流量") - private BigDecimal tq; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/CameraOnlineVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/CameraOnlineVo.java deleted file mode 100644 index 20015f3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/CameraOnlineVo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/7/26 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class CameraOnlineVo { - - @Schema(description="摄像头code") - private String indexCode; - - @Schema(description="在线状态,0离线,1在线") - private Integer online; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/CartogramVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/CartogramVo.java deleted file mode 100644 index b409c89..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/CartogramVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -/** - * TODO - * - * @ClassName CartogramVo - * @Author Huang Qianxiang - * @Date 2024/3/26 14:24 - */ -@Data -public class CartogramVo { - - @Schema(description = "时间") - private List time; - - @Schema(description = "实测") - private List actual; - - @Schema(description = "累计") - private List total; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/CctvControlVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/CctvControlVo.java deleted file mode 100644 index 42648c3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/CctvControlVo.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/7/26 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class CctvControlVo { - - @Schema(description="摄像头code") - private String indexCode; - - @Schema(description="动作(0开始 1停止)") - private Integer action; - - @Schema(description="云台速度") - private Integer speed; - - @Schema(description="命令(LEFT 左转\n" + - "RIGHT右转\n" + - "UP 上转\n" + - "DOWN 下转\n" + - "ZOOM_IN 焦距变大\n" + - "ZOOM_OUT 焦距变小\n" + - "LEFT_UP 左上\n" + - "LEFT_DOWN 左下\n" + - "RIGHT_UP 右上\n" + - "RIGHT_DOWN 右下\n" + - "FOCUS_NEAR 焦点前移\n" + - "FOCUS_FAR 焦点后移\n" + - "IRIS_ENLARGE 光圈扩大\n" + - "IRIS_REDUCE 光圈缩小\n" + - "WIPER_SWITCH 接通雨刷开关\n" + - "START_RECORD_TRACK 开始记录运行轨迹\n" + - "STOP_RECORD_TRACK 停止记录运行轨迹\n" + - "START_TRACK 开始运行轨迹\n" + - "STOP_TRACK 停止运行轨迹;)") - private String command; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/DispatchRecordVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/DispatchRecordVo.java deleted file mode 100644 index 2a69e50..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/DispatchRecordVo.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnore; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.format.DateTimeFormat; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -@Data -@ExcelIgnoreUnannotated -public class DispatchRecordVo { - - @Schema(description="调度开始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @ExcelProperty({"调度开始时间"}) - @ColumnWidth(20) - @DateTimeFormat(DateFormatString.YYYY_MM_DD_HH_MM_SS) - private Date startTime; - - @Schema(description="调度结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @ExcelProperty({"调度结束时间"}) - @ColumnWidth(20) - @DateTimeFormat(DateFormatString.YYYY_MM_DD_HH_MM_SS) - private Date endTime; - - @Schema(description="状态(0执行中 1完成)") - @ExcelIgnore - private Integer status; - - @ExcelProperty({"调度原因"}) - @ColumnWidth(50) - private String dispatchReason; - - @Schema(description="调度详情") - @ExcelProperty({"调度详情"}) - @ColumnWidth(50) - private String dispatchDetail; - - @Schema(description="操作人") - @ExcelProperty({"操作人"}) - private String opUserName; - - @Schema(description="调度状态") - @ExcelProperty({"调度状态"}) - private String statusName; - - public void setStatus(Integer status){ - this.status = status; - if (this.status == 0) { - this.statusName = "执行中"; - } else if (this.status == 1) { - this.statusName = "完成"; - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/DmDvcdVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/DmDvcdVo.java deleted file mode 100644 index 051cbf2..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/DmDvcdVo.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Data -public class DmDvcdVo { - - @Schema(description = "断面") - private String dm; - - @Schema(description = "断面编码") - private List dvcd; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainStatVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainStatVo.java deleted file mode 100644 index 249ff3b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainStatVo.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 天气预报-流域统计 - * Created by wanyan on 2024/3/13 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class ForeRainStatVo { - - @Schema(description = "id") - private String id; - - @Schema(description = "名称") - private String name; - - @Schema(description = "雨量") - private Double drp; - - @Schema(description="经度") - private BigDecimal lgtd; - - @Schema(description="纬度") - private BigDecimal lttd; - - @JsonIgnore - private List meshrainVos; - - @Schema(description = "逐小时雨量") - private List timeRainVos; - - @JsonIgnore - private String geom; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainTimeVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainTimeVo.java deleted file mode 100644 index b1ef075..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainTimeVo.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * 天气预报-水库统计 - * Created by wanyan on 2024/3/13 - * - * @author wanyan - * @version 1.0 - */ -@Data -@Builder -public class ForeRainTimeVo { - - @Schema(description = "时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - - @Schema(description = "雨量") - private BigDecimal drp; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainVo.java deleted file mode 100644 index 97acdd2..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ForeRainVo.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - - -@Data -public class ForeRainVo { - private String stcd; - - @Schema(description = "测站名称") - private String stnm; - - private String lgtd; - - private String lttd; - - @Schema(description = "1h(mm)") - private BigDecimal h1; - - @Schema(description = "3h(mm)") - private BigDecimal h3; - - @Schema(description = "6h(mm)") - private BigDecimal h6; - - @Schema(description = "12h(mm)") - private BigDecimal h12; - - @Schema(description = "24h(mm)") - private Double h24; - - @Schema(description = "2h(mm)") - private Double h2; - - @Schema(description = "逐小时雨量") - private List timeRainVos; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ForecastResultVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ForecastResultVo.java deleted file mode 100644 index 1157dd3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ForecastResultVo.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** -*@description 预测结果VO -*@author cxw -*@classname ForecastResultVo.java -*@create 2024-07-31, 周三, 11:05:04 -*/ -@Schema(description="预测结果VO") -@Data -public class ForecastResultVo { - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - /** - * 预测入库流量 - */ - @Schema(description="预测入库流量") - private BigDecimal ycRkQValue; - - /** - * 实际入库流量 - */ - @Schema(description="实际入库流量") - private BigDecimal realRkQValue; - - /** - * 预测出库流量 - */ - @Schema(description="预测出库流量") - private BigDecimal ycCkQValue; - - /** - * 实际出库流量 - */ - @Schema(description="实际出库流量") - private BigDecimal realCkQValue; - - /** - * 预测水库水位 - */ - @Schema(description="预测水库水位") - private BigDecimal ycSwHValue; - - /** - * 实际水库水位 - */ - @Schema(description="实际水库水位") - private BigDecimal realSwHValue; - - /** - * 水位:预测-实测 - */ - @Schema(description="水位:预测-实测") - private BigDecimal swHDValue; - - /** - * 降雨 - */ - @Schema(description="降雨") - private BigDecimal drp; - - /** - * 是否是预测雨量(0:真实 1:预测) - */ - @Schema(description="是否是预测雨量(0:真实 1:预测)") - private String ispreDrp; - - /** - * 径流深 - */ - @Schema(description="径流深") - private BigDecimal r; - - /** - * 主汛期防洪限制水位 - */ - @Schema(description="主汛期防洪限制水位") - private BigDecimal flLowLimLev; - - /** - * 当前堰顶高度预警值 - */ - @Schema(description="当前堰顶高度预警值") - private BigDecimal currentYdgdyjz; - - /** - * 土壤含水量 - */ - @Schema(description="土壤含水量") - private BigDecimal pa; - - /** - * 水库当前库容 - */ - @Schema(description = "水库当前库容") - private BigDecimal nowCap; - - /** - * 累积R - */ - @Schema(description = "累积R") - private BigDecimal rSum; - - /** - * 累积P - */ - @Schema(description = "累积P") - private BigDecimal pSum = BigDecimal.ZERO; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/GateMonitorDataVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/GateMonitorDataVo.java deleted file mode 100644 index fa9843e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/GateMonitorDataVo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class GateMonitorDataVo { - - @Schema(description = "水闸编号") - private String gateCode; - - @Schema(description = "测站") - private String stcd; - - @Schema(description = "类型(1闸前水位站 2闸后水位站 3流量站)") - private Integer type; - - @Schema(description = "时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - @Schema(description = "值") - private BigDecimal value; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/GateStautsVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/GateStautsVo.java deleted file mode 100644 index f81a5c9..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/GateStautsVo.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnore; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -/** - * Description: - * Created by wanyan on 2024/7/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class GateStautsVo { - - @Schema(description="闸阀ID") - @ExcelIgnore - private String valveCode; - - /** - * 闸阀名称 - */ - @Schema(description="闸阀名称") - @ExcelProperty({"闸阀名称"}) - @ColumnWidth(20) - private String valveName; - - - @Schema(description="开关状态") - @ExcelProperty({"开关状态"}) - @ColumnWidth(20) - private String status; - - /** - * 操作时间 - */ - @Schema(description="操作时间") - @ExcelProperty({"操作时间"}) - @ColumnWidth(25) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - @Schema(description = "监测时间是否离当前时间超过2小时(0否 1是)") - @ExcelIgnore - private Integer flag = 0; - - @Schema(description="是否可手动控制") - @ExcelIgnore - private Boolean manualOperation; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/GateValveCctvRelVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/GateValveCctvRelVo.java deleted file mode 100644 index 26d6798..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/GateValveCctvRelVo.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.GateValveCctvRel; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/19. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class GateValveCctvRelVo extends GateValveCctvRel { - /** - * 闸阀名称 - */ - @Schema(description="闸阀名称") - private String valveName; - - /** - * id - */ - @Schema(description="摄像头id") - private Long indexId; - - - /** - * 摄像头名称 - */ - @Schema(description="摄像头名称") - private String name; - - @Schema(description="类型(1球机 2枪机)") - private Integer type; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/GateValveOplogVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/GateValveOplogVo.java deleted file mode 100644 index e93bc01..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/GateValveOplogVo.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnore; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -/** - * Description: - * Created by wanyan on 2024/7/19 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class GateValveOplogVo { - - @Schema(description="闸阀ID") - @ExcelIgnore - private String valveCode; - - /** - * 闸阀名称 - */ - @Schema(description="闸阀名称") - @ExcelProperty({"闸阀名称"}) - @ColumnWidth(20) - private String valveName; - - /** - * 操作人 - */ - @Schema(description="操作人") - @ExcelProperty({"操作人"}) - private String opUserName; - - /** - * 操作时间 - */ - @Schema(description="操作时间") - @ExcelProperty({"操作时间"}) - @ColumnWidth(25) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - @Schema(description="操作内容") - @ExcelProperty({"操作内容"}) - @ColumnWidth(20) - private String opContent; - - @Schema(description="设定开度") - @ExcelProperty({"设定开度"}) - private String status; - - @Schema(description="操作前开度") - @ExcelProperty({"操作前开度"}) - private String beforeStatus; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/GnssCdAndCdVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/GnssCdAndCdVo.java deleted file mode 100644 index b18fe5e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/GnssCdAndCdVo.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import lombok.Data; - -import java.util.List; - -@Data -public class GnssCdAndCdVo { - - private String ch; - - private List childrens; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HisWaterDataVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HisWaterDataVo.java deleted file mode 100644 index 4aee677..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HisWaterDataVo.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.HisWaterData; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -@EqualsAndHashCode(callSuper = true) -@Data -public class HisWaterDataVo extends HisWaterData{ - - private List children; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCBsnssinfoVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCBsnssinfoVo.java deleted file mode 100644 index f7548ba..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCBsnssinfoVo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.IaCBsnssinfo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/10. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class HomeIaCBsnssinfoVo extends IaCBsnssinfo { - - /** - * 行政区划名 - */ - @Schema(description="行政区划名") - private String adnm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCDanadVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCDanadVo.java deleted file mode 100644 index 7f5c9ea..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCDanadVo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.IaCDanad; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/10. - * - * @author XuSan - * @version 1.0 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class HomeIaCDanadVo extends IaCDanad { - - /** - * 行政区划名 - */ - @Schema(description="行政区划名") - private String adnm; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCFlrvvlgVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCFlrvvlgVo.java deleted file mode 100644 index ac254ce..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeIaCFlrvvlgVo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.IaCFlrvvlg; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/10. - * - * @author XuSan - * @version 1.0 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class HomeIaCFlrvvlgVo extends IaCFlrvvlg { - - /** - * 行政区划名 - */ - @Schema(description="行政区划名") - private String adnm; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticFlowDeviceVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticFlowDeviceVo.java deleted file mode 100644 index 8ef5545..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticFlowDeviceVo.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.model.OsmoticFlowDevice; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/7/10. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class HomeOsmoticFlowDeviceVo extends OsmoticFlowDevice { - - - /** - * 管水位 - */ - @Schema(description="流量") - private String q; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticPressDeviceVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticPressDeviceVo.java deleted file mode 100644 index db5fcdd..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticPressDeviceVo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.model.OsmoticPressDevice; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** -* 描述: 渗压设备表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@EqualsAndHashCode(callSuper = true) -@Data -public class HomeOsmoticPressDeviceVo extends OsmoticPressDevice { - - /** - * 管水位 - */ - @Schema(description="管水位") - private String value; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticShiftDeviceVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticShiftDeviceVo.java deleted file mode 100644 index 9b3cd9a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeOsmoticShiftDeviceVo.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.model.OsmoticShiftDevice; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/7/10. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class HomeOsmoticShiftDeviceVo extends OsmoticShiftDevice { - - /** - * x方向 - */ - @Schema(description="x方向") - private String x; - - /** - * y方向 - */ - @Schema(description="y方向") - private String y; - - /** - * h方向 - */ - @Schema(description="h方向") - private String h; - - /** - * 监测时间 - */ - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeShpPlacementVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeShpPlacementVo.java deleted file mode 100644 index 19126cd..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeShpPlacementVo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.ShpPlacement; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Description: - * Created by XuSan on 2024/7/10. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class HomeShpPlacementVo extends ShpPlacement { - - /** - * 行政区划名 - */ - @Schema(description="行政区划名") - private String adnm; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeStStbprpBVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeStStbprpBVo.java deleted file mode 100644 index f8389b2..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeStStbprpBVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.common.model.StStbprpB; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.math.BigDecimal; - -/** - * Description: - * Created by XuSan on 2024/7/10. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class HomeStStbprpBVo extends StStbprpB { - - - /** - * 数据 - */ - @Schema(description="数据") - private BigDecimal v; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeWarnVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/HomeWarnVo.java deleted file mode 100644 index 74aa433..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/HomeWarnVo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.common.model.JcskByR; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -/** - * Description: - * Created by wanyan on 2024/7/17 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class HomeWarnVo { - - - @Schema(description = "水库预警") - private Map> skWarningVoMap; - - @Schema(description = "河道预警") - private Map> riverWarningVoMap; - - @Schema(description = "大坝安全监测预警") - private Map> osmoticWarnVoMap; - - @Schema(description = "AI告警监测") - private Map> aiWarnVoMap; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/InspectProblemVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/InspectProblemVo.java deleted file mode 100644 index cf74ed6..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/InspectProblemVo.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.common.model.InspectTaskDetail; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class InspectProblemVo extends InspectTaskDetail { - - @Schema(description="任务标题") - private String taskTitle; - - @Schema(description="巡查点名称") - private String name; - - @Schema(description="巡检项描述") - private String itemDesc; - - @Schema(description="巡查人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long inspectUserId; - - @Schema(description="巡查人") - private String inspectUserName; - - @Schema(description="巡查完成时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date finishTime; - - @Schema(description = "巡查图片") - private List inspectPics; - - @Schema(description = "巡查视频") - private List inspectVideos; - - @Schema(description = "处理图片") - private List handlePics; - - @Schema(description = "处理视频") - private List handleVideos; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/InspectTaskDetailVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/InspectTaskDetailVo.java deleted file mode 100644 index dd40a30..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/InspectTaskDetailVo.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.common.model.InspectTaskDetail; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class InspectTaskDetailVo extends InspectTaskDetail { - - @Schema(description="巡查点名称") - private String name; - - @Schema(description="巡检项描述") - private String itemDesc; - - @Schema(description="巡检项问题描述") - private String itemProblemDesc; - - @Schema(description="处理建议") - private String handleSuggestion; - - @Schema(description="子集") - private List children; - - @Schema(description = "巡查图片") - private List inspectPics; - - @Schema(description = "巡查视频") - private List inspectVideos; - - @Schema(description = "处理图片") - private List handlePics; - - @Schema(description = "处理视频") - private List handleVideos; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/InspectTaskVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/InspectTaskVo.java deleted file mode 100644 index c324a16..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/InspectTaskVo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.hibernate.validator.constraints.Range; - -import java.util.List; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class InspectTaskVo { - - @Schema(description="任务状态") - @Range(min = 1,max = 2) - @NotNull(message = "任务状态不可为空") - private Integer status; - - @Schema(description="巡查信息") - private List list; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCount12Vo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCount12Vo.java deleted file mode 100644 index 94acc6a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCount12Vo.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.util.Date; - -@Data -public class MentenceInfoCount12Vo { - - private String month; - - private Integer hiddenCount; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCountVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCountVo.java deleted file mode 100644 index 5847b0a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/MentenceInfoCountVo.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.model.HiddenInfo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Data -@Schema(description = "维护信息统计分析") -public class MentenceInfoCountVo extends HiddenInfo { - - @Schema(description = "维护对象名称") - private String mentenceStName; - - @Schema(description = "维护项目Id") - @JsonSerialize(using = ToStringSerializer.class) - private Long mentenceStId; - - @Schema(description = "维护项目名称") - private String mentenceStDetailName; - - @Schema(description = "维护对象Id") - @JsonSerialize(using = ToStringSerializer.class) - private Long mentenceStDetailId; - - @Schema(description = "维护人Id") - @JsonSerialize(using = ToStringSerializer.class) - private String mentencePersonId; - - @Schema(description = "维护人名称") - private String mentencePersonName; - - private List files; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/MeshrainVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/MeshrainVo.java deleted file mode 100644 index 93d94ee..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/MeshrainVo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * Description: - * Created by wanyan on 2024/3/13 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class MeshrainVo { - - @Schema(description = "水库/河流/行政区划编码") - private String code; - - @Schema(description = "行号") - private Integer rownum; - - @Schema(description = "列号") - private Integer colnum; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/NbStatVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/NbStatVo.java deleted file mode 100644 index 12ef704..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/NbStatVo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -public class NbStatVo { - - @Schema(description="月份") - private String month; - - @Schema(description="最高") - private String max; - - @Schema(description="最高日期") - private String maxDate; - - @Schema(description="最低") - private String min; - - @Schema(description="最低日期") - private String minDate; - - @Schema(description="平均") - private String avg; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartDetailVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartDetailVo.java deleted file mode 100644 index 1c58881..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartDetailVo.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * - * Created by wanyan on 2024/3/13 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class OsmoticChartDetailVo { - - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - /** - * 库水位 - */ - @Schema(description="库水位") - private BigDecimal rz; - - /** - * 管水位 - */ - @Schema(description="管水位") - private BigDecimal value; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo.java deleted file mode 100644 index 233cf2c..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/7/9 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class OsmoticChartVo { - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String stationCode; - - /** - * 最大值 - */ - @Schema(description="最大值") - private BigDecimal maxValue; - - /** - * 最大值时间 - */ - @Schema(description="最大值时间") - private String maxTm; - - /** - * 最小值 - */ - @Schema(description="最小值") - private BigDecimal minValue; - - /** - * 最小值时间 - */ - @Schema(description="最小值时间") - private String minTm; - - /** - * 变幅 - */ - @Schema(description="变幅") - private BigDecimal diff; - - @Schema(description = "数据") - private List detailVos; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo2.java deleted file mode 100644 index 6fb7dc2..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticChartVo2.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -@Data -public class OsmoticChartVo2 { - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String cd; - - /** - * 最大值 - */ - @Schema(description="最大值") - private BigDecimal maxValue; - - /** - * 最大值时间 - */ - @Schema(description="最大值时间") - private String maxTm; - - /** - * 最小值 - */ - @Schema(description="最小值") - private BigDecimal minValue; - - /** - * 最小值时间 - */ - @Schema(description="最小值时间") - private String minTm; - - /** - * 变幅 - */ - @Schema(description="变幅") - private BigDecimal diff; - - @Schema(description = "数据") - private List detailVos; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticPressVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticPressVo.java deleted file mode 100644 index fa08f1a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticPressVo.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * Description: - * Created by wanyan on 2024/7/9 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class OsmoticPressVo { - - @Schema(description="测点编码") - private String stationCode; - - @Schema(description = "断面名称") - private String profileName; - - @Schema(description="监测时间") - private String tm; - - @Schema(description="监测值") - private BigDecimal value; - - @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") - private Integer flag = 0; - - @Schema(description = "是否超过预警(0否 1是)") - private Integer status = 0; - - private BigDecimal lttd; - - private BigDecimal lgtd; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftListVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftListVo.java deleted file mode 100644 index 7794b7e..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftListVo.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * Description: - * Created by wanyan on 2024/7/9 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class OsmoticShiftListVo { - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String stationCode; - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") - private Integer flag = 0; - - /** - * x方向 - */ - @Schema(description="x方向") - private BigDecimal x; - - @Schema(description = "x方向是否超过预警(0否 1是)") - private Integer xStatus = 0; - - /** - * y方向 - */ - @Schema(description="y方向") - private BigDecimal y; - - @Schema(description = "y方向是否超过预警(0否 1是)") - private Integer yStatus = 0; - - /** - * h方向 - */ - @Schema(description="h方向") - private BigDecimal h; - - @Schema(description = "h方向是否超过预警(0否 1是)") - private Integer hStatus = 0; - - @JsonIgnore - private String direction; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftValueVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftValueVo.java deleted file mode 100644 index 5326767..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftValueVo.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * Description: - * Created by wanyan on 2024/7/9 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class OsmoticShiftValueVo { - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String stationCode; - - /** - * x方向 - */ - @Schema(description="x方向") - private BigDecimal x; - - /** - * y方向 - */ - @Schema(description="y方向") - private BigDecimal y; - - /** - * h方向 - */ - @Schema(description="h方向") - private BigDecimal h; - - /** - * 库水位 - */ - @Schema(description="库水位") - private BigDecimal rz; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo.java deleted file mode 100644 index 584419f..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/7/9 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class OsmoticShiftVo{ - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - @Schema(description="测值") - private List list; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo2.java deleted file mode 100644 index 4729cd4..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticShiftVo2.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.common.model.vo.OsmoticShiftValueVo2; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Data -public class OsmoticShiftVo2 { - - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - @Schema(description="测值") - private List list; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo.java deleted file mode 100644 index 373dcc5..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.common.model.vo.StRzVo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.math.BigDecimal; -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/7/9 - * - * @author wanyan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class OsmoticStationVo extends StRzVo { - - @Schema(description = "结果分析(0异常 1正常)") - private Integer status = 1; - - @Schema(description="测值") - private List list; - - @Schema(description = "降雨量") - private BigDecimal drp; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo2.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo2.java deleted file mode 100644 index f92a353..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticStationVo2.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.common.model.vo.OsmoticValueVo2; -import com.gunshi.project.hsz.common.model.vo.StRzVo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -@Data -public class OsmoticStationVo2 extends StRzVo { - - @Schema(description = "结果分析(0异常 1正常)") - private Integer status = 1; - - @Schema(description="测值") - private List list; - - @Schema(description = "降雨量") - private BigDecimal drp; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticValueVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticValueVo.java deleted file mode 100644 index e2b52ca..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticValueVo.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * - * Created by wanyan on 2024/3/13 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class OsmoticValueVo { - - /** - * 时间 - */ - @Schema(description="时间") - private String tm; - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String stationCode; - - /** - * 管水位 - */ - @Schema(description="管水位") - private BigDecimal value; - - /** - * 库水位 - */ - @Schema(description="库水位") - private BigDecimal rz; - - @Schema(description = "结果分析(0异常 1正常)") - private Integer status = 1; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticWarnVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticWarnVo.java deleted file mode 100644 index d6988b8..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticWarnVo.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.model.OsmoticWarnRule; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * Description: - * Created by wanyan on 2024/7/9 - * - * @author wanyan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class OsmoticWarnVo extends OsmoticWarnRule { - /** - * 主键 - */ - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 测点编号 - */ - @Schema(description="测点编号") - private String stationCode; - - /** - * 预警规则id - */ - @Schema(description="预警规则id") - private Long ruleId; - - /** - * 监测值 - */ - @Schema(description="监测值") - private BigDecimal value; - - /** - * 预警时间 - */ - @Schema(description="预警时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 监测类型(1渗压 2渗流 3位移) - */ - @Schema(description="监测类型(1渗压 2渗流 3位移)") - private Integer type; - - @Schema(description = "预警描述") - private String direction; - - @Schema(description = "预警等级") - private String warnLevel; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticWaterRVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticWaterRVo.java deleted file mode 100644 index 37f5716..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/OsmoticWaterRVo.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import lombok.Data; - -import java.util.Date; - -/** - * @author cxw - * @description: (描述这个类或者方法的作用) - * @classname OsmoticWaterRVo.java - * @create 2024-07-10, 星期三, 10:46:43 - */ -@Data -@ExcelIgnoreUnannotated -public class OsmoticWaterRVo { - private static final long serialVersionUID = 1L; - /** - * 采集时间 - */ - @ExcelProperty({"${title}", "时间"}) - @ColumnWidth(15) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 水温 - */ - @ExcelProperty({"${title}", "水温(℃)"}) - private String temp; - - /** - * PH - */ - @ExcelProperty({"${title}", "PH(mg/L)"}) - private String ph; - - /** - * 溶解氧 - */ - @ExcelProperty({"${title}", "溶解氧(mg/L)"}) - private String bod; - - /** - * 高锰酸钾指数 - */ - @ExcelProperty({"${title}", "高锰酸钾指数(mg/L)"}) - private String mn; - - /** - * 化学需氧量 - */ - @ExcelProperty({"${title}", "化学需氧量(mg/L)"}) - private String codcr; - - /** - * 五日生化需氧量 - */ - @ExcelProperty({"${title}", "五日生化需氧量(mg/L)"}) - private String bod5; - - /** - * 氨氮 - */ - @ExcelProperty({"${title}", "氨氮(mg/L)"}) - private String nh3n; - - /** - * 总磷 - */ - @ExcelProperty({"${title}", "总磷(mg/L)"}) - private String tp; - - /** - * 总氮 - */ - @ExcelProperty({"${title}", "总氮(mg/L)"}) - private String tn; - - /** - * 铜 - */ - @ExcelProperty({"${title}", "铜(mg/L)"}) - private String cu; - - /** - * 锌 - */ - @ExcelProperty({"${title}", "锌(mg/L)"}) - private String zn; - - /** - * 氟化物 - */ - @ExcelProperty({"${title}", "氟化物(mg/L)"}) - private String f; - - /** - * 硒 - */ - @ExcelProperty({"${title}", "硒(mg/L)"}) - private String se; - - /** - * 砷 - */ - @ExcelProperty({"${title}", "砷(mg/L)"}) - private String arsenic; - - /** - * 汞 - */ - @ExcelProperty({"${title}", "汞(mg/L)"}) - private String hg; - - /** - * 镉 - */ - @ExcelProperty({"${title}", "镉(mg/L)"}) - private String cd; - - /** - * 铬 - */ - @ExcelProperty({"${title}", "铬(mg/L)"}) - private String cr; - - /** - * 铅 - */ - @ExcelProperty({"${title}", "铅(mg/L)"}) - private String pb; - - /** - * 氰化物 - */ - @ExcelProperty({"${title}", "氰化物(mg/L)"}) - private String cn; - - /** - * 挥发酚 - */ - @ExcelProperty({"${title}", "挥发酚(mg/L)"}) - private String vlph; - - /** - * 石油类 - */ - @ExcelProperty({"${title}", "石油类(mg/L)"}) - private String oil; - - /** - * 阴离子表面活性剂 - */ - @ExcelProperty({"${title}", "阴离子表面活性剂(mg/L)"}) - private String las; - - /** - * 硫化物 - */ - @ExcelProperty({"${title}", "硫化物(mg/L)"}) - private String s; - - /** - * 大肠菌群数 - */ - @ExcelProperty({"${title}", "大肠菌群数(mg/L)"}) - private String tcg; - - /** - * 浊度 - */ - @ExcelProperty({"${title}", "浊度(NTU)"}) - private String turb; - - /** - * 电导率 - */ - @ExcelProperty({"${title}", "电导率(μs/cm)"}) - private String cond; - - /** - * 高锰酸盐 - */ - @ExcelProperty({"${title}", "高锰酸盐(mg/L)"}) - private String codmn; - - /** - * 叶绿素 - */ - @ExcelProperty({"${title}", "叶绿素(ug/L)"}) - private String chla; - - /** - * 水质类别 - */ - @ExcelProperty({"${title}", "水质类别"}) - private String level; - - /** - * 污染物及超标倍数 - */ - @ExcelProperty({"${title}", "污染物及超标倍数"}) - private String paem; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/PersonnelPlanLogStatisticsVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/PersonnelPlanLogStatisticsVo.java deleted file mode 100644 index 53ff5db..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/PersonnelPlanLogStatisticsVo.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.Data; -import lombok.experimental.Accessors; - -import java.math.BigDecimal; -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@Tag(name = "人员计划日志统计") -@Data -public class PersonnelPlanLogStatisticsVo { - - @Schema(description="实际期数") - private Integer numberOfPeriods1; - - @Schema(description="计划期数") - private Integer numberOfPeriods2; - - @Schema(description="实际人次") - private Integer personNum1; - - @Schema(description="计划人次") - private Integer personNum2; - - - @Schema(description="期数图表数据") - private List list1; - - - @Schema(description="人次图表数据") - private List list2; - - - @Accessors(chain = true) // chain = true 实现链式调用 - @Data - public static class EchartsData{ - @Schema(description="月份") - private Integer month; - -// @Schema(description="实际数据") - @Schema(description="实际人数") - private Integer num1 = 0; - -// @Schema(description="计划数据") - @Schema(description="实际期数") - private Integer num2 = 0; - - @Deprecated - @Schema(description="完成率") - private BigDecimal rate = BigDecimal.ZERO; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/PrePlaceTreeVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/PrePlaceTreeVo.java deleted file mode 100644 index b409104..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/PrePlaceTreeVo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.model.PrePlaceDetail; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import lombok.Data; - -import java.util.List; - -@Data -public class PrePlaceTreeVo { - - @JsonSerialize(using = ToStringSerializer.class) - private Long preId; - - private String preName; - - - private List details; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ProfilePressTreeVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ProfilePressTreeVo.java deleted file mode 100644 index fad352d..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ProfilePressTreeVo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/7/10 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class ProfilePressTreeVo { - - @Schema(description="断面编号") - private String profileCode; - - @Schema(description="断面名称") - private String profileName; - - @Schema(description = "测点") - private List children; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectEventsVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectEventsVo.java deleted file mode 100644 index 6f2d174..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectEventsVo.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnore; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.format.DateTimeFormat; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.model.FileAssociations; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -@Data -@ExcelIgnoreUnannotated -public class ProjectEventsVo { - - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - @ExcelIgnore - private Long id; - - @Schema(description="发生日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - @ExcelProperty({"发生日期"}) - @ColumnWidth(20) - @DateTimeFormat(DateFormatString.YYYY_MM_DD) - private Date eventsDate; - - @Schema(description="类型(1大事记 2调度指令 3维修养护 4安全鉴定 5除险加固 6白蚁普查)") - @ExcelIgnore - private Integer type; - - @Schema(description="类型") - @ExcelProperty({"类型"}) - private String typeName; - - @Schema(description="事件内容描述") - @ExcelProperty({"事件内容描述"}) - @ColumnWidth(100) - private String eventsDesc; - - @TableField(exist = false) - @Schema(description = "文件集合") - @ExcelIgnore - private List files; - - - public void setType(Integer type){ - this.type = type; - if (this.type == 1) { - this.typeName = "大事记"; - } else if (this.type == 2) { - this.typeName = "调度记录"; - } else if (this.type == 3) { - this.typeName = "维修养护"; - }else if (this.type == 4) { - this.typeName = "安全鉴定"; - }else if (this.type == 5) { - this.typeName = "除险加固"; - }else if (this.type == 6) { - this.typeName = "白蚁普查"; - } - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectSafeCalculateVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectSafeCalculateVo.java deleted file mode 100644 index 1484683..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectSafeCalculateVo.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import lombok.Data; - -import java.util.List; - -@Data -public class ProjectSafeCalculateVo { - - private String one; - - private String two; - - private String three; - - private String four; - - private List datas; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectSaveReportVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectSaveReportVo.java deleted file mode 100644 index 4a488fa..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ProjectSaveReportVo.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -@Data -public class ProjectSaveReportVo { - - private String regression; - - private List datas; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/QXWarningVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/QXWarningVo.java deleted file mode 100644 index 2771687..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/QXWarningVo.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class QXWarningVo { - - @Schema(description = "是否播放报警声音") - private Boolean play; - - @Schema(description = "生成时间") - private String createTime; - - @Schema(description = "发布时间") - private String publishTime; - - @Schema(description = "起始时间") - private String startTime; - - @Schema(description = "终止时间") - private String endTime; - - @Schema(description = "发布单位") - private String publishUnit; - - @Schema(description = "预警类型") - private String warnSignalType; - - @Schema(description = "预警级别") - private String warnSignalLevel; - - @Schema(description = "区县名称") - private String cnnm; - - @Schema(description = "市名称") - private String ctnm; - - @Schema(description = "预警内容") - private String content; - - @Schema(description = "状态") - private String status; - - @Schema(description = "预警信息id") - private Integer warnid; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RainfallAnalysisVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RainfallAnalysisVo.java deleted file mode 100644 index 5c15f63..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RainfallAnalysisVo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * TODO - * - * @ClassName RainfallAnalysisVo - * @Author Huang Qianxiang - * @Date 2024/3/12 16:24 - */ -@Data -public class RainfallAnalysisVo { - private String stcd; - private String stnm; - private String stlc; - private Double drp; - private String adcd; - private String adnm; - private String basCode; - private String basName; - private String lgtd; - private String lttd; - private String source; - @Schema(description = "降雨分析等级 0: 暴雨 1: 大暴雨 2: 特大暴雨 3: 50年一遇以上 4: 100年一遇以上") - private Integer level; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RealRainListVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RealRainListVo.java deleted file mode 100644 index 6e5a6c5..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RealRainListVo.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - - -@Data -public class RealRainListVo { - private String stcd; - private String sttp; - private String stnm; - private String stlc; - @Schema(description = "时段雨量(mm)") - private Double drp; - private String adcd; - private String adnm; - private String resCode; - private String resName; - - private String lgtd; - private String lttd; - @Schema(description = "0 离线 1 在线") - private Integer status; - - @Schema(description="降雨量级 0:无降雨 1:小雨 2:中雨 3:大雨 4:暴雨 5:大暴雨 6:特大暴雨") - private Integer rainTag; - @Schema(description = "站点类型") - private String sType; - - - - public void setDrp(Double drp){ - this.drp = drp; - if (this.drp == 0) { - this.rainTag = 0; - } else if (this.drp > 0 && this.drp < 10) { - this.rainTag = 1; - } else if (this.drp >= 10 && this.drp < 25) { - this.rainTag = 2; - } else if (this.drp >= 25 && this.drp < 50) { - this.rainTag = 3; - } else if (this.drp >= 50 && this.drp < 100) { - this.rainTag = 4; - } else if (this.drp >= 100 && this.drp < 250) { - this.rainTag = 5; - } else if (this.drp >= 250) { - this.rainTag = 6; - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RealRainStatListVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RealRainStatListVo.java deleted file mode 100644 index 2af515a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RealRainStatListVo.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -/** - * @author Sun Lejun - * @version 1.0 - * @date 2024/3/11 - */ - -@Data -public class RealRainStatListVo { - private String stcd; - private String sttp; - private String stnm; - private String stlc; - private Double h1; - private Double h3; - private Double h6; - private Double h12; - private Double h24; - private Date tm; - private String adcd; - private String adnm; - private String basCode; - private String basName; - private String lgtd; - private String lttd; - private String source; - @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") - private Integer freqH1; - @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") - private Integer freqH3; - @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") - private Integer freqH6; - @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") - private Integer freqH12; - @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") - private Integer freqH24; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ResBriefVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ResBriefVo.java deleted file mode 100644 index a1ad1a1..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ResBriefVo.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.ResBriefR; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * @author lyf - * @since 2025-04-25 - */ -@Data -public class ResBriefVo extends ResBriefR { - - - @Data - public static class PptnVo { - private String stcd; - private String stnm; - private BigDecimal drp24Sum; - private BigDecimal drp24Max; - private Date maxTm; - } - - @Data - public static class RsvrVo { - private String stcd; - private String stnm; - private BigDecimal rz8; - private BigDecimal rzYesterday8; - private BigDecimal w; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ResWarnVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ResWarnVo.java deleted file mode 100644 index eb5dd3d..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ResWarnVo.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import lombok.Data; - -import java.util.List; - -@Data -public class ResWarnVo { - - - private List calFloodLevList; - - private List desFloodLevList; - - private List aboutAFsltdzList; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/ResWarningVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/ResWarningVo.java deleted file mode 100644 index f615763..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/ResWarningVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class ResWarningVo { - - @Schema(description = "站点编码") - private String stcd; - - @Schema(description = "站点名称") - private String stnm; - - @Schema(description = "经度") - private BigDecimal lgtd; - - @Schema(description = "纬度") - private BigDecimal lttd; - - - private BigDecimal afsltdz; - - private BigDecimal rz; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RescueTeamVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RescueTeamVo.java deleted file mode 100644 index 3403d94..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RescueTeamVo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.RescueTeamB; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - - -@EqualsAndHashCode(callSuper = true) -@Data -public class RescueTeamVo extends RescueTeamB { - - /** - * 人员总数 - */ - @Schema(description="人员总数") - private Integer personCount; - - /** - * 是否有效 - */ - @Schema(description = "是否有效(0 否 1 是)") - private Integer isValid; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RiceRqWaterCaculateVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RiceRqWaterCaculateVo.java deleted file mode 100644 index 22b61f0..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RiceRqWaterCaculateVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.gunshi.project.hsz.model.RiceGrowConfig; -import com.gunshi.project.hsz.model.RiceWaterForecastCycle; -import com.gunshi.project.hsz.model.RiceWaterForecastMonth; -import com.gunshi.project.hsz.model.RiceWaterKi; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -@Data -public class RiceRqWaterCaculateVo { - - - private List riceWaterKis;// 灌水定额配置 - - private List riceWaterForecastCycles;//周期数据 - - private List riceWaterForecastMonths;//月份数据 - - private BigDecimal irrigationCycleTotalUse;//按年份统计总水量 - - private BigDecimal irrigationMonthTotalUse;//按月份统计总水量 - - private RiceGrowConfig riceGrowConfig;//水稻生长参数配置表 -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RiverWarningVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RiverWarningVo.java deleted file mode 100644 index d34bb9b..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RiverWarningVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class RiverWarningVo { - @Schema(description = "站点编码") - private String stcd; - - @Schema(description = "站点名称") - private String stnm; - - @Schema(description = "经度") - private BigDecimal lgtd; - - @Schema(description = "纬度") - private BigDecimal lttd; - - @Schema(description = "告警内容") - private String rzWarn; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RjswNbStatVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RjswNbStatVo.java deleted file mode 100644 index 828bed6..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RjswNbStatVo.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -@Data -public class RjswNbStatVo { - - @Schema(description="最高水位") - private BigDecimal max; - - @Schema(description="最低水位") - private BigDecimal min; - - @Schema(description="平均水位") - private BigDecimal avg; - - @Schema(description = "统计数据") - private List list; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RjswNbVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RjswNbVo.java deleted file mode 100644 index b37babb..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RjswNbVo.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import lombok.Data; - -@Data -@ExcelIgnoreUnannotated -public class RjswNbVo{ - - - @ExcelProperty({"${title}","日期"}) - @ColumnWidth(15) - private String theme; - - @ExcelProperty({"${title}","日期"}) - @ColumnWidth(15) - private String date; - - @ExcelProperty({"${title}","一月"}) - private String drpM1; - - - @ExcelProperty({"${title}","二月"}) - private String drpM2; - - - @ExcelProperty({"${title}","三月"}) - private String drpM3; - - - @ExcelProperty({"${title}","四月"}) - private String drpM4; - - - @ExcelProperty({"${title}","五月"}) - private String drpM5; - - - @ExcelProperty({"${title}","六月"}) - private String drpM6; - - - @ExcelProperty({"${title}","七月"}) - private String drpM7; - - - @ExcelProperty({"${title}","八月"}) - private String drpM8; - - - @ExcelProperty({"${title}","九月"}) - private String drpM9; - - - @ExcelProperty({"${title}","十月"}) - private String drpM10; - - - @ExcelProperty({"${title}","十一月"}) - private String drpM11; - - - @ExcelProperty({"${title}","十二月"}) - private String drpM12; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RjyNbStatVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RjyNbStatVo.java deleted file mode 100644 index a94b499..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RjyNbStatVo.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -@Data -public class RjyNbStatVo { - - @Schema(description="降水量") - private BigDecimal drpSum; - - @Schema(description="降雨日数") - private Long dayCount; - - @Schema(description = "统计数据") - private List list; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RjyNbVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RjyNbVo.java deleted file mode 100644 index 2a134a3..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RjyNbVo.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import lombok.Data; - -@Data -@ExcelIgnoreUnannotated -public class RjyNbVo { - - - @ExcelProperty({"${title}","日期"}) - @ColumnWidth(15) - private String date; - - @ExcelProperty({"${title}","一月"}) - private String drpM1; - - - @ExcelProperty({"${title}","二月"}) - private String drpM2; - - - @ExcelProperty({"${title}","三月"}) - private String drpM3; - - - @ExcelProperty({"${title}","四月"}) - private String drpM4; - - - @ExcelProperty({"${title}","五月"}) - private String drpM5; - - - @ExcelProperty({"${title}","六月"}) - private String drpM6; - - - @ExcelProperty({"${title}","七月"}) - private String drpM7; - - - @ExcelProperty({"${title}","八月"}) - private String drpM8; - - - @ExcelProperty({"${title}","九月"}) - private String drpM9; - - - @ExcelProperty({"${title}","十月"}) - private String drpM10; - - - @ExcelProperty({"${title}","十一月"}) - private String drpM11; - - - @ExcelProperty({"${title}","十二月"}) - private String drpM12; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RotaVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RotaVo.java deleted file mode 100644 index 7423f19..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RotaVo.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.util.excel.LengthValid; -import lombok.Data; - -import java.util.Date; - - -@Data -@ExcelIgnoreUnannotated -public class RotaVo { - private static final long serialVersionUID = 1L; - - /** - * 值班开始时间 - */ - @ExcelProperty({"${title}","值班开始时间"}) - @ColumnWidth(25) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date stm; - - /** - * 值班结束时间 - */ - @ExcelProperty({"${title}","值班结束时间"}) - @ColumnWidth(25) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date etm; - - /** - * 值班领导手机号 - */ - @LengthValid(length = 11,msg = "值班领导手机号长度不等于11!") - @ColumnWidth(25) - @ExcelProperty({"${title}","值班领导手机号"}) - private String leaderPhone; - - /** - * 值班人员手机号 - */ - @LengthValid(length = 11,msg = "值班人员手机号长度不等于11!") - @ColumnWidth(25) - @ExcelProperty({"${title}","值班人员手机号"}) - private String dutyPhone; - - private String errorMsg; - - private Long leaderUserId; - - private Long dutyUserId; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/RsvrComplexVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/RsvrComplexVo.java deleted file mode 100644 index aa8d377..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/RsvrComplexVo.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * @author lyf - * @since 2025-04-08 - */ -@Data -@NoArgsConstructor -@RequiredArgsConstructor(staticName = "of") -public class RsvrComplexVo { - @NonNull - public BigDecimal rz; - @NonNull - public Date tm; - /** - * 水位查表流量 - */ - public BigDecimal q; - /** - * spilled volume 溢洪量,根据流量和时间乘算 - */ - public BigDecimal sv; - /** - * 水位查表库容 - */ - public BigDecimal w; - - public BigDecimal totalSv; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/SKWarningVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/SKWarningVo.java deleted file mode 100644 index 552f059..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/SKWarningVo.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.itextpdf.layout.properties.BackgroundImage; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class SKWarningVo { - - @Schema(description = "站点编码") - private String stcd; - - @Schema(description = "站点名称") - private String stnm; - - @Schema(description = "经度") - private BigDecimal lgtd; - - @Schema(description = "纬度") - private BigDecimal lttd; - - @Schema(description = "告警内容") - private String rzWarn; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/SdJyRbVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/SdJyRbVo.java deleted file mode 100644 index 60076a0..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/SdJyRbVo.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -@ExcelIgnoreUnannotated -public class SdJyRbVo { - - - /** - * 日期 - */ - @ExcelProperty({"${title}","日期"}) - @ColumnWidth(15) - private String date; - - /** - * 第9小时降水量 - */ - @ExcelProperty({"${title}","9时"}) - private BigDecimal drpH9; - - /** - * 第10小时降水量 - */ - @ExcelProperty({"${title}","10时"}) - private BigDecimal drpH10; - - /** - * 第11小时降水量 - */ - @ExcelProperty({"${title}","11时"}) - private BigDecimal drpH11; - - /** - * 第12小时降水量 - */ - @ExcelProperty({"${title}","12时"}) - private BigDecimal drpH12; - - /** - * 第13小时降水量 - */ - @ExcelProperty({"${title}","13时"}) - private BigDecimal drpH13; - - /** - * 第14小时降水量 - */ - @ExcelProperty({"${title}","14时"}) - private BigDecimal drpH14; - - /** - * 第15小时降水量 - */ - @ExcelProperty({"${title}","15时"}) - private BigDecimal drpH15; - - /** - * 第16小时降水量 - */ - @ExcelProperty({"${title}","16时"}) - private BigDecimal drpH16; - - /** - * 第17小时降水量 - */ - @ExcelProperty({"${title}","17时"}) - private BigDecimal drpH17; - - /** - * 第18小时降水量 - */ - @ExcelProperty({"${title}","18时"}) - private BigDecimal drpH18; - - /** - * 第19小时降水量 - */ - @ExcelProperty({"${title}","19时"}) - private BigDecimal drpH19; - - /** - * 第20小时降水量 - */ - @ExcelProperty({"${title}","20时"}) - private BigDecimal drpH20; - - /** - * 第21小时降水量 - */ - @ExcelProperty({"${title}","21时"}) - private BigDecimal drpH21; - - /** - * 第22小时降水量 - */ - @ExcelProperty({"${title}","22时"}) - private BigDecimal drpH22; - - /** - * 第23小时降水量 - */ - @ExcelProperty({"${title}","23时"}) - private BigDecimal drpH23; - - /** - * 第24小时降水量 - */ - @ExcelProperty({"${title}","24时"}) - private BigDecimal drpH24; - - - /** - * 第1小时降水量 - */ - @ExcelProperty({"${title}","1时"}) - private BigDecimal drpH1; - - /** - * 第2小时降水量 - */ - @ExcelProperty({"${title}","2时"}) - private BigDecimal drpH2; - - /** - * 第3小时降水量 - */ - @ExcelProperty({"${title}","3时"}) - private BigDecimal drpH3; - - /** - * 第4小时降水量 - */ - @ExcelProperty({"${title}","4时"}) - private BigDecimal drpH4; - - /** - * 第5小时降水量 - */ - @ExcelProperty({"${title}","5时"}) - private BigDecimal drpH5; - - /** - * 第6小时降水量 - */ - @ExcelProperty({"${title}","6时"}) - private BigDecimal drpH6; - - /** - * 第7小时降水量 - */ - @ExcelProperty({"${title}","7时"}) - private BigDecimal drpH7; - - /** - * 第8小时降水量 - */ - @ExcelProperty({"${title}","8时"}) - private BigDecimal drpH8; - - /** - * 日降水量 - */ - @ExcelProperty({"${title}","日累计"}) - @ColumnWidth(15) - private BigDecimal drpD; - - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/SdSwRbVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/SdSwRbVo.java deleted file mode 100644 index 373d779..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/SdSwRbVo.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -@ExcelIgnoreUnannotated -public class SdSwRbVo { - - - /** - * 日期 - */ - @ExcelProperty({"${title}","日期"}) - @ColumnWidth(15) - private String date; - - /** - * 第0小时水位 - */ - @ExcelProperty({"${title}","0时"}) - private BigDecimal rzH24; - - - /** - * 第1小时水位 - */ - @ExcelProperty({"${title}","1时"}) - private BigDecimal rzH1; - - /** - * 第2小时水位 - */ - @ExcelProperty({"${title}","2时"}) - private BigDecimal rzH2; - - /** - * 第3小时水位 - */ - @ExcelProperty({"${title}","3时"}) - private BigDecimal rzH3; - - /** - * 第4小时水位 - */ - @ExcelProperty({"${title}","4时"}) - private BigDecimal rzH4; - - /** - * 第5小时水位 - */ - @ExcelProperty({"${title}","5时"}) - private BigDecimal rzH5; - - /** - * 第6小时水位 - */ - @ExcelProperty({"${title}","6时"}) - private BigDecimal rzH6; - - /** - * 第7小时水位 - */ - @ExcelProperty({"${title}","7时"}) - private BigDecimal rzH7; - - /** - * 第8小时水位 - */ - @ExcelProperty({"${title}","8时"}) - private BigDecimal rzH8; - - /** - * 第9小时水位 - */ - @ExcelProperty({"${title}","9时"}) - private BigDecimal rzH9; - - /** - * 第10小时水位 - */ - @ExcelProperty({"${title}","10时"}) - private BigDecimal rzH10; - - /** - * 第11小时水位 - */ - @ExcelProperty({"${title}","11时"}) - private BigDecimal rzH11; - - /** - * 第12小时水位 - */ - @ExcelProperty({"${title}","12时"}) - private BigDecimal rzH12; - - /** - * 第13小时水位 - */ - @ExcelProperty({"${title}","13时"}) - private BigDecimal rzH13; - - /** - * 第14小时水位 - */ - @ExcelProperty({"${title}","14时"}) - private BigDecimal rzH14; - - /** - * 第15小时水位 - */ - @ExcelProperty({"${title}","15时"}) - private BigDecimal rzH15; - - /** - * 第16小时水位 - */ - @ExcelProperty({"${title}","16时"}) - private BigDecimal rzH16; - - /** - * 第17小时水位 - */ - @ExcelProperty({"${title}","17时"}) - private BigDecimal rzH17; - - /** - * 第18小时水位 - */ - @ExcelProperty({"${title}","18时"}) - private BigDecimal rzH18; - - /** - * 第19小时水位 - */ - @ExcelProperty({"${title}","19时"}) - private BigDecimal rzH19; - - /** - * 第20小时水位 - */ - @ExcelProperty({"${title}","20时"}) - private BigDecimal rzH20; - - /** - * 第21小时水位 - */ - @ExcelProperty({"${title}","21时"}) - private BigDecimal rzH21; - - /** - * 第22小时水位 - */ - @ExcelProperty({"${title}","22时"}) - private BigDecimal rzH22; - - /** - * 第23小时水位 - */ - @ExcelProperty({"${title}","23时"}) - private BigDecimal rzH23; - - - - /** - * 日平均 - */ - @ExcelProperty({"${title}","平均"}) - @ColumnWidth(15) - private BigDecimal rzAvg; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/SoilMoistureVO.java b/src/main/java/com/gunshi/project/hsz/entity/vo/SoilMoistureVO.java deleted file mode 100644 index 7f87cb7..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/SoilMoistureVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class SoilMoistureVO { - - private String stcd; - - private BigDecimal currVal; - - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - private BigDecimal nearWeekValMax; - private BigDecimal nearWeekValMin; - - private BigDecimal nearMonthValMax; - private BigDecimal nearMonthValMin; - - private BigDecimal nearThreeMonthValMax; - private BigDecimal nearThreeMonthValMin; - - private BigDecimal nearSixMonthValMax; - private BigDecimal nearSixMonthValMin; - - private BigDecimal nearYearValMax; - private BigDecimal nearYearValMin; - - private BigDecimal currWeekValMax; - private BigDecimal currWeekValMin; - - private BigDecimal currMonthValMax; - private BigDecimal currMonthValMin; - - private BigDecimal currYearValMax; - private BigDecimal currYearValMin; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StAddvcdTreeVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StAddvcdTreeVo.java deleted file mode 100644 index 8d4c9a9..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StAddvcdTreeVo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.StAddvcdD; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/4/7 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class StAddvcdTreeVo extends StAddvcdD { - - @Schema(description = "行政区划数组") - private List children; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StFlowRVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StFlowRVo.java deleted file mode 100644 index da727be..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StFlowRVo.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.project.hsz.model.ResMonthEcoFlow; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * 水厂流量表 (灌溉流量/水厂流量) - */ - -@Data -public class StFlowRVo { - - @TableId(value = "id") - @Schema(description = "Id") - private Long id; - - - @TableField(value = "stcd") - @Schema(description = "站点编码") - private String stcd; - - @TableField(value = "tm") - @Schema(description = "观测时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime tm; - - @TableField(value = "inq") - private BigDecimal inq; - - @TableField(value = "q") - @Schema(description = "流量") - private BigDecimal q; - - @TableField(value = "otq") - private BigDecimal otq; - - @TableField(value = "crtime") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime crtime; - - @Schema(description = "水量") - @TableField(exist = false) - private BigDecimal v; - - @Schema(description = "站点类型") - @TableField(exist = false) - private String sttp; - - @TableField(exist = false) - private ResMonthEcoFlow resMonthEcoFlow; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StPptnDetailsVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StPptnDetailsVo.java deleted file mode 100644 index 6c0ee47..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StPptnDetailsVo.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * TODO - * - * @ClassName StPptnDetailsVo - * @Author Huang Qianxiang - * @Date 2024/2/23 10:53 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class StPptnDetailsVo extends StPptnRReal { - - @Schema(description="昨日降雨量") - private BigDecimal yesterdayDrp; - - @Schema(description="本月降雨量") - private BigDecimal monthDrp; - - @Schema(description="本年降雨量") - private BigDecimal yearDrp; - - @Schema(description="本年降雨天数") - private Long yearDrpDay; - - @Schema(description="本年天数") - private Long yearDay; - - @Schema(description="本年最大日雨量") - private BigDecimal maxDrp; - - @Schema(description="本年最大日雨量时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date maxDrpTime; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StPptnVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StPptnVo.java deleted file mode 100644 index d339c17..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StPptnVo.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * TODO - * - * @ClassName StPptnVo - * @Author Huang Qianxiang - * @Date 2024/2/23 9:51 - */ -@Data -public class StPptnVo { - - /** - * 时段降雨量对应的时间 - */ - @Schema(description = "时段降雨量对应的时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date time; - - /** - * 选择时段降雨量 - */ - @Schema(description = "选择时段降雨量") - private BigDecimal sumDrp; - - @Schema(description = "时间格式化字符串") - private String timeStr; - - @Schema(description = "个数") - private Integer count; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StRsvrVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StRsvrVo.java deleted file mode 100644 index f45b0ab..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StRsvrVo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.common.model.StRsvrR; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 水库水情 - * Created by wanyan on 2024/2/20 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class StRsvrVo { - - @Schema(description = "汛限水位") - private BigDecimal flLowLimLev; - - @Schema(description = "库水位") - private List list; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StStatusListVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StStatusListVo.java deleted file mode 100644 index cdc955d..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StStatusListVo.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.entity.vo.StStatusVo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.bouncycastle.cert.dane.DANEEntry; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -@Data -public class StStatusListVo { - - @Schema(description = "在线个数") - private Integer onlineCount; - - @Schema(description = "离线个数") - private Integer offLineCount; - - @Schema(description = "报到率") - private BigDecimal reportPercentage; - - - @Schema(description = "雨量站") - private List rainStationList; - - - @Schema(description = "水库水位站") - private List rsvrStationList; - - - @Schema(description = "河道水位站") - private List riverStationList; - - - @Schema(description = "流量站") - private List flowStationList; - - @Schema(description = "视频站") - private List cctvStationList; - - @Schema(description = "渗压") - private List syStationList; - - @Schema(description = "渗流") - private List slStationList; - - @Schema(description = "位移") - private List wyStationList; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StStatusVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StStatusVo.java deleted file mode 100644 index e07c4aa..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StStatusVo.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class StStatusVo { - - @Schema(description = "最后数据时间") - private String tm; - - @Schema(description = "测站编码") - private String stcd; - - @Schema(description = "测站名称") - private String stnm; - - @Schema(description = "经度") - private BigDecimal lgtd; - - @Schema(description = "纬度") - private BigDecimal lttd; - - @Schema(description = "状态 0 离线 1在线") - private Integer status; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StStbprpCctvVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StStbprpCctvVo.java deleted file mode 100644 index 25f32fc..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StStbprpCctvVo.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.StStbprpCctv; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@EqualsAndHashCode(callSuper = true) -@Data -public class StStbprpCctvVo extends StStbprpCctv { - - @Schema(description="站点名称") - private String stnm; - - @Schema(description="视频名称") - private String name; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRRVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRRVo.java deleted file mode 100644 index f73e117..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRRVo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class StWaterRRVo extends GenericPageParams { - - @TableField(exist = false) - @Schema(description = "干渠1灌溉供水总合计") - private BigDecimal mci1VSum = BigDecimal.ZERO; - - - @TableField(exist = false) - @Schema(description = "干渠2灌溉供水总合计") - private BigDecimal mci2VSum = BigDecimal.ZERO; - - @TableField(exist = false) - @Schema(description = "生态供水合计") - private BigDecimal ecologyVSum = BigDecimal.ZERO; - - @TableField(exist = false) - @Schema(description = "供水总合计") - private BigDecimal totalSum = BigDecimal.ZERO; - - -// List list; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRReorganizeVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRReorganizeVo.java deleted file mode 100644 index 4668d8a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRReorganizeVo.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import java.math.BigDecimal; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; - -import lombok.Data; - -/** -*@description -*@author cxw -*@classname StWaterRReorganizeVo.java -*@create 2024-07-24, 周三, 11:51:01 -*/ -@Data -@ExcelIgnoreUnannotated -public class StWaterRReorganizeVo { - - @ExcelProperty({"${title}", "时间"}) - @ColumnWidth(15) - private String tm; - - /** - * 流量(生态供水) - */ - @ExcelProperty({"${title}", "生态供水", "流量(m³/s)"}) - private BigDecimal ecologyQ; - - /** - * 水量(生态供水) - */ - @ExcelProperty({"${title}", "生态供水", "水量(万m³)"}) - private BigDecimal ecologyV; - - /** - * 干渠灌溉流量1 - */ - @ExcelProperty({"${title}", "干渠灌溉流量1", "流量(m³/s)"}) - private BigDecimal mci1Q; - - /** - * 干渠灌溉水量1 - */ - @ExcelProperty({"${title}", "干渠灌溉水量1", "水量(万m³)"}) - private BigDecimal mci1V; - - /** - * 干渠灌溉流量1 - */ - @ExcelProperty({"${title}", "干渠灌溉流量2", "流量(m³/s)"}) - private BigDecimal mci2Q; - - /** - * 干渠灌溉水量1 - */ - @ExcelProperty({"${title}", "干渠灌溉水量2", "水量(万m³)"}) - private BigDecimal mci2V; - - /** - * 水量小计 - */ - @ExcelProperty({"${title}", "小计(万m³)"}) - private BigDecimal sumV; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRReorganizeYearVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRReorganizeYearVo.java deleted file mode 100644 index f945d39..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRReorganizeYearVo.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** -*@description -*@author cxw -*@classname StWaterRReorganizeYearVo.java -*@create 2024-07-24, 周三, 14:28:34 -*/ -@Data -@ExcelIgnoreUnannotated -public class StWaterRReorganizeYearVo { - - @Schema(description="时间") - @ExcelProperty({"${title}", "时间"}) - private String tm; - - /** - * 年度占比(干渠灌溉1) - */ - @Schema(description="年度占比(干渠灌溉1)") - @ExcelProperty({"${title}", "干渠灌溉1", "年度占比"}) - private String mci1YearRateV; - - /** - * 水量(干渠灌溉1) - */ - @Schema(description="水量(干渠灌溉1)") - @ExcelProperty({"${title}", "干渠灌溉1", "水量"}) - private String mci1V; - - /** - * 同比(干渠灌溉1) - */ - @Schema(description="同比(干渠灌溉1)") - @ExcelProperty({"${title}", "干渠灌溉1", "同比"}) - private String mci1YoyV; - - /** - * 环比(干渠灌溉1) - */ - @Schema(description="环比(干渠灌溉1)") - @ExcelProperty({"${title}", "干渠灌溉1", "环比"}) - private String mci1QoqV; - - /** - * 年度占比(干渠灌溉2) - */ - @Schema(description="年度占比(干渠灌溉2)") - @ExcelProperty({"${title}", "干渠灌溉2", "年度占比"}) - private String mci2YearRateV; - - /** - * 水量(干渠灌溉2) - */ - @Schema(description="水量(干渠灌溉2)") - @ExcelProperty({"${title}", "干渠灌溉2", "水量"}) - private String mci2V; - - /** - * 同比(干渠灌溉2) - */ - @Schema(description="同比(干渠灌溉2)") - @ExcelProperty({"${title}", "干渠灌溉2", "同比"}) - private String mci2YoyV; - - /** - * 环比(干渠灌溉2) - */ - @Schema(description="环比(干渠灌溉2)") - @ExcelProperty({"${title}", "干渠灌溉2", "环比"}) - private String mci2QoqV; - - /** - * 年度占比(生态供水) - */ - @Schema(description="年度占比(生态供水)") - @ExcelProperty({"${title}", "生态供水", "年度占比"}) - private String ecologyYearRateV; - - /** - * 水量(生态供水) - */ - @Schema(description="水量(生态供水)") - @ExcelProperty({"${title}", "生态供水", "水量"}) - private String ecologyV; - - /** - * 同比(生态供水) - */ - @Schema(description="同比(生态供水)") - @ExcelProperty({"${title}", "生态供水", "同比"}) - private String ecologyYoyV; - - /** - * 环比(生态供水) - */ - @Schema(description="环比(生态供水)") - @ExcelProperty({"${title}", "生态供水", "环比"}) - private String ecologyQoqV; - -// @Schema(description="时间") -// @ExcelProperty({"${title}", "时间"}) -// private String tm; -// -// /** -// * 年度占比(生态供水) -// */ -// @Schema(description="年度占比(生态供水)") -// @ExcelProperty({"${title}", "生态供水", "年度占比"}) -// private String ecologyYearRateV; -// -// /** -// * 水量(生态供水) -// */ -// @Schema(description="水量(生态供水)") -// @ExcelProperty({"${title}", "生态供水", "水量"}) -// private String ecologyV; -// -// /** -// * 同比(生态供水) -// */ -// @Schema(description="同比(生态供水)") -// @ExcelProperty({"${title}", "生态供水", "同比"}) -// private String ecologyYoyV; -// -// /** -// * 环比(生态供水) -// */ -// @Schema(description="环比(生态供水)") -// @ExcelProperty({"${title}", "生态供水", "环比"}) -// private String ecologyQoqV; -// -// /** -// * 年度占比(生活供水) -// */ -// @Schema(description="年度占比(生活供水)") -// @ExcelProperty({"${title}", "生活供水", "年度占比"}) -// private String lifeYearRateV; -// -// /** -// * 水量(生活供水) -// */ -// @Schema(description="水量(生活供水)") -// @ExcelProperty({"${title}", "生活供水", "水量"}) -// private String lifeV; -// -// /** -// * 同比(生活供水) -// */ -// @Schema(description="同比(生活供水)") -// @ExcelProperty({"${title}", "生活供水", "同比"}) -// private String lifeYoyV; -// -// /** -// * 环比(生活供水) -// */ -// @Schema(description="环比(生活供水)") -// @ExcelProperty({"${title}", "生活供水", "环比"}) -// private String lifeQoqV; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRVo.java deleted file mode 100644 index 4e7e1c7..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StWaterRVo.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * @author cxw - * @description: (描述这个类或者方法的作用) - * @classname StWaterRVo.java - * @create 2024-07-10, 星期三, 10:26:04 - */ -@Data -@ExcelIgnoreUnannotated -public class StWaterRVo { - - @ExcelProperty({"${title}", "站码"}) - @ColumnWidth(15) - private String stcd; - - @ExcelProperty({"${title}", "时间"}) - @ColumnWidth(15) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - @ExcelProperty({"${title}", "流量(m³/s)"}) - private BigDecimal q; - - @ExcelProperty({"${title}", "水量(m³)"}) - private BigDecimal v; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBCount24Vo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBCount24Vo.java deleted file mode 100644 index 7684a17..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBCount24Vo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class StZqrlBCount24Vo { - private String stcd; - - private BigDecimal currWaterLevel; - - private BigDecimal flowNum; - - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - private BigDecimal sum24; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBCountVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBCountVo.java deleted file mode 100644 index 62a2bb0..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBCountVo.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class StZqrlBCountVo { - @Schema(description = "站点编码") - private String stcd; - - @Schema(description = "当前溢洪流量") - private BigDecimal val; //溢洪流量 - - @Schema(description = "当日溢洪流量") - private BigDecimal currDayValSum; //当日溢洪流量 - - @Schema(description = "数据更新时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @Schema(description = "当月溢洪流量") - private BigDecimal currMonthSum;// 当月溢洪流量 - - @Schema(description = "当年溢洪流量") - private BigDecimal currYearSum; // 当年溢洪流量 - - @Schema(description = "本年溢洪次数") - private Long currYearCount; // 本年溢洪次数 - - @Schema(description = "本年单次最大溢洪量") - private BigDecimal currYearMaxVal; // 本年单次最大溢洪量 - - @Schema(description = "最大溢洪量时间段") - private String maxOverflowPeriod; // 本年最大溢洪量时间段 - - - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBVo.java deleted file mode 100644 index b153741..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StZqrlBVo.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.Date; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class StZqrlBVo { - - private String stcd; - - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - //水位 - private BigDecimal waterLevel; - - //溢洪量 - private BigDecimal flowNum; - - //库容 - private BigDecimal boxNum; - - - @Schema(description="累计溢洪量") - @TableField(exist = false) - private BigDecimal qtotal; - - public LocalDateTime getModitimeAsLocalDateTime() { - if (tm == null) { - return null; - } - return tm.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/StatusCountVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/StatusCountVo.java deleted file mode 100644 index fe6526a..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/StatusCountVo.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import lombok.Data; - -@Data -public class StatusCountVo { - private Integer status; - private Integer count; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/SyStcdMpcdVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/SyStcdMpcdVo.java deleted file mode 100644 index 712fb33..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/SyStcdMpcdVo.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import lombok.Data; - -import java.util.List; - -@Data -public class SyStcdMpcdVo { - - private String stcd; - - private List mpcdList; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/SzCaseStatisticsVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/SzCaseStatisticsVo.java deleted file mode 100644 index b65f8b9..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/SzCaseStatisticsVo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class SzCaseStatisticsVo { - - @Schema(description="月份") - private Integer month; - - @Schema(description="类型") - private Integer type; - - @Schema(description="数量") - private Integer count; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/TyYearRainfallVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/TyYearRainfallVo.java deleted file mode 100644 index 4a95238..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/TyYearRainfallVo.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import com.gunshi.project.hsz.model.TyYearRainfall; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/7/15 - * - * @author wanyan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class TyYearRainfallVo extends TyYearRainfall { - - @Schema(description = "月降雨量") - private List list; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/WarningData.java b/src/main/java/com/gunshi/project/hsz/entity/vo/WarningData.java deleted file mode 100644 index 75be7e8..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/WarningData.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -/** - * @Author xusan - * @Date 2023/7/4 10:28 - * @Notes - **/ -@Data -public class WarningData { - - @Schema(description = "服务名") - private String effectArea; - - @Schema(description = "预警信息列表") - private List typeList; - - - @Data - public static class TypeList { - - @Schema(description = "预警信息详情") - private List warnList; - - @Schema(description = "预警信号") - private String type; - - } - - @Data - public static class Warning { - - @Schema(description = "ID") - private int id; - - @Schema(description = "创建时间") - private String createTime; - - @Schema(description = "发布时间") - private String publishTime; - - @Schema(description = "预警开始时间") - private String startTime; - - @Schema(description = "预警结束时间") - private String endTime; - - @Schema(description = "预警类型") - private String warnSignalType; - - @Schema(description = "预警级别") - private String warnSignalLevel; - - @Schema(description = "预警地区") - private String effectArea; - - @Schema(description = "发布单位") - private String publishUnit; - - @Schema(description = "预警内容") - private String content; - - } -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAlarmCount.java b/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAlarmCount.java deleted file mode 100644 index 315d0af..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAlarmCount.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import lombok.Data; - -@Data -public class WaterAlarmCount { - - private String year; - - private String month; - - private String alarmCount; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAlarmTypeCount.java b/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAlarmTypeCount.java deleted file mode 100644 index 6fed196..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAlarmTypeCount.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import lombok.Data; - -@Data -public class WaterAlarmTypeCount { - - private Integer year; - - private Integer type; - - private Integer count; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAnalysisVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAnalysisVo.java deleted file mode 100644 index ce41399..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/WaterAnalysisVo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class WaterAnalysisVo { - - - @Schema(description = "用水类型 0灌溉 1生态") - private Integer type; - - @Schema(description = "计划供水量") - private BigDecimal planSupply; - - @Schema(description = "实际供水量") - private BigDecimal realSupply; - - @Schema(description = "偏差量") - private BigDecimal gapSupply; - -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/WaterCapacityAnalysisVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/WaterCapacityAnalysisVo.java deleted file mode 100644 index 1601caf..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/WaterCapacityAnalysisVo.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -@Data -public class WaterCapacityAnalysisVo { - - @Schema(description = "时间") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date tm; - - @Schema(description = "蓄水量") - private BigDecimal cap; - - @Schema(description = "变化率") - private BigDecimal rate; -} diff --git a/src/main/java/com/gunshi/project/hsz/entity/vo/WdCountVo.java b/src/main/java/com/gunshi/project/hsz/entity/vo/WdCountVo.java deleted file mode 100644 index 2769f1d..0000000 --- a/src/main/java/com/gunshi/project/hsz/entity/vo/WdCountVo.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.entity.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@Schema(description = "水量调度年度完成次数返回Vo") -public class WdCountVo { - - @Schema(description = "年份") - private String year; - - @Schema(description = "完成数量") - private Integer count; -} diff --git a/src/main/java/com/gunshi/project/hsz/grb/RainGrib2Layer.java b/src/main/java/com/gunshi/project/hsz/grb/RainGrib2Layer.java deleted file mode 100644 index c01c1ad..0000000 --- a/src/main/java/com/gunshi/project/hsz/grb/RainGrib2Layer.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.gunshi.project.hsz.grb; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * Description: - * Created by wanyan on 2024/2/23 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class RainGrib2Layer { - - @Schema(description = "tmRange") - private TmRange tmRange; - - @Schema(description = "data") - public BigDecimal[][] data; - - @Schema(description = "图片base64数据") - private String base64; - - @Schema(description = "x1") - private BigDecimal x1; - - @Schema(description = "x2") - private BigDecimal x2; - - @Schema(description = "y1") - private BigDecimal y1; - - @Schema(description = "y2") - private BigDecimal y2; - - @Schema(description = "dw") - private BigDecimal dw; - - @Schema(description = "dh") - private BigDecimal dh; - - @Schema(description = "nw") - private int nw; - - @Schema(description = "nh") - private int nh; - -// public RainGrib2Layer createSubset(Double bx1, Double by1, Double bx2, Double by2) { -// int ix1 = 0, ix2 = nw - 1, iy1 = 0, iy2 = nh - 1; -// if (bx1 != null && bx1 > x1) { -// ix1 = (int)((nw - 1) * (bx1 - x1) / (x2 - x1)); -// } -// if (by1 != null && by1 > y1) { -// iy1 = (int)((nh - 1) * (by1 - y1) / (y2 - y1)); -// } -// if (bx2 != null && bx2 < x2) { -// ix2 = (int)Math.ceil((nw - 1) * (bx2 - x1) / (x2 - x1)); -// } -// if (by2 != null && by2 < y2) { -// iy2 = (int)Math.ceil((nh - 1) * (by2 - y1) / (y2 - y1)); -// } -// -// RainGrib2Layer ret = new RainGrib2Layer(); -// -// ret.tmRange = (TmRange) tmRange.clone(); -// ret.x1 = x1 + ix1 * dw; -// ret.y1 = y1 + iy1 * dh; -// ret.x2 = x1 + ix2 * dw; -// ret.y2 = y1 + iy2 * dh; -// ret.nw = ix2 - ix1 + 1; -// ret.nh = iy2 - iy1 + 1; -// ret.dw = dw; -// ret.dh = dh; -// ret.data = new float[ret.nh][ret.nw]; -// for (int iy = iy1; iy <= iy2; iy += 1) { -// for (int ix = ix1; ix <= ix2; ix += 1) { -// ret.data[iy - iy1][ix - ix1] = data[iy][ix]; -// } -// } -// -// return ret; -// } -// -// boolean setContent(Grib2FrameParams frame, Grib2LayerParams layer, byte[] bin) { -// if (layer.calDataLen() != bin.length) { -// return false; -// } -// -// x1 = frame.x1; -// x2 = frame.x2; -// y1 = frame.y1; -// y2 = frame.y2; -// nw = frame.nw; -// nh = frame.nh; -// dw = frame.dw; -// dh = frame.dh; -// tmRange = (TmRange) layer.tmRange.clone(); -// data = new float[nh][nw]; -// -// float decimalScale = layer.getDecimalScale(); -// float binaryScale = layer.getBinaryScale(); -// -// boolean constValue = layer.numBits == 0; -// float RValue = layer.R; -// -// try { -// BitInputStream bis = new BitInputStream(new ByteArrayInputStream(bin),null); -// for (int iy = 0; iy < nh; iy++) { -// for (int ix = 0; ix < nw; ix++) { -// if (constValue) { -// data[iy][ix] = RValue; -// } else { -// long v = bis.readBits(layer.numBits); -// double value = decimalScale * (layer.R + v * binaryScale); -// -// data[iy][ix] = (float)value; -// } -// } -// } -// bis.close(); -// return true; -// } catch (Exception e) { -// e.printStackTrace(); -// return false; -// } -// } -// -// @Override -// public Object clone() { -// RainGrib2Layer ret = new RainGrib2Layer(); -// -// ret.tmRange = (TmRange) tmRange.clone(); -// ret.x1 = x1; -// ret.y1 = y1; -// ret.x2 = x2; -// ret.y2 = y2; -// ret.nw = nw; -// ret.nh = nh; -// ret.dw = dw; -// ret.dh = dh; -// ret.data = new float[nh][nw]; -// for (int iy = 0; iy < nh; iy += 1) { -// for (int ix = 0; ix < nw; ix += 1) { -// ret.data[iy][ix] = data[iy][ix]; -// } -// } -// -// return ret; -// } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/grb/TmRange.java b/src/main/java/com/gunshi/project/hsz/grb/TmRange.java deleted file mode 100644 index 2331ddd..0000000 --- a/src/main/java/com/gunshi/project/hsz/grb/TmRange.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gunshi.project.hsz.grb; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -/** - * Description: - * Created by wanyan on 2024/2/23 - * - * @author wanyan - * @version 1.0 - */ -@Data -public class TmRange { - - public static final String TM_FORMAT = "yyyyMMddHH"; - - public static final String TM_FORMAT_RADAR = "yyyyMMddHHmm"; - - @Schema(description = "startTm") - private Date startTm; - - @Schema(description = "offset") - private int offset; - - @Schema(description = "interval") - private int interval; - - @Schema(description = "tm1") - private Date tm1; - - @Schema(description = "tm2") - private Date tm2; - - @Schema(description = "key") - private String key; - - - @Override - public Object clone() { - TmRange ret = new TmRange(); - ret.startTm = (Date)startTm.clone(); - ret.offset = offset; - ret.tm1 = (Date)tm1.clone(); - ret.tm2 = (Date)tm2.clone(); - ret.interval = interval; - ret.key = key; - return ret; - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/listener/OsmoticWaterRImportListener.java b/src/main/java/com/gunshi/project/hsz/listener/OsmoticWaterRImportListener.java deleted file mode 100644 index 45a560b..0000000 --- a/src/main/java/com/gunshi/project/hsz/listener/OsmoticWaterRImportListener.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.gunshi.project.hsz.listener; - -import com.alibaba.excel.context.AnalysisContext; -import com.alibaba.excel.event.AnalysisEventListener; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.gunshi.project.hsz.entity.vo.OsmoticWaterRVo; -import com.gunshi.project.hsz.model.OsmoticWaterR; -import com.gunshi.project.hsz.service.OsmoticWaterRService; -import com.gunshi.project.hsz.util.ConvertUtil; -import com.gunshi.project.hsz.util.ServiceException; -import com.gunshi.project.hsz.util.excel.ExcelListener; -import com.gunshi.project.hsz.util.excel.ExcelResult; -import com.gunshi.project.hsz.util.spring.SpringUtils; -import lombok.extern.slf4j.Slf4j; - -import java.util.List; - -/** - * @Author Hiram - * @Date 2023/03/14 10:23 - */ -@Slf4j -public class OsmoticWaterRImportListener extends AnalysisEventListener implements ExcelListener { - - private final OsmoticWaterRService osmoticWaterRService; - private int successNum = 0; - private int failureNum = 0; - private final StringBuilder successMsg = new StringBuilder(); - private final StringBuilder failureMsg = new StringBuilder(); - - public OsmoticWaterRImportListener() { - this.osmoticWaterRService = SpringUtils.getBean(OsmoticWaterRService.class); - } - - - /** - * 使用表格导入数据 - * @param osmoticWaterRVo - * @param analysisContext - */ - @Override - public void invoke(OsmoticWaterRVo osmoticWaterRVo, AnalysisContext analysisContext) { - OsmoticWaterR osmoticWaterR = ConvertUtil.entityToVo(osmoticWaterRVo, OsmoticWaterR.class); - osmoticWaterR.setId(IdWorker.getId()); - this.osmoticWaterRService.save(osmoticWaterR); - successNum++; -// successMsg.append("
").append(successNum).append("监测仪数据导入成功"); - } - - @Override - public void doAfterAllAnalysed(AnalysisContext analysisContext) { - - } - - /** - * 导入结果 - * @return - */ - @Override - public ExcelResult getExcelResult() { - return new ExcelResult() { - - @Override - public String getAnalysis() { - if (failureNum > 0) { - failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确"); - throw new ServiceException(failureMsg.toString()); - } else { - successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条"); - } - return successMsg.toString(); - } - - @Override - public List getList() { - return null; - } - - @Override - public List getErrorList() { - return null; - } - }; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/listener/RotaImportListener.java b/src/main/java/com/gunshi/project/hsz/listener/RotaImportListener.java deleted file mode 100644 index 7cf6f1f..0000000 --- a/src/main/java/com/gunshi/project/hsz/listener/RotaImportListener.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.gunshi.project.hsz.listener; - -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.context.AnalysisContext; -import com.alibaba.excel.event.AnalysisEventListener; -import com.alibaba.excel.exception.ExcelDataConvertException; -import com.google.common.collect.Lists; -import com.gunshi.project.hsz.entity.vo.RotaVo; -import com.gunshi.project.hsz.service.RotaService; -import com.gunshi.project.hsz.util.excel.LengthValid; -import com.gunshi.project.hsz.util.spring.SpringUtils; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; - -import java.lang.reflect.Field; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -/** - * 读取excel数据 - */ -@Slf4j -public class RotaImportListener extends AnalysisEventListener { - - private final RotaService rotaService; - - - /**临时存储正常数据集合*/ - private List successDataList = Lists.newArrayList(); - - /**临时存错误储数据集合*/ - private List errorDataList = Lists.newArrayList(); - - /**自定义消费者函数接口用于自定义监听器中数据组装*/ - private final Consumer> successConsumer; - - private final Consumer> errorConsumer; - - public RotaImportListener(Consumer> successConsumer, Consumer> errorConsumer) { - this.successConsumer = successConsumer; - this.errorConsumer = errorConsumer; - this.rotaService = SpringUtils.getBean(RotaService.class); - } - - /**手机号格式异常日志处理*/ - @Override - public void onException(Exception exception, AnalysisContext context) { - log.error("异常信息:{}", exception.getMessage()); - // 如果是某一个单元格的转换异常 能获取到具体行号,如果要获取头的信息 配合invokeHeadMap使用 - if (exception instanceof ExcelDataConvertException) { - ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception; - log.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(), excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData()); - }else if (exception instanceof IllegalArgumentException){ - throw new IllegalArgumentException(exception.getMessage()); - } - } - - /** - * 在这里进行模板的判断 - * @param headMap 存放着导入表格的表头,键是索引,值是名称 - * @param context - */ - @Override - public void invokeHeadMap(Map headMap, AnalysisContext context) { - //只校验第三行表头是否正确 - Integer rowNum = context.getCurrentRowNum(); - if (rowNum == 2) { - // 获取数据实体的字段列表 - Field[] fields = RotaVo.class.getDeclaredFields(); - // 遍历字段进行判断 - for (Field field : fields) { - // 获取当前字段上的ExcelProperty注解信息 - ExcelProperty fieldAnnotation = field.getAnnotation(ExcelProperty.class); - // 判断当前字段上是否存在ExcelProperty注解 - if (fieldAnnotation != null) { - String value = fieldAnnotation.value()[1]; - // 存在ExcelProperty注解则根据注解的value值到表格中对比是否存在对应的表头 - if(!headMap.containsValue(value)){ - // 如果表格不包含模版类字段中的表头,则抛出异常不再往下执行 - throw new RuntimeException("模板错误,请检查导入模板"); - } - } - } - } - } - - - /**每行读取监听触发逻辑*/ - @SneakyThrows - @Override - public void invoke(RotaVo rotaVo, AnalysisContext analysisContext) { - //获取总行数 - Integer rowNumber = analysisContext.readSheetHolder().getApproximateTotalRowNumber(); - //行数 - int row = analysisContext.readRowHolder().getRowIndex() + 1; - log.info("第" + row + "行数据进行处理"); - // 手机号格式校验 - if(validParam(rotaVo,row)){ - successDataList.add(rotaVo); - }else{ - errorDataList.add(rotaVo); - } - } - - private Boolean validParam(RotaVo rotaVo, int row) throws IllegalAccessException { - // 参数校验 - Field[] fields = rotaVo.getClass().getDeclaredFields(); - Boolean flag = true; - String msg = ""; - for (Field field : fields) { - //设置可访问 - field.setAccessible(true); - //判断字段是否添加校验 - boolean valid = field.isAnnotationPresent(LengthValid.class); - if (valid) { - String name = field.getName(); - - //获取注解信息 - LengthValid annotation = field.getAnnotation(LengthValid.class); - int cell = 4; - if("leaderPhone".equals(name)){ - cell = 3; - } - //行数列数 - msg += "第" + row + "行的第" + cell + "列:"; - //值 - String value = (String) field.get(rotaVo); - System.out.println("value = "+value); - if(value.length() != annotation.length()){ - //错误信息 - msg += annotation.msg(); - flag = false; - } - Long userId = rotaService.checkPhone(value); - if(userId == null){ - //错误信息 - String err = "手机号"+value+"未找到对应的系统用户,请先核实用户手机号再进行模板导入!"; - msg += err; - flag = false; - }else{ - if(cell == 3){ - rotaVo.setLeaderUserId(userId); - }else { - rotaVo.setDutyUserId(userId); - } - } - } - rotaVo.setErrorMsg(msg); - } - return flag; - } - - @Override - public void doAfterAllAnalysed(AnalysisContext analysisContext) { - if (CollectionUtils.isNotEmpty(successDataList)) { - successConsumer.accept(successDataList); - } - if (CollectionUtils.isNotEmpty(errorDataList)) { - errorConsumer.accept(errorDataList); - } - } - - /** - *监听器的hasNext()方法时没有注意到默认返回的是false,导致一进监听器就判断已经没有下一条记录,直接跳出监听器,然后导入就完成,也不会报错,改成返回true即可解决 - */ - @Override - public boolean hasNext(AnalysisContext analysisContext) { - return true; - } -} - diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AlarmSetMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AlarmSetMapper.java deleted file mode 100644 index 1d5bb35..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AlarmSetMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.model.AlarmSet; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface AlarmSetMapper extends BaseMapper { - - @Select( - """ - -""" - ) - AlarmSet queryByStcd(@Param("stcd") String stcd); - - @Select(""" - select t1.* from st_stbprp_b t1 - join st_stbprp_b_elem t2 - on t1.stcd = t2.stcd - where t2.elem = 'z' -""") - List listStation(); - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AppVersionRecordMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AppVersionRecordMapper.java deleted file mode 100644 index b1fabb2..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AppVersionRecordMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AppVersionRecord; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: APP版本记录 - * author: xusan - * date: 2024-11-12 10:14:50 - */ -@Mapper -public interface AppVersionRecordMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessCategoryMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessCategoryMapper.java deleted file mode 100644 index c388518..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessCategoryMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AssessCategory; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 考核类目 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Mapper -public interface AssessCategoryMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessIndicatorMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessIndicatorMapper.java deleted file mode 100644 index 1f31276..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessIndicatorMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.model.AssessIndicator; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: 考核指标 - * author: xusan - * date: 2024-09-03 17:46:56 - */ -@Mapper -public interface AssessIndicatorMapper extends BaseMapper { - - @Select(""" - - """) - Page choosePage(Page page,@Param("obj") AttCctvBasePage page1); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessIndicatorRatingMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessIndicatorRatingMapper.java deleted file mode 100644 index 6a750dd..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessIndicatorRatingMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AssessIndicatorRating; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 考核指标评分细则 - * author: xusan - * date: 2024-09-03 17:47:17 - */ -@Mapper -public interface AssessIndicatorRatingMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessObjectMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessObjectMapper.java deleted file mode 100644 index 5daecfb..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessObjectMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AssessObject; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 考核对象 - * author: xusan - * date: 2024-09-05 14:19:30 - */ -@Mapper -public interface AssessObjectMapper extends BaseMapper { - - @Select(""" - - """) - List queryObjectByTaskId(@Param("taskId") Long taskId); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessObjectRatingMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessObjectRatingMapper.java deleted file mode 100644 index 3cda172..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessObjectRatingMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AssessObjectRating; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 考核对象指标得分详情 - * author: xusan - * date: 2024-09-10 10:44:14 - */ -@Mapper -public interface AssessObjectRatingMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessTaskMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessTaskMapper.java deleted file mode 100644 index 6a83bec..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessTaskMapper.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.so.AssessTaskPageSo; -import com.gunshi.project.hsz.entity.vo.AssessResultVo; -import com.gunshi.project.hsz.model.AssessIndicator; -import com.gunshi.project.hsz.model.AssessObject; -import com.gunshi.project.hsz.model.AssessTask; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 考核任务 - * author: xusan - * date: 2024-09-05 14:19:04 - */ -@Mapper -public interface AssessTaskMapper extends BaseMapper { - - @Select(""" - - """) - List queryIndicators(@Param("templateId") Long templateId); - - @Select(""" - - """) - Page myTodo(Page page,@Param("obj") AssessTaskPageSo page1); - - @Select(""" - - """) - Page myDone(Page page,@Param("obj") AssessTaskPageSo page1,@Param("taskIds") List taskIds); - - @Select(""" - - """) - List selectObject(@Param("taskId") Long id,@Param("userId") Long userId); - - @Select(""" - - """) - List result(@Param("taskId") Long id); - - @Select(""" - - """) - List myDoneTask(@Param("userId") Long userId); - - @Select(""" - - """) - List resultStat(@Param("obj") MonthRangeSo monthRangeSo); - - @Select(""" - - """) - Page listPage(Page page,@Param("obj") AssessTaskPageSo page1); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessTeamMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessTeamMapper.java deleted file mode 100644 index b030f11..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessTeamMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AssessTeam; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 考核组成员 - * author: xusan - * date: 2024-09-05 14:19:47 - */ -@Mapper -public interface AssessTeamMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessTeamRatingMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessTeamRatingMapper.java deleted file mode 100644 index 690b7a9..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessTeamRatingMapper.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.so.AssessTaskPageSo; -import com.gunshi.project.hsz.entity.vo.AssessRatingVo; -import com.gunshi.project.hsz.entity.vo.AssessRectifyVo; -import com.gunshi.project.hsz.model.AssessTeamRating; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 考核评分详情 - * author: xusan - * date: 2024-09-05 14:20:04 - */ -@Mapper -public interface AssessTeamRatingMapper extends BaseMapper { - - @Select(""" - - """) - List scoreDetail(@Param("teamId") Long teamId); - - @Select(""" - - """) - List scoreByObjectId(@Param("objectId") Long objectId); - - @Select(""" - - """) - Page listPage(Page page,@Param("obj") AssessTaskPageSo page1); - - @Select(""" - - """) - List rectifyStat(@Param("obj") MonthRangeSo monthRangeSo); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessTemplateIndicatorRelMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessTemplateIndicatorRelMapper.java deleted file mode 100644 index e53c8ad..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessTemplateIndicatorRelMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AssessTemplateIndicatorRel; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 模板关联指标 - * author: xusan - * date: 2024-09-04 13:43:05 - */ -@Mapper -public interface AssessTemplateIndicatorRelMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AssessTemplateMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AssessTemplateMapper.java deleted file mode 100644 index 35365ff..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AssessTemplateMapper.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AssessIndicator; -import com.gunshi.project.hsz.model.AssessTemplate; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 考核模板 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Mapper -public interface AssessTemplateMapper extends BaseMapper { - - @Select(""" - - """) - List queryIndicators(@Param("id") Long id); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttCctvBaseMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttCctvBaseMapper.java deleted file mode 100644 index ffb6d50..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttCctvBaseMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AttCctvBase; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 视频基本信息表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttCctvBaseMapper extends BaseMapper { - - - @Select(""" - select t1.*,t2.name as menuName - from att_cctv_base t1 - left join cctv_b_menu t2 on t1.menu_id = t2.id - order by t2.order_index asc -""") - List queryList(); - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttDamBaseMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttDamBaseMapper.java deleted file mode 100644 index 459ed38..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttDamBaseMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AttDamBase; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 大坝表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttDamBaseMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttDamProfileMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttDamProfileMapper.java deleted file mode 100644 index d083cc5..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttDamProfileMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AttDamProfile; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 监测断面信息表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttDamProfileMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttGateBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttGateBMapper.java deleted file mode 100644 index 19ee523..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttGateBMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.GateMonitorDataVo; -import com.gunshi.project.hsz.model.AttGateB; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 水闸基本情况调查表 - * author: xusan - * date: 2024-09-26 10:44:06 - */ -@Mapper -public interface AttGateBMapper extends BaseMapper { - - @Select(""" - - """) - List dataList(@Param("gateCode") String gateCode); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttGateValveMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttGateValveMapper.java deleted file mode 100644 index 1db5883..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttGateValveMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AttGateValve; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 闸阀信息表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttGateValveMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttMeaWeirMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttMeaWeirMapper.java deleted file mode 100644 index 15bc148..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttMeaWeirMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AttMeaWeir; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 量水堰表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttMeaWeirMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttResBaseMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttResBaseMapper.java deleted file mode 100644 index 67de35a..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttResBaseMapper.java +++ /dev/null @@ -1,335 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.so.DataQueryCommonSo; -import com.gunshi.project.hsz.entity.so.PicQuerySo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.model.*; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * 描述: 水库基本信息表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttResBaseMapper extends BaseMapper { - @Select(""" - - """) - List queryList(); - - @Select(""" - - """) - List queryListV2(); - - @Select(""" - - """) - List drpData(@Param("obj") DataQueryCommonSo dataQueryCommonSo); - - @Select(""" - - """) - List rzData(@Param("obj") DataQueryCommonSo dataQueryCommonSo); - - @Select(""" - - """) - List realImg(@Param("resCode") String resCode); - - @Select(""" - - """) - List queryRzList(@Param("stcd") String stcd, @Param("stm") String startTime, @Param("etm") String endTime); - - @Select(""" - - """) - AttResMonitorVo latestRz(@Param("stcd") String stcd); - - - @Select(""" - - """) - BigDecimal oldRz(@Param("stcd") String stcd,@Param("type") Integer type, @Param("dateTime") Date dateTime,@Param("nowTime") Date nowTime); - - @Select(""" - - """) - BigDecimal queryMaxRzByStcdAndTime(@Param("stcd") String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime); - - @Select(""" - - """) - BigDecimal queryRiverMaxRz(@Param("stcd") String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime); - - @Select(""" - - """) - List channel(@Param("resCode") String resCode); - - @Select(""" - - """) - Page imageInfo(@Param("page") Page page ,@Param("obj") PicQuerySo picQuerySo); - - @Select(""" - - """) - List queryWaterList(); - - @Select(""" - - """) - List drp(@Param("obj") DataQueryCommonSo dataQueryCommonSo); - - @Select(""" - - """) - List rz(@Param("obj") DataQueryCommonSo dataQueryCommonSo); - - @Select(""" - - """) - AttRvMonitorVo newRz(@Param("stcd") String stcd); - - @Select(""" - - """) - Page rzDataPage(Page page,@Param("obj") PicQuerySo picQuerySo); - - @Select(""" - select * from public.dam_brief_r dbr - where 1=1 - and date=#{todayStr} - order by date desc - limit 1; - """) - ResBriefVo getBrief(String todayStr); - - @Select(""" - select * from public.dam_brief_r dbr - where 1=1 - and date between #{startDate} and #{endDate} - order by date desc - """) - List getBriefList(String startDate, String endDate); - - -// @Select(""" -// select t.stcd,t.stnm,t.lgtd as lgtd, -// t.lttd as lttd,t.sttp,t.adcd,t.rvnm,t.stlc,t.source,t.esstym,s.tm,s.z,s.q,sad.adnm, -// srb.wrz,srb.grz,srb.invrz,srb.invrztm,sprr.h1,sprr.h3,sprr.h6,sprr.h12,sprr.h24,sprr.today -// from public.st_stbprp_b t -// left join public.st_river_r_real s on t.stcd = s.stcd -// left join public.st_addvcd_d sad on t.adcd = sad.adcd -// left join public.st_rvfcch_b srb on t.stcd = srb.stcd -// left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd -// where t.sttp = 'ZZ' and t.stcd = #{stcd} -//""") -// List queryWaterListByStcd(@Param("stcd") String stcd); - - @Select(""" - select t.stcd,t.stnm,t.lgtd as lgtd, - t.lttd as lttd,t.sttp,t.adcd,t.rvnm,t.stlc,t.source,t.esstym,s.tm,s.z as z,s.q,sad.adnm, - srb.warn_water_level as wrz,srb.promise_water_level as grz,sprr.h1,sprr.h3,sprr.h6,sprr.h12,sprr.h24,sprr.today - from public.st_stbprp_b t - left join public.st_river_r_real s on t.stcd = s.stcd - left join public.st_addvcd_d sad on t.adcd = sad.adcd - left join public.alarm_set srb on t.stcd = srb.stcd - left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd - where t.stcd = #{stcd} -""") - List queryWaterListByStcd(@Param("stcd") String stcd); - - - @Select(""" - select t.stcd,t.stnm,t.lgtd as lgtd, - t.lttd as lttd,t.sttp,t.adcd,t.rvnm,t.stlc,t.source,t.esstym,s.tm,s.z as z,s.q,sad.adnm, - srb.warn_water_level as wrz,srb.promise_water_level as grz,sprr.h1,sprr.h3,sprr.h6,sprr.h12,sprr.h24, - sprr.today,arb.dead_lev as deadLev - from public.st_stbprp_b t - left join public.st_river_r_real s on t.stcd = s.stcd - left join public.st_addvcd_d sad on t.adcd = sad.adcd - left join public.alarm_set srb on t.stcd = srb.stcd - left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd - left join public.att_res_base arb on 1=1 - left join public.st_stbprp_b_elem stbe on t.stcd = stbe.stcd - where stbe.elem = 'z' -""") - //TODO 站点需要更改 - List queryWaterListUpAndLow(); - - @Select(""" - select t1.stcd from st_stbprp_b t1 - join st_stbprp_b_elem t2 - on t1.stcd = t2.stcd - where t2.elem = 'z' -""") - List getRiverStcd(); - - @Select(""" - select t1.stcd,t1.stnm,t1.lgtd lgtd,t1.lttd lttd,t1.source,t1.sttp,t1.stlc,t1.adcd,t1.esstym from st_stbprp_b t1 - where t1.stcd = #{stcd} -""") - List queryYhd(@Param("stcd") String stcd); - - - @Select(""" - select t.stcd,t.stnm,t.lgtd lgtd,t.lttd lttd,t.source,t.sttp,t.stlc,t.adcd,t.esstym,s.res_code,s.fl_low_lim_lev, - s.tot_cap,s.ben_res_cap,s.norm_wat_lev,s.crest_elev,s.des_flood_lev,s.dead_lev,s.cal_flood_lev,s.wat_shed_area,s.dead_cap,sad.adnm, - m.tm,m.rz,(m.rz-s.fl_low_lim_lev) as aFsltdz,sprr.tm as drpTm,sprr.h1,sprr.h3,sprr.h6,sprr.h12,sprr.h24,sprr.today, - case when s.cal_flood_lev is not null and m.rz-s.cal_flood_lev >= 0 then 1 else 0 end as calState, - case when s.des_flood_lev is not null and m.rz-s.des_flood_lev >= 0 then 1 else 0 end as desState, - case when s.fl_low_lim_lev is not null and m.rz-s.fl_low_lim_lev >= 0 then 1 else 0 end as flState - from public.st_stbprp_b t - left join public.att_res_base s on 1=1 - left join public.st_addvcd_d sad on t.adcd = sad.adcd - left join public.st_rsvr_r_real m on t.stcd = m.stcd - left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd - join public.st_stbprp_b_elem stbe on t.stcd = stbe.stcd - where stbe.elem ='rz' - order by aFsltdz desc nulls last -""") - List queryList2(); - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttResBuildingMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttResBuildingMapper.java deleted file mode 100644 index 67dccf8..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttResBuildingMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.*; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水库基本信息表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttResBuildingMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttSpillwayBaseMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttSpillwayBaseMapper.java deleted file mode 100644 index 434dced..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttSpillwayBaseMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AttSpillwayBase; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 溢洪道 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttSpillwayBaseMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/AttWaterItemMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/AttWaterItemMapper.java deleted file mode 100644 index 059135c..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/AttWaterItemMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.AttWaterItem; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水质整编展示项目表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface AttWaterItemMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/BroadcastStationMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/BroadcastStationMapper.java deleted file mode 100644 index 51f575c..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/BroadcastStationMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.BroadcastStation; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: - * author: xusan - * date: 2024-09-25 10:12:34 - */ -@Mapper -public interface BroadcastStationMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/BroadcastTemplateMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/BroadcastTemplateMapper.java deleted file mode 100644 index 9dcd513..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/BroadcastTemplateMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.BroadcastTemplate; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: - * author: xusan - * date: 2024-09-25 10:12:13 - */ -@Mapper -public interface BroadcastTemplateMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/BroadcastWarnMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/BroadcastWarnMapper.java deleted file mode 100644 index 05429a3..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/BroadcastWarnMapper.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.BroadcastWarnPageSo; -import com.gunshi.project.hsz.model.BroadcastWarn; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: - * author: xusan - * date: 2024-09-25 10:12:51 - */ -@Mapper -public interface BroadcastWarnMapper extends BaseMapper { - - @Select(""" - - """) - Page pageQuery(Page page,@Param("obj") BroadcastWarnPageSo page1); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ByLogDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ByLogDetailMapper.java deleted file mode 100644 index 1a407ad..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ByLogDetailMapper.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.so.ByLogPageSo; -import com.gunshi.project.hsz.model.ByLogDetail; -import jakarta.validation.constraints.NotNull; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.io.Serializable; -import java.util.List; - -@Mapper -public interface ByLogDetailMapper extends BaseMapper { - - @Select(""" - -""") - List selectDetail(@Param("logId") Long id,@Param("dto") ByLogPageSo pageSo); - - @Select(""" - select t1.id,t1.by_log_id,t1.pre_place_detail_id as ppdi,t1.pre_method,t1.pre_effect,t1.pre_person_id, - t2.detail_name as ppdn,t3.id as ppi,t3.pre_name as ppn - from by_log_detail t1 - join pre_place_detail t2 - on t1.pre_place_detail_id = t2.id - join pre_place t3 - on t2.pre_id = t3.id - where t1.by_log_id = #{logId} -""") - List selectDetailList(@Param("logId") Long id); - - - @Select(""" - select count(*) from by_log_detail t1 where t1.pre_place_detail_id = #{id} -""") - int selectByPPDi(@Param("id") Serializable id); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ByLogMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ByLogMapper.java deleted file mode 100644 index 5950384..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ByLogMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ByLog; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface ByLogMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ByPlanDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ByPlanDetailMapper.java deleted file mode 100644 index cdcac5d..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ByPlanDetailMapper.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.so.ByPlanPageSo; -import com.gunshi.project.hsz.model.ByPlanDetail; -import jakarta.validation.constraints.NotNull; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.io.Serializable; -import java.util.List; - -@Mapper -public interface ByPlanDetailMapper extends BaseMapper { - @Select(""" - -""") - List selectList(@Param("planId")String planId, @Param("dto") ByPlanPageSo dto); - - - @Select(""" - select count(*) - from by_plan_detail t - where t.pre_place_detail_id = #{id} -""") - int selectByPPDI(@Param("id") Serializable id); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ByPlanMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ByPlanMapper.java deleted file mode 100644 index 733ad68..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ByPlanMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ByPlanPageSo; -import com.gunshi.project.hsz.model.ByPlan; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface ByPlanMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/BzDictRelMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/BzDictRelMapper.java deleted file mode 100644 index 2fb966e..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/BzDictRelMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.BzDictRel; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 业务关联字典 - * author: xusan - * date: 2024-08-28 10:05:21 - */ -@Mapper -public interface BzDictRelMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/CctvBMenuMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/CctvBMenuMapper.java deleted file mode 100644 index 1c02c71..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/CctvBMenuMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.CctvBMenu; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 视频点目录 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface CctvBMenuMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/DispatchRecordMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/DispatchRecordMapper.java deleted file mode 100644 index 3dfb8f2..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/DispatchRecordMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.DispatchRecord; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 调度记录 - * author: xusan - * date: 2024-10-09 09:56:28 - */ -@Mapper -public interface DispatchRecordMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/FileAssociationsMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/FileAssociationsMapper.java deleted file mode 100644 index 1016ddb..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/FileAssociationsMapper.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.FileAssociations; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 文件关联业务表 - * author: xusan - * date: 2024-07-17 10:09:40 - */ -@Mapper -public interface FileAssociationsMapper extends BaseMapper { - - @Select(""" - - """) - List getFiles(@Param("tableName") String tableName,@Param("businessId") String businessId); - - @Select(""" - - """) - List getFiles2(@Param("tableName") String tableName,@Param("businessId") String businessId); - - - - - @Select(""" - - """) - List getFiles1(@Param("tableName") String tableName,@Param("businessId") String businessId,@Param("type") String type); - - @Select(""" - - """) - List queryFileList(@Param("businessId") String businessId,@Param("tableName") String tableName,@Param("type") String type); - - @Select(""" - - """) - List getFilesByIds(@Param("ids") List ids); - - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchCommandMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchCommandMapper.java deleted file mode 100644 index e29d4b5..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchCommandMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastDispatchCommand; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 调度指令表 - * author: xusan - * date: 2024-12-19 - */ -@Mapper -public interface ForecastDispatchCommandMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchPlanMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchPlanMapper.java deleted file mode 100644 index 668d139..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchPlanMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastDispatchPlan; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 调度方案主表 - * author: xusan - * date: 2024-12-19 - */ -@Mapper -public interface ForecastDispatchPlanMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchResultMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchResultMapper.java deleted file mode 100644 index 138c22d..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastDispatchResultMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -import com.gunshi.project.hsz.model.ForecastDispatchResult; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 调度结果表 - * author: xusan - * date: 2024-12-19 - */ -@Mapper -public interface ForecastDispatchResultMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastKMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastKMapper.java deleted file mode 100644 index be3e94b..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastKMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastK; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预报_前期影响雨量折减系数表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Mapper -public interface ForecastKMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastPPaRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastPPaRMapper.java deleted file mode 100644 index 24a6a9a..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastPPaRMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastPPaR; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预报_降雨径流关系表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Mapper -public interface ForecastPPaRMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastPaMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastPaMapper.java deleted file mode 100644 index b296ea6..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastPaMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastPa; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预报_土壤含水量表 - * author: cxw - * date: 2024-08-02 12:23:07 - */ -@Mapper -public interface ForecastPaMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastProjectMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastProjectMapper.java deleted file mode 100644 index 3b86ec6..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastProjectMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastProject; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预报_预测方案管理表 - * author: cxw - * date: 2024-08-05 11:41:45 - */ -@Mapper -public interface ForecastProjectMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastResultsMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastResultsMapper.java deleted file mode 100644 index bc22288..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastResultsMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastResults; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预报_预测结果表 - * author: cxw - * date: 2024-08-05 11:41:45 - */ -@Mapper -public interface ForecastResultsMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastTaskMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastTaskMapper.java deleted file mode 100644 index e359d53..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastTaskMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastTask; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预报_预测自动任务管理表 - * author: cxw - * date: 2024-08-05 11:41:45 - */ -@Mapper -public interface ForecastTaskMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastUMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastUMapper.java deleted file mode 100644 index c27386a..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastUMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastU; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预报_时段单位线表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Mapper -public interface ForecastUMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ForecastUseparamMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ForecastUseparamMapper.java deleted file mode 100644 index 3f05c2b..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ForecastUseparamMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ForecastUseparam; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预报_通用参数管理 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Mapper -public interface ForecastUseparamMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/GatePoreMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/GatePoreMapper.java deleted file mode 100644 index 9a96610..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/GatePoreMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.GatePore; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 闸孔信息表 - * author: xusan - * date: 2024-09-26 10:44:57 - */ -@Mapper -public interface GatePoreMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/GateValveCctvRelMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/GateValveCctvRelMapper.java deleted file mode 100644 index 35897f3..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/GateValveCctvRelMapper.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.GateValveCctvRelPage; -import com.gunshi.project.hsz.entity.vo.GateValveCctvRelVo; -import com.gunshi.project.hsz.model.GateValveCctvRel; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 闸阀关联视频点 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface GateValveCctvRelMapper extends BaseMapper { - - @Select(""" - - """) - Page pages(@Param("page") Page page,@Param("obj") GateValveCctvRelPage obj); - - @Select(""" - - """) - List queryList(@Param("valveCode") String valveCode); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/GateValveRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/GateValveRMapper.java deleted file mode 100644 index 5015b59..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/GateValveRMapper.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.GateHisPageSo; -import com.gunshi.project.hsz.entity.vo.GateStautsVo; -import com.gunshi.project.hsz.model.GateValveR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 闸阀开关历史表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface GateValveRMapper extends BaseMapper { - - @Select(""" - - """) - Page pageQuery(Page page,@Param("obj") GateHisPageSo so); - - @Select(""" - - """) - List hisList(@Param("obj") GateHisPageSo so); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/GateValveRealMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/GateValveRealMapper.java deleted file mode 100644 index 8abdac4..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/GateValveRealMapper.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.GateHisPageSo; -import com.gunshi.project.hsz.entity.vo.GateStautsVo; -import com.gunshi.project.hsz.entity.vo.GateValveOplogVo; -import com.gunshi.project.hsz.model.GateValveReal; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 描述: 闸阀开关表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface GateValveRealMapper extends BaseMapper { - - @Select(""" - - """) - List gateStatusList(); - - @Select(""" - - """) - BigDecimal realQ(@Param("valveCode") String valveCode); - - @Select(""" - - """) - Page logPage(Page page,@Param("obj") GateHisPageSo so); - - @Select(""" - - """) - List logList(@Param("obj") GateHisPageSo so); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/HiddenInfoMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/HiddenInfoMapper.java deleted file mode 100644 index d247d7e..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/HiddenInfoMapper.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo; -import com.gunshi.project.hsz.entity.vo.StatusCountVo; -import com.gunshi.project.hsz.model.HiddenInfo; -import org.apache.ibatis.annotations.MapKey; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface HiddenInfoMapper extends BaseMapper { - - @Select(""" - -""") - List selectCount12(@Param("dto") MonthRangeSo monthRangeSo); - - - @Select(""" - -""") - @MapKey("status") - List selectCountType(@Param("dto") MonthRangeSo monthRangeSo); - - @Select(""" - WITH all_status AS ( - SELECT 0 AS status UNION - SELECT 1 AS status - ) - SELECT - a.status, - COALESCE(COUNT(h.id), 0) AS count - FROM all_status a - LEFT JOIN hidden_info h - ON a.status = h.status - AND TO_CHAR(h.found_time, 'YYYY') = #{year} - GROUP BY a.status - ORDER BY a.status; -""") - @MapKey("status") - List countYear(@Param("year") String year); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/HisWaterDataMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/HisWaterDataMapper.java deleted file mode 100644 index 2a25ade..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/HisWaterDataMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.dto.ExportCommonDto; -import com.gunshi.project.hsz.entity.so.HisWaterDataPageSo; -import com.gunshi.project.hsz.entity.vo.HisWaterDataVo; -import com.gunshi.project.hsz.model.HisWaterData; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface HisWaterDataMapper extends BaseMapper { - - @Select(""" - select * from his_water_data where type = 1 - order by year desc -""") - Page queryPage(Page page, @Param("obj") HisWaterDataPageSo queryWrapper); - - @Select(""" - -""") - List selectYearList(@Param("dto") ExportCommonDto dto); - - @Select(""" - select year from his_water_data where type = 1 - order by year desc -""") - List selectYear(); - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ISCAIEventMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ISCAIEventMapper.java deleted file mode 100644 index bc220a7..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ISCAIEventMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ISCAIEvent; -import org.apache.ibatis.annotations.Mapper; - -/** - * @author lyf - * @since 2025-11-04 - */ -@Mapper -public interface ISCAIEventMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/IaCBsnssinfoMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/IaCBsnssinfoMapper.java deleted file mode 100644 index 778770d..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/IaCBsnssinfoMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.HomeIaCBsnssinfoVo; -import com.gunshi.project.hsz.model.IaCBsnssinfo; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 防治区企事业单位汇总表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface IaCBsnssinfoMapper extends BaseMapper { - - @Select(""" - - """) - List getDetailsAndMonitoringDataLis(); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/IaCDanadMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/IaCDanadMapper.java deleted file mode 100644 index a2bc75f..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/IaCDanadMapper.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.HomeIaCDanadVo; -import com.gunshi.project.hsz.model.IaCDanad; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 危险区基本情况调查成果汇总表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface IaCDanadMapper extends BaseMapper { - - - @Select(""" - - """) - List getDetailsAndMonitoringDataLis(); - - @Select(""" - - """) - HomeIaCDanadVo detail(@Param("id") String id); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/IaCFlrvvlgMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/IaCFlrvvlgMapper.java deleted file mode 100644 index ad3a7d8..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/IaCFlrvvlgMapper.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.HomeIaCFlrvvlgVo; -import com.gunshi.project.hsz.model.IaCFlrvvlg; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 重要沿河村落居民户调查成果表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface IaCFlrvvlgMapper extends BaseMapper { - - - @Select(""" - - """) - List getDetailsAndMonitoringDataLis(); - - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/IcWaterForecastDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/IcWaterForecastDetailMapper.java deleted file mode 100644 index cbdd1d8..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/IcWaterForecastDetailMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.IcWaterForecastDetail; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface IcWaterForecastDetailMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/IcWaterForecastMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/IcWaterForecastMapper.java deleted file mode 100644 index b86e84e..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/IcWaterForecastMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.IcWaterForecast; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface IcWaterForecastMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/InspectItemMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/InspectItemMapper.java deleted file mode 100644 index d259a94..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/InspectItemMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.InspectItem; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 巡检项 - * author: xusan - * date: 2024-08-29 09:58:10 - */ -@Mapper -public interface InspectItemMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/InspectPointMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/InspectPointMapper.java deleted file mode 100644 index 241da2b..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/InspectPointMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.InspectPoint; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 巡检点 - * author: xusan - * date: 2024-08-29 09:57:48 - */ -@Mapper -public interface InspectPointMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskDetailMapper.java deleted file mode 100644 index 79c1595..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskDetailMapper.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.InspectProblemPageSo; -import com.gunshi.project.hsz.entity.vo.InspectProblemVo; -import com.gunshi.project.hsz.entity.vo.InspectTaskDetailVo; -import com.gunshi.project.hsz.common.model.InspectTaskDetail; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 巡查信息 - * author: xusan - * date: 2024-08-29 14:21:45 - */ -@Mapper -public interface InspectTaskDetailMapper extends BaseMapper { - - @Select(""" - - """) - List inspectInfo(@Param("id") Long id); - - @Select(""" - - """) - Page pageQuery(Page page,@Param("obj") InspectProblemPageSo page1); - - @Select(""" - - """) - List handleList(); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskMapper.java deleted file mode 100644 index 5f9c2aa..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskMapper.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.InspectTaskPageSo; -import com.gunshi.project.hsz.common.model.InspectTask; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 巡检任务 - * author: xusan - * date: 2024-08-29 14:21:15 - */ -@Mapper -public interface InspectTaskMapper extends BaseMapper { - - @Select(""" - - """) - Page pageQuery(Page page,@Param("obj") InspectTaskPageSo pageSo); - - @Select(""" - select count(is_handle) as handleNum from inspect_task_detail where is_handle = 0 - AND task_id = #{taskId} - GROUP BY task_id -""") - Integer countIsHandle(@Param("taskId") Long taskId); - - - @Select(""" - select count(is_normal) as problemNum from inspect_task_detail where is_normal = 0 - AND task_id = #{taskId} - GROUP BY task_id -""") - Integer countIsNormal(@Param("taskId") Long taskId); - - @Select(""" - - """) - List month(@Param("month") String monthValue); - - @Select(""" - - """) - Integer year(@Param("year") String year); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskTrackMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskTrackMapper.java deleted file mode 100644 index 5caea41..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/InspectTaskTrackMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.InspectTaskTrack; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 巡查轨迹 - * author: xusan - * date: 2024-09-18 13:59:21 - */ -@Mapper -public interface InspectTaskTrackMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskByBDMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskByBDMapper.java deleted file mode 100644 index dcc1ea9..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/JcskByBDMapper.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.JcskByBD; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface JcskByBDMapper extends BaseMapper { - - @Select(""" - select device_id - from jcsk_by_b_d group by device_id -""") - List listDevices(); - - - @Select(""" - SELECT t3.*, t1.status -FROM jcsk_by_b_d t3 -left JOIN ( - SELECT * - FROM ( - SELECT *, - ROW_NUMBER() OVER (PARTITION BY "order" ORDER BY ob_date DESC) as rn - FROM jcsk_by_r - WHERE ob_date::date = #{obDate} - ) tmp - WHERE rn = 1 -) t1 ON t3."order" = t1."order" -ORDER BY t1.status DESC, t1.ob_date DESC; -""") - List listAll(@Param("obDate") Date obDate); - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskByInspectTaskMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskByInspectTaskMapper.java deleted file mode 100644 index 91fa1b9..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/JcskByInspectTaskMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.JcskByInspectTask; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface JcskByInspectTaskMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskByRProcessMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskByRProcessMapper.java deleted file mode 100644 index a39a41b..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/JcskByRProcessMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.JcskByRProcess; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface JcskByRProcessMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssREightAmMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssREightAmMapper.java deleted file mode 100644 index 2d1e654..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/JcskGnssREightAmMapper.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.JcskGnssREightAm; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface JcskGnssREightAmMapper extends BaseMapper { - - @Select(""" - select t1.* - from jcsk_gnss_r_8am t1 join ( - select cd, max(tm) as tm - from jcsk_gnss_r_8am - GROUP BY cd - ) t2 on t1.cd = t2.cd and t1.tm = t2.tm; -""") - List queryNewDataTime(); - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskSlREightAmMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskSlREightAmMapper.java deleted file mode 100644 index ba0af45..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/JcskSlREightAmMapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.JcskSlREightAm; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface JcskSlREightAmMapper extends BaseMapper { - @Select(""" - select t1.* - from jcsk_sl_r_8am t1 - join (select stcd,mpcd,max(mstm) as mstm from jcsk_sl_r_8am GROUP BY stcd,mpcd) as t2 - on t1.mstm = t2.mstm and t1.stcd = t2.stcd and t1.mpcd = t2.mpcd; -""") - List queryNewDataTime(); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/JcskSyREightAmMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/JcskSyREightAmMapper.java deleted file mode 100644 index c81c9ba..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/JcskSyREightAmMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.JcskSyREightAm; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface JcskSyREightAmMapper extends BaseMapper { - - @Select(""" -select t1.* -from jcsk_sy_r_8am t1 -join (select stcd,mpcd,max(mstm) as mstm from jcsk_sy_r_8am GROUP BY stcd,mpcd) as t2 -on t1.mstm = t2.mstm and t1.stcd = t2.stcd and t1.mpcd = t2.mpcd; -""") - List queryNewDataTime(); - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MaintainServiceMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MaintainServiceMapper.java deleted file mode 100644 index 580c669..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/MaintainServiceMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.MaintainService; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 维修养护 - * author: xusan - * date: 2024-08-27 15:15:14 - */ -@Mapper -public interface MaintainServiceMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MentenceFarmerRecordMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MentenceFarmerRecordMapper.java deleted file mode 100644 index 86edf6e..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/MentenceFarmerRecordMapper.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo; -import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo; -import com.gunshi.project.hsz.model.MentenceFarmerRecord; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface MentenceFarmerRecordMapper extends BaseMapper { - - - @Select(""" - -""") - Page pageQuery(Page page,@Param(value = "dto") MentenceFarmerRecordPageSo pageSo); - - @Select(""" - -""") - Page pageInfoCountQuery(Page page,@Param("dto") MentenceFarmerRecordPageSo pageSo); - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MentencePlanDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MentencePlanDetailMapper.java deleted file mode 100644 index 62b20f1..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/MentencePlanDetailMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.MentencePlanDetail; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface MentencePlanDetailMapper extends BaseMapper { - - @Select(""" - select t1.*,t2.name as mentenceStDetailName,t3.id as mentenceStId,t3.st_name as mentenceStName from - mentence_plan_detail t1 - left join mentence_st_detail t2 - on t1.mentence_st_detail_id = t2.id and t2.is_enable = 0 - left join mentence_st t3 - on t2.mentence_st_id = t3.id - where t1.mentence_plan_id = #{id} -""") - List selectDetail(@Param("id") Long id); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MentencePlanMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MentencePlanMapper.java deleted file mode 100644 index 9e1d4fd..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/MentencePlanMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.MentencePlan; -import com.gunshi.project.hsz.model.MentenceSt; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface MentencePlanMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MentenceStDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MentenceStDetailMapper.java deleted file mode 100644 index 9e44cc0..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/MentenceStDetailMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.MentenceStDetail; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface MentenceStDetailMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MentenceStMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MentenceStMapper.java deleted file mode 100644 index 712ca91..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/MentenceStMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.MentenceSt; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface MentenceStMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MentenceTemplateMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MentenceTemplateMapper.java deleted file mode 100644 index 060d2a3..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/MentenceTemplateMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.MentenceTemplate; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface MentenceTemplateMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/MessageCenterMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/MessageCenterMapper.java deleted file mode 100644 index 02c2e22..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/MessageCenterMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.MessageCenter; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 消息中心 - * author: xusan - * date: 2024-09-19 10:39:29 - */ -@Mapper -public interface MessageCenterMapper extends BaseMapper { - - @Select(""" - - """) - List queryUserIds(); - - @Select(""" - - """) - List queryTodayMes(@Param("date") String date,@Param("type") Integer type); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OriginMessageMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OriginMessageMapper.java deleted file mode 100644 index 17171a9..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OriginMessageMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.OriginMessage; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface OriginMessageMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticFlowDeviceMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticFlowDeviceMapper.java deleted file mode 100644 index 7d14b47..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticFlowDeviceMapper.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticFlowDeviceVo; -import com.gunshi.project.hsz.model.OsmoticFlowDevice; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 渗流设备表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface OsmoticFlowDeviceMapper extends BaseMapper { - - @Select(""" - - """) - List getDetailsAndMonitoringDataList(); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticFlowRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticFlowRMapper.java deleted file mode 100644 index c37dfe8..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticFlowRMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.OsmoticFlowR; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 渗流监测记录表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface OsmoticFlowRMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticPressDeviceMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticPressDeviceMapper.java deleted file mode 100644 index beea965..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticPressDeviceMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticPressDeviceVo; -import com.gunshi.project.hsz.model.OsmoticPressDevice; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 渗压设备表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface OsmoticPressDeviceMapper extends BaseMapper { - - @Select(""" - - """) - List getDetailsAndMonitoringDataList(); - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticPressRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticPressRMapper.java deleted file mode 100644 index 6f060a8..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticPressRMapper.java +++ /dev/null @@ -1,219 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticQueryPageSo; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.entity.vo.OsmoticPressVo; -import com.gunshi.project.hsz.entity.vo.OsmoticValueVo; -import com.gunshi.project.hsz.common.model.vo.StRzVo; -import com.gunshi.project.hsz.model.OsmoticPressR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 渗压监测记录表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface OsmoticPressRMapper extends BaseMapper { - - @Select(""" - - """) - Page queryPage(Page page,@Param("obj") OsmoticQueryPageSo osmoticQueryPageSo); - - @Select(""" - - """) - List queryRz(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); - - @Select(""" - - """) - List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - @Select(""" - - """) - List queryLineRz(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); - - @Select(""" - - """) - List queryLineValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - @Select(""" - - """) - List queryWarn(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - @Select(""" - - """) - List queryDrp(@Param("year") Integer year,@Param("stcd") String stcd); - - @Select(""" - - """) - List listValue(); - - @Select(""" - - """) - List flowListValue(); - - @Select(""" - - """) - List detailValue(@Param("obj") OsmoticDetailQuerySo so); - - @Select(""" - - """) - List listValue2(); - - @Select(""" - - """) - List flowListValue2(); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticShiftDeviceMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticShiftDeviceMapper.java deleted file mode 100644 index 669ccd5..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticShiftDeviceMapper.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticShiftDeviceVo; -import com.gunshi.project.hsz.model.OsmoticShiftDevice; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 位移监测记录表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface OsmoticShiftDeviceMapper extends BaseMapper { - - @Select(""" - - """) - List getDetailsAndMonitoringDataList(); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticShiftRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticShiftRMapper.java deleted file mode 100644 index 3868ec5..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticShiftRMapper.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.common.model.vo.OsmoticShiftListVo2; -import com.gunshi.project.hsz.entity.vo.OsmoticShiftListVo; -import com.gunshi.project.hsz.entity.vo.OsmoticShiftValueVo; -import com.gunshi.project.hsz.model.OsmoticShiftR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 位移监测记录表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface OsmoticShiftRMapper extends BaseMapper { - - @Select(""" - - """) - List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); - - @Select(""" - - """) - List listValue(); - - @Select(""" - - """) - List queryWarn(@Param("obj") OsmoticQuerySo so); - - @Select(""" - - """) - List detailValue(@Param("obj") OsmoticDetailQuerySo so); - - @Select(""" - - """) - List listValue2(); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRMapper.java deleted file mode 100644 index cee0534..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRMapper.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.WarnPageSo; -import com.gunshi.project.hsz.entity.vo.OsmoticWarnVo; -import com.gunshi.project.hsz.model.OsmoticWarnR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: 隐患预警记录表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface OsmoticWarnRMapper extends BaseMapper { - - @Select(""" - - """) - Page queryPage(Page page, @Param("obj") WarnPageSo warnPageSo); - - @Select(""" - -""") - OsmoticWarnR queryMaxTmByType(@Param("type") Integer type); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRuleMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRuleMapper.java deleted file mode 100644 index 8660395..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWarnRuleMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.OsmoticWarnRule; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 预警规则配置表 - * author: xusan - * date: 2024-07-08 15:44:07 - */ -@Mapper -public interface OsmoticWarnRuleMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWaterRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWaterRMapper.java deleted file mode 100644 index 457a465..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWaterRMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.OsmoticWaterR; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水质采样记录表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface OsmoticWaterRMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWaterRuleMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWaterRuleMapper.java deleted file mode 100644 index bdee7d1..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/OsmoticWaterRuleMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.OsmoticWaterRule; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水质质量标准规则表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface OsmoticWaterRuleMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/PersonnelPlanLogMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/PersonnelPlanLogMapper.java deleted file mode 100644 index fa0c7fa..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/PersonnelPlanLogMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.PersonnelPlanLog; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -public interface PersonnelPlanLogMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/PersonnelPlanMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/PersonnelPlanMapper.java deleted file mode 100644 index 160daf0..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/PersonnelPlanMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.PersonnelPlan; -import org.apache.ibatis.annotations.Mapper; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@Mapper -public interface PersonnelPlanMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/PrePlaceDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/PrePlaceDetailMapper.java deleted file mode 100644 index 53c4a2e..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/PrePlaceDetailMapper.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.PrePlaceDetail; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.io.Serializable; - -@Mapper -public interface PrePlaceDetailMapper extends BaseMapper { - - - @Select(""" - select count(*) from pre_place_detail t where t.pre_id = #{id} -""") - int selectByPreId(@Param("id") Serializable id); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/PrePlaceMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/PrePlaceMapper.java deleted file mode 100644 index ca86dd9..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/PrePlaceMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.so.PrePlacePageSo; -import com.gunshi.project.hsz.entity.vo.PrePlaceTreeVo; -import com.gunshi.project.hsz.model.PrePlace; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface PrePlaceMapper extends BaseMapper { - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ProjectEventsMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ProjectEventsMapper.java deleted file mode 100644 index 8522a2b..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ProjectEventsMapper.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.so.CommonDataPageSo; -import com.gunshi.project.hsz.entity.vo.ProjectEventsVo; -import com.gunshi.project.hsz.model.ProjectEvents; -import com.gunshi.project.hsz.model.TermiteSurvey; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface ProjectEventsMapper extends BaseMapper { - - @Select(""" - - """) - List eventList(@Param("obj") CommonDataPageSo page); - - @Select(""" - - """) - List maintainList(@Param("obj") CommonDataPageSo page); - - @Select(""" - - """) - List safetyList(@Param("obj") CommonDataPageSo page); - - @Select(""" - - """) - List reinforceList(@Param("obj") CommonDataPageSo page); - - @Select(""" - - """) - List termiteList(@Param("obj") CommonDataPageSo page); - - @Select(""" - - """) - List queryTermiteDetail(@Param("id") Long id); - - @Select(""" - - """) - List dispatchList(@Param("obj") CommonDataPageSo page); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RealRainMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RealRainMapper.java deleted file mode 100644 index be30dd2..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RealRainMapper.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.gunshi.project.hsz.entity.vo.ForeRainVo; -import com.gunshi.project.hsz.entity.vo.RealRainListVo; -import com.gunshi.project.hsz.entity.vo.RealRainStatListVo; -import com.gunshi.project.hsz.entity.vo.StPptnVo; -import com.gunshi.project.hsz.model.StPptnRD; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.Date; -import java.util.List; - - -@Mapper -public interface RealRainMapper { - @Select(""" - - """) - List getRealRainList(@Param("stm") String stm, @Param("etm") String etm); - - - @Select(""" - - """) - List queryStPptnPerHourByStcdAndStartTimeAndEndTime(@Param("stcd") String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime); - - @Select(""" - - """) - StPptnRD getStPptnRD(@Param("stcd") String stcd, @Param("tm") Date tm, @Param("year") Integer year); - - @Select(""" - - """) - StPptnRD getMaxOfYear(@Param("stcd") String stcd, @Param("year") Integer year); - - @Select(""" - - """) - Long getRainOfDayInYear(@Param("stcd") String stcd, @Param("year") Integer year); - - @Select(""" - - """) - StPptnRReal queryPptnByStcd(@Param("stcd") String stcd); - - @Select(""" - - """) - List querySttpList(); - - - List getRealRainStatList(@Param("adcd") String adcd, @Param("basCode") String basCode, @Param("source") String source, @Param("stm") String stm, @Param("etm") String etm); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ResFloodRoadMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ResFloodRoadMapper.java deleted file mode 100644 index 2cf9c27..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ResFloodRoadMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ResFloodRoad; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 防汛道路 - * author: xusan - * date: 2024-11-14 10:37:15 - */ -@Mapper -public interface ResFloodRoadMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ResMangUnitMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ResMangUnitMapper.java deleted file mode 100644 index e97b77b..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ResMangUnitMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ResMangUnit; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水库管理单位表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface ResMangUnitMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ResMonthEcoFlowMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ResMonthEcoFlowMapper.java deleted file mode 100644 index 0fdd0bc..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ResMonthEcoFlowMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ResMonthEcoFlow; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水库月核定生态流量表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface ResMonthEcoFlowMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ResPersonMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ResPersonMapper.java deleted file mode 100644 index e6c6176..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ResPersonMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ResPerson; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -public interface ResPersonMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ResPlanBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ResPlanBMapper.java deleted file mode 100644 index a99886e..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ResPlanBMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ResPlanB; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水库预案表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface ResPlanBMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ResProjectImgMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ResProjectImgMapper.java deleted file mode 100644 index 5571ad5..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ResProjectImgMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ResProjectImg; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水库工程图片 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface ResProjectImgMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ResSafePersonBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ResSafePersonBMapper.java deleted file mode 100644 index c4b50f9..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ResSafePersonBMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ResSafePersonB; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水库责任体系表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface ResSafePersonBMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ResTunnelMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ResTunnelMapper.java deleted file mode 100644 index db73478..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ResTunnelMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.ResTunnel; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水库建筑物 - 放空洞/灌溉发电洞 - * author: xusan - * date: 2024-11-14 10:34:12 - */ -@Mapper -public interface ResTunnelMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RescueGoodsMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RescueGoodsMapper.java deleted file mode 100644 index 3e203f6..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RescueGoodsMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.entity.so.RescueGoodsPageSo; -import com.gunshi.project.hsz.model.RescueGoodsB; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface RescueGoodsMapper extends BaseMapper { - - - @Select(""" - - """) - Page pageQuery(@Param("page") Page page,@Param("obj") RescueGoodsPageSo RescueGoodsPageSo); - - @Select(""" - - """) - List detail(@Param("goodsId") Long goodsId); - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamBMapper.java deleted file mode 100644 index ef2cd6a..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamBMapper.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.RescueTeamPageSo; -import com.gunshi.project.hsz.entity.vo.RescueTeamVo; -import com.gunshi.project.hsz.model.RescueTeamB; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: 抢险队伍 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface RescueTeamBMapper extends BaseMapper { - @Select(""" - - """) - Page pageQuery(@Param("page") Page page, @Param("obj") RescueTeamPageSo rescueTeamPageSo); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamDetailMapper.java deleted file mode 100644 index bd78989..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamDetailMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RescueTeamDetail; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 抢险队伍明细 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface RescueTeamDetailMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamFileMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamFileMapper.java deleted file mode 100644 index 7d00f97..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RescueTeamFileMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.model.RescueTeamFile; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 抢险队伍-附件 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface RescueTeamFileMapper extends BaseMapper { - @Select(""" - - """) - List queryFiles(@Param("teamId") Long teamId); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiceGrowConfigMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiceGrowConfigMapper.java deleted file mode 100644 index 2885d46..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiceGrowConfigMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiceGrowConfig; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水稻生长配置 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Mapper -public interface RiceGrowConfigMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiceIrrigationUseMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiceIrrigationUseMapper.java deleted file mode 100644 index 7bf53a8..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiceIrrigationUseMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiceIrrigationUse; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水稻灌溉用水 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Mapper -public interface RiceIrrigationUseMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiceRqWaterMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiceRqWaterMapper.java deleted file mode 100644 index cda17ef..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiceRqWaterMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiceRqWater; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水稻需水主表 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Mapper -public interface RiceRqWaterMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiceSupportBalanceDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiceSupportBalanceDetailMapper.java deleted file mode 100644 index 66e5ac6..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiceSupportBalanceDetailMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gunshi.project.hsz.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiceSupportBalanceDetail; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface RiceSupportBalanceDetailMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiceSupportBalanceMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiceSupportBalanceMapper.java deleted file mode 100644 index 7ad7910..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiceSupportBalanceMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiceSupportBalance; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface RiceSupportBalanceMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterForecastCycleMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterForecastCycleMapper.java deleted file mode 100644 index c1a7237..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterForecastCycleMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiceWaterForecastCycle; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水稻水分预测周期 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Mapper -public interface RiceWaterForecastCycleMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterForecastMonthMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterForecastMonthMapper.java deleted file mode 100644 index ebfc716..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterForecastMonthMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiceWaterForecastMonth; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水稻水分预测月份 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Mapper -public interface RiceWaterForecastMonthMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterKiMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterKiMapper.java deleted file mode 100644 index 6357d6c..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiceWaterKiMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiceWaterKi; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水稻水分需水模系数 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Mapper -public interface RiceWaterKiMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiskControlInfoMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiskControlInfoMapper.java deleted file mode 100644 index 8495ba9..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiskControlInfoMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.BzDictRel; -import com.gunshi.project.hsz.model.RiskControlInfo; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 风险管控清单 - * author: xusan - * date: 2024-08-22 14:17:28 - */ -@Mapper -public interface RiskControlInfoMapper extends BaseMapper { - - @Select(""" - - """) - List queryRelList(@Param("ids") List ids); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RiskControlMenuMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RiskControlMenuMapper.java deleted file mode 100644 index 4466bca..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RiskControlMenuMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RiskControlMenu; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 风险管控目录 - * author: xusan - * date: 2024-08-22 14:16:35 - */ -@Mapper -public interface RiskControlMenuMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RotaBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RotaBMapper.java deleted file mode 100644 index c6304f0..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RotaBMapper.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.RotaB; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface RotaBMapper extends BaseMapper { - - - @Select(""" - - """) - List query(@Param("yearMonth") String yearMonth); - - @Select(""" - - """) - List dateList(@Param("rotaDate") String rotaDate); - - @Select(""" - - """) - Long queryUser(@Param("value") String value); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/RotaLogMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/RotaLogMapper.java deleted file mode 100644 index e92fde5..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/RotaLogMapper.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.RotaLogPageSo; -import com.gunshi.project.hsz.model.RotaLog; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface RotaLogMapper extends BaseMapper { - - @Select(""" - - """) - Page queryPage(Page page,@Param("obj") RotaLogPageSo rotaLogPageSo); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SafetyAccidentRegMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SafetyAccidentRegMapper.java deleted file mode 100644 index 0a94fa2..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SafetyAccidentRegMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SafetyAccidentReg; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 安全事故登记 - * author: xusan - * date: 2024-08-21 15:44:55 - */ -@Mapper -public interface SafetyAccidentRegMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SafetyCheckMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SafetyCheckMapper.java deleted file mode 100644 index 9fd09b3..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SafetyCheckMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SafetyCheck; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface SafetyCheckMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SafetyHazardInvestMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SafetyHazardInvestMapper.java deleted file mode 100644 index 1a4b4b1..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SafetyHazardInvestMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SafetyHazardInvest; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface SafetyHazardInvestMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SafetyIdentifyMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SafetyIdentifyMapper.java deleted file mode 100644 index 16ec6ce..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SafetyIdentifyMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SafetyIdentify; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 安全鉴定台账 - * author: xusan - * date: 2024-08-21 14:45:44 - */ -@Mapper -public interface SafetyIdentifyMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SafetyReinforcementMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SafetyReinforcementMapper.java deleted file mode 100644 index e91ff77..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SafetyReinforcementMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SafetyReinforcement; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 除险加固台账 - * author: xusan - * date: 2024-08-22 11:27:44 - */ -@Mapper -public interface SafetyReinforcementMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/ShpPlacementMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/ShpPlacementMapper.java deleted file mode 100644 index 94ea5bf..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/ShpPlacementMapper.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.HomeShpPlacementVo; -import com.gunshi.project.hsz.model.ShpPlacement; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 安置点 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface ShpPlacementMapper extends BaseMapper { - - @Select(""" - - """) - List getDetailsAndMonitoringDataList(); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SoilMoistureDataMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SoilMoistureDataMapper.java deleted file mode 100644 index 2ee5d04..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SoilMoistureDataMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SoilMoistureData; -import org.apache.ibatis.annotations.Mapper; - -/** - */ -@Mapper -public interface SoilMoistureDataMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SoilMoistureStationMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SoilMoistureStationMapper.java deleted file mode 100644 index 800508e..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SoilMoistureStationMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SoilMoistureStation; -import org.apache.ibatis.annotations.Mapper; - -/** - */ -@Mapper -public interface SoilMoistureStationMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StAddvcdDMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StAddvcdDMapper.java deleted file mode 100644 index 5999e13..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StAddvcdDMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StAddvcdD; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: 行政区划表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StAddvcdDMapper extends BaseMapper { - - @Select(""" - - """) - StAddvcdD selectByAdcd(@Param("adcd") String adcd); - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StEvpoMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StEvpoMapper.java deleted file mode 100644 index 19aa112..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StEvpoMapper.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StEvpo; - -public interface StEvpoMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StFlowRVoMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StFlowRVoMapper.java deleted file mode 100644 index 1e60ff6..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StFlowRVoMapper.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.gunshi.project.hsz.entity.vo.StFlowRVo; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface StFlowRVoMapper { - - - @Select(""" - select t1.sttp,t2.* from - st_stbprp_b t1 - join (SELECT id, stcd, tm, inq, q, otq, crtime - FROM ( - SELECT *, - ROW_NUMBER() OVER (PARTITION BY stcd ORDER BY tm DESC) as rn - FROM st_flow_r - ) t - WHERE rn = 1) t2 on t1.stcd = t2.stcd -""") - List listNewData(); - - @Select(""" - select DISTINCT stcd from st_flow_r -""") - List listStcds(); - - @Select(""" - - """) - List getDataByStcdAndTm(@Param("stcd") String stcd, @Param("tm") Date tm); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StImgRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StImgRMapper.java deleted file mode 100644 index c55d5c2..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StImgRMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StImgR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 图像历史表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StImgRMapper extends BaseMapper { - - @Select(""" - SELECT stb.stcd, - r.tm stm - FROM public.st_stbprp_b stb - LEFT JOIN (SELECT * - FROM (SELECT *, ROW_NUMBER() OVER ( PARTITION BY stcd ORDER BY tm DESC ) AS rn FROM public.st_img_r) subquery - WHERE subquery.rn = 1) r ON stb.stcd = r.stcd - WHERE stb.source = 'SK' - """) - List getStcdLastImgData(); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StImgRRealMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StImgRRealMapper.java deleted file mode 100644 index 7eb3cd1..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StImgRRealMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StImgRReal; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 图像表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StImgRRealMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StImgWarnRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StImgWarnRMapper.java deleted file mode 100644 index f30428e..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StImgWarnRMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.ImgWarnPageSo; -import com.gunshi.project.hsz.model.StImgWarnR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: AI告警表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StImgWarnRMapper extends BaseMapper { - - @Select(""" - - """) - Page pageQuery(Page page,@Param("obj") ImgWarnPageSo imgWarnPageSo); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StPptnRDMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StPptnRDMapper.java deleted file mode 100644 index cbb716a..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StPptnRDMapper.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StPptnRD; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 描述: - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StPptnRDMapper extends BaseMapper { - - List getStcdLastPptnDayData(); - - StPptnRD getMaxData(@Param("stcd") String stcd); - - List reorganizePptnRDData(@Param("stcd") String stcd, @Param("maxData") StPptnRD maxData); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StPptnRHMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StPptnRHMapper.java deleted file mode 100644 index 0b67907..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StPptnRHMapper.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.vo.StRzVo; -import com.gunshi.project.hsz.model.StPptnRD; -import com.gunshi.project.hsz.model.StPptnRH; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 描述: 降雨量小时表 - * author: cxw - * date: 2024-09-02 09:34:31 - */ -@Mapper -public interface StPptnRHMapper extends BaseMapper { - - List queryList(@Param("start") String start,@Param("end") String end); - - List queryRzList(@Param("start") String start,@Param("end") String end); - - List queryDayDrp(@Param("year") Integer year); - - List reorganizePptnRHData(@Param("stcd") String stcd, @Param("maxData") StPptnRH maxData); - - StPptnRH getMaxData(String stcd); - - List queryDayRz(@Param("year") String year); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StQxWarnRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StQxWarnRMapper.java deleted file mode 100644 index 898cc23..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StQxWarnRMapper.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.entity.vo.OsmoticWarnVo; -import com.gunshi.project.hsz.model.StQxWarnR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 气象预警表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StQxWarnRMapper extends BaseMapper { - - @Select(""" - - """) - List queryOsmoticWarn(@Param("obj") DateTimeRangeSo dateTimeRangeSo); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StStbprpCctvMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StStbprpCctvMapper.java deleted file mode 100644 index 6820d32..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StStbprpCctvMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.entity.vo.StStbprpCctvVo; -import com.gunshi.project.hsz.model.StStbprpCctv; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/4/9 - * - * @author wanyan - * @version 1.0 - */ -public interface StStbprpCctvMapper extends BaseMapper { - - - @Select(""" - - """) - List listByStcd(@Param("stcd") String stcd); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StWaterFlowMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StWaterFlowMapper.java deleted file mode 100644 index 6b75fe9..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StWaterFlowMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StWaterFlow; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.io.Serializable; -import java.util.List; - -@Mapper -public interface StWaterFlowMapper extends BaseMapper { - - - @Select(""" - select * from st_water_flow t1 - where t1.stcd = #{stcd} - order by t1.z asc -""") - List selectListByStcd(@Param("stcd") String stcd); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StWaterRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StWaterRMapper.java deleted file mode 100644 index 8fd321c..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StWaterRMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.model.StWaterR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 供水量表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StWaterRMapper extends BaseMapper { - - @Select(""" - - """) - List stat(@Param("obj") DateTimeRangeSo dateTimeRangeSo); - - @Select(""" - select t1.* from st_water_r t1 - join - (select stcd,max(tm) as max_tm from st_water_r GROUP BY stcd) t2 - on t1.stcd = t2.stcd and t1.tm = t2.max_tm ; -""") - List getStcdLastWaterData(); - - @Select(""" - select * from st_water_r where stcd = #{stcd} order by tm desc limit 1 -""") - StWaterR selectNewDataByStcd(String stcd); - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StWaterRRealMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StWaterRRealMapper.java deleted file mode 100644 index a6d4b35..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StWaterRRealMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StWaterRReal; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 供水量实时表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StWaterRRealMapper extends BaseMapper { - - List listRelated(); - - @Select(""" - select * from st_water_r_real -""") - List listNewData(); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StWaterRReorganizeMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StWaterRReorganizeMapper.java deleted file mode 100644 index 538f289..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StWaterRReorganizeMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StWaterRReorganize; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 描述: 供水量整编表 - * author: cxw - * date: 2024-07-24 11:22:46 - */ -@Mapper -public interface StWaterRReorganizeMapper extends BaseMapper { - - - - List getWaterSupplyerYeaarOrMonth(@Param("type") Integer type,@Param("date") String date); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StZqRMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StZqRMapper.java deleted file mode 100644 index 2844ca2..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StZqRMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StZqR; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface StZqRMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StZqrlBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StZqrlBMapper.java deleted file mode 100644 index 165174c..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StZqrlBMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StZqrlB; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 水位流量关系曲线表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StZqrlBMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StZvarlBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StZvarlBMapper.java deleted file mode 100644 index a030f84..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StZvarlBMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.StZvarlB; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 库( 湖)容曲线表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface StZvarlBMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/StbprpBVoMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/StbprpBVoMapper.java deleted file mode 100644 index ae642cf..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/StbprpBVoMapper.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.gunshi.project.hsz.mapper; -import com.gunshi.project.hsz.entity.vo.StStatusVo; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; -import com.gunshi.project.hsz.entity.dto.StZqrlBDto; -import com.gunshi.project.hsz.entity.so.HomeStStbprpBSo; -import com.gunshi.project.hsz.entity.vo.HomeStStbprpBVo; -import com.gunshi.project.hsz.entity.vo.StZqrlBVo; -import java.util.List; - -/** - * @author lyf - * @since 2025-11-04 - */ -@Mapper -public interface StbprpBVoMapper { - @Select(""" - - """) - List rainfallStationDetailsList(@Param("dto") HomeStStbprpBSo dto); - - @Select(""" - - """) - List reservoirStationDetailsList(); - - @Select(""" - - """) - List flowStationDetailsList(); - - @Select(""" - - """) - List realRainList(); - - @Select(""" - - """) - List rzList(); - - @Select(""" - - """) - List imgList(); - - @Select(""" - - """) - List rainList(); - - // @Select("") - @Select(""" - - """) - List flowList(@Param("obj") StZqrlBDto obj); - - @Select(""" - - """) - List zList(); - - - @Select(""" - select t1.stcd,t1.stnm,t2.tm,t1,lgtd,t1.lttd from - st_stbprp_b t1 - left join st_water_r_real t2 - on t1.stcd = t2.stcd - where t1.stcd in ('1112','1113','1114') -""") - List flowStationList(); - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SyDataCheckRuleMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SyDataCheckRuleMapper.java deleted file mode 100644 index 62b0be1..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SyDataCheckRuleMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SyDataCheckRule; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface SyDataCheckRuleMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SyRegressionDataMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SyRegressionDataMapper.java deleted file mode 100644 index fe82efa..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SyRegressionDataMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SyRegressionData; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface SyRegressionDataMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SysDictBMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SysDictBMapper.java deleted file mode 100644 index 1251c60..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SysDictBMapper.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SysDictB; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 系统字典表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface SysDictBMapper extends BaseMapper { - - @Select(""" - - """) - List listByCd(@Param("dictCd") String dictCd); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SzCaseMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SzCaseMapper.java deleted file mode 100644 index 4abbfab..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SzCaseMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SzCase; -import org.apache.ibatis.annotations.Mapper; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Mapper -public interface SzCaseMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SzRegulatoryFrameworkMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SzRegulatoryFrameworkMapper.java deleted file mode 100644 index 61883e4..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SzRegulatoryFrameworkMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SzRegulatoryFramework; -import org.apache.ibatis.annotations.Mapper; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Mapper -public interface SzRegulatoryFrameworkMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SzRuleByLawMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SzRuleByLawMapper.java deleted file mode 100644 index 37106fa..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SzRuleByLawMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SzRuleByLaw; -import org.apache.ibatis.annotations.Mapper; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Mapper -public interface SzRuleByLawMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/SzTreatmentBasisMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/SzTreatmentBasisMapper.java deleted file mode 100644 index 3ef0990..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/SzTreatmentBasisMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.SzTreatmentBasis; -import org.apache.ibatis.annotations.Mapper; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Mapper -public interface SzTreatmentBasisMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/TermiteAdverPicMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/TermiteAdverPicMapper.java deleted file mode 100644 index f73468f..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/TermiteAdverPicMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.TermiteAdverPic; -import org.apache.ibatis.annotations.Mapper; - -/** - * 描述: 白蚁防治宣传图片墙 - * author: xusan - * date: 2024-08-29 17:33:09 - */ -@Mapper -public interface TermiteAdverPicMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/TermiteSurveyDetailMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/TermiteSurveyDetailMapper.java deleted file mode 100644 index a63d1ab..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/TermiteSurveyDetailMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.TermiteSurveyPageSo; -import com.gunshi.project.hsz.model.TermiteSurveyDetail; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: 白蚁普查明细 - * author: xusan - * date: 2024-08-28 10:25:17 - */ -@Mapper -public interface TermiteSurveyDetailMapper extends BaseMapper { - - @Select(""" - - """) - Page pageQuery(Page page,@Param("obj") TermiteSurveyPageSo page1); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/TermiteSurveyMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/TermiteSurveyMapper.java deleted file mode 100644 index 1d92b15..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/TermiteSurveyMapper.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.entity.so.TermiteSurveyPageSo; -import com.gunshi.project.hsz.model.TermiteSurvey; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 描述: 白蚁普查 - * author: xusan - * date: 2024-08-28 10:29:58 - */ -@Mapper -public interface TermiteSurveyMapper extends BaseMapper { - - @Select(""" - - """) - Page pageQuery(Page page,@Param("obj") TermiteSurveyPageSo page1); - - @Select(""" - - """) - List queryFileList(@Param("groupId") String groupId); - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/TyYearRainfallMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/TyYearRainfallMapper.java deleted file mode 100644 index 802f1b4..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/TyYearRainfallMapper.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.TyYearRainfallPageSo; -import com.gunshi.project.hsz.entity.vo.TyYearRainfallVo; -import com.gunshi.project.hsz.model.TyYearRainfall; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -/** - * 描述: 典型年降雨资料表 - * author: xusan - * date: 2024-07-08 15:44:08 - */ -@Mapper -public interface TyYearRainfallMapper extends BaseMapper { - - @Select(""" - - """) - Page pageQuery(Page page,@Param("obj") TyYearRainfallPageSo tyYearRainfallPageSo); -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WarningConditionMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WarningConditionMapper.java deleted file mode 100644 index f893597..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/WarningConditionMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.WarningCondition; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -@Mapper -public interface WarningConditionMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WarningRuleInfoMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WarningRuleInfoMapper.java deleted file mode 100644 index 152ae87..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/WarningRuleInfoMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.WarningRuleInfo; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface WarningRuleInfoMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WarningRuleMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WarningRuleMapper.java deleted file mode 100644 index 673d644..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/WarningRuleMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -import com.gunshi.project.hsz.model.WarningRule; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface WarningRuleMapper extends BaseMapper { -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WaterAlarmMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WaterAlarmMapper.java deleted file mode 100644 index 588e1f5..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/WaterAlarmMapper.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.vo.WaterAlarmCount; -import com.gunshi.project.hsz.entity.vo.WaterAlarmTypeCount; -import com.gunshi.project.hsz.model.WaterAlarm; -import org.apache.ibatis.annotations.MapKey; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -@Mapper -public interface WaterAlarmMapper extends BaseMapper { - - @Select(""" - WITH months AS ( - SELECT - #{year} AS year, - LPAD(series::text, 2, '0') AS month - FROM generate_series(1, 12) AS series - ) - SELECT - m.year, - m.month, - COALESCE(COUNT(wa.alarm_time), 0) AS alarmCount - FROM - months m - LEFT JOIN - water_alarm wa ON m.year = EXTRACT(YEAR FROM wa.alarm_time) - AND m.month = TO_CHAR(wa.alarm_time, 'MM') - AND EXTRACT(YEAR FROM wa.alarm_time) = #{year} - GROUP BY - m.year, m.month - ORDER BY - m.month ASC; - """) - List count12(@Param("year") Integer year); - - - @Select(""" - SELECT - EXTRACT(YEAR FROM alarm_time)::INTEGER AS year, - alarm_type as type, - COUNT(id) as count - FROM - water_alarm - WHERE - EXTRACT(YEAR FROM alarm_time) = #{year} - AND alarm_type IS NOT NULL - GROUP BY - -- 按“年份+告警类型”分组,确保统计维度唯一 - EXTRACT(YEAR FROM alarm_time), - alarm_type - ORDER BY - alarm_type ASC; -""") - List countTypeByYear(@Param("year") Integer year); - - - @Select(""" - select t.* from water_alarm t - where t.stcd = #{stcd} - order by t.alarm_time desc - limit 1 -""") - WaterAlarm selectByStcdNew(@Param("stcd") String stcd); - - - @Select(""" - select t1.* from st_stbprp_b t1 - join st_stbprp_b_elem t2 - on t1.stcd = t2.stcd - where t2.elem in ('rz','z') -""") - List listStation(); - - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WaterDataTermitesMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WaterDataTermitesMapper.java deleted file mode 100644 index 0b2a29a..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/WaterDataTermitesMapper.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.gunshi.project.hsz.mapper; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - -import com.gunshi.project.hsz.common.model.so.JcskByRPageSo; -import com.gunshi.project.hsz.common.model.JcskByR; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.Date; -import java.util.List; - - -@Mapper -public interface WaterDataTermitesMapper extends BaseMapper { - - - /** - * 这段sql需求是 - * 查询某一天的白蚁数据,然后按测点进行分组,分组之后某一组数据内,如果status全部为0,表示没有白蚁,那么就取最新的那条数据即可 - * 如果某一组数据内 stauts有为1的,就是出现了白蚁的,那么就取最新的那一条有白蚁的数据 - * ROW_NUMBER 窗口函数的作用是根据order进行分组,当status为1时,优先显示,如果没有status为1的情况,那么就不管,同时按ob_date进行降序排列 - * 这样每次取到的数据,如果这一天之内某个测点(order)都没有status为1的数据,那么就去这个测站最新的那一条数据 - * 如果这一天之内某个测点(order)有status为1的数据,那么就去这个测点这一天之内status为1的最新的那一条数据 - * @param page - * @param jcskByRPageSo - * @return - */ - @Select(""" - -""") - Page pageQuery(Page page, @Param("obj") JcskByRPageSo jcskByRPageSo); - - - /** - * 这段sql,就是查询所有时间的,相当于上面那段sql的所有时间数据加起来 - * @param page - * @param queryWrapper - * @return - */ - @Select(""" - -""") - Page pageQueryWithNoDate(Page page, @Param("obj") JcskByRPageSo queryWrapper); - - - /** - * 根据取每个测点某一天内最新的那条数据(不用管status状态) - * @param page - * @param page1 - * @return - */ - @Select(""" - -""") - Page query(Page page,@Param("obj") JcskByRPageSo page1); - - - @Select(""" - - """) - List queryHasAntList(@Param("start") Date start, @Param("end") Date end); - - - @Select(""" - -""") - Page queryWithNoDate(Page page,@Param("obj") JcskByRPageSo page1); - - - @Select(""" - -""") - List listNewData(@Param("deviceId") String deviceId); -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WaterDeviceMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WaterDeviceMapper.java deleted file mode 100644 index bf01c61..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/WaterDeviceMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.common.model.JcskByB; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface WaterDeviceMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/WaterDispatchMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/WaterDispatchMapper.java deleted file mode 100644 index 798bc54..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/WaterDispatchMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.WaterDispatch; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -@Mapper -public interface WaterDispatchMapper extends BaseMapper { - - - @Select(""" - SELECT COUNT(*) - FROM water_dispatch - WHERE EXTRACT(YEAR FROM dis_start) = #{year} - AND exe_status = 0 -""") - int countCompeleteByYear(@Param("year") int currYear); - -} diff --git a/src/main/java/com/gunshi/project/hsz/mapper/XlPlanMapper.java b/src/main/java/com/gunshi/project/hsz/mapper/XlPlanMapper.java deleted file mode 100644 index 97db373..0000000 --- a/src/main/java/com/gunshi/project/hsz/mapper/XlPlanMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.gunshi.project.hsz.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.model.XlPlan; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface XlPlanMapper extends BaseMapper { -} diff --git a/src/main/java/com/gunshi/project/hsz/model/AlarmSet.java b/src/main/java/com/gunshi/project/hsz/model/AlarmSet.java deleted file mode 100644 index d3c7da2..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AlarmSet.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -@Data -@TableName(value ="alarm_set") -public class AlarmSet implements Serializable{ - /** - * 报警设置实体类 - * - * @author - * @TableName alarm_set - */ - /** - * 主键 - */ - @TableId(value = "id") - @Schema(description = "主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 站点编码 - */ - @TableField(value = "stcd") - @Schema(description = "站点编码") - @NotNull(message = "站点编码不能为空",groups = {Insert.class, Update.class}) - private String stcd; - - - /** - * 站点编码 - */ - @TableField(value = "stnm") - @Schema(description = "站点编码") - private String stnm; - - /** - * 警戒水位 - */ - @TableField(value = "warn_water_level") - @Schema(description = "警戒水位") - @NotNull(message = "警戒水位",groups = {Insert.class, Update.class}) - private BigDecimal warnWaterLevel; - - /** - * 保证水位 - */ - @TableField(value = "promise_water_level") - @Schema(description = "保证水位") - @NotNull(message = "保证水位",groups = {Insert.class, Update.class}) - private BigDecimal promiseWaterLevel; - - /** - * 调查最高水位 - */ - @TableField(value = "max_level") - @Schema(description = "调查最高水位") - private BigDecimal maxLevel; - - /** - * 调查最高水位出现时间 - */ - @TableField(value = "max_level_time") - @Schema(description = "调查最高水位出现时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date maxLevelTime; - - /** - * 创建时间 - */ - @TableField(value = "create_date") - @Schema(description = "创建时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createDate; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/AppVersionRecord.java b/src/main/java/com/gunshi/project/hsz/model/AppVersionRecord.java deleted file mode 100644 index 8cd5477..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AppVersionRecord.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: APP版本记录 -* author: xusan -* date: 2024-11-12 10:14:50 -*/ -@Schema(description="APP版本记录") -@Data -@TableName("public.app_version_record") -public class AppVersionRecord implements Serializable { - - public final static String thisTableName = "AppVersionRecord"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 版本号 - */ - @TableField(value="version") - @Schema(description="版本号") - @Size(max = 20,message = "版本号最大长度要小于 20") - private String version; - - /** - * 版本描述 - */ - @TableField(value="version_desc") - @Schema(description="版本描述") - private String versionDesc; - - /** - * url - */ - @TableField(value="url") - @Schema(description="地址") - private String url; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessCategory.java b/src/main/java/com/gunshi/project/hsz/model/AssessCategory.java deleted file mode 100644 index f395652..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessCategory.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 考核类目 -* author: xusan -* date: 2024-09-03 17:46:29 -*/ -@Schema(description="考核类目") -@Data -@TableName("public.assess_category") -public class AssessCategory implements Serializable { - - public final static String thisTableName = "AssessCategory"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 名称 - */ - @TableField(value="name") - @Schema(description="名称") - @Size(max = 255,message = "名称最大长度要小于 255") - @NotBlank(message = "名称不能为空") - private String name; - - /** - * 排序 - */ - @TableField(value="order_index") - @Schema(description="排序") - private Integer orderIndex; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessIndicator.java b/src/main/java/com/gunshi/project/hsz/model/AssessIndicator.java deleted file mode 100644 index 31414b2..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessIndicator.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** -* 描述: 考核指标 -* author: xusan -* date: 2024-09-03 17:46:55 -*/ -@Schema(description="考核指标") -@Data -@TableName("public.assess_indicator") -public class AssessIndicator implements Serializable { - - public final static String thisTableName = "AssessIndicator"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 考核类目id - */ - @TableField(value="category_id") - @Schema(description="考核类目id") - @JsonSerialize(using = ToStringSerializer.class) - private Long categoryId; - - @TableField(exist = false) - @Schema(description="考核类目名称") - private String name; - - /** - * 指标名称 - */ - @TableField(value="indicator_name") - @Schema(description="指标名称") - @Size(max = 100,message = "指标名称最大长度要小于 100") - private String indicatorName; - - /** - * 指标编码 - */ - @TableField(value="indicator_code") - @Schema(description="指标编码") - @Size(max = 100,message = "指标编码最大长度要小于 100") - private String indicatorCode; - - /** - * 标准分数 - */ - @TableField(value="standard_score") - @Schema(description="标准分数") - private Integer standardScore; - - /** - * 排序号 - */ - @TableField(value="order_index") - @Schema(description="排序号") - private Integer orderIndex; - - /** - * 状态(0启用 1停用) - */ - @TableField(value="status") - @Schema(description="状态(0启用 1停用)") - private Integer status; - - /** - * 是否被使用(0否 1是) - */ - @TableField(exist = false) - @Schema(description="是否被使用(0否 1是)") - private Integer isUsed; - - @TableField(exist = false) - @Schema(description = "评分细则") - private List indicatorRatings; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessIndicatorRating.java b/src/main/java/com/gunshi/project/hsz/model/AssessIndicatorRating.java deleted file mode 100644 index a20675b..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessIndicatorRating.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 考核指标评分细则 -* author: xusan -* date: 2024-09-03 17:47:16 -*/ -@Schema(description="考核指标评分细则") -@Data -@TableName("public.assess_indicator_rating") -public class AssessIndicatorRating implements Serializable { - - public final static String thisTableName = "AssessIndicatorRating"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 指标id - */ - @TableField(value="indicator_id") - @Schema(description="指标id") - @JsonSerialize(using = ToStringSerializer.class) - private Long indicatorId; - - /** - * 描述 - */ - @TableField(value="rating_desc") - @Schema(description="描述") - @Size(max = 500,message = "描述最大长度要小于 500") - private String ratingDesc; - - /** - * 标准分数 - */ - @TableField(value="standard_score") - @Schema(description="标准分数") - private Integer standardScore; - - /** - * 排序号 - */ - @TableField(value="order_index") - @Schema(description="排序号") - private Integer orderIndex; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessObject.java b/src/main/java/com/gunshi/project/hsz/model/AssessObject.java deleted file mode 100644 index 11929e9..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessObject.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** -* 描述: 考核对象 -* author: xusan -* date: 2024-09-05 14:19:30 -*/ -@Schema(description="考核对象") -@Data -@TableName("public.assess_object") -public class AssessObject implements Serializable { - - public final static String thisTableName = "AssessObject"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 考核任务id - */ - @TableField(value="task_id") - @Schema(description="考核任务id") - @JsonSerialize(using = ToStringSerializer.class) - private Long taskId; - - /** - * 考核对象id - */ - @TableField(value="object_user_id") - @Schema(description="考核对象id") - @JsonSerialize(using = ToStringSerializer.class) - private Long objectUserId; - - /** - * 考核对象 - */ - @TableField(value="object_user_name") - @Schema(description="考核对象") - @Size(max = 100,message = "考核对象最大长度要小于 100") - private String objectUserName; - - /** - * 标准得分 - */ - @TableField(value="standard_score") - @Schema(description="标准得分") - private Integer standardScore; - - /** - * 考核得分 - */ - @TableField(value="assess_score") - @Schema(description="考核得分") - private BigDecimal assessScore; - - /** - * 考核等级(1优秀 2良好 3合格) - */ - @TableField(value="assess_level") - @Schema(description="考核等级(1优秀 2良好 3合格 4不合格)") - private Integer assessLevel; - - /** - * 状态(0未启动 1评分中 2已完成) - */ - @TableField(value="status") - @Schema(description="状态(0未启动 1评分中 2已完成)") - private Integer status; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessObjectRating.java b/src/main/java/com/gunshi/project/hsz/model/AssessObjectRating.java deleted file mode 100644 index 2e4bfac..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessObjectRating.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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.math.BigDecimal; - -/** -* 描述: 考核对象指标得分详情 -* author: xusan -* date: 2024-09-10 10:44:14 -*/ -@Schema(description="考核对象指标得分详情") -@Data -@TableName("public.assess_object_rating") -public class AssessObjectRating implements Serializable { - - public final static String thisTableName = "AssessObjectRating"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - private Long id; - - /** - * 考核对象id - */ - @TableField(value="object_id") - @Schema(description="考核对象id") - private Long objectId; - - /** - * 考核指标id - */ - @TableField(value="indicator_id") - @Schema(description="考核指标id") - private Long indicatorId; - - /** - * 标准分数 - */ - @TableField(value="standard_score") - @Schema(description="标准分数") - private Integer standardScore; - - /** - * 考核得分 - */ - @TableField(value="assess_score") - @Schema(description="考核得分") - private BigDecimal assessScore; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessTask.java b/src/main/java/com/gunshi/project/hsz/model/AssessTask.java deleted file mode 100644 index eb9da04..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessTask.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 考核任务 -* author: xusan -* date: 2024-09-05 14:19:04 -*/ -@Schema(description="考核任务") -@Data -@TableName("public.assess_task") -public class AssessTask implements Serializable { - - public final static String thisTableName = "AssessTask"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 考核任务名称 - */ - @TableField(value="task_name") - @Schema(description="考核任务名称") - @Size(max = 100,message = "考核任务名称最大长度要小于 100") - private String taskName; - - /** - * 考核频次(1年度 2季度 3月度) - */ - @TableField(value="task_freq") - @Schema(description="考核频次(1年度 2季度 3月度)") - private Integer taskFreq; - - /** - * 综合计算得分方式(1取最低 2平均) - */ - @TableField(value="score_way") - @Schema(description="综合计算得分方式(1取最低 2平均)") - private Integer scoreWay; - - /** - * 模板id - */ - @TableField(value="template_id") - @Schema(description="模板id") - @JsonSerialize(using = ToStringSerializer.class) - private Long templateId; - - @TableField(exist = false) - @Schema(description="模板信息") - private String templateName; - - /** - * 考核批次 - */ - @TableField(value="assess_batch") - @Schema(description="考核批次") - @Size(max = 100,message = "考核批次最大长度要小于 100") - private String assessBatch; - - /** - * 考核周期开始日期 - */ - @TableField(value="start_date") - @Schema(description="考核周期开始日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date startDate; - - /** - * 考核周期结束日期 - */ - @TableField(value="end_date") - @Schema(description="考核周期结束日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date endDate; - - /** - * 状态(0未启动 1评分中 2审核中 3已审核 4已作废) - */ - @TableField(value="status") - @Schema(description="状态(0未启动 1评分中 2审核中 3已审核 4已作废)") - private Integer status; - - /** - * 创建人id - */ - @TableField(value="create_user_id") - @Schema(description="创建人id") - private Long createUserId; - - /** - * 创建人名称 - */ - @TableField(value="create_user_name") - @Schema(description="创建人名称") - @Size(max = 100,message = "创建人名称最大长度要小于 100") - private String createUserName; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @TableField(exist = false) - @Schema(description = "考核组成员") - private List assessTeams; - - @TableField(exist = false) - @Schema(description = "考核对象") - private List assessObjects; - - @TableField(exist = false) - @Schema(description = "考核方案") - private List files; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessTeam.java b/src/main/java/com/gunshi/project/hsz/model/AssessTeam.java deleted file mode 100644 index a2f4413..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessTeam.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** -* 描述: 考核组成员 -* author: xusan -* date: 2024-09-05 14:19:46 -*/ -@Schema(description="考核组成员") -@Data -@TableName("public.assess_team") -public class AssessTeam implements Serializable { - - public final static String thisTableName = "AssessTeam"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 考核对象id - */ - @TableField(value="task_id") - @Schema(description="考核任务id") - @JsonSerialize(using = ToStringSerializer.class) - private Long taskId; - - /** - * 考核对象id - */ - @TableField(value="object_id") - @Schema(description="考核对象id") - @JsonSerialize(using = ToStringSerializer.class) - private Long objectId; - - /** - * 考核成员id - */ - @TableField(value="team_user_id") - @Schema(description="考核成员id") - @JsonSerialize(using = ToStringSerializer.class) - private Long teamUserId; - - /** - * 考核成员 - */ - @TableField(value="team_user_name") - @Schema(description="考核成员") - @Size(max = 100,message = "考核成员最大长度要小于 100") - private String teamUserName; - - /** - * 标准得分 - */ - @TableField(value="standard_score") - @Schema(description="标准得分") - private Integer standardScore; - - /** - * 考核得分 - */ - @TableField(value="assess_score") - @Schema(description="考核得分") - private BigDecimal assessScore; - - /** - * 考核等级(1优秀 2良好 3合格) - */ - @TableField(value="assess_level") - @Schema(description="考核等级(1优秀 2良好 3合格)") - private Integer assessLevel; - - /** - * 状态(0未启动 1评分中 2已完成 9评分保存) - */ - @TableField(value="status") - @Schema(description="状态(0未启动 1评分中 2已完成 9评分保存)") - private Integer status; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessTeamRating.java b/src/main/java/com/gunshi/project/hsz/model/AssessTeamRating.java deleted file mode 100644 index 82e8b44..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessTeamRating.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 考核评分详情 -* author: xusan -* date: 2024-09-05 14:20:03 -*/ -@Schema(description="考核评分详情") -@Data -@TableName("public.assess_team_rating") -public class AssessTeamRating implements Serializable { - - public final static String thisTableName = "AssessTeamRating"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 考核成员id - */ - @TableField(value="team_id") - @Schema(description="考核成员id") - @JsonSerialize(using = ToStringSerializer.class) - private Long teamId; - - /** - * 考核指标id - */ - @TableField(value="indicator_id") - @Schema(description="考核指标id") - @JsonSerialize(using = ToStringSerializer.class) - private Long indicatorId; - - /** - * 标准分数 - */ - @TableField(value="standard_score") - @Schema(description="标准分数") - private Integer standardScore; - - /** - * 考核得分 - */ - @TableField(value="assess_score") - @Schema(description="考核得分") - private BigDecimal assessScore; - - /** - * 是否需要整改(0否 1是) - */ - @TableField(value="is_need_rectify") - @Schema(description="是否需要整改(0否 1是)") - private Integer isNeedRectify; - - /** - * 问题描述 - */ - @TableField(value="problem_desc") - @Schema(description="问题描述") - @Size(max = 500,message = "问题描述最大长度要小于 500") - private String problemDesc; - - /** - * 整改要求 - */ - @TableField(value="rectify_requirement") - @Schema(description="整改要求") - @Size(max = 500,message = "整改要求最大长度要小于 500") - private String rectifyRequirement; - - /** - * 整改期限 - */ - @TableField(value="rectify_last_date") - @Schema(description="整改期限") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date rectifyLastDate; - - /** - * 整改状态(0未整改 1已整改) - */ - @TableField(value="rectify_status") - @Schema(description="整改状态(0未整改 1已整改)") - private Integer rectifyStatus; - - /** - * 完成日期 - */ - @TableField(value="finish_date") - @Schema(description="完成日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date finishDate; - - /** - * 整改说明 - */ - @TableField(value="rectify_desc") - @Schema(description="整改说明") - @Size(max = 500,message = "整改说明最大长度要小于 500") - private String rectifyDesc; - - @TableField(exist = false) - @Schema(description = "现场图片") - private List files; - - @TableField(exist = false) - @Schema(description = "整改附件") - private List rectifyFiles; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessTemplate.java b/src/main/java/com/gunshi/project/hsz/model/AssessTemplate.java deleted file mode 100644 index ade6e5b..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessTemplate.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 考核模板 -* author: xusan -* date: 2024-09-04 13:42:39 -*/ -@Schema(description="考核模板") -@Data -@TableName("public.assess_template") -public class AssessTemplate implements Serializable { - - public final static String thisTableName = "AssessTemplate"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 模板名称 - */ - @TableField(value="template_name") - @Schema(description="模板名称") - @Size(max = 100,message = "模板名称最大长度要小于 100") - private String templateName; - - /** - * 考核频次(1年度 2季度 3月度) - */ - @TableField(value="template_freq") - @Schema(description="考核频次(1年度 2季度 3月度)") - private Integer templateFreq; - - /** - * 标准分数 - */ - @TableField(value="standard_score") - @Schema(description="标准分数") - private Integer standardScore; - - /** - * 优秀分 - */ - @TableField(value="excellent_score") - @Schema(description="优秀分") - private BigDecimal excellentScore; - - /** - * 良好分 - */ - @TableField(value="good_score") - @Schema(description="良好分") - private BigDecimal goodScore; - - /** - * 合格分 - */ - @TableField(value="pass_score") - @Schema(description="合格分") - private BigDecimal passScore; - - /** - * 状态(0启用 1停用) - */ - @TableField(value="status") - @Schema(description="状态(0启用 1停用)") - private Integer status; - - /** - * 创建人id - */ - @TableField(value="create_user_id") - @Schema(description="创建人id") - private Long createUserId; - - /** - * 创建人名称 - */ - @TableField(value="create_user_name") - @Schema(description="创建人名称") - @Size(max = 100,message = "创建人名称最大长度要小于 100") - private String createUserName; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - /** - * 是否被使用(0否 1是) - */ - @TableField(exist = false) - @Schema(description="是否被使用(0否 1是)") - private Integer isUsed; - - @TableField(exist = false) - @Schema(description = "关联的考核指标") - private List indicatorIds; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AssessTemplateIndicatorRel.java b/src/main/java/com/gunshi/project/hsz/model/AssessTemplateIndicatorRel.java deleted file mode 100644 index 2b1bf14..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AssessTemplateIndicatorRel.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 模板关联指标 -* author: xusan -* date: 2024-09-04 13:43:04 -*/ -@Schema(description="模板关联指标") -@Data -@TableName("public.assess_template_indicator_rel") -public class AssessTemplateIndicatorRel implements Serializable { - - public final static String thisTableName = "AssessTemplateIndicatorRel"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 模板id - */ - @TableField(value="template_id") - @Schema(description="模板id") - @JsonSerialize(using = ToStringSerializer.class) - private Long templateId; - - /** - * 指标id - */ - @TableField(value="indicator_id") - @Schema(description="指标id") - @JsonSerialize(using = ToStringSerializer.class) - private Long indicatorId; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttBasBase.java b/src/main/java/com/gunshi/project/hsz/model/AttBasBase.java deleted file mode 100644 index 2a43af2..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttBasBase.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** - * 流域基础信息表 - */ -@Schema(description="流域基础信息表") -@Data -@TableName(value = "public.att_bas_base") -public class AttBasBase implements Serializable { - /** - * 流域代码 - */ - @TableId(value = "bas_code", type = IdType.INPUT) - @Schema(description="流域代码") - @Size(max = 18,message = "流域代码最大长度要小于 18") - @NotBlank(message = "流域代码不能为空") - private String basCode; - - /** - * 流域名称 - */ - @TableField(value = "bas_name") - @Schema(description="流域名称") - @Size(max = 100,message = "流域名称最大长度要小于 100") - private String basName; - - /** - * 左下角经度 - */ - @TableField(value = "low_left_long") - @Schema(description="左下角经度") - private BigDecimal lowLeftLong; - - /** - * 左下角纬度 - */ - @TableField(value = "low_left_lat") - @Schema(description="左下角纬度") - private BigDecimal lowLeftLat; - - /** - * 右上角经度 - */ - @TableField(value = "up_right_long") - @Schema(description="右上角经度") - private BigDecimal upRightLong; - - /** - * 右上角纬度 - */ - @TableField(value = "up_right_lat") - @Schema(description="右上角纬度") - private BigDecimal upRightLat; - - /** - * 跨界类型 未知 0 跨国并跨省 1 跨国 2 跨省 3 跨市 4 跨县 5 县界内 6 - */ - @TableField(value = "cr_over_type") - @Schema(description="跨界类型 未知 0 跨国并跨省 1 跨国 2 跨省 3 跨市 4 跨县 5 县界内 6") - @Size(max = 1,message = "跨界类型 未知 0 跨国并跨省 1 跨国 2 跨省 3 跨市 4 跨县 5 县界内 6最大长度要小于 1") - private String crOverType; - - /** - * 流域所属行政区 填名称 - */ - @TableField(value = "bas_ad_name") - @Schema(description="流域所属行政区 填名称") - @Size(max = 100,message = "流域所属行政区 填名称最大长度要小于 100") - private String basAdName; - - /** - * 流域级别 一级流域 1 二级流域 2 三级流域 3 四级流域 4 五级流域 5 六级流域 6 七级流域 7 - */ - @TableField(value = "bas_grad") - @Schema(description="流域级别 一级流域 1 二级流域 2 三级流域 3 四级流域 4 五级流域 5 六级流域 6 七级流域 7") - @Size(max = 1,message = "流域级别 一级流域 1 二级流域 2 三级流域 3 四级流域 4 五级流域 5 六级流域 6 七级流域 7最大长度要小于 1") - private String basGrad; - - /** - * 流域面积 km2 - */ - @TableField(value = "bas_area") - @Schema(description="流域面积 km2") - private BigDecimal basArea; - - /** - * 备注 - */ - @TableField(value = "note") - @Schema(description="备注") - @Size(max = 256,message = "备注最大长度要小于 256") - private String note; - - /** - * 记录生效时间 - */ - @TableField(value = "eff_date") - @Schema(description="记录生效时间") - private Date effDate; - - /** - * 记录失效时间 - */ - @TableField(value = "expr_date") - @Schema(description="记录失效时间") - private Date exprDate; - - private static final long serialVersionUID = 1L; - - public static final String COL_BAS_CODE = "bas_code"; - - public static final String COL_BAS_NAME = "bas_name"; - - public static final String COL_LOW_LEFT_LONG = "low_left_long"; - - public static final String COL_LOW_LEFT_LAT = "low_left_lat"; - - public static final String COL_UP_RIGHT_LONG = "up_right_long"; - - public static final String COL_UP_RIGHT_LAT = "up_right_lat"; - - public static final String COL_CR_OVER_TYPE = "cr_over_type"; - - public static final String COL_BAS_AD_NAME = "bas_ad_name"; - - public static final String COL_BAS_GRAD = "bas_grad"; - - public static final String COL_BAS_AREA = "bas_area"; - - public static final String COL_NOTE = "note"; - - public static final String COL_EFF_DATE = "eff_date"; - - public static final String COL_EXPR_DATE = "expr_date"; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttCctvBase.java b/src/main/java/com/gunshi/project/hsz/model/AttCctvBase.java deleted file mode 100644 index b31b26e..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttCctvBase.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 视频基本信息表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="视频基本信息表") -@Data -@TableName("public.att_cctv_base") -public class AttCctvBase implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * id - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="id") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 序列号 - */ - @TableField(value="index_code") - @Schema(description="序列号") - @Size(max = 150,message = "序列号最大长度要小于 150") - @NotBlank(message = "序列号不能为空",groups = {Insert.class, Update.class}) - private String indexCode; - - /** - * 摄像头名称 - */ - @TableField(value="name") - @Schema(description="摄像头名称") - @Size(max = 150,message = "摄像头名称最大长度要小于 150") - private String name; - - /** - * ip端口 - */ - @TableField(value="ip_address") - @Schema(description="ip端口") - @Size(max = 20,message = "ip端口最大长度要小于 20") - private String ipAddress; - - /** - * 通道号 - */ - @TableField(value="chan") - @Schema(description="通道号") - @Size(max = 150,message = "通道号最大长度要小于 150") - private String chan; - - /** - * 类型(1球机 2枪机) - */ - @TableField(value="type") - @Schema(description="类型(1球机 2枪机)") - private Integer type; - - /** - * 建成日期 - */ - @TableField(value="build_date") - @Schema(description="建成日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date buildDate; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - private String lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - private String lttd; - - /** - * menu_id - */ - @TableField(value="menu_id") - @Schema(description="menu_id") - private Long menuId; - - /** - * menu_id - */ - @TableField(exist = false) - @Schema(description="所在区域") - private String menuName; - - /** - * 备注 - */ - @TableField(value="remark") - @Schema(description="备注") - @Size(max = 500,message = "备注最大长度要小于 500") - private String remark; - - /** - * create_time - */ - @TableField(value="create_time") - @Schema(description="create_time") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - - @Schema(description = "状态 0 离线 1在线") - private Integer status; - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttDamBase.java b/src/main/java/com/gunshi/project/hsz/model/AttDamBase.java deleted file mode 100644 index c4cf329..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttDamBase.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Delete; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 大坝表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="大坝表") -@Data -@TableName("public.att_dam_base") -public class AttDamBase implements Serializable { - - - private static final long serialVersionUID = 1L; - /** - * 主键 - */ - @TableId(value="dam_code", type= IdType.AUTO) - @Schema(description="主键") - @Size(max = 32,message = "主键最大长度要小于 32") - @NotBlank(message = "主键不能为空",groups = { Update.class, Delete.class}) - private String damCode; - - /** - * 大坝名称 - */ - @TableField(value="dam_name") - @Schema(description="大坝名称") - @Size(max = 30,message = "大坝名称最大长度要小于 30") - private String damName; - - /** - * 水库编码 - */ - @TableField(value="res_code") - @Schema(description="水库编码") - @Size(max = 32,message = "水库编码最大长度要小于 32") - private String resCode; - - /** - * 是否主坝(0否 1是) - */ - @TableField(value="is_main") - @Schema(description="是否主坝(0否 1是 2拦洪坝)") - private Integer isMain; - - /** - * 建筑物型式 - */ - @TableField(value="build_type") - @Schema(description="建筑物型式") - @Size(max = 30,message = "建筑物型式最大长度要小于 30") - private String buildType; - - /** - * 地基特性 - */ - @TableField(value="found_character") - @Schema(description="地基特性") - @Size(max = 30,message = "地基特性最大长度要小于 30") - private String foundCharacter; - - /** - * 最大坝高(m) - */ - @TableField(value="dam_max_heig") - @Schema(description="最大坝高(m)") - private String damMaxHeig; - - /** - * 坝顶高程(m) - */ - @TableField(value="dam_top_elev") - @Schema(description="坝顶高程(m)") - private String damTopElev; - - /** - * 坝顶长度(m) - */ - @TableField(value="dam_top_len") - @Schema(description="坝顶长度(m)") - private String damTopLen; - - /** - * 坝顶宽度(m) - */ - @TableField(value="dam_top_wid") - @Schema(description="坝顶宽度(m)") - private String damTopWid; - - /** - * 防浪墙顶高程 - */ - @TableField(value="dam_wave_wall") - @Schema(description="防浪墙顶高程") - private String damWaveWall; - - /** - * 开工日期 - */ - @TableField(value="start_date") - @Schema(description="开工日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date startDate; - - /** - * 竣工日期 - */ - @TableField(value="end_date") - @Schema(description="竣工日期") - // @Size(max = 0,message = "竣工日期最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date endDate; - - /** - * 蓄水日期 - */ - @TableField(value="storage_date") - @Schema(description="蓄水日期") - // @Size(max = 0,message = "蓄水日期最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date storageDate; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - // @Size(max = 0,message = "创建时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @TableField(value="main_basic_intensity_of_an_earth_quake") - @Schema(description = "地震基本烈度") - private String mainBasicIntensityOfAnEarthQuake; - - @TableField(value="main_earthquake_acceleration") - @Schema(description = "地震峰值加速度") - private BigDecimal mainEarthquakeAcceleration;// 主坝-地震峰值加速度 - - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttDamProfile.java b/src/main/java/com/gunshi/project/hsz/model/AttDamProfile.java deleted file mode 100644 index 6252a9e..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttDamProfile.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** -* 描述: 监测断面信息表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="监测断面信息表") -@Data -@TableName("public.att_dam_profile") -public class AttDamProfile implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 断面编号 - */ - @TableId(value="profile_code", type= IdType.AUTO) - @Schema(description="断面编号") - @Size(max = 100,message = "断面编号最大长度要小于 100") - @NotBlank(message = "断面编号不能为空") - private String profileCode; - - /** - * 断面名称 - */ - @TableField(value="profile_name") - @Schema(description="断面名称") - @Size(max = 200,message = "断面名称最大长度要小于 200") - private String profileName; - - /** - * 大坝编号 - */ - @TableField(value="dam_code") - @Schema(description="大坝编号") - @Size(max = 32,message = "大坝编号最大长度要小于 32") - private String damCode; - - /** - * 备注/描述 - */ - @TableField(value="remark") - @Schema(description="备注/描述") - @Size(max = 250,message = "备注/描述最大长度要小于 250") - private String remark; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttGateB.java b/src/main/java/com/gunshi/project/hsz/model/AttGateB.java deleted file mode 100644 index 48d8ab8..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttGateB.java +++ /dev/null @@ -1,405 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 水闸基本情况调查表 -* author: xusan -* date: 2024-09-26 10:44:05 -*/ -@Schema(description="水闸基本情况调查表") -@Data -@TableName("public.att_gate_b") -public class AttGateB implements Serializable { - - public final static String thisTableName = "AttGateB"; - - private static final long serialVersionUID = 1L; - - /** - * 水闸工程代码 - */ - @TableId(value="gate_code", type= IdType.AUTO) - @Schema(description="水闸工程代码") - @Size(max = 20,message = "水闸工程代码最大长度要小于 20") - @NotBlank(message = "水闸工程代码不能为空") - private String gateCode; - - /** - * 水闸名称 - */ - @TableField(value="gate_name") - @Schema(description="水闸名称") - @Size(max = 100,message = "水闸名称最大长度要小于 100") - @NotBlank(message = "水闸名称不能为空") - private String gateName; - - /** - * 管理单位 - */ - @TableField(value="eng_man_name") - @Schema(description="管理单位") - @Size(max = 255,message = "管理单位最大长度要小于 255") - private String engManName; - - /** - * 所属行政位置 - */ - @TableField(value="ad_namee") - @Schema(description="所属行政位置") - @Size(max = 255,message = "所属行政位置最大长度要小于 255") - private String adNamee; - - /** - * 所在渠道 - */ - @TableField(value="chan_name") - @Schema(description="所在渠道") - @Size(max = 255,message = "所在渠道最大长度要小于 255") - private String chanName; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - private BigDecimal lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - private BigDecimal lttd; - - /** - * 桩号 - */ - @TableField(value="bnch") - @Schema(description="桩号") - @Size(max = 12,message = "桩号最大长度要小于 12") - private String bnch; - - /** - * 闸孔数量 - */ - @TableField(value="gaor_num") - @Schema(description="闸孔数量") - private Integer gaorNum; - - /** - * 水闸类别:1分(泄)洪闸,2节制闸,3排(退)水闸,4引(进)水闸,5 挡潮闸,6 船闸,9其他 - */ - @TableField(value="waga_type") - @Schema(description="水闸类别:1分(泄)洪闸,2节制闸,3排(退)水闸,4引(进)水闸,5 挡潮闸,6 船闸,9其他") - @Size(max = 50,message = "水闸类别:1分(泄)洪闸,2节制闸,3排(退)水闸,4引(进)水闸,5 挡潮闸,6 船闸,9其他最大长度要小于 50") - private String wagaType; - - /** - * 闸门类型 - */ - @TableField(value="gate_tp") - @Schema(description="闸门类型") - @Size(max = 30,message = "闸门类型最大长度要小于 30") - private String gateTp; - - /** - * 闸门尺寸(m) - */ - @TableField(value="gate_size") - @Schema(description="闸门尺寸(m)") - @Size(max = 255,message = "闸门尺寸(m)最大长度要小于 255") - private String gateSize; - - /** - * 动力类型:1手动,2电动,3手电两用 - */ - @TableField(value="pwr_tp") - @Schema(description="动力类型:1手动,2电动,3手电两用") - @Size(max = 50,message = "动力类型:1手动,2电动,3手电两用最大长度要小于 50") - private String pwrTp; - - /** - * 启闭设备类型:1卷扬式,2螺杆式,3凹轮式,4涡轮式,5丝杆式 - */ - @TableField(value="hdgr_tp") - @Schema(description="启闭设备类型:1卷扬式,2螺杆式,3凹轮式,4涡轮式,5丝杆式") - @Size(max = 50,message = "启闭设备类型:1卷扬式,2螺杆式,3凹轮式,4涡轮式,5丝杆式最大长度要小于 50") - private String hdgrTp; - - /** - * 进口高程(m) - */ - @TableField(value="in_ele") - @Schema(description="进口高程(m)") - private BigDecimal inEle; - - /** - * 出口高程(m) - */ - @TableField(value="out_ele") - @Schema(description="出口高程(m)") - private BigDecimal outEle; - - /** - * 设计流量(m3/s) - */ - @TableField(value="dsfl") - @Schema(description="设计流量(m3/s)") - private BigDecimal dsfl; - - /** - * 实达流量(m3/s) - */ - @TableField(value="stfl") - @Schema(description="实达流量(m3/s)") - private BigDecimal stfl; - - /** - * 建成时间 - */ - @TableField(value="comp_date") - @Schema(description="建成时间") - @Size(max = 10,message = "建成时间最大长度要小于 10") - private String compDate; - - /** - * 更新或维修时间 - */ - @TableField(value="updser_date") - @Schema(description="更新或维修时间") - @Size(max = 10,message = "更新或维修时间最大长度要小于 10") - private String updserDate; - - /** - * 更新或维修原因 - */ - @TableField(value="updser_rsn") - @Schema(description="更新或维修原因") - @Size(max = 50,message = "更新或维修原因最大长度要小于 50") - private String updserRsn; - - /** - * 更新或维修投资 - */ - @TableField(value="updser_invst") - @Schema(description="更新或维修投资") - private BigDecimal updserInvst; - - /** - * 工程等别:1Ⅰ,2Ⅱ,3Ⅲ,4Ⅳ,5Ⅴ - */ - @TableField(value="eng_grad") - @Schema(description="工程等别:1Ⅰ,2Ⅱ,3Ⅲ,4Ⅳ,5Ⅴ") - @Size(max = 50,message = "工程等别:1Ⅰ,2Ⅱ,3Ⅲ,4Ⅳ,5Ⅴ最大长度要小于 50") - private String engGrad; - - /** - * 运行情况:1在用良好,2在用故障,3停用 - */ - @TableField(value="run_stat") - @Schema(description="运行情况:1在用良好,2在用故障,3停用") - @Size(max = 50,message = "运行情况:1在用良好,2在用故障,3停用最大长度要小于 50") - private String runStat; - - /** - * 备注 - */ - @TableField(value="note") - @Schema(description="备注") - @Size(max = 255,message = "备注最大长度要小于 255") - private String note; - - /** - * 起点经度 - */ - @TableField(value="start_long") - @Schema(description="起点经度") - private BigDecimal startLong; - - /** - * 起点纬度 - */ - @TableField(value="start_lat") - @Schema(description="起点纬度") - private BigDecimal startLat; - - /** - * 终点经度 - */ - @TableField(value="end_long") - @Schema(description="终点经度") - private BigDecimal endLong; - - /** - * 终点纬度 - */ - @TableField(value="end_lat") - @Schema(description="终点纬度") - private BigDecimal endLat; - - /** - * 水闸用途 - */ - @TableField(value="waga_use") - @Schema(description="水闸用途") - @Size(max = 255,message = "水闸用途最大长度要小于 255") - private String wagaUse; - - /** - * 取水水源类型:1水库,2湖泊,3河流,4其他 - */ - @TableField(value="wain_waso_type") - @Schema(description="取水水源类型:1水库,2湖泊,3河流,4其他") - @Size(max = 50,message = "取水水源类型:1水库,2湖泊,3河流,4其他最大长度要小于 50") - private String wainWasoType; - - /** - * 最大过闸流量(m3/s) - */ - @TableField(value="lock_disc") - @Schema(description="最大过闸流量(m3/s)") - private BigDecimal lockDisc; - - /** - * 装机功率(kw) - */ - @TableField(value="ins_pow") - @Schema(description="装机功率(kw)") - private BigDecimal insPow; - - /** - * 设计装机总容量(mw) - */ - @TableField(value="des_tot_ins_cap") - @Schema(description="设计装机总容量(mw)") - @Size(max = 255,message = "设计装机总容量(mw)最大长度要小于 255") - private String desTotInsCap; - - /** - * 工程建设情况:0未建,1在建,2已建 - */ - @TableField(value="eng_stat") - @Schema(description="工程建设情况:0未建,1在建,2已建") - @Size(max = 50,message = "工程建设情况:0未建,1在建,2已建最大长度要小于 50") - private String engStat; - - /** - * 开工时间 - */ - @TableField(value="start_date") - @Schema(description="开工时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date startDate; - - /** - * 归口管理部门:1水利部门,2电力部门,3农业部门,4 林业部门,5城建部门,6航运部门,7环保部门,9其他部门 - */ - @TableField(value="adm_dep") - @Schema(description="归口管理部门:1水利部门,2电力部门,3农业部门,4 林业部门,5城建部门,6航运部门,7环保部门,9其他部门") - @Size(max = 1,message = "归口管理部门:1水利部门,2电力部门,3农业部门,4 林业部门,5城建部门,6航运部门,7环保部门,9其他部门最大长度要小于 1") - private String admDep; - - /** - * 属性采集时间 - */ - @TableField(value="coll_date") - @Schema(description="属性采集时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date collDate; - - /** - * 属性更新时间 - */ - @TableField(value="upd_date") - @Schema(description="属性更新时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date updDate; - - /** - * 是否可控 0 否 1 是 - */ - @TableField(value="ctrl_type") - @Schema(description="是否可控 0 否 1 是") - private Integer ctrlType; - - /** - * 闸控代码 - */ - @TableField(value="stcd") - @Schema(description="闸控代码") - @Size(max = 10,message = "闸控代码最大长度要小于 10") - private String stcd; - - /** - * 独立密码 - */ - @TableField(value="ctrl_pass") - @Schema(description="独立密码") - @Size(max = 16,message = "独立密码最大长度要小于 16") - @NotBlank(message = "独立密码不能为空") - private String ctrlPass; - - /** - * max_hgt - */ - @TableField(value="max_hgt") - @Schema(description="max_hgt") - private BigDecimal maxHgt; - - /** - * min_hgt - */ - @TableField(value="min_hgt") - @Schema(description="min_hgt") - private BigDecimal minHgt; - - /** - * protocol - */ - @TableField(value="protocol") - @Schema(description="protocol") - @Size(max = 50,message = "protocol最大长度要小于 50") - private String protocol; - - /** - * plc控制版本,1自动令,2手动令,空非plc - */ - @TableField(value="plc_type") - @Schema(description="plc控制版本,1自动令,2手动令,空非plc") - private Integer plcType; - - /** - * sort_order - */ - @TableField(value="sort_order") - @Schema(description="sort_order") - private Integer sortOrder; - - /** - * 楚禹rtu摄像头数量 - */ - @TableField(value="camera_num") - @Schema(description="楚禹rtu摄像头数量") - private Integer cameraNum; - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttGateValve.java b/src/main/java/com/gunshi/project/hsz/model/AttGateValve.java deleted file mode 100644 index 31af290..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttGateValve.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 闸阀信息表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="闸阀信息表") -@Data -@TableName("public.att_gate_valve") -public class AttGateValve implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 闸阀编码 - */ - @TableId(value="valve_code", type= IdType.AUTO) - @Schema(description="闸阀编码") - @Size(max = 20,message = "闸阀编码最大长度要小于 32") - @NotBlank(message = "闸阀编码不能为空",groups = {Update.class}) - private String valveCode; - - /** - * 闸阀名称 - */ - @TableField(value="valve_name") - @Schema(description="闸阀名称") - @Size(max = 200,message = "闸阀名称最大长度要小于 200") - private String valveName; - - /** - * 所在位置 - */ - @TableField(value="gtlc") - @Schema(description="所在位置") - @Size(max = 200,message = "所在位置最大长度要小于 200") - private String gtlc; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - private String lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - private String lttd; - - /** - * 产品类型 dict_id - */ - @TableField(value="type") - @Schema(description="产品类型 dict_id") - private Long type; - - /** - * 产品型号 - */ - @TableField(value="model") - @Schema(description="产品型号") - @Size(max = 200,message = "产品型号最大长度要小于 200") - private String model; - - /** - * 产品规格 - */ - @TableField(value="spe") - @Schema(description="产品规格") - @Size(max = 200,message = "产品规格最大长度要小于 200") - private String spe; - - /** - * 结构长度 - */ - @TableField(value="len") - @Schema(description="结构长度") - @Size(max = 200,message = "结构长度最大长度要小于 200") - private String len; - /** - * 概化图X - */ - @TableField(value="img_x") - @Schema(description="概化图X") - @Size(max = 200,message = "概化图X最大长度要小于 200") - private String imgX; - - /** - * 概化图Y - */ - @TableField(value="img_y") - @Schema(description="概化图Y") - @Size(max = 200,message = "概化图Y最大长度要小于 200") - private String imgY; - - /** - * remark - */ - @TableField(value="remark") - @Schema(description="remark") - @Size(max = 250,message = "remark最大长度要小于 250") - private String remark; - - /** - * create_time - */ - @TableField(value="create_time") - @Schema(description="create_time") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - - /** - * 法兰尺寸 - */ - @TableField(value="flange_len") - @Schema(description="法兰尺寸") - @Size(max = 200,message = "法兰尺寸最大长度要小于 200") - private String flangeLen; - - /** - * 生产厂家 - */ - @TableField(value="manufacturer") - @Schema(description="生产厂家") - @Size(max = 200,message = "生产厂家最大长度要小于 200") - private String manufacturer; - - /** - * 联系电话 - */ - @TableField(value="contact_cell") - @Schema(description="联系电话") - @Size(max = 200,message = "联系电话最大长度要小于 200") - private String contactCell; - - /** - * 联系人 - */ - @TableField(value="contacts") - @Schema(description="联系人") - @Size(max = 200,message = "联系人最大长度要小于 200") - private String contacts; - - /** - * 是否可手动控制 - */ - @TableField(value="manual_operation") - @Schema(description="是否可手动控制") - private Boolean manualOperation; - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttMeaWeir.java b/src/main/java/com/gunshi/project/hsz/model/AttMeaWeir.java deleted file mode 100644 index 81b6f8b..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttMeaWeir.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 量水堰表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="量水堰表") -@Data -@TableName("public.att_mea_weir") -public class AttMeaWeir implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="weir_code", type= IdType.AUTO) - @Schema(description="主键") - @Size(max = 32,message = "主键最大长度要小于 32") - @NotBlank(message = "主键不能为空",groups = {Update.class}) - private String weirCode; - - /** - * 量水堰名称 - */ - @TableField(value="weir_name") - @Schema(description="量水堰名称") - @Size(max = 30,message = "量水堰名称最大长度要小于 30") - private String weirName; - - /** - * 行政区划 - */ - @TableField(value="adcd") - @Schema(description="行政区划") - @Size(max = 100,message = "行政区划最大长度要小于 100") - private String adcd; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - private String lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - private String lttd; - - /** - * 设施类别 - */ - @TableField(value="type") - @Schema(description="设施类别") - private Integer type; - - /** - * 所在位置 - */ - @TableField(value="location") - @Schema(description="所在位置") - @Size(max = 300,message = "所在位置最大长度要小于 300") - private String location; - - /** - * 结构形式 - */ - @TableField(value="style") - @Schema(description="结构形式") - @Size(max = 100,message = "结构形式最大长度要小于 100") - private String style; - - /** - * 建成日期 - */ - @TableField(value="build_date") - @Schema(description="建成日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date buildDate; - - /** - * 设计流量 - */ - @TableField(value="des_q") - @Schema(description="设计流量") - // @Size(max = 0,message = "设计流量最大长度要小于 0") - private String desQ; - - /** - * 实达流量 - */ - @TableField(value="real_q") - @Schema(description="实达流量") - // @Size(max = 0,message = "实达流量最大长度要小于 0") - private String realQ; - - /** - * 备注 - */ - @TableField(value="remark") - @Schema(description="备注") - @Size(max = 500,message = "备注最大长度要小于 500") - private String remark; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - // @Size(max = 0,message = "创建时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttResBase.java b/src/main/java/com/gunshi/project/hsz/model/AttResBase.java deleted file mode 100644 index a017e27..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttResBase.java +++ /dev/null @@ -1,610 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 水库基本信息表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库基本信息表") -@Data -@TableName("public.att_res_base") -public class AttResBase implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 水库代码 - */ - @TableId(value="res_code", type= IdType.AUTO) - @Schema(description="水库代码") - @Size(max = 32,message = "水库代码最大长度要小于 32") - @NotBlank(message = "水库代码不能为空") - private String resCode; - - /** - * 水库名称 - */ - @TableField(value="res_name") - @Schema(description="水库名称") - @Size(max = 100,message = "水库名称最大长度要小于 100") - @NotBlank(message = "水库名称不能为空") - private String resName; - - /** - * 左下角经度 - */ - @TableField(value="low_left_long") - @Schema(description="左下角经度") - private BigDecimal lowLeftLong; - - /** - * 左下角纬度 - */ - @TableField(value="low_left_lat") - @Schema(description="左下角纬度") - private BigDecimal lowLeftLat; - - /** - * 右上角经度 - */ - @TableField(value="up_right_long") - @Schema(description="右上角经度") - private BigDecimal upRightLong; - - /** - * 右上角纬度 - */ - @TableField(value="up_right_lat") - @Schema(description="右上角纬度") - private BigDecimal upRightLat; - - /** - * 水库所在位置 - */ - @TableField(value="res_loc") - @Schema(description="水库所在位置") - @Size(max = 256,message = "水库所在位置最大长度要小于 256") - private String resLoc; - - /** - * 水库类型 山丘水库 1 平原水库 2 地下水库 3 - */ - @TableField(value="res_type") - @Schema(description="水库类型 山丘水库 1 平原水库 2 地下水库 3") - @Size(max = 1,message = "水库类型 山丘水库 1 平原水库 2 地下水库 3最大长度要小于 1") - private String resType; - - /** - * 工程等别 Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5 - */ - @TableField(value="eng_grad") - @Schema(description="工程等别 Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5") - @Size(max = 1,message = "工程等别 Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5最大长度要小于 1") - private String engGrad; - - /** - * 工程规模 大 (1)型 1 大 (2)型 2 中型 3 小 (1)型 4 小 (2)型 5 其他 9 - */ - @TableField(value="eng_scal") - @Schema(description="工程规模 大 (1)型 1 大 (2)型 2 中型 3 小 (1)型 4 小 (2)型 5 其他 9") - @Size(max = 1,message = "工程规模 大 (1)型 1 大 (2)型 2 中型 3 小 (1)型 4 小 (2)型 5 其他 9最大长度要小于 1") - private String engScal; - - /** - * 坝址控制流域面积 - */ - @TableField(value="wat_shed_area") - @Schema(description="坝址控制流域面积") - private BigDecimal watShedArea; - - /** - * 防洪高水位 - */ - @TableField(value="upp_lev_flco") - @Schema(description="防洪高水位") - private BigDecimal uppLevFlco; - - /** - * 正常蓄水位 - */ - @TableField(value="norm_wat_lev") - @Schema(description="正常蓄水位") - // @Size(max = 0,message = "正常蓄水位最大长度要小于 0") - private BigDecimal normWatLev; - - /** - * 正常蓄水位相应水面面积 - */ - @TableField(value="norm_pool_stag_area") - @Schema(description="正常蓄水位相应水面面积") - // @Size(max = 0,message = "正常蓄水位相应水面面积最大长度要小于 0") - private BigDecimal normPoolStagArea; - - /** - * 正常蓄水位相应库容 - */ - @TableField(value="norm_pool_stag_cap") - @Schema(description="正常蓄水位相应库容") - // @Size(max = 0,message = "正常蓄水位相应库容最大长度要小于 0") - private BigDecimal normPoolStagCap; - - /** - * 主汛期防洪限制水位 - */ - @TableField(value="fl_low_lim_lev") - @Schema(description="主汛期防洪限制水位") - private BigDecimal flLowLimLev; - - /** - * 防洪限制水位库容 - */ - @TableField(value="fl_low_lim_lev_cap") - @Schema(description="防洪限制水位库容") - // @Size(max = 0,message = "防洪限制水位库容最大长度要小于 0") - private BigDecimal flLowLimLevCap; - - /** - * 死水位 - */ - @TableField(value="dead_lev") - @Schema(description="死水位") - // @Size(max = 0,message = "死水位最大长度要小于 0") - private BigDecimal deadLev; - - /** - * 总库容 - */ - @TableField(value="tot_cap") - @Schema(description="总库容") - // @Size(max = 0,message = "总库容最大长度要小于 0") - private BigDecimal totCap; - - /** - * 兴利库容 - */ - @TableField(value="ben_res_cap") - @Schema(description="兴利库容") - // @Size(max = 0,message = "兴利库容最大长度要小于 0") - private BigDecimal benResCap; - - /** - * 死库容 - */ - @TableField(value="dead_cap") - @Schema(description="死库容") - // @Size(max = 0,message = "死库容最大长度要小于 0") - private BigDecimal deadCap; - - /** - * 调洪库容 - */ - @TableField(value="stor_fl_cap") - @Schema(description="调洪库容") - // @Size(max = 0,message = "调洪库容最大长度要小于 0") - private BigDecimal storFlCap; - - /** - * 防洪库容 - */ - @TableField(value="flco_cap") - @Schema(description="防洪库容") - // @Size(max = 0,message = "防洪库容最大长度要小于 0") - private BigDecimal flcoCap; - - /** - * 工程建设情况 在建 0 已建 1 - */ - @TableField(value="eng_stat") - @Schema(description="工程建设情况 在建 0 已建 1") - @Size(max = 1,message = "工程建设情况 在建 0 已建 1最大长度要小于 1") - private String engStat; - - /** - * 开工时间 - */ - @TableField(value="start_date") - @Schema(description="开工时间") - // @Size(max = 0,message = "开工时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date startDate; - - /** - * 建成时间 - */ - @TableField(value="comp_date") - @Schema(description="建成时间") - // @Size(max = 0,message = "建成时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date compDate; - - /** - * 归口管理部门 水利部门 1 电力部门 2 农业部门 3 林业部门 4 城建部门 5 航运部门 6 环保部门 7 其他部门 9 - */ - @TableField(value="adm_dep") - @Schema(description="归口管理部门 水利部门 1 电力部门 2 农业部门 3 林业部门 4 城建部门 5 航运部门 6 环保部门 7 其他部门 9") - @Size(max = 1,message = "归口管理部门 水利部门 1 电力部门 2 农业部门 3 林业部门 4 城建部门 5 航运部门 6 环保部门 7 其他部门 9最大长度要小于 1") - private String admDep; - - /** - * 备注 - */ - @TableField(value="note") - @Schema(description="备注") - @Size(max = 256,message = "备注最大长度要小于 256") - private String note; - - /** - * 记录生效时间 - */ - @TableField(value="eff_date") - @Schema(description="记录生效时间") - // @Size(max = 0,message = "记录生效时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date effDate; - - /** - * 记录失效时间 - */ - @TableField(value="expr_date") - @Schema(description="记录失效时间") - // @Size(max = 0,message = "记录失效时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date exprDate; - - /** - * 所在行政区划 行政区划名称 格式:省-市-县-镇 - */ - @TableField(value="adnm") - @Schema(description="所在行政区划 行政区划名称 格式:省-市-县-镇") - @Size(max = 256,message = "所在行政区划 行政区划名称 格式:省-市-县-镇最大长度要小于 256") - private String adnm; - - /** - * 所在流域 流域名称 - */ - @TableField(value="bas_name") - @Schema(description="所在流域 流域名称") - @Size(max = 256,message = "所在流域 流域名称最大长度要小于 256") - private String basName; - - /** - * 所在水系 水系名称 - */ - @TableField(value="ws_name") - @Schema(description="所在水系 水系名称") - @Size(max = 256,message = "所在水系 水系名称最大长度要小于 256") - private String wsName; - - /** - * 所在河流名称 - */ - @TableField(value="rv_name") - @Schema(description="所在河流名称") - @Size(max = 256,message = "所在河流名称最大长度要小于 256") - private String rvName; - - /** - * 注册时间 - */ - @TableField(value="reg_time") - @Schema(description="注册时间") - // @Size(max = 0,message = "注册时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date regTime; - - /** - * 注册登记号 - */ - @TableField(value="reg_sn") - @Schema(description="注册登记号") - @Size(max = 256,message = "注册登记号最大长度要小于 256") - private String regSn; - - /** - * 管理单位 管理单位名称 - */ - @TableField(value="manag_name") - @Schema(description="管理单位 管理单位名称") - @Size(max = 256,message = "管理单位 管理单位名称最大长度要小于 256") - private String managName; - - /** - * 高程基准面 基面名称 - */ - @TableField(value="elev_dat") - @Schema(description="高程基准面 基面名称") - @Size(max = 256,message = "高程基准面 基面名称最大长度要小于 256") - private BigDecimal elevDat; - - /** - * 水库功能 功能名称 - */ - @TableField(value="rsv_function") - @Schema(description="水库功能 功能名称") - @Size(max = 256,message = "水库功能 功能名称最大长度要小于 256") - private String rsvFunction; - - /** - * 溢洪道是否有闸 1:有 0:无 - */ - @TableField(value="spillway_gate") - @Schema(description="溢洪道是否有闸 1:有 0:无") - @Size(max = 1,message = "溢洪道是否有闸 1:有 0:无最大长度要小于 1") - private String spillwayGate; - - /** - * 校核洪水位 - */ - @TableField(value="cal_flood_lev") - @Schema(description="校核洪水位") - // @Size(max = 0,message = "校核洪水位最大长度要小于 0") - private BigDecimal calFloodLev; - - /** - * 设计洪水位 - */ - @TableField(value="des_flood_lev") - @Schema(description="设计洪水位") - // @Size(max = 0,message = "设计洪水位最大长度要小于 0") - private BigDecimal desFloodLev; - - /** - * 坝顶高程 - */ - @TableField(value="crest_elev") - @Schema(description="坝顶高程") - // @Size(max = 0,message = "坝顶高程最大长度要小于 0") - private BigDecimal crestElev; - - /** - * 最大坝高 - */ - @TableField(value="max_dam_heig") - @Schema(description="最大坝高") - // @Size(max = 0,message = "最大坝高最大长度要小于 0") - private BigDecimal maxDamHeig; - - /** - * 设计洪水位时最大下泄流量 - */ - @TableField(value="max_des_flood_flow") - @Schema(description="设计洪水位时最大下泄流量") - // @Size(max = 0,message = "设计洪水位时最大下泄流量最大长度要小于 0") - private BigDecimal maxDesFloodFlow; - - /** - * 校核洪水位时最大下泄流量 - */ - @TableField(value="max_cal_flood_flow") - @Schema(description="校核洪水位时最大下泄流量") - // @Size(max = 0,message = "校核洪水位时最大下泄流量最大长度要小于 0") - private BigDecimal maxCalFloodFlow; - - /** - * 下游河道安全流量 - */ - @TableField(value="ds_saft_flow") - @Schema(description="下游河道安全流量") - // @Size(max = 0,message = "下游河道安全流量最大长度要小于 0") - private BigDecimal dsSaftFlow; - - /** - * 工程概况 - */ - @TableField(value="proj_overview") - @Schema(description="工程概况") - @Size(max = 1000,message = "工程概况最大长度要小于 1000") - private String projOverview; - - /** - * 关联测站 - */ - @TableField(value="stcd") - @Schema(description="关联测站") - @Size(max = 18,message = "关联测站最大长度要小于 18") - private String stcd; - - /** - * 是否病险 1:病 - */ - @TableField(value="is_danger") - @Schema(description="是否病险 1:病 ") - // @Size(max = 0,message = "是否病险 1:病 最大长度要小于 0") - private Integer isDanger; - - /** - * 病险概况 - */ - @TableField(value="danger_overview") - @Schema(description="病险概况") - // @Size(max = 0,message = "病险概况最大长度要小于 0") - private BigDecimal dangerOverview; - - /** - * 重点水库 - */ - @TableField(value="is_important") - @Schema(description="重点水库") - // @Size(max = 0,message = "重点水库最大长度要小于 0") - private Integer isImportant; - - /** - * 经度 (°) - */ - @TableField(value="lgtd") - @Schema(description="经度 (°)") - // @Size(max = 0,message = "经度 (°)最大长度要小于 0") - private BigDecimal lgtd; - - /** - * 纬度 (°) - */ - @TableField(value="lttd") - @Schema(description="纬度 (°)") - // @Size(max = 0,message = "纬度 (°)最大长度要小于 0") - private BigDecimal lttd; - - /** - * geojson - */ - @TableField(value="geometry") - @Schema(description="geojson") - // @Size(max = 0,message = "geojson最大长度要小于 0") - private BigDecimal geometry; - - /** - * 是否有大坝安监数据 - */ - @TableField(value="has_wypress") - @Schema(description="是否有大坝安监数据") - // @Size(max = 0,message = "是否有大坝安监数据最大长度要小于 0") - private Integer hasWypress; - - /** - * adcd - */ - @TableField(value="adcd") - @Schema(description="adcd") - @Size(max = 255,message = "adcd最大长度要小于 255") - private String adcd; - - /** - * 堰顶高程,m - */ - @TableField(value="wcrstel") - @Schema(description="堰顶高程,m") - private BigDecimal wcrstel; - - /** - * feedPop - */ - @TableField(value="feed_pop") - @Schema(description="受益人口(人)") - private Integer feedPop; - - /** - * design_irr_area - */ - @TableField(value="design_irr_area") - @Schema(description="设计灌溉面积(亩)") - private BigDecimal designIrrArea; - - /** - * actual_irr_area - */ - @TableField(value="actual_irr_area") - @Schema(description="实际灌溉面积(亩)") - private BigDecimal actualIrrArea; - - /** - * actual_irr_area - */ - @TableField(value="benefit") - @Schema(description="供水效益") - private String benefit; - - /** - * 全流域面积 - */ - @TableField(value="bas_area") - @Schema(description="全流域面积") - private BigDecimal basArea; - - /** - * 坝址以上主河床长度 - */ - @TableField(value="wat_river_len") - @Schema(description="坝址以上主河床长度") - private BigDecimal watRiverLen; - - /** - * 坝址以上主河床坡降 - */ - @TableField(value="wat_river_slope") - @Schema(description="坝址以上主河床坡降") - private BigDecimal watRiverSlope; - - /** - * 多年平均降雨量(坝址处) - */ - @TableField(value="annual_avg_drp") - @Schema(description="多年平均降雨量(坝址处)") - private BigDecimal annualAvgDrp; - - /** - * 多年平均气温 - */ - @TableField(value="annual_avg_tem") - @Schema(description="多年平均气温") - private BigDecimal annualAvgTem; - - /** - * 保护人口(人) - */ - @TableField(value="protect_population") - @Schema(description="保护人口(人)") - private Double protectPopulation; - - /** - * 保护农田(亩) - */ - @TableField(value="protect_farmland") - @Schema(description="保护农田(亩)") - private Double protectFarmland; - - /** - * 地震基本烈度Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5 VI 6 - */ - @TableField(value="seismic_intensity") - @Schema(description="地震基本烈度Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5 VI 6") - private Integer seismicIntensity; - - /** - * 地震动参数设计值 - */ - @TableField(value="seismic_parm") - @Schema(description="地震动参数设计值") - private BigDecimal seismicParm; - - /** - * 设计洪水标准及洪峰流量 - */ - @TableField(value="des_flood_peak_flow") - @Schema(description="设计洪水标准及洪峰流量") - private BigDecimal desFloodPeakFlow; - - /** - * 校核洪水标准及洪峰流量 - */ - @TableField(value="cal_flood_peak_flow") - @Schema(description="校核洪水标准及洪峰流量") - private BigDecimal calFloodPeakFlow; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - - @TableField(value="brief_tpl") - @JsonIgnore - private String briefTpl; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/AttResBuilding.java b/src/main/java/com/gunshi/project/hsz/model/AttResBuilding.java deleted file mode 100644 index 129302d..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttResBuilding.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.IdType; -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.math.BigDecimal; - -/** -* 描述: 水库基本信息表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库基本信息表") -@Data -@TableName("public.att_res_building") -public class AttResBuilding implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 水库代码 - */ - @TableId(value = "id", type = IdType.INPUT) - private Integer id; - - // 主坝字段 (prefix: main_) 挡水建筑物(大坝) - private String mainType; // 主坝-坝型 建筑物型式 - private String mainFoundation; //主坝-地基特性 - private String mainBasicIntensityOfAnEarthQuake; //主坝-地震基本烈度 - private BigDecimal mainCrestElevation; // 主坝-坝顶高程(m) - private BigDecimal mainCrestLength; // 主坝-坝顶长度(m) - private BigDecimal mainCrestWidth; // 主坝-坝顶宽度(m) - private BigDecimal mainMaxHeight; // 主坝-最大坝高(m) - private BigDecimal mainEarthquakeAcceleration;// 主坝-地震峰值加速度 - private BigDecimal mainTopOfWaveBarrierElevation;// 主坝-防浪墙顶高程 - - // 副坝字段 (prefix: aux_) - private String auxType; // 副坝-坝型 - private BigDecimal auxCrestElevation; // 副坝-坝顶高程(m) - private BigDecimal auxCrestLength; // 副坝-坝顶长度(m) - private BigDecimal auxCrestWidth; // 副坝-坝顶宽度(m) - private BigDecimal auxMaxHeight; // 副坝-最大坝高(m) - - // 溢洪道字段 (prefix: spillway_) 泄水建筑物 - private String spillwayType; // 溢洪道-型式 - private String spillwayCrestType; // 溢洪道-堰顶型式 - private String spillwayFoundation; // 溢洪道-地基特性 - private BigDecimal spillwayCrestElevation; // 溢洪道-溢流堰顶高程(m) - private BigDecimal spillwayNetWidth; // 溢洪道-溢流堰净宽(m) - private String spillwayEnergyDissipation; // 溢洪道-消能型式 - private BigDecimal spillwayCheckFloodDischarge; // 溢洪道-校核洪水下泄流量(m³/s) - private BigDecimal spillwayDesignFloodDischarge; // 溢洪道-设计洪水下泄流量(m³/s) - private BigDecimal spillwayScouringDischarge; // 溢洪道-消能防冲下泄流量(m³/s) - private BigDecimal spillwayMaxSingleWidthFlow;//溢洪道-最大单宽流量 - - - // 灌溉发电洞字段 (prefix: irrigation_) - private String irrigationType; // 灌溉发电洞-型式 - private String irrigationLiningType; // 灌溉发电洞-衬砌型式 - private String irrigationFoundation; // 灌溉发电洞-地基特性 - private BigDecimal irrigationInletElevation; // 灌溉发电洞-进口底板高程(m) - private String irrigationCrossSection; // 灌溉发电洞-断面尺寸(m) - private BigDecimal irrigationLength; // 灌溉发电洞-洞长(m) - private BigDecimal irrigationDesignFlow; // 灌溉发电洞-设计流量(m³/s) - private String irrigationGateType; // 灌溉发电洞-进口闸门型式 - private String irrigationHoistType; // 灌溉发电洞-进口启闭机型式 - - // 放空洞字段 (prefix: emptying_) - private String emptyingType; // 放空洞-型式 - private String emptyingLiningType; // 放空洞-衬砌型式 - private String emptyingFoundation; // 放空洞-地基特性 - private BigDecimal emptyingInletElevation; // 放空洞-进口底板高程(m) - private String emptyingCrossSection; // 放空洞-断面尺寸(m) - private BigDecimal emptyingLength; // 放空洞-洞长(m) - private BigDecimal emptyingDesignFlow; // 放空洞-设计流量(m³/s) - private String emptyingGateType; // 放空洞-进口闸门型式 - private String emptyingHoistType; // 放空洞-进口启闭机型式 - - // 拦洪坝字段 (prefix: flood_control_) - private String floodControlType; // 拦洪坝-坝型 - private BigDecimal floodControlCrestElevation; // 拦洪坝-坝顶高程(m) - private BigDecimal floodControlCrestLength; // 拦洪坝-坝顶长度(m) - private BigDecimal floodControlCrestWidth; // 拦洪坝-坝顶宽度(m) - private BigDecimal floodControlMaxHeight; // 拦洪坝-最大坝高(m) - - // 防汛道路字段 (prefix: road_) - private BigDecimal roadLength; // 防汛道路-防汛路长度(m) - private BigDecimal roadWidth; // 防汛道路-路面宽度(m) - - //输水建筑物 (prefix: water_conveyance ) - private BigDecimal waterConveyanceFlow;//输水建筑物-设计流量 - private String waterConveyanceType;//输水建筑物-进水口形式 - private String waterConveyanceWaterIntakeType;//输水建筑物-取水方式 - private String waterConveyanceFoundation;//输水建筑物-地基特性 - private BigDecimal waterConveyanceInletBottomHigh;//输水建筑物-进口底槛高程 - private String waterConveyanceOrificeSize;//输水建筑物-孔口尺寸 - private String waterConveyanceGateType;//输水建筑物-闸门型式 - private Integer waterConveyanceHoistNum;//输水建筑物-启闭机型式容量及数量 - private String waterConveyanceTunnelType;//输水建筑物-引水隧洞型式 - private BigDecimal waterConveyanceLength;//输水建筑物-长度 - private String waterConveyanceLiningType;//输水建筑物-衬砌型式 -} - diff --git a/src/main/java/com/gunshi/project/hsz/model/AttSpillwayBase.java b/src/main/java/com/gunshi/project/hsz/model/AttSpillwayBase.java deleted file mode 100644 index ea9f552..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttSpillwayBase.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Delete; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 溢洪道 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="溢洪道") -@Data -@TableName("public.att_spillway_base") -public class AttSpillwayBase implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 溢洪道代码 - */ - @TableId(value="code", type= IdType.AUTO) - @Schema(description="溢洪道代码") - @Size(max = 32,message = "溢洪道代码最大长度要小于 32") - @NotBlank(message = "溢洪道代码不能为空",groups = { Update.class, Delete.class}) - private String code; - - /** - * 溢洪道名称 - */ - @TableField(value="name") - @Schema(description="溢洪道名称") - @Size(max = 30,message = "溢洪道名称最大长度要小于 30") - private String name; - - /** - * 型式 - */ - @TableField(value="build_type") - @Schema(description="型式") - @Size(max = 30,message = "型式最大长度要小于 30") - private String buildType; - - /** - * 堰顶型式 - */ - @TableField(value="crest_type") - @Schema(description="堰顶型式") - @Size(max = 30,message = "堰顶型式最大长度要小于 30") - private String crestType; - - /** - * 地基特性 - */ - @TableField(value="found_character") - @Schema(description="地基特性") - @Size(max = 30,message = "地基特性最大长度要小于 30") - private String foundCharacter; - - /** - * 堰顶高程(m) - */ - @TableField(value="crest_ele") - @Schema(description="堰顶高程(m)") - private String crestEle; - - /** - * 总净宽 - */ - @TableField(value="net_width") - @Schema(description="总净宽") - @Size(max = 30,message = "总净宽最大长度要小于 30") - private String netWidth; - - /** - * 消能方式 - */ - @TableField(value="elim_method") - @Schema(description="消能方式") - @Size(max = 18,message = "消能方式最大长度要小于 18") - private String elimMethod; - - /** - * 消能防冲流量 - */ - @TableField(value="elim_q") - @Schema(description="消能防冲流量") - private String elimQ; - - /** - * 最大单宽流量 - */ - @TableField(value="bwid_q") - @Schema(description="最大单宽流量") - private String bwidQ; - - /** - * 设计泄洪流量(m3/s) - */ - @TableField(value="des_q") - @Schema(description="设计泄洪流量(m3/s)") - private String desQ; - - /** - * 校核泄洪流量(m3/s) - */ - @TableField(value="cali_q") - @Schema(description="校核泄洪流量(m3/s)") - private String caliQ; - - /** - * 备注 - */ - @TableField(value="remark") - @Schema(description="备注") - @Size(max = 500,message = "备注最大长度要小于 500") - private String remark; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/AttWaterItem.java b/src/main/java/com/gunshi/project/hsz/model/AttWaterItem.java deleted file mode 100644 index 1270b12..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/AttWaterItem.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 水质整编展示项目表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水质整编展示项目表") -@Data -@TableName("public.att_water_item") -public class AttWaterItem implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - private Long id; - - /** - * 字段名 - */ - @TableField(value="en_name") - @Schema(description="字段名") - @Size(max = 10,message = "字段名最大长度要小于 10") - private String enName; - - /** - * 中文名 - */ - @TableField(value="cn_name") - @Schema(description="中文名") - @Size(max = 10,message = "中文名最大长度要小于 10") - private String cnName; - - /** - * 单位 - */ - @TableField(value="unit") - @Schema(description="单位") - @Size(max = 10,message = "单位最大长度要小于 10") - private String unit; - - /** - * 是否显示 - */ - @TableField(value="is_show") - @Schema(description="是否显示(0 显示;1 隐藏)") - private String isShow; - - /** - * 是否启用 - */ - @TableField(value="is_enable") - @Schema(description="是否启用(0 启动;1 禁用)") - private String isEnable; - - /** - * 排序 - */ - @TableField(value="sort") - @Schema(description="排序") - private String sort; - - /** - * 是否比较(0 比较;1 不比较) - */ - @TableField(value="is_compare") - @Schema(description="是否比较(0 比较;1 不比较)") - private String isCompare; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/BroadcastStation.java b/src/main/java/com/gunshi/project/hsz/model/BroadcastStation.java deleted file mode 100644 index 6ce4bf5..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/BroadcastStation.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 广播预警站 -* author: xusan -* date: 2024-09-25 10:19:15 -*/ -@Schema(description="广播预警站") -@Data -@TableName("public.broadcast_station") -public class BroadcastStation implements Serializable { - - public final static String thisTableName = "BroadcastStation"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 站点名称 - */ - @TableField(value="name") - @Schema(description="站点名称") - @Size(max = 100,message = "站点名称最大长度要小于 100") - @NotBlank(message = "站点名称不能为空") - private String name; - - /** - * 排序 - */ - @TableField(value="order_index") - @Schema(description="排序") - private Integer orderIndex; - - /** - * 独立密码 - */ - @TableField(value="ctrl_pass") - @Schema(description="独立密码") - @Size(max = 16,message = "独立密码最大长度要小于 16") - private String ctrlPass; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/BroadcastTemplate.java b/src/main/java/com/gunshi/project/hsz/model/BroadcastTemplate.java deleted file mode 100644 index c0de1dd..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/BroadcastTemplate.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 广播模板 -* author: xusan -* date: 2024-09-25 10:19:00 -*/ -@Schema(description="广播模板") -@Data -@TableName("public.broadcast_template") -public class BroadcastTemplate implements Serializable { - - public final static String thisTableName = "BroadcastTemplate"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 内容 - */ - @TableField(value="content") - @Schema(description="内容") - @Size(max = 500,message = "内容最大长度要小于 500") - @NotBlank(message = "内容不能为空") - private String content; - - /** - * 排序 - */ - @TableField(value="order_index") - @Schema(description="排序") - private Integer orderIndex; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/BroadcastWarn.java b/src/main/java/com/gunshi/project/hsz/model/BroadcastWarn.java deleted file mode 100644 index 713f1bc..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/BroadcastWarn.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 广播预警信息 -* author: xusan -* date: 2024-09-25 10:17:53 -*/ -@Schema(description="广播预警信息") -@Data -@TableName("public.broadcast_warn") -public class BroadcastWarn implements Serializable { - - public final static String thisTableName = "BroadcastWarn"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 站点id - */ - @TableField(value="station_id") - @Schema(description="站点id") - @JsonSerialize(using = ToStringSerializer.class) - private Long stationId; - - @TableField(exist = false) - @Schema(description="站点名称") - private String name; - - @TableField(exist = false) - @Schema(description="站点id集合") - private List stationIds; - - /** - * 告警内容 - */ - @TableField(value="warn_content") - @Schema(description="告警内容") - @Size(max = 500,message = "告警内容最大长度要小于 500") - private String warnContent; - - /** - * 创建人id - */ - @TableField(value="create_user_id") - @Schema(description="创建人id") - private Long createUserId; - - /** - * 创建人名称 - */ - @TableField(value="create_user_name") - @Schema(description="创建人名称") - @Size(max = 100,message = "创建人名称最大长度要小于 100") - private String createUserName; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - /** - * 密码 - */ - @TableField(exist = false) - @Schema(description="密码") - private String ctrlPass; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ByLog.java b/src/main/java/com/gunshi/project/hsz/model/ByLog.java deleted file mode 100644 index 5718a94..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ByLog.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -@Schema(description="白蚁-日志记录") -@Data -@TableName("by_log") -public class ByLog { - - /** - * 主键 - */ - @TableId(value = "id") - @NotNull(message = "id不能为空",groups = Update.class) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "log_name") - @NotNull(message = "日志名称不能为空",groups = {Insert.class, Update.class}) - @Schema(description = "日志名称") - private String logName; - - @TableField(value = "pre_date") - @NotNull(message = "防治日期",groups = {Insert.class, Update.class}) - @Schema(description = "防治日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date preDate; - - @TableField(value = "fill_time") - @Schema(description = "填报时间 (自动生成)") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date fillTime; - - @TableField(value = "total_cost") - @Schema(description = "总花费") - private BigDecimal totalCost; - - - @TableField(value = "remark") - @Schema(description = "备注") - private String remark; - - - @TableField(exist = false) - private List details; - - - @TableField(exist = false) - private List files; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ByLogDetail.java b/src/main/java/com/gunshi/project/hsz/model/ByLogDetail.java deleted file mode 100644 index 4d40858..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ByLogDetail.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Schema(description="白蚁-日志记录细节") -@Data -@TableName("by_log_detail") -public class ByLogDetail { - - /** - * 主键 - */ - @TableId(value = "id") - @NotNull(message = "id不能为空",groups = Update.class) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "by_log_id") - @NotNull(message = "日志id不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - @Schema(description = "日志id") - private Long byLogId; - - @TableField(value = "pre_place_detail_id") - @NotNull(message = "防治部位id不能为空",groups = {Insert.class, Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - @Schema(description = "防治部位id") - private Long ppdi; - - - @TableField(exist = false) - @Schema(description = "防治部位名称") - private String ppdn; - - @TableField(exist = false) - @Schema(description = "防治点id") - @JsonSerialize(using = ToStringSerializer.class) - private Long ppi; - - @TableField(exist = false) - @Schema(description = "防治点名称") - private String ppn; - - @TableField(exist = false) - @Schema(description = "防治人员") - private String prePerson; - - @TableField(value = "pre_person_id") - @Schema(description = "防治人员ID") - private String prePersonId; - - @TableField(value = "pre_method") - @Schema(description = "防治方法") - private String preMethod; - - - @TableField(value = "pre_effect") - @Schema(description = "防治效果") - private String preEffect; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ByPlan.java b/src/main/java/com/gunshi/project/hsz/model/ByPlan.java deleted file mode 100644 index a9387ab..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ByPlan.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -@Schema(description="白蚁-计划管理") -@Data -@TableName("by_plan") -public class ByPlan { - - - /** - * 主键 - */ - @TableId(value = "id") - @NotNull(message = "id不能为空",groups = Update.class) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "plan_id") - @Schema(description = "计划编号") - @NotNull(message = "计划编号不能为空",groups = {Insert.class, Update.class}) - private String planId; - - @TableField(value = "plan_name") - @Schema(description = "计划名称") - private String planName; - - @TableField(value = "plan_date_start") - @Schema(description = "计划开始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date planDateStart; - - @TableField(value = "plan_date_end") - @Schema(description = "计划结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date planDateEnd; - - @TableField(value = "user_id") - @Schema(description = "用户id") - private String userId; - - @TableField(exist = false) - @Schema(description = "用户名称") - private String userName; - - @TableField(value = "predict_cost") - @Schema(description = "预算花费") - private BigDecimal predictCost; - - - @TableField(exist = false) - List byPlanDetail; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ByPlanDetail.java b/src/main/java/com/gunshi/project/hsz/model/ByPlanDetail.java deleted file mode 100644 index bcca05c..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ByPlanDetail.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Schema(description="白蚁-计划管理细节") -@Data -@TableName("by_plan_detail") -public class ByPlanDetail { - - /** - * 主键 - */ - @TableId(value = "id") - @NotNull(message = "id不能为空",groups = Update.class) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "plan_id") - @Schema(description = "计划编号") - @NotNull(message = "计划编号不能为空",groups = {Insert.class, Update.class}) - private String planId; - - @TableField(value = "pre_place_detail_id") - @Schema(description = "防治部位编号") - @NotNull(message = "防治部位编号",groups = {Insert.class, Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long ppdi; - - @TableField(exist = false) - @Schema(description = "防治部位名称 这个是给前端显示看的,不用传数据给后端") - private String ppdn; - - @TableField(exist = false) - @Schema(description = "防治点id 这个是给前端显示看的,不用传数据给后端") - @JsonSerialize(using = ToStringSerializer.class) - private Long ppi; - - @TableField(exist = false) - @Schema(description = "防治点名称 这个是给前端显示看的,不用传数据给后端") - private String ppn; - - @TableField(value = "pre_method") - @Schema(description = "防治方法") - private String preMethod; - - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/BzDictRel.java b/src/main/java/com/gunshi/project/hsz/model/BzDictRel.java deleted file mode 100644 index 5523010..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/BzDictRel.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 业务关联字典 -* author: xusan -* date: 2024-08-28 10:05:20 -*/ -@Schema(description="业务关联字典") -@Data -@TableName("public.bz_dict_rel") -public class BzDictRel implements Serializable { - - public final static String thisTableName = "BzDictRel"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 业务id - */ - @TableField(value="business_id") - @Schema(description="业务id") - @JsonSerialize(using = ToStringSerializer.class) - private Long businessId; - - /** - * 字典id - */ - @TableField(value="sys_dict_id") - @Schema(description="字典id") - @JsonSerialize(using = ToStringSerializer.class) - private Long sysDictId; - - /** - * 业务类型 - */ - @TableField(value="group_id") - @Schema(description="业务类型") - @Size(max = 100,message = "业务类型最大长度要小于 100") - private String groupId; - - @TableField(exist = false) - @Schema(description = "字典名称") - private String dictNm; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/CctvBMenu.java b/src/main/java/com/gunshi/project/hsz/model/CctvBMenu.java deleted file mode 100644 index a46818a..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/CctvBMenu.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** -* 描述: 视频点目录 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="视频点目录") -@Data -@TableName("public.cctv_b_menu") -public class CctvBMenu implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * id - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="id") - @NotNull(message = "id不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * parent_id - */ - @TableField(value="parent_id") - @Schema(description="parent_id") - @JsonSerialize(using = ToStringSerializer.class) - private Long parentId; - - /** - * name - */ - @TableField(value="name") - @Schema(description="name") - @Size(max = 255,message = "name最大长度要小于 255") - @NotBlank(message = "name不能为空") - private String name; - - /** - * 排序 - */ - @TableField(value="order_index") - @Schema(description="排序") - private Integer orderIndex; - - @TableField(exist = false) - @Schema(description="子集") - private List children; - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/CommCreate.java b/src/main/java/com/gunshi/project/hsz/model/CommCreate.java deleted file mode 100644 index 0298a5e..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/CommCreate.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.FieldStrategy; -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/9/25. - * - * @author XuSan - * @version 1.0 - */ -@Schema(description="新增公共模型") -@Data -public class CommCreate { - - - /** - * 创建人Id - */ - @TableField(value="create_by" ,updateStrategy = FieldStrategy.NOT_NULL) - @Schema(description="填报人Id") - @JsonSerialize(using = ToStringSerializer.class) - private Long createBy; - - /** - * 创建人名字 - */ - @TableField(value="create_name" ,updateStrategy = FieldStrategy.NOT_NULL) - @Schema(description="填报人名字") - @Size(max = 30,message = "填报人名字最大长度要小于 30") - private String createName; - - /** - * 创建人时间 - */ - @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) - @TableField(value="create_time" ,updateStrategy = FieldStrategy.NOT_NULL) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/CommUpdate.java b/src/main/java/com/gunshi/project/hsz/model/CommUpdate.java deleted file mode 100644 index bc40a5d..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/CommUpdate.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.FieldStrategy; -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * Description: - * Created by XuSan on 2024/9/25. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Schema(description="修改公共模型") -@Data -public class CommUpdate extends CommCreate{ - - - /** - * 更新人Id - */ - @TableField(value="update_by" ,updateStrategy = FieldStrategy.NOT_NULL) - @Schema(description="更新人Id") - @JsonSerialize(using = ToStringSerializer.class) - private Long updateBy; - - /** - * 更新人名字 - */ - @TableField(value="update_name" ,updateStrategy = FieldStrategy.NOT_NULL) - @Schema(description="更新人名字") - @Size(max = 30,message = "更新人名字最大长度要小于 30") - private String updateName; - - /** - * 更新时间 - */ - @Schema(description="更新时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) - @TableField(value="update_time" ,updateStrategy = FieldStrategy.NOT_NULL) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date updateTime; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/DispatchRecord.java b/src/main/java/com/gunshi/project/hsz/model/DispatchRecord.java deleted file mode 100644 index 880efda..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/DispatchRecord.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 调度记录 -* author: xusan -* date: 2024-10-09 09:56:28 -*/ -@Schema(description="调度记录") -@Data -@TableName("public.dispatch_record") -public class DispatchRecord implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "id不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 调度开始时间 - */ - @TableField(value="start_time") - @Schema(description="调度开始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date startTime; - - /** - * 调度结束时间 - */ - @TableField(value="end_time") - @Schema(description="调度结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date endTime; - - /** - * 状态(0执行中 1完成) - */ - @TableField(value="status") - @Schema(description="状态(0执行中 1完成)") - private Integer status; - - /** - * 操作人id - */ - @TableField(value="op_user_id") - @Schema(description="操作人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long opUserId; - - /** - * 操作人名称 - */ - @TableField(value="op_user_name") - @Schema(description="操作人名称") - @Size(max = 100,message = "操作人名称最大长度要小于 100") - private String opUserName; - - /** - * 调度原因 - */ - @TableField(value="dispatch_reason") - @Schema(description="调度原因") - @Size(max = 500,message = "dispatch_reason最大长度要小于 500") - private String dispatchReason; - - /** - * 调度详情 - */ - @TableField(value="dispatch_detail") - @Schema(description="调度详情") - @Size(max = 500,message = "dispatch_detail最大长度要小于 500") - private String dispatchDetail; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @TableField(exist = false) - @Schema(description = "附件") - private List files; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/FileAssociations.java b/src/main/java/com/gunshi/project/hsz/model/FileAssociations.java deleted file mode 100644 index a16ff9d..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/FileAssociations.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 文件关联业务表 -* author: xusan -* date: 2024-07-17 10:09:40 -*/ -@Schema(description="文件关联业务表") -@Data -@TableName("public.file_associations") -public class FileAssociations implements Serializable { - - public final static String thisTableName = "file_associations"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 业务id - */ - @TableField(value="business_id") - @Schema(description="业务id") - @NotBlank(message = "业务id不能为空") - private String businessId; - - /** - * 文件id - */ - @TableField(value="file_id") - @Schema(description="文件id") - @NotBlank(message = "文件id不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long fileId; - - /** - * 序号 - */ - @TableField(value="sort_on") - @Schema(description="序号") - private Integer sortOn; - - /** - * 时间戳 - */ - @TableField(value="tm") - @Schema(description="时间戳") - @NotBlank(message = "时间戳不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 业务表名 - */ - @TableField(value="table_name") - @Schema(description="业务表名") - @Size(max = 255,message = "业务表名最大长度要小于 255") - @NotBlank(message = "业务表名不能为空") - private String tableName; - /** - * 业务表名 - */ - @TableField(value="del") - @Size(max = 1,message = "删除标识最大长度要小于 2") - @Schema(description="删除标识1: 未删除,0:已删除") - @NotBlank(message = "删除标识不能为空") - private String del; - - - @TableField(value = "type") - @Schema(description = "业务文件类型 " + - "0:水库基本信息-工程基础信息-工程特性表," + - "1:水库基本信息-设计图纸和资料" + - "大坝 图片文件type:3 , 视频文件type:4") - private String type; - - - @TableField(exist = false) - @Schema(description = "文件路径") - private String filePath; - - @TableField(exist = false) - @Schema(description = "文件名称") - private String fileName; - - @TableField(exist = false) - @Schema(description = "文件大小 (byte)") - private String fileSize; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchCommand.java b/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchCommand.java deleted file mode 100644 index 48d3780..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchCommand.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * 描述: 调度指令表 - * author: xusan - * date: 2024-12-19 - */ -@Schema(description = "调度指令表") -@Data -@TableName("public.forecast_dispatch_command") -public class ForecastDispatchCommand implements Serializable { - - public final static String THIS_TABLE_NAME = "forecast_dispatch_command"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - @Schema(description = "主键") - @NotNull(message = "id不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 调度方案ID - */ - @TableField(value = "plan_id") - @Schema(description = "调度方案ID") - @NotNull(message = "调度方案ID不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long planId; - - /** - * 指令时间 - */ - @TableField(value = "command_time") - @Schema(description = "指令时间") - @NotNull(message = "指令时间不能为空") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime commandTime; - - /** - * 泄洪闸(0:关, 1:开) - */ - @TableField(value = "flood_gate") - @Schema(description = "泄洪闸(0:关, 1:开)") - private Integer floodGate; - - /** - * 节制闸(0:关, 1:开) - */ - @TableField(value = "control_gate") - @Schema(description = "节制闸(0:关, 1:开)") - private Integer controlGate; - - /** - * 分水闸(0:关, 1:开) - */ - @TableField(value = "diversion_gate") - @Schema(description = "分水闸(0:关, 1:开)") - private Integer diversionGate; - - /** - * 输水灌溉闸(0:关, 1:开) - */ - @TableField(value = "irrigation_gate") - @Schema(description = "输水灌溉闸(0:关, 1:开)") - private Integer irrigationGate; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchPlan.java b/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchPlan.java deleted file mode 100644 index 5d800ab..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchPlan.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.List; - -/** - * 描述: 调度方案主表 - * author: xusan - * date: 2024-12-19 - */ -@Schema(description = "调度方案主表") -@Data -@TableName("public.forecast_dispatch_plan") -public class ForecastDispatchPlan implements Serializable { - - public final static String THIS_TABLE_NAME = "forecast_dispatch_plan"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - @Schema(description = "主键") - @NotNull(message = "id不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 方案名称 - */ - @TableField(value = "plan_name") - @Schema(description = "方案名称") - @Size(max = 255, message = "方案名称最大长度要小于 255") - @NotNull(message = "方案名称不能为空") - private String planName; - - /** - * 洪水预报方案名称 - */ - @TableField(value = "forecast_plan_name") - @Schema(description = "方案名称") - @Size(max = 255, message = "方案名称最大长度要小于 255") - @NotNull(message = "方案名称不能为空") - private String forecastPlanName; - - /** - * 调度规程id - */ - @TableField(value = "res_plan_b_id") - @Schema(description = "调度规程id") - @JsonSerialize(using = ToStringSerializer.class) - private Long resPlanBId; - - @TableField(exist = false) - private String resPlanBName; - - /** - * 开始时间 - */ - @TableField(value = "start_time") - @Schema(description = "开始时间") - @NotNull(message = "开始时间不能为空") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTm; - - /** - * 结束时间 - */ - @TableField(value = "end_time") - @Schema(description = "结束时间") - @NotNull(message = "结束时间不能为空") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTm; - - /** - * 制定时间 - */ - @TableField(value = "create_time") - @Schema(description = "制定时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime createTime; - - /** - * 制定人 - */ - @TableField(value = "creator") - @Schema(description = "制定人") - @Size(max = 100, message = "制定人最大长度要小于 100") - private String creator; - - /** - * 水库控制水位(m) - */ - @TableField(value = "reservoir_control_level") - @Schema(description = "水库控制水位(m)") - @NotNull(message = "水库控制水位不能为空") - private java.math.BigDecimal reservoirControlLevel; - - @TableField(exist = false) - private ForecastDispatchResult forecastDispatchResult; - - @TableField(exist = false) - private List forecastDispatchCommands; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchResult.java b/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchResult.java deleted file mode 100644 index f4a1a02..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastDispatchResult.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.bouncycastle.cert.dane.DANEEntry; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * 描述: 调度结果表 - * author: xusan - * date: 2024-12-19 - */ -@Schema(description = "调度结果表") -@Data -@TableName("public.forecast_dispatch_result") -public class ForecastDispatchResult implements Serializable { - - public final static String THIS_TABLE_NAME = "forecast_dispatch_result"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value = "id", type = IdType.AUTO) - @Schema(description = "主键") - @NotNull(message = "id不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 调度方案ID - */ - @TableField(value = "plan_id") - @Schema(description = "调度方案ID") - @NotNull(message = "调度方案ID不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long planId; - - - - /** - * 最大入库流量(m³/s) - */ - @TableField(value = "max_inflow") - @Schema(description = "最大入库流量(m³/s)") - @NotNull(message = "最大入库流量不能为空") - private java.math.BigDecimal maxInflow; - - @TableField(value = "max_inflow_date") - @Schema(description = "最大入库流量时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime maxInflowDate; - - - - /** - * 总入库水量(万m³) - */ - @TableField(value = "total_inflow_volume") - @Schema(description = "总入库水量(万m³)") - private java.math.BigDecimal totalInflowVolume; - - /** - * 总出库水量(万m³) - */ - @TableField(value = "total_outflow_volume") - @Schema(description = "总出库水量(万m³)") - private java.math.BigDecimal totalOutflowVolume; - - /** - * 最高库水位(m) - */ - @TableField(value = "max_reservoir_level") - @Schema(description = "最高库水位(m)") - private java.math.BigDecimal maxReservoirLevel; - - @TableField(value = "max_reservoir_level_date") - @Schema(description = "最高库水位时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime maxReservoirLevelDate; - - /** - * 超汛限水位值(m) - */ - @TableField(value = "exceed_limit_value") - @Schema(description = "超汛限水位值(m)") - private java.math.BigDecimal exceedLimitValue; - - /** - * 超汛限开始时间 - */ - @TableField(value = "exceed_limit_start") - @Schema(description = "超汛限开始时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime exceedLimitStart; - - /** - * 超汛限结束时间 - */ - @TableField(value = "exceed_limit_end") - @Schema(description = "超汛限结束时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime exceedLimitEnd; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastK.java b/src/main/java/com/gunshi/project/hsz/model/ForecastK.java deleted file mode 100644 index cb90f43..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastK.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 预报_前期影响雨量折减系数表 -* author: cxw -* date: 2024-07-30 10:02:24 -*/ -@EqualsAndHashCode(callSuper = true) -@Schema(description="预报_前期影响雨量折减系数表") -@Data -@TableName("public.forecast_k") -public class ForecastK extends GenericPageParams implements Serializable { - - public final static String thisTableName = "ForecastK"; - - private static final long serialVersionUID = 1L; - - /** - * 月份 - */ - @TableId(value="month", type= IdType.NONE) - @Schema(description="月份") - private Integer month; - - /** - * k值 - */ - @TableField(value="k_value") - @Schema(description="k值") - private BigDecimal kValue; - - /** - * 创建时间 - */ - @TableField(value="chtm") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * 修改时间 - */ - @TableField(value="update_time") - @Schema(description="修改时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date updateTime; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastPPaR.java b/src/main/java/com/gunshi/project/hsz/model/ForecastPPaR.java deleted file mode 100644 index 36a00ec..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastPPaR.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** -* 描述: 预报_降雨径流关系表 -* author: cxw -* date: 2024-07-30 10:02:24 -*/ -@EqualsAndHashCode(callSuper = true) -@Schema(description="预报_降雨径流关系表") -@Data -@TableName("public.forecast_p_pa_r") -public class ForecastPPaR extends GenericPageParams implements Serializable { - - public final static String thisTableName = "ForecastPPaR"; - - private static final long serialVersionUID = 1L; - - /** - * r - */ - @TableField(value="r") - @Schema(description="r") - private BigDecimal r; - - /** - * psum - */ - @TableField(value="psum") - @Schema(description="psum") - private BigDecimal psum; - - /** - * rsum - */ - @TableField(value="rsum") - @Schema(description="rsum") - private BigDecimal rsum; - - /** - * pa - */ - @TableField(value="pa") - @Schema(description="pa") - private BigDecimal pa; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastPa.java b/src/main/java/com/gunshi/project/hsz/model/ForecastPa.java deleted file mode 100644 index 9901d17..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastPa.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 预报_土壤含水量表 -* author: cxw -* date: 2024-08-02 12:23:07 -*/ -@Schema(description="预报_土壤含水量表") -@Data -@TableName("public.forecast_pa") -public class ForecastPa implements Serializable { - - public final static String thisTableName = "ForecastPa"; - - private static final long serialVersionUID = 1L; - - /** - * 测站编码 - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="测站编码") - @Size(max = 255,message = "测站编码最大长度要小于 255") - @NotBlank(message = "测站编码不能为空") - @NotNull(message = "测站编码不能为空") - private String stcd; - - /** - * 日期 - */ - @TableField(value="tm") - @Schema(description="日期") - @Size(max = 10,message = "日期最大长度要小于 10") - @NotBlank(message = "日期不能为空") - @NotNull(message = "日期不能为空") - private String tm; - - /** - * 蒸发率 - */ - @TableField(value="k") - @Schema(description="蒸发率") - private BigDecimal k; - - /** - * 昨天土壤含水量 - */ - @TableField(value="pa0") - @Schema(description="昨天土壤含水量") - private BigDecimal pa0; - - /** - * 最大初损值 - */ - @TableField(value="im") - @Schema(description="最大初损值") - private BigDecimal im; - - /** - * 昨天降雨值 - */ - @TableField(value="pt0") - @Schema(description="昨天降雨值") - private BigDecimal pt0; - - /** - * 当天土壤含水量 - */ - @TableField(value="pa") - @Schema(description="当天土壤含水量") - private BigDecimal pa; - - /** - * 入库时间 - */ - @TableField(value="chtm") - @Schema(description="入库时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastProject.java b/src/main/java/com/gunshi/project/hsz/model/ForecastProject.java deleted file mode 100644 index 98e06d3..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastProject.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import com.gunshi.project.hsz.entity.vo.ForecastResultVo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 预报_预测方案管理表 -* author: cxw -* date: 2024-08-05 11:41:45 -*/ -@EqualsAndHashCode(callSuper = true) -@Schema(description="预报_预测方案管理表") -@Data -@TableName("public.forecast_project") -public class ForecastProject extends GenericPageParams implements Serializable { - - public final static String thisTableName = "ForecastProject"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 预报任务名称 - */ - @TableField(value="name") - @Schema(description="预报任务名称") - @Size(max = 255,message = "预报任务名称最大长度要小于 255") - private String name; - - /** - * 类型(1:自动 2:手动) - */ - @TableField(value="type") - @Schema(description="类型(1:自动 2:手动)") - @Size(max = 1,message = "类型(1:自动 2:手动)最大长度要小于 1") - private String type; - - /** - * 预报时间 - */ - @TableField(value="forecast_tm") - @Schema(description="预报时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date forecastTm; - - /** - * 方案执行的当前时间 - */ - @TableField(value="project_tm") - @Schema(description="方案执行的当前时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date projectTm; - - /** - * 开始时间 - */ - @TableField(value="start_tm") - @Schema(description="开始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date startTm; - - /** - * 结束时间 - */ - @TableField(value="end_tm") - @Schema(description="结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date endTm; - - /** - * 操作人id - */ - @TableField(value="user_id") - @Schema(description="操作人id") - private String userId; - - /** - * 预见期(小时) - */ - @TableField(value="forecast_period") - @Schema(description="预见期(小时)") - private Integer forecastPeriod; - - /** - * 预热期(天) - */ - @TableField(value="forecast_warm") - @Schema(description="预热期(天)") - private Integer forecastWarm; - - /** - * 方案制作时间 - */ - @TableField(value="chtm") - @Schema(description="方案制作时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * 修改时间 - */ - @TableField(value="update_tm") - @Schema(description="修改时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date updateTm; - - /** - * 任务时间间隔(小时) - */ - @TableField(value="time_interval") - @Schema(description="任务时间间隔(小时)") - private BigDecimal timeInterval; - - /** - * 自动任务id(type为1时有值) - */ - @TableField(value="task_id") - @Schema(description="自动任务id(type为1时有值)") - private Long taskId; - - /** - * 预报结果voList - */ - @Schema(description = "预报结果voList") - @TableField(exist = false) - private List voList; - - /** - * 预报最高调洪水位(m) - */ - @Schema(description = "预报最高调洪水位(m)") - @TableField(exist = false) - private BigDecimal ycMaxSwH; - - /** - * 预报最大入库流量(m³/s) - */ - @Schema(description = "预报最大入库流量") - @TableField(exist = false) - private BigDecimal ycMaxRkQ; - - /** - * 预报最大下泄流量(m³/s) - */ - @Schema(description = "预报最大下泄流量(m³/s)") - @TableField(exist = false) - private BigDecimal ycMaxCkQ; - - /** - * 预报洪水总量(万m³) - */ - @Schema(description = "预报洪水总量(万m³)") - @TableField(exist = false) - private BigDecimal ycSumFlood; - - /** - * 预报洪水总量(万m³) - */ - @Schema(description = "入库水量(m³)") - @TableField(exist = false) - private BigDecimal rkVValue; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastResults.java b/src/main/java/com/gunshi/project/hsz/model/ForecastResults.java deleted file mode 100644 index 755b2c9..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastResults.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.alibaba.fastjson2.annotation.JSONField; -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 预报_预测结果表 -* author: cxw -* date: 2024-08-05 11:41:45 -*/ -@EqualsAndHashCode(callSuper = true) -@Schema(description="预报_预测结果表") -@Data -@TableName("public.forecast_results") -public class ForecastResults extends GenericPageParams implements Serializable { - - public final static String thisTableName = "ForecastResults"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - private Long id; - - /** - * 时间 - */ - @TableField(value="tm") - @Schema(description="时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @JSONField(format = DateFormatString.YYYY_MM_DD_HH_MM_SS) - private Date tm; - - /** - * 预测入库流量 - */ - @TableField(value="yc_rk_q_value") - @Schema(description="预测入库流量") - private BigDecimal ycRkQValue; - - /** - * 实际入库流量 - */ - @TableField(value="real_rk_q_value") - @Schema(description="实际入库流量") - private BigDecimal realRkQValue; - - /** - * 预测出库流量 - */ - @TableField(value="yc_ck_q_value") - @Schema(description="预测出库流量") - private BigDecimal ycCkQValue; - - /** - * 实际出库流量 - */ - @TableField(value="real_ck_q_value") - @Schema(description="实际出库流量") - private BigDecimal realCkQValue; - - /** - * 预测水库水位 - */ - @TableField(value="yc_sw_h_value") - @Schema(description="预测水库水位") - private BigDecimal ycSwHValue; - - /** - * 实际水库水位 - */ - @TableField(value="real_sw_h_value") - @Schema(description="实际水库水位") - private BigDecimal realSwHValue; - - /** - * 降雨 - */ - @TableField(value="drp") - @Schema(description="降雨") - private BigDecimal drp; - - /** - * 是否是预测雨量(0:真实 1:预测) - */ - @TableField(value="ispre_drp") - @Schema(description="是否是预测雨量(0:真实 1:预测)") - private String ispreDrp; - - /** - * 径流深 - */ - @TableField(value="r") - @Schema(description="径流深") - private BigDecimal r; - - /** - * 方案id - */ - @TableField(value="project_id") - @Schema(description="方案id") - private Long projectId; - - /** - * 方案制作时间 - */ - @TableField(value="chtm") - @Schema(description="方案制作时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * 修改时间 - */ - @TableField(value="update_tm") - @Schema(description="修改时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date updateTm; - - /** - * 主汛期防洪限制水位 - */ - @TableField(value="fl_low_lim_lev") - @Schema(description="主汛期防洪限制水位") - private BigDecimal flLowLimLev; - - /** - * 当前堰顶高度预警值 - */ - @Schema(description="当前堰顶高度预警值") - private BigDecimal currentYdgdyjz; - - /** - * 土壤含水量 - */ - @TableField(value="pa") - @Schema(description="土壤含水量") - private BigDecimal pa; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastTask.java b/src/main/java/com/gunshi/project/hsz/model/ForecastTask.java deleted file mode 100644 index b99b1e3..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastTask.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 预报_预测自动任务管理表 -* author: cxw -* date: 2024-08-05 11:41:44 -*/ -@EqualsAndHashCode(callSuper = true) -@Schema(description="预报_预测自动任务管理表") -@Data -@TableName("public.forecast_task") -public class ForecastTask extends GenericPageParams implements Serializable { - - public final static String thisTableName = "ForecastTask"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 预报任务名称 - */ - @TableField(value="name") - @Schema(description="预报任务名称") - @Size(max = 255,message = "预报任务名称最大长度要小于 255") - private String name; - - /** - * 操作人id - */ - @TableField(value="user_id") - @Schema(description="操作人id") - private String userId; - - @TableField(exist = false) - @Schema(description="操作人姓名") - private String userName; - - /** - * 预见期(小时) - */ - @TableField(value="forecast_period") - @Schema(description="预见期(小时)") - private Integer forecastPeriod; - - /** - * 预热期(天) - */ - @TableField(value="forecast_warm") - @Schema(description="预热期(天)") - private Integer forecastWarm; - - /** - * 方案制作时间 - */ - @TableField(value="chtm") - @Schema(description="方案制作时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * 修改时间 - */ - @TableField(value="update_tm") - @Schema(description="修改时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date updateTm; - - /** - * 任务状态(0:正常 1:暂停 2:删除) - */ - @TableField(value="status") - @Schema(description="任务状态(0:正常 1:暂停 2:删除)") - @Size(max = 1,message = "任务状态(0:正常 1:暂停 2:删除)最大长度要小于 1") - private String status; - - /** - * 任务时间间隔(小时) - */ - @TableField(value="time_interval") - @Schema(description="任务时间间隔(小时)") - private BigDecimal timeInterval; - - /** - * 选择的预报时间 - */ - @Schema(description = "选择的预报时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date forecastTime; - - /** - * 选择的执行当前时间 - */ - @Schema(description = "选择的执行当前时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date nowTime; - - /** - * 选择的起始时间 - */ - @Schema(description = "选择的起始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date startTime; - - /** - * 选择的结束时间 - */ - @Schema(description = "选择的结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date endTime; - - /** - * 上一次执行时间 - */ - @TableField(value="last_excute_tm") - @Schema(description="上一次执行时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date lastExcuteTm; - - /** - * 上一次结果保存时间 - */ - @TableField(value="last_resultsave_tm") - @Schema(description="上一次结果保存时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date lastResultsaveTm; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastU.java b/src/main/java/com/gunshi/project/hsz/model/ForecastU.java deleted file mode 100644 index a6fba76..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastU.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 预报_时段单位线表 -* author: cxw -* date: 2024-07-30 10:02:24 -*/ -@EqualsAndHashCode(callSuper = true) -@Schema(description="预报_时段单位线表") -@Data -@TableName("public.forecast_u") -public class ForecastU extends GenericPageParams implements Serializable { - - public final static String thisTableName = "ForecastU"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * u值 - */ - @TableField(value="u_value") - @Schema(description="u值") - private BigDecimal uValue; - - /** - * 创建时间 - */ - @TableField(value="chtm") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * 修改时间 - */ - @TableField(value="update_time") - @Schema(description="修改时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date updateTime; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ForecastUseparam.java b/src/main/java/com/gunshi/project/hsz/model/ForecastUseparam.java deleted file mode 100644 index 5525772..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ForecastUseparam.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 预报_通用参数管理 -* author: cxw -* date: 2024-07-30 10:02:24 -*/ -@EqualsAndHashCode(callSuper = true) -@Schema(description="预报_通用参数管理") -@Data -@TableName("public.forecast_useparam") -public class ForecastUseparam extends GenericPageParams implements Serializable { - - public final static String thisTableName = "ForecastUseparam"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 参数名称 - */ - @TableField(value="param_name") - @Schema(description="参数名称") - @Size(max = 255,message = "参数名称最大长度要小于 255") - private String paramName; - - /** - * 参数名 - */ - @TableField(value="param_code") - @Schema(description="参数名") - @Size(max = 255,message = "参数名最大长度要小于 255") - private String paramCode; - - /** - * 参数值 - */ - @TableField(value="param_value") - @Schema(description="参数值") - @Size(max = 255,message = "参数值最大长度要小于 255") - private String paramValue; - - /** - * 参数排序 - */ - @TableField(value="param_sort") - @Schema(description="参数排序") - private Integer paramSort; - - /** - * 参数描述 - */ - @TableField(value="param_desc") - @Schema(description="参数描述") - @Size(max = 255,message = "参数描述最大长度要小于 255") - private String paramDesc; - - /** - * 创建时间 - */ - @TableField(value="chtm") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - - /** - * 修改时间 - */ - @TableField(value="update_time") - @Schema(description="修改时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date updateTime; - - /** - * 参数类型(1:普通类型,一对一;2:一对多,k;3:多对多,PPaR) - */ - @TableField(value="param_type") - @Schema(description="参数类型(1:普通类型,一对一;2:一对多;3多对多)") - private String paramType; - - /** - * 功能码(前端调用引导) - */ - @TableField(value="ability_code") - @Schema(description="功能码(前端调用引导)") - @Size(max = 255,message = "功能码最大长度要小于 255") - private String abilityCode; - - /** - * 备注 - */ - @TableField(value="remarks") - @Schema(description="备注") - @Size(max = 255,message = "备注最大长度要小于 255") - private String remarks; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/GatePore.java b/src/main/java/com/gunshi/project/hsz/model/GatePore.java deleted file mode 100644 index 78c3b02..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/GatePore.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 闸孔信息表 -* author: xusan -* date: 2024-09-26 10:44:56 -*/ -@Schema(description="闸孔信息表") -@Data -@TableName("public.gate_pore") -public class GatePore implements Serializable { - - public final static String thisTableName = "GatePore"; - - private static final long serialVersionUID = 1L; - - /** - * stcd - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="stcd") - @Size(max = 16,message = "stcd最大长度要小于 16") - @NotBlank(message = "stcd不能为空") - private String stcd; - - /** - * 第几个闸门 - */ - @TableField(value="gate_number") - @Schema(description="第几个闸门") - private Integer gateNumber; - - /** - * 实际开度 - */ - @TableField(value="real_aperture") - @Schema(description="实际开度") - private BigDecimal realAperture; - - /** - * 设定开度 - */ - @TableField(value="set_aperture") - @Schema(description="设定开度") - private BigDecimal setAperture; - - /** - * 传感器水位 - */ - @TableField(value="sensor_lever") - @Schema(description="传感器水位") - private BigDecimal sensorLever; - - /** - * 海拔水位 - */ - @TableField(value="altitude_lever") - @Schema(description="海拔水位") - private BigDecimal altitudeLever; - - /** - * 闸门远控信号,如果是0,则不能通过指令控制 - */ - @TableField(value="remote_signal") - @Schema(description="闸门远控信号,如果是0,则不能通过指令控制") - private Integer remoteSignal; - - /** - * 闸门电源故障信号 - */ - @TableField(value="power_signal") - @Schema(description="闸门电源故障信号") - private Integer powerSignal; - - /** - * 闸门开闸中 - */ - @TableField(value="opening_signal") - @Schema(description="闸门开闸中") - private Integer openingSignal; - - /** - * 闸门关闸中 - */ - @TableField(value="closeing_signal") - @Schema(description="闸门关闸中") - private Integer closeingSignal; - - /** - * 闸门故障 - */ - @TableField(value="error_signal") - @Schema(description="闸门故障") - private Integer errorSignal; - - /** - * 闸门全开 - */ - @TableField(value="opened_signal") - @Schema(description="闸门全开") - private Integer openedSignal; - - /** - * 闸门全关 - */ - @TableField(value="closed_signal") - @Schema(description="闸门全关") - private Integer closedSignal; - - /** - * tm - */ - @TableField(value="tm") - @Schema(description="tm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/GateValveCctvRel.java b/src/main/java/com/gunshi/project/hsz/model/GateValveCctvRel.java deleted file mode 100644 index 328c353..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/GateValveCctvRel.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 闸阀关联视频点 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="闸阀关联视频点") -@Data -@TableName("public.gate_valve_cctv_rel") -public class GateValveCctvRel implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * id - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="id") - @NotNull(message = "id不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 闸阀编号 - */ - @TableField(value="valve_code") - @Schema(description="闸阀编号") - @Size(max = 100,message = "闸阀编号最大长度要小于 100") - @NotBlank(message = "闸阀编号不能为空", groups = {Insert.class,Update.class}) - private String valveCode; - - /** - * 视频点 - */ - @TableField(value="index_code") - @Schema(description="视频点") - @Size(max = 100,message = "视频点最大长度要小于 100") - @NotBlank(message = "视频点不能为空", groups = {Insert.class,Update.class}) - private String indexCode; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/GateValveKey.java b/src/main/java/com/gunshi/project/hsz/model/GateValveKey.java deleted file mode 100644 index cd5ec2a..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/GateValveKey.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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; - -/** -* 描述: 闸阀密码表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="闸阀密码表") -@Data -@TableName("public.gate_valve_key") -public class GateValveKey implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 闸阀编号 - */ - @TableId(value="valve_code", type= IdType.AUTO) - @Schema(description="闸阀编号") - private String valveCode; - - /** - * 密码 - */ - @TableField(value="key") - @Schema(description="密码") - private String key; - - @TableField(exist = false) - @Schema(description="开关状态") - private String status; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/GateValveOplog.java b/src/main/java/com/gunshi/project/hsz/model/GateValveOplog.java deleted file mode 100644 index f2188be..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/GateValveOplog.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 闸阀操作日志表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="闸阀操作日志表") -@Data -@TableName("public.gate_valve_oplog") -public class GateValveOplog implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 闸阀ID - */ - @TableField(value="valve_code") - @Schema(description="闸阀ID") - private String valveCode; - - /** - * 设定开度 - */ - @TableField(value="status") - @Schema(description="设定开度") - private String status; - - /** - * 操作前开度 - */ - @TableField(value="before_status") - @Schema(description="操作前开度") - private String beforeStatus; - - /** - * 操作内容 - */ - @TableField(value="op_content") - @Schema(description="操作内容") - private String opContent; - - /** - * 操作人id - */ - @TableField(value="op_user_id") - @Schema(description="操作人id") - private Long opUserId; - - /** - * 操作人 - */ - @TableField(value="op_user_name") - @Schema(description="操作人") - private String opUserName; - - /** - * 操作时间 - */ - @TableField(value="tm") - @Schema(description="操作时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/GateValveR.java b/src/main/java/com/gunshi/project/hsz/model/GateValveR.java deleted file mode 100644 index 93923e4..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/GateValveR.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.github.jeffreyning.mybatisplus.anno.MppMultiId; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 闸阀开关历史表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="闸阀开关历史表") -@Data -@TableName("public.gate_valve_r") -public class GateValveR implements Serializable { - - - private static final long serialVersionUID = 1L; - - - /** - * 闸阀ID - */ - @MppMultiId - @TableField(value="valve_code") - @Schema(description="闸阀ID") - @Size(max = 20,message = "闸阀ID最大长度要小于 20") - private String valveCode; - - /** - * 开关状态 - */ - @TableField(value="status") - @Schema(description="开关状态") - private String status; - - /** - * 操作时间 - */ - @MppMultiId - @TableField(value="tm") - @Schema(description="操作时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/GateValveReal.java b/src/main/java/com/gunshi/project/hsz/model/GateValveReal.java deleted file mode 100644 index 53694a2..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/GateValveReal.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.github.jeffreyning.mybatisplus.anno.MppMultiId; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 闸阀开关表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="闸阀开关表") -@Data -@TableName("public.gate_valve_real") -public class GateValveReal implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 闸阀ID - */ - @MppMultiId - @TableField(value="valve_code") - @Schema(description="闸阀ID") - @Size(max = 20,message = "闸阀ID最大长度要小于 20") - private String valveCode; - - /** - * 开关状态 - */ - @TableField(value="status") - @Schema(description="开关状态") - private String status; - - /** - * 操作时间 - */ - @MppMultiId - @TableField(value="tm") - @Schema(description="操作时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/HiddenInfo.java b/src/main/java/com/gunshi/project/hsz/model/HiddenInfo.java deleted file mode 100644 index c7c2b97..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/HiddenInfo.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; - -@TableName("hidden_info") -@Data -public class HiddenInfo { - @TableId("id") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField("mentence_farmer_record_id") - @Schema(description = "日常维护记录id") - private Long mentenceFarmerRecordId; - - @TableField("found_time") - @Schema(description = "隐患发现时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date foundTime; - - @TableField("hidden_desc") - @Schema(description = "隐患描述") - private String hiddenDesc; - - @TableField("status") - @Schema(description = "状态 0已处理 1未处理") - private Integer status; - - @TableField("resolve_method") - @Schema(description = "解决办法") - private String resolveMethod; - - @TableField("resolve_time") - @Schema(description = "解决时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date resolveTime; - - @TableField(exist = false) - private List files; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/HisWaterData.java b/src/main/java/com/gunshi/project/hsz/model/HisWaterData.java deleted file mode 100644 index df1fe6c..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/HisWaterData.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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.math.BigDecimal; - -@Data -@TableName("his_water_data") -public class HisWaterData { - - @TableId(value = "id",type = IdType.AUTO) - private Long id; - - - @TableField("year") - @Schema(description = "年度") - private Integer year; - - @TableField("month") - @Schema(description = "月份") - private Integer month; - - @TableField("avg_water") - @Schema(description = "月份平均蓄水量") - private BigDecimal avgWater; - - - - /** - * 类型(1年 2月) - */ - @TableField(value="type") - @Schema(description="类型(1年 2月)") - private Integer type; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ISCAIEvent.java b/src/main/java/com/gunshi/project/hsz/model/ISCAIEvent.java deleted file mode 100644 index be7f63a..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ISCAIEvent.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 lombok.Data; - -import java.time.LocalDateTime; - -/** - * @author lyf - * @since 2025-11-04 - */ -@Data -@TableName("isc_ai_event") -public class ISCAIEvent { - @TableId(value="id", type = IdType.INPUT) - private String id; - @TableField("json") - private String json; - - @TableField("starttime") - private LocalDateTime startTime; - @TableField("endtime") - private LocalDateTime endTime; - /* - 事件等级,1-低,2-中,3-高 - */ - @TableField("eventlevel") - private Integer eventLevel; - /* - 事件处理状态,0-未处理,1-已处理 - */ - @TableField("handlestatus") - private Integer handleStatus; - - /* - 事件类型名称 - */ - @TableField("eventtypename") - private String eventTypeName; - /* - 事件源名称 - */ - @TableField("resname") - private String resName; - /* - 事件源编号 - */ - @TableField("resindexcode") - private String resIndexCode; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/IaCBsnssinfo.java b/src/main/java/com/gunshi/project/hsz/model/IaCBsnssinfo.java deleted file mode 100644 index 921d352..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/IaCBsnssinfo.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 防治区企事业单位汇总表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="防治区企事业单位汇总表") -@Data -@TableName("public.ia_c_bsnssinfo") -public class IaCBsnssinfo implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 单位编码 - */ - @TableId(value="eicd", type= IdType.AUTO) - @Schema(description="单位编码") - @Size(max = 50,message = "单位编码最大长度要小于 50") - @NotBlank(message = "单位编码不能为空") - private String eicd; - - /** - * 单位名称 - */ - @TableField(value="name") - @Schema(description="单位名称") - @Size(max = 50,message = "单位名称最大长度要小于 50") - private String name; - - /** - * 小流域代码 - */ - @TableField(value="wscd") - @Schema(description="小流域代码") - @Size(max = 18,message = "小流域代码最大长度要小于 18") - private String wscd; - - /** - * 行政区划代码 - */ - @TableField(value="adcd") - @Schema(description="行政区划代码") - @Size(max = 15,message = "行政区划代码最大长度要小于 15") - @NotBlank(message = "行政区划代码不能为空") - private String adcd; - - /** - * 危险区代码 - */ - @TableField(value="dand") - @Schema(description="危险区代码") - @Size(max = 30,message = "危险区代码最大长度要小于 30") - private String dand; - - /** - * 经度 (°) - */ - @TableField(value="lgtd") - @Schema(description="经度 (°)") - // @Size(max = 0,message = "经度 (°)最大长度要小于 0") - private String lgtd; - - /** - * 纬度 (°) - */ - @TableField(value="lttd") - @Schema(description="纬度 (°)") - // @Size(max = 0,message = "纬度 (°)最大长度要小于 0") - private String lttd; - - /** - * 单位类别 1:事业单位,2:企业单位 - */ - @TableField(value="type") - @Schema(description="单位类别 1:事业单位,2:企业单位") - @Size(max = 1,message = "单位类别 1:事业单位,2:企业单位最大长度要小于 1") - private String type; - - /** - * 组织机构代码 - */ - @TableField(value="ocode") - @Schema(description="组织机构代码") - @Size(max = 30,message = "组织机构代码最大长度要小于 30") - private String ocode; - - /** - * 地址 - */ - @TableField(value="address") - @Schema(description="地址") - @Size(max = 50,message = "地址最大长度要小于 50") - private String address; - - /** - * 占地面积 (亩) - */ - @TableField(value="area") - @Schema(description="占地面积 (亩)") - // @Size(max = 0,message = "占地面积 (亩)最大长度要小于 0") - private String area; - - /** - * 在岗人数(人) - */ - @TableField(value="pcount") - @Schema(description="在岗人数(人)") - // @Size(max = 0,message = "在岗人数(人)最大长度要小于 0") - private Integer pcount; - - /** - * 房屋数量(座) - */ - @TableField(value="hcount") - @Schema(description="房屋数量(座)") - // @Size(max = 0,message = "房屋数量(座)最大长度要小于 0") - private Integer hcount; - - /** - * 固定资产(万元) - */ - @TableField(value="avalue") - @Schema(description="固定资产(万元)") - // @Size(max = 0,message = "固定资产(万元)最大长度要小于 0") - private String avalue; - - /** - * 年产值(万元) - */ - @TableField(value="ovalue") - @Schema(description="年产值(万元)") - // @Size(max = 0,message = "年产值(万元)最大长度要小于 0") - private String ovalue; - - /** - * 填写人姓名 - */ - @TableField(value="signer") - @Schema(description="填写人姓名") - @Size(max = 10,message = "填写人姓名最大长度要小于 10") - private String signer; - - /** - * 审核批次号 - */ - @TableField(value="audid") - @Schema(description="审核批次号") - @Size(max = 20,message = "审核批次号最大长度要小于 20") - private String audid; - - /** - * 审核状态 - */ - @TableField(value="status") - @Schema(description="审核状态") - @Size(max = 4,message = "审核状态最大长度要小于 4") - private String status; - - /** - * 备注 - */ - @TableField(value="comments") - @Schema(description="备注") - @Size(max = 200,message = "备注最大长度要小于 200") - private String comments; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/IaCDanad.java b/src/main/java/com/gunshi/project/hsz/model/IaCDanad.java deleted file mode 100644 index 72b3ab6..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/IaCDanad.java +++ /dev/null @@ -1,204 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 危险区基本情况调查成果汇总表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="危险区基本情况调查成果汇总表") -@Data -@TableName("public.ia_c_danad") -public class IaCDanad implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 危险区代码 - */ - @TableId(value="dand", type= IdType.AUTO) - @Schema(description="危险区代码") - @Size(max = 20,message = "危险区代码最大长度要小于 20") - @NotBlank(message = "危险区代码不能为空") - private String dand; - - /** - * 危险区名称 - */ - @TableField(value="name") - @Schema(description="危险区名称") - @Size(max = 50,message = "危险区名称最大长度要小于 50") - @NotBlank(message = "危险区名称不能为空") - private String name; - - /** - * 小流域代码 - */ - @TableField(value="wscd") - @Schema(description="小流域代码") - @Size(max = 50,message = "小流域代码最大长度要小于 50") - @NotBlank(message = "小流域代码不能为空") - private String wscd; - - /** - * 行政区划代码 - */ - @TableField(value="adcd") - @Schema(description="行政区划代码") - @Size(max = 15,message = "行政区划代码最大长度要小于 15") - @NotBlank(message = "行政区划代码不能为空") - private String adcd; - - /** - * 危险区内人口(人) - */ - @TableField(value="ptcount") - @Schema(description="危险区内人口(人)") - // @Size(max = 0,message = "危险区内人口(人)最大长度要小于 0") - private Integer ptcount; - - /** - * 危险区内总户数(户) - */ - @TableField(value="etcount") - @Schema(description="危险区内总户数(户)") - // @Size(max = 0,message = "危险区内总户数(户)最大长度要小于 0") - private Integer etcount; - - /** - * 危险区内ⅰ类经济户数(户) - */ - @TableField(value="ecount1") - @Schema(description="危险区内ⅰ类经济户数(户)") - // @Size(max = 0,message = "危险区内ⅰ类经济户数(户)最大长度要小于 0") - private Integer ecount1; - - /** - * 危险区内ⅱ类经济户数(户) - */ - @TableField(value="ecount2") - @Schema(description="危险区内ⅱ类经济户数(户)") - // @Size(max = 0,message = "危险区内ⅱ类经济户数(户)最大长度要小于 0") - private Integer ecount2; - - /** - * 危险区内ⅲ类经济户数(户) - */ - @TableField(value="ecount3") - @Schema(description="危险区内ⅲ类经济户数(户)") - // @Size(max = 0,message = "危险区内ⅲ类经济户数(户)最大长度要小于 0") - private Integer ecount3; - - /** - * 危险区内ⅳ类经济户数(户) - */ - @TableField(value="ecount4") - @Schema(description="危险区内ⅳ类经济户数(户)") - // @Size(max = 0,message = "危险区内ⅳ类经济户数(户)最大长度要小于 0") - private Integer ecount4; - - /** - * 危险区内总房屋数(座) - */ - @TableField(value="htcount") - @Schema(description="危险区内总房屋数(座)") - // @Size(max = 0,message = "危险区内总房屋数(座)最大长度要小于 0") - private Integer htcount; - - /** - * 危险区内ⅰ类房屋数(座) - */ - @TableField(value="hcount1") - @Schema(description="危险区内ⅰ类房屋数(座)") - // @Size(max = 0,message = "危险区内ⅰ类房屋数(座)最大长度要小于 0") - private Integer hcount1; - - /** - * 危险区内ⅱ类房屋数(座) - */ - @TableField(value="hcount2") - @Schema(description="危险区内ⅱ类房屋数(座)") - // @Size(max = 0,message = "危险区内ⅱ类房屋数(座)最大长度要小于 0") - private Integer hcount2; - - /** - * 危险区内ⅲ类房屋数(座) - */ - @TableField(value="hcount3") - @Schema(description="危险区内ⅲ类房屋数(座)") - // @Size(max = 0,message = "危险区内ⅲ类房屋数(座)最大长度要小于 0") - private Integer hcount3; - - /** - * 危险区内ⅳ类房屋数(座) - */ - @TableField(value="hcount4") - @Schema(description="危险区内ⅳ类房屋数(座)") - // @Size(max = 0,message = "危险区内ⅳ类房屋数(座)最大长度要小于 0") - private Integer hcount4; - - /** - * 填写人姓名 - */ - @TableField(value="signer") - @Schema(description="填写人姓名") - @Size(max = 50,message = "填写人姓名最大长度要小于 50") - private String signer; - - /** - * 审核批次号 - */ - @TableField(value="audid") - @Schema(description="审核批次号") - @Size(max = 20,message = "审核批次号最大长度要小于 20") - private String audid; - - /** - * 审核状态 - */ - @TableField(value="status") - @Schema(description="审核状态") - @Size(max = 1,message = "审核状态最大长度要小于 1") - private String status; - - /** - * 备注 - */ - @TableField(value="comments") - @Schema(description="备注") - @Size(max = 200,message = "备注最大长度要小于 200") - private String comments; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - - /** - * geojson - */ - @TableField(value="geometry") - @Schema(description="geojson") - // @Size(max = 0,message = "geojson最大长度要小于 0") - private String geometry; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/IaCFlrvvlg.java b/src/main/java/com/gunshi/project/hsz/model/IaCFlrvvlg.java deleted file mode 100644 index 01bffb1..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/IaCFlrvvlg.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 重要沿河村落居民户调查成果表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="重要沿河村落居民户调查成果表") -@Data -@TableName("public.ia_c_flrvvlg") -public class IaCFlrvvlg implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 沿河村落居民户编码 - */ - @TableId(value="avrcd", type= IdType.AUTO) - @Schema(description="沿河村落居民户编码") - @Size(max = 30,message = "沿河村落居民户编码最大长度要小于 30") - @NotBlank(message = "沿河村落居民户编码不能为空") - private String avrcd; - - /** - * 户主名称 - */ - @TableField(value="name") - @Schema(description="户主名称") - @Size(max = 50,message = "户主名称最大长度要小于 50") - private String name; - - /** - * 联系电话 - */ - @TableField(value="phone") - @Schema(description="联系电话") - private String phone; - - /** - * 行政区划代码 - */ - @TableField(value="adcd") - @Schema(description="行政区划代码") - @Size(max = 15,message = "行政区划代码最大长度要小于 15") - @NotBlank(message = "行政区划代码不能为空") - private String adcd; - - /** - * 小流域代码 - */ - @TableField(value="wscd") - @Schema(description="小流域代码") - @Size(max = 20,message = "小流域代码最大长度要小于 20") - private String wscd; - - /** - * 基准点经度 (°) - */ - @TableField(value="blgtd") - @Schema(description="基准点经度 (°) ") - // @Size(max = 0,message = "基准点经度 (°) 最大长度要小于 0") - private String blgtd; - - /** - * 基准点纬度 (°) - */ - @TableField(value="blttd") - @Schema(description="基准点纬度 (°) ") - // @Size(max = 0,message = "基准点纬度 (°) 最大长度要小于 0") - private String blttd; - - /** - * 基准点高程(m) - */ - @TableField(value="bele") - @Schema(description="基准点高程(m)") - // @Size(max = 0,message = "基准点高程(m)最大长度要小于 0") - private String bele; - - /** - * 家庭人口(人) - */ - @TableField(value="ptcount") - @Schema(description="家庭人口(人)") - // @Size(max = 0,message = "家庭人口(人)最大长度要小于 0") - private Integer ptcount; - - /** - * 建筑面积 - */ - @TableField(value="area") - @Schema(description="建筑面积") - // @Size(max = 0,message = "建筑面积最大长度要小于 0") - private String area; - - /** - * 建筑类型 住宅建筑类型分为4 类,1: 1 层住宅;2:2 层住宅;3:3 层住宅;4:3层以上住宅。 - */ - @TableField(value="btype") - @Schema(description="建筑类型 住宅建筑类型分为4 类,1: 1 层住宅;2:2 层住宅;3:3 层住宅;4:3层以上住宅。") - @Size(max = 6,message = "建筑类型 住宅建筑类型分为4 类,1: 1 层住宅;2:2 层住宅;3:3 层住宅;4:3层以上住宅。最大长度要小于 6") - private String btype; - - /** - * 结构形式 建筑根据承重的主要构件可分为 4 类,1:钢筋混凝土结构;2:混合结构;3:砖木结构;4:其他结构。 - */ - @TableField(value="stype") - @Schema(description="结构形式 建筑根据承重的主要构件可分为 4 类,1:钢筋混凝土结构;2:混合结构;3:砖木结构;4:其他结构。") - @Size(max = 7,message = "结构形式 建筑根据承重的主要构件可分为 4 类,1:钢筋混凝土结构;2:混合结构;3:砖木结构;4:其他结构。最大长度要小于 7") - private String stype; - - /** - * 宅基经度 (°) - */ - @TableField(value="lgtd") - @Schema(description="宅基经度 (°) ") - // @Size(max = 0,message = "宅基经度 (°) 最大长度要小于 0") - private String lgtd; - - /** - * 宅基纬度 (°) - */ - @TableField(value="lttd") - @Schema(description="宅基纬度 (°) ") - // @Size(max = 0,message = "宅基纬度 (°) 最大长度要小于 0") - private String lttd; - - /** - * 宅基高程(m) - */ - @TableField(value="hele") - @Schema(description="宅基高程(m)") - // @Size(max = 0,message = "宅基高程(m)最大长度要小于 0") - private String hele; - - /** - * 临水 村落居民住房是否邻近河边水流,“1”为“是”,“0”为“否”。 - */ - @TableField(value="bwater") - @Schema(description="临水 村落居民住房是否邻近河边水流,“1”为“是”,“0”为“否”。 ") - @Size(max = 8,message = "临水 村落居民住房是否邻近河边水流,“1”为“是”,“0”为“否”。 最大长度要小于 8") - private String bwater; - - /** - * 切坡 村落居民住房是否切山坡修建的,“1”为“是”,“0”为“否”。 - */ - @TableField(value="bhill") - @Schema(description="切坡 村落居民住房是否切山坡修建的,“1”为“是”,“0”为“否”。") - @Size(max = 9,message = "切坡 村落居民住房是否切山坡修建的,“1”为“是”,“0”为“否”。最大长度要小于 9") - private String bhill; - - /** - * 填写人姓名 - */ - @TableField(value="signer") - @Schema(description="填写人姓名") - @Size(max = 10,message = "填写人姓名最大长度要小于 10") - private String signer; - - /** - * 审核批次号 - */ - @TableField(value="audid") - @Schema(description="审核批次号") - @Size(max = 20,message = "审核批次号最大长度要小于 20") - private String audid; - - /** - * 审核状态 - */ - @TableField(value="status") - @Schema(description="审核状态") - @Size(max = 6,message = "审核状态最大长度要小于 6") - private String status; - - /** - * 备注 - */ - @TableField(value="comments") - @Schema(description="备注") - @Size(max = 200,message = "备注最大长度要小于 200") - private String comments; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/IcWaterForecast.java b/src/main/java/com/gunshi/project/hsz/model/IcWaterForecast.java deleted file mode 100644 index 73c034d..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/IcWaterForecast.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Data -@TableName(value = "ic_water_forecast") -public class IcWaterForecast implements Serializable { - - /** - * 主键 - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 方案名称 - */ - @TableField(value = "plan_name") - @Schema(description = "方案名称") - @NotNull(message = "方案名称不能为空", groups = {Insert.class, Update.class}) - private String planName; - - /** - * 预测开始时间 - */ - @TableField(value = "start_time") - @Schema(description = "预测开始时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime;//ps:这个地方你截取一下哈,长期的截到年月日,短期不用截 - - /** - * 预测结束时间 - */ - @TableField(value = "end_time") - @Schema(description = "预测结束时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime;//ps:这个地方你截取一下哈,长期的截到年月日,短期不用截 - - /** - * 预测来水量 - */ - @TableField(value = "forecast_water") - @Schema(description = "预测来水量") - private BigDecimal forecastWater; - - /** - * 制定时间 - */ - @TableField(value = "create_time") - @Schema(description = "制定时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime createTime; - - /** - * 制定人 - */ - @TableField(value = "create_name") - @Schema(description = "制定人") - private String createName; - - /** - * 类型:0-长期预测,1-短期预测 - */ - @TableField(value = "type") - @Schema(description = "类型:0-长期预测,1-短期预测") - private Integer type; - - - /** - * 降雨相似年 - */ - @TableField(value = "year") - @Schema(description = "降雨相似年") - private Integer year; - - - @TableField(value = "hours") - @Schema(description = "小时") - private Integer hours; - - @TableField(exist = false) - private List details; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/IcWaterForecastDetail.java b/src/main/java/com/gunshi/project/hsz/model/IcWaterForecastDetail.java deleted file mode 100644 index 21a69d4..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/IcWaterForecastDetail.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Data -@TableName(value = "ic_water_forecast_detail") -public class IcWaterForecastDetail implements Serializable { - - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "ic_water_id") - @Schema(description = "来水预测表主键") - private Long icWaterId; - - @TableField(value = "start_time") - @Schema(description = "预测开始时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; - - @TableField(value = "end_time") - @Schema(description = "预测结束时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; - - @TableField(value = "forecast_time") - @Schema(description = "预测时间(短期)") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime forecastTime; - - @TableField(value = "forecast_water") - @Schema(description = "预测水量") - private BigDecimal forecastWater; - - @TableField(value = "month") - @Schema(description = "长期预测-数据对应月份") - private Integer month; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/InspectItem.java b/src/main/java/com/gunshi/project/hsz/model/InspectItem.java deleted file mode 100644 index 44d5121..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/InspectItem.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 巡检项 -* author: xusan -* date: 2024-08-29 09:58:09 -*/ -@Schema(description="巡检项") -@Data -@TableName("public.inspect_item") -public class InspectItem implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 巡检点id - */ - @TableField(value="point_id") - @Schema(description="巡检点id") - @JsonSerialize(using = ToStringSerializer.class) - private Long pointId; - - /** - * 巡检项描述 - */ - @TableField(value="item_desc") - @Schema(description="巡检项描述") - @Size(max = 500,message = "巡检项描述最大长度要小于 500") - private String itemDesc; - - /** - * 问题描述 - */ - @TableField(value="problem_desc") - @Schema(description="问题描述") - @Size(max = 500,message = "问题描述最大长度要小于 500") - private String problemDesc; - - /** - * 处理建议 - */ - @TableField(value="handle_suggestion") - @Schema(description="处理建议") - @Size(max = 500,message = "处理建议最大长度要小于 500") - private String handleSuggestion; - - /** - * 排序号 - */ - @TableField(value="order_index") - @Schema(description="排序号") - private Integer orderIndex; - - /** - * 状态(0启用 1停用) - */ - @TableField(value="status") - @Schema(description="状态(0启用 1停用)") - private Integer status; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/InspectPoint.java b/src/main/java/com/gunshi/project/hsz/model/InspectPoint.java deleted file mode 100644 index 00a4485..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/InspectPoint.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** -* 描述: 巡检点 -* author: xusan -* date: 2024-08-29 09:57:47 -*/ -@Schema(description="巡检点") -@Data -@TableName("public.inspect_point") -public class InspectPoint implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 名称 - */ - @TableField(value="name") - @Schema(description="名称") - @Size(max = 255,message = "名称最大长度要小于 255") - @NotBlank(message = "名称不能为空") - private String name; - - /** - * 排序 - */ - @TableField(value="order_index") - @Schema(description="排序") - private Integer orderIndex; - - @TableField(exist = false) - @Schema(description = "巡检项") - private List children; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/InspectTaskTrack.java b/src/main/java/com/gunshi/project/hsz/model/InspectTaskTrack.java deleted file mode 100644 index d10ba5f..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/InspectTaskTrack.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 巡查轨迹 -* author: xusan -* date: 2024-09-18 13:59:21 -*/ -@Schema(description="巡查轨迹") -@Data -@TableName("public.inspect_task_track") -public class InspectTaskTrack implements Serializable { - - public final static String thisTableName = "InspectTaskTrack"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 任务id - */ - @TableField(value="task_id") - @Schema(description="任务id") - @JsonSerialize(using = ToStringSerializer.class) - private Long taskId; - - /** - * 经度 (°) - */ - @TableField(value="lgtd") - @Schema(description="经度 (°)") - private BigDecimal lgtd; - - /** - * 纬度 (°) - */ - @TableField(value="lttd") - @Schema(description="纬度 (°)") - private BigDecimal lttd; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskByInspectTask.java b/src/main/java/com/gunshi/project/hsz/model/JcskByInspectTask.java deleted file mode 100644 index 72fb07c..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/JcskByInspectTask.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -/** - * 巡检任务监测数据实体类 - * - * @author gunshiiot - * @TableName jcsk_by_inspect_task - */ -@Data -@TableName(value = "jcsk_by_inspect_task") -@IgnoreAutoMapperAndDao -public class JcskByInspectTask { - - /** - * 设备id - */ - @TableField("\"order\"") - @Schema(description = "设备id") - private String order; - - /** - * 巡检任务id - */ - @TableField("inspect_task_id") - @Schema(description = "巡检任务id") - private Long inspectTaskId; - - /** - * 监测时间 - */ - @TableField("ob_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @Schema(description = "监测时间") - private Date obDate; - - /** - * 结束时间 - */ - @TableField("ob_resolve_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @Schema(description = "结束时间") - private Date obResolveDate; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskByRProcess.java b/src/main/java/com/gunshi/project/hsz/model/JcskByRProcess.java deleted file mode 100644 index 825b5a0..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/JcskByRProcess.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.InspectTask; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -@Data -@TableName(value = "jcsk_by_r_process") -public class JcskByRProcess { - - - @TableField("\"order\"") - @Schema(description = "设备编号") - private String order; - - @TableField("ob_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @Schema(description = "监测时间") - private Date obDate; - - @TableField("ob_resolve_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @Schema(description = "监测时间 + hours之后的结束时间") - private Date obResolveDate; - - @TableField("hours") - @Schema(description = "间隔小时") - private Integer hours; - - @TableField(exist = false) - @Schema(description = "巡检任务实体类") - private InspectTask inspectTask; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskGnssREightAm.java b/src/main/java/com/gunshi/project/hsz/model/JcskGnssREightAm.java deleted file mode 100644 index 51b0bd9..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/JcskGnssREightAm.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -@Schema(description = "荆楚水库-位移整编表") -@TableName("public.jcsk_gnss_r_8am") -public class JcskGnssREightAm { - - private String cd; - - - private String tm; - - - private BigDecimal de; - - private BigDecimal dn; - - private BigDecimal du; - - private String res_cd; - - private BigDecimal alt; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskSlREightAm.java b/src/main/java/com/gunshi/project/hsz/model/JcskSlREightAm.java deleted file mode 100644 index 5037b15..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/JcskSlREightAm.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; - -@Data -@TableName("jcsk_sl_r_8am") -public class JcskSlREightAm { - /** - * 水库代码 - */ - @TableField("rscd") - private String rscd; - - /** - * 水工建筑物编号 - */ - @TableField("hycncd") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("mpcd") - private String mpcd; - - - @TableField("stcd") - private String stcd; - - /** - * 测量时间 - */ - @TableField("mstm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime mstm; - - /** - * 温度,单位℃ - */ - @TableField("tm") - private BigDecimal tm; - - /** - * 渗流量,单位l/s - */ - @TableField("spqn") - private BigDecimal spqn; - - /** - * 标准水温渗流量,单位l/s - */ - @TableField("stspqn") - private BigDecimal stspqn; - - /** - * 创建时间 - */ - @TableField("create_time") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime createTime; - - /** - * 更新时间 - */ - @TableField("update_tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime updateTm; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/JcskSyREightAm.java b/src/main/java/com/gunshi/project/hsz/model/JcskSyREightAm.java deleted file mode 100644 index 1d541b2..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/JcskSyREightAm.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Data -@TableName("jcsk_sy_r_8am") -public class JcskSyREightAm { - /** - * 水库代码 - */ - @TableField("rscd") - private String rscd; - - /** - * 测站编码 - */ - @TableField("stcd") - private String stcd; - - /** - * 水工建筑物编号 - */ - @TableField("hycncd") - private String hycncd; - - /** - * 测点编号 - */ - @TableField("mpcd") - private String mpcd; - - /** - * 测量时间 - */ - @TableField("mstm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime mstm; - - /** - * 温度 - */ - @TableField("tm") - private BigDecimal tm; - - /** - * 渗流压力水位,单位m - */ - @TableField("spprwl") - private BigDecimal spprwl; - - /** - * 更新时间 - */ - @TableField("update_tm") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime updateTm; - - @TableField(exist = false) - @Schema(description = "断面编码") - private String dm; - - - @TableField(exist = false) - @Schema(description = "断面名称") - private String dmName; - - - @TableField(exist = false) - @Schema(description = "dvcd") - private String dvcd; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/MaintainService.java b/src/main/java/com/gunshi/project/hsz/model/MaintainService.java deleted file mode 100644 index f81b9d3..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/MaintainService.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 维修养护 -* author: xusan -* date: 2024-08-27 15:15:13 -*/ -@Schema(description="维修养护") -@Data -@TableName("public.maintain_service") -public class MaintainService implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 上报时间 - */ - @TableField(value="report_time") - @Schema(description="上报时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date reportTime; - - /** - * 管护类型(1溢洪道淸障 2除草除杂 3设备养护 4环境清洁 5危险提示 6其他) - */ - @TableField(value="maintain_type") - @Schema(description="管护类型(1溢洪道淸障 2除草除杂 3设备养护 4环境清洁 5危险提示 6其他)") - private Integer maintainType; - - /** - * 内容 - */ - @TableField(value="maintain_content") - @Schema(description="内容") - @Size(max = 500,message = "内容最大长度要小于 500") - private String maintainContent; - - /** - * 上报人id - */ - @TableField(value="report_user_id") - @Schema(description="上报人id") - private Long reportUserId; - - /** - * 上报人 - */ - @TableField(value="report_user_name") - @Schema(description="上报人") - @Size(max = 50,message = "上报人最大长度要小于 50") - private String reportUserName; - - @TableField(exist = false) - @Schema(description = "现场图片") - private List pics; - - @TableField(exist = false) - @Schema(description = "现场视频") - private List videos; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/MentenceFarmerRecord.java b/src/main/java/com/gunshi/project/hsz/model/MentenceFarmerRecord.java deleted file mode 100644 index 5ffa6a2..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/MentenceFarmerRecord.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; - -@TableName("mentence_farmer_record") -@Schema(description = "维修养护-日常养护") -@Data -public class MentenceFarmerRecord { - @TableId - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField("mentence_st_detail_id") - @Schema(description = "维护项目Id") - @JsonSerialize(using = ToStringSerializer.class) - private Long mentenceStDetailId; - - @TableField(exist = false) - @Schema(description = "维护项目名称") - private String mentenceStDetailName; - - @Schema(description = "维护对象Id") - @TableField("mentence_st_id") - @JsonSerialize(using = ToStringSerializer.class) - private Long mentenceStId; - - @TableField(exist = false) - @Schema(description = "维护对象名称") - private String mentenceStName; - - - @TableField("mentence_person_id") - @Schema(description = "维护人员id") - private String mentencePersonId; - - @TableField(exist = false) - @Schema(description = "维护人员名称") - private String mentencePersonName; - - @TableField("mentence_time_begin") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @Schema(description = "维护时间开始") - private Date mentenceTimeBegin; - - @TableField("mentence_time_end") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @Schema(description = "维护时间结束") - private Date mentenceTimeEnd; - - @TableField("fill_time") - @Schema(description = "填报时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date fillTime; - - @TableField("mentence_context") - @Schema(description = "维护内容") - private String mentenceContext; - - - @TableField(exist = false) - private List files; - - @TableField(exist = false) - private List details; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/MentencePlan.java b/src/main/java/com/gunshi/project/hsz/model/MentencePlan.java deleted file mode 100644 index 22d019d..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/MentencePlan.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -@Data -@TableName("mentence_plan") -@Schema(description = "维修养护-计划管理") -public class MentencePlan { - @TableId - @JsonSerialize(using = ToStringSerializer.class) - @NotNull(message = "id不能为空",groups = {Update.class}) - private Long id; - - @TableField("plan_name") - @NotNull(message = "计划名称不能为空", groups = {Insert.class, Update.class}) - @Schema(description = "计划名称") - private String planName; - - @TableField("plan_year") - @NotNull(message = "年份不能为空", groups = {Insert.class, Update.class}) - @Schema(description = "计划年份") - private String planYear; - - @TableField("plan_status") - @Schema(description = "审批状态 0 待审批 1 未通过 2 已通过 ") - private Integer planStatus; - - @TableField("create_id") - @Schema(description = "创建者id") - private String createId; - - @TableField(exist = false) - @Schema(description = "创建者名称") - private String createName; - - @TableField("create_date") - @Schema(description = "创建时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createDate; - - @TableField("approve_opinion") - @Schema(description = "审批意见") - private String approveOpinion; - - @TableField("approve_person_id") - @Schema(description = "审批人id") - private String approvePersonId; - - @TableField(exist = false) - @Schema(description = "审批人名称") - private String approvePersonName; - - @TableField("remark") - @Schema(description = "备注") - private String remark; - - @TableField(exist = false) - private List details; - - @TableField(exist = false) - private List files; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/MentencePlanDetail.java b/src/main/java/com/gunshi/project/hsz/model/MentencePlanDetail.java deleted file mode 100644 index 4b9f971..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/MentencePlanDetail.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; -import java.util.Date; - -@Data -@Schema(description = "维修养护-计划管理细节") -@TableName("mentence_plan_detail") -public class MentencePlanDetail { - - @TableId("id") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField("mentence_plan_id") - @JsonSerialize(using = ToStringSerializer.class) - private Long mentencePlanId; - - @TableField("mentence_st_detail_id") - @Schema(description = "维护项目id") - @JsonSerialize(using = ToStringSerializer.class) - private Long mentenceStDetailId; - - @TableField(exist = false) - @Schema(description = "维护项目名称") - private String mentenceStDetailName; - - @TableField(exist = false) - @Schema(description = "维护对象id") - private String mentenceStId; - - @TableField(exist = false) - @Schema(description = "维护对象名称") - private String mentenceStName; - - @TableField("plan_begin") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date planBegin; - - @TableField("plan_end") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date planEnd; - - @TableField("charge_person_id") - private String chargePersonId; - - @TableField(exist = false) - private String chargePersonName; - - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/MentenceSt.java b/src/main/java/com/gunshi/project/hsz/model/MentenceSt.java deleted file mode 100644 index 52ddf6b..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/MentenceSt.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -@TableName("mentence_st") -@Data -@Schema(description = "维护养护-维护标准") -public class MentenceSt { - @TableId("id") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField("st_name") - @Schema(description = "维护对象名") - @NotNull(message = "维护对象名不能为空", groups = {Insert.class, Update.class}) - private String stName; - - - @TableField("create_time") - @Schema(description = "创建时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createTime; - - - @TableField(exist = false) - private List childrens; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/MentenceStDetail.java b/src/main/java/com/gunshi/project/hsz/model/MentenceStDetail.java deleted file mode 100644 index c807dfd..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/MentenceStDetail.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@TableName("mentence_st_detail") -@Data -@Schema(description = "维护养护-维护标准细节") -public class MentenceStDetail { - @TableId - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField("mentence_st_id") - @Schema(description = "维护对象名id") - @NotNull(message = "维护对象名称Id不能为空",groups = {Insert.class, Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long mentenceStId; - - @TableField("name") - @Schema(description = "维护项目名称") - private String stDetailName; - - @TableField("context") - @Schema(description = "维护内容") - private String context; - - @TableField("_order") - @Schema(description = "排序号") - private Long order; - - @TableField("is_enable") - @Schema(description = "是否启用 0启用 1禁用") - private Integer isEnable; - - @TableField(exist = false) - private Boolean hasUse = false; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/MentenceTemplate.java b/src/main/java/com/gunshi/project/hsz/model/MentenceTemplate.java deleted file mode 100644 index eca0b55..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/MentenceTemplate.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -@Data -@Schema(description = "维修养护-模板") -@TableName("mentence_template") -public class MentenceTemplate { - @TableId - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField("name") - @Schema(description = "模板名称") - @NotNull(message = "模板名称不能为空", groups = {Insert.class, Update.class}) - private String name; - - @TableField("type") - @Schema(description = "模板类型 0 养护记录 1 验收记录") - @NotNull(message = "模板类型不能为空",groups = {Insert.class, Update.class}) - private Integer type; - - @TableField("create_id") - private String createId; - - @TableField("create_name") - private String createName; - - @TableField("create_time") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createTime; - - - @TableField(exist = false) - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/MessageCenter.java b/src/main/java/com/gunshi/project/hsz/model/MessageCenter.java deleted file mode 100644 index a385c1d..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/MessageCenter.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 消息中心 -* author: xusan -* date: 2024-09-19 10:39:29 -*/ -@Schema(description="消息中心") -@Data -@TableName("public.message_center") -public class MessageCenter implements Serializable { - - public final static String thisTableName = "MessageCenter"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 主题 - */ - @TableField(value="title") - @Schema(description="主题") - @Size(max = 100,message = "主题最大长度要小于 100") - private String title; - - /** - * 发布人id - */ - @TableField(value="publish_user_id") - @Schema(description="发布人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long publishUserId; - - /** - * 发布人名字 - */ - @TableField(value="publish_user_name") - @Schema(description="发布人名字") - @Size(max = 100,message = "发布人名字最大长度要小于 100") - private String publishUserName; - - /** - * 发布时间 - */ - @TableField(value="publish_time") - @Schema(description="发布时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date publishTime; - - /** - * 内容 - */ - @TableField(value="content") - @Schema(description="内容") - @Size(max = 500,message = "内容最大长度要小于 500") - private String content; - - /** - * 接收人id - */ - @TableField(value="receive_user_id") - @Schema(description="接收人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long receiveUserId; - - /** - * 是否已读(0否 1是) - */ - @TableField(value="status") - @Schema(description="是否已读(0否 1是)") - private Integer status; - - /** - * 类型(1超校核 2超设计 3超汛限) - */ - @TableField(value="type") - @Schema(description="类型(1超校核 2超设计 3超汛限)") - private Integer type; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OriginMessage.java b/src/main/java/com/gunshi/project/hsz/model/OriginMessage.java deleted file mode 100644 index f440179..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OriginMessage.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -/** - * Description: - * Created by wanyan on 2024/8/2 - * - * @author wanyan - * @version 1.0 - */ -@Schema(description="原始报文表") -@Data -@TableName("public.origin_message") -public class OriginMessage { - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value="protocol") - @Schema(description="协议") - private String protocol; - - @TableField(value="address") - @Schema(description="设备地址") - private String address; - - @TableField(value="func_code") - @Schema(description="功能码") - private String funcCode; - - @TableField(value="data_time") - @Schema(description="数据时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date dataTime; - - @TableField(value="message") - @Schema(description="报文") - private String message; - - @TableField(value="tm") - @Schema(description="时间戳") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticFlowDevice.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticFlowDevice.java deleted file mode 100644 index 878af42..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticFlowDevice.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 渗流设备表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="渗流设备表") -@Data -@TableName("public.osmotic_flow_device") -public class OsmoticFlowDevice implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测点编号 - */ - @TableId(value="station_code", type= IdType.AUTO) - @Schema(description="测点编号") - @Size(max = 50,message = "测点编号最大长度要小于 50") - @NotBlank(message = "测点编号不能为空",groups = {Insert.class, Update.class}) - private String stationCode; - - /** - * 仪器编号 - */ - @TableField(value="device_code") - @Schema(description="仪器编号") - @Size(max = 50,message = "仪器编号最大长度要小于 50") - private String deviceCode; - - /** - * 仪器名称 - */ - @TableField(value="device_name") - @Schema(description="仪器名称") - @Size(max = 50,message = "仪器名称最大长度要小于 50") - private String deviceName; - - /** - * 仪器型号 - */ - @TableField(value="model") - @Schema(description="仪器型号") - @Size(max = 50,message = "仪器型号最大长度要小于 50") - private String model; - - /** - * 所属监测断面 - */ - @TableField(value="profile_code") - @Schema(description="所属监测断面") - @Size(max = 100,message = "所属监测断面最大长度要小于 100") - private String profileCode; - - /** - * 仪器厂家 - */ - @TableField(value="manufactor") - @Schema(description="仪器厂家") - @Size(max = 100,message = "仪器厂家最大长度要小于 100") - private String manufactor; - - /** - * 测量范围 - */ - @TableField(value="measuring_range") - @Schema(description="测量范围") - @Size(max = 100,message = "测量范围最大长度要小于 100") - private String measuringRange; - - /** - * 检验气温 - */ - @TableField(value="check_temp") - @Schema(description="检验气温") - // @Size(max = 0,message = "检验气温最大长度要小于 0") - private String checkTemp; - - /** - * 检验气压 - */ - @TableField(value="check_pre") - @Schema(description="检验气压") - // @Size(max = 0,message = "检验气压最大长度要小于 0") - private String checkPre; - - /** - * 检验日期 - */ - @TableField(value="check_date") - @Schema(description="检验日期") - // @Size(max = 0,message = "检验日期最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date checkDate; - - /** - * 灵敏度 - */ - @TableField(value="sensitivity") - @Schema(description="灵敏度") - // @Size(max = 0,message = "灵敏度最大长度要小于 0") - private String sensitivity; - - /** - * 绝缘电阻 - */ - @TableField(value="in_res") - @Schema(description="绝缘电阻") - // @Size(max = 0,message = "绝缘电阻最大长度要小于 0") - private String inRes; - - /** - * 耐水压 - */ - @TableField(value="wp") - @Schema(description="耐水压") - // @Size(max = 0,message = "耐水压最大长度要小于 0") - private String wp; - - /** - * 非直线度 - */ - @TableField(value="l") - @Schema(description="非直线度") - // @Size(max = 0,message = "非直线度最大长度要小于 0") - private String l; - - /** - * 不重复度 - */ - @TableField(value="r") - @Schema(description="不重复度") - // @Size(max = 0,message = "不重复度最大长度要小于 0") - private String r; - - /** - * 滞后 - */ - @TableField(value="h") - @Schema(description="滞后") - // @Size(max = 0,message = "滞后最大长度要小于 0") - private String h; - - /** - * 综合误差 - */ - @TableField(value="ec") - @Schema(description="综合误差") - // @Size(max = 0,message = "综合误差最大长度要小于 0") - private String ec; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - // @Size(max = 0,message = "经度最大长度要小于 0") - private String lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - // @Size(max = 0,message = "纬度最大长度要小于 0") - private String lttd; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticFlowR.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticFlowR.java deleted file mode 100644 index 591853e..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticFlowR.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.github.jeffreyning.mybatisplus.anno.MppMultiId; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 渗流监测记录表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="渗流监测记录表") -@Data -@TableName("public.osmotic_flow_r") -public class OsmoticFlowR implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测点编码 - */ - @TableField(value="station_code") - @MppMultiId - @Schema(description="测点编码") - private String stationCode; - - /** - * 监测时间 - */ - @MppMultiId - @TableField(value="tm") - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 通道号 - */ - @TableField(value="chan") - @Schema(description="通道号") - private String chan; - - /** - * 水深 - */ - @TableField(value="l") - @Schema(description="水深") - private BigDecimal l; - - /** - * 流量 - */ - @TableField(value="q") - @Schema(description="流量") - private BigDecimal q; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticPressDevice.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticPressDevice.java deleted file mode 100644 index 2a350fc..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticPressDevice.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 渗压设备表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="渗压设备表") -@Data -@TableName("public.osmotic_press_device") -public class OsmoticPressDevice implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测点编号 - */ - @TableId(value="station_code", type= IdType.AUTO) - @Schema(description="测点编号") - @Size(max = 50,message = "测点编号最大长度要小于 50") - @NotBlank(message = "测点编号不能为空",groups = {Insert.class, Update.class}) - private String stationCode; - - /** - * 仪器编号 - */ - @TableField(value="device_code") - @Schema(description="仪器编号") - @Size(max = 50,message = "仪器编号最大长度要小于 50") - private String deviceCode; - - /** - * 仪器名称 - */ - @TableField(value="device_name") - @Schema(description="仪器名称") - @Size(max = 50,message = "仪器名称最大长度要小于 50") - private String deviceName; - - /** - * 仪器型号 - */ - @TableField(value="model") - @Schema(description="仪器型号") - @Size(max = 50,message = "仪器型号最大长度要小于 50") - private String model; - - /** - * 所属监测断面 - */ - @TableField(value="profile_code") - @Schema(description="所属监测断面") - @Size(max = 100,message = "所属监测断面最大长度要小于 100") - private String profileCode; - - /** - * 仪器厂家 - */ - @TableField(value="manufactor") - @Schema(description="仪器厂家") - @Size(max = 100,message = "仪器厂家最大长度要小于 100") - private String manufactor; - - /** - * 测量范围 - */ - @TableField(value="measuring_range") - @Schema(description="测量范围") - @Size(max = 100,message = "测量范围最大长度要小于 100") - private String measuringRange; - - /** - * 检验气温 - */ - @TableField(value="check_temp") - @Schema(description="检验气温") - // @Size(max = 0,message = "检验气温最大长度要小于 0") - private String checkTemp; - - /** - * 检验气压 - */ - @TableField(value="check_pre") - @Schema(description="检验气压") - // @Size(max = 0,message = "检验气压最大长度要小于 0") - private String checkPre; - - /** - * 无压读数 - */ - @TableField(value="no_pre") - @Schema(description="无压读数") - // @Size(max = 0,message = "无压读数最大长度要小于 0") - private String noPre; - - /** - * 检验日期 - */ - @TableField(value="check_date") - @Schema(description="检验日期") - // @Size(max = 0,message = "检验日期最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date checkDate; - - /** - * 灵敏度 - */ - @TableField(value="sensitivity") - @Schema(description="灵敏度") - // @Size(max = 0,message = "灵敏度最大长度要小于 0") - private BigDecimal sensitivity; - - /** - * 温度修正系数 - */ - @TableField(value="temp_cor_coe") - @Schema(description="温度修正系数") - // @Size(max = 0,message = "温度修正系数最大长度要小于 0") - private BigDecimal tempCorCoe; - - /** - * 温度实时测量值T - */ - @TableField(value="t") - @Schema(description="温度实时测量值T") - private BigDecimal t; - - /** - * 温度的基准值T₀ - */ - @TableField(value="t0") - @Schema(description="温度的基准值T₀") - private BigDecimal t0; - - /** - * 气压的基准值Q₀ - */ - @TableField(value="q0") - @Schema(description="气压的基准值Q₀") - private BigDecimal q0; - - /** - * 气压实时测量值Q - */ - @TableField(value="q") - @Schema(description="气压实时测量值Q") - private BigDecimal q; - - /** - * 非直线度 - */ - @TableField(value="l") - @Schema(description="非直线度") - // @Size(max = 0,message = "非直线度最大长度要小于 0") - private BigDecimal l; - - /** - * 不重复度 - */ - @TableField(value="r") - @Schema(description="不重复度") - // @Size(max = 0,message = "不重复度最大长度要小于 0") - private BigDecimal r; - - /** - * 滞后 - */ - @TableField(value="h") - @Schema(description="滞后") - // @Size(max = 0,message = "滞后最大长度要小于 0") - private BigDecimal h; - - /** - * 综合误差 - */ - @TableField(value="ec") - @Schema(description="综合误差") - // @Size(max = 0,message = "综合误差最大长度要小于 0") - private BigDecimal ec; - - /** - * 分辨力 - */ - @TableField(value="re") - @Schema(description="分辨力") - // @Size(max = 0,message = "分辨力最大长度要小于 0") - private BigDecimal re; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - // @Size(max = 0,message = "经度最大长度要小于 0") - private String lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - // @Size(max = 0,message = "纬度最大长度要小于 0") - private String lttd; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticPressR.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticPressR.java deleted file mode 100644 index fb7fb20..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticPressR.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.github.jeffreyning.mybatisplus.anno.MppMultiId; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 渗压监测记录表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="渗压监测记录表") -@Data -@TableName("public.osmotic_press_r") -public class OsmoticPressR implements Serializable { - - - private static final long serialVersionUID = 1L; - - - /** - * 测点编码 - */ - @TableField(value="station_code") - @MppMultiId - @Schema(description="测点编码") - private String stationCode; - - /** - * 监测时间 - */ - @MppMultiId - @TableField(value="tm") - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 通道号 - */ - @TableField(value="chan") - @Schema(description="通道号") - private String chan; - - /** - * 管水位 - */ - @TableField(value="value") - @Schema(description="管水位") - private BigDecimal value; - - /** - * 渗压 - */ - @TableField(value="press") - @Schema(description="渗压") - private BigDecimal press; - - /** - * 振弦 - */ - @TableField(value="vib") - @Schema(description="振弦") - private BigDecimal vib; - - /** - * 温度 - */ - @TableField(value="temp") - @Schema(description="温度") - private BigDecimal temp; - - @TableField(exist = false) - @Schema(description = "断面名称") - private String profileName; - - @TableField(exist = false) - @Schema(description = "断面编号") - private String profileCode; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticShiftDevice.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticShiftDevice.java deleted file mode 100644 index 6f946b4..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticShiftDevice.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** - * 描述: 位移设备表 - * author: xusan - * date: 2024-07-08 17:34:26 - */ -@Schema(description="位移设备表") -@Data -@TableName("public.osmotic_shift_device") -public class OsmoticShiftDevice implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 测点编号 - */ - @TableId(value="station_code", type= IdType.AUTO) - @Schema(description="测点编号") - @Size(max = 50,message = "测点编号最大长度要小于 50") - @NotBlank(message = "测点编号不能为空",groups = {Insert.class, Update.class}) - private String stationCode; - - /** - * 仪器编号 - */ - @TableField(value="device_code") - @Schema(description="仪器编号") - @Size(max = 50,message = "仪器编号最大长度要小于 50") - private String deviceCode; - - /** - * 仪器名称 - */ - @TableField(value="device_name") - @Schema(description="仪器名称") - @Size(max = 50,message = "仪器名称最大长度要小于 50") - private String deviceName; - - /** - * 仪器型号 - */ - @TableField(value="model") - @Schema(description="仪器型号") - @Size(max = 50,message = "仪器型号最大长度要小于 50") - private String model; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - private BigDecimal lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - private BigDecimal lttd; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticShiftR.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticShiftR.java deleted file mode 100644 index 3b916c7..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticShiftR.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.github.jeffreyning.mybatisplus.anno.MppMultiId; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 位移监测记录表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="位移监测记录表") -@Data -@TableName("public.osmotic_shift_r") -public class OsmoticShiftR implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测点编码 - */ - @TableField(value="station_code") - @MppMultiId - @Schema(description="测点编码") - private String stationCode; - - /** - * 监测时间 - */ - @MppMultiId - @TableField(value="tm") - @Schema(description="监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * x方向 - */ - @TableField(value="x") - @Schema(description="x方向") - private BigDecimal x; - - /** - * y方向 - */ - @TableField(value="y") - @Schema(description="y方向") - private BigDecimal y; - - /** - * h方向 - */ - @TableField(value="h") - @Schema(description="h方向") - private BigDecimal h; - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnR.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnR.java deleted file mode 100644 index e4b3bb0..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnR.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 隐患预警记录表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="隐患预警记录表") -@Data -@TableName("public.osmotic_warn_r") -public class OsmoticWarnR implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - private Long id; - - /** - * 测点编号 - */ - @TableField(value="station_code") - @Schema(description="测点编号") - @Size(max = 32,message = "测点编号最大长度要小于 32") - private String stationCode; - - /** - * 预警规则id - */ - @TableField(value="rule_id") - @Schema(description="预警规则id") - private Long ruleId; - - /** - * 监测值 - */ - @TableField(value="value") - @Schema(description="监测值") - private BigDecimal value; - - /** - * 预警时间 - */ - @TableField(value="tm") - @Schema(description="预警时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 监测类型(1渗压 2渗流 3位移) - */ - @TableField(value="type") - @Schema(description="监测类型(1渗压 2渗流 3位移)") - private Integer type; - - /** - * 告警级别(1黄色 2红色) - */ - @TableField(value="level") - @Schema(description="告警级别(1黄色 2红色)") - private Integer level; - - @TableField(value = "resolve_suggest") - @Schema(description = "处理建议") - private String resolveSuggest; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnRule.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnRule.java deleted file mode 100644 index 5609f37..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticWarnRule.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.Getter; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 预警规则配置表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="预警规则配置表") -@Data -@TableName("public.osmotic_warn_rule") -public class OsmoticWarnRule implements Serializable { - - @Getter - public enum Type { - PRESS(1), FLOW(2), SHIFT(3); - - private final int type; - - Type(int type) { - this.type = type; - } - - } - - @Getter - public enum Status { - DISABLE(0), ENABLE(1); - - private final int status; - - Status(int status) { - this.status = status; - } - } - - @Getter - public enum Relation { - AND(1), OR(2); - - private final int rel; - - Relation(int rel) { - this.rel = rel; - } - - public static Relation match(int rel) { - for (Relation value : values()) { - if (value.rel == rel) { - return value; - } - } - return null; - } - } - - public enum Condition { - GT(">"), GTE(">="), LT("<"), LTE("<="), EQ("="), NE("!="); - - private final String condition; - - Condition(String condition) { - this.condition = condition; - } - - public static Condition match(String condition) { - for (Condition value : values()) { - if (value.condition.equals(condition)) { - return value; - } - } - return null; - } - } - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 测点编号 - */ - @TableField(value="station_code") - @Schema(description="测点编号") - @Size(max = 32,message = "测点编号最大长度要小于 32") - @NotBlank(message = "测点编号不能为空") - private String stationCode; - - /** - * 告警类型(1渗压监测 2渗流监测 3位移监测) - */ - @TableField(value="type") - @Schema(description="告警类型(1渗压监测 2渗流监测 3位移监测)") - private Integer type; - - /** - * 告警级别(1黄色 2红色) - */ - @TableField(value="level") - @Schema(description="告警级别(1黄色 2红色)") - private Integer level; - - /** - * 校验规则描述 - */ - @TableField(value="rule_desc") - @Schema(description="校验规则描述") - @Size(max = 32,message = "校验规则描述最大长度要小于 32") - private String ruleDesc; - - /** - * 位移方向(x,y,z) - */ - @TableField(value="direction") - @Schema(description="位移方向(x,y,h)") - private String direction; - - /** - * condition_one - */ - @TableField(value="condition_one") - @Schema(description="condition_one") - @Size(max = 32,message = "condition_one最大长度要小于 32") - private String conditionOne; - - /** - * value_one - */ - @TableField(value="value_one") - @Schema(description="value_one") - private BigDecimal valueOne; - - /** - * condition_two - */ - @TableField(value="condition_two") - @Schema(description="condition_two") - @Size(max = 32,message = "condition_two最大长度要小于 32") - private String conditionTwo; - - /** - * 1且 2或 - */ - @TableField(value="condition") - @Schema(description="1且 2或") - private Integer condition; - - /** - * value_two - */ - @TableField(value="value_two") - @Schema(description="value_two") - private BigDecimal valueTwo; - - - @TableField(value = "resolve_suggest") - @Schema(description = "处理建议") - private String resolveSuggest; - - /** - * 是否启用(0否 1是) - */ - @TableField(value="status") - @Schema(description="是否启用(0否 1是)") - private BigDecimal status; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticWaterR.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticWaterR.java deleted file mode 100644 index 36dee28..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticWaterR.java +++ /dev/null @@ -1,501 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 水质采样记录表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水质采样记录表") -@Data -@TableName("public.osmotic_water_r") -@EqualsAndHashCode(callSuper = true) -public class OsmoticWaterR extends GenericPageParams implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - // @Size(max = 0,message = "主键最大长度要小于 0") - @NotNull(message = "主键不能为空") - private Long id; - - /** - * 采集时间 - */ - @TableField(value="tm") - @Schema(description="采集时间") - // @Size(max = 0,message = "采集时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 水温 - */ - @TableField(value="temp") - @Schema(description="水温") - // @Size(max = 0,message = "水温最大长度要小于 0") - private String temp; - - /** - * PH - */ - @TableField(value="ph") - @Schema(description="PH") - // @Size(max = 0,message = "PH最大长度要小于 0") - private String ph; - - /** - * 溶解氧 - */ - @TableField(value="bod") - @Schema(description="溶解氧") - // @Size(max = 0,message = "溶解氧最大长度要小于 0") - private String bod; - - /** - * 高锰酸钾指数 - */ - @TableField(value="mn") - @Schema(description="高锰酸钾指数") - // @Size(max = 0,message = "高锰酸钾指数最大长度要小于 0") - private String mn; - - /** - * 化学需氧量 - */ - @TableField(value="codcr") - @Schema(description="化学需氧量") - // @Size(max = 0,message = "化学需氧量最大长度要小于 0") - private String codcr; - - /** - * 五日生化需氧量 - */ - @TableField(value="bod5") - @Schema(description="五日生化需氧量") - // @Size(max = 0,message = "五日生化需氧量最大长度要小于 0") - private String bod5; - - /** - * 氨氮 - */ - @TableField(value="nh3n") - @Schema(description="氨氮") - // @Size(max = 0,message = "氨氮最大长度要小于 0") - private String nh3n; - - /** - * 总磷 - */ - @TableField(value="tp") - @Schema(description="总磷") - // @Size(max = 0,message = "总磷最大长度要小于 0") - private String tp; - - /** - * 总氮 - */ - @TableField(value="tn") - @Schema(description="总氮") - // @Size(max = 0,message = "总氮最大长度要小于 0") - private String tn; - - /** - * 铜 - */ - @TableField(value="cu") - @Schema(description="铜") - // @Size(max = 0,message = "铜最大长度要小于 0") - private String cu; - - /** - * 锌 - */ - @TableField(value="zn") - @Schema(description="锌") - // @Size(max = 0,message = "锌最大长度要小于 0") - private String zn; - - /** - * 氟化物 - */ - @TableField(value="f") - @Schema(description="氟化物") - // @Size(max = 0,message = "氟化物最大长度要小于 0") - private String f; - - /** - * 硒 - */ - @TableField(value="se") - @Schema(description="硒") - // @Size(max = 0,message = "硒最大长度要小于 0") - private String se; - - /** - * 砷 - */ - @TableField(value="arsenic") - @Schema(description="砷") - // @Size(max = 0,message = "砷最大长度要小于 0") - private String arsenic; - - /** - * 汞 - */ - @TableField(value="hg") - @Schema(description="汞") - // @Size(max = 0,message = "汞最大长度要小于 0") - private String hg; - - /** - * 镉 - */ - @TableField(value="cd") - @Schema(description="镉") - // @Size(max = 0,message = "镉最大长度要小于 0") - private String cd; - - /** - * 铬 - */ - @TableField(value="cr") - @Schema(description="铬") - // @Size(max = 0,message = "铬最大长度要小于 0") - private String cr; - - /** - * 铅 - */ - @TableField(value="pb") - @Schema(description="铅") - // @Size(max = 0,message = "铅最大长度要小于 0") - private String pb; - - /** - * 氰化物 - */ - @TableField(value="cn") - @Schema(description="氰化物 ") - // @Size(max = 0,message = "氰化物 最大长度要小于 0") - private String cn; - - /** - * 挥发酚 - */ - @TableField(value="vlph") - @Schema(description="挥发酚 ") - // @Size(max = 0,message = "挥发酚 最大长度要小于 0") - private String vlph; - - /** - * 石油类 - */ - @TableField(value="oil") - @Schema(description="石油类") - // @Size(max = 0,message = "石油类最大长度要小于 0") - private String oil; - - /** - * 阴离子表面活性剂 - */ - @TableField(value="las") - @Schema(description="阴离子表面活性剂 ") - // @Size(max = 0,message = "阴离子表面活性剂 最大长度要小于 0") - private String las; - - /** - * 硫化物 - */ - @TableField(value="s") - @Schema(description="硫化物") - // @Size(max = 0,message = "硫化物最大长度要小于 0") - private String s; - - /** - * 大肠菌群数 - */ - @TableField(value="tcg") - @Schema(description="大肠菌群数 ") - // @Size(max = 0,message = "大肠菌群数 最大长度要小于 0") - private String tcg; - - /** - * 浊度 - */ - @TableField(value="turb") - @Schema(description="浊度") - // @Size(max = 0,message = "浊度最大长度要小于 0") - private String turb; - - /** - * 电导率 - */ - @TableField(value="cond") - @Schema(description="电导率") - // @Size(max = 0,message = "电导率最大长度要小于 0") - private String cond; - - /** - * 高锰酸盐 - */ - @TableField(value="codmn") - @Schema(description="高锰酸盐") - // @Size(max = 0,message = "高锰酸盐最大长度要小于 0") - private String codmn; - - /** - * 叶绿素 - */ - @TableField(value="chla") - @Schema(description="叶绿素") - // @Size(max = 0,message = "叶绿素最大长度要小于 0") - private String chla; - - /** - * 水质类别 - */ - @TableField(value="level") - @Schema(description="水质类别") - @Size(max = 10,message = "水质类别最大长度要小于 10") - private String level; - /** - * 选择的起始时间 - */ - @Schema(description = "选择的起始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date startTime; - - /** - * 选择的结束时间 - */ - @Schema(description = "选择的结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date endTime; - - /** - * PH类别 - */ - @TableField(value = "ph_level") - @Schema(description = "PH类别") - private String phLevel; - - /** - * 溶解氧类别 - */ - @TableField(value = "bod_level") - @Schema(description = "溶解氧类别") - private String bodLevel; - - /** - * 高锰酸钾类别 - */ - @TableField(value = "mn_level") - @Schema(description = "高锰酸钾类别") - private String mnLevel; - - /** - * 水温类别 - */ - @TableField(value = "temp_level") - @Schema(description = "水温类别") - private String tempLevel; - - /** - * 化学需氧量类别 - */ - @TableField(value = "codcr_level") - @Schema(description = "化学需氧量类别") - private String codcrLevel; - - /** - * 五日生化需氧量类别 - */ - @TableField(value = "bod5_level") - @Schema(description = "五日生化需氧量类别") - private String bod5Level; - - /** - * 氨氮类别 - */ - @TableField(value = "nh3n_level") - @Schema(description = "氨氮类别") - private String nh3nLevel; - - /** - * 总磷类别 - */ - @TableField(value = "tp_level") - @Schema(description = "总磷类别") - private String tpLevel; - - /** - * 总氮类别 - */ - @TableField(value = "tn_level") - @Schema(description = "总氮类别") - private String tnLevel; - - /** - * 铜类别 - */ - @TableField(value = "cu_level") - @Schema(description = "铜类别") - private String cuLevel; - - /** - * 锌类别 - */ - @TableField(value = "zn_level") - @Schema(description = "锌类别") - private String znLevel; - - /** - * 氟化物类别 - */ - @TableField(value = "f_level") - @Schema(description = "氟化物类别") - private String fLevel; - - /** - * 硒类别 - */ - @TableField(value = "se_level") - @Schema(description = "硒类别") - private String seLevel; - - /** - * 砷类别 - */ - @TableField(value = "arsenic_level") - @Schema(description = "砷类别") - private String arsenicLevel; - - /** - * 汞类别 - */ - @TableField(value = "hg_level") - @Schema(description = "汞类别") - private String hgLevel; - - /** - * 镉类别 - */ - @TableField(value = "cd_level") - @Schema(description = "镉类别") - private String cdLevel; - - /** - * 铬类别 - */ - @TableField(value = "cr_level") - @Schema(description = "铬类别") - private String crLevel; - - /** - * 铅类别 - */ - @TableField(value = "pb_level") - @Schema(description = "铅类别") - private String pbLevel; - - /** - * 氰化物类别 - */ - @TableField(value = "cn_level") - @Schema(description = "氰化物类别") - private String cnLevel; - - /** - * 挥发酚类别 - */ - @TableField(value = "vlph_level") - @Schema(description = "挥发酚类别") - private String vlphLevel; - - /** - * 石油类类别 - */ - @TableField(value = "oil_level") - @Schema(description = "石油类类别") - private String oilLevel; - - /** - * 阴离子表面活性剂类别 - */ - @TableField(value = "las_level") - @Schema(description = "阴离子表面活性剂类别") - private String lasLevel; - - /** - * 硫化物类别 - */ - @TableField(value = "s_level") - @Schema(description = "硫化物类别") - private String sLevel; - - /** - * 大肠菌群数类别 - */ - @TableField(value = "tcg_level") - @Schema(description = "大肠菌群数类别") - private String tcgLevel; - - /** - * 浊度类别 - */ - @TableField(value = "turb_level") - @Schema(description = "浊度类别") - private String turbLevel; - - /** - * 电导率类别 - */ - @TableField(value = "cond_level") - @Schema(description = "电导率类别") - private String condLevel; - - /** - * 高锰酸盐类别 - */ - @TableField(value = "codmn_level") - @Schema(description = "高锰酸盐类别") - private String codmnLevel; - - /** - * 叶绿素类别 - */ - @TableField(value = "chla_level") - @Schema(description = "叶绿素类别") - private String chlaLevel; - - /** - * 污染物及超标倍数 - */ - @TableField(value = "paem") - @Schema(description = "污染物及超标倍数") - private String paem; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/OsmoticWaterRule.java b/src/main/java/com/gunshi/project/hsz/model/OsmoticWaterRule.java deleted file mode 100644 index 1a0da62..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/OsmoticWaterRule.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; - -/** -* 描述: 水质质量标准规则表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水质质量标准规则表") -@Data -@TableName("public.osmotic_water_rule") -public class OsmoticWaterRule implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 项目编号 - */ - @TableId(value="code", type= IdType.AUTO) - @Schema(description="项目编号") - @Size(max = 20,message = "项目编号最大长度要小于 20") - @NotBlank(message = "项目编号不能为空") - private String code; - - /** - * 项目名称 - */ - @TableField(value="name") - @Schema(description="项目名称") - @Size(max = 20,message = "项目名称最大长度要小于 20") - private String name; - - /** - * 条件 - */ - @TableField(value="condition") - @Schema(description="条件") - @Size(max = 20,message = "条件最大长度要小于 20") - private String condition; - - /** - * I - */ - @TableField(value="one") - @Schema(description="I") - // @Size(max = 0,message = "I最大长度要小于 0") - private String one; - - /** - * II - */ - @TableField(value="two") - @Schema(description="II") - // @Size(max = 0,message = "II最大长度要小于 0") - private String two; - - /** - * III - */ - @TableField(value="three") - @Schema(description="III") - // @Size(max = 0,message = "III最大长度要小于 0") - private String three; - - /** - * IV - */ - @TableField(value="four") - @Schema(description="IV") - // @Size(max = 0,message = "IV最大长度要小于 0") - private String four; - - /** - * V - */ - @TableField(value="five") - @Schema(description="V") - // @Size(max = 0,message = "V最大长度要小于 0") - private String five; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/PersonnelPlan.java b/src/main/java/com/gunshi/project/hsz/model/PersonnelPlan.java deleted file mode 100644 index 469d436..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/PersonnelPlan.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import com.ruoyi.common.annotation.Excel; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Pattern; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Schema(description="培训计划表") -@Accessors(chain = true) // chain = true 实现链式调用 -@Data -@TableName("public.personnel_plan") -public class PersonnelPlan extends CommUpdate implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 培训班名称 - */ - @Excel(name = "培训班名称",sort = 1) - @TableField(value="name") - @Schema(description="培训班名称") - @Size(max = 30,message = "培训班名称最大长度要小于 30") - @NotBlank(message = "培训班名称不能为空",groups = {Insert.class, Update.class}) - private String name; - - /** - * 培训主题分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他 - */ - @TableField(value="type") - @Excel(name = "培训主题",sort = 2,readConverterExp = "1=水利,2=岗前培训,3=在岗培训,4=政治学习教育,5=其他") - @Schema(description="培训主题分类,1:水利,2:岗前培训,3:在岗培训,4:政治学习教育,5:其他") - @NotNull(message = "培训主题不能为空",groups = {Insert.class, Update.class}) - @Pattern(regexp = "^[0-4]$", message = "培训主题分类应为:1:水利,2:岗前培训,3:在岗培训,4:政治学习教育,5:其他") - private Integer type; - - /** - * 主办单位 - */ - @Excel(name = "主办单位",sort = 5) - @TableField(value="unit") - @Schema(description="主办单位") - @Size(max = 100,message = "主办单位最大长度要小于 100") - @NotBlank(message = "主办单位不能为空",groups = {Insert.class, Update.class}) - private String unit; - - /** - * 开始培训时间 - */ - @Excel(name = "开始培训时间",sort = 3,dateFormat = DateFormatString.YYYY_MM_DD) - @Schema(description="开始培训时间 格式:yyyy-MM-dd") - @NotNull(message = "开始培训时间不能为空") - @TableField(value="stm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date stm; - - /** - * 结束培训时间 - */ - @Excel(name = "结束培训时间",sort = 4,dateFormat = DateFormatString.YYYY_MM_DD) - @Schema(description="结束培训时间 格式:yyyy-MM-dd") - @NotNull(message = "结束培训时间不能为空") - @TableField(value="etm") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date etm; - - /** - * 培训天数(天) - */ - @Excel(name = "培训天数(天)",sort = 9) - @Schema(description="培训天数(天)") - @TableField(value="day") - private Integer day; - - /** - * 培训期数(期) - */ - @Excel(name = "培训期数(期)",sort = 8) - @Schema(description="培训期数(期)") - @TableField(value="num") - private Integer num; - - /** - * 培训地点 - */ - @Excel(name = "培训地点",sort = 7) - @Schema(description="培训地点") - @TableField(value="addr") - @Size(max = 200,message = "主办单位最大长度要小于 200") - @NotBlank(message = "培训地点不能为空",groups = {Insert.class, Update.class}) - private String addr; - - /** - * 培训内容 - */ - @Excel(name = "培训内容",sort = 6) - @Schema(description="培训内容") - @TableField(value="content") - @Size(max = 500,message = "培训内容最大长度要小于 500") - @NotBlank(message = "培训内容不能为空",groups = {Insert.class, Update.class}) - private String content; - - /** - * 培训范围 - */ - @Excel(name = "培训范围",sort = 10) - @Schema(description="培训范围") - @TableField(value="scope") - @Size(max = 500,message = "培训范围最大长度要小于 500") - @NotBlank(message = "培训范围不能为空",groups = {Insert.class, Update.class}) - private String scope; - - /** - * 参训人员 - */ - @Excel(name = "参训人员",sort = 11) - @Schema(description="参训人员") - @TableField(value="trainees") - @Size(max = 200,message = "参训人员最大长度要小于 200") - private String trainees; - - /** - * 参训人数(人) - */ - @Excel(name = "参训人数(人)",sort = 12) - @Schema(description="参训人数(人)") - @TableField(value="num_people") - @Size(max = 200,message = "参训人员最大长度要小于 200") - @NotNull(message = "参训人数不能为空",groups = {Insert.class, Update.class}) - private Integer numPeople; - - /** - * 联系人 - */ - @Excel(name = "联系人",sort = 13) - @Schema(description="联系人") - @TableField(value="contacts") - @Size(max = 50,message = "联系人最大长度要小于 50") - private String contacts; - - /** - * 联系电话 - */ - @Excel(name = "联系电话",sort = 14) - @Schema(description="联系电话") - @TableField(value="contact_number") - @Size(max = 30,message = "联系电话最大长度要小于 30") - private String contactNumber; - - /** - * 填报人 - */ - @Schema(description="填报人") - @TableField(value="applicant") - @Size(max = 50,message = "填报人最大长度要小于 50") - @Excel(name = "填报人",sort = 7) - private String applicant; - - /** - * 状态 - */ - @Schema(description="状态 0:无效 1:有效") - @TableField(value="status") - @Size(max = 2,message = "状态最大长度要小于 2") - @NotNull(message = "状态不能为空",groups = {Insert.class, Update.class}) - @Pattern(regexp = "^[0-1]$", message = "状态应为:0:无效 1:有效") - private Integer status; - - /** - * 登记日期 - */ - @Schema(description="登记日期") - @TableField(value="reg_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date regDate; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/PersonnelPlanLog.java b/src/main/java/com/gunshi/project/hsz/model/PersonnelPlanLog.java deleted file mode 100644 index 7afbcbf..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/PersonnelPlanLog.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Pattern; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Schema(description="培训记录表") -@Data -@TableName("public.personnel_plan_log") -public class PersonnelPlanLog extends CommUpdate implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 培训计划主键 - */ - @TableField(value="plan_id") - @Schema(description="培训计划主键") - @JsonSerialize(using = ToStringSerializer.class) -// @NotNull(message = "培训计划不能为空",groups = {Insert.class, Update.class}) - private Long planId; - - /** - * 培训日期 - */ - @TableField(value="plan_date") - @Schema(description="培训日期 格式:yyyy-MM-dd") - @NotNull(message = "培训日期不能为空",groups = {Insert.class, Update.class}) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date planDate; - - /** - * 标题名称 - */ - @TableField(value="name") - @Schema(description="标题名称") - @Size(max = 30,message = "标题名称最大长度要小于 30") - @NotBlank(message = "标题名称不能为空",groups = {Insert.class, Update.class}) - private String name; - - /** - * 培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他 - */ - @TableField(value="type") - @Schema(description="培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") - @Pattern(regexp = "^[0-4]$", message = "培训主题分类应为:0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") - private Integer type; - - - /** - * 开始培训时间 - */ - @Schema(description="培训时段开始时间 格式:HH:mm:ss") - @TableField(value="stm") - @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8") - private Date stm; - - /** - * 结束培训时间 - */ - @Schema(description="培训时段结束时间 格式:HH:mm:ss") - @TableField(value="etm") - @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8") - private Date etm; - - /** - * 培训时长(小时) - */ - @Schema(description="培训时长(小时)") - @TableField(value="hour") - private Integer hour; - - /** - * 培训地点 - */ - @Schema(description="培训地点") - @TableField(value="addr") - @Size(max = 200,message = "主办单位最大长度要小于 200") - @NotBlank(message = "培训地点不能为空",groups = {Insert.class, Update.class}) - private String addr; - - /** - * 主办单位 - */ - @TableField(value="unit") - @Schema(description="主办单位") - @Size(max = 100,message = "主办单位最大长度要小于 100") - @NotBlank(message = "主办单位不能为空",groups = {Insert.class, Update.class}) - private String unit; - - - /** - * 培训内容 - */ - @Schema(description="培训内容") - @TableField(value="content") - @Size(max = 500,message = "培训内容最大长度要小于 500") - @NotBlank(message = "培训内容不能为空",groups = {Insert.class, Update.class}) - private String content; - - /** - * 参训人员 - */ - @Schema(description="参训人员") - @TableField(value="trainees") - @Size(max = 200,message = "参训人员最大长度要小于 200") - private String trainees; - - /** - * 参训人数(人) - */ - @Schema(description="参训人数(人)") - @TableField(value="num_people") - @Size(max = 200,message = "参训人员最大长度要小于 200") - @NotNull(message = "参训人数不能为空",groups = {Insert.class, Update.class}) - private Integer numPeople; - - /** - * 填报人 - */ - @Schema(description="填报人") - @TableField(value="applicant") - @Size(max = 50,message = "填报人最大长度要小于 50") - private String applicant; - - /** - * 登记日期 - */ - @Schema(description="登记日期") - @TableField(value="reg_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date regDate; - - @TableField(exist = false) - @Schema(description = "签到培训表") - private List files1; - - @TableField(exist = false) - @Schema(description = "附件") - private List files2; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/PrePlace.java b/src/main/java/com/gunshi/project/hsz/model/PrePlace.java deleted file mode 100644 index 1747847..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/PrePlace.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -@Data -@TableName(value = "pre_place") -public class PrePlace { - - @TableId(value = "id") - @Schema(description = "主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - - @TableField(value = "pre_name") - @NotNull(message = "防治点不能为空", groups = {Insert.class, Update.class}) - private String preName; - - @TableField(value = "create_time") - private Date createTime; - - @TableField(exist = false) - private List childrens; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/PrePlaceDetail.java b/src/main/java/com/gunshi/project/hsz/model/PrePlaceDetail.java deleted file mode 100644 index 7a7dff1..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/PrePlaceDetail.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -@Data -@TableName(value = "pre_place_detail") -public class PrePlaceDetail { - - @TableId(value = "id") - @NotNull(message = "主键ID不能为空",groups = Update.class) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "detail_name") - @Schema(description = "防治部位") - @NotNull(message = "防治部位不能为空", groups = {Insert.class, Update.class}) - private String detailName; - - @TableField(value = "pre_id") - @Schema(description = "防治点id") - @NotNull(message = "防治点不能为空",groups = {Insert.class, Update.class}) - private Long preId; - - @TableField(value = "remark") - @Schema(description = "详细描述") - private String remark; - - @TableField(value = "_order") - @Schema(description = "排序号") - private Integer order; - - @TableField(value = "is_enable") - @Schema(description = "是否启用 0启用 1禁用") - private Integer isEnable; - - @TableField(exist = false) - private Boolean hasUse = false; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ProjectEvents.java b/src/main/java/com/gunshi/project/hsz/model/ProjectEvents.java deleted file mode 100644 index c6998e2..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ProjectEvents.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * 工程大事记 - */ -@Schema(description="工程大事记") -@Data -@TableName(value = "public.project_events") -public class ProjectEvents implements Serializable { - /** - * 主键 - */ - @TableId(value = "id", type = IdType.INPUT) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "name") - @Schema(description="名称") - @NotEmpty(message = "名称不可为空",groups = {Insert.class,Update.class}) - private String name; - - /** - * 发生日期 - */ - @TableField(value = "events_date") - @Schema(description="发生日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - @NotNull(message = "日期不能为空",groups = {Insert.class,Update.class}) - private Date eventsDate; - - /** - * 类型(1综合大事记 2专题大事记) - */ - @TableField(value = "events_type") - @Schema(description="类型(1综合大事记 2专题大事记)") - private Integer eventsType; - - - @TableField(value = "events_desc") - @Schema(description="事件内容描述") - @NotEmpty(message = "事件内容描述不可为空",groups = {Insert.class,Update.class}) - private String eventsDesc; - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - - private static final long serialVersionUID = 1L; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RegressionEquation.java b/src/main/java/com/gunshi/project/hsz/model/RegressionEquation.java deleted file mode 100644 index 48900f5..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RegressionEquation.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.gunshi.project.hsz.model; - -import lombok.Data; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.List; - -/** - * 线性回归方程实体类 - */ -@Data -public class RegressionEquation { - /** - * 方程阶数 - */ - private int order; - - /** - * 方程系数(从常数项到最高次项) - * 例如:对于二次方程 y = ax² + bx + c,coefficients = [c, b, a] - */ - private List coefficients; - - /** - * 相关系数 R² - */ - private BigDecimal rSquared; - - /** - * 数据点数 - */ - private int dataCount; - - /** - * 方程字符串表示 - */ - private String equationString; - - public RegressionEquation(int order, List coefficients, BigDecimal rSquared, int dataCount) { - this.order = order; - this.coefficients = coefficients; - this.rSquared = rSquared; - this.dataCount = dataCount; - this.equationString = generateEquationString(); - } - - /** - * 生成方程字符串(使用数学符号) - */ - private String generateEquationString() { - StringBuilder sb = new StringBuilder("y = "); - - for (int i = coefficients.size() - 1; i >= 0; i--) { - BigDecimal coeff = coefficients.get(i); - if (coeff.compareTo(BigDecimal.ZERO) == 0) { - continue; - } - - // 符号处理 - if (sb.length() > 4 && coeff.compareTo(BigDecimal.ZERO) > 0) { - sb.append(" + "); - } else if (sb.length() > 4 && coeff.compareTo(BigDecimal.ZERO) < 0) { - sb.append(" - "); - coeff = coeff.abs(); - } - - // 系数和变量 - 保留至少20位小数 - if (i == 0) { - // 常数项 - 保留至少20位小数 - sb.append(coeff.setScale(20, RoundingMode.HALF_UP).toPlainString()); - } else { - // 非常数项 - 保留至少20位小数 - if (coeff.compareTo(BigDecimal.ONE) != 0 && coeff.compareTo(BigDecimal.ONE.negate()) != 0) { - sb.append(coeff.setScale(20, RoundingMode.HALF_UP).toPlainString()); - } - sb.append("x"); - if (i > 1) { - // 使用Unicode上标数字 - sb.append(getSuperscript(i)); - } - } - } - - return sb.toString(); - } - - /** - * 获取数字的Unicode上标表示 - */ - private String getSuperscript(int number) { - String numStr = String.valueOf(number); - StringBuilder superscript = new StringBuilder(); - for (char c : numStr.toCharArray()) { - switch (c) { - case '0': superscript.append('⁰'); break; - case '1': superscript.append('¹'); break; - case '2': superscript.append('²'); break; - case '3': superscript.append('³'); break; - case '4': superscript.append('⁴'); break; - case '5': superscript.append('⁵'); break; - case '6': superscript.append('⁶'); break; - case '7': superscript.append('⁷'); break; - case '8': superscript.append('⁸'); break; - case '9': superscript.append('⁹'); break; - default: superscript.append(c); - } - } - return superscript.toString(); - } - - /** - * 根据x值预测y值 - */ - public BigDecimal predict(BigDecimal x) { - BigDecimal result = BigDecimal.ZERO; - BigDecimal xPower = BigDecimal.ONE; - - for (int i = 0; i < coefficients.size(); i++) { - result = result.add(coefficients.get(i).multiply(xPower)); - xPower = xPower.multiply(x); - } - - return result; - } - - - @Override - public String toString() { - return String.format("%s", equationString); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ResBriefR.java b/src/main/java/com/gunshi/project/hsz/model/ResBriefR.java deleted file mode 100644 index fbba9b0..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResBriefR.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * @author lyf - * @since 2025-04-25 - */ -@Data -@TableName("public.res_brief_r") -@Slf4j -public class ResBriefR { - @TableId(value="id", type= IdType.AUTO) - private Integer id; - @TableField - private BigDecimal drp24Sum; - @TableField - private String sumStnm; - @TableField - private BigDecimal drp24Max; - @TableField - private String maxStnm; - @TableField - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date maxTm; - @TableField - private BigDecimal rz8; - @TableField - private BigDecimal rzYesterday8; - @TableField - private BigDecimal w; - @TableField - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date date; - @TableField - //设计洪水位 - private BigDecimal flLowLimLev; - @TableField(exist = false) - private String brief; - - public String getBrief() { - - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日"); - SimpleDateFormat sdf2 = new SimpleDateFormat("dd日HH时"); - BigDecimal gap; - if (rz8 != null && rzYesterday8 != null) { - gap = rz8.subtract(rzYesterday8); - } else { - gap = null; - } - String dir; - if (gap != null && gap.compareTo(BigDecimal.ZERO) > 0) { - dir = "上涨"; - } else if (gap != null && gap.compareTo(BigDecimal.ZERO) < 0) { - dir = "下跌"; - } else { - dir = "上涨"; - } - return String.format("%s08时,过去24小时最大累计降雨量%smm(%s),最大点雨量%smm/h(%s,%s)。当前水库水位%sm(汛限水位%sm),较昨日%s%sm,库容达%s万m³", - date == null ? "" : sdf1.format(date), - drp24Sum == null ? "" : drp24Sum.setScale(1, RoundingMode.DOWN), - sumStnm == null ? "" : sumStnm, - drp24Max == null ? "" : drp24Max.setScale(1, RoundingMode.DOWN), - maxStnm == null ? "" : maxStnm, - maxTm == null ? "" : sdf2.format(maxTm), - rz8 == null ? "" : rz8.setScale(2, RoundingMode.DOWN), - flLowLimLev == null ? "" : flLowLimLev.setScale(0, RoundingMode.DOWN), - gap == null ? "" :dir, - gap == null ? "" : gap.setScale(2, RoundingMode.DOWN), - w == null ? "" : w.setScale(2, RoundingMode.DOWN) - ); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ResFloodRoad.java b/src/main/java/com/gunshi/project/hsz/model/ResFloodRoad.java deleted file mode 100644 index 9b3d093..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResFloodRoad.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** -* 描述: 防汛道路 -* author: xusan -* date: 2024-11-14 10:37:15 -*/ -@Schema(description="防汛道路") -@Data -@TableName("public.res_flood_road") -public class ResFloodRoad implements Serializable { - - public final static String thisTableName = "ResFloodRoad"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 水库代码 - */ - @TableField(value="res_code") - @Schema(description="水库代码") - @Size(max = 32,message = "水库代码最大长度要小于 32") - private String resCode; - - /** - * 名称 - */ - @TableField(value="name") - @Schema(description="名称") - @Size(max = 30,message = "名称最大长度要小于 30") - private String name; - - /** - * 防汛路长度 - */ - @TableField(value="flood_road_len") - @Schema(description="防汛路长度") - private BigDecimal floodRoadLen; - - /** - * 路面宽度 - */ - @TableField(value="road_width") - @Schema(description="路面宽度") - @Size(max = 30,message = "路面宽度最大长度要小于 30") - private String roadWidth; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ResMangUnit.java b/src/main/java/com/gunshi/project/hsz/model/ResMangUnit.java deleted file mode 100644 index 41cf266..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResMangUnit.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 水库管理单位表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库管理单位表") -@Data -@TableName("public.res_mang_unit") -public class ResMangUnit implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - private Long id; - - /** - * 水库代码 - */ - @TableField(value="res_code") - @Schema(description="水库代码") - @Size(max = 32,message = "水库代码最大长度要小于 32") - @NotBlank(message = "水库代码不能为空") - private String resCode; - - /** - * 管理单位名称 - */ - @TableField(value="mang_unit_name") - @Schema(description="管理单位名称") - @Size(max = 50,message = "管理单位名称最大长度要小于 50") - private String mangUnitName; - - /** - * 单位性质(1公益林 2民间组织 3企业 4其他) - */ - @TableField(value="type") - @Schema(description="单位性质(1公益林 2民间组织 3企业 4其他)") - // @Size(max = 0,message = "单位性质(1公益林 2民间组织 3企业 4其他)最大长度要小于 0") - private Integer type; - - /** - * 职工人数 - */ - @TableField(value="person_num") - @Schema(description="职工人数") - // @Size(max = 0,message = "职工人数最大长度要小于 0") - private Integer personNum; - - /** - * 人员经费来源 - */ - @TableField(value="person_funds_source") - @Schema(description="人员经费来源") - // @Size(max = 0,message = "人员经费来源最大长度要小于 0") - private String personFundsSource; - - /** - * 维修养护经费来源 - */ - @TableField(value="repair_funds_source") - @Schema(description="维修养护经费来源") - // @Size(max = 0,message = "维修养护经费来源最大长度要小于 0") - private String repairFundsSource; - - /** - * 行政主管单位 - */ - @TableField(value="adm_unit") - @Schema(description="行政主管单位") - @Size(max = 50,message = "行政主管单位最大长度要小于 50") - private String admUnit; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ResMonthEcoFlow.java b/src/main/java/com/gunshi/project/hsz/model/ResMonthEcoFlow.java deleted file mode 100644 index 40fe59b..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResMonthEcoFlow.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 水库月核定生态流量表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库月核定生态流量表") -@Data -@TableName("public.res_month_eco_flow") -@Accessors(chain = true) // chain = true 实现链式调用 -public class ResMonthEcoFlow implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - private Long id; - - /** - * 水库代码 - */ - @TableField(value="res_code") - @Schema(description="水库代码") - @Size(max = 32,message = "水库代码最大长度要小于 32",groups = {Update.class, Insert.class}) - @NotBlank(message = "水库代码不能为空",groups = {Update.class, Insert.class}) - private String resCode; - - /** - * 月份 - */ - @TableField(value="month") - @Schema(description="月份") - // @Size(max = 0,message = "月份最大长度要小于 0") - private Integer month; - - /** - * 流量 - */ - @TableField(value="value") - @Schema(description="流量") - // @Size(max = 0,message = "流量最大长度要小于 0") - private BigDecimal value; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ResPerson.java b/src/main/java/com/gunshi/project/hsz/model/ResPerson.java deleted file mode 100644 index e928e34..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResPerson.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Schema(description="责任人表") -@Data -@TableName("public.res_person") -public class ResPerson extends CommUpdate implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 名字 - */ - @TableField(value="name") - @Schema(description="名字") - @Size(max = 30,message = "名字最大长度要小于 30") - @NotBlank(message = "姓名不能为空") - private String name; - - /** - * 类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术 - */ - @TableField(value="type") - @Schema(description="类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术") - @NotNull(message = "责任类型不能为空") - private Integer type; - - /** - * 单位 - */ - @TableField(value="unit") - @Schema(description="单位") - @Size(max = 50,message = "单位最大长度要小于 50") - private String unit; - - /** - * 职务 - */ - @TableField(value="duty") - @Schema(description="职务") - @Size(max = 50,message = "职务最大长度要小于 50") - private String duty; - - /** - * 联系方式 - */ - @TableField(value="contact_info") - @Schema(description="联系方式") - @Size(max = 100,message = "联系方式最大长度要小于 100") - private String contactInfo; - - /** - * 职责范围 - */ - @TableField(value="duty_bound") - @Schema(description="职责范围") - @Size(max = 200,message = "职责范围最大长度要小于 200") - private String dutyBound; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/ResPlanB.java b/src/main/java/com/gunshi/project/hsz/model/ResPlanB.java deleted file mode 100644 index 2e0a63a..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResPlanB.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 水库预案表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库预案表") -@Data -@TableName("public.res_plan_b") -public class ResPlanB implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - @JsonFormat(shape = JsonFormat.Shape.STRING) - private Long id; - - /** - * 水库代码 - */ - @TableField(value="res_code") - @Schema(description="水库代码") - @Size(max = 32,message = "水库代码最大长度要小于 32") - @NotBlank(message = "水库代码不能为空") - private String resCode; - - /** - * 预案/调度规程名称 - */ - @TableField(value="plan_name") - @Schema(description="预案/调度规程名称") - @Size(max = 50,message = "预案/调度规程名称最大长度要小于 50") - private String planName; - - /** - * 编制时间 - */ - @TableField(value="prep_time") - @Schema(description="编制时间") - // @Size(max = 0,message = "编制时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date prepTime; - - /** - * 编制单位 - */ - @TableField(value="prep_org") - @Schema(description="编制单位") - @Size(max = 30,message = "编制单位最大长度要小于 30") - private String prepOrg; - - /** - * 批复时间 - */ - @TableField(value="appr_time") - @Schema(description="批复时间") - // @Size(max = 0,message = "批复时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date apprTime; - - /** - * 批复部门 - */ - @TableField(value="appr_org") - @Schema(description="批复部门") - @Size(max = 30,message = "批复部门最大长度要小于 30") - private String apprOrg; - - /** - * 文件id - */ - @TableField(value="file_id") - @Schema(description="文件id") - // @Size(max = 0,message = "文件id最大长度要小于 0") - private Long fileId; - - /** - * 类型(1防汛预案 2调度规程) - */ - @TableField(value="type") - @Schema(description="类型(1防汛预案 2调度规程)") - // @Size(max = 0,message = "类型(1防汛预案 2调度规程)最大长度要小于 0") - private Integer type; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ResProjectImg.java b/src/main/java/com/gunshi/project/hsz/model/ResProjectImg.java deleted file mode 100644 index bb335ad..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResProjectImg.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 水库工程图片 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库工程图片") -@Data -@TableName("public.res_project_img") -public class ResProjectImg implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - // @Size(max = 0,message = "主键最大长度要小于 0") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 水库代码 - */ - @TableField(value="res_code") - @Schema(description="水库代码") - @Size(max = 32,message = "水库代码最大长度要小于 32") - @NotBlank(message = "水库代码不能为空") - private String resCode; - - /** - * 序号 - */ - @TableField(value="sort_on") - @Schema(description="序号") - // @Size(max = 0,message = "序号最大长度要小于 0") - private Integer sortOn; - - /** - * 工程图片类别 1:枢纽全景彩照 2:枢纽平面配置图 3:泄水建筑物设计图及现场图片 4:主坝设计图及现场照片 5:输水建筑物设计图及现场照片 9:其他图纸和照片 - */ - @TableField(value="proj_type") - @Schema(description="工程图片类别 1:枢纽全景彩照 2:枢纽平面配置图 3:泄水建筑物设计图及现场图片 4:主坝设计图及现场照片 5:输水建筑物设计图及现场照片 9:其他图纸和照片") - // @Size(max = 0,message = "工程图片类别 1:枢纽全景彩照 2:枢纽平面配置图 3:泄水建筑物设计图及现场图片 4:主坝设计图及现场照片 5:输水建筑物设计图及现场照片 9:其他图纸和照片最大长度要小于 0") - private Integer projType; - - /** - * 工程图片类别 1:枢纽全景彩照 2:枢纽平面配置图 3:泄水建筑物设计图及现场图片 4:主坝设计图及现场照片 5:输水建筑物设计图及现场照片 9:其他图纸和照片 - */ - @TableField(value="proj_type_str") - @Schema(description="工程图片类别 枢纽全景彩照 枢纽平面配置图 泄水建筑物设计图及现场图片 主坝设计图及现场照片 输水建筑物设计图及现场照片 其他图纸和照片") - private String projTypeStr; - - /** - * 文件id - */ - @TableField(value="file_id") - @Schema(description="文件id") - // @Size(max = 0,message = "文件id最大长度要小于 0") - private Long fileId; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ResSafePersonB.java b/src/main/java/com/gunshi/project/hsz/model/ResSafePersonB.java deleted file mode 100644 index f972c48..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResSafePersonB.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 水库责任体系表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水库责任体系表") -@Data -@TableName("public.res_safe_person_b") -public class ResSafePersonB implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - // @Size(max = 0,message = "主键最大长度要小于 0") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 水库代码 - */ - @TableField(value="res_code") - @Schema(description="水库代码") - @Size(max = 32,message = "水库代码最大长度要小于 32") - @NotBlank(message = "水库代码不能为空") - private String resCode; - - /** - * 责任人类型 1:行政责任人 2:技术责任人 3:巡查责任人 4:主管部门责任人 5:管理单位责任人 - */ - @TableField(value="rep_type") - @Schema(description="责任人类型 1:行政责任人 2:技术责任人 3:巡查责任人 4:主管部门责任人 5:管理单位责任人") - // @Size(max = 0,message = "责任人类型 1:行政责任人 2:技术责任人 3:巡查责任人 4:主管部门责任人 5:管理单位责任人最大长度要小于 0") - private Integer repType; - - /** - * 姓名 - */ - @TableField(value="person_name") - @Schema(description="姓名") - @Size(max = 20,message = "姓名最大长度要小于 20") - private String personName; - - /** - * 单位 - */ - @TableField(value="org_name") - @Schema(description="单位") - @Size(max = 20,message = "单位最大长度要小于 20") - private String orgName; - - /** - * 职务 - */ - @TableField(value="position") - @Schema(description="职务") - @Size(max = 20,message = "职务最大长度要小于 20") - private String position; - - /** - * 联系方式 - */ - @TableField(value="tel") - @Schema(description="联系方式") - @Size(max = 20,message = "联系方式最大长度要小于 20") - private String tel; - - /** - * 序号 - */ - @TableField(value="sort_on") - @Schema(description="序号") - // @Size(max = 0,message = "序号最大长度要小于 0") - private Integer sortOn; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ResTunnel.java b/src/main/java/com/gunshi/project/hsz/model/ResTunnel.java deleted file mode 100644 index 0c6d8b0..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ResTunnel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** -* 描述: 水库建筑物 - 放空洞/灌溉发电洞 -* author: xusan -* date: 2024-11-14 10:34:11 -*/ -@Schema(description="水库建筑物 - 放空洞/灌溉发电洞") -@Data -@TableName("public.res_tunnel") -public class ResTunnel implements Serializable { - - public final static String thisTableName = "ResTunnel"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 水库代码 - */ - @TableField(value="res_code") - @Schema(description="水库代码") - @Size(max = 32,message = "水库代码最大长度要小于 32") - private String resCode; - - /** - * 建筑物名称 - */ - @TableField(value="name") - @Schema(description="建筑物名称") - @Size(max = 30,message = "建筑物名称最大长度要小于 30") - private String name; - - /** - * 型式 - */ - @TableField(value="build_type") - @Schema(description="型式") - @Size(max = 30,message = "型式最大长度要小于 30") - private String buildType; - - /** - * 衬砌型式 - */ - @TableField(value="lining_type") - @Schema(description="衬砌型式") - @Size(max = 30,message = "衬砌型式最大长度要小于 30") - private String liningType; - - /** - * 地基特性 - */ - @TableField(value="found_character") - @Schema(description="地基特性") - @Size(max = 30,message = "地基特性最大长度要小于 30") - private String foundCharacter; - - /** - * 进口底板高程(m) - */ - @TableField(value="inlet_ele") - @Schema(description="进口底板高程(m)") - private BigDecimal inletEle; - - /** - * 断面尺寸 - */ - @TableField(value="section_size") - @Schema(description="断面尺寸") - private BigDecimal sectionSize; - - /** - * 洞长 - */ - @TableField(value="tunnel_len") - @Schema(description="洞长") - private BigDecimal tunnelLen; - - /** - * 设计流量(m3/s) - */ - @TableField(value="des_q") - @Schema(description="设计流量(m3/s)") - private BigDecimal desQ; - - /** - * 进口闸门型式 - */ - @TableField(value="valve_type") - @Schema(description="进口闸门型式") - @Size(max = 30,message = "进口闸门型式最大长度要小于 30") - private String valveType; - - /** - * 进口启闭机型式 - */ - @TableField(value="oc_type") - @Schema(description="进口启闭机型式") - @Size(max = 18,message = "进口启闭机型式最大长度要小于 18") - private String ocType; - - /** - * 类型(1放空洞 2灌溉发电洞) - */ - @TableField(value="type") - @Schema(description="类型(1放空洞 2灌溉发电洞)") - private Integer type; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RescueGoodsB.java b/src/main/java/com/gunshi/project/hsz/model/RescueGoodsB.java deleted file mode 100644 index 0b0e98e..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RescueGoodsB.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.service.AbstractModelWithAttachService; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * 抢险物资 - */ -@Schema(description="抢险物资") -@Data -@TableName(value = "public.rescue_goods_b") -public class RescueGoodsB implements Serializable, AbstractModelWithAttachService.GetFileIds { - /** - * 主键 - */ - @TableId(value = "goods_id", type = IdType.INPUT) - @Schema(description="主键") - @NotNull(message = "主键不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long goodsId; - - /** - * 物资名称 - */ - @TableField(value = "goods_name") - @Schema(description="物资名称") - @Size(max = 100,message = "物资名称最大长度要小于 100") - @NotEmpty(message = "物资名称不能为空", groups = {Insert.class, Update.class}) - private String goodsName; - - /** - * 物资类型(1抢险物资 2救生器材) - */ - @TableField(value = "goods_type") - @Schema(description="物资类型(1抢险物资 2救生器材)") - @NotNull(message = "物资类型不能为空", groups = {Insert.class, Update.class}) - private Integer goodsType; - - /** - * 规格 - */ - @TableField(value = "specs") - @Schema(description="规格") - private String specs; - - /** - * 单位(1个 2件 3米 4把 5台 6套 7副 8箱 9卷 10立方米 11平方米) - */ - @TableField(value = "unit") - @Schema(description="单位(1个 2件 3米 4把 5台 6套 7副 8箱 9卷 10立方米 11平方米)") - private Integer unit; - - /** - * 库存数量 - */ - @TableField(value = "store_quantity") - @Schema(description="库存数量") - @NotNull(message = "库存数量不能为空", groups = {Insert.class, Update.class}) - private BigDecimal storeQuantity; - - /** - * 存放地点 - */ - @TableField(value = "store_location") - @Schema(description="存放地点") - private String storeLocation; - - /** - * 联系人 - */ - @TableField(value = "contact_person") - @Schema(description="联系人") - @Size(max = 150,message = "联系人最大长度要小于 150", groups = {Insert.class, Update.class}) - private String contactPerson; - - /** - * 联系电话 - */ - @TableField(value = "phone") - @Schema(description="联系电话") - @Size(max = 20,message = "联系电话最大长度要小于 20", groups = {Insert.class, Update.class}) - private String phone; - - - /** - * 时间戳 - */ - @TableField(value = "tm") - @Schema(description="时间戳") - @NotNull(message = "时间戳不能为空") - private Date tm; - - @TableField(exist = false) - @Schema(description = "文件id集合") - private List fileIds; - - - private static final long serialVersionUID = 1L; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RescueGoodsFile.java b/src/main/java/com/gunshi/project/hsz/model/RescueGoodsFile.java deleted file mode 100644 index 316ba60..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RescueGoodsFile.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - * 抢险物资-附件 - */ -@Schema(description="抢险物资-附件") -@Data -@TableName(value = "public.rescue_goods_file") -public class RescueGoodsFile implements Serializable { - /** - * 主键 - */ - @TableId(value = "id", type = IdType.INPUT) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - private Long id; - - /** - * 抢险物资id - */ - @TableField(value = "goods_id") - @Schema(description="抢险物资id") - private Long goodsId; - - /** - * 文件id - */ - @TableField(value = "file_id") - @Schema(description="文件id") - @JsonSerialize(using = ToStringSerializer.class) - private Long fileId; - - /** - * 序号 - */ - @TableField(value = "sort_on") - @Schema(description="序号") - private Integer sortOn; - - /** - * 时间戳 - */ - @TableField(value = "tm") - @Schema(description="时间戳") - @NotNull(message = "时间戳不能为空") - private Date tm; - - private static final long serialVersionUID = 1L; - - public static final String COL_ID = "id"; - - public static final String COL_GOODS_ID = "goods_id"; - - public static final String COL_FILE_ID = "file_id"; - - public static final String COL_SORT_ON = "sort_on"; - - public static final String COL_TM = "tm"; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RescueTeamB.java b/src/main/java/com/gunshi/project/hsz/model/RescueTeamB.java deleted file mode 100644 index 0e5208b..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RescueTeamB.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.service.AbstractModelWithAttachService; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 抢险队伍 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="抢险队伍") -@Data -@TableName("public.rescue_team_b") -public class RescueTeamB implements Serializable, AbstractModelWithAttachService.GetFileIds { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="team_id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long teamId; - - /** - * 队伍名称 - */ - @TableField(value="team_name") - @Schema(description="队伍名称") - @Size(max = 100,message = "队伍名称最大长度要小于 100") - private String teamName; - - /** - * 地址 - */ - @TableField(value="address") - @Schema(description="地址") - @Size(max = 150,message = "地址最大长度要小于 150") - private String address; - - /** - * 经度 (°) - */ - @TableField(value="lgtd") - @Schema(description="经度 (°)") - private BigDecimal lgtd; - - /** - * 纬度 (°) - */ - @TableField(value="lttd") - @Schema(description="纬度 (°)") - private BigDecimal lttd; - - /** - * 管理单位 - */ - @TableField(value="management_unit") - @Schema(description="管理单位") - @Size(max = 150,message = "管理单位最大长度要小于 150") - private String managementUnit; - - /** - * 队伍负责人 - */ - @TableField(value="team_leader") - @Schema(description="队伍负责人") - @Size(max = 150,message = "队伍负责人最大长度要小于 150") - private String teamLeader; - - /** - * 联系电话 - */ - @TableField(value="phone") - @Schema(description="联系电话") - @Size(max = 20,message = "联系电话最大长度要小于 20") - private String phone; - - /** - * 登记日期 - */ - @TableField(value="register_date") - @Schema(description="登记日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date registerDate; - - /** - * 有效期开始时间 - */ - @TableField(value="valid_start_date") - @Schema(description="有效期开始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date validStartDate; - - /** - * 有效期结束时间 - */ - @TableField(value="valid_end_date") - @Schema(description="有效期结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date validEndDate; - - /** - * 时间戳 - */ - @TableField(value="tm") - @Schema(description="时间戳") - @NotNull(message = "时间戳不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - @TableField(exist = false) - @Schema(description = "文件id集合") - private List fileIds; - - /** - * 文件上传数据 - */ - @Schema(description="文件上传数据") - @TableField(exist = false) - private List files; - - /** - * 队伍明细 - */ - @Schema(description="队伍明细") - @TableField(exist = false) - private List details; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RescueTeamDetail.java b/src/main/java/com/gunshi/project/hsz/model/RescueTeamDetail.java deleted file mode 100644 index edcac7c..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RescueTeamDetail.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 抢险队伍明细 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="抢险队伍明细") -@Data -@TableName("public.rescue_team_detail") -public class RescueTeamDetail implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="detail_id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long detailId; - - /** - * 队伍id - */ - @TableField(value="team_id") - @Schema(description="队伍id") - @JsonSerialize(using = ToStringSerializer.class) - private Long teamId; - - /** - * 姓名 - */ - @TableField(value="name") - @Schema(description="姓名") - @Size(max = 100,message = "姓名最大长度要小于 100") - private String name; - - /** - * 性别,F女,M男 - */ - @TableField(value="sex") - @Schema(description="性别,F女,M男") - @Size(max = 1,message = "性别,F女,M男最大长度要小于 1") - private String sex; - - /** - * 年龄 - */ - @TableField(value="age") - @Schema(description="年龄") - private Integer age; - - /** - * 工作单位 - */ - @TableField(value="work_unit") - @Schema(description="工作单位") - @Size(max = 150,message = "工作单位最大长度要小于 150") - private String workUnit; - - /** - * 职务 - */ - @TableField(value="duty") - @Schema(description="职务") - @Size(max = 20,message = "职务最大长度要小于 20") - private String duty; - - /** - * 联系方式 - */ - @TableField(value="phone") - @Schema(description="联系方式") - @Size(max = 20,message = "联系方式最大长度要小于 20") - private String phone; - - /** - * 时间戳 - */ - @TableField(value="tm") - @Schema(description="时间戳") - @NotNull(message = "时间戳不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RescueTeamFile.java b/src/main/java/com/gunshi/project/hsz/model/RescueTeamFile.java deleted file mode 100644 index b036b14..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RescueTeamFile.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 抢险队伍-附件 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="抢险队伍-附件") -@Data -@TableName("public.rescue_team_file") -public class RescueTeamFile implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 抢险队伍id - */ - @TableField(value="team_id") - @Schema(description="抢险队伍id") - private Long teamId; - - /** - * 文件id - */ - @TableField(value="file_id") - @Schema(description="文件id") - @JsonSerialize(using = ToStringSerializer.class) - private Long fileId; - - /** - * 序号 - */ - @TableField(value="sort_on") - @Schema(description="序号") - private Integer sortOn; - - /** - * 时间戳 - */ - @TableField(value="tm") - @Schema(description="时间戳") - @NotNull(message = "时间戳不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiceGrowConfig.java b/src/main/java/com/gunshi/project/hsz/model/RiceGrowConfig.java deleted file mode 100644 index 5170639..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiceGrowConfig.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** - * 水稻生长配置实体类 - * - * @author - * @TableName rice_grow_config - */ -@Data -@TableName(value = "rice_grow_config") -public class RiceGrowConfig implements Serializable { - - /** - * 主键 - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 降雨相似年 - */ - @TableField(value = "year") - @Schema(description = "降雨相似年") - private Integer year; - - /** - * 需水系数 - */ - @TableField(value = "α1") - @Schema(description = "需水系数") - private BigDecimal α1; - - /** - * 生长期水面蒸发量(mm) - */ - @TableField(value = "ed1") - @Schema(description = "生长期水面蒸发量(mm)") - private BigDecimal ed1; - - /** - * 渗漏强度 - */ - @TableField(value = "lk_intensity") - @Schema(description = "渗漏强度") - private BigDecimal lkIntensity; - - /** - * 泡田强度 - */ - @TableField(value = "ka_quota") - @Schema(description = "泡田定额") - private BigDecimal kaQuota; - - /** - * 灌区全部灌溉面积 - */ - @TableField(value = "s_area") - @Schema(description = "灌区全部灌溉面积") - private BigDecimal area; - - /** - * 主表id - */ - @TableField(value = "rice_water_id") - @Schema(description = "主表id") - @NotNull(message = "主表id不能为空", groups = {Insert.class, Update.class}) - private Long riceWaterId; - - /** - * 灌溉周期(天) - */ - @TableField(value = "cycle") - @Schema(description = "灌溉周期(天)") - private Integer cycle; - - /** - * 用水量(mm) - */ - @TableField(value = "water_use") - @Schema(description = "用水量(mm)") - private BigDecimal waterUse; - - /** - * 灌溉用水量(万m³) - */ - @TableField(value = "irrigation_use") - @Schema(description = "灌溉用水量(万m³)") - private BigDecimal irrigationUse; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiceIrrigationUse.java b/src/main/java/com/gunshi/project/hsz/model/RiceIrrigationUse.java deleted file mode 100644 index 902d3c6..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiceIrrigationUse.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 水稻灌溉用水实体类 - * - * @author - * @TableName rice_irrigation_use - */ -@Data -@TableName(value = "rice_irrigation_use") -public class RiceIrrigationUse implements Serializable { - - /** - * 主键id - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键id") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 主表id - */ - @TableField(value = "rice_water_id") - @Schema(description = "主表id") - private Long riceWaterId; - - /** - * 月份 - */ - @TableField(value = "month") - @Schema(description = "月份") - @NotNull(message = "月份不能为空", groups = {Insert.class, Update.class}) - private Integer month; - - /** - * 灌溉用水量 - */ - @TableField(value = "irrigation_use") - @Schema(description = "用水量") - private BigDecimal irrigationUse; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiceRqWater.java b/src/main/java/com/gunshi/project/hsz/model/RiceRqWater.java deleted file mode 100644 index ffed03f..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiceRqWater.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; - -/** - * 水稻需水主表实体类 - * - * @author - * @TableName rice_rq_water - */ -@Data -@TableName(value = "rice_rq_water") -public class RiceRqWater implements Serializable { - - /** - * 主键ID - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键ID") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 方案名称 - */ - @TableField(value = "plan_name") - @Schema(description = "方案名称") - @NotNull(message = "方案名称不能为空", groups = {Insert.class, Update.class}) - private String planName; - - /** - * 需水总量 - */ - @TableField(value = "req_water") - @Schema(description = "需水总量") - private BigDecimal reqWater; - - /** - * 制定时间 - */ - @TableField(value = "create_time") - @Schema(description = "制定时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime createTime; - - /** - * 制定人 - */ - @TableField(value = "create_name") - @Schema(description = "制定人") - private String createName; - - @TableField(value = "year") - @Schema(description = "预测年度") - private Integer year; - - - @TableField(exist = false) - private RiceGrowConfig riceGrowConfig;//水稻生长参数配置表 - - @TableField(exist = false) - private List riceWaterKis;//灌水定额配置 - - @TableField(exist = false) - private List riceWaterForecastMonths;//需水预测-按月份 - - @TableField(exist = false) - private List riceWaterForecastCycles;//需水预测-按周期 -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiceSupportBalance.java b/src/main/java/com/gunshi/project/hsz/model/RiceSupportBalance.java deleted file mode 100644 index 626b848..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiceSupportBalance.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -@Data -@TableName(value = "rice_support_balance") -public class RiceSupportBalance implements Serializable { - - /** - * 主键ID - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键ID") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 方案名称 - */ - @TableField(value = "plan_name") - @Schema(description = "方案名称") - @NotNull(message = "方案名称不能为空", groups = {Insert.class, Update.class}) - private String planName; - - /** - * 开始时间 - */ - @TableField(value = "start_time") - @Schema(description = "开始时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; - - /** - * 结束时间 - */ - @TableField(value = "end_time") - @Schema(description = "结束时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; - - /** - * 状态:0-计算中,1-已完成 - */ - @TableField(value = "status") - @Schema(description = "状态:0-计算中,1-已完成 2-计算失败") - private Integer status; - - /** - * 总需水量(万m³) - */ - @TableField(value = "total_cost") - @Schema(description = "总需水量(万m³)") - private BigDecimal totalCost; - - /** - * 总计划供水量(万m³) - */ - @TableField(value = "total_plan") - @Schema(description = "总计划供水量(万m³)") - private BigDecimal totalPlan; - - /** - * 制定时间 - */ - @TableField(value = "create_time") - @Schema(description = "制定时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime createTime; - - /** - * 制定人 - */ - @TableField(value = "create_name") - @Schema(description = "制定人") - private String createName; - - /** - * 农业需水主键 - */ - @TableField(value = "rice_water_id") - @Schema(description = "农业需水主键") - private Long riceWaterId; - - /** - * 来水预测主键 - */ - @TableField(value = "ic_water_id") - @Schema(description = "来水预测主键") - private Long icWaterId; - - @TableField(value = "fail_reason") - @Schema(description = "计算失败原因") - private String failReason; - - - @TableField(exist = false) - private List details; - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiceSupportBalanceDetail.java b/src/main/java/com/gunshi/project/hsz/model/RiceSupportBalanceDetail.java deleted file mode 100644 index 1e2b099..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiceSupportBalanceDetail.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Data -@TableName(value = "rice_support_balance_detail") -public class RiceSupportBalanceDetail implements Serializable { - - /** - * 主键ID - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键ID") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 水稻支持平衡主表ID - */ - @TableField(value = "rice_support_id") - @Schema(description = "水稻支持平衡主表ID") - private Long riceSupportId; - - /** - * 时间 - */ - @TableField(value = "tm") - @Schema(description = "时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime tm; - - /** - * 灌溉水量(万m³)-需水量 - */ - @TableField(value = "irrigation_use") - @Schema(description = "灌溉水量(万m³)-需水量") - private BigDecimal irrigationUse; - - /** - * 灌溉水量(万m³)-计划供水量 - */ - @TableField(value = "irrigation_plan") - @Schema(description = "灌溉水量(万m³)-计划供水量") - private BigDecimal irrigationPlan; - - /** - * 生态水量(万m³)-需水量 - */ - @TableField(value = "eco_use") - @Schema(description = "生态水量(万m³)-需水量") - private BigDecimal ecoUse; - - /** - * 生态水量(万m³)-计划供水量 - */ - @TableField(value = "eco_plan") - @Schema(description = "生态水量(万m³)-计划供水量") - private BigDecimal ecoPlan; - - @TableField(exist = false) - private BigDecimal dailyTotalUse; - - @TableField(exist = false) - private BigDecimal dailyTotalPlan; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiceWaterForecastCycle.java b/src/main/java/com/gunshi/project/hsz/model/RiceWaterForecastCycle.java deleted file mode 100644 index eadbc6f..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiceWaterForecastCycle.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 水稻水分预测周期实体类 - * - * @author - * @TableName rice_water_forecast_cycle - */ -@Data -@TableName(value = "rice_water_forecast_cycle") -public class RiceWaterForecastCycle implements Serializable { - - /** - * 主键id - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键id") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 主表id - */ - @TableField(value = "rice_water_id") - @Schema(description = "主表id") - private Long riceWaterId; - - /** - * 灌溉周期 - */ - @TableField(value = "rice_grow_stage") - @Schema(description = "灌溉周期") - @NotNull(message = "灌溉周期不能为空", groups = {Insert.class, Update.class}) - private String riceGrowStage; - - /** - * 灌溉周期排序 - */ - @TableField(value = "_order") - @Schema(description = "灌溉周期排序") - private Integer order; - - /** - * 灌溉用水量 - */ - @TableField(value = "irrigation_use") - @Schema(description = "灌溉用水量") - private BigDecimal irrigationUse; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiceWaterForecastMonth.java b/src/main/java/com/gunshi/project/hsz/model/RiceWaterForecastMonth.java deleted file mode 100644 index e51a181..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiceWaterForecastMonth.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 水稻水分预测月份实体类 - * - * @author - * @TableName rice_water_forecast_month - */ -@Data -@TableName(value = "rice_water_forecast_month") -public class RiceWaterForecastMonth implements Serializable { - - /** - * 主键id - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键id") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 月份 - */ - @TableField(value = "month") - @Schema(description = "月份") - @NotNull(message = "月份不能为空", groups = {Insert.class, Update.class}) - private Integer month; - - /** - * 灌溉用水量 - */ - @TableField(value = "irrigation_use") - @Schema(description = "灌溉用水量") - private BigDecimal irrigationUse; - - /** - * 主表id - */ - @TableField(value = "rice_water_id") - @Schema(description = "主表id") - private Long riceWaterId; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiceWaterKi.java b/src/main/java/com/gunshi/project/hsz/model/RiceWaterKi.java deleted file mode 100644 index c37dbac..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiceWaterKi.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; - -/** - * 水稻水分需水模系数实体类 - * - * @author - * @TableName rice_water_ki - */ -@Data -@TableName(value = "rice_water_ki") -public class RiceWaterKi implements Serializable { - - /** - * 主键 - */ - @TableId(value = "id",type = IdType.AUTO) - @Schema(description = "主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 主表id - */ - @TableField(value = "rice_water_id") - @Schema(description = "主表id") - private Long riceWaterId; - - /** - * 水稻生育阶段 - */ - @TableField(value = "rice_grow_stage") - @Schema(description = "水稻生育阶段") - @NotNull(message = "水稻生育阶段不能为空", groups = {Insert.class, Update.class}) - private String riceGrowStage; - - /** - * 开始日期 - */ - @TableField(value = "start_time") - @Schema(description = "开始日期") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; - - /** - * 结束日期 - */ - @TableField(value = "end_time") - @Schema(description = "结束日期") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; - - /** - * 阶段天数 - */ - @TableField(value = "days") - @Schema(description = "阶段天数") - private Integer days; - - /** - * 需水模系数 - */ - @TableField(value = "ki") - @Schema(description = "需水模系数") - private BigDecimal ki; - - /** - * 阶段耗水量(mm) - */ - @TableField(value = "water_rq_stage") - @Schema(description = "阶段耗水量(mm)") - private BigDecimal waterRqStage; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiskControlInfo.java b/src/main/java/com/gunshi/project/hsz/model/RiskControlInfo.java deleted file mode 100644 index 98bd338..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiskControlInfo.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 风险管控清单 -* author: xusan -* date: 2024-08-22 14:17:27 -*/ -@Schema(description="风险管控清单") -@Data -@TableName("public.risk_control_info") -public class RiskControlInfo implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 目录id - */ - @TableField(value="menu_id") - @Schema(description="目录id") - @NotNull(message = "目录id不能为空",groups = {Insert.class,Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long menuId; - - /** - * 风险辨识名称 - */ - @TableField(value="name") - @Schema(description="风险辨识名称") - @Size(max = 255,message = "风险辨识名称最大长度要小于 255") - private String name; - - /** - * 风险等级(1低风险 2一般风险 3较大风险 4重大风险) - */ - @TableField(value="risk_level") - @Schema(description="风险等级(1低风险 2一般风险 3较大风险 4重大风险)") - private Integer riskLevel; - - /** - * 责任人id - */ - @TableField(value="reponser_id") - @Schema(description="责任人id") - private Long reponserId; - - /** - * 责任人 - */ - @TableField(value="reponser_name") - @Schema(description="责任人") - @Size(max = 100,message = "责任人最大长度要小于 100") - private String reponserName; - - /** - * 主要防范措施 - */ - @TableField(value="prevent_measure") - @Schema(description="主要防范措施") - @Size(max = 255,message = "主要防范措施最大长度要小于 255") - private String preventMeasure; - - /** - * 创建日期 - */ - @TableField(value="create_date") - @Schema(description="创建日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createDate; - - @TableField(exist = false) - @Schema(description = "可能导致的后果") - private List result; - - @TableField(exist = false) - @Schema(description = "现场图片") - private List files; - - @TableField("possible_result") - private String possibleResult; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RiskControlMenu.java b/src/main/java/com/gunshi/project/hsz/model/RiskControlMenu.java deleted file mode 100644 index 535b725..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RiskControlMenu.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** -* 描述: 风险管控目录 -* author: xusan -* date: 2024-08-22 14:16:34 -*/ -@Schema(description="风险管控目录") -@Data -@TableName("public.risk_control_menu") -public class RiskControlMenu implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 父id - */ - @TableField(value="parent_id") - @Schema(description="父id") - @JsonSerialize(using = ToStringSerializer.class) - private Long parentId; - - /** - * 名称 - */ - @TableField(value="name") - @Schema(description="名称") - @Size(max = 255,message = "名称最大长度要小于 255") - @NotBlank(message = "名称不能为空") - private String name; - - /** - * 排序 - */ - @TableField(value="order_index") - @Schema(description="排序") - private Integer orderIndex; - - - @TableField(exist = false) - @Schema(description="子集") - private List children; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RotaB.java b/src/main/java/com/gunshi/project/hsz/model/RotaB.java deleted file mode 100644 index 3381fc5..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RotaB.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - * 值班表 - */ -@Schema(description="值班表") -@Data -@TableName(value = "public.rota_b") -public class RotaB implements Serializable { - /** - * 主键 - */ - @TableId(value = "id", type = IdType.INPUT) - @Schema(description="主键") - @NotNull(message = "主键不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 日期 - */ - @TableField(value = "rota_date") - @Schema(description="日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - @NotNull(message = "日期不能为空") - private Date rotaDate; - - /** - * 类型(1带班领导 2值班人员) - */ - @TableField(value = "rota_type") - @Schema(description="类型(1带班领导 2值班人员)") - private Integer rotaType; - - /** - * 用户id - */ - @TableField(value = "user_id") - @Schema(description="用户id") - @JsonSerialize(using = ToStringSerializer.class) - private Long userId; - - /** - * 是否节假日(0否 1是) - */ - @TableField(value = "is_holiday") - @Schema(description="是否节假日(0否 1是)") - private Integer isHoliday; - - - @Schema(description="用户姓名") - @TableField(exist = false) - private String userName; - - private static final long serialVersionUID = 1L; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/RotaLog.java b/src/main/java/com/gunshi/project/hsz/model/RotaLog.java deleted file mode 100644 index bdb2bf2..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/RotaLog.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - * 值班日志 - */ -@Schema(description="值班日志") -@Data -@TableName(value = "public.rota_log") -public class RotaLog implements Serializable { - /** - * 主键 - */ - @TableId(value = "id", type = IdType.INPUT) - @Schema(description="主键") - @NotNull(message = "主键不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 日期 - */ - @TableField(value = "rota_date") - @Schema(description="日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - @NotNull(message = "日期不能为空", groups = {Insert.class, Update.class}) - private Date rotaDate; - - @TableField(value = "weather") - @Schema(description="天气") - private String weather; - - /** - * 带班领导id - */ - @TableField(value = "leader_user_id") - @Schema(description="带班领导id") - @JsonSerialize(using = ToStringSerializer.class) - private Long leaderUserId; - - @Schema(description="带班领导姓名") - @TableField(exist = false) - private String leaderUserName; - - /** - * 值班人员id - */ - @TableField(value = "duty_user_id") - @Schema(description="值班人员id") - @JsonSerialize(using = ToStringSerializer.class) - private Long dutyUserId; - - @Schema(description="值班人员姓名") - @TableField(exist = false) - private String dutyUserName; - - @TableField(value = "duty_situation") - @Schema(description="值班情况") - private String dutySituation; - - @TableField(value = "todo_list") - @Schema(description="待处理事项") - private String todoList; - - private static final long serialVersionUID = 1L; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SafetyAccidentReg.java b/src/main/java/com/gunshi/project/hsz/model/SafetyAccidentReg.java deleted file mode 100644 index 1f7b476..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SafetyAccidentReg.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 安全事故登记 -* author: xusan -* date: 2024-08-21 15:44:54 -*/ -@Schema(description="安全事故登记") -@Data -@TableName("public.safety_accident_reg") -public class SafetyAccidentReg implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 事故名称 - */ - @TableField(value="name") - @Schema(description="事故名称") - @Size(max = 200,message = "事故名称最大长度要小于 200") - private String name; - - /** - * 事故发生时间 - */ - @TableField(value="accident_date") - @Schema(description="事故发生时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM, timezone = "GMT+8") - private Date accidentDate; - - /** - * 事故级别(1一般事故2较大事故3重大事故4特别重大事故) - */ - @TableField(value="accident_level") - @Schema(description="事故级别(1一般事故2较大事故3重大事故4特别重大事故)") - private Integer accidentLevel; - - /** - * 事故情况描述 - */ - @TableField(value="accident_desc") - @Schema(description="事故情况描述") - @Size(max = 500,message = "事故情况描述最大长度要小于 500") - private String accidentDesc; - - /** - * 直接经济损失(万元) - */ - @TableField(value="economic_losses") - @Schema(description="直接经济损失(万元)") - private BigDecimal economicLosses; - - /** - * 死亡人数 - */ - @TableField(value="dead_number") - @Schema(description="死亡人数") - private Integer deadNumber; - - /** - * 受伤人数 - */ - @TableField(value="injure_number") - @Schema(description="受伤人数") - private Integer injureNumber; - - /** - * 事故调查单位 - */ - @TableField(value="invest_org") - @Schema(description="事故调查单位") - @Size(max = 200,message = "事故调查单位最大长度要小于 200") - private String investOrg; - - /** - * 事故结案日期 - */ - @TableField(value="close_case_date") - @Schema(description="事故结案日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date closeCaseDate; - - /** - * 事故调查情况 - */ - @TableField(value="invest_desc") - @Schema(description="事故调查情况") - @Size(max = 500,message = "事故调查情况最大长度要小于 500") - private String investDesc; - - /** - * 处理结果 - */ - @TableField(value="handle_result") - @Schema(description="处理结果") - @Size(max = 500,message = "处理结果最大长度要小于 500") - private String handleResult; - - @TableField(exist = false) - @Schema(description = "现场图片") - private List accidentPic; - - @TableField(exist = false) - @Schema(description = "事故调查与处理资料") - private List accidentHandle; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SafetyCheck.java b/src/main/java/com/gunshi/project/hsz/model/SafetyCheck.java deleted file mode 100644 index e6a3286..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SafetyCheck.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * 安全检查管理 - */ -@Schema(description="安全检查管理") -@Data -@TableName(value = "public.safety_check") -public class SafetyCheck implements Serializable { - /** - * 主键 - */ - @TableId(value = "id", type = IdType.INPUT) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "check_date") - @Schema(description="检查日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - @NotNull(message = "检查日期不能为空",groups = {Insert.class,Update.class}) - private Date checkDate; - - @TableField(value = "check_type") - @Schema(description="检查类型(1日常检查 2年度检查 3特别检查 4临时检查)") - private Integer checkType; - - @TableField(value = "name") - @Schema(description="名称") - @NotNull(message = "名称不能为空",groups = {Insert.class,Update.class}) - private String name; - - @TableField(value = "check_org") - @Schema(description="检查单位") - private String checkOrg; - - @TableField(value = "check_user") - @Schema(description="检查人员") - private String checkUser; - - @TableField(value = "check_content") - @Schema(description="主要检查内容") - private String checkContent; - - @TableField(value = "main_problem") - @Schema(description="发现的主要问题") - private String mainProblem; - - @TableField(value = "handle_suggestion") - @Schema(description="处理意见与建议") - private String handleSuggestion; - - @TableField(value = "recity_desc") - @Schema(description="问题整改情况") - private String recityDesc; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - - private static final long serialVersionUID = 1L; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SafetyHazardInvest.java b/src/main/java/com/gunshi/project/hsz/model/SafetyHazardInvest.java deleted file mode 100644 index cbcc227..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SafetyHazardInvest.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * 安排隐患排查 - */ -@Schema(description="安排隐患排查") -@Data -@TableName(value = "public.safety_hazard_invest") -public class SafetyHazardInvest implements Serializable { - /** - * 主键 - */ - @TableId(value = "id", type = IdType.INPUT) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "hazard_desc") - @Schema(description="隐患描述") - @NotEmpty(message = "隐患描述不可为空",groups = {Insert.class,Update.class}) - private String hazardDesc; - - /** - * 隐患发现日期 - */ - @TableField(value = "hazard_date") - @Schema(description="隐患发现日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - @NotNull(message = "隐患发现日期不能为空",groups = {Insert.class,Update.class}) - private Date hazardDate; - - @TableField(value = "location_desc") - @Schema(description="事件内容描述") - private String locationDesc; - - @TableField(value = "recity_finish_date") - @Schema(description="整改完成时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date recityFinishDate; - - @TableField(value = "recity_desc") - @Schema(description="整改完成情况") - private String recityDesc; - - @TableField(value = "report_user_id") - @Schema(description="上报人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long reportUserId; - - @TableField(value = "report_user_name") - @Schema(description="上报人") - private String reportUserName; - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - - private static final long serialVersionUID = 1L; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SafetyIdentify.java b/src/main/java/com/gunshi/project/hsz/model/SafetyIdentify.java deleted file mode 100644 index 50047de..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SafetyIdentify.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 安全鉴定台账 -* author: xusan -* date: 2024-08-21 14:45:43 -*/ -@Schema(description="安全鉴定台账") -@Data -@TableName("public.safety_identify") -public class SafetyIdentify implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 鉴定日期 - */ - @TableField(value="identify_date") - @Schema(description="鉴定日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date identifyDate; - - /** - * 大坝安全评定类别(1一类坝 2二类坝 3三类坝) - */ - @TableField(value="identify_type") - @Schema(description="大坝安全评定类别(1一类坝 2二类坝 3三类坝)") - private Integer identifyType; - - /** - * 鉴定承担单位(1勘察设计2工程咨询3部门认定) - */ - @TableField(value="identify_org") - @Schema(description="鉴定承担单位") - @Size(max = 200,message = "鉴定承担单位最大长度要小于 200") - private String identifyOrg; - - /** - * 承担单位类型(1甲级2乙级3丙级4其他) - */ - @TableField(value="identify_org_type") - @Schema(description="承担单位类型(1勘察设计2工程咨询3部门认定)") - private Integer identifyOrgType; - - /** - * 承担单位资质 - */ - @TableField(value="identify_org_qua") - @Schema(description="承担单位资质(1甲级2乙级3丙级4其他)") - private Integer identifyOrgQua; - - /** - * 鉴定审定部门 - */ - @TableField(value="identify_audit_org") - @Schema(description="鉴定审定部门") - @Size(max = 200,message = "鉴定审定部门最大长度要小于 200") - private String identifyAuditOrg; - - /** - * 报告书印发日期 - */ - @TableField(value="report_print_date") - @Schema(description="报告书印发日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date reportPrintDate; - - /** - * 报告书印发文号 - */ - @TableField(value="report_print_number") - @Schema(description="报告书印发文号") - @Size(max = 100,message = "报告书印发文号最大长度要小于 100") - private String reportPrintNumber; - - /** - * 工程存在主要问题 - */ - @TableField(value="main_problem") - @Schema(description="工程存在主要问题") - @Size(max = 500,message = "工程存在主要问题最大长度要小于 500") - private String mainProblem; - - /** - * 安全鉴定结论 - */ - @TableField(value="identify_result") - @Schema(description="安全鉴定结论") - @Size(max = 500,message = "安全鉴定结论最大长度要小于 500") - private String identifyResult; - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SafetyReinforcement.java b/src/main/java/com/gunshi/project/hsz/model/SafetyReinforcement.java deleted file mode 100644 index 067b1b3..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SafetyReinforcement.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 除险加固台账 -* author: xusan -* date: 2024-08-22 11:27:43 -*/ -@Schema(description="除险加固台账") -@Data -@TableName("public.safety_reinforcement") -public class SafetyReinforcement implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @NotNull(message = "主键不能为空",groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 组织方式(1地方自行组织 2中央规划) - */ - @TableField(value="organization_way") - @Schema(description="组织方式(1地方自行组织 2中央规划)") - @NotNull(message = "主键不能为空",groups = {Insert.class,Update.class}) - private Integer organizationWay; - - /** - * 工程状态(1施工中 2已完工) - */ - @TableField(value="project_status") - @Schema(description="工程状态(1施工中 2已完工)") - @NotNull(message = "工程状态不能为空",groups = {Insert.class,Update.class}) - private Integer projectStatus; - - /** - * 开工日期 - */ - @TableField(value="start_date") - @Schema(description="开工日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date startDate; - - /** - * 竣工日期 - */ - @TableField(value="finish_date") - @Schema(description="竣工日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date finishDate; - - /** - * 投运日期 - */ - @TableField(value="operation_date") - @Schema(description="投运日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date operationDate; - - /** - * 总投资(万元) - */ - @TableField(value="total_investment") - @Schema(description="总投资(万元)") - private BigDecimal totalInvestment; - - /** - * 设计单位 - */ - @TableField(value="design_org") - @Schema(description="设计单位") - @Size(max = 100,message = "设计单位最大长度要小于 100") - private String designOrg; - - /** - * 施工单位 - */ - @TableField(value="construct_org") - @Schema(description="施工单位") - @Size(max = 100,message = "施工单位最大长度要小于 100") - private String constructOrg; - - /** - * 监理单位 - */ - @TableField(value="control_org") - @Schema(description="监理单位") - @Size(max = 100,message = "监理单位最大长度要小于 100") - private String controlOrg; - - /** - * 主要建设内容 - */ - @TableField(value="construct_content") - @Schema(description="主要建设内容") - @Size(max = 500,message = "主要建设内容最大长度要小于 500") - private String constructContent; - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/ShpPlacement.java b/src/main/java/com/gunshi/project/hsz/model/ShpPlacement.java deleted file mode 100644 index 5e879d8..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/ShpPlacement.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 安置点 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="安置点") -@Data -@TableName("public.shp_placement") -public class ShpPlacement implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * gid - */ - @TableId(value="gid", type= IdType.AUTO) - @Schema(description="gid") - // @Size(max = 0,message = "gid最大长度要小于 0") - @NotNull(message = "gid不能为空") - private Integer gid; - - /** - * adcd - */ - @TableField(value="adcd") - @Schema(description="adcd") - @Size(max = 15,message = "adcd最大长度要小于 15") - private String adcd; - - /** - * pid - */ - @TableField(value="pid") - @Schema(description="pid") - @Size(max = 50,message = "pid最大长度要小于 50") - private String pid; - - /** - * name - */ - @TableField(value="name") - @Schema(description="name") - @Size(max = 50,message = "name最大长度要小于 50") - private String name; - - /** - * address - */ - @TableField(value="address") - @Schema(description="address") - @Size(max = 50,message = "address最大长度要小于 50") - private String address; - - /** - * lgtd - */ - @TableField(value="lgtd") - @Schema(description="lgtd") - // @Size(max = 0,message = "lgtd最大长度要小于 0") - private Double lgtd; - - /** - * lttd - */ - @TableField(value="lttd") - @Schema(description="lttd") - // @Size(max = 0,message = "lttd最大长度要小于 0") - private Double lttd; - - /** - * remark - */ - @TableField(value="remark") - @Schema(description="remark") - @Size(max = 200,message = "remark最大长度要小于 200") - private String remark; - - /** - * datestr - */ - @TableField(value="datestr") - @Schema(description="datestr") - @Size(max = 30,message = "datestr最大长度要小于 30") - private String datestr; - - /** - * isplot - */ - @TableField(value="isplot") - @Schema(description="isplot") - // @Size(max = 0,message = "isplot最大长度要小于 0") - private Long isplot; - - /** - * crtdate - */ - @TableField(value="crtdate") - @Schema(description="crtdate") - // @Size(max = 0,message = "crtdate最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date crtdate; - - /** - * crtuser - */ - @TableField(value="crtuser") - @Schema(description="crtuser") - @Size(max = 20,message = "crtuser最大长度要小于 20") - private String crtuser; - - /** - * picpath - */ - @TableField(value="picpath") - @Schema(description="picpath") - @Size(max = 100,message = "picpath最大长度要小于 100") - private String picpath; - - /** - * status - */ - @TableField(value="status") - @Schema(description="status") - // @Size(max = 0,message = "status最大长度要小于 0") - private Long status; - - /** - * cdefine1 - */ - @TableField(value="cdefine1") - @Schema(description="cdefine1") - @Size(max = 50,message = "cdefine1最大长度要小于 50") - private String cdefine1; - - /** - * population - */ - @TableField(value="population") - @Schema(description="population") - // @Size(max = 0,message = "population最大长度要小于 0") - private Integer population; - - /** - * dbver - */ - @TableField(value="dbver") - @Schema(description="dbver") - @Size(max = 20,message = "dbver最大长度要小于 20") - private String dbver; - - /** - * recordman - */ - @TableField(value="recordman") - @Schema(description="recordman") - @Size(max = 100,message = "recordman最大长度要小于 100") - private String recordman; - - /** - * zpid - */ - @TableField(value="zpid") - @Schema(description="zpid") - @Size(max = 30,message = "zpid最大长度要小于 30") - private String zpid; - - /** - * wscd - */ - @TableField(value="wscd") - @Schema(description="wscd") - @Size(max = 200,message = "wscd最大长度要小于 200") - private String wscd; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SoilMoistureData.java b/src/main/java/com/gunshi/project/hsz/model/SoilMoistureData.java deleted file mode 100644 index ea06530..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SoilMoistureData.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* -*/ -@Schema(description="") -@Data -@TableName("public.soil_moisture_data") -public class SoilMoistureData implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - private String stcd; - private BigDecimal val; - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SoilMoistureStation.java b/src/main/java/com/gunshi/project/hsz/model/SoilMoistureStation.java deleted file mode 100644 index 907515a..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SoilMoistureStation.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* -*/ -@Schema(description="") -@Data -@TableName("public.soil_moisture_station") -public class SoilMoistureStation implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - private String stcd; - private String stnm; - private BigDecimal lgtd; - private BigDecimal lttd; - private Integer status; - private String remark; - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @TableField(exist = false) - private BigDecimal val; - - @TableField(exist = false) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/StAddvcdD.java b/src/main/java/com/gunshi/project/hsz/model/StAddvcdD.java deleted file mode 100644 index 22c3087..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StAddvcdD.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 行政区划表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="行政区划表") -@Data -@TableName("public.st_addvcd_d") -public class StAddvcdD implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 行政区划编码 - */ - @TableId(value="adcd", type= IdType.AUTO) - @Schema(description="行政区划编码") - @Size(max = 15,message = "行政区划编码最大长度要小于 15") - @NotBlank(message = "行政区划编码不能为空") - private String adcd; - - /** - * 行政区划名称 - */ - @TableField(value="adnm") - @Schema(description="行政区划名称") - @Size(max = 200,message = "行政区划名称最大长度要小于 200") - @NotBlank(message = "行政区划名称不能为空") - private String adnm; - - /** - * 人口数 - */ - @TableField(value="population") - @Schema(description="人口数") - // @Size(max = 0,message = "人口数最大长度要小于 0") - private Integer population; - - /** - * 房屋数 - */ - @TableField(value="houses") - @Schema(description="房屋数") - // @Size(max = 0,message = "房屋数最大长度要小于 0") - private Integer houses; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - // @Size(max = 0,message = "经度最大长度要小于 0") - private String lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - // @Size(max = 0,message = "纬度最大长度要小于 0") - private String lttd; - - /** - * 时间戳 - */ - @TableField(value="tm") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @NotNull(message = "时间戳不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 总户数(户) - */ - @TableField(value="htcount") - @Schema(description="总户数(户)") - // @Size(max = 0,message = "总户数(户)最大长度要小于 0") - private Integer htcount; - - /** - * 土地面积 (km2) - */ - @TableField(value="ldarea") - @Schema(description="土地面积 (km2)") - // @Size(max = 0,message = "土地面积 (km2)最大长度要小于 0") - private String ldarea; - - /** - * 耕地面积(亩) - */ - @TableField(value="plarea") - @Schema(description="耕地面积(亩) ") - // @Size(max = 0,message = "耕地面积(亩) 最大长度要小于 0") - private Integer plarea; - - /** - * 防治区类型 确定行政区是否属于防治区和重点防治区,1:防治区;2:重点防治区。 - */ - @TableField(value="prevtp") - @Schema(description="防治区类型 确定行政区是否属于防治区和重点防治区,1:防治区;2:重点防治区。") - // @Size(max = 0,message = "防治区类型 确定行政区是否属于防治区和重点防治区,1:防治区;2:重点防治区。最大长度要小于 0") - private Integer prevtp; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/StEvpo.java b/src/main/java/com/gunshi/project/hsz/model/StEvpo.java deleted file mode 100644 index c3ff06e..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StEvpo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description="水库蒸发") -@Data -@TableName("public.st_evpo") -public class StEvpo { - - - @TableId(value = "id") - @Schema(description = "Id") - private Long id; - - - @TableField(value = "month") - @Schema(description = "月份") - private Integer month; - - @TableField(value = "evaporation") - @Schema(description = "蒸发量") - @JsonSerialize(using = ToStringSerializer.class) // 或者自定义序列化器 - private BigDecimal evaporation; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StImgR.java b/src/main/java/com/gunshi/project/hsz/model/StImgR.java deleted file mode 100644 index 83e65ef..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StImgR.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.github.jeffreyning.mybatisplus.anno.MppMultiId; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -@Schema -@Data -@TableName(value = "st_img_r") -@JsonIgnoreProperties(ignoreUnknown = true) -public class StImgR implements Serializable { - @TableField(value = "stcd") - @MppMultiId - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 20") - @NotBlank(message = "测站编码不能为空") - private String stcd; - - @MppMultiId - @TableField(value = "tm") - @Schema(description="时间") - @NotNull(message = "时间不能为为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - @TableField(value = "chtm") - @Schema(description="") - @NotNull(message = "不能为null") - private Date chtm; - - @TableField(value = "img_path") - @Schema(description="图片路径") - @Size(max = 256,message = "图片路径最大长度要小于 256") - @NotBlank(message = "图片路径不能为空") - private String imgPath; - - @TableField(value = "chid") - @Schema(description="") - @Size(max = 10,message = "最大长度要小于 10") - @NotBlank(message = "不能为空") - private String chid; - - @TableField(value = "\"source\"") - @Schema(description="") - @Size(max = 50,message = "最大长度要小于 50") - private String source; - - @TableField(value = "mtmcd") - @Schema(description="") - @Size(max = 20,message = "最大长度要小于 20") - private String mtmcd; - - private static final long serialVersionUID = 1L; - - public static final String COL_STCD = "stcd"; - - public static final String COL_TM = "tm"; - - public static final String COL_CHTM = "chtm"; - - public static final String COL_IMG_PATH = "img_path"; - - public static final String COL_CHID = "chid"; - - public static final String COL_SOURCE = "source"; - - public static final String COL_MTMCD = "mtmcd"; - - - - @TableField(exist = false) - private Date stm;// 同步的数据的开始时间 - - @TableField(exist = false) - private Date etm;// 同步的数据的结束时间 -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StImgRReal.java b/src/main/java/com/gunshi/project/hsz/model/StImgRReal.java deleted file mode 100644 index 41f7865..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StImgRReal.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.model; - -import java.io.Serializable; -import java.util.Date; - -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 com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -@Schema -@Data -@TableName(value = "st_img_r_real") -@JsonIgnoreProperties(ignoreUnknown = true) -public class StImgRReal implements Serializable { - - - @TableField(value="stcd") - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 20") - @NotBlank(message = "测站编码不能为空") - private String stcd; - - @TableField(value = "tm") - @Schema(description="") - @NotNull(message = "不能为null") - private Date tm; - - @TableField(value = "chtm") - @Schema(description="") - @NotNull(message = "不能为null") - private Date chtm; - - @TableField(value = "img_path") - @Schema(description="") - @Size(max = 256,message = "最大长度要小于 256") - @NotBlank(message = "不能为空") - private String imgPath; - - @TableId(value="chid", type = IdType.NONE) - @Schema(description="") - @Size(max = 10,message = "最大长度要小于 10") - @NotBlank(message = "不能为空") - private String chid; - - @TableField(value = "\"source\"") - @Schema(description="") - @Size(max = 50,message = "最大长度要小于 50") - private String source; - - private static final long serialVersionUID = 1L; - - public static final String COL_STCD = "stcd"; - - public static final String COL_TM = "tm"; - - public static final String COL_CHTM = "chtm"; - - public static final String COL_IMG_PATH = "img_path"; - - public static final String COL_CHID = "chid"; - - public static final String COL_SOURCE = "source"; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StImgWarnR.java b/src/main/java/com/gunshi/project/hsz/model/StImgWarnR.java deleted file mode 100644 index 0d8e566..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StImgWarnR.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.github.jeffreyning.mybatisplus.anno.MppMultiId; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: AI告警表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="AI告警表") -@Data -@TableName("public.st_img_warn_r") -public class StImgWarnR implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * index_code - */ - @MppMultiId - @TableField(value="index_code") - @Schema(description="index_code") - @Size(max = 150,message = "index_code最大长度要小于 150") - @NotBlank(message = "index_code不能为空") - private String indexCode; - - /** - * tm - */ - @MppMultiId - @TableField(value="tm") - @Schema(description="tm") - @NotNull(message = "tm不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * img_path - */ - @TableField(value="img_path") - @Schema(description="img_path") - @Size(max = 256,message = "img_path最大长度要小于 256") - private String imgPath; - - /** - * 告警类型(1人员闯入 2工程车辆识别 3漂浮物识别 4游泳识别) - */ - @TableField(value="type") - @Schema(description="告警类型(1人员闯入 2工程车辆识别 3漂浮物识别 4游泳识别)") - private Integer type; - - @TableField(exist = false) - @Schema(description = "摄像头名称") - private String name; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/StPptnRAverage.java b/src/main/java/com/gunshi/project/hsz/model/StPptnRAverage.java deleted file mode 100644 index 5b8c08d..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StPptnRAverage.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.StPptnR; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; - -/** - * 描述: 降水量表-面雨量 - */ -@Data -public class StPptnRAverage extends StPptnR { - - - /** - * 时段降水量 - */ - @Schema(description = "时段降水量") - private String drp; - - /** - * 时间 - */ - @Schema(description = "时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - public StPptnRAverage(Date tm, String drp) { - this.tm = tm; - this.drp = drp; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StPptnRD.java b/src/main/java/com/gunshi/project/hsz/model/StPptnRD.java deleted file mode 100644 index 5888027..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StPptnRD.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.github.jeffreyning.mybatisplus.anno.MppMultiId; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="") -@Data -@TableName("public.st_pptn_r_d") -@JsonIgnoreProperties(ignoreUnknown = true) -public class StPptnRD implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测站编码 - */ - @MppMultiId - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 20") - @NotBlank(message = "测站编码不能为空") - private String stcd; - - /** - * 时间 - */ - @MppMultiId - @TableField(value="tm") - @Schema(description="时间") - // @Size(max = 0,message = "时间最大长度要小于 0") - @NotNull(message = "时间不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 时段降水量 - */ - @TableField(value="drp") - @Schema(description="时段降水量") - // @Size(max = 0,message = "时段降水量最大长度要小于 0") - private BigDecimal drp; - - /** - * year - */ - @MppMultiId - @TableField(value="year") - @Schema(description="year") - @NotNull(message = "year不能为空") - private Integer year; - - /** - * 前一天是否降雨(0无雨 1有降雨) - */ - @TableField(value="last_day_isdrp") - @Schema(description="last_day_isdrp") - private String lastDayIsdrp; - - /** - * 之前有无雨的连续天数 - */ - @TableField(value="isdrp_count") - @Schema(description="isdrp_count") - private Integer isdrpCount; - - @TableField(exist = false) - private Date stm;// 同步的数据的开始时间 - - @TableField(exist = false) - private String adcd; - - @TableField(exist = false) - private String day; - - @TableField(exist = false) - private String month; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StPptnRH.java b/src/main/java/com/gunshi/project/hsz/model/StPptnRH.java deleted file mode 100644 index 8d10d0b..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StPptnRH.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 降雨量小时表 -* author: cxw -* date: 2024-09-02 09:34:31 -*/ -@Schema(description="降雨量小时表") -@Data -@TableName("public.st_pptn_r_h") -public class StPptnRH implements Serializable { - - public final static String thisTableName = "StPptnRH"; - - private static final long serialVersionUID = 1L; - - /** - * 测站编码 - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 20") - @NotBlank(message = "测站编码不能为空") - @NotNull(message = "测站编码不能为空") - private String stcd; - - /** - * 时间 - */ - @TableField(value="tm") - @Schema(description="时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 时段降水量 - */ - @TableField(value="drp") - @Schema(description="时段降水量") - private BigDecimal drp; - - /** - * 时段长 - */ - @TableField(value="intv") - @Schema(description="时段长") - private BigDecimal intv; - - /** - * 降水历时 - */ - @TableField(value="pdr") - @Schema(description="降水历时") - private BigDecimal pdr; - - /** - * 日降水量 - */ - @TableField(value="dyp") - @Schema(description="日降水量") - private BigDecimal dyp; - - /** - * 天气状况 - */ - @TableField(value="wth") - @Schema(description="天气状况") - @Size(max = 1,message = "天气状况最大长度要小于 1") - private String wth; - - /** - * 入库时间 - */ - @TableField(value="chtm") - @Schema(description="入库时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date chtm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StQxWarnR.java b/src/main/java/com/gunshi/project/hsz/model/StQxWarnR.java deleted file mode 100644 index 3f81da5..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StQxWarnR.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 气象预警表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="气象预警表") -@Data -@TableName("public.st_qx_warn_r") -public class StQxWarnR implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * id - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="id") - // @Size(max = 0,message = "id最大长度要小于 0") - @NotNull(message = "id不能为空") - private Long id; - - /** - * tm - */ - @TableField(value="tm") - @Schema(description="tm") - // @Size(max = 0,message = "tm最大长度要小于 0") - @NotNull(message = "tm不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * title - */ - @TableField(value="title") - @Schema(description="title") - @Size(max = 200,message = "title最大长度要小于 200") - private String title; - - /** - * content - */ - @TableField(value="content") - @Schema(description="content") - @Size(max = 500,message = "content最大长度要小于 500") - private String content; - - /** - * level - */ - @TableField(value="level") - @Schema(description="level") - // @Size(max = 0,message = "level最大长度要小于 0") - private Integer level; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/StStbprpCctv.java b/src/main/java/com/gunshi/project/hsz/model/StStbprpCctv.java deleted file mode 100644 index 1101c1c..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StStbprpCctv.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; - -/** - * Description: 测站与视频监控关联表 - * Created by XuSan on 2024/3/5. - * - * @author XuSan - * @version 1.0 - */ -@Schema -@Data -@TableName(value = "public.st_stbprp_cctv") -public class StStbprpCctv implements Serializable { - - @TableId(value = "id", type = IdType.INPUT) - @Schema(description="主键id") - @NotNull(message = "主键不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - @TableField(value = "stcd") - @Schema(description="测站编码") - @NotBlank(message = "测站编码不能为空", groups = {Insert.class,Update.class}) - private String stcd; - - @TableField(value = "cam_id") - @Schema(description="视频id") - @NotBlank(message = "视频id不能为空", groups = {Insert.class,Update.class}) - private String camId; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StWaterFlow.java b/src/main/java/com/gunshi/project/hsz/model/StWaterFlow.java deleted file mode 100644 index 057032d..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StWaterFlow.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import com.baomidou.mybatisplus.annotation.TableField; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class StWaterFlow { - - @TableField("stcd") - private String stcd; - - - @TableField("z") - private BigDecimal z; - - - @TableField("flow") - private BigDecimal flow; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StWaterR.java b/src/main/java/com/gunshi/project/hsz/model/StWaterR.java deleted file mode 100644 index 6a87bed..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StWaterR.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 供水量表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="供水量表") -@Data -@TableName("public.st_water_r") -@EqualsAndHashCode(callSuper = true) -public class StWaterR extends GenericPageParams implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测站编码 - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 20") -// @NotBlank(message = "测站编码不能为空") - private String stcd; - - /** - * 时间 - */ - @TableField(value="tm") - @Schema(description="时间") - // @Size(max = 0,message = "时间最大长度要小于 0") -// @NotBlank(message = "时间不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 流量 - */ - @TableField(value="q") - @Schema(description="流量") - // @Size(max = 0,message = "流量最大长度要小于 0") - private BigDecimal q; - - /** - * 核定流量 - */ - @TableField(exist = false) - @Schema(description="核定流量") - private BigDecimal approvalV; - - /** - * 是否达标 - */ - @TableField(exist = false) - @Schema(description="是否达标") - private Boolean isStandard; - - /** - * 水量 - */ - @TableField(value="v") - @Schema(description="水量") - // @Size(max = 0,message = "水量最大长度要小于 0") - private BigDecimal v; - - - /** - * 选择的起始时间 - */ - @Schema(description = "选择的起始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date startTime; - - /** - * 选择的结束时间 - */ - @Schema(description = "选择的结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date endTime; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StWaterRReal.java b/src/main/java/com/gunshi/project/hsz/model/StWaterRReal.java deleted file mode 100644 index 6b6c732..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StWaterRReal.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 供水量实时表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="供水量实时表") -@Data -@TableName("public.st_water_r_real") -public class StWaterRReal implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 测站编码 - */ - @TableId(value="stcd", type= IdType.AUTO) - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 20") - @NotBlank(message = "测站编码不能为空") - private String stcd; - - /** - * 测站名称 - */ - @TableField(exist = false) - private String stnm; - - /** - * 时间 - */ - @TableField(value="tm") - @Schema(description="时间") - // @Size(max = 0,message = "时间最大长度要小于 0") - @NotNull(message = "时间不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 流量 - */ - @TableField(value="q") - @Schema(description="流量") - // @Size(max = 0,message = "流量最大长度要小于 0") - private BigDecimal q; - - /** - * 水量 - */ - @TableField(value="v") - @Schema(description="水量") - // @Size(max = 0,message = "水量最大长度要小于 0") - private String v; - - // 站类 - @TableField(exist = false) - private String sttp; - - // 月核定流量 - @TableField(exist = false) - private ResMonthEcoFlow resMonthEcoFlow; - - - @TableField(exist = false) - private BigDecimal lgtd; - - @TableField(exist = false) - private BigDecimal lttd; - - @TableField(exist = false) - @Schema(description = "0 离线 1 在线") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StWaterRReorganize.java b/src/main/java/com/gunshi/project/hsz/model/StWaterRReorganize.java deleted file mode 100644 index 8729345..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StWaterRReorganize.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.gunshi.project.hsz.model; - - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.model.page.GenericPageParams; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** -* 描述: 供水量整编表 -* author: cxw -* date: 2024-07-24 11:22:46 -*/ -@EqualsAndHashCode(callSuper = true) -@Schema(description="供水量整编表") -@Data -@TableName("public.st_water_r_reorganize") -public class StWaterRReorganize extends GenericPageParams implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 时间(年月日 时) - */ - @TableId(value="tm", type= IdType.NONE) - @Schema(description="时间(年月日 时)") - @Size(max = 13,message = "时间(年月日 时)最大长度要小于 13") -// @NotBlank(message = "时间(年月日 时)不能为空") -// @NotNull(message = "时间(年月日 时)不能为空") - private String tm; - - /** - * 流量(生态供水) - */ - @TableField(value="ecology_q") - @Schema(description="流量(生态供水)") - private BigDecimal ecologyQ; - - /** - * 水量(生态供水) - */ - @TableField(value="ecology_v") - @Schema(description="水量(生态供水)") - private BigDecimal ecologyV; - - /** - * 干渠灌溉流量1 - */ - @TableField(value="mci1_q") - @Schema(description="流量(生活供水)") - private BigDecimal mci1Q; - - /** - * 干渠灌溉水量1 - */ - @TableField(value="mci1_v") - @Schema(description="水量(生活供水)") - private BigDecimal mci1V; - - - /** - * 干渠灌溉流量2 - */ - @TableField(value="mci2_q") - @Schema(description="流量(生活供水)") - private BigDecimal mci2Q; - - /** - * 干渠灌溉水量2 - */ - @TableField(value="mci2_v") - @Schema(description="水量(生活供水)") - private BigDecimal mci2V; - - /** - * 水量小计 - */ - @TableField(value="sum_v") - @Schema(description="水量小计") - private BigDecimal sumV; - - /** - * 查询时间类型 - */ - @Schema(description = "查询时间类型searchType:1-小时 2-日 3-月 4-年") - @TableField(exist = false) - @NotNull(message = "查询时间类型searchType不能为空") - private String searchType; - - /** - * 选择的起始时间 - */ - @Schema(description = "选择的起始时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date startTime; - - /** - * 选择的结束时间 - */ - @Schema(description = "选择的结束时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @TableField(exist = false) - private Date endTime; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StZqR.java b/src/main/java/com/gunshi/project/hsz/model/StZqR.java deleted file mode 100644 index 46e95c8..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StZqR.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Delete; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * 描述: 水位-流量 关系表 - * author: xusan - * date: 2024-07-08 17:34:26 - */ -@Schema(description="水位-流量 关系表") -@Data -@TableName("public.st_zq_r") -public class StZqR { - - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - - /** - * 测站编码 - */ - @TableField(value="stcd") - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 8") - @NotBlank(message = "测站编码不能为空") - private String stcd; - - /** - * 水位 - */ - @TableField(value="z") - @Schema(description="水位") - // @Size(max = 0,message = "水位最大长度要小于 0") - @NotNull(message = "水位不能为空",groups = {Insert.class, Update.class, Delete.class}) - private BigDecimal z; - - /** - * 流量 - */ - @TableField(value="q") - @Schema(description="流量") - // @Size(max = 0,message = "流量最大长度要小于 0") - @NotNull(message = "流量不能为空",groups = {Insert.class, Update.class, Delete.class}) - private BigDecimal q; - - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private LocalDateTime moditime; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/StZqrlB.java b/src/main/java/com/gunshi/project/hsz/model/StZqrlB.java deleted file mode 100644 index d94b254..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StZqrlB.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Delete; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.Date; - -/** -* 描述: 水位流量关系曲线表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="水位流量关系曲线表") -@Data -@TableName("public.st_zqrl_b") -public class StZqrlB implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - /** - * 测站编码 - */ - @TableField(value="stcd") - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 8") - @NotBlank(message = "测站编码不能为空") - private String stcd; - - /** - * 曲线名称 - */ - @TableField(value="lnnm") - @Schema(description="曲线名称") - @Size(max = 30,message = "曲线名称最大长度要小于 30") - private String lnnm; - - /** - * 启用时间 - */ - @TableField(value="bgtm") - @Schema(description="启用时间") - // @Size(max = 0,message = "启用时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date bgtm; - - /** - * 点序号 - */ - @TableField(value="ptno") - @Schema(description="点序号") - // @Size(max = 0,message = "点序号最大长度要小于 0") - private Integer ptno; - - /** - * 水位 - */ - @TableField(value="z") - @Schema(description="水位") - // @Size(max = 0,message = "水位最大长度要小于 0") - @NotNull(message = "水位不能为空",groups = {Insert.class, Update.class, Delete.class}) - private BigDecimal z; - - /** - * 流量 - */ - @TableField(value="q") - @Schema(description="流量") - // @Size(max = 0,message = "流量最大长度要小于 0") - @NotNull(message = "流量不能为空",groups = {Insert.class, Update.class, Delete.class}) - private BigDecimal q; - - /** - * 备注 - */ - @TableField(value="comments") - @Schema(description="备注") - @Size(max = 200,message = "备注最大长度要小于 200") - private String comments; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - - - @Schema(description="水库代码") - @TableField(exist = false) - private String resCode; - - @Schema(description="流量和") - @TableField(exist = false) - private BigDecimal qtotal; - - // 新增方法获取LocalDateTime - public LocalDateTime getModitimeAsLocalDateTime() { - if (moditime == null) { - return null; - } - return moditime.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/StZvarlB.java b/src/main/java/com/gunshi/project/hsz/model/StZvarlB.java deleted file mode 100644 index 70b12eb..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/StZvarlB.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Delete; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -/** -* 描述: 库( 湖)容曲线表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="库( 湖)容曲线表") -@Data -@TableName("public.st_zvarl_b") -public class StZvarlB implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 测站编码 - */ - @TableField(value="stcd") - @Schema(description="测站编码") - @Size(max = 20,message = "测站编码最大长度要小于 8") - private String stcd; - - /** - * 施测时间 - */ - @TableField(value="mstm") - @Schema(description="施测时间") - // @Size(max = 0,message = "施测时间最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date mstm; - - /** - * 点序号 - */ - @TableField(value="ptno") - @Schema(description="点序号") - // @Size(max = 0,message = "点序号最大长度要小于 0") - private Integer ptno; - - /** - * 库水位 - */ - @TableField(value="rz") - @Schema(description="库水位") - @NotNull(message = "库水位不能为空",groups = {Insert.class, Update.class, Delete.class}) - private BigDecimal rz; - - /** - * 蓄水量 - */ - @TableField(value="w") - @Schema(description="蓄水量") - @NotNull(message = "蓄水量不能为空",groups = {Insert.class, Update.class, Delete.class}) - private BigDecimal w; - - /** - * 水面面积 - */ - @TableField(value="wsfa") - @Schema(description="水面面积") - // @Size(max = 0,message = "水面面积最大长度要小于 0") - private BigDecimal wsfa; - - /** - * 时间戳 - */ - @TableField(value="moditime") - @Schema(description="时间戳") - // @Size(max = 0,message = "时间戳最大长度要小于 0") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date moditime; - - /** - * 库容(万m³) - */ - @TableField(value="tot_cap") - @Schema(description="库容(万m³)") - // @Size(max = 0,message = "库容(万m³)最大长度要小于 0") - private BigDecimal totCap; - - @Schema(description="水库代码") - @TableField(exist = false) - private String resCode; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SyDataCheckRule.java b/src/main/java/com/gunshi/project/hsz/model/SyDataCheckRule.java deleted file mode 100644 index 70546dd..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SyDataCheckRule.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** -* 描述: 数据检查规则表 -* author: xusan -* date: 2024-12-19 10:00:00 -*/ -@Schema(description = "数据检查规则表") -@Data -@TableName("public.sy_data_check_rule") -public class SyDataCheckRule implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * id - */ - @TableId(value = "id", type = IdType.AUTO) - @Schema(description = "id") - @NotNull(message = "id不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 测点编号 - */ - @TableField(value = "dvcd") - @Schema(description = "测点编号") - @NotBlank(message = "测点编号不能为空", groups = {Insert.class, Update.class}) - @Size(max = 255, message = "测点编号最大长度要小于 255") - private String dvcd; - - /** - * 库水位大于多少 - */ - @TableField(value = "rz") - @Schema(description = "库水位大于多少") - private BigDecimal rz; - - /** - * 渗压水位小于多少 - */ - @TableField(value = "sy_value") - @Schema(description = "渗压水位小于多少") - private BigDecimal syValue; - - /** - * 是否启用 0:否 1:是 - */ - @TableField(value = "is_available") - @Schema(description = "是否启用 0:否 1:是") - private Integer isAvailable; - - @TableField(value = "dm") - @Schema(description = "断面编码") - private String dm; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SyRegressionData.java b/src/main/java/com/gunshi/project/hsz/model/SyRegressionData.java deleted file mode 100644 index 60b0bf7..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SyRegressionData.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Date; - -/** -* 描述: 回归方程数据表 -* author: xusan -* date: 2024-12-19 10:00:00 -*/ -@Schema(description = "回归方程数据表") -@Data -@TableName("public.sy_regression_data") -public class SyRegressionData implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * id - */ - @TableId(value = "id", type = IdType.AUTO) - @Schema(description = "id") - @NotNull(message = "id不能为空", groups = {Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 测点编号 - */ - @TableField(value = "dvcd") - @Schema(description = "测点编号") - @NotBlank(message = "测点编号不能为空", groups = {Insert.class, Update.class}) - @Size(max = 50, message = "测点编号最大长度要小于 50") - private String dvcd; - - /** - * 开始时间 - */ - @TableField(value = "starttime") - @Schema(description = "开始时间") - @NotNull(message = "开始时间不能为空", groups = {Insert.class, Update.class}) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date startTime; - - /** - * 结束时间 - */ - @TableField(value = "endtime") - @Schema(description = "结束时间") - @NotNull(message = "结束时间不能为空", groups = {Insert.class, Update.class}) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date endTime; - - /** - * 回归方程 - */ - @TableField(value = "regressionequation") - @Schema(description = "回归方程") - private String regressionEquation; - - /** - * 排序(一阶-四阶) - */ - @TableField(value = "_order") - @Schema(description = "排序(一阶-四阶)") - private Integer order; - - - @TableField(value = "create_time") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SysDictB.java b/src/main/java/com/gunshi/project/hsz/model/SysDictB.java deleted file mode 100644 index 18cd251..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SysDictB.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 系统字典表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="系统字典表") -@Data -@TableName("public.sys_dict_b") -public class SysDictB implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * ID - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="ID") - // @Size(max = 0,message = "ID最大长度要小于 0") - @NotNull(message = "ID不能为空",groups = { Update.class}) - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 字典名称 - */ - @TableField(value="dict_nm") - @Schema(description="字典名称") - @Size(max = 250,message = "字典名称最大长度要小于 250") - @NotBlank(message = "字典名称不能为空",groups = {Insert.class, Update.class}) - private String dictNm; - - /** - * 字典编码 - */ - @TableField(value="dict_cd") - @Schema(description="字典编码") - @Size(max = 250,message = "字典编码最大长度要小于 250") - @NotBlank(message = "字典编码不能为空",groups = {Insert.class, Update.class}) - private String dictCd; - - /** - * 父id - */ - @TableField(value="pid") - @Schema(description="父id") - // @Size(max = 0,message = "父id最大长度要小于 0") - @JsonSerialize(using = ToStringSerializer.class) - private Long pid; - - /** - * 排序字段 - */ - @TableField(value="sort_on") - @Schema(description="排序字段") - // @Size(max = 0,message = "排序字段最大长度要小于 0") -// @NotNull(message = "排序字段不能为空",groups = {Insert.class, Update.class}) - private Integer sortOn; - - /** - * 创建时间 - */ - @TableField(value="create_tm") - @Schema(description="创建时间") - // @Size(max = 0,message = "创建时间最大长度要小于 0") -// @NotNull(message = "创建时间不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTm; - - /** - * 修改时间 - */ - @TableField(value="tm") - @Schema(description="修改时间") - // @Size(max = 0,message = "修改时间最大长度要小于 0") -// @NotBlank(message = "修改时间不能为空") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date tm; - - /** - * 状态 1:启用 0:禁用 - */ - @TableField(value="status") - @Schema(description="状态 1:启用 0:禁用") - // @Size(max = 0,message = "状态 1:启用 0:禁用最大长度要小于 0") - private Integer status; - - - @TableField(exist = false) - @Schema(description="子集") - private List children; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/SzCase.java b/src/main/java/com/gunshi/project/hsz/model/SzCase.java deleted file mode 100644 index 17e6ec1..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SzCase.java +++ /dev/null @@ -1,354 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Schema(description="案件登记表") -@Data -@TableName("public.sz_case") -public class SzCase extends CommUpdate implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - -// /** -// * 填报人Id -// */ -// @TableField(value="create_by") -// @Schema(description="填报人Id") -// @NotNull(message = "填报人Id不能为空",groups = {Insert.class, Update.class}) -// @JsonSerialize(using = ToStringSerializer.class) -// private Long createBy; -// -// /** -// * 填报人名字 -// */ -// @TableField(value="create_name") -// @Schema(description="填报人名字") -// @Size(max = 30,message = "填报人名字最大长度要小于 30") -// @NotBlank(message = "填报人名字不能为空",groups = {Insert.class, Update.class}) -// private String createName; -// -// @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) -// @NotNull(message = "填报时间不能为空") -// @TableField(value="create_time") -// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") -// private Date createTime; - - /** - * 案件编号 - */ - @TableField(value="case_id") - @Schema(description="案件编号") - @Size(max = 50,message = "案件编号最大长度要小于 50") - private String caseId; - - /** - * 案件名称 - */ - @TableField(value="case_name") - @Schema(description="案件名称") - @Size(max = 50,message = "案件名称最大长度要小于 50") - @NotBlank(message = "案件名称不能为空",groups = {Insert.class, Update.class}) - private String caseName; - - /** - * 案件类型 - */ - @TableField(value="case_type") - @Schema(description="案件类型 0:违建,1:毁林垦荒,2:筑坝拦汊,3:填占库容,4:违法取水,5:其他") - @Size(max = 1,message = "案件类型最大长度为 1") - @NotNull(message = "案件类型不能为空",groups = {Insert.class, Update.class}) - private Integer caseType; - - /** - * 经度 - */ - @TableField(value="lgtd") - @Schema(description="经度") - private String lgtd; - - /** - * 纬度 - */ - @TableField(value="lttd") - @Schema(description="纬度") - private String lttd; - - /** - * 发现时间 - */ - @TableField(value="case_date") - @Schema(description="发现时间") - @NotNull(message = "发现时间不能为空",groups = {Insert.class, Update.class}) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date caseDate; - - /** - * 发现地点 - */ - @TableField(value="case_address") - @Schema(description="发现地点") - @NotBlank(message = "发现地点不能为空",groups = {Insert.class, Update.class}) - @Size(max = 100,message = "案件类型最大长度要小于 100") - private String caseAddress; - - /** - * 案件来源 - */ - @TableField(value="case_source") - @Schema(description="案件来源 0:巡查上报,1:自主发现,2:公共举报,3:电话举报,4:其他") - @NotNull(message = "案件来源不能为空",groups = {Insert.class, Update.class}) - @Size(max = 1,message = "案件类型最大长度要小于 2") - private Integer caseSource; - - /** - * 违法时间 - */ - @TableField(value="illegal_date") - @Schema(description="违法时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date illegalDate; - - - /** - * 当事人类型 - */ - @TableField(value="party_type") - @Schema(description="当事人类型 0:自然人,1:法人或其他组织,2:待定") - @NotNull(message = "当事人类型不能为空",groups = {Insert.class, Update.class}) - @Size(max = 1,message = "当事人类型最大长度要小于 2") - private Integer partyType; - - /** - * 当事人姓名 - */ - @TableField(value="party_name") - @Schema(description="当事人姓名") - @Size(max = 10,message = "当事人姓名最大长度要小于 10") - private String partyName; - - /** - * 身份证号 - */ - @TableField(value="id_number") - @Schema(description="身份证号") - @Size(max = 30,message = "身份证号最大长度要小于 30") - private String idNumber; - - /** - * 当事人住址 - */ - @TableField(value="party_addr") - @Schema(description="当事人住址") - @Size(max = 50,message = "当事人住址最大长度要小于 50") - private String partyAddr; - - /** - * 简要案情 - */ - @TableField(value="intro") - @Schema(description="简要案情") - @Size(max = 500,message = "简要案情最大长度要小于 500") - private String intro; - - /** - * 处理程序 - */ - @TableField(value="processor") - @Schema(description="处理程序 0:简易程序,1:一般程序") - @Size(max = 1,message = "处理程序最大长度要小于 2") - private Integer processor; - - /** - * 处理依据 - */ - @TableField(value="treatment_basis") - @Schema(description="处理依据") - @Size(max = 50,message = "处理程序最大长度要小于 50") - private String treatmentBasis; - - /** - * 处理措施 - */ - @TableField(value="treatment_measure") - @Schema(description="处理措施") - @Size(max = 50,message = "处理措施最大长度要小于 50") - private String treatmentMeasure; - - /** - * 移送处理情况 - */ - @TableField(value="transfer") - @Schema(description="移送处理情况 0:不移送,1:移送单位") - @Size(max = 1,message = "移送处理情况最大长度要小于 2") - private Integer transfer; - - /** - * 案件执行情况 - */ - @TableField(value="caseImplementation") - @Schema(description="案件执行情况 0:当事人自动履行,1:行政强制执行") - @Size(max = 1,message = "案件执行情况最大长度要小于 2") - private Integer caseImplementation; - - /** - * 自动履行情况 - */ - @TableField(value="performance") - @Schema(description="自动履行情况") - @Size(max = 500,message = "自动履行情况最大长度要小于 500") - private String performance; - - /** - * 伤亡人数(人) - */ - @TableField(value="casualties") - @Schema(description="伤亡人数(人)") - private Integer casualties; - - /** - * 直接损失金额(万元) - */ - @TableField(value="direct_loss_amount") - @Schema(description="直接损失金额(万元)") - private BigDecimal directLossAmount; - - /** - * 结案情况 - */ - @TableField(value="close_status") - @Schema(description="结案情况 0:正常结案,1:其他方式结案,2:未结案") - private Integer closeStatus; - - /** - * 结案时间 - */ - @TableField(value="close_date") - @Schema(description="结案时间 " + DateFormatString.YYYY_MM_DD_HH_MM_SS) - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date closeDate; - - /** - * 文件编号及名称 - */ - @TableField(value="doc_num_name") - @Schema(description="文件编号及名称 ") - @Size(max = 100,message = "文件编号及名称最大长度要小于 100") - private String docNumName; - - /** - * 督办单位类型 - */ - @TableField(value="unit_type") - @Schema(description="督办单位类型 0:上级督办,1:本级河长督办") - private Integer unitType; - - /** - * 督办单位名称 - */ - @TableField(value="unit_name") - @Schema(description="督办单位名称") - private String unitName; - - /** - * 行政复议情况 - */ - @TableField(value="administrative_reconsideration") - @Schema(description="行政复议情况 0:维护,1:变更,2:撤销,3:和解,4:调解") - private Integer administrativeReconsideration; - - /** - * 行政应诉情况 - */ - @TableField(value="administrative_response") - @Schema(description="行政复议情况 0:驳回原告诉讼,1:撤销,2:变更,3:确认违法,4:确认无效,5:其他") - private Integer administrativeResponse; - - /** - * 保管人员 - */ - @TableField(value="custodian") - @Schema(description="保管人员") - private String custodian; - - /** - * 保管地点 - */ - @TableField(value="storage_location") - @Schema(description="保管地点") - private String storageLocation; - - - @TableField(exist = false) - @Schema(description = "基本情况文件集合") - private List files1; - - @TableField(exist = false) - @Schema(description = "处理情况文件集合") - private List files2; - - @TableField(exist = false) - @Schema(description = "办案卷宗-立案文件集合") - private List files3; - - @TableField(exist = false) - @Schema(description = "办案卷宗-调查取证文件集合") - private List files4; - - @TableField(exist = false) - @Schema(description = "办案卷宗-审查处理文件集合") - private List files5; - - @TableField(exist = false) - @Schema(description = "办案卷宗-送达执行文件集合") - private List files6; - - @TableField(exist = false) - @Schema(description = "办案卷宗-结案文件集合") - private List files7; - - @TableField(exist = false) - @Schema(description = "历史影像及图片-整改前文件集合") - private List files8; - - @TableField(exist = false) - @Schema(description = "历史影像及图片-整改后文件集合") - private List files9; - -} diff --git a/src/main/java/com/gunshi/project/hsz/model/SzRegulatoryFramework.java b/src/main/java/com/gunshi/project/hsz/model/SzRegulatoryFramework.java deleted file mode 100644 index b916a0f..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SzRegulatoryFramework.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Schema(description="制度管理表") -@Data - @TableName("public.sz_regulatory_framework") -public class SzRegulatoryFramework extends CommUpdate implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 标题 - */ - @TableField(value="name") - @Schema(description="标题") - @Size(max = 30,message = "标题最大长度要小于 30") - @NotBlank(message = "标题不能为空",groups = {Insert.class, Update.class}) - private String name; - - - /** - * 发布单位 - */ - @TableField(value="fill_unit") - @Schema(description="发布单位") - @Size(max = 50,message = "发布单位最大长度要小于 50") - private String fillUnit; - - /** - * 发布日期 - */ - @TableField(value="release_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - @Schema(description="发布日期") - private Date releaseDate; - - /** - * 制度类型 - */ - @TableField(value="type") - @Schema(description="制度类型 0:党支部工作制度,1:行政工作制度,2:部门工作制度,3:安全管理制度,4:工程管理制度,5:技术规程,6:岗位责任制") - @NotNull(message = "制度类型不能为空",groups = {Insert.class, Update.class}) - @Size(max = 1,message = "制度类型最大长度要小于 2") - private Integer type; - - - - /** - * 上传时间 - */ - @Schema(description="上传时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) - @TableField(value="upload_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date uploadDate; - - -// /** -// * 创建人Id -// */ -// @TableField(value="create_by") -// @Schema(description="填报人Id") -// @NotNull(message = "填报人Id不能为空",groups = {Insert.class, Update.class}) -// @JsonSerialize(using = ToStringSerializer.class) -// private Long createBy; -// -// /** -// * 创建人名字 -// */ -// @TableField(value="create_name") -// @Schema(description="填报人名字") -// @Size(max = 30,message = "填报人名字最大长度要小于 30") -// @NotBlank(message = "填报人名字不能为空",groups = {Insert.class, Update.class}) -// private String createName; -// -// /** -// * 创建人时间 -// */ -// @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) -// @NotNull(message = "填报时间不能为空") -// @TableField(value="create_time") -// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") -// private Date createTime; -// -// /** -// * 更新人Id -// */ -// @TableField(value="update_by") -// @Schema(description="更新人Id") -// @JsonSerialize(using = ToStringSerializer.class) -// private Long updateBy; -// -// /** -// * 更新人名字 -// */ -// @TableField(value="update_name") -// @Schema(description="更新人名字") -// @NotBlank(message = "更新人名字不能为空",groups = {Insert.class, Update.class}) -// private String updateName; -// -// /** -// * 更新时间 -// */ -// @Schema(description="更新时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) -// @TableField(value="update_time") -// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") -// private Date updateTime; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; - - @TableField(value = "min_up_time") - @Schema(description = "第一次上次时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date minUpTime; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/SzRuleByLaw.java b/src/main/java/com/gunshi/project/hsz/model/SzRuleByLaw.java deleted file mode 100644 index 54fd08b..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SzRuleByLaw.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@EqualsAndHashCode(callSuper = true) -@Schema(description="法律法规管理表") -@Data -@TableName("public.sz_rule_by_law") -public class SzRuleByLaw extends CommUpdate implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 标题 - */ - @TableField(value="name") - @Schema(description="标题") - @Size(max = 30,message = "标题最大长度要小于 30") - @NotBlank(message = "标题不能为空",groups = {Insert.class, Update.class}) - private String name; - - /** - * 制定机关 - */ - @TableField(value="fill_unit") - @Schema(description="制定机关") - @Size(max = 50,message = "制定机关最大长度要小于 50") - private String fillUnit; - - /** - * 法律性质 - */ - @TableField(value="type") - @Schema(description="法律性质 0:宪法,1:法律,2:行政法规,3:督察法规,4:司法解释,5:地方性法规") - @NotNull(message = "法律性质不能为空",groups = {Insert.class, Update.class}) - @Size(max = 1,message = "法律性质最大长度要小于 2") - private Integer type; - - /** - * 时效性 - */ - @TableField(value="timeliness") - @Schema(description="时效性 0:尚未生效,1:有效,2:已修改,3:已废止") - @NotNull(message = "时效性不能为空",groups = {Insert.class, Update.class}) - @Size(max = 1,message = "时效性最大长度要小于 2") - private Integer timeliness; - - - /** - * 公布日期 - */ - @Schema(description="公布日期 格式:" + DateFormatString.YYYY_MM_DD) - @TableField(value="announcement_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date announcementDate; - - - - /** - * 施行日期 - */ - @Schema(description="施行日期 格式:" + DateFormatString.YYYY_MM_DD) - @TableField(value="implementation_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date implementationDate; - - /** - * 上传时间 - */ - @Schema(description="上传时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) - @TableField(value="upload_date") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date uploadDate; - - - @TableField(exist = false) - @Schema(description = "文件集合") - private List files; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/SzTreatmentBasis.java b/src/main/java/com/gunshi/project/hsz/model/SzTreatmentBasis.java deleted file mode 100644 index 40e09c4..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/SzTreatmentBasis.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.gunshi.project.hsz.model; - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Schema(description="处理依据表") -@Data -@TableName("public.sz_treatment_basis") -public class SzTreatmentBasis extends CommUpdate implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 节点id - */ - @TableField(value="p_id") - @Schema(description="节点id") - @JsonSerialize(using = ToStringSerializer.class) - private Long pId; - -// /** -// * 创建人Id -// */ -// @TableField(value="create_by") -// @Schema(description="填报人Id") -// @NotNull(message = "填报人Id不能为空",groups = {Insert.class, Update.class}) -// @JsonSerialize(using = ToStringSerializer.class) -// private Long createBy; -// -// /** -// * 创建人名字 -// */ -// @TableField(value="create_name") -// @Schema(description="填报人名字") -// @Size(max = 30,message = "填报人名字最大长度要小于 30") -// @NotBlank(message = "填报人名字不能为空",groups = {Insert.class, Update.class}) -// private String createName; -// -// /** -// * 创建人时间 -// */ -// @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) -// @NotNull(message = "填报时间不能为空") -// @TableField(value="create_time") -// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") -// private Date createTime; - - /** - * 状态 - */ - @TableField(value="status") - @Schema(description="状态 0:启用,1:禁用") - @NotNull(message = "状态不能为空",groups = {Insert.class, Update.class}) - @Size(max = 1,message = "状态最大长度要小于 2") - private Integer status; - - /** - * 节点 - */ - @TableField(value="legal_name") - @Schema(description="法律名称") - @Size(max = 200,message = "法律名称最大长度要小于 200") - @NotBlank(message = "法律名称不能为空",groups = {Insert.class, Update.class}) - private String legalName; - - /** - * 法条内容 - */ - @TableField(value="legal_content") - @Schema(description="法条内容") - @Size(max = 2000,message = "法条内容最大长度要小于 2000") - private String legalContent; - - /** - * 违法行为描述 - */ - @TableField(value="violation_desc") - @Schema(description="违法行为描述") - @Size(max = 2000,message = "违法行为描述最大长度要小于 2000") - private String violationDesc; - - /** - * 处罚措施 - */ - @TableField(value="penalties") - @Schema(description="处罚措施") - @Size(max = 2000,message = "处罚措施最大长度要小于 2000") - private String penalties; - - @TableField(value="display") - @Schema(description="给需要不显示禁用的菜单项使用,0=不显示") - private Integer display; - -// /** -// * 更新人Id -// */ -// @TableField(value="update_by") -// @Schema(description="更新人Id") -// @NotNull(message = "更新人Id不能为空",groups = {Insert.class, Update.class}) -// @JsonSerialize(using = ToStringSerializer.class) -// private Long updateBy; -// -// /** -// * 更新人名字 -// */ -// @TableField(value="update_name") -// @Schema(description="更新人名字") -// @Size(max = 30,message = "更新人名字最大长度要小于 30") -// private String updateName; -// -// /** -// * 更新时间 -// */ -// @Schema(description="更新时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) -// @TableField(value="update_time") -// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") -// private Date updateTime; - - - @TableField(exist = false) - @Schema(description = "子集") - private List children; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/TermiteAdverPic.java b/src/main/java/com/gunshi/project/hsz/model/TermiteAdverPic.java deleted file mode 100644 index 8329e84..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/TermiteAdverPic.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** -* 描述: 白蚁防治宣传图片墙 -* author: xusan -* date: 2024-08-29 17:33:08 -*/ -@Schema(description="白蚁防治宣传图片墙") -@Data -@TableName("public.termite_adver_pic") -public class TermiteAdverPic implements Serializable { - - public final static String thisTableName = "TermiteAdverPic"; - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 图片标题 - */ - @TableField(value="pic_title") - @Schema(description="图片标题") - @Size(max = 50,message = "图片标题最大长度要小于 50") - private String picTitle; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @TableField(exist = false) - @Schema(description = "图片") - private FileAssociations pic; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/TermiteSurvey.java b/src/main/java/com/gunshi/project/hsz/model/TermiteSurvey.java deleted file mode 100644 index 216978a..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/TermiteSurvey.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** -* 描述: 白蚁普查 -* author: xusan -* date: 2024-08-28 10:29:58 -*/ -@Schema(description="白蚁普查") -@Data -@TableName("public.termite_survey") -public class TermiteSurvey implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 上报时间 - */ - @TableField(value="report_date") - @Schema(description="上报时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date reportDate; - - /** - * 普查类型(1日常检查排查 2定期普查 3专项调查) - */ - @TableField(value="survey_type") - @Schema(description="普查类型(1日常检查排查 2定期普查 3专项调查)") - private Integer surveyType; - - /** - * 普查方式(1人工排查法 2引诱法 3仪器探测法 4其它) - */ - @TableField(value="survey_way") - @Schema(description="普查方式(1人工排查法 2引诱法 3仪器探测法 4其它)") - private Integer surveyWay; - - /** - * 上报人id - */ - @TableField(value="report_user_id") - @Schema(description="上报人id") - @JsonSerialize(using = ToStringSerializer.class) - private Long reportUserId; - - /** - * 上报人 - */ - @TableField(value="report_user_name") - @Schema(description="上报人") - @Size(max = 50,message = "上报人最大长度要小于 50") - private String reportUserName; - - /** - * 创建时间 - */ - @TableField(value="create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @TableField(exist = false) - @Schema(description = "白蚁危害处数") - private Integer harmNum = 0; - - @TableField(exist = false) - @Schema(description = "已处置处数") - private Integer handleNum = 0; - - @TableField(exist = false) - @Schema(description = "明细") - private List details; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/TermiteSurveyDetail.java b/src/main/java/com/gunshi/project/hsz/model/TermiteSurveyDetail.java deleted file mode 100644 index a813c63..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/TermiteSurveyDetail.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** -* 描述: 白蚁普查明细 -* author: xusan -* date: 2024-08-28 10:25:17 -*/ -@Schema(description="白蚁普查明细") -@Data -@TableName("public.termite_survey_detail") -public class TermiteSurveyDetail implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="主键") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 普查id - */ - @TableField(value="survey_id") - @Schema(description="普查id") - @JsonSerialize(using = ToStringSerializer.class) - private Long surveyId; - - /** - * 部位 - */ - @TableField(value="position") - @Schema(description="部位") - @Size(max = 50,message = "部位最大长度要小于 50") - private String position; - - /** - * 危害情况(0 无危害 1有危害) - */ - @TableField(value="is_harm") - @Schema(description="危害情况(0 无危害 1有危害)") - private Integer isHarm; - - /** - * 桩号 - */ - @TableField(value="pile_number") - @Schema(description="桩号") - @Size(max = 50,message = "桩号最大长度要小于 50") - private String pileNumber; - - /** - * 普查长度(m) - */ - @TableField(value="survey_len") - @Schema(description="普查长度(m)") - private BigDecimal surveyLen; - - /** - * 是否致险(0否 1是) - */ - @TableField(value="is_danger") - @Schema(description="是否致险(0否 1是)") - private Integer isDanger; - - /** - * 渗漏处数 - */ - @TableField(value="leakage") - @Schema(description="渗漏处数") - private Integer leakage; - - /** - * 穿坝处数 - */ - @TableField(value="dam_cross") - @Schema(description="穿坝处数") - private Integer damCross; - - /** - * 跌窝处数 - */ - @TableField(value="fall_nest") - @Schema(description="跌窝处数") - private Integer fallNest; - - /** - * 是否已处置(0否 1是) - */ - @TableField(value="is_handle") - @Schema(description="是否已处置(0否 1是)") - private Integer isHandle; - - /** - * 处置情况说明 - */ - @TableField(value="handle_desc") - @Schema(description="处置情况说明") - @Size(max = 500,message = "处置情况说明最大长度要小于 500") - private String handleDesc; - - @TableField(exist = false) - @Schema(description = "活动迹象") - private List actSign; - - @TableField(exist = false) - @Schema(description = "现场图片") - private List pics; - - @TableField(exist = false) - @Schema(description = "现场视频") - private List videos; - - @TableField(exist = false) - @Schema(description = "监测时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date reportDate; - - @TableField(exist = false) - @Schema(description = "记录时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/TyYearRainfall.java b/src/main/java/com/gunshi/project/hsz/model/TyYearRainfall.java deleted file mode 100644 index fed97c5..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/TyYearRainfall.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** -* 描述: 典型年降雨资料表 -* author: xusan -* date: 2024-07-08 17:34:26 -*/ -@Schema(description="典型年降雨资料表") -@Data -@TableName("public.ty_year_rainfall") -public class TyYearRainfall implements Serializable { - - - private static final long serialVersionUID = 1L; - - /** - * id - */ - @TableId(value="id", type= IdType.AUTO) - @Schema(description="id") - @NotNull(message = "id不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 类型(1年 2月) - */ - @TableField(value="type") - @Schema(description="类型(1年 2月)") - private Integer type; - - /** - * 年 - */ - @TableField(value="year") - @Schema(description="年") - private Integer year; - - /** - * 月 - */ - @TableField(value="month") - @Schema(description="月") - private Integer month; - - /** - * 降雨量 - */ - @TableField(value="drp") - @Schema(description="降雨量") - private BigDecimal drp; - - /** - * 丰平枯(1枯 2偏枯 3平 4偏丰 5丰) - */ - @TableField(value="status") - @Schema(description="丰平枯(1枯 2偏枯 3平 4偏丰 5丰)") - private Integer status; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/WarningCondition.java b/src/main/java/com/gunshi/project/hsz/model/WarningCondition.java deleted file mode 100644 index 97b3481..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/WarningCondition.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; -import java.math.BigDecimal; - -/** - * 预警规则-预警指标表 - */ -@Data -@TableName("warning_condition") -public class WarningCondition { - - /** - * 主键ID - */ - @TableId(type = IdType.AUTO) - private Long id; - - /** - * 规则ID - */ - @TableField("rule_id") - private Long ruleId; - - /** - * 条件排序字段 - */ - @TableField("_order") - private Integer order; - - /** - * 预警指标类型 - * 实时水位 REAL_WATER_LEVEL - * 预报洪峰流量 PEAK_FLOW - * 降雨量 RAINFALL - * 蓄水量 WATER_STORAGE - * 预报降雨量 FORECAST_RAINFALL - */ - @TableField("indicator_type") - private String indicatorType; - - /** - * 预警类型:FLOOD-洪水预警,DROUGHT-干旱预警 - */ - @TableField("warning_type") - private String warningType; - - /** - * 测点编码 - */ - @TableField("stcd") - private String stcd; - - /** - * 比较运算符 - */ - @TableField("_operator") - private String operator; - - /** - * 阈值 - */ - @TableField("threshold_value") - private BigDecimal thresholdValue; - - /** - * 时长/时段(小时) - */ - @TableField("duration_hours") - private Integer durationHours; - - /** - * 与前一个条件的关系:AND-且,OR-或(最后一个条件为空) - */ - @TableField("relation_type") - private String relationType; - - @TableField("warning_level") - private Integer warningLevel; - - @TableField("year") - private String year; - - @TableField(exist = false) - private Boolean isEnjoy = false;//该预警规则是否满足条件,默认不满足 -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/WarningRule.java b/src/main/java/com/gunshi/project/hsz/model/WarningRule.java deleted file mode 100644 index 34fb3f6..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/WarningRule.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import java.time.LocalDateTime; -import java.util.List; - -/** - * 预警规则主表 - */ -@Data -@TableName("warning_rule") -public class WarningRule { - - /** - * 主键ID - */ - @TableId(type = IdType.AUTO) - private Long id; - - - /** - * 规则名称 - */ - @TableField("rule_name") - private String ruleName; - - /** - * 预警类型:FLOOD-洪水预警,DROUGHT-干旱预警 - */ - @TableField("warning_type") - private String warningType; - - /** - * 状态:0-未启用,1-启用 - */ - @TableField("status") - private Integer status; - - /** - * 创建人 - */ - @TableField("create_name") - private String createName; - - /** - * 创建时间 - */ - @TableField("create_time") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createTime; - - - @TableField("warning_level") - private Integer warningLevel; - - /** - * 预警条件列表 - */ - @TableField(exist = false) - private List conditions; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/WarningRuleInfo.java b/src/main/java/com/gunshi/project/hsz/model/WarningRuleInfo.java deleted file mode 100644 index 4918803..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/WarningRuleInfo.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gunshi.project.hsz.model; - - -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 com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.time.LocalDateTime; -import java.util.List; - -@Data -@TableName("warning_rule_info") -public class WarningRuleInfo { - - /** - * 主键ID - */ - @TableId(type = IdType.AUTO) - private Long id; - - @TableField("rule_id") - private Long ruleId; - - /** - * 规则名称 - */ - @TableField("rule_name") - private String ruleName; - - /** - * 预警类型:FLOOD-洪水预警,DROUGHT-干旱预警 - */ - @TableField("warning_type") - private String warningType; - - - /** - * 创建人 - */ - @TableField("create_name") - private String createName; - - /** - * 创建时间 - */ - @TableField("create_time") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createTime; - - @TableField("rule_info") - private String ruleInfo; - - @TableField("warning_level") - private Integer warningLevel; - - /** - * 预警条件列表 - */ - @TableField(exist = false) - private List conditions; - - @TableField("status") - private Integer status; -} diff --git a/src/main/java/com/gunshi/project/hsz/model/WaterAlarm.java b/src/main/java/com/gunshi/project/hsz/model/WaterAlarm.java deleted file mode 100644 index b71f58a..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/WaterAlarm.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; - -/** - * 水情告警实体类 - * - * @author gunshi - * @version 1.0 - */ -@Data -@TableName("water_alarm") -@Schema(description = "水情告警信息") -public class WaterAlarm { - - /** - * 主键ID - */ - @TableId(value = "id") - @Schema(description = "主键ID") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 站点编码 - */ - @Schema(description = "站点编码") - private String stcd; - - /** - * 站点名称 - */ - @Schema(description = "站点名称") - private String stnm; - - /** - * 告警类型 - * 1-水库超汛限, 2-水库超设计, 3-水库超校核, 4-河道超警戒, 5-河道超保证 - */ - @Schema(description = "告警类型 1-水库超汛限, 2-水库超设计, 3-水库超校核, 4-河道超警戒, 5-河道超保证") - private Integer alarmType; - - /** - * 监测值 - */ - @Schema(description = "监测值") - private BigDecimal curValue; - - /** - * 告警值 - */ - @Schema(description = "告警值") - private BigDecimal alarmValue; - - /** - * 超告警值 - */ - @Schema(description = "超告警值") - private BigDecimal overValue; - - /** - * 告警时间 - */ - @Schema(description = "告警时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date alarmTime; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/WaterDispatch.java b/src/main/java/com/gunshi/project/hsz/model/WaterDispatch.java deleted file mode 100644 index 5734d68..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/WaterDispatch.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -/** - * 调度指令-实体类 - */ -@Data -@TableName("water_dispatch") -@Schema(description = "调度指令-实体类") -public class WaterDispatch { - - /** - * 主键ID - */ - @TableId("id") - @Schema(description = "主键ID") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - - @TableField("is_distribute") - @Schema(description = "是否下发 0 是 1 否") - private Integer isDistribute; - - - @TableField("dis_year") - private String disYear; - - /** - * 调度指令名称 - */ - @TableField("name") - @Schema(description = "调度指令名称") - @NotNull(message = "调度指令名称不能为空", groups = {Insert.class, Update.class}) - private String name; - - /** - * 调度开始时间 - */ - @TableField("dis_start") - @Schema(description = "调度开始时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @NotNull(message = "调度开始时间不能为空", groups = {Insert.class, Update.class}) - private Date disStart; - - /** - * 调度结束时间 - */ - @TableField("dis_end") - @Schema(description = "调度结束时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @NotNull(message = "调度结束时间不能为空", groups = {Insert.class, Update.class}) - private Date disEnd; - - /** - * 调度详细 - */ - @TableField("dis_detial") - @Schema(description = "调度详细") - private String disDetial; - - /** - * 执行人员id - */ - @TableField("exe_person_id") - @Schema(description = "执行人员id") - private String exePersonId; - - /** - * 执行人员名称 - */ - @TableField(exist = false) - @Schema(description = "执行人员名称") - private String exePersonName; - - /** - * 执行状态 0完成 1待下发 2执行中 - */ - @TableField("exe_status") - @Schema(description = "执行状态 0完成 1待下发 2执行中") - private Integer exeStatus; - - /** - * 填报时间 - */ - @TableField("fill_time") - @Schema(description = "填报时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date fillTime; - - /** - * 执行结果反馈 - */ - @TableField("res_fb") - @Schema(description = "执行结果反馈") - private String resFb; - - @TableField("res_person_id") - @Schema(description = "反馈人员id") - private String resPersonId; - - @TableField("res_person_name") - @Schema(description = "反馈人员名称") - private String resPersonName; - - @TableField("res_tm") - @Schema(description = "反馈时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date resTm; - - /** - * 是否完成 0是 1否 - */ - @TableField("is_compelete") - @Schema(description = "是否完成 0是 1否") - private Integer isCompelete; - - /** - * 文件关联列表(非数据库字段) - */ - @TableField(exist = false) - @Schema(description = "文件列表") - private List files; - - - @TableField(exist = false) - @Schema(description = "反馈文件列表") - private List resFiles; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/model/XlPlan.java b/src/main/java/com/gunshi/project/hsz/model/XlPlan.java deleted file mode 100644 index 5e65458..0000000 --- a/src/main/java/com/gunshi/project/hsz/model/XlPlan.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.gunshi.project.hsz.model; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.project.hsz.common.validate.markers.Insert; -import com.gunshi.project.hsz.common.validate.markers.Update; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * 计划表实体类 - */ -@Data -@TableName("xl_plan") -@Schema(description = "兴利计划-实体类") -public class XlPlan { - - @TableField(exist = false) - public final Integer MONTH = 0; - - @TableField(exist = false) - public final Integer YEAR = 1; - - /** - * 主键ID - */ - @TableId("id") - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - /** - * 计划名称 - */ - @TableField("plan_name") - @Schema(description = "计划名称") - @NotNull(message = "计划名称不能为空",groups = {Insert.class, Update.class}) - private String planName; - - /** - * 计划类型 0月度 1年度 - */ - @TableField("plan_type") - @Schema(description = "计划类型 0月度 1 年度") - @NotNull(message = "请选择计划类型",groups = {Insert.class, Update.class}) - private Integer planType; - - /** - * 计划年份/月份 - */ - @TableField("plan_date") - @Schema(description = "计划年份/月份") - @NotNull(message = "计划年份/月份请选择",groups = {Insert.class, Update.class}) - private String planDate; - - /** - * 灌溉计划供水量(万) - */ - @TableField("gg_water") - @Schema(description = "灌溉计划供水量(万)") - private BigDecimal ggWater; - - /** - * 生态计划供水量(万) - */ - @TableField("st_water") - @Schema(description = "生态计划供水量") - private BigDecimal stWater; - - /** - * 计划开始日期 - */ - @TableField("plan_begin") - @Schema(description = "计划开始日期") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date planBegin; - - /** - * 计划结束日期 - */ - @TableField("plan_end") - @Schema(description = "计划结束日期") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date planEnd; - - /** - * 计划编制单位 - */ - @TableField("bzdw_plan") - @Schema(description = "编制计划单位") - private String bzdwPlan; - - /** - * 编制日期 - */ - @TableField("bz_date") - @Schema(description = "编制日期") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date bzDate; - - - @TableField("fill_date") - @Schema(description = "填报时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date fillDate; - - /** - * 说明 - */ - @TableField("remark") - @Schema(description = "说明") - private String remark; - - - @TableField(exist = false) - private List files; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/schedule/SchedulerConfig.java b/src/main/java/com/gunshi/project/hsz/schedule/SchedulerConfig.java deleted file mode 100644 index 8e03f8c..0000000 --- a/src/main/java/com/gunshi/project/hsz/schedule/SchedulerConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.schedule; - - -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.SchedulingConfigurer; -import org.springframework.scheduling.config.ScheduledTaskRegistrar; - -/** - * @author cxw - * @description quartz配置 - * @classname SchedulerConfig.java - * @create 2024-07-30, 星期二, 9:41:34 - */ -@Configuration -public class SchedulerConfig implements SchedulingConfigurer { - - @Override - public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - // 注意:这里配置的是Spring的@Scheduled任务,而不是Quartz的Scheduler - // 对于Quartz,你通常不需要在这里做任何配置,除非你有特殊需求 - } -} diff --git a/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupHandler.java b/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupHandler.java deleted file mode 100644 index 3c188dc..0000000 --- a/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupHandler.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.gunshi.project.hsz.schedule; - -import com.gunshi.project.hsz.model.ForecastTask; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.quartz.CronScheduleBuilder; -import org.quartz.CronTrigger; -import org.quartz.JobBuilder; -import org.quartz.JobDataMap; -import org.quartz.JobDetail; -import org.quartz.JobKey; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.quartz.TriggerBuilder; -import org.quartz.TriggerKey; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.GetMapping; - -import java.math.BigDecimal; - - -/** - * @author cxw - * @description 定时任务动态操作 - * @classname TaskGroupHandler.java - * @create 2024-07-30, 星期二, 9:42:04 - */ -@Component -@Slf4j -public class TaskGroupHandler { - - @Resource - private Scheduler scheduler; - - /** - * 新增定时任务 - * @param jobId - */ - public void addCronJob(String jobId, ForecastTask forecastTask) { - try { - TriggerKey triggerKey = TriggerKey.triggerKey(jobId, "FloodForecast"); - - //构建job信息 - JobDetail job = JobBuilder.newJob(TaskGroupJob.class).withIdentity(jobId, "FloodForecast") - .withDescription("任务组编排").build(); - JobDataMap jobDataMap = job.getJobDataMap(); - jobDataMap.put("jobId", jobId); - jobDataMap.put("forecastTask", forecastTask); - //CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("cron的表达式"); - String cronExpression = ""; - // 小于1,就是0.5小时,转为分钟 - if(forecastTask.getTimeInterval().compareTo(BigDecimal.ONE) < 0){ - cronExpression = "0 0/" + Integer.valueOf(forecastTask.getTimeInterval().multiply(new BigDecimal(60)).setScale(0).toString()) + " * * * ?"; - }else if(forecastTask.getTimeInterval().compareTo(new BigDecimal(24)) == 0){ - cronExpression = "0 0 0 * * ?"; // 每天0点执行 - } else { - cronExpression = "0 0 */" + Integer.valueOf(forecastTask.getTimeInterval().setScale(0).toString()) + " * * ?"; - } - CronTrigger trigger = TriggerBuilder.newTrigger() - .withIdentity(triggerKey) - .startNow() - .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionFireAndProceed()) - .build(); - - //SimpleScheduleBuilder.simpleSchedule().withRepeatCount(0).withIntervalInSeconds(20)//每隔多少秒执行一次; withRepeatCount 设置重复的次数 - //.startNow().withSchedule(cronScheduleBuilder) - //交由Scheduler安排触发 - scheduler.scheduleJob(job, trigger); - if(!scheduler.isStarted()){ - scheduler.start(); - } - log.info("添加定时任务成功, startJob:{}", jobId); - } catch (SchedulerException e) { - log.error("添加定时任务异常, jobId:{}", jobId, e); - throw new RuntimeException(e); - } - } - - /** - * 删除任务 - * @param jobId - * @return - */ - public void removeCronJob(String jobId) { - try { - // TriggerKey 定义了trigger的名称和组别 ,通过任务名和任务组名获取TriggerKey - TriggerKey triggerKey = TriggerKey.triggerKey(jobId,"FloodForecast"); - // 停止触发器 - scheduler.resumeTrigger(triggerKey); - // 移除触发器 - scheduler.unscheduleJob(triggerKey); - // 移除任务 - scheduler.deleteJob(JobKey.jobKey(jobId,"FloodForecast")); - log.info("删除定时任务成功, jobId:{}", jobId); - } catch (SchedulerException e) { - log.error("删除定时任务异常, jobId:{}", jobId, e); - } - } - - /** - * 暂停定时任务 - * @param jobId - */ - public void pauseJob(String jobId) { - try { - JobKey jobKey = JobKey.jobKey(jobId,"FloodForecast"); - // 暂停任务 - scheduler.pauseJob(jobKey); - log.info("暂停定时任务成功, jobId:{}", jobId); - } catch (SchedulerException e) { - log.error("暂停定时任务异常, jobId:{}", jobId, e); - } - } - - /** - * 继续定时任务 - * @param jobId - */ - @GetMapping("/resumeJob") - public void resumeJob(String jobId) { - try { - // 通过任务名和任务组名获取jobKey - JobKey jobKey = JobKey.jobKey(jobId,"FloodForecast"); - // 继续任务 - scheduler.resumeJob(jobKey); - log.info("继续定时任务成功, jobId:{}", jobId); - } catch (SchedulerException e) { - log.error("继续定时任务异常, jobId:{}", jobId, e); - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupJob.java b/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupJob.java deleted file mode 100644 index 66934e5..0000000 --- a/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupJob.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.gunshi.project.hsz.schedule; - -import cn.hutool.core.map.MapUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.gunshi.project.hsz.entity.vo.ForecastResultVo; -import com.gunshi.project.hsz.model.AttResBase; -import com.gunshi.project.hsz.model.ForecastProject; -import com.gunshi.project.hsz.model.ForecastTask; -import com.gunshi.project.hsz.model.ForecastUseparam; -import com.gunshi.project.hsz.service.AttResBaseService; -import com.gunshi.project.hsz.service.ForecastProjectService; -import com.gunshi.project.hsz.service.ForecastResultsService; -import com.gunshi.project.hsz.service.ForecastTaskService; -import com.gunshi.project.hsz.service.ForecastUseparamService; -import lombok.extern.slf4j.Slf4j; -import org.quartz.Job; -import org.quartz.JobDataMap; -import org.quartz.JobExecutionContext; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Map; - -/** - * @author cxw - * @description 实现具体逻辑 - * @classname TaskGroupJob.java - * @create 2024-07-30, 星期二, 9:43:17 - */ -@Component -@Slf4j -public class TaskGroupJob implements Job { - - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - private static SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm:00"); - - private static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyyMMddHHmm"); - - @Autowired - private ForecastResultsService forecastResultsService; - - @Autowired - private ForecastUseparamService forecastUseparamService; - - @Autowired - private AttResBaseService attResBaseService; - - @Autowired - private ForecastProjectService forecastProjectService; - @Autowired - private ForecastTaskService forecastTaskService; - - @Override - public void execute(JobExecutionContext context) { - Date nowDate = new Date(); - JobDataMap jdMap = context.getJobDetail().getJobDataMap(); - String jobId = (String) jdMap.get("jobId"); - ForecastTask forecastTask = (ForecastTask) jdMap.get("forecastTask"); - log.info("{}----TaskGroupJob-计划执行开始===>jobId:{}", sdf.format(nowDate), jobId); - forecastTask.setLastExcuteTm(nowDate); - try { - // 根据执行时间、预热期、预见期获取对应的预报、开始、结束时间 - Date nowTime = sdfMinute.parse(sdfMinute.format(nowDate)); - Date forecastTime = nowTime; - Date startTime; - Date endTime; - Integer forecastPeriod = forecastTask.getForecastPeriod();// 预见期:小时 - Integer forecastWarm = forecastTask.getForecastWarm();// 预热期:天 - Calendar calendar = Calendar.getInstance(); - calendar.setTime(nowTime); - // 预报时间就是当前时间 - forecastTask.setNowTime(nowTime); - forecastTask.setForecastTime(nowTime); - // 预热期:往前推 天 - calendar.add(calendar.DATE, - forecastWarm); - startTime = calendar.getTime(); - forecastTask.setStartTime(startTime); - // 预见期:先恢复,再往后推 小时 - calendar.setTime(nowTime); - calendar.add(calendar.HOUR_OF_DAY, forecastPeriod); - endTime = calendar.getTime(); - forecastTask.setEndTime(endTime); - List voList = forecastResultsService.autoFloodForecast(forecastTask); - // 符合条件就保存到数据库 - if (CollectionUtils.isNotEmpty(voList)) { - Map map = forecastUseparamService.getMap(new QueryWrapper().eq("param_code", "ydgdyjz"));// 获取安全值 - AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>());// 获取堰顶高程 - if (MapUtil.isNotEmpty(map) && ObjectUtils.isNotEmpty(attResBase) && ObjectUtils.isNotEmpty(attResBase.getWcrstel())) { - BigDecimal ydgdyjz = new BigDecimal(map.get("param_value").toString()); - BigDecimal wcrstel = attResBase.getWcrstel(); - Boolean isSave = false; - for (ForecastResultVo vo : voList) { - // 当计算的预报最高水位离堰顶高程小于此安全值,或者超过堰顶高度的值时,发送系统内消息提示。同时自动滚动预报保存方案结果 - if ((vo.getYcSwHValue().add(ydgdyjz)).compareTo(wcrstel) > 0) { - isSave = true; - break; - } - } - if (isSave) { - ForecastProject forecastProject = new ForecastProject(); - forecastProject.setId(IdWorker.getId()); - forecastProject.setName("未来" + forecastPeriod + "小时洪水预报-".concat(sdfTime.format(nowTime))); - forecastProject.setType("1"); - forecastProject.setForecastTm(forecastTime); - forecastProject.setProjectTm(nowTime); - forecastProject.setStartTm(startTime); - forecastProject.setEndTm(endTime); - forecastProject.setUserId("1_系统"); - forecastProject.setForecastPeriod(forecastPeriod); - forecastProject.setForecastWarm(forecastWarm); - forecastProject.setTimeInterval(forecastTask.getTimeInterval()); - forecastProject.setTaskId(forecastTask.getId()); - forecastProject.setVoList(voList); - boolean save = forecastProjectService.save(forecastProject); - if (save) { - forecastProjectService.saveForecastResults(forecastProject); - forecastTask.setLastResultsaveTm(nowDate); - } - } - } - } - forecastTaskService.updateById(forecastTask); - } catch (Exception e) { - throw new RuntimeException(e); - } - log.info("{}----TaskGroupJob-计划执行结束===>jobId:{}", sdf.format(new Date()), jobId); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupJobRunner.java b/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupJobRunner.java deleted file mode 100644 index 5fdb00e..0000000 --- a/src/main/java/com/gunshi/project/hsz/schedule/TaskGroupJobRunner.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.gunshi.project.hsz.schedule; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.gunshi.project.hsz.model.ForecastTask; -import com.gunshi.project.hsz.service.ForecastTaskService; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.context.annotation.Profile; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -/** - * @author cxw - * @description 任务预热,预先加载数据库已经配置好的任务 - * @classname TaskGroupJobRunner.java - * @create 2024-07-30, 星期二, 9:42:39 - */ -@Component -@Slf4j -@Profile("prod") -public class TaskGroupJobRunner implements CommandLineRunner { - - @Resource - private TaskGroupHandler taskGroupHandler; - - @Autowired - private ForecastTaskService forecastTaskService; - - @Override - public void run(String... args) { - // 初始加载数据库里状态为正常的定时任务 - List taskList = forecastTaskService.list(new QueryWrapper().eq("status", "0")); - if (CollectionUtils.isNotEmpty(taskList)) { - Map jobMap = taskList.stream() - .collect(Collectors.toMap(ForecastTask::getId, Function.identity(), (key1, key2)->key2)); - for (Map.Entry entry : jobMap.entrySet()) { - taskGroupHandler.addCronJob(String.valueOf(entry.getKey()), entry.getValue()); - } - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/AbstractModelWithAttachService.java b/src/main/java/com/gunshi/project/hsz/service/AbstractModelWithAttachService.java deleted file mode 100644 index 174dfba..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AbstractModelWithAttachService.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.db.dao.BaseDao; -import com.gunshi.db.dao.IMapper; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; - -/** - * 类描述 - * - * @author lyf - * @version 1.0.0 - * @since 2024-03-19 - */ -public abstract class AbstractModelWithAttachService, AutoDao extends BaseDao, - AttachModel, AttachModelAutoMapper extends IMapper, AttachModelAutoDao extends BaseDao> { - abstract AutoDao getAutoDao(); - - abstract AttachModelAutoDao getAttachFileAutoDao(); - - abstract List createAttachList(Model model); - - - abstract Object getModelId(Model model); - - public abstract String getAttachBzIdName(); - - @Transactional - public boolean save(Model model) { - List attachList = createAttachList(model); - if (attachList != null) { - getAttachFileAutoDao().saveBatch(attachList); - } - - return getAutoDao().save(model); - } - - @Transactional - public boolean updateById(Model model) { - List attachList = getAttachFileAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), getModelId(model))); - getAttachFileAutoDao().removeByIds(attachList); - - attachList = createAttachList(model); - getAttachFileAutoDao().saveBatch(attachList); - - return getAutoDao().updateById(model); - } - - @Transactional - public boolean removeById(Serializable id) { - List attachList = getAttachFileAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), id)); - getAttachFileAutoDao().removeByIds(attachList); - - return getAutoDao().removeById(id); - } - - public Model getById(Serializable id) { - return getAutoDao().getById(id); - } - - public Page getPage(Page page) { - return getAutoDao().page(page); - } - - public AttachModel getAttachByAttachId(Serializable attachId) { - return getAttachFileAutoDao().getById(attachId); - } - - public List getAttachListByModelId(Serializable modelId) { - return getAttachFileAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), modelId)); - } - - - public interface GetFileIds { - List getFileIds(); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/AlarmSetService.java b/src/main/java/com/gunshi/project/hsz/service/AlarmSetService.java deleted file mode 100644 index 613c2ea..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AlarmSetService.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.so.AlarmSetPageSo; -import com.gunshi.project.hsz.mapper.AlarmSetMapper; -import com.gunshi.project.hsz.model.AlarmSet; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AlarmSetService extends ServiceImpl { - public Page queryPage(AlarmSetPageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (page.getStcd() != null) { - queryWrapper.eq(AlarmSet::getStcd, page.getStcd()); - } - queryWrapper.orderByDesc(AlarmSet::getCreateDate); - Page alarmSetPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); - return alarmSetPage; - } - - public boolean saveData(AlarmSet dto) { - dto.setId(IdWorker.getId()); - dto.setCreateDate(new Date()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AlarmSet::getStcd, dto.getStcd()); - AlarmSet alarmSet = this.baseMapper.selectOne(queryWrapper); - if(alarmSet != null){ - throw new IllegalArgumentException("对不起,该站点的告警设置已存在,请勿重复添加"); - } - return save(dto); - } - - public List listStation() { - return this.baseMapper.listStation(); - } - - public boolean updateInfo(AlarmSet dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.ne(AlarmSet::getId, dto.getId()); - queryWrapper.eq(AlarmSet::getStcd, dto.getStcd()); - AlarmSet alarmSet = this.baseMapper.selectOne(queryWrapper); - if(alarmSet != null){ - throw new IllegalArgumentException("对不起站点:" + dto.getStcd() +"已存在"); - } - return updateById(dto); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/AppVersionRecordService.java b/src/main/java/com/gunshi/project/hsz/service/AppVersionRecordService.java deleted file mode 100644 index 9a83e8a..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AppVersionRecordService.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AppVersionRecordMapper; -import com.gunshi.project.hsz.model.AppVersionRecord; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; - -import java.util.Date; -import java.util.List; - -/** - * 描述: APP版本记录 - * author: xusan - * date: 2024-11-12 10:14:50 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AppVersionRecordService extends ServiceImpl -{ - - public boolean insertData(String version,String versionDesc,String url) { - AppVersionRecord record = new AppVersionRecord(); - record.setId(IdWorker.getId()); - record.setVersion(version); - record.setVersionDesc(versionDesc); - record.setUrl(url); - record.setCreateTime(new Date()); - return this.baseMapper.insert(record) > 0; - } - - public AppVersionRecord getLatest() { - AppVersionRecord record = null; - List list = this.lambdaQuery().orderByDesc(AppVersionRecord::getCreateTime).list(); - if(!CollectionUtils.isEmpty(list)){ - record = list.get(0); - } - return record; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessCategoryService.java b/src/main/java/com/gunshi/project/hsz/service/AssessCategoryService.java deleted file mode 100644 index 5327887..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessCategoryService.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AssessCategoryMapper; -import com.gunshi.project.hsz.mapper.AssessIndicatorMapper; -import com.gunshi.project.hsz.model.AssessCategory; -import com.gunshi.project.hsz.model.AssessIndicator; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.Objects; - -/** - * 描述: 考核类目 - * author: xusan - * date: 2024-09-03 17:46:30 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessCategoryService extends ServiceImpl -{ - - @Autowired - private AssessIndicatorMapper indicatorMapper; - - public AssessCategory saveData(AssessCategory dto) { - dto.setId(IdWorker.getId()); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderBy(true, false, "order_index"); - AssessCategory lastOne = super.getOne(queryWrapper, false); - int order = 0; - if (lastOne == null) { - order = 1; - } else { - order = lastOne.getOrderIndex() + 1; - } - dto.setOrderIndex(order); - this.save(dto); - return dto; - } - - public AssessCategory updateData(AssessCategory dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - this.updateById(dto); - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - //判断是否关联指标 - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(AssessIndicator::getCategoryId,id); - if(indicatorMapper.selectCount(wrapper) > 0){ - throw new IllegalArgumentException("请先删除关联的考核指标"); - } - return this.removeById(id); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessIndicatorRatingService.java b/src/main/java/com/gunshi/project/hsz/service/AssessIndicatorRatingService.java deleted file mode 100644 index 239ab8f..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessIndicatorRatingService.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AssessIndicatorRatingMapper; -import com.gunshi.project.hsz.model.AssessIndicatorRating; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 考核指标评分细则 - * author: xusan - * date: 2024-09-03 17:47:17 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessIndicatorRatingService extends ServiceImpl -{ - - public void saveRating(List indicatorRatings,Long id) { - indicatorRatings.stream().forEach(o->{ - o.setId(IdWorker.getId()); - o.setIndicatorId(id); - }); - this.saveBatch(indicatorRatings); - } - - public void updateRating(List indicatorRatings, Long id) { - delRating(id); - saveRating(indicatorRatings,id); - } - - public void delRating(Long indicatorId) { - this.remove(new QueryWrapper().eq("indicator_id",indicatorId)); - } - - public List queryRatingList(List ids) { - return this.list(new QueryWrapper().in("indicator_id",ids)); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessIndicatorService.java b/src/main/java/com/gunshi/project/hsz/service/AssessIndicatorService.java deleted file mode 100644 index 1657910..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessIndicatorService.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.dto.InspectItemDto; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.mapper.AssessIndicatorMapper; -import com.gunshi.project.hsz.mapper.AssessTemplateIndicatorRelMapper; -import com.gunshi.project.hsz.model.AssessIndicator; -import com.gunshi.project.hsz.model.AssessIndicatorRating; -import com.gunshi.project.hsz.model.AssessTemplateIndicatorRel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 考核指标 - * author: xusan - * date: 2024-09-03 17:46:56 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessIndicatorService extends ServiceImpl { - @Autowired - private AssessIndicatorRatingService indicatorRatingService; - - @Autowired - private AssessTemplateIndicatorRelMapper relMapper; - - public String startStop(InspectItemDto dto) { - Integer status = dto.getStatus(); - AssessIndicator indicator = super.getById(dto.getId()); - if (indicator == null) { - throw new IllegalArgumentException("当前数据不存在"); - } - indicator.setStatus(status); - boolean flag = super.updateById(indicator); - if (flag) { - return status == 0 ? "启用成功" : "禁用成功"; - } - return status == 0 ? "启用失败" : "禁用失败"; - } - - public Page pageQuery(AttCctvBasePage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getMenuId())) { - query.eq(AssessIndicator::getCategoryId, page.getMenuId()); - } - query.orderByAsc(AssessIndicator::getStatus).orderByAsc(AssessIndicator::getOrderIndex); - Page res = this.page(page.getPageSo().toPage(), query); - if (res.getRecords() != null && res.getRecords().size() > 0) { - fillUsedInfo(res.getRecords()); - fillRating(res.getRecords()); - } - return res; - } - - private void fillUsedInfo(List records) { - List ids = records.stream().map(AssessIndicator::getId).collect(Collectors.toList()); - List list = relMapper.selectList(new QueryWrapper().in("indicator_id", ids)); - Map map = list.stream().collect(Collectors.groupingBy(AssessTemplateIndicatorRel::getIndicatorId, Collectors.counting())); - for (AssessIndicator record : records) { - record.setIsUsed(map.containsKey(record.getId()) ? 1 : 0); - } - } - - public void fillRating(List records) { - List ids = records.stream().map(AssessIndicator::getId).collect(Collectors.toList()); - List relList = indicatorRatingService.queryRatingList(ids); - Map> map = relList.stream().collect(Collectors.groupingBy(AssessIndicatorRating::getIndicatorId)); - for (AssessIndicator record : records) { - record.setIndicatorRatings(map.get(record.getId())); - } - } - - public AssessIndicator saveData(AssessIndicator dto) { - dto.setId(IdWorker.getId()); - dto.setStatus(0); - this.save(dto); - indicatorRatingService.saveRating(dto.getIndicatorRatings(),dto.getId()); - return dto; - } - - public AssessIndicator updateData(AssessIndicator dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - this.updateById(dto); - indicatorRatingService.updateRating(dto.getIndicatorRatings(),dto.getId()); - return dto; - } - - public Boolean delData(Long id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - Long count = relMapper.selectCount(new QueryWrapper().eq("indicator_id", id)); - if(count > 0){ - throw new IllegalArgumentException("该考核指标已被使用,不可删除"); - } - indicatorRatingService.delRating(id); - return this.removeById(id); - } - - public Page choosePage(AttCctvBasePage page) { - return this.baseMapper.choosePage(page.getPageSo().toPage(),page); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessObjectRatingService.java b/src/main/java/com/gunshi/project/hsz/service/AssessObjectRatingService.java deleted file mode 100644 index e4fd11b..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessObjectRatingService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AssessObjectRatingMapper; -import com.gunshi.project.hsz.model.AssessObjectRating; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 考核对象指标得分详情 - * author: xusan - * date: 2024-09-10 10:44:14 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessObjectRatingService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessObjectService.java b/src/main/java/com/gunshi/project/hsz/service/AssessObjectService.java deleted file mode 100644 index 2e7c0e2..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessObjectService.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AssessObjectMapper; -import com.gunshi.project.hsz.model.AssessObject; -import com.gunshi.project.hsz.model.AssessTeam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.List; - -/** - * 描述: 考核对象 - * author: xusan - * date: 2024-09-05 14:19:30 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessObjectService extends ServiceImpl -{ - @Autowired - private AssessTeamService assessTeamService; - - public void saveObject(List assessObjects,List assessTeams, Long taskId) { - List teams = new ArrayList<>(); - assessObjects.stream().forEach(o->{ - long objectId = IdWorker.getId(); - o.setId(objectId); - o.setTaskId(taskId); - o.setStatus(0); - for(int i =0 ;i ().eq("task_id",taskId)); - this.remove(new QueryWrapper().eq("task_id",taskId)); - } - - public void updateObject(List assessObjects,List assessTeams, Long taskId) { - this.delObject(taskId); - this.saveObject(assessObjects,assessTeams,taskId); - } - - public List getObject(Long taskId) { - List list = this.list(new QueryWrapper().eq("task_id",taskId)); - return list; - } - - public List getTeam(Long taskId) { - List list = assessTeamService.list(new QueryWrapper().eq("task_id",taskId)); - return list; - } - - public void updateTeams(List teams) { - assessTeamService.updateBatchById(teams); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessTaskService.java b/src/main/java/com/gunshi/project/hsz/service/AssessTaskService.java deleted file mode 100644 index 3b4a70b..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessTaskService.java +++ /dev/null @@ -1,272 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.so.AssessTaskPageSo; -import com.gunshi.project.hsz.entity.vo.AssessResultVo; -import com.gunshi.project.hsz.mapper.AssessObjectRatingMapper; -import com.gunshi.project.hsz.mapper.AssessTaskMapper; -import com.gunshi.project.hsz.mapper.AssessTemplateMapper; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.ExcelUtil; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 考核任务 - * author: xusan - * date: 2024-09-05 14:19:04 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessTaskService extends ServiceImpl -{ - @Autowired - private AssessObjectService assessObjectService; - - @Autowired - private FileAssociationsService fileService; - - @Autowired - private AssessTemplateMapper templateMapper; - - @Autowired - private AssessObjectRatingMapper objectRatingMapper; - - @Autowired - private AssessTeamRatingService teamRatingService; - - @Autowired - private MessageCenterService messageCenterService; - - public AssessTask saveData(AssessTask dto) { - dto.setId(IdWorker.getId()); - dto.setStatus(0); - dto.setCreateTime(new Date()); - assessObjectService.saveObject(dto.getAssessObjects(),dto.getAssessTeams(),dto.getId()); - this.save(dto); - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - return dto; - } - - public String getGroupId() { - return "assessTask"; - } - - public Boolean delData(Long id) { - AssessTask task = this.getById(id); - if (Objects.isNull(task)) { - throw new IllegalArgumentException("当前数据不存在"); - } - if(task.getStatus() != 0){ - throw new IllegalArgumentException("只能删除未启动的考核任务"); - } - fileService.deleteFile(getGroupId(),id.toString()); - assessObjectService.delObject(id); - return this.removeById(id); - } - - public AssessTask updateData(AssessTask dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - assessObjectService.updateObject(dto.getAssessObjects(),dto.getAssessTeams(),dto.getId()); - } - return dto; - } - - public AssessTask detail(Long id) { - AssessTask task = this.getById(id); - AssessTemplate template = templateMapper.selectById(task.getTemplateId()); - task.setTemplateName(template.getTemplateName()); - task.setFiles(fileService.getFiles(getGroupId(),id.toString())); - List team = assessObjectService.getTeam(id); - task.setAssessTeams(team.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(AssessTeam::getTeamUserId))),ArrayList::new))); - task.setAssessObjects(assessObjectService.getObject(id)); - return task; - } - - public Page listPage(AssessTaskPageSo page) { - Page res = this.baseMapper.listPage(page.getPageSo().toPage(), page); - if (res.getRecords() != null && res.getRecords().size() > 0) { - for (AssessTask record : res.getRecords()) { - record.setAssessObjects(assessObjectService.getObject(record.getId())); - } - } - return res; - } - - public String start(Long id) { - AssessTask task = this.getById(id); - task.setStatus(1); - this.updateById(task); - //任务中的考核对象 - List objects = assessObjectService.getObject(id); - objects.stream().forEach(o->o.setStatus(1)); - assessObjectService.updateBatchById(objects); - //任务中的考核成员 - List teams = assessObjectService.getTeam(id); - teams.stream().forEach(o->o.setStatus(1)); - assessObjectService.updateTeams(teams); - //考核指标 - List ratings = new ArrayList<>(); - List teamUserIds = teams.stream().map(AssessTeam::getTeamUserId).distinct().collect(Collectors.toList()); - List messages = teamUserIds.stream().map(o->{ - MessageCenter center = new MessageCenter(); - center.setPublishUserId(task.getCreateUserId()); - center.setPublishUserName(task.getCreateUserName()); - center.setReceiveUserId(o); - center.setTitle("评分任务"); - center.setContent("您收到一条考核评分任务的提醒:"+task.getTaskName()+",请及时处理。"); - return center; - }).collect(Collectors.toList()); - List indicatorIds = this.baseMapper.queryIndicators(task.getTemplateId()); - for(AssessTeam team : teams){ - for(AssessIndicator indicator : indicatorIds){ - AssessTeamRating rating = new AssessTeamRating(); - rating.setId(IdWorker.getId()); - rating.setTeamId(team.getId()); - rating.setIndicatorId(indicator.getId()); - rating.setStandardScore(indicator.getStandardScore()); - ratings.add(rating); - } - } - teamRatingService.saveBatch(ratings); - messageCenterService.insertMessage(messages); - List list = new ArrayList<>(); - for(AssessObject object : objects){ - for(AssessIndicator indicator : indicatorIds){ - AssessObjectRating objectRating = new AssessObjectRating(); - objectRating.setId(IdWorker.getId()); - objectRating.setObjectId(object.getId()); - objectRating.setIndicatorId(indicator.getId()); - objectRating.setStandardScore(indicator.getStandardScore()); - list.add(objectRating); - } - } - teamRatingService.saveObjectRating(list); - return "启动成功"; - } - - public Page myTodo(AssessTaskPageSo page) { - Page res = this.baseMapper.myTodo(page.getPageSo().toPage(),page); - if (res.getRecords() != null && res.getRecords().size() > 0) { - fillObject(res.getRecords(),page.getUserId()); - } - return res; - } - - private void fillObject(List records,Long userId) { - for (AssessTask record : records) { - List list = this.baseMapper.selectObject(record.getId(),userId); - record.setAssessObjects(list); - } - } - - public Page myDone(AssessTaskPageSo page) { - List taskIds = this.baseMapper.myDoneTask(page.getUserId()); - if (CollectionUtils.isEmpty(taskIds)) { - return null; - } - Page res = this.baseMapper.myDone(page.getPageSo().toPage(), page,taskIds); - if (res.getRecords() != null && res.getRecords().size() > 0) { - fillObject(res.getRecords(),page.getUserId()); - } - return res; - } - - public String pass(Long id) { - AssessTask task = this.getById(id); - task.setStatus(3); - this.updateById(task); - return "审核通过"; - } - - public String cancel(Long id) { - AssessTask task = this.getById(id); - task.setStatus(4); - this.updateById(task); - return "作废成功"; - } - - public String reject(Long id) { - AssessTask task = this.getById(id); - task.setStatus(1); - this.updateById(task); - //任务中的考核对象 - List objects = assessObjectService.getObject(id); - objects.stream().forEach(o->o.setStatus(9)); - assessObjectService.updateBatchById(objects); - List objectIds = objects.stream().map(AssessObject::getId).collect(Collectors.toList()); - objectRatingMapper.delete(new QueryWrapper().in("object_id",objectIds)); - //任务中的考核成员 - List teams = assessObjectService.getTeam(id); - teams.stream().forEach(o->o.setStatus(1)); - assessObjectService.updateTeams(teams); - return "驳回评分成功"; - } - - public List result(Long id) { - List list = this.baseMapper.result(id); - list.stream().forEach(o->o.setDeductScore(new BigDecimal(o.getStandardScore()).subtract(o.getAssessScore()))); - return list.stream().filter(o->o.getDeductScore().compareTo(new BigDecimal(0)) > 0).collect(Collectors.toList()); - } - - public void resultExport(Long id, HttpServletResponse response) { - List list = this.result(id); - ExcelUtil.exportExcel(list,"考核结果",AssessResultVo.class,1,new int[]{0,4},response,"考核结果"); - } - - public List resultStat(MonthRangeSo monthRangeSo) { - List list = this.baseMapper.resultStat(monthRangeSo); - if (CollectionUtils.isNotEmpty(list)) { - for (AssessTask record : list) { - record.setAssessObjects(assessObjectService.getObject(record.getId())); - } - } - return list; - } - - public Map levelStat(MonthRangeSo monthRangeSo) { - List list = this.resultStat(monthRangeSo); - if(CollectionUtils.isEmpty(list)){ - return new HashMap<>(); - } - List objectList = list.stream().map(AssessTask::getAssessObjects).flatMap(List::stream).collect(Collectors.toList()); - Map collect = objectList.stream().collect(Collectors.groupingBy(AssessObject::getAssessLevel, Collectors.counting())); - if(!collect.containsKey(1)){ - //表示优秀的为0 - collect.put(1,0L); - } - if(!collect.containsKey(2)){ - //表示良好的为0 - collect.put(2,0L); - } - if(!collect.containsKey(3)){ - //表示合格的为0 - collect.put(3,0L); - } - if(!collect.containsKey(4)){ - //表示不合格的为0 - collect.put(4,0L); - } - return collect; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessTeamRatingService.java b/src/main/java/com/gunshi/project/hsz/service/AssessTeamRatingService.java deleted file mode 100644 index eb907b0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessTeamRatingService.java +++ /dev/null @@ -1,253 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.so.AssessTaskPageSo; -import com.gunshi.project.hsz.entity.vo.AssessRatingVo; -import com.gunshi.project.hsz.entity.vo.AssessRectifyVo; -import com.gunshi.project.hsz.entity.vo.AssessScoreVo; -import com.gunshi.project.hsz.mapper.*; -import com.gunshi.project.hsz.model.*; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 考核评分详情 - * author: xusan - * date: 2024-09-05 14:20:04 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessTeamRatingService extends ServiceImpl { - @Autowired - private FileAssociationsService fileService; - - @Autowired - private AssessObjectMapper objectMapper; - - @Autowired - private AssessTaskMapper taskMapper; - - @Autowired - private AssessTeamMapper teamMapper; - - @Autowired - private AssessTemplateMapper templateMapper; - - @Autowired - private AssessObjectRatingService assessObjectRatingService; - - @Autowired - private AssessIndicatorRatingService indicatorRatingService; - - public Boolean saveScore(AssessScoreVo vo) { - return commonScore(vo, 9); - } - - private Boolean commonScore(AssessScoreVo vo, Integer status) { - List ratings = vo.getRatings(); - Long teamId = ratings.get(0).getTeamId(); - this.delData(teamId); - for (AssessTeamRating rating : ratings) { - rating.setId(IdWorker.getId()); - rating.setRectifyStatus(0); - fileService.save(rating.getFiles(), rating.getId().toString(), getGroupId(), getScoreType()); - } - AssessTask task = taskMapper.selectById(vo.getTaskId()); - //更新该考核人员对考核对象的状态为已评分 - AssessTeam assessTeam = teamMapper.selectById(teamId); - assessTeam.setStatus(status); - //获取模板信息 - AssessTemplate template = templateMapper.selectById(task.getTemplateId()); - //根据总得分计算等级 - Integer level = calcLevel(template, vo.getScore()); - assessTeam.setAssessScore(vo.getScore()); - assessTeam.setAssessLevel(level); - teamMapper.updateById(assessTeam); - Boolean res = this.saveBatch(ratings); - if (status == 2) { - updateObjectAndTask(assessTeam.getObjectId(), vo.getTaskId(), template, task); - } - return res; - } - - public Boolean score(AssessScoreVo vo) { - return commonScore(vo, 2); - } - - private void delData(Long teamId) { - List teamRatings = this.list(new QueryWrapper().eq("team_id", teamId)); - if (CollectionUtils.isNotEmpty(teamRatings)) { - List ratingIds = teamRatings.stream().map(AssessTeamRating::getId).map(Objects::toString).collect(Collectors.toList()); - fileService.remove(new QueryWrapper().in("business_id", ratingIds)); - this.remove(new QueryWrapper().eq("team_id", teamId)); - } - } - - private Integer calcLevel(AssessTemplate template, BigDecimal score) { - BigDecimal excellentScore = template.getExcellentScore(); - BigDecimal goodScore = template.getGoodScore(); - BigDecimal passScore = template.getPassScore(); - if (score.compareTo(excellentScore) >= 0) { - return 1; - } else if (score.compareTo(goodScore) >= 0 && score.compareTo(excellentScore) < 0) { - return 2; - } else if (score.compareTo(passScore) >= 0 && score.compareTo(goodScore) < 0) { - return 3; - } else { - return 4; - } - } - - private void updateObjectAndTask(Long objectId, Long taskId, AssessTemplate template, AssessTask task) { - //先判断该次评分是否是该考核对象的最后一次评分 - //如果为最后一次评分,就要计算该考核对象的最终得分 - List teams = teamMapper.selectList(new QueryWrapper().eq("object_id", objectId).eq("task_id", taskId)); - List finishTeams = teams.stream().filter(o -> o.getStatus() == 2).collect(Collectors.toList()); - if (teams.size() == finishTeams.size()) { - Integer scoreWay = task.getScoreWay(); - List teamIds = finishTeams.stream().map(AssessTeam::getId).collect(Collectors.toList()); - BigDecimal assessScore = calcScore(scoreWay, teamIds, objectId); - Integer level = calcLevel(template, assessScore); - AssessObject object = objectMapper.selectById(objectId); - object.setStatus(2); - object.setAssessScore(assessScore); - object.setAssessLevel(level); - objectMapper.updateById(object); - //判断该考核任务是否存在未打分的对象,不存在则更新考核任务的状态为已完成 - Long taskCount = objectMapper.selectCount(new QueryWrapper().eq("task_id", taskId).eq("status", 1)); - if (taskCount == 0) { - task.setStatus(2); - taskMapper.updateById(task); - } - } - } - - private BigDecimal calcScore(Integer scoreWay, List teamIds, Long objectId) { - assessObjectRatingService.remove(new QueryWrapper().eq("object_id", objectId)); - final BigDecimal[] score = {new BigDecimal(0)}; - List ratings = this.list(new QueryWrapper().in("team_id", teamIds)); - Map> map = ratings.stream().collect(Collectors.groupingBy(AssessTeamRating::getIndicatorId, Collectors.mapping(AssessTeamRating::getAssessScore, Collectors.toList()))); - Map> standardMap = ratings.stream().collect(Collectors.groupingBy(AssessTeamRating::getIndicatorId, Collectors.mapping(AssessTeamRating::getStandardScore, Collectors.toList()))); - List list = new ArrayList<>(); - map.entrySet().forEach(o -> { - List value = o.getValue(); - AssessObjectRating objectRating = new AssessObjectRating(); - objectRating.setId(IdWorker.getId()); - objectRating.setObjectId(objectId); - objectRating.setIndicatorId(o.getKey()); - objectRating.setStandardScore(standardMap.get(o.getKey()).get(0)); - if (scoreWay == 1) { - BigDecimal val = value.stream().min(BigDecimal::compareTo).get(); - objectRating.setAssessScore(val); - score[0] = score[0].add(val); - } else { - BigDecimal vide = value.stream().reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(value.size()), 2, RoundingMode.HALF_UP); - objectRating.setAssessScore(vide); - score[0] = score[0].add(vide); - } - list.add(objectRating); - }); - assessObjectRatingService.saveBatch(list); - return score[0]; - } - - public void saveObjectRating(List list) { - assessObjectRatingService.saveBatch(list); - } - - public String getGroupId() { - return "assessTeamRating"; - } - - public String getScoreType() { - return "assessScore"; - } - - public String getRectifyType() { - return "assessRectify"; - } - - public List doDetail(Long teamId) { - List list = this.baseMapper.scoreDetail(teamId); - fillRating(list); - return list; - } - - - public Map> scoreDetail(Long objectId) { - List list = this.baseMapper.scoreByObjectId(objectId); - fillRating(list); - return list.stream().collect(Collectors.groupingBy(AssessTeamRating::getIndicatorId)); - } - - private void fillRating(List list) { - List relList = indicatorRatingService.queryRatingList(list.stream().map(AssessRatingVo::getIndicatorId).distinct().collect(Collectors.toList())); - Map> map = relList.stream().collect(Collectors.groupingBy(AssessIndicatorRating::getIndicatorId)); - for (AssessRatingVo vo : list) { - vo.setIndicatorRatings(map.get(vo.getIndicatorId())); - if (vo.getIsNeedRectify() != null && vo.getIsNeedRectify() == 1) { - vo.setFiles(fileService.queryFileList(vo.getId().toString(), getGroupId(), getScoreType())); - } - } - } - - public Page listPage(AssessTaskPageSo page) { - /* 若以后需要根据当前登录人查询,则取消注释 - SecurityContext context = SecurityContextHolder.getContext(); - Authentication auth = context.getAuthentication(); - Object principal = auth.getPrincipal(); - log.info("principal is {}", principal); - LoginUser loginUser = (LoginUser) principal; - SysUser user = loginUser.getUser(); - boolean admin = SecurityUtils.isAdmin(user.getUserId()); - if (!admin) { - page.setUserId(user.getUserId()); - } - */ - Page res = this.baseMapper.listPage(page.getPageSo().toPage(), page); - if (res.getRecords() != null && res.getRecords().size() > 0) { - for (AssessRectifyVo record : res.getRecords()) { - record.setFiles(fileService.queryFileList(record.getId().toString(), getGroupId(), getScoreType())); - record.setRectifyFiles(fileService.queryFileList(record.getId().toString(), getGroupId(), getRectifyType())); - } - } - return res; - } - - public String rectify(AssessTeamRating rating) { - rating.setRectifyStatus(1); - this.updateById(rating); - fileService.save(rating.getRectifyFiles(), rating.getId().toString(), getGroupId(), getRectifyType()); - return "整改成功"; - } - - public Map rectifyStat(MonthRangeSo monthRangeSo) { - List list = this.baseMapper.rectifyStat(monthRangeSo); - Map collect = list.stream().collect(Collectors.groupingBy(AssessTeamRating::getRectifyStatus, Collectors.counting())); - if(!collect.containsKey(0)){ - collect.put(0,0L); - } - if(!collect.containsKey(1)){ - collect.put(1,0L); - } - return collect; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessTeamService.java b/src/main/java/com/gunshi/project/hsz/service/AssessTeamService.java deleted file mode 100644 index ca985a6..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessTeamService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AssessTeamMapper; -import com.gunshi.project.hsz.model.AssessTeam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 考核组成员 - * author: xusan - * date: 2024-09-05 14:19:47 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessTeamService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessTemplateIndicatorRelService.java b/src/main/java/com/gunshi/project/hsz/service/AssessTemplateIndicatorRelService.java deleted file mode 100644 index edc10f7..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessTemplateIndicatorRelService.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AssessTemplateIndicatorRelMapper; -import com.gunshi.project.hsz.model.AssessTemplateIndicatorRel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * 描述: 模板关联指标 - * author: xusan - * date: 2024-09-04 13:43:05 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessTemplateIndicatorRelService extends ServiceImpl -{ - - public void saveRel(List indicatorIds, Long id) { - List list = indicatorIds.stream().map(o -> { - AssessTemplateIndicatorRel rel = new AssessTemplateIndicatorRel(); - rel.setId(IdWorker.getId()); - rel.setTemplateId(id); - rel.setIndicatorId(o); - return rel; - }).collect(Collectors.toList()); - this.saveBatch(list); - } - - public void delRel(Long templateId) { - this.remove(new QueryWrapper().eq("template_id",templateId)); - } - - public void updateRel(List indicatorIds, Long id) { - this.delRel(id); - this.saveRel(indicatorIds,id); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AssessTemplateService.java b/src/main/java/com/gunshi/project/hsz/service/AssessTemplateService.java deleted file mode 100644 index b232ebc..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AssessTemplateService.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.dto.InspectItemDto; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.mapper.AssessTaskMapper; -import com.gunshi.project.hsz.mapper.AssessTemplateMapper; -import com.gunshi.project.hsz.model.AssessIndicator; -import com.gunshi.project.hsz.model.AssessTask; -import com.gunshi.project.hsz.model.AssessTemplate; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 考核模板 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AssessTemplateService extends ServiceImpl -{ - @Autowired - private AssessTemplateIndicatorRelService relService; - - @Autowired - private AssessIndicatorService indicatorService; - - @Autowired - private AssessTaskMapper taskMapper; - - public AssessTemplate saveData(AssessTemplate dto) { - dto.setId(IdWorker.getId()); - dto.setStatus(0); - dto.setCreateTime(new Date()); - this.save(dto); - relService.saveRel(dto.getIndicatorIds(),dto.getId()); - return dto; - } - - public AssessTemplate updateData(AssessTemplate dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - this.updateById(dto); - relService.updateRel(dto.getIndicatorIds(),dto.getId()); - return dto; - } - - public Boolean delData(Long id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - relService.delRel(id); - return this.removeById(id); - - } - - public Page pageQuery(AttCctvBasePage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getName())) { - query.like(AssessTemplate::getTemplateName, page.getName()); - } - query.orderByAsc(AssessTemplate::getStatus).orderByDesc(AssessTemplate::getCreateTime); - Page res = this.page(page.getPageSo().toPage(), query); - if (res.getRecords() != null && res.getRecords().size() > 0) { - fillUsedInfo(res.getRecords()); - } - return res; - } - - private void fillUsedInfo(List records) { - List ids = records.stream().map(AssessTemplate::getId).collect(Collectors.toList()); - List list = taskMapper.selectList(new QueryWrapper().in("template_id", ids)); - Map map = list.stream().collect(Collectors.groupingBy(AssessTask::getTemplateId, Collectors.counting())); - for (AssessTemplate record : records) { - record.setIsUsed(map.containsKey(record.getId()) ? 1 : 0); - } - } - - public String startStop(InspectItemDto dto) { - Integer status = dto.getStatus(); - AssessTemplate template = super.getById(dto.getId()); - if (template == null) { - throw new IllegalArgumentException("当前数据不存在"); - } - template.setStatus(status); - boolean flag = super.updateById(template); - if (flag) { - return status == 0 ? "启用成功" : "禁用成功"; - } - return status == 0 ? "启用失败" : "禁用失败"; - } - - public List queryIndicators(Long id) { - List list = this.baseMapper.queryIndicators(id); - if(CollectionUtils.isEmpty(list)){ - return list; - } - indicatorService.fillRating(list); - return list; - } - - public List listByType(Integer templateFreq) { - return this.list(new QueryWrapper().eq("template_freq",templateFreq).eq("status",0)); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttCctvBaseService.java b/src/main/java/com/gunshi/project/hsz/service/AttCctvBaseService.java deleted file mode 100644 index cb821ce..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttCctvBaseService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AttCctvBaseMapper; -import com.gunshi.project.hsz.model.AttCctvBase; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 视频基本信息表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttCctvBaseService extends ServiceImpl -{ - - public List queryList() { - return this.baseMapper.queryList(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttDamBaseService.java b/src/main/java/com/gunshi/project/hsz/service/AttDamBaseService.java deleted file mode 100644 index cbb7c89..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttDamBaseService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AttDamBaseMapper; -import com.gunshi.project.hsz.model.AttDamBase; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 大坝表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttDamBaseService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttDamProfileService.java b/src/main/java/com/gunshi/project/hsz/service/AttDamProfileService.java deleted file mode 100644 index 4169fb0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttDamProfileService.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.ProfilePressTreeVo; -import com.gunshi.project.hsz.mapper.AttDamProfileMapper; -import com.gunshi.project.hsz.model.AttDamProfile; -import com.gunshi.project.hsz.util.MyBeanUtil; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * 描述: 监测断面信息表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttDamProfileService extends ServiceImpl -{ - @Resource - private JcskSyBService jcskSyBService; - - @Resource - private JcskSlBService jcskSlBService; - - @Resource - private JcskGnssBService jcskGnssBService; - - - public List tree() { - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.orderByAsc(AttDamProfile::getProfileCode); - List list = this.list(queryWrapper); - List res = MyBeanUtil.collectionCopy(list,ProfilePressTreeVo.class); - for(ProfilePressTreeVo vo : res){ - List childrensy = jcskSyBService.getDvcdByProfileCode(vo.getProfileCode()); - vo.setChildren(childrensy); - //List pressList = pressDeviceAutoDao.list(new LambdaQueryWrapper() -// .eq(OsmoticPressDevice::getProfileCode, vo.getProfileCode()).orderByAsc(OsmoticPressDevice::getStationCode)); -// vo.setChildren(pressList.stream().map(OsmoticPressDevice::getStationCode).sorted().collect(Collectors.toList())); - } - return res; - } - - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttGateBService.java b/src/main/java/com/gunshi/project/hsz/service/AttGateBService.java deleted file mode 100644 index b2cd3fb..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttGateBService.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.GateMonitorDataVo; -import com.gunshi.project.hsz.mapper.AttGateBMapper; -import com.gunshi.project.hsz.model.AttGateB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 水闸基本情况调查表 - * author: xusan - * date: 2024-09-26 10:44:06 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttGateBService extends ServiceImpl -{ - @Autowired - private FileAssociationsService fileService; - - public List queryList() { - List list = this.list(); - if(CollectionUtils.isNotEmpty(list)){ - fillAttach(list); - } - return list; - } - - private void fillAttach(List list) { - for (AttGateB record : list) { - record.setFiles(fileService.getFiles(getGroupId(),record.getGateCode())); - } - } - - private String getGroupId() { - return "attGateB"; - } - - public List dataList(String gateCode) { - return this.baseMapper.dataList(gateCode); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttGateValveService.java b/src/main/java/com/gunshi/project/hsz/service/AttGateValveService.java deleted file mode 100644 index 9e8f887..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttGateValveService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AttGateValveMapper; -import com.gunshi.project.hsz.model.AttGateValve; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 闸阀信息表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttGateValveService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttMeaWeirService.java b/src/main/java/com/gunshi/project/hsz/service/AttMeaWeirService.java deleted file mode 100644 index deb1ba0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttMeaWeirService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AttMeaWeirMapper; -import com.gunshi.project.hsz.model.AttMeaWeir; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 量水堰表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttMeaWeirService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttResBaseService.java b/src/main/java/com/gunshi/project/hsz/service/AttResBaseService.java deleted file mode 100644 index 1f1d9d1..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttResBaseService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.model.AttResBase; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库基本信息表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttResBaseService extends ServiceImpl { - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttResBuildingService.java b/src/main/java/com/gunshi/project/hsz/service/AttResBuildingService.java deleted file mode 100644 index d3042ad..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttResBuildingService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AttResBuildingMapper; -import com.gunshi.project.hsz.model.AttResBuilding; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库基本信息表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttResBuildingService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttSpillwayBaseService.java b/src/main/java/com/gunshi/project/hsz/service/AttSpillwayBaseService.java deleted file mode 100644 index 510ed7d..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttSpillwayBaseService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AttSpillwayBaseMapper; -import com.gunshi.project.hsz.model.AttSpillwayBase; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 溢洪道 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttSpillwayBaseService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/AttWaterItemService.java b/src/main/java/com/gunshi/project/hsz/service/AttWaterItemService.java deleted file mode 100644 index 7d61ae2..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/AttWaterItemService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.AttWaterItemMapper; -import com.gunshi.project.hsz.model.AttWaterItem; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水质整编展示项目表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class AttWaterItemService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/BroadcastStationService.java b/src/main/java/com/gunshi/project/hsz/service/BroadcastStationService.java deleted file mode 100644 index d517298..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/BroadcastStationService.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.BroadcastStationMapper; -import com.gunshi.project.hsz.model.BroadcastStation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 广播预警站 - * author: xusan - * date: 2024-09-25 10:19:15 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class BroadcastStationService extends ServiceImpl -{ - - public BroadcastStation saveData(BroadcastStation dto) { - dto.setId(IdWorker.getId()); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderBy(true, false, "order_index"); - BroadcastStation lastOne = super.getOne(queryWrapper, false); - int order = 0; - if (lastOne == null) { - order = 1; - } else { - order = lastOne.getOrderIndex() + 1; - } - dto.setOrderIndex(order); - this.save(dto); - return dto; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/BroadcastTemplateService.java b/src/main/java/com/gunshi/project/hsz/service/BroadcastTemplateService.java deleted file mode 100644 index 477ff71..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/BroadcastTemplateService.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.BroadcastTemplateMapper; -import com.gunshi.project.hsz.model.BroadcastTemplate; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 广播模板 - * author: xusan - * date: 2024-09-25 10:19:00 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class BroadcastTemplateService extends ServiceImpl -{ - - public BroadcastTemplate saveData(BroadcastTemplate dto) { - dto.setId(IdWorker.getId()); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderBy(true, false, "order_index"); - BroadcastTemplate lastOne = super.getOne(queryWrapper, false); - int order = 0; - if (lastOne == null) { - order = 1; - } else { - order = lastOne.getOrderIndex() + 1; - } - dto.setOrderIndex(order); - this.save(dto); - return dto; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/BroadcastWarnService.java b/src/main/java/com/gunshi/project/hsz/service/BroadcastWarnService.java deleted file mode 100644 index a2257e2..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/BroadcastWarnService.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.BroadcastWarnPageSo; -import com.gunshi.project.hsz.mapper.BroadcastStationMapper; -import com.gunshi.project.hsz.mapper.BroadcastWarnMapper; -import com.gunshi.project.hsz.model.BroadcastStation; -import com.gunshi.project.hsz.model.BroadcastWarn; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - -/** - * 描述: 广播预警信息 - * author: xusan - * date: 2024-09-25 10:17:54 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class BroadcastWarnService extends ServiceImpl -{ - @Autowired - private BroadcastStationMapper stationMapper; - - public Page pageQuery(BroadcastWarnPageSo page) { - return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); - } - - public Boolean saveData(BroadcastWarn dto) { - String ctrlPass = dto.getCtrlPass(); - List stationIds = dto.getStationIds(); - BroadcastStation broadcastStation = stationMapper.selectById(stationIds.get(0)); - if(!ctrlPass.equals(broadcastStation.getCtrlPass())){ - throw new IllegalArgumentException("密码不正确"); - } - List list = stationIds.stream().map(stationId->{ - BroadcastWarn warn = new BroadcastWarn(); - BeanUtils.copyProperties(dto,warn); - warn.setId(IdWorker.getId()); - warn.setStationId(stationId); - warn.setCreateTime(new Date()); - return warn; - }).collect(Collectors.toList()); - return this.saveBatch(list); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ByLogDetailService.java b/src/main/java/com/gunshi/project/hsz/service/ByLogDetailService.java deleted file mode 100644 index d141b13..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ByLogDetailService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ByLogDetailMapper; -import com.gunshi.project.hsz.mapper.ByLogMapper; -import com.gunshi.project.hsz.model.ByLog; -import com.gunshi.project.hsz.model.ByLogDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ByLogDetailService extends ServiceImpl { - -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ByLogService.java b/src/main/java/com/gunshi/project/hsz/service/ByLogService.java deleted file mode 100644 index af03a64..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ByLogService.java +++ /dev/null @@ -1,390 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.ByLogPageSo; -import com.gunshi.project.hsz.mapper.ByLogDetailMapper; -import com.gunshi.project.hsz.mapper.ByLogMapper; -import com.gunshi.project.hsz.model.*; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysUserMapper; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.executor.BatchResult; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.IOException; -import java.math.BigDecimal; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.Date; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ByLogService extends ServiceImpl { - - @Autowired - private ByLogDetailMapper byLogDetailMapper; - - @Autowired - private SysUserMapper sysUserMapper; - - - public boolean update(ByLog dto) { - ByLog byId = getById(dto.getId()); - if(Objects.isNull(byId)){ - throw new IllegalArgumentException("该日志不存在,请检查"); - } - boolean save = updateById(dto); - List byLogDetails = dto.getDetails(); - byLogDetails.forEach(detail -> { - detail.setId(IdWorker.getId()); - detail.setByLogId(dto.getId()); - }); - LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - //先删除,再新增 - queryWrapper2.eq(ByLogDetail::getByLogId, dto.getId()); - int delete = byLogDetailMapper.delete(queryWrapper2); - List insert = byLogDetailMapper.insert(byLogDetails); - return true; - } - - public Page pageQuery(ByLogPageSo pageSo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(pageSo.getLogNmae())){ - queryWrapper.like(ByLog::getLogName, pageSo.getLogNmae()); - } - if(pageSo.getDateTimeRangeSo() != null){ - queryWrapper.ge(ByLog::getPreDate,pageSo.getDateTimeRangeSo().getStart()); - queryWrapper.le(ByLog::getPreDate,pageSo.getDateTimeRangeSo().getEnd()); - } - queryWrapper.orderByDesc(ByLog::getPreDate); - Page byLogPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); - List records = byLogPage.getRecords(); - Iterator iterator = records.iterator(); - while(iterator.hasNext()){ - //这么做的原因是因为,没有做字段冗余,设计存在缺陷T.T(my question,I am badly boy 后面维护的人看见这段代码应该想打死我吧,) - ByLog record = iterator.next(); - //如果细节数据没有,那么主体数据也就不用显示,调用remove方法 - List query = byLogDetailMapper.selectDetail(record.getId(),pageSo); - if(query.isEmpty()){ - iterator.remove(); - continue; - } - //这里要显示全部数据 - List details = byLogDetailMapper.selectDetail(record.getId(), null); - for (ByLogDetail detail : details) { - if(detail.getPrePersonId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(detail.getPrePersonId())); - if(sysUser != null){ - detail.setPrePerson(sysUser.getNickName()); - } - } - } - record.setDetails(details); - } - return byLogPage; - } - - public List selectByIds(List ids) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(ByLog::getId, ids); - List byLogs = this.baseMapper.selectList(queryWrapper); - byLogs.stream().forEach(o ->{ - List details = byLogDetailMapper.selectDetailList(o.getId()); - for (ByLogDetail detail : details) { - if(detail.getPrePersonId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(detail.getPrePersonId())); - if(sysUser != null){ - detail.setPrePerson(sysUser.getNickName()); - } - } - } - o.setDetails(details); - }); - return byLogs; - } - // 核心导出方法(无冗余) - public void exportToExcel(List byLogs, HttpServletResponse response) { - Workbook workbook = new XSSFWorkbook(); - Sheet sheet = workbook.createSheet("白蚁防治日志"); - - // 1. 合并创建所有样式(原5个样式方法→1个) - StyleGroup styles = createAllStyles(workbook); - - // 2. 创建标题行(逻辑不变) - createHeaderRow(sheet, styles.headerStyle); - - // 3. 填充数据(序号计数器直接在循环内维护,减少参数传递) - fillDataWithMerge(sheet, styles, byLogs); - - // 4. 调整列宽(逻辑不变) - adjustColumnWidth(sheet); - - // 5. 响应处理(逻辑不变) - String fileName = "白蚁-日志管理" + System.currentTimeMillis(); - try { - setResponseHeaders(response, fileName); - workbook.write(response.getOutputStream()); - workbook.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public boolean saveData(ByLog dto) { - dto.setId(IdWorker.getId()); - List byLogDetails = dto.getDetails(); - byLogDetails.forEach(detail -> { - detail.setId(IdWorker.getId()); - detail.setByLogId(dto.getId()); - }); - boolean save = save(dto); - List insert = byLogDetailMapper.insert(byLogDetails); - return true; - } - - - private static class StyleGroup { - CellStyle headerStyle; - CellStyle dataStyle; - CellStyle detailStyle; - CellStyle dateStyle; - CellStyle dateTimeStyle; // 原分散创建,现在统一封装 - - StyleGroup(CellStyle headerStyle, CellStyle dataStyle, CellStyle detailStyle, - CellStyle dateStyle, CellStyle dateTimeStyle) { - this.headerStyle = headerStyle; - this.dataStyle = dataStyle; - this.detailStyle = detailStyle; - this.dateStyle = dateStyle; - this.dateTimeStyle = dateTimeStyle; - } - } - - // 统一创建所有样式(原createHeaderStyle/createDataStyle等合并) - private StyleGroup createAllStyles(Workbook workbook) { - // 1. 基础数据样式 - CellStyle dataStyle = workbook.createCellStyle(); - dataStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中 - dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); //垂直剧中 - //为单元格添加 上 下 左 右 细边框 - dataStyle.setBorderBottom(BorderStyle.THIN); - dataStyle.setBorderTop(BorderStyle.THIN); - dataStyle.setBorderLeft(BorderStyle.THIN); - dataStyle.setBorderRight(BorderStyle.THIN); - - // 2. 表头样式 - CellStyle headerStyle = workbook.createCellStyle(); - headerStyle.cloneStyleFrom(dataStyle); - Font headerFont = workbook.createFont(); - headerFont.setBold(true);//字体加粗 - headerFont.setFontHeightInPoints((short) 12); //字体大小 - headerStyle.setFont(headerFont); - //表头背景颜色 - headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); - - // 3. 详情样式 - CellStyle detailStyle = workbook.createCellStyle(); - detailStyle.cloneStyleFrom(dataStyle); - detailStyle.setAlignment(HorizontalAlignment.LEFT); - detailStyle.setWrapText(true); // 自动换行 - - // 4. 日期样式 - CreationHelper createHelper = workbook.getCreationHelper(); - CellStyle dateStyle = workbook.createCellStyle(); - dateStyle.cloneStyleFrom(dataStyle); - dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd")); - - // 5. 日期时间样式 - CellStyle dateTimeStyle = workbook.createCellStyle(); - dateTimeStyle.cloneStyleFrom(dataStyle); - dateTimeStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss")); - - return new StyleGroup(headerStyle, dataStyle, detailStyle, dateStyle, dateTimeStyle); - } - - private void createHeaderRow(Sheet sheet, CellStyle headerStyle) { - Row headerRow = sheet.createRow(0); - String[] headers = { - "序号", "日志名称", "防治日期", "填报时间", "总费用(元)", "备注", - "防治部位", "防治点", "防治人员", "防治方法", "防治效果" - }; - for (int i = 0; i < headers.length; i++) { - Cell cell = headerRow.createCell(i);//创建表头单元格 - cell.setCellValue(headers[i]);//单元格复制 - cell.setCellStyle(headerStyle);//应用表头样式 - } - } - - private void fillDataWithMerge(Sheet sheet, StyleGroup styles, List dataList) { - int currentRow = 1; - int logSerialNumber = 1; // 序号 - - for (ByLog log : dataList) {//遍历日志信息 - //获取当前日志细节(用于后续单元格合并) - int detailCount = log.getDetails() != null ? log.getDetails().size() : 0; - // 计算需要合并的单元格行数 - int rowSpan = Math.max(detailCount, 1); - Row row = sheet.createRow(currentRow); - // 1. 序号 - Cell cell0 = row.createCell(0); - cell0.setCellValue(logSerialNumber); - cell0.setCellStyle(styles.dataStyle); - //判断是否需要合并单元格 - if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 0, 0)); - - // 2. 日志名称 - Cell cell1 = row.createCell(1); - cell1.setCellValue(log.getLogName() != null ? log.getLogName() : ""); - cell1.setCellStyle(styles.dataStyle); - if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 1, 1)); - - // 3. 防治日期 - Cell cell2 = row.createCell(2); - if (log.getPreDate() != null) { - cell2.setCellValue(log.getPreDate()); - cell2.setCellStyle(styles.dateStyle); - } else { - cell2.setCellValue(""); - cell2.setCellStyle(styles.dataStyle); - } - if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 2, 2)); - - // 4. 填报时间 - Cell cell3 = row.createCell(3); - if (log.getFillTime() != null) { - cell3.setCellValue(log.getFillTime()); - cell3.setCellStyle(styles.dateTimeStyle); // 精简:不再临时创建样式 - } else { - cell3.setCellValue(""); - cell3.setCellStyle(styles.dataStyle); - } - if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 3, 3)); - - // 5. 总费用 - Cell cell4 = row.createCell(4); - CellStyle currencyStyle = sheet.getWorkbook().createCellStyle(); - currencyStyle.cloneStyleFrom(styles.dataStyle); - currencyStyle.setDataFormat((short) 0x27); // 货币格式 - if (log.getTotalCost() != null) { - cell4.setCellValue(log.getTotalCost().doubleValue()); - } else { - cell4.setCellValue(0); - } - cell4.setCellStyle(currencyStyle); - if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 4, 4)); - Cell cell5 = row.createCell(5); - cell5.setCellValue(log.getRemark() != null ? log.getRemark() : ""); - cell5.setCellStyle(styles.dataStyle); - if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 5, 5)); - - //填充日志详细数据 - if (detailCount > 0) { - fillDetailInfo(row, log.getDetails().get(0), styles.detailStyle); - for (int i = 1; i < detailCount; i++) { - Row detailRow = sheet.createRow(currentRow + i); - for (int col = 0; col <= 5; col++) { - Cell emptyCell = detailRow.createCell(col); - emptyCell.setCellValue(""); - if (col == 2) { - emptyCell.setCellStyle(styles.dateStyle); // 防治日期列:用日期样式 - } else if (col == 3) { - emptyCell.setCellStyle(styles.dateTimeStyle); // 填报时间列:用日期时间样式 - } else if (col == 4) { - emptyCell.setCellStyle(currencyStyle); // 总费用列:用货币样式 - } else { - emptyCell.setCellStyle(styles.dataStyle); // 其他列:用基础数据样式 - } - } - fillDetailInfo(detailRow, log.getDetails().get(i), styles.detailStyle); - } - } else { - for (int i = 6; i <= 10; i++) { - Cell cell = row.createCell(i); - cell.setCellValue(""); - cell.setCellStyle(styles.detailStyle); - } - } - - currentRow += rowSpan; - logSerialNumber++; // 序号自增 - } - } - - private void fillDetailInfo(Row row, ByLogDetail detail, CellStyle style) { - createCell(row, 6, detail.getPpdn(), style); // 防治部位 - createCell(row, 7, detail.getPpn(), style); // 防治点 - createCell(row, 8, detail.getPrePerson(), style); // 防治人员 - createCell(row, 9, detail.getPreMethod(), style); // 防治方法 - createCell(row, 10, detail.getPreEffect(), style); // 防治效果 - } - - private void createCell(Row row, int column, Object value, CellStyle style) { - Cell cell = row.createCell(column); - if (value == null) { - cell.setCellValue(""); - } else if (value instanceof String) { - cell.setCellValue((String) value); - } else if (value instanceof Number) { - // 精简:合并Long/Integer处理(Number是它们的父类) - cell.setCellValue(value.toString()); - } else if (value instanceof BigDecimal) { - cell.setCellValue(((BigDecimal) value).doubleValue()); - } else if (value instanceof Date) { - cell.setCellValue((Date) value); - // 日期样式统一(复用StyleGroup逻辑,此处简化) - CellStyle dateCellStyle = row.getSheet().getWorkbook().createCellStyle(); - dateCellStyle.cloneStyleFrom(style); - dateCellStyle.setDataFormat(row.getSheet().getWorkbook().getCreationHelper() - .createDataFormat().getFormat("yyyy-MM-dd")); - cell.setCellStyle(dateCellStyle); - } else { - cell.setCellValue(value.toString()); - } - cell.setCellStyle(style); - } - - // 列宽调整(逻辑不变) - private void adjustColumnWidth(Sheet sheet) { - int[] columnWidths = { - 8 * 256, // 序号 - 25 * 256, // 日志名称 - 15 * 256, // 防治日期 - 25 * 256, // 填报时间 - 15 * 256, // 总费用 - 30 * 256, // 备注 - 20 * 256, // 防治部位 - 20 * 256, // 防治点 - 15 * 256, // 防治人员 - 20 * 256, // 防治方法 - 15 * 256 // 防治效果 - }; - for (int i = 0; i < columnWidths.length; i++) { - sheet.setColumnWidth(i, columnWidths[i]); - } - } - - // 响应头设置(逻辑不变) - private void setResponseHeaders(HttpServletResponse response, String fileName) throws IOException { - String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8) - .replaceAll("\\+", "%20"); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Disposition", - "attachment; filename=\"" + encodedFileName + ".xlsx\""); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ByPlanDetailService.java b/src/main/java/com/gunshi/project/hsz/service/ByPlanDetailService.java deleted file mode 100644 index 034a7da..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ByPlanDetailService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ByPlanDetailMapper; -import com.gunshi.project.hsz.mapper.ByPlanMapper; -import com.gunshi.project.hsz.model.ByPlan; -import com.gunshi.project.hsz.model.ByPlanDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ByPlanDetailService extends ServiceImpl { -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ByPlanService.java b/src/main/java/com/gunshi/project/hsz/service/ByPlanService.java deleted file mode 100644 index 4e43af3..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ByPlanService.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.ByPlanPageSo; -import com.gunshi.project.hsz.mapper.AlarmSetMapper; -import com.gunshi.project.hsz.mapper.ByPlanDetailMapper; -import com.gunshi.project.hsz.mapper.ByPlanMapper; -import com.gunshi.project.hsz.model.AlarmSet; -import com.gunshi.project.hsz.model.ByPlan; -import com.gunshi.project.hsz.model.ByPlanDetail; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysUserMapper; -import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.executor.BatchResult; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ByPlanService extends ServiceImpl { - - @Autowired - private ByPlanDetailMapper byPlanDetailMapper; - - @Autowired - private ByPlanDetailService byPlanDetailService; - - @Autowired - private SysUserMapper sysUserMapper; - - public boolean update(ByPlan dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ByPlan::getPlanId, dto.getPlanId()); - ByPlan one = getOne(queryWrapper); - if(Objects.isNull(one)){ - throw new RuntimeException("该计划不存在,请检查"); - } - boolean save = updateById(dto); - List byPlanDetail = dto.getByPlanDetail(); - if(byPlanDetail == null || byPlanDetail.isEmpty()){ - throw new IllegalArgumentException("防止部位至少需要一条数据"); - } - byPlanDetail.forEach(detail -> { - detail.setId(IdWorker.getId()); - detail.setPlanId(dto.getPlanId()); - }); - LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - //先删除,再新增 - queryWrapper2.eq(ByPlanDetail::getPlanId, dto.getPlanId()); - int delete = byPlanDetailMapper.delete(queryWrapper2); - List insert = byPlanDetailMapper.insert(byPlanDetail); - return true; - } - - public Page pageQuery(ByPlanPageSo dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(dto.getPlanName())){ - queryWrapper.like(ByPlan::getPlanName,dto.getPlanName()); - } - queryWrapper.orderByDesc(ByPlan::getPlanDateStart); - Page byPlanPage = baseMapper.selectPage(dto.getPageSo().toPage(), queryWrapper); - List records = byPlanPage.getRecords(); - Iterator iterator = records.iterator(); - while(iterator.hasNext()){ - ByPlan entity = iterator.next(); - List query = byPlanDetailMapper.selectList(entity.getPlanId(),dto); - //如果preDetailName不为空的情况下,且details为空,那么就去掉这个主数据 - if (!StringUtils.isBlank(dto.getPreDetailName()) && query.isEmpty()) { - iterator.remove(); - continue; - } - List details = byPlanDetailMapper.selectList(entity.getPlanId(), null); - entity.setByPlanDetail(details); - //根据用户id查询用户名称 - if(entity.getUserId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(entity.getUserId())); - if(sysUser != null){ - entity.setUserName(sysUser.getNickName()); - } - } - } - return byPlanPage; - } - - public boolean saveData(ByPlan dto) { - dto.setId(IdWorker.getId()); - List byPlanDetail = dto.getByPlanDetail(); - boolean save = save(dto); - byPlanDetail.forEach(detail -> { - detail.setId(IdWorker.getId()); - }); - if(save){ - byPlanDetailService.saveBatch(byPlanDetail); - } - return true; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/BzDictRelService.java b/src/main/java/com/gunshi/project/hsz/service/BzDictRelService.java deleted file mode 100644 index 88ef962..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/BzDictRelService.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.BzDictRelMapper; -import com.gunshi.project.hsz.model.BzDictRel; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 业务关联字典 - * author: xusan - * date: 2024-08-28 10:05:21 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class BzDictRelService extends ServiceImpl -{ - public void saveRel(List result, Long id,String groupId) { - if (CollectionUtils.isNotEmpty(result)) { - result.stream().forEach(rel->{ - rel.setId(IdWorker.getId()); - if(id != null){ - rel.setBusinessId(id); - } - rel.setGroupId(groupId); - }); - this.saveBatch(result); - } - } - - public void deleteRel(Long id) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(BzDictRel::getBusinessId,id); - this.remove(queryWrapper); - } - - public void updateRel(List result, Long id,String groupId) { - deleteRel(id); - saveRel(result,id,groupId); - } - - public void removeByBzIds(List detailIds) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.in(BzDictRel::getBusinessId,detailIds); - this.remove(queryWrapper); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/CctvBMenuService.java b/src/main/java/com/gunshi/project/hsz/service/CctvBMenuService.java deleted file mode 100644 index 801cdc3..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/CctvBMenuService.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.CctvBMenuMapper; -import com.gunshi.project.hsz.model.CctvBMenu; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 视频点目录 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class CctvBMenuService extends ServiceImpl -{ - - public List tree() { - List list = list(); - if (CollectionUtils.isEmpty(list)){ - return list; - } - - Map> listMap = list.stream().collect(Collectors.groupingBy(CctvBMenu::getParentId)); - - list.forEach(o -> o.setChildren(listMap.get(o.getId()))); - List parentList = list.stream().filter(o -> 0L == o.getParentId()).collect(Collectors.toList()); - return sorted(parentList); - } - - - private List sorted( List tree) { - - List sorteds = null; - - if (CollectionUtils.isNotEmpty(tree)){ - sorteds = tree.stream().sorted(Comparator.comparing(CctvBMenu::getOrderIndex) - ).collect(Collectors.toList()); - sorteds.forEach(o->{ - o.setChildren(sorted(o.getChildren())); - }); - } - - return sorteds; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/CurrentFormAnalysisService.java b/src/main/java/com/gunshi/project/hsz/service/CurrentFormAnalysisService.java deleted file mode 100644 index f4490a8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/CurrentFormAnalysisService.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.gunshi.project.hsz.service; - -import cn.hutool.core.bean.BeanUtil; -import com.gunshi.project.hsz.entity.so.RainfallAnalysisSo; -import com.gunshi.project.hsz.entity.so.RealRainBaseSo; -import com.gunshi.project.hsz.entity.vo.RainfallAnalysisVo; -import com.gunshi.project.hsz.entity.vo.RealRainListVo; -import com.gunshi.project.hsz.entity.vo.RealRainStatListVo; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.compress.utils.Lists; -import org.springframework.stereotype.Service; - -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - -/** - * TODO - * - * @ClassName CurrentFormAnalysisService - * @Author Huang Qianxiang - * @Date 2024/3/12 16:19 - */ -@Service -@Slf4j -public class CurrentFormAnalysisService { - @Resource - private RealRainService realRainService; - - - /** - * 当前形势分析-降雨分析 - * @param rainfallAnalysisSo - * @return - */ - public Map> rainfallAnalysis(RainfallAnalysisSo rainfallAnalysisSo){ - - Date etm = new Date(); - Date stm = new Date(etm.getTime() - rainfallAnalysisSo.getTimeType() * 60 * 60*1000); - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String etmStr = df.format(etm); - String stmStr = df.format(stm); - - RealRainBaseSo realRainBaseSo = new RealRainBaseSo(); - realRainBaseSo.setStm(stmStr); - realRainBaseSo.setEtm(etmStr); - realRainBaseSo.setSource(rainfallAnalysisSo.getSource()); - realRainBaseSo.setTimeType(rainfallAnalysisSo.getTimeType()); - - List realRainList = realRainService.getRealRainList(realRainBaseSo); - - realRainList = realRainList.stream().filter(t -> Objects.nonNull(t.getRainTag())).collect(Collectors.toList()); - - List analysisVos = new ArrayList<>(); - for (RealRainListVo realRainListVo : realRainList) { - RainfallAnalysisVo rainfallAnalysisVo = new RainfallAnalysisVo(); - BeanUtil.copyProperties(realRainListVo,rainfallAnalysisVo); - // 4 - if (realRainListVo.getRainTag() >= 4){ - rainfallAnalysisVo.setLevel(realRainListVo.getRainTag()-4); - analysisVos.add(rainfallAnalysisVo); - } - } - - Map> map = realRainService.getRealRainStatLevel(realRainBaseSo); - - List realRainStatListVos = new ArrayList<>(); - if (map.get(4) != null){ - realRainStatListVos.addAll(map.get(4)); - } - if (map.get(5) != null){ - realRainStatListVos.addAll(map.get(5)); - } - - for (RealRainStatListVo realRainStatListVo : realRainStatListVos) { - RainfallAnalysisVo rainfallAnalysisVo = new RainfallAnalysisVo(); - BeanUtil.copyProperties(realRainStatListVo,rainfallAnalysisVo); - if (rainfallAnalysisSo.getTimeType() == 3) { - rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH3()); - } else if (rainfallAnalysisSo.getTimeType() == 6) { - rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH6()); - } else if (rainfallAnalysisSo.getTimeType() == 12) { - rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH12()); - } else if (rainfallAnalysisSo.getTimeType() == 24) { - rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH24()); - } else { - rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH1()); - } - analysisVos.add(rainfallAnalysisVo); - } - - Map> map1 = analysisVos.stream().collect( - Collectors.groupingBy(RainfallAnalysisVo::getLevel, Collectors.toList()) - ); - - for (int i = 0; i <= 4; i++) { - if (map1.get(i) == null){ - map1.put(i, Lists.newArrayList()); - } - } - return map1; - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/service/DeptempService.java b/src/main/java/com/gunshi/project/hsz/service/DeptempService.java deleted file mode 100644 index c95935e..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/DeptempService.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.ruoyi.common.core.domain.entity.SysDept; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysDeptMapper; -import com.ruoyi.system.mapper.SysUserMapper; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 描述: APP版本记录 - * author: xusan - * date: 2024-11-12 10:14:50 - */ -@Service -@Slf4j -public class DeptempService{ - @Autowired - private SysDeptMapper deptMapper; - - @Autowired - private SysUserMapper userMapper; - - public List selectUserList(SysUser user) - { - return userMapper.selectUserList(user); - } - - public List selectDeptList(SysDept dept) - { - return deptMapper.selectDeptList(dept); - } - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/DispatchRecordService.java b/src/main/java/com/gunshi/project/hsz/service/DispatchRecordService.java deleted file mode 100644 index cc6cccc..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/DispatchRecordService.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -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.gunshi.project.hsz.entity.so.DispatchRecordPageSo; -import com.gunshi.project.hsz.entity.vo.DispatchRecordVo; -import com.gunshi.project.hsz.mapper.DispatchRecordMapper; -import com.gunshi.project.hsz.model.DispatchRecord; -import com.gunshi.project.hsz.util.ExcelUtil; -import com.gunshi.project.hsz.util.MyBeanUtil; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysUserMapper; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 调度记录 - * author: xusan - * date: 2024-10-09 09:56:28 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class DispatchRecordService extends ServiceImpl -{ - @Autowired - private FileAssociationsService fileService; - - @Autowired - private SysUserMapper sysUserMapper; - - public Page pageQuery(DispatchRecordPageSo page) { - Page res = this.page(page.getPageSo().toPage(), commonWrapper(page)); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - for (DispatchRecord record : res.getRecords()) { - if(record.getOpUserId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(record.getOpUserId()); - if(sysUser != null){ - record.setOpUserName(sysUser.getNickName()); - } - } - } - } - return res; - } - - private void fillAttach(List ret) { - for (DispatchRecord record : ret) { - record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); - } - } - - private LambdaQueryWrapper commonWrapper(DispatchRecordPageSo page){ - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - if(StringUtils.isNotEmpty(page.getOpUserName())){ - wrapper.like(DispatchRecord::getOpUserName,page.getOpUserName()); - } - if(page.getStatus() != null){ - wrapper.eq(DispatchRecord::getStatus,page.getStatus()); - } - if(page.getDateTimeSo() != null && page.getDateTimeSo().getStart() != null){ - wrapper.gt(DispatchRecord::getStartTime,page.getDateTimeSo().getStart()); - } - if(page.getDateTimeSo() != null && page.getDateTimeSo().getEnd() != null){ - wrapper.lt(DispatchRecord::getStartTime,page.getDateTimeSo().getEnd()); - } - wrapper.orderByDesc(DispatchRecord::getStartTime); - return wrapper; - } - - public void export(DispatchRecordPageSo page, HttpServletResponse response) { - List list = this.list(commonWrapper(page)); - for (DispatchRecord record : list) { - if(record.getOpUserId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(record.getOpUserId()); - if(sysUser != null){ - record.setOpUserName(sysUser.getNickName()); - } - } - } - List dispatchRecordVos = MyBeanUtil.collectionCopy(list, DispatchRecordVo.class); - ExcelUtil.exportExcel(dispatchRecordVos,"调度指令", DispatchRecordVo.class,response,"调度指令"); - } - - public DispatchRecord saveData(DispatchRecord dto) { - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - this.save(dto); - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - return dto; - } - - public String getGroupId() { - return "dispatchRecord"; - } - - public DispatchRecord updateData(DispatchRecord dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public Boolean delData(List ids) { - fileService.removeByBzIds(ids.stream().map(Objects::toString).collect(Collectors.toList())); - return this.removeBatchByIds(ids); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/FileAssociationsService.java b/src/main/java/com/gunshi/project/hsz/service/FileAssociationsService.java deleted file mode 100644 index 786c164..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/FileAssociationsService.java +++ /dev/null @@ -1,252 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.FileAssociationsMapper; -import com.gunshi.project.hsz.model.FileAssociations; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.compress.utils.Lists; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.gunshi.project.hsz.entity.MyConstant.*; - - -/** - * 描述: 文件关联业务表 - * author: xusan - * date: 2024-07-17 10:09:40 - */ -@Slf4j -@Service -@Transactional -public class FileAssociationsService extends ServiceImpl { - - private static final String THIS_REDIS_KEY = REDIS_KEY + FileAssociations.thisTableName + ":"; - - @CacheEvict(value = THIS_REDIS_KEY, key = "#p1 +':*'", allEntries = true) - public void saveFile(List files, String tableName, String businessId) { - if (CollectionUtils.isEmpty(files)) { - log.info("fileIds is null!"); - } - - // 查询是否添加 - List dbList = this.lambdaQuery() - .eq(FileAssociations::getTableName, tableName) - .eq(FileAssociations::getBusinessId, businessId) - .eq(FileAssociations::getDel, REC) - .list(); - - if (CollectionUtils.isNotEmpty(dbList)) { - Set fileIds = dbList.stream().map(FileAssociations::getFileId) - .collect(Collectors.toSet()); - // 删除已添加数据, 删除重复数据 删除不成功即新数据 - files = files.stream() - .filter(fileAssociations -> !fileIds.remove(fileAssociations.getFileId())) - .collect(Collectors.toList()); - -// if (CollectionUtils.isNotEmpty(files)) { - - // 删除 - if (CollectionUtils.isNotEmpty(fileIds) && this.lambdaUpdate() - .set(FileAssociations::getDel, DEL) - .eq(FileAssociations::getTableName, tableName) - .eq(FileAssociations::getBusinessId, businessId) - .in(FileAssociations::getFileId, fileIds) - .update()) { - log.info("delete file {} success!", fileIds); - } - -// } - } - - - // 做新增 - if (CollectionUtils.isNotEmpty(files)) { - - files.forEach(fileId -> { - fileId.setId(IdWorker.getId()); - fileId.setTableName(tableName); - fileId.setBusinessId(businessId); - }); - - if (!this.saveBatch(files)) { - log.error("save file error!"); - } - - } - - } - - @CacheEvict(value = THIS_REDIS_KEY, key = "#p1 +':*'", allEntries = true) - public void saveFile(List files, String tableName, String businessId, String type) { - if (CollectionUtils.isEmpty(files)) { - log.info("fileIds is null!"); - files = Lists.newArrayList(); - } - - // 查询是否添加 - List dbList = this.lambdaQuery() - .eq(FileAssociations::getTableName, tableName) - .eq(FileAssociations::getBusinessId, businessId) - .eq(FileAssociations::getType, type) - .eq(FileAssociations::getDel, REC) - .list(); - - if (CollectionUtils.isNotEmpty(dbList)) { - Set fileIds = dbList.stream().map(FileAssociations::getFileId) - .collect(Collectors.toSet()); - // 删除已添加数据, 删除重复数据 删除不成功即新数据 - files = files.stream() - .filter(fileAssociations -> !fileIds.remove(fileAssociations.getFileId())) - .collect(Collectors.toList()); - -// if (CollectionUtils.isNotEmpty(files)) { - - // 删除 - if (CollectionUtils.isNotEmpty(fileIds) && this.lambdaUpdate() - .set(FileAssociations::getDel, DEL) - .eq(FileAssociations::getTableName, tableName) - .eq(FileAssociations::getBusinessId, businessId) - .eq(FileAssociations::getType, type) - .in(FileAssociations::getFileId, fileIds) - .update()) { - log.info("delete file {} success!", fileIds); - } - -// } - } - - - // 做新增 - if (CollectionUtils.isNotEmpty(files)) { - - files.forEach(fileId -> { - fileId.setId(IdWorker.getId()); - fileId.setTableName(tableName); - fileId.setType(type); - fileId.setBusinessId(businessId); - }); - - if (!this.saveBatch(files)) { - log.error("save file error!"); - } - - } - - } - - - @CacheEvict(value = THIS_REDIS_KEY, key = "#p1 +':*'", allEntries = true) - public void saveFileNotDel(List files, String tableName, String businessId, String type) { - - // 查询是否添加 - List dbList = this.lambdaQuery() - .eq(FileAssociations::getTableName, tableName) - .eq(FileAssociations::getBusinessId, businessId) - .eq(FileAssociations::getType, type) - .eq(FileAssociations::getDel, REC) - .list(); - - if (CollectionUtils.isEmpty(files) && CollectionUtils.isNotEmpty(dbList)) { - log.info("fileIds is null!"); - Set fileIds = dbList.stream().map(FileAssociations::getFileId) - .collect(Collectors.toSet()); - // 删除 - if (this.lambdaUpdate() - .set(FileAssociations::getDel, DEL) - .eq(FileAssociations::getTableName, tableName) - .eq(FileAssociations::getBusinessId, businessId) - .eq(FileAssociations::getType, type) - .in(FileAssociations::getFileId, fileIds) - .update()) { - log.info("delete file {} success!", fileIds); - return; - } - } - - - // 做新增 - if (CollectionUtils.isNotEmpty(files)) { - - files.forEach(fileId -> { - fileId.setId(IdWorker.getId()); - fileId.setTableName(tableName); - fileId.setType(type); - fileId.setBusinessId(businessId); - }); - - if (!this.saveBatch(files)) { - log.error("save file error!"); - } - - } - - } - - @CacheEvict(value = THIS_REDIS_KEY, key = "#p0 +':*'", allEntries = true) - public void deleteFile(String tableName, String businessId) { - // 删除 - if (this.lambdaUpdate() - .set(FileAssociations::getDel, DEL) - .eq(FileAssociations::getTableName, tableName) - .eq(FileAssociations::getBusinessId, businessId) - .update()) { - log.info("delete file {} success!", businessId); - } - } - - @Cacheable(value = THIS_REDIS_KEY, key = "#p0 +':'+ #p1", unless = "false") - public List getFiles(String tName, String bId) { - return this.baseMapper.getFiles(tName,bId); - } - - public List getFiles2(String tName, String bId) { - return this.baseMapper.getFiles2(tName,bId); - } - - - @Cacheable(value = THIS_REDIS_KEY, key = "#p0 +':'+ #p1 +':'+ #p2", unless = "false") - public List getFiles(String tName, String bId,String num) { - return this.baseMapper.getFiles1(tName,bId,num); - } - - public void save(List attachList,String businessId, String tableName,String type) { - if (attachList != null && !attachList.isEmpty()) { - for (FileAssociations attach : attachList) { - attach.setId(IdWorker.getId()); - if(StringUtils.isNotEmpty(businessId)){ - attach.setBusinessId(businessId); - } - attach.setTableName(tableName); - attach.setType(type); - } - this.saveBatch(attachList); - } - } - - public boolean removeByBzIdAndType(String businessId, String tableName,String type) { - return this.remove(new QueryWrapper().eq("business_id", businessId).eq("table_name", tableName).eq("type",type)); - } - - public List queryFileList(String businessId, String tableName,String type) { - return this.baseMapper.queryFileList(businessId,tableName,type); - } - - public boolean removeByBzIds(List businessIds) { - return this.remove(new QueryWrapper().in("business_id", businessIds)); - } - - public List getFilesByIds(List ids) { - return this.baseMapper.getFilesByIds(ids); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchCommandService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchCommandService.java deleted file mode 100644 index 17fc278..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchCommandService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ForecastDispatchCommandMapper; -import com.gunshi.project.hsz.model.ForecastDispatchCommand; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 调度指令表 - * author: xusan - * date: 2024-12-19 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastDispatchCommandService extends ServiceImpl { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchPlanService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchPlanService.java deleted file mode 100644 index 9881577..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchPlanService.java +++ /dev/null @@ -1,454 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.ForecastDispatchPlanPageSo; -import com.gunshi.project.hsz.mapper.ForecastDispatchPlanMapper; -import com.gunshi.project.hsz.model.ForecastDispatchCommand; -import com.gunshi.project.hsz.model.ForecastDispatchPlan; -import com.gunshi.project.hsz.model.ForecastDispatchResult; -import com.gunshi.project.hsz.model.ResPlanB; -import com.ruoyi.common.utils.StringUtils; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.*; -import java.net.URLEncoder; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -/** - * 描述: 调度方案主表 - * author: xusan - * date: 2024-12-19 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastDispatchPlanService extends ServiceImpl { - - @Autowired - private ForecastDispatchPlanMapper forecastDispatchPlanMapper; - - @Autowired - private ForecastDispatchResultService forecastDispatchResultService; - - @Autowired - private ForecastDispatchCommandService forecastDispatchCommandService; - - @Autowired - private ResPlanBService resPlanBService; - - public Page pageDetail(ForecastDispatchPlanPageSo pageSo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(pageSo.getPlanName())){ - queryWrapper.like(ForecastDispatchPlan::getPlanName, pageSo.getPlanName()); - } - queryWrapper.orderByDesc(ForecastDispatchPlan::getCreateTime); - Page forecastDispatchPlanPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); - for (ForecastDispatchPlan record : forecastDispatchPlanPage.getRecords()) { - List forecastDispatchCommandList = forecastDispatchCommandService.lambdaQuery().eq(ForecastDispatchCommand::getPlanId, record.getId()).list(); - record.setForecastDispatchCommands(forecastDispatchCommandList); - ForecastDispatchResult forecastDispatchResult = forecastDispatchResultService.lambdaQuery().eq(ForecastDispatchResult::getPlanId, record.getId()).one(); - record.setForecastDispatchResult(forecastDispatchResult); - if(record.getResPlanBId() != null){ - ResPlanB byId = resPlanBService.getById(record.getResPlanBId()); - if(byId != null){ - record.setResPlanBName(byId.getPlanName()); - } - } - } - - return forecastDispatchPlanPage; - } - - public List selectByIds(List ids) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(ForecastDispatchPlan::getId, ids); - List forecastDispatchPlans = this.baseMapper.selectList(queryWrapper); - for (ForecastDispatchPlan record : forecastDispatchPlans) { - List forecastDispatchCommandList = forecastDispatchCommandService.lambdaQuery().eq(ForecastDispatchCommand::getPlanId, record.getId()).list(); - record.setForecastDispatchCommands(forecastDispatchCommandList); - ForecastDispatchResult forecastDispatchResult = forecastDispatchResultService.lambdaQuery().eq(ForecastDispatchResult::getPlanId, record.getId()).one(); - record.setForecastDispatchResult(forecastDispatchResult); - if(record.getResPlanBId() != null){ - ResPlanB byId = resPlanBService.getById(record.getResPlanBId()); - if(byId != null){ - record.setResPlanBName(byId.getPlanName()); - } - } - } - return forecastDispatchPlans; - } - - public Boolean deleteById(Serializable id) { - boolean flag = removeById(id); - if(flag){ - LambdaQueryWrapper eq1 = new LambdaQueryWrapper<>(); - eq1.eq(ForecastDispatchResult::getPlanId, id); - boolean remove = forecastDispatchResultService.remove(eq1); - LambdaQueryWrapper eq2 = new LambdaQueryWrapper<>(); - eq2.eq(ForecastDispatchCommand::getPlanId, id); - boolean remove2 = forecastDispatchCommandService.remove(eq2); - } - return true; - } - - public Boolean saveData(ForecastDispatchPlan dto) { - ForecastDispatchResult forecastDispatchResult = dto.getForecastDispatchResult(); - List forecastDispatchCommands = dto.getForecastDispatchCommands(); - save(dto); - forecastDispatchResult.setPlanId(dto.getId()); - forecastDispatchCommands.stream().forEach(o ->{ - o.setPlanId(dto.getId()); - }); - forecastDispatchResultService.save(forecastDispatchResult); - forecastDispatchCommandService.saveBatch(forecastDispatchCommands); - return true; - } - public void export(List page, HttpServletResponse response) { - // 创建临时目录 - String tempDir = System.getProperty("java.io.tmpdir") + File.separator + "export_" + UUID.randomUUID(); - File dir = new File(tempDir); - if (!dir.exists()) { - dir.mkdirs(); - } - - List excelFiles = new ArrayList<>(); - - try { - // 为每个方案创建Excel文件 - for (int i = 0; i < page.size(); i++) { - ForecastDispatchPlan plan = page.get(i); - File excelFile = createExcelForPlan(plan, tempDir, i + 1); - excelFiles.add(excelFile); - } - - // 创建ZIP压缩包 - String zipFileName = "调度方案数据导出_" + - LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + ".zip"; - - // 设置响应头 - response.setContentType("application/zip"); - response.setCharacterEncoding("utf-8"); - response.setHeader("Content-disposition", - "attachment;filename*=utf-8''" + URLEncoder.encode(zipFileName, "UTF-8").replaceAll("\\+", "%20")); - - // 创建ZIP输出流 - ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); - - // 将Excel文件添加到ZIP - for (File excelFile : excelFiles) { - ZipEntry zipEntry = new ZipEntry(excelFile.getName()); - zos.putNextEntry(zipEntry); - - try (FileInputStream fis = new FileInputStream(excelFile)) { - byte[] buffer = new byte[1024]; - int len; - while ((len = fis.read(buffer)) > 0) { - zos.write(buffer, 0, len); - } - } - zos.closeEntry(); - } - - zos.close(); - - } catch (Exception e) { - log.error("导出Excel失败", e); - throw new RuntimeException("导出失败"); - } finally { - // 清理临时文件 - for (File file : excelFiles) { - if (file.exists()) { - file.delete(); - } - } - if (dir.exists()) { - dir.delete(); - } - } - } - - /** - * 为单个调度方案创建Excel文件 - */ - private File createExcelForPlan(ForecastDispatchPlan plan, String tempDir, int index) throws IOException { - // 创建Excel工作簿 - Workbook workbook = new XSSFWorkbook(); - - // 创建单元格样式 - CellStyle headerStyle = createHeaderStyle(workbook); - CellStyle dataStyle = createDataStyle(workbook); - CellStyle titleStyle = createTitleStyle(workbook); - - // 创建Sheet - String sheetName = "调度方案"; - Sheet sheet = workbook.createSheet(sheetName); - - int currentRow = 0; - - // 1. 导出调度方案基本信息 - currentRow = exportPlanBasicInfo(sheet, currentRow, plan, titleStyle, dataStyle); - - // 2. 导出调度结果 - currentRow = exportPlanResult(sheet, currentRow, plan, headerStyle, dataStyle); - - // 3. 导出调度指令 - currentRow = exportPlanCommands(sheet, currentRow, plan, headerStyle, dataStyle); - - // 生成文件名 - String fileName = plan.getPlanName(); - File excelFile = new File(tempDir, fileName + ".xlsx"); - - // 写入文件 - try (FileOutputStream fos = new FileOutputStream(excelFile)) { - workbook.write(fos); - } - - workbook.close(); - - return excelFile; - } - - - /** - * 导出调度方案基本信息(保持原有逻辑) - */ - private int exportPlanBasicInfo(Sheet sheet, int startRow, ForecastDispatchPlan plan, CellStyle titleStyle, CellStyle dataStyle) { - // 方案标题 - Row titleRow = sheet.createRow(startRow++); - Cell titleCell = titleRow.createCell(0); - titleCell.setCellValue("调度方案:" + getStringValue(plan.getPlanName())); - titleCell.setCellStyle(titleStyle); - - // 合并单元格(标题跨5列) - sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), 0, 4)); - - // 基本信息表头 - Row headerRow = sheet.createRow(startRow++); - String[] headers = {"开始时间", "结束时间", "制定时间", "制定人", "水库控制水位(m)"}; - for (int i = 0; i < headers.length; i++) { - Cell cell = headerRow.createCell(i); - cell.setCellValue(headers[i]); - cell.setCellStyle(dataStyle); - sheet.setColumnWidth(i, 5000); - } - - // 基本信息数据 - Row dataRow = sheet.createRow(startRow++); - int colNum = 0; - dataRow.createCell(colNum++).setCellValue(formatDateTime(plan.getStartTm())); - dataRow.createCell(colNum++).setCellValue(formatDateTime(plan.getEndTm())); - dataRow.createCell(colNum++).setCellValue(formatDateTime(plan.getCreateTime())); - dataRow.createCell(colNum++).setCellValue(getStringValue(plan.getCreator())); - dataRow.createCell(colNum).setCellValue(plan.getReservoirControlLevel() != null ? - plan.getReservoirControlLevel().doubleValue() : 0); - - // 设置数据行样式 - for (int i = 0; i < headers.length; i++) { - if (dataRow.getCell(i) != null) { - dataRow.getCell(i).setCellStyle(dataStyle); - } - } - - return startRow; - } - - /** - * 导出调度结果(保持原有逻辑) - */ - private int exportPlanResult(Sheet sheet, int startRow, ForecastDispatchPlan plan, CellStyle headerStyle, CellStyle dataStyle) { - ForecastDispatchResult result = plan.getForecastDispatchResult(); - if (result == null) { - return startRow; - } - - // 结果标题 - Row resultTitleRow = sheet.createRow(startRow++); - Cell resultTitleCell = resultTitleRow.createCell(0); - resultTitleCell.setCellValue("调度结果"); - resultTitleCell.setCellStyle(headerStyle); - - // 合并单元格(结果标题跨7列) - sheet.addMergedRegion(new CellRangeAddress(resultTitleRow.getRowNum(), resultTitleRow.getRowNum(), 0, 6)); - - // 结果表头 - Row resultHeaderRow = sheet.createRow(startRow++); - String[] resultHeaders = { - "最大入库流量(m³/s)", "总入库水量(万m³)", "总出库水量(万m³)", - "最高库水位(m)", "超汛限水位值(m)", "超汛限开始时间", "超汛限结束时间" - }; - for (int i = 0; i < resultHeaders.length; i++) { - Cell cell = resultHeaderRow.createCell(i); - cell.setCellValue(resultHeaders[i]); - cell.setCellStyle(headerStyle); - sheet.setColumnWidth(i, 5000); - } - - // 结果数据 - Row resultDataRow = sheet.createRow(startRow++); - int colNum = 0; - resultDataRow.createCell(colNum++).setCellValue(result.getMaxInflow() != null ? - result.getMaxInflow() + "(" + result.getMaxInflowDate().toString() + ")": ""); - resultDataRow.createCell(colNum++).setCellValue(result.getTotalInflowVolume() != null ? - result.getTotalInflowVolume().doubleValue() : 0); - resultDataRow.createCell(colNum++).setCellValue(result.getTotalOutflowVolume() != null ? - result.getTotalOutflowVolume().doubleValue() : 0); - resultDataRow.createCell(colNum++).setCellValue(result.getMaxReservoirLevel() != null ? - result.getMaxReservoirLevel() +"(" + result.getMaxReservoirLevelDate().toString() +")" : ""); - resultDataRow.createCell(colNum++).setCellValue(result.getExceedLimitValue() != null ? - result.getExceedLimitValue().doubleValue() : 0); - resultDataRow.createCell(colNum++).setCellValue(formatDateTime(result.getExceedLimitStart())); - resultDataRow.createCell(colNum).setCellValue(formatDateTime(result.getExceedLimitEnd())); - - // 设置数据行样式 - for (int i = 0; i < resultHeaders.length; i++) { - if (resultDataRow.getCell(i) != null) { - resultDataRow.getCell(i).setCellStyle(dataStyle); - } - } - - return startRow; - } - - /** - * 导出调度指令(保持原有逻辑) - */ - private int exportPlanCommands(Sheet sheet, int startRow, ForecastDispatchPlan plan, CellStyle headerStyle, CellStyle dataStyle) { - List commands = plan.getForecastDispatchCommands(); - if (commands == null || commands.isEmpty()) { - return startRow; - } - - // 指令标题 - Row commandTitleRow = sheet.createRow(startRow++); - Cell commandTitleCell = commandTitleRow.createCell(0); - commandTitleCell.setCellValue("调度指令"); - commandTitleCell.setCellStyle(headerStyle); - - // 合并单元格(指令标题跨5列) - sheet.addMergedRegion(new CellRangeAddress(commandTitleRow.getRowNum(), commandTitleRow.getRowNum(), 0, 4)); - - // 指令表头 - Row commandHeaderRow = sheet.createRow(startRow++); - String[] commandHeaders = { - "指令时间", "泄洪闸", "节制闸", "分水闸", "输水灌溉闸" - }; - for (int i = 0; i < commandHeaders.length; i++) { - Cell cell = commandHeaderRow.createCell(i); - cell.setCellValue(commandHeaders[i]); - cell.setCellStyle(headerStyle); - sheet.setColumnWidth(i, 5000); - } - - // 指令数据 - for (ForecastDispatchCommand command : commands) { - Row commandDataRow = sheet.createRow(startRow++); - int colNum = 0; - commandDataRow.createCell(colNum++).setCellValue(formatDateTime(command.getCommandTime())); - commandDataRow.createCell(colNum++).setCellValue(getGateStatus(command.getFloodGate())); - commandDataRow.createCell(colNum++).setCellValue(getGateStatus(command.getControlGate())); - commandDataRow.createCell(colNum++).setCellValue(getGateStatus(command.getDiversionGate())); - commandDataRow.createCell(colNum).setCellValue(getGateStatus(command.getIrrigationGate())); - - // 设置数据行样式 - for (int i = 0; i < commandHeaders.length; i++) { - if (commandDataRow.getCell(i) != null) { - commandDataRow.getCell(i).setCellStyle(dataStyle); - } - } - } - - return startRow; - } - - /** - * 创建标题样式(保持原有逻辑) - */ - private CellStyle createTitleStyle(Workbook workbook) { - CellStyle style = workbook.createCellStyle(); - Font font = workbook.createFont(); - font.setBold(true); - font.setFontHeightInPoints((short) 14); - style.setFont(font); - return style; - } - - /** - * 创建表头样式(保持原有逻辑) - */ - private CellStyle createHeaderStyle(Workbook workbook) { - CellStyle style = workbook.createCellStyle(); - Font font = workbook.createFont(); - font.setBold(true); - font.setFontHeightInPoints((short) 12); - style.setFont(font); - style.setAlignment(HorizontalAlignment.CENTER); - style.setVerticalAlignment(VerticalAlignment.CENTER); - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(FillPatternType.SOLID_FOREGROUND); - style.setBorderTop(BorderStyle.THIN); - style.setBorderBottom(BorderStyle.THIN); - style.setBorderLeft(BorderStyle.THIN); - style.setBorderRight(BorderStyle.THIN); - return style; - } - - /** - * 创建数据样式(保持原有逻辑) - */ - private CellStyle createDataStyle(Workbook workbook) { - CellStyle style = workbook.createCellStyle(); - style.setAlignment(HorizontalAlignment.LEFT); - style.setVerticalAlignment(VerticalAlignment.CENTER); - style.setBorderTop(BorderStyle.THIN); - style.setBorderBottom(BorderStyle.THIN); - style.setBorderLeft(BorderStyle.THIN); - style.setBorderRight(BorderStyle.THIN); - return style; - } - - /** - * 格式化时间(保持原有逻辑) - */ - private String formatDateTime(LocalDateTime dateTime) { - if (dateTime == null) { - return ""; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - return dateTime.format(formatter); - } - - /** - * 获取字符串值(保持原有逻辑) - */ - private String getStringValue(String value) { - return value == null ? "" : value; - } - - /** - * 获取闸门状态文字(保持原有逻辑) - */ - private String getGateStatus(Integer status) { - if (status == null) { - return "关"; - } - return status == 1 ? "开" : "关"; - } - - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchResultService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchResultService.java deleted file mode 100644 index 251a8ab..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastDispatchResultService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ForecastDispatchResultMapper; -import com.gunshi.project.hsz.model.ForecastDispatchResult; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 调度结果表 - * author: xusan - * date: 2024-12-19 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastDispatchResultService extends ServiceImpl { - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastKService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastKService.java deleted file mode 100644 index 5ac0dec..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastKService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ForecastKMapper; -import com.gunshi.project.hsz.model.ForecastK; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 预报_前期影响雨量折减系数表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastKService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastPPaRService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastPPaRService.java deleted file mode 100644 index 1c944af..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastPPaRService.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ForecastPPaRMapper; -import com.gunshi.project.hsz.model.ForecastPPaR; -import com.gunshi.project.hsz.model.ForecastUseparam; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 预报_降雨径流关系表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastPPaRService extends ServiceImpl -{ - - @Autowired - private ForecastUseparamService forecastUseparamService; - - /** - * @description: 获取列表 - * @return: java.util.List - * @auther: cxw - * @date: 2024-08-07, 周三, 11:11:42 - */ - public List handleList() { - List PPaRList = new ArrayList<>(); - // 获取Im值,限制pa - BigDecimal Im; - Map paramMap = forecastUseparamService.getMap(new QueryWrapper().eq("param_code", "Im")); - if (paramMap != null && paramMap.size() > 0) { - Im = new BigDecimal(paramMap.get("param_value").toString()); - } else { - Im = BigDecimal.valueOf(120.0); - } - List forecastPPaRList = this.list(); - if (CollectionUtils.isNotEmpty(forecastPPaRList)) { - BigDecimal maxPa = forecastPPaRList.stream().map(ForecastPPaR::getPa).reduce(BigDecimal.ZERO, BigDecimal::max); - List pList = forecastPPaRList.stream().map(ForecastPPaR::getPsum).distinct().sorted().collect(Collectors.toList()); - List paList = forecastPPaRList.stream().map(ForecastPPaR::getPa).distinct().sorted().collect(Collectors.toList()); - Map rSumMap = forecastPPaRList.stream().collect(Collectors.toMap(k -> k.getPsum() + "-" + k.getPa(), value -> value.getRsum())); - // 如果pa最大值超过了Im,截取到Im的 - if (maxPa.compareTo(Im) > 0) { - paList = paList.stream().filter(bd -> bd.compareTo(Im) <= 0).collect(Collectors.toList()); - } - List sList = new ArrayList<>(); - // 先添加第一行的Pa - sList.add("P/R/Pa"); - sList.addAll(paList.stream().map(BigDecimal::toString).collect(Collectors.toList())); - PPaRList.add(sList.toArray(new String[0])); - for (int i = 0; i < pList.size(); i++) { - sList = new ArrayList<>(); - BigDecimal p = pList.get(i); - for (int j = 0; j < paList.size(); j++) { - BigDecimal pa = paList.get(j); - // 每次添加rSum时,先添加p - if (j == 0) { - sList.add(String.valueOf(p)); - } - sList.add(rSumMap.get(p + "-" + pa).stripTrailingZeros().toString()); - } - PPaRList.add(sList.toArray(new String[0])); - } - } - return PPaRList; - } - - /** - * @description: 处理批量保存 - * @param PPaRList - * @return: boolean - * @auther: cxw - * @date: 2024-08-06, 周二, 15:29:29 - */ - public boolean handleSaveBatch(List PPaRList) { - Boolean ret = false; - List paStr = new ArrayList<>(); - List pStr = new ArrayList<>(); - Map rSumMap = new HashMap<>(); - // 行 - for (int i = 0; i < PPaRList.size(); i++) { - String[] paArr = PPaRList.get(i); - String p = ""; - // 列 - for (int j = 0; j < paArr.length; j++) { - String pa = ""; - // 第一行:pa - if(i == 0 && j > 0){ - pa = paArr[j]; - paStr.add(pa); - } - // 第一列:p - if(i > 0 && j == 0){ - p = paArr[j]; - pStr.add(p); - } - // rSumMap:key=P-Pa - if (i > 0 && j > 0) { - rSumMap.put(p + "-" + paStr.get(j - 1), new BigDecimal(paArr[j])); - } - } - } - // 组装数据 - if (paStr.size() > 0 && pStr.size() > 0 && rSumMap.size() > 0) { - List forecastPPaRList = new ArrayList<>(); - // 外层pa - for (String pa : paStr) { - // 循环一次pa,r需要重置 - BigDecimal r = BigDecimal.ZERO; - BigDecimal lastRSum = BigDecimal.ZERO; - // 内层p - for (String p : pStr) { - ForecastPPaR forecastPPaR = new ForecastPPaR(); - BigDecimal rSum = rSumMap.get(p + "-" + pa); - forecastPPaR.setRsum(rSum.stripTrailingZeros()); - forecastPPaR.setPsum(new BigDecimal(p).stripTrailingZeros()); - // 循环累减 - r = rSum.subtract(lastRSum); - // 赋值 - lastRSum = rSum; - forecastPPaR.setR(r.stripTrailingZeros()); - forecastPPaR.setPa(new BigDecimal(pa).stripTrailingZeros()); - forecastPPaRList.add(forecastPPaR); - } - } - if (forecastPPaRList.size() > 0) { - // 先全部删除 - this.remove(new QueryWrapper<>()); - ret = this.saveBatch(forecastPPaRList); - } - } - return ret; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastPaService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastPaService.java deleted file mode 100644 index 919061e..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastPaService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ForecastPaMapper; -import com.gunshi.project.hsz.model.ForecastPa; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 预报_土壤含水量表 - * author: cxw - * date: 2024-08-02 12:23:07 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastPaService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastProjectService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastProjectService.java deleted file mode 100644 index 7b9ad65..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastProjectService.java +++ /dev/null @@ -1,287 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.ForecastResultVo; -import com.gunshi.project.hsz.mapper.ForecastProjectMapper; -import com.gunshi.project.hsz.model.ForecastProject; -import com.gunshi.project.hsz.model.ForecastResults; -import com.itextpdf.io.font.PdfEncodings; -import com.itextpdf.kernel.colors.DeviceRgb; -import com.itextpdf.kernel.events.Event; -import com.itextpdf.kernel.events.IEventHandler; -import com.itextpdf.kernel.events.PdfDocumentEvent; -import com.itextpdf.kernel.font.PdfFont; -import com.itextpdf.kernel.font.PdfFontFactory; -import com.itextpdf.kernel.geom.PageSize; -import com.itextpdf.kernel.geom.Rectangle; -import com.itextpdf.kernel.pdf.PdfDocument; -import com.itextpdf.kernel.pdf.PdfPage; -import com.itextpdf.kernel.pdf.PdfWriter; -import com.itextpdf.kernel.pdf.canvas.PdfCanvas; -import com.itextpdf.layout.Document; -import com.itextpdf.layout.element.Cell; -import com.itextpdf.layout.element.Paragraph; -import com.itextpdf.layout.element.Table; -import com.itextpdf.layout.properties.UnitValue; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.zip.ZipOutputStream; - -/** - * 描述: 预报_预测方案管理表 - * author: cxw - * date: 2024-08-05 11:41:45 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastProjectService extends ServiceImpl -{ - - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - @Autowired - private ForecastResultsService forecastResultsService; - - /** - * @description: 保存预报结果 - * @param forecastProject - * @return: void - * @auther: cxw - * @date: 2024-08-06, 周二, 10:06:40 - */ - public Boolean saveForecastResults(ForecastProject forecastProject) throws ParseException { - List retList = new ArrayList<>(); - List voList = forecastProject.getVoList(); - for (ForecastResultVo vo : voList) { - ForecastResults forecastResults = new ForecastResults(); - forecastResults.setId(IdWorker.getId()); - forecastResults.setTm(sdf.parse(vo.getTm())); - forecastResults.setYcRkQValue(vo.getYcRkQValue()); - forecastResults.setRealRkQValue(vo.getRealRkQValue()); - forecastResults.setYcCkQValue(vo.getYcCkQValue()); - forecastResults.setRealCkQValue(vo.getRealCkQValue()); - forecastResults.setYcSwHValue(vo.getYcSwHValue()); - forecastResults.setRealSwHValue(vo.getRealSwHValue()); - forecastResults.setDrp(vo.getDrp()); - forecastResults.setIspreDrp(vo.getIspreDrp()); - forecastResults.setR(vo.getR()); - forecastResults.setProjectId(forecastProject.getId()); - forecastResults.setFlLowLimLev(vo.getFlLowLimLev()); - forecastResults.setCurrentYdgdyjz(vo.getCurrentYdgdyjz()); - forecastResults.setPa(vo.getPa()); - retList.add(forecastResults); - } - return forecastResultsService.saveBatch(retList); - } - - public void generatePdf(ForecastProject project, ZipOutputStream outputStream) { - // 第一次生成:获取总页码 - int totalPages = calculateTotalPages(project); - - // 第二次生成:正式生成带页码的PDF - generatePdfWithPageNumbers(project, outputStream, totalPages); - } - - // 第一次生成:计算总页码 - private int calculateTotalPages(ForecastProject project) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - try (PdfWriter writer = new PdfWriter(baos); - PdfDocument pdfDoc = new PdfDocument(writer); - Document document = new Document(pdfDoc, PageSize.A4.rotate())) { - - // 设置字体 - String fontPath = "/fonts/ChineseFonts.ttf"; - PdfFont font = PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H); - - // 添加内容(但不添加页码) - addContentToDocument(document, font, project, false); - - // 返回总页数 - return pdfDoc.getNumberOfPages(); - - } catch (Exception e) { - log.error("计算PDF页数失败", e); - throw new RuntimeException("PDF页数计算失败"); - } - } - - // 第二次生成:正式生成带页码的PDF - private void generatePdfWithPageNumbers(ForecastProject project, ZipOutputStream outputStream, int totalPages) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - try (PdfWriter writer = new PdfWriter(baos); - PdfDocument pdfDoc = new PdfDocument(writer); - Document document = new Document(pdfDoc, PageSize.A4.rotate())) { - - // 设置字体 - String fontPath = "/fonts/ChineseFonts.ttf"; - PdfFont font = PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H); - - // 添加页码处理器 - PageNumberEventHandler eventHandler = new PageNumberEventHandler(font, totalPages); - pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE, eventHandler); - - // 添加内容 - addContentToDocument(document, font, project, true); - - } catch (Exception e) { - log.error("生成PDF失败", e); - throw new RuntimeException("PDF生成失败"); - } - - // 在try-with-resources块外获取字节数组并写入输出流 - try { - byte[] pdfBytes = baos.toByteArray(); - outputStream.write(pdfBytes); - } catch (IOException e) { - log.error("写入ZIP失败", e); - throw new RuntimeException("写入ZIP失败"); - } - } - - // 页码事件处理器 - 简化版本 - private static class PageNumberEventHandler implements IEventHandler { - private final PdfFont font; - private final int totalPages; - - public PageNumberEventHandler(PdfFont font, int totalPages) { - this.font = font; - this.totalPages = totalPages; - } - - @Override - public void handleEvent(Event event) { - PdfDocumentEvent docEvent = (PdfDocumentEvent) event; - PdfDocument pdfDoc = docEvent.getDocument(); - PdfPage page = docEvent.getPage(); - int currentPage = pdfDoc.getPageNumber(page); - - // 获取页面尺寸 - Rectangle pageSize = page.getPageSize(); - - // 创建画布 - PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), pdfDoc); - - // 设置页码文本 - String pageText = "第 " + currentPage + " 页 / 共 " + totalPages + " 页"; - - // 直接使用PdfCanvas绘制文本(更简单的方式) - pdfCanvas.beginText() - .setFontAndSize(font, 10) - .moveText((pageSize.getLeft() + pageSize.getRight()) / 2 - 50, pageSize.getBottom() + 20) - .showText(pageText) - .endText(); - - pdfCanvas.release(); - } - } - - // 添加内容到文档的公共方法 - private void addContentToDocument(Document document, PdfFont font, ForecastProject project, boolean addPageMargins) throws IOException { - if (addPageMargins) { - // 为页码预留底部边距 - document.setMargins(36, 36, 36, 50); - } - - // 第一行:基本信息 - Paragraph header1 = new Paragraph() - .add("预见期(小时): " + (project.getForecastPeriod() != null ? project.getForecastPeriod() : "无") + " ") - .add("预热期(天): " + (project.getForecastWarm() != null ? project.getForecastWarm() : "无") + " ") - .add("预报时间: " + formatDate(project.getForecastTm()) + " ") - .add("开始时间: " + formatDate(project.getStartTm()) + " ") - .add("结束时间: " + formatDate(project.getEndTm())) - .setFont(font) - .setFontSize(10); - - document.add(header1); - document.add(new Paragraph("\n")); - - // 第二行:统计信息 - Paragraph header2 = new Paragraph() - .add("预报最高调洪水位(m): " + (project.getYcMaxSwH() != null ? project.getYcMaxSwH().setScale(2, RoundingMode.HALF_UP) : "无") + " ") - .add("预报最大入库流量(m³/s): " + (project.getYcMaxRkQ() != null ? project.getYcMaxRkQ().setScale(2, RoundingMode.HALF_UP) : "无") + " ") - .add("预报最大下泄流量(m³/s): " + (project.getYcMaxCkQ() != null ? project.getYcMaxCkQ().setScale(2, RoundingMode.HALF_UP) : "无") + " ") - .add("预报洪水总量(万m³): " + (project.getYcSumFlood() != null ? project.getYcSumFlood().setScale(2, RoundingMode.HALF_UP) : "无")) - .setFont(font) - .setFontSize(10); - - document.add(header2); - document.add(new Paragraph("\n")); - - // 第三行:数据表格 - if (CollectionUtils.isNotEmpty(project.getVoList())) { - Table table = new Table(9); - table.setWidth(UnitValue.createPercentValue(100)); - - // 表头 - table.addHeaderCell(createCell("序号", font, true)); - table.addHeaderCell(createCell("时间", font, true)); - table.addHeaderCell(createCell("降雨量(mm)", font, true)); - table.addHeaderCell(createCell("实测水位(m)", font, true)); - table.addHeaderCell(createCell("预报水位(m)", font, true)); - table.addHeaderCell(createCell("入库流量(m³/s)", font, true)); - table.addHeaderCell(createCell("预报入库流量(m³/s)", font, true)); - table.addHeaderCell(createCell("实际出库流量(m³/s)", font, true)); - table.addHeaderCell(createCell("预报出库流量(m³/s)", font, true)); - - // 表格数据 - int index = 1; - for (ForecastResultVo vo : project.getVoList()) { - table.addCell(createCell(String.valueOf(index++), font, false)); - table.addCell(createCell(vo.getTm(), font, false)); - table.addCell(createCell(formatBigDecimal(vo.getDrp()), font, false)); - table.addCell(createCell(formatBigDecimal(vo.getRealSwHValue()), font, false)); - table.addCell(createCell(formatBigDecimal(vo.getYcSwHValue()), font, false)); - table.addCell(createCell(formatBigDecimal(vo.getRealRkQValue()), font, false)); - table.addCell(createCell(formatBigDecimal(vo.getYcRkQValue()), font, false)); - table.addCell(createCell(formatBigDecimal(vo.getRealCkQValue()), font, false)); - table.addCell(createCell(formatBigDecimal(vo.getYcCkQValue()), font, false)); - } - document.add(table); - } else { - document.add(new Paragraph("无预报结果数据").setFont(font)); - } - } - - // 辅助方法:创建表格单元格 - private Cell createCell(String text, PdfFont font, boolean isHeader) { - Cell cell = new Cell().add(new Paragraph(text).setFont(font).setFontSize(8)); - if (isHeader) { - cell.setBackgroundColor(new DeviceRgb(220, 220, 220)); - cell.setBold(); - } - cell.setPadding(3); - return cell; - } - - // 辅助方法:格式化日期 - private String formatDate(Date date) { - if (date == null) return "无"; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - return sdf.format(date); - } - - // 辅助方法:格式化BigDecimal - private String formatBigDecimal(BigDecimal value) { - if (value == null) return "-"; - return value.setScale(2, RoundingMode.HALF_UP).toString(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastResultsService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastResultsService.java deleted file mode 100644 index 571ffed..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastResultsService.java +++ /dev/null @@ -1,1149 +0,0 @@ -package com.gunshi.project.hsz.service; - -import cn.hutool.core.map.MapUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.algorithm.RrainfallForecast; -import com.gunshi.algorithm.RunoffService; -import com.gunshi.model.vo.FloodAlgorithemVo; -import com.gunshi.project.hsz.common.model.StPptnR; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.entity.vo.ForeRainStatVo; -import com.gunshi.project.hsz.entity.vo.ForeRainTimeVo; -import com.gunshi.project.hsz.entity.vo.ForecastResultVo; -import com.gunshi.project.hsz.grb.RainGrib2Layer; -import com.gunshi.project.hsz.mapper.ForecastResultsMapper; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.DataHandleUtil; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; -import java.net.URLEncoder; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; - -/** - * 描述: 预报_预测结果表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastResultsService extends ServiceImpl -{ - - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - private static SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd"); - - private static SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - - private static SimpleDateFormat eightSdf = new SimpleDateFormat("yyyy-MM-dd 08"); - - private static SimpleDateFormat sixteenSdf = new SimpleDateFormat("yyyy-MM-dd 16"); - - private static SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd HH"); - - @Autowired - private ForecastUseparamService forecastUseparamService; - - @Autowired - private ForecastUService forecastUService; - - @Autowired - private StPptnRService stPptnRService; - - @Autowired - private StRsvrRService stRsvrRService; - - @Autowired - private ForecastService forecastService; - - @Autowired - private StStbprpBService stStbprpBService; - - @Autowired - private StZqrlBService stZqrlBService; - - @Autowired - private ForecastPaService forecastPaService; - - @Autowired - private AttResBaseService attResBaseService; - - @Autowired - private StZvarlBService stZvarlBService; - - - /** - * @description: 自动洪水预测 - * @param forecastTask - * @return: java.util.List - * @auther: cxw - * @date: 2024-07-30, 周二, 14:40:45 - */ - public List autoFloodForecast(ForecastTask forecastTask) throws Exception { - // 获取预测数据 - List voList = excuteForecast(forecastTask); - return voList; - } - - /** - * @description: 获取人工交互洪水预报结果 - * @param forecastTask - * @return: java.util.List - * @auther: cxw - * @date: 2024-07-31, 周三, 11:09:24 - */ - public List getHumanForecastResult(ForecastTask forecastTask) { - // 当前时间整点,作为获取雨量数据历史、预测分隔点 - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - Date nowHourTime = calendar.getTime(); - forecastTask.setNowTime(nowHourTime); - List voList = null; - try { - voList = excuteForecast(forecastTask); - voList.sort(Comparator.comparing(ForecastResultVo::getTm)); - } catch (Exception e) { - e.printStackTrace(); - throw new IllegalArgumentException(e.getMessage()); - } - return voList; - } - - /** - * @description: 组装洪水预报ForecastResultVo - * @param forecastTask - * @return: java.util.List - * @auther: cxw - * @date: 2024-08-05, 周一, 17:14:52 - */ - private List excuteForecast(ForecastTask forecastTask) throws Exception { - List voList = new ArrayList<>(); - // 获取配置参数 - List paramList = forecastUseparamService.list(new QueryWrapper().isNotNull("param_code").isNotNull("param_value")); - if (CollectionUtils.isEmpty(paramList)) { - throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查入参是否缺失。"); - } - // 获取系统当前的水库站编码、汛限水位 - AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>()); - // 多站点水库面雨量 - // List stbs = stStbprpBService.list(new QueryWrapper().eq("res_code", attResBase.getResCode())); - // 单站点 - List stbs = stStbprpBService.list(new QueryWrapper().eq("stcd", attResBase.getStcd())); - if (CollectionUtils.isEmpty(stbs)) { - return voList; - } - Date nowHourTime = forecastTask.getNowTime(); - Date startTime = forecastTask.getStartTime(); - Date endTime = forecastTask.getEndTime(); - // 获取整个时间线的降雨数据 - List pptnRAllList = new ArrayList<>(); - List pptnRFutureList = new ArrayList<>(); - QueryWrapper qwExisted = new QueryWrapper<>(); - Boolean isHaveFuturePPtn = true; - // 檀树岗修改:实测降雨查询表数据,预测降雨使用geom参数。最后按时间算数平均 -// for(StStbprpB b : stbs){ -// String stcd = b.getStcd(); -// // 如果结束时间在当前时间之前,降雨序列从历史降雨表获取 -// if (endTime.compareTo(nowHourTime) <= 0) { -// qwExisted = new QueryWrapper().eq("stcd", stcd).ge("tm", startTime).le("tm", endTime).orderBy(true, true, "tm"); -// } else { -// qwExisted = new QueryWrapper().eq("stcd", stcd).ge("tm", startTime).le("tm", nowHourTime).orderBy(true, true, "tm"); -// try { -// // 获取预报数据 -// pptnRFutureList = getForecastDrpData(nowHourTime, stcd); -// } catch (IllegalArgumentException e) { -// if(stcd.equals(attResBase.getStcd())){ -// isHaveFuturePPtn = false; -// } -// log.error("该时间无预报数据"); -// } -// } -// List pptnRExistedList = stPptnRService.list(qwExisted); -// pptnRAllList.addAll(pptnRExistedList); -// pptnRAllList.addAll(pptnRFutureList); -// } - if (endTime.compareTo(nowHourTime) <= 0) { - qwExisted = new QueryWrapper().in("stcd", stbs.stream().map(StStbprpB::getStcd).toArray(String[]::new)).ge("tm", startTime).le("tm", endTime).orderBy(true, true, "tm"); - } else { - qwExisted = new QueryWrapper().in("stcd", stbs.stream().map(StStbprpB::getStcd).toArray(String[]::new)).ge("tm", startTime).le("tm", nowHourTime).orderBy(true, true, "tm"); - // 获取预报数据 - try { - pptnRFutureList = getForecastDrpData(nowHourTime, attResBase.getStcd()); - if(CollectionUtils.isEmpty(pptnRFutureList)) { - isHaveFuturePPtn = false; - log.error("该时间无预报数据"); - } - } catch (IllegalArgumentException e) { - isHaveFuturePPtn = false; - log.error("该时间无预报数据"); - } - } - List pptnRExistedList = stPptnRService.list(qwExisted); - pptnRAllList.addAll(pptnRExistedList); - pptnRAllList.addAll(pptnRFutureList); - - if (CollectionUtils.isEmpty(pptnRAllList)) { - return voList; - } - // 多站点面雨量结果list - List polyPptnRList = pptnRAllList.stream() - .collect(Collectors.groupingBy( - StPptnR::getTm, - Collectors.mapping( - pptn -> Double.parseDouble(pptn.getDrp()), // 将String转换为double - Collectors.averagingDouble(d -> d) // 计算平均值 - ) - )) - .entrySet().stream() - .map(entry -> new StPptnRAverage(entry.getKey(), String.valueOf(entry.getValue()))) - .sorted(Comparator.comparing(StPptnRAverage::getTm)) - .collect(Collectors.toList()); - double dt = 0.0; - double Wm = 0.0; - double qOther = 0.0; - Map paramMap = paramList.stream().collect(Collectors.toMap(ForecastUseparam::getParamCode, ForecastUseparam::getParamValue, (existing, replacement) -> existing)); - if (paramMap.get("dt").isEmpty()) { - throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查时间单元△T是否缺失。"); - } - if (paramMap.get("Im").isEmpty()) { - throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查最大初损值Im是否缺失。"); - } - if (!paramMap.get("qOther").isEmpty()) { - qOther = Double.parseDouble(paramMap.get("qOther")); - } - dt = Double.parseDouble(paramMap.get("dt")); - // dt = Double.parseDouble("1.0"); - Wm = Double.parseDouble(paramMap.get("Im")); - List uList = forecastUService.list(); - if (CollectionUtils.isEmpty(uList)) { - throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查U(I)单位线是否缺失。"); - } - // 每小时的单位径流量,单位m³/s - double[] u = uList.stream().mapToDouble(forecastU -> forecastU.getUValue().doubleValue()).toArray(); - // 根据开始结束时间查询pa - Calendar cal = Calendar.getInstance(); - cal.setTime(startTime); - // 将日期往前推一天 - cal.add(Calendar.DATE, -1); - List paList = forecastPaService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).ge("tm", sdfDay.format(cal.getTime())).le("tm", sdfDay.format(endTime))); - if (CollectionUtils.isEmpty(paList)) { - throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查每日土壤含水量Pa是否缺失。"); - } - Map paMap = paList.stream().collect(Collectors.toMap(ForecastPa::getTm, entity -> entity, (existing, replacement) -> existing)); - // 获取预测开始时间前的最后水库水位 - double H1 = 0.0;// 初始水库水位,可以根据H1->V1,H1->q1得到初始的水库库容和下泄流量 - StRsvrR rsvrR = stRsvrRService.getOne(new QueryWrapper().eq("stcd", attResBase.getStcd()).le("tm", startTime).orderBy(true, false, "tm").last("limit 1")); - if (ObjectUtils.isEmpty(rsvrR)) { - return voList; - } - H1 = Double.parseDouble(rsvrR.getRz()); - // 泄流量 - List stZqrlBList = stZqrlBService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).orderBy(true, true, "z")); - // 库容曲线 - List zvarlBS = stZvarlBService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).orderBy(true, true, "rz")); - // 水位历史数据 - List rsvrRRealList = stRsvrRService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).ge("tm", startTime).le("tm", endTime)); - for (StRsvrR stRsvrR : rsvrRRealList) { - // 使用Java 8时间API - Date originalTime = stRsvrR.getTm(); - if (originalTime != null) { - LocalDateTime ldt = originalTime.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime() - .withMinute(0) - .withSecond(0) - .withNano(0); - - Date truncatedTime = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant()); - stRsvrR.setTm(truncatedTime); - } - } - List resultList = reorganizeRsvrRData(rsvrRRealList, dt); - List periods = splitByDay8To8(startTime, endTime); - // v:累计降雨 - BigDecimal vValue = BigDecimal.ZERO; - BigDecimal vSum = BigDecimal.ZERO; - // Rsum:累计径流深 - BigDecimal Rsum = BigDecimal.ZERO; - BigDecimal Psum = BigDecimal.ZERO; - // 存储最后u的长度-1个r值 - for (int k = 0; k < periods.size(); k++) { - Date[] period = periods.get(k); - Calendar calNew = Calendar.getInstance(); - calNew.setTime(period[0]); - // 根据每段时间的开始时间,如果在08点前,则采用前一天的pa值计算 - if (isBeforeEightAM(period[0])) { - // 将日期往前推一天 - calNew.add(Calendar.DATE, -1); - } - ForecastPa forecastPa = paMap.get(sdfDay.format(calNew.getTime())); - if (ObjectUtils.isEmpty(forecastPa)) { - continue; -// throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查每日土壤含水量Pa、K值是否缺失。"); - } - // 根据降雨数据,按照△t的颗粒度,均分 - // 筛选时间段内的降雨数据。不包前但包后 - List filterList = polyPptnRList.stream().filter(e -> e.getTm().compareTo(period[0]) >= 0).filter(e -> e.getTm().compareTo(period[1]) <= 0).collect(Collectors.toList()); - Map> retMap = new HashMap<>(); - if (CollectionUtils.isNotEmpty(filterList)) { - retMap = reorganizePptnRData(filterList, dt, period[0], period[1], nowHourTime, isHaveFuturePPtn); - } - if (ObjectUtils.isEmpty(retMap.get("listForForecast"))) { - continue; - } - List pForecastList = retMap.get("listForForecast").stream().map(s -> s.getDrp()).collect(Collectors.toList()); - if (pForecastList.size() == 0) { - continue; - } - if (ObjectUtils.isEmpty(retMap.get("listForReal"))) { - continue; - } - Map pRealMap = retMap.get("listForReal").stream().collect(Collectors.toMap(pptnR -> sdfMinute.format(pptnR.getTm()), StPptnR::getDrp, (existing, replacement) -> existing)); - double[] PList = pForecastList.stream().mapToDouble(Double::parseDouble).toArray(); - vSum = vSum.add(vValue); - vValue = BigDecimal.ZERO; - for (double value : PList) { - BigDecimal bd = BigDecimal.valueOf(value); - // 累加到总和中 - vValue = vValue.add(bd); - } - - // 存储上一次的径流深r,最开始默认全部为0 - List lastRArr = new ArrayList<>(); - for (int i = 0; i < u.length - 1; i++) { - lastRArr.add(0.0); // 填充初始值 - } - // 从后往前遍历不定长的实体列表 - for (int i = voList.size() - 1; i >= 0; i--) { - int index = lastRArr.size() - 1 - (voList.size() - 1 - i); - lastRArr.set(index, voList.get(i).getR().doubleValue()); - if(index <= 0){ - break; - } - } - - // 预测执行 - List forecastVoList = RrainfallForecast.getData(sdf.format(period[0]), forecastPa.getK().doubleValue(), forecastPa.getPa0().doubleValue(), Wm, forecastPa.getPt0().doubleValue(), H1, dt, - forecastPa.getPa().doubleValue(), PList, u, attResBase.getStcd(), qOther, vSum.doubleValue(), Rsum.doubleValue(), lastRArr); - if (CollectionUtils.isNotEmpty(forecastVoList)) { - // 筛选同时段的真实水位数据 - List realRsvrList = resultList.stream().filter(item -> item.getTm().compareTo(period[0]) >= 0 && item.getTm().compareTo(period[1]) <= 0).collect(Collectors.toList()); - Map realRsvrMap = realRsvrList.stream().collect(Collectors.toMap(rsvr -> sdfMinute.format(rsvr.getTm()), StRsvrR::getRz, (existing, replacement) -> existing)); - forecastVoList = forecastVoList.subList(0, PList.length + 1); - // 去除预测出来的最后一条与第二次实际的相同时间的数据 - if (voList.size() > 0 && voList.get(voList.size() - 1).getTm().equals(forecastVoList.get(0).getDateStr())) { - voList.remove(voList.size() - 1); - } - for (int j = 0; j < forecastVoList.size(); j++) { - FloodAlgorithemVo floodAlgorithemVo = forecastVoList.get(j); - // dt不同,预测结果的条数不同(跟new_q参数有关) - if (floodAlgorithemVo.getDateStr().substring(0, 15).compareTo(sdfMinute.format(period[1])) > 0) { - break; - } - String dateStr = floodAlgorithemVo.getDateStr(); - ForecastResultVo resultVo = new ForecastResultVo(); - resultVo.setTm(dateStr); - resultVo.setYcRkQValue(floodAlgorithemVo.getRq());// 预测入库流量 -// resultVo.setRealRkQValue();// 暂无真实入库流量 - resultVo.setYcCkQValue(floodAlgorithemVo.getCq());// 预测出库流量 - resultVo.setYcSwHValue(floodAlgorithemVo.getKh());// 预测水库水位 - H1 = resultVo.getYcSwHValue().doubleValue();// 以预测水位作为下一次预测段起始值 - String dateMinuteStr = dateStr.substring(0, dateStr.length() - 3);// 年月日 时分 - if (realRsvrMap.containsKey(dateMinuteStr)) { - BigDecimal realSwHValue = new BigDecimal(realRsvrMap.get(dateMinuteStr));// 根据时间取更准确 - resultVo.setRealSwHValue(realSwHValue);// 真实水库水位 - calculateCap(zvarlBS, resultVo, realSwHValue);// 有真实水位就用真实水位算(作为实测库容) - resultVo.setSwHDValue(resultVo.getYcSwHValue().subtract(resultVo.getRealSwHValue()));// 预测与真实水位差 - // 注释:修复跨8点时的陡升陡降 -// H1 = realSwHValue.doubleValue();// 如果有真实水位,将最后一条的真实水位作为下一次预测段的初始水位 - // 真实出库流量=真实水库水位与泄流量曲线差值法 - if (realSwHValue != null && CollectionUtils.isNotEmpty(stZqrlBList)) { - BigDecimal maxZ = stZqrlBList.stream().max(Comparator.comparing(StZqrlB::getZ)).get().getZ(); - BigDecimal minZ = stZqrlBList.stream().min(Comparator.comparing(StZqrlB::getZ)).get().getZ(); - if (realSwHValue.compareTo(minZ) < 0 || realSwHValue.compareTo(maxZ) > 0) { - resultVo.setRealCkQValue(BigDecimal.ZERO);// 真实出库流量 - } else { - Map stZvalMap = stZqrlBList.stream().collect(Collectors.toMap(StZqrlB::getZ, StZqrlB::getQ, (existing, replacement) -> existing)); - List list = stZqrlBList.stream().map(StZqrlB::getZ).collect(Collectors.toList()); - resultVo.setRealCkQValue(DataHandleUtil.calcData(realSwHValue, stZvalMap, list));// 真实出库流量 - } - } - } else { - // 没有真实水位就用预测水位算(作为预测库容) - calculateCap(zvarlBS, resultVo, resultVo.getYcSwHValue()); - } - - String pRealDrp = "0.0"; - if (pRealMap.containsKey(dateMinuteStr)) { - pRealDrp = pRealMap.get(dateMinuteStr); - } - BigDecimal drp = new BigDecimal(pRealDrp);// 根据时间取更准确 - if (drp.compareTo(BigDecimal.ZERO) < 0) { - resultVo.setDrp(BigDecimal.ZERO); - } else { - resultVo.setDrp(drp); - } - Psum = Psum.add(resultVo.getDrp()); - resultVo.setPSum(Psum); - Date dateTm = sdf.parse(floodAlgorithemVo.getDateStr()); - resultVo.setIspreDrp(dateTm.compareTo(nowHourTime) <= 0 ? "0" : "1");// 0:真实 1:预测 - resultVo.setR(floodAlgorithemVo.getR()); - if (resultVo.getR() != null) { - Rsum = Rsum.add(resultVo.getR()); - } else { - continue; - } - resultVo.setRSum(Rsum); - resultVo.setFlLowLimLev(attResBase.getFlLowLimLev()); - resultVo.setCurrentYdgdyjz(MapUtil.get(paramMap, "ydgdyjz", BigDecimal.class, BigDecimal.ZERO)); - resultVo.setPa(floodAlgorithemVo.getPa()); - voList.add(resultVo); - } - } - } - return voList; - } - - - /** - * @description: 根据水位计算库容 - * @param zvarlBS 库容曲线 - * @param resultVo vo - * @param rz 当前水位 - * @return: void - * @auther: cxw - * @date: 2024-10-14, 周一, 09:36:13 - */ - private void calculateCap(List zvarlBS, ForecastResultVo resultVo, BigDecimal rz){ - if(CollectionUtils.isNotEmpty(zvarlBS)){ - BigDecimal maxRz = zvarlBS.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); - BigDecimal minRz = zvarlBS.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); - if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ - return; - } - Map stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW, (existing, replacement) -> existing)); - List list = zvarlBS.stream().map(StZvarlB::getRz).sorted().collect(Collectors.toList()); - resultVo.setNowCap(DataHandleUtil.calcData(rz,stZvalMap,list)); - } - } - - /** - * 计算时间的小时差值 - */ - private static double dateHourDifference(Date beforeDate, Date afterDate) { - long time1 = beforeDate.getTime(); // 获取第一个时间的毫秒时间戳 - long time2 = afterDate.getTime(); // 获取第二个时间的毫秒时间戳 - // 计算两个时间戳的差值 - long difference = time2 - time1; - // 将差值转换为小时 - double hours = difference / (60 * 60 * 1000); - return hours; - } - - /** - * 根据时间获取气象降雨预报 - */ - public List getForecastDrpData(Date now, String stcd) { - List pptnRFutureList = new ArrayList<>(); -// StStbprpB stStbprpB = stStbprpBService.getOne(new QueryWrapper().eq("stcd", stcd)); - ForecastUseparam forecastUseparam = forecastUseparamService.getOne(new QueryWrapper().eq("param_code", "geom")); - String tm = "";// 时间格式应为:YYYYMMDDHH其中HH只能为08或20,例如2023062908 - if (isBeforeEightAM(now)) { - tm = sixteenSdf.format(now); - } else { - tm = eightSdf.format(now); - } - tm = tm.replaceAll(" ", "").replaceAll("-", ""); - List gribList = forecastService.getGribData(tm, false); - if(CollectionUtils.isEmpty(gribList)){ - return pptnRFutureList; - } - //24小时每个网格的总量 - List total = gribList.stream().filter(o -> o.getTmRange().getInterval() == 24).collect(Collectors.toList()); - //24小时每个网格的逐小时雨量 - List detail = gribList.stream().filter(o -> o.getTmRange().getInterval() == 1).collect(Collectors.toList()); -// ForeRainVo vo = new ForeRainVo(); -// vo.setStcd(stcd); -// vo.setLgtd(stStbprpB.getLgtd()); -// vo.setLttd(stStbprpB.getLttd()); -// List data = forecastService.getData(vo, total, detail); - // 2024-10-14 改为获取水库整个面的降雨 - ForeRainStatVo vo = new ForeRainStatVo(); - String[] paramValue = forecastUseparam.getParamValue().split(",");// x1,y1,x2,y2 - vo.setGeom(buildRectangleGeoJson(Double.parseDouble(paramValue[0]), Double.parseDouble(paramValue[1]), Double.parseDouble(paramValue[2]), Double.parseDouble(paramValue[3]), total.get(0))); - List data = forecastService.getAreaData(vo, total, detail); - if (CollectionUtils.isNotEmpty(data)) { - for (ForeRainTimeVo foreRainTimeVo : data) { - // 只取当前时间之后的数据 - if (foreRainTimeVo.getTm().compareTo(now) > 0) { - StPptnR stPptnR = new StPptnR(); - stPptnR.setStcd(stcd); - stPptnR.setTm(foreRainTimeVo.getTm()); - stPptnR.setDrp(foreRainTimeVo.getDrp().toString()); - pptnRFutureList.add(stPptnR); - } - } - } - return pptnRFutureList; - } - - /** - * @description: 根据△T来整编实际水位数据 - * @param rsvrRRealList - * @param dt - * @return: java.util.List - * @auther: cxw - */ - private List reorganizeRsvrRData(List rsvrRRealList, double dt) { - // 只保留整小时的数据 - rsvrRRealList = rsvrRRealList.stream().filter(entity -> { - Date date = entity.getTm(); - return date.getMinutes() == 0 && date.getSeconds() == 0; - }).collect(Collectors.toMap( - e -> e.getStcd() + "_" + e.getTm(), // 使用属性组合作为键 - Function.identity(), - (existing, replacement) -> existing // 如果有冲突,保留现有的 - )).values().stream().collect(Collectors.toList()); - rsvrRRealList.sort(Comparator.comparing(StRsvrR::getTm)); - // 每次加0小时30分钟,根据dt设置,此时dt=0.5小时 - int totalMinutes = (int) Math.round(dt * 60); - // 计算小时数 - int hours = totalMinutes / 60; - // 计算剩余的分钟数(即不足一小时的部分) - int minutes = totalMinutes % 60; - List resultList = new ArrayList<>(); - for (int i = 0; i < rsvrRRealList.size(); i++) { - StRsvrR stRsvrR = rsvrRRealList.get(i); - resultList.add(stRsvrR); - Date tm = stRsvrR.getTm(); - String drp = stRsvrR.getRz(); - if (i + 1 == rsvrRRealList.size()) { - break; - } else { - StRsvrR stRsvrRNext = rsvrRRealList.get(i + 1); - // 两条数据的小时差 - double diffHours = dateHourDifference(stRsvrR.getTm(), stRsvrRNext.getTm()); - int floorNum = (int) Math.floor(diffHours / dt); - BigDecimal meanDifference = new BigDecimal(stRsvrRNext.getRz()).subtract(new BigDecimal(drp)).divide(new BigDecimal(floorNum), 3, BigDecimal.ROUND_HALF_UP); - for (int j = 1; j < floorNum; j++) { - // 增补出的数据 - StRsvrR suppleStRsvrR = new StRsvrR(); - BigDecimal add = new BigDecimal(drp).add(meanDifference.multiply(new BigDecimal(j))).setScale(3, BigDecimal.ROUND_HALF_UP); - try { - tm = sdf.parse(RunoffService.calc(sdf.format(tm), hours, minutes, true)); - suppleStRsvrR.setTm(tm); - } catch (ParseException e) { - throw new RuntimeException(e); - } - suppleStRsvrR.setRz(add.toString()); - suppleStRsvrR.setStcd(stRsvrR.getStcd()); - resultList.add(suppleStRsvrR); - } - } - } - return resultList; - } - - /** - * @description: 根据△T来整编雨量数据 - * @param filterList - * @param dt - * @param startTm - * @param endTm - * @param nowHourTime - * @param isHaveFuturePPtn - * @return: java.util.List - * @auther: cxw - */ - private Map> reorganizePptnRData(List filterList, double dt, Date startTm, Date endTm, Date nowHourTime, Boolean isHaveFuturePPtn) { - // 目前dt适配0.5和1 - // 只保留整小时的数据 - filterList = filterList.stream().filter(entity -> { - Date date = entity.getTm(); - return date.getMinutes() == 0 && date.getSeconds() == 0; - }).collect(Collectors.toMap( - e -> e.getStcd() + "_" + e.getTm(), // 使用属性组合作为键 - Function.identity(), - (existing, replacement) -> existing // 如果有冲突,保留现有的 - )).values().stream().collect(Collectors.toList()); - filterList.sort(Comparator.comparing(StPptnR::getTm)); - Map> retMap = new HashMap<>(); - Map tmDrpMap = filterList.stream().collect(Collectors.toMap(pptnR -> sdfMinute.format(pptnR.getTm()), StPptnR::getDrp, (existing, replacement) -> existing)); - List listForForecast = new ArrayList<>();// 传给预测程序使用,缺失的数据为0 - List listForReal = new ArrayList<>();// 返回给前端数据使用,缺失的数据为null - Calendar calendar = Calendar.getInstance(); - calendar.setTime(startTm); - Date dataTm = calendar.getTime(); - // 使用时间一直往后加时间 - while (dataTm.compareTo(endTm) < 0) { - // 当数据时间超过实时数据的最大时间并且没有预测雨量数据时,跳出 - if(dataTm.compareTo(nowHourTime) >= 0 && !isHaveFuturePPtn){ - break; - } - // 时间加1小时,得到应该拆数据的时间,后面往前推 - calendar.add(Calendar.HOUR_OF_DAY, 1); - String shareDrp = "";// 应该分的drp - // 如果下一小时不为空 - if (tmDrpMap.containsKey(sdfMinute.format(calendar.getTime()))) { - StPptnR stPptnRHalf = new StPptnR(); - StPptnR stPptnRHour = new StPptnR(); - stPptnRHour.setTm(calendar.getTime());// 整点时间 - String dataTmDrpHalf = tmDrpMap.get(sdfMinute.format(calendar.getTime())); - // 按照dt分 - BigDecimal drp = new BigDecimal(dataTmDrpHalf).multiply(new BigDecimal(dt)); - shareDrp = String.valueOf(drp); - stPptnRHalf.setDrp(shareDrp); - stPptnRHour.setDrp(shareDrp); - // 往前推半小时 - calendar.add(Calendar.MINUTE, -(int) (dt * 60)); - stPptnRHalf.setTm(calendar.getTime()); - if (BigDecimal.ONE.compareTo(BigDecimal.valueOf(dt)) != 0) { - // 存半小时数据 - listForForecast.add(stPptnRHalf); - listForReal.add(stPptnRHalf); - } - // 存整小时数据 - listForForecast.add(stPptnRHour); - listForReal.add(stPptnRHour); - } else { - StPptnR stPptnRHalfForecast = new StPptnR(); - StPptnR stPptnRHourForecast = new StPptnR(); - StPptnR stPptnRHalfReal = new StPptnR(); - StPptnR stPptnRHourReal = new StPptnR(); - stPptnRHourForecast.setTm(calendar.getTime());// 整点时间 - stPptnRHourReal.setTm(calendar.getTime());// 整点时间 - // 往前推半小时 - calendar.add(Calendar.MINUTE, -(int) (dt * 60)); - stPptnRHalfForecast.setTm(calendar.getTime()); - stPptnRHalfReal.setTm(calendar.getTime()); - if(BigDecimal.ONE.compareTo(BigDecimal.valueOf(dt)) != 0){ - // 存半小时数据 - stPptnRHalfForecast.setDrp("0.00"); - listForForecast.add(stPptnRHalfForecast); - stPptnRHalfReal.setDrp("-1"); - listForReal.add(stPptnRHalfReal); - } - // 存整小时数据 - stPptnRHourForecast.setDrp("0.00"); - listForForecast.add(stPptnRHourForecast); - stPptnRHourReal.setDrp("-1"); - listForReal.add(stPptnRHourReal); - } - // 往后推半小时复位 - calendar.add(Calendar.MINUTE, (int) (dt * 60)); - dataTm = calendar.getTime(); - } - retMap.put("listForForecast", listForForecast); - retMap.put("listForReal", listForReal); - return retMap; - } - - /** - * @description: 将两个时间按照早八点分割成多段 - * @param startDate - * @param endDate - * @return: java.util.List - * @auther: cxw - */ - public static List splitByDay8To8(Date startDate, Date endDate) { - List periods = new ArrayList<>(); - - Calendar cal = Calendar.getInstance(); - cal.setTime(startDate); - - // 第一个时间段特殊处理:从startDate到第二天的8点(如果startDate晚于当天8点) - // 或者如果startDate在当天8点之前,则直接包含在当前天的8点到下一个8点周期内 - if (cal.get(Calendar.HOUR_OF_DAY) >= 8) { - // startDate晚于或等于当天8点,但我们需要到第二天的8点作为结束 - cal.add(Calendar.DAY_OF_MONTH, 1); // 跳到下一天 - cal.set(Calendar.HOUR_OF_DAY, 8); - cal.set(Calendar.MINUTE, 0); - cal.set(Calendar.SECOND, 0); - cal.set(Calendar.MILLISECOND, 0); - Date endOfDay = cal.getTime(); - periods.add(new Date[]{startDate, endOfDay}); - cal.setTime(endOfDay); // 准备下一个时间段的开始 - } - - // 循环生成剩余的时间段 - while (!cal.getTime().after(endDate)) { - Date currentStart = cal.getTime(); - if (cal.get(Calendar.HOUR_OF_DAY) >= 8) { - cal.add(Calendar.DAY_OF_MONTH, 1); // 移到下一天 - } - cal.set(Calendar.HOUR_OF_DAY, 8); - cal.set(Calendar.MINUTE, 0); - cal.set(Calendar.SECOND, 0); - cal.set(Calendar.MILLISECOND, 0); - Date currentEnd = cal.getTime(); - // 如果currentEnd超出了endDate,则调整currentEnd为endDate - if (currentEnd.after(endDate)) { - currentEnd = endDate; - } - periods.add(new Date[]{currentStart, currentEnd}); - // 准备下一个时间段的开始(但在这个循环中它不会被使用,因为循环会终止) - } - return periods; - } - - - /** - * 判断date是否在早八点后还是前(true:在8:00前) - */ - public static boolean isBeforeEightAM(Date date) { - Calendar calendar = Calendar.getInstance(); - // 先设置当前时间 - calendar.setTime(date); - calendar.set(Calendar.HOUR_OF_DAY, 8); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - return date.before(calendar.getTime()); - } - - /** - * @description: 处理voList,获取预报最大属性值 - * @param forecastProject - * @return: void - * @auther: cxw - * @date: 2024-08-07, 周三, 15:52:19 - */ - public void handleVoList(ForecastProject forecastProject) { - Map paramMap = forecastUseparamService.getMap(new QueryWrapper().eq("param_code", "dt")); - if(paramMap != null){ - BigDecimal dt = new BigDecimal(paramMap.get("param_value").toString());// 时间间隔:小时h - BigDecimal ycMaxSwH = BigDecimal.ZERO;// 预报最高调洪水位 - BigDecimal ycMaxRkQ = BigDecimal.ZERO;// 预报最大入库流量 - BigDecimal ycMaxCkQ = BigDecimal.ZERO;// 预报最大下泄流量 - BigDecimal ycSumRkQ = BigDecimal.ZERO;// 预报入库流量累计和 - for (ForecastResultVo vo : forecastProject.getVoList()){ - BigDecimal ycSwHValue = vo.getYcSwHValue(); - if (ycSwHValue.compareTo(ycMaxSwH) > 0) { - ycMaxSwH = ycSwHValue; - } - BigDecimal ycRkQValue = vo.getYcRkQValue(); - if (ycRkQValue.compareTo(ycMaxRkQ) > 0) { - ycMaxRkQ = ycRkQValue; - } - BigDecimal ycCkQValue = vo.getYcCkQValue(); - if (ycCkQValue.compareTo(ycMaxCkQ) > 0) { - ycMaxCkQ = ycCkQValue; - } - ycSumRkQ = ycSumRkQ.add(ycRkQValue); - } - // 预报洪水总量(万m³)=预报入库流量累计和 X (dt*60*60) / 10000 - BigDecimal ycSumFlood = ycSumRkQ.multiply((dt.multiply(new BigDecimal(3600)))).divide(new BigDecimal(10000), 6, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); - forecastProject.setYcMaxSwH(ycMaxSwH); - forecastProject.setYcMaxRkQ(ycMaxRkQ); - forecastProject.setYcMaxCkQ(ycMaxCkQ); - forecastProject.setYcSumFlood(ycSumFlood); - } - } - - public static String buildRectangleGeoJson(double x1, double y1, double x2, double y2, RainGrib2Layer layer) { - // x1,y1和x2,y2的间隔必须要大于网格的最小长宽,才能相交 - BigDecimal dh = layer.getDh();// 单位高度 - BigDecimal dw = layer.getDw();// 单位宽度 - if(dw.compareTo(BigDecimal.valueOf(x2 - x1)) > 0 || dh.compareTo(BigDecimal.valueOf(y2 - y1)) > 0){ - throw new IllegalArgumentException("Geom参数区域范围不足预测降雨网格最小单位!!!"); - } - // 校验数据是否在最大允许范围(预测降雨所划定区域) - Double x11 = ForecastService.x1; - Double y11 = ForecastService.y1; - Double x22 = ForecastService.x2; - Double y22 = ForecastService.y2; - /* y - * ↑ x22,y22 - * ↑ x2,y2 - * ↑ - * ↑ x1,y1 - * ↑ x11,y11 - * ——>——>——>——>——>——>——>——>——>——>——>——> x - */ -// if(x11.compareTo(Double.valueOf(x1)) > 0 || y11.compareTo(Double.valueOf(y1)) > 0 || x22.compareTo(Double.valueOf(x2)) < 0 || y22.compareTo(Double.valueOf(y2)) < 0){ -// throw new IllegalArgumentException("Geom参数超出预测降雨范围!!!"); -// } - if (!(x11.compareTo(Double.valueOf(x1)) <= 0 && x11.compareTo(Double.valueOf(x2)) <= 0 && x22.compareTo(Double.valueOf(x1)) >= 0 && x22.compareTo(Double.valueOf(x2)) >= 0 - && y11.compareTo(Double.valueOf(y1)) <= 0 && y11.compareTo(Double.valueOf(y2)) <= 0 && y22.compareTo(Double.valueOf(y1)) >= 0 && x22.compareTo(Double.valueOf(y2)) >= 0)) { - throw new IllegalArgumentException("Geom参数超出预测降雨范围!!!"); - } - - double[] corner1 = {x1, y1}; - double[] corner2 = {x2, y2}; - // 构造矩形的四个顶点(这里假设corner1是左下,corner2是右上) - double[][][] coordinates2D = { - { - {corner1[0], corner1[1]}, // 左下角 - {corner2[0], corner1[1]}, // 右上角 - {corner2[0], corner2[1]}, // 右下角 - {corner1[0], corner2[1]}, // 左上角 - {corner1[0], corner1[1]} // 回到左下角,闭合多边形 - } - }; - - // 为了适应四层数组结构,我们添加一个额外的数组层 - double[][][][] customCoordinates = {coordinates2D}; - - // 构建自定义的JSON字符串(注意:这不是标准的GeoJSON) - StringBuilder jsonBuilder = new StringBuilder(); - jsonBuilder.append("{"); - jsonBuilder.append("\"type\": \"CustomPolygon\","); // 使用自定义类型 - jsonBuilder.append("\"coordinates\": "); - jsonBuilder.append("["); - - // 遍历并添加坐标到JSON字符串中 - for (double[][][] ring : customCoordinates) { - jsonBuilder.append("["); - for (double[][] line : ring) { - jsonBuilder.append("["); - for (double[] point : line) { - jsonBuilder.append("["); - jsonBuilder.append(point[0]); // 经度 - jsonBuilder.append(","); - jsonBuilder.append(point[1]); // 纬度 - jsonBuilder.append("],"); - } - jsonBuilder.append("]"); - } - jsonBuilder.append("]"); - } - - jsonBuilder.append("]"); // 闭合最外层的坐标数组 - jsonBuilder.append("}"); // 闭合JSON对象 - return jsonBuilder.toString(); - } - - - public List calculateY(SyRegressionData syRegressionData, List voList) { - //过滤出预测时间的数据 - List collect = voList.stream().filter(o -> { - return o.getIspreDrp().equals("1"); - }).collect(Collectors.toList()); - - //获取方程组 - String regressionEquation = syRegressionData.getRegressionEquation(); - List res = new ArrayList<>(); - - //进行计算 - for (ForecastResultVo forecastResultVo : collect) { - // 获取预测水位值作为x - BigDecimal x = forecastResultVo.getYcSwHValue(); - if (x == null) { - continue; // 如果x为空,跳过计算 - } - - // 根据回归方程计算y值 - BigDecimal y = calculateRegressionValue(regressionEquation, x); - - // 构建返回结果 - OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); - detailVo.setTm(forecastResultVo.getTm()); // 监测时间 - detailVo.setValue(y); // 计算得到的监测值 - detailVo.setRz(x); // 库水位(使用预测水位值) - - res.add(detailVo); - } - - // 按时间升序排列 - res.sort((o1, o2) -> { - if (o1.getTm() == null && o2.getTm() == null) { - return 0; - } - if (o1.getTm() == null) { - return -1; - } - if (o2.getTm() == null) { - return 1; - } - return o1.getTm().compareTo(o2.getTm()); - }); - - return res; - } - - /** - * 根据回归方程计算y值(高精度计算) - * @param equation 回归方程字符串 - * @param x 自变量x的值 - * @return 计算得到的y值 - */ - private BigDecimal calculateRegressionValue(String equation, BigDecimal x) { - if (equation == null || equation.trim().isEmpty()) { - return BigDecimal.ZERO; - } - - // 清理方程字符串,移除空格和y= - String cleanEquation = equation.replace("y =", "").replace(" ", "").toLowerCase(); - - try { - BigDecimal result; - // 根据方程的形式判断阶数并计算(支持数学符号和传统符号) - if (cleanEquation.contains("x⁴") || cleanEquation.contains("x^4")) { - result = calculateFourthOrder(cleanEquation, x); - } else if (cleanEquation.contains("x³") || cleanEquation.contains("x^3")) { - result = calculateThirdOrder(cleanEquation, x); - } else if (cleanEquation.contains("x²") || cleanEquation.contains("x^2")) { - result = calculateSecondOrder(cleanEquation, x); - } else { - result = calculateFirstOrder(cleanEquation, x); - } - // 只在最后结果保留两位小数,中间计算过程保持高精度 - return result.setScale(2, RoundingMode.HALF_UP); - } catch (Exception e) { - // 计算异常时返回0 - return BigDecimal.ZERO; - } - } - - /** - * 计算一阶线性方程 y = ax + b(高精度) - */ - private BigDecimal calculateFirstOrder(String equation, BigDecimal x) { - // 解析方程系数,格式如:0.0455x+94.2395 - String[] parts = equation.split("x"); - if (parts.length < 2) { - return BigDecimal.ZERO; - } - - BigDecimal a = parseCoefficient(parts[0]); - BigDecimal b = parseCoefficient(parts[1]); - - // 高精度计算:a * x + b - return a.multiply(x, MathContext.DECIMAL128).add(b, MathContext.DECIMAL128); - } - - /** - * 计算二阶方程 y = ax² + bx + c(高精度) - */ - private BigDecimal calculateSecondOrder(String equation, BigDecimal x) { - // 解析方程系数,格式如:-68.4211x²+16312.8684x-972224.1397 - String normalizedEquation = equation.replace("x^2", "x²"); - String[] parts = normalizedEquation.split("x"); - if (parts.length < 3) { - return BigDecimal.ZERO; - } - - BigDecimal a = parseCoefficient(parts[0]); - BigDecimal b = parseCoefficient(parts[1].replace("²", "")); - BigDecimal c = parseCoefficient(parts[2]); - - // 高精度计算:x² = x * x - BigDecimal x2 = x.multiply(x, MathContext.DECIMAL128); - - // 高精度计算:a * x² + b * x + c - BigDecimal term1 = a.multiply(x2, MathContext.DECIMAL128); - BigDecimal term2 = b.multiply(x, MathContext.DECIMAL128); - return term1.add(term2, MathContext.DECIMAL128).add(c, MathContext.DECIMAL128); - } - - /** - * 计算三阶方程 y = ax³ + bx² + cx + d(高精度) - */ - private BigDecimal calculateThirdOrder(String equation, BigDecimal x) { - // 解析方程系数,格式如:-2291.6667x³+819497.9167x²-97683901.8750x+3881297151.1650 - String normalizedEquation = equation.replace("x^3", "x³").replace("x^2", "x²"); - String[] parts = normalizedEquation.split("x"); - if (parts.length < 4) { - return BigDecimal.ZERO; - } - - BigDecimal a = parseCoefficient(parts[0]); - BigDecimal b = parseCoefficient(parts[1].replace("³", "").replace("²", "")); - BigDecimal c = parseCoefficient(parts[2].replace("²", "")); - BigDecimal d = parseCoefficient(parts[3]); - - // 高精度计算:x² = x * x, x³ = x² * x - BigDecimal x2 = x.multiply(x, MathContext.DECIMAL128); - BigDecimal x3 = x2.multiply(x, MathContext.DECIMAL128); - - // 高精度计算:a * x³ + b * x² + c * x + d - BigDecimal term1 = a.multiply(x3, MathContext.DECIMAL128); - BigDecimal term2 = b.multiply(x2, MathContext.DECIMAL128); - BigDecimal term3 = c.multiply(x, MathContext.DECIMAL128); - return term1.add(term2, MathContext.DECIMAL128).add(term3, MathContext.DECIMAL128).add(d, MathContext.DECIMAL128); - } - - /** - * 计算四阶方程 y = ax⁴ + bx³ + cx² + dx + e(高精度) - */ - private BigDecimal calculateFourthOrder(String equation, BigDecimal x) { - // 解析方程系数,格式如:-5.9039x⁴+523.5482x³+316095.2736x²-57676816.2672x+2688986002.6804 - String normalizedEquation = equation.replace("x^4", "x⁴").replace("x^3", "x³").replace("x^2", "x²"); - String[] parts = normalizedEquation.split("x"); - if (parts.length < 5) { - return BigDecimal.ZERO; - } - - BigDecimal a = parseCoefficient(parts[0]); - BigDecimal b = parseCoefficient(parts[1].replace("⁴", "").replace("³", "")); - BigDecimal c = parseCoefficient(parts[2].replace("³", "").replace("²", "")); - BigDecimal d = parseCoefficient(parts[3].replace("²", "")); - BigDecimal e = parseCoefficient(parts[4]); - - // 高精度计算:x² = x * x, x³ = x² * x, x⁴ = x³ * x - BigDecimal x2 = x.multiply(x, MathContext.DECIMAL128); - BigDecimal x3 = x2.multiply(x, MathContext.DECIMAL128); - BigDecimal x4 = x3.multiply(x, MathContext.DECIMAL128); - - // 高精度计算:a * x⁴ + b * x³ + c * x² + d * x + e - BigDecimal term1 = a.multiply(x4, MathContext.DECIMAL128); - BigDecimal term2 = b.multiply(x3, MathContext.DECIMAL128); - BigDecimal term3 = c.multiply(x2, MathContext.DECIMAL128); - BigDecimal term4 = d.multiply(x, MathContext.DECIMAL128); - return term1.add(term2, MathContext.DECIMAL128) - .add(term3, MathContext.DECIMAL128) - .add(term4, MathContext.DECIMAL128) - .add(e, MathContext.DECIMAL128); - } - - /** - * 解析系数,处理正负号和数字格式(高精度) - */ - private BigDecimal parseCoefficient(String coeffStr) { - if (coeffStr == null || coeffStr.isEmpty()) { - return BigDecimal.ZERO; - } - - // 处理空字符串情况 - if (coeffStr.equals("+") || coeffStr.equals("-")) { - coeffStr += "1"; - } - - // 处理没有显式数字的情况,如:x²+x+1 中的第一个x系数为1 - if (coeffStr.equals("")) { - return BigDecimal.ONE; - } - - try { - // 使用BigDecimal的高精度解析 - return new BigDecimal(coeffStr, MathContext.DECIMAL128); - } catch (NumberFormatException e) { - // 如果解析失败,尝试处理特殊情况 - if (coeffStr.equals("+")) { - return BigDecimal.ONE; - } else if (coeffStr.equals("-")) { - return BigDecimal.ONE.negate(); - } - return BigDecimal.ZERO; - } - } - - public void reportExport(List data, String regression, String dvcd, HttpServletResponse response) { - try { - // 设置响应头 - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setCharacterEncoding("UTF-8"); - String fileName = URLEncoder.encode("渗透压力预测报告", "UTF-8").replaceAll("\\+", "%20"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); - - // 创建Excel工作簿 - Workbook workbook = new XSSFWorkbook(); - Sheet sheet = workbook.createSheet("渗透压力预测报告"); - - // 创建单元格样式 - 支持换行 - CellStyle wrapStyle = workbook.createCellStyle(); - wrapStyle.setWrapText(true); - - // 设置行号 - int rowNum = 0; - - // 第一行:测点编号(不合并) - Row row1 = sheet.createRow(rowNum++); - Cell label1 = row1.createCell(0); - label1.setCellValue("测点编号:"); - Cell value1 = row1.createCell(1); - value1.setCellValue(dvcd); - - // 第二行:回归方程(从D列开始合并10个单元格) - Row row2 = sheet.createRow(rowNum++); - Cell label2 = row2.createCell(0); - label2.setCellValue("回归方程:"); - Cell value2 = row2.createCell(3); // D列(索引为3) - value2.setCellValue(regression != null ? regression : ""); - value2.setCellStyle(wrapStyle); - // 合并D列到M列(共10个单元格):从第3列到第12列 - sheet.addMergedRegion(new CellRangeAddress(1, 1, 3, 12)); - - // 空一行 - rowNum++; - - // 表头行 - Row headerRow = sheet.createRow(rowNum++); - String[] headers = {"预测时间", "预测值", "预测库水位"}; - for (int i = 0; i < headers.length; i++) { - Cell headerCell = headerRow.createCell(i); - headerCell.setCellValue(headers[i]); - } - - // 数据行 - if (data != null && !data.isEmpty()) { - for (OsmoticPressDetailVo detail : data) { - Row dataRow = sheet.createRow(rowNum++); - - // 预测时间 - Cell timeCell = dataRow.createCell(0); - timeCell.setCellValue(detail.getTm() != null ? detail.getTm() : ""); - - // 预测值 - Cell valueCell = dataRow.createCell(1); - if (detail.getValue() != null) { - valueCell.setCellValue(detail.getValue().doubleValue()); - } else { - valueCell.setCellValue(""); - } - - // 预测库水位 - Cell rzCell = dataRow.createCell(2); - if (detail.getRz() != null) { - rzCell.setCellValue(detail.getRz().doubleValue()); - } else { - rzCell.setCellValue(""); - } - } - } - - // 设置列宽 - sheet.setColumnWidth(0, 15 * 256); // A列:标签列,固定宽度 - sheet.setColumnWidth(1, 12 * 256); // B列:测点编号值,固定宽度 - sheet.setColumnWidth(2, 12 * 256); // C列:空列,固定宽度 - sheet.setColumnWidth(3, 50 * 256); // D列:方程列开始,固定宽度 - - // 自动调整数据表格的列宽 - sheet.autoSizeColumn(0); // 预测时间列 - sheet.autoSizeColumn(1); // 预测值列 - sheet.autoSizeColumn(2); // 预测库水位列 - - // 写入响应流 - workbook.write(response.getOutputStream()); - workbook.close(); - - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException("导出Excel失败"); - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastService.java deleted file mode 100644 index 06c627c..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastService.java +++ /dev/null @@ -1,348 +0,0 @@ -package com.gunshi.project.hsz.service; - -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.gunshi.project.hsz.entity.so.ShortWeatherSo; -import com.gunshi.project.hsz.entity.so.WeatherSo; -import com.gunshi.project.hsz.entity.vo.ForeRainStatVo; -import com.gunshi.project.hsz.entity.vo.ForeRainTimeVo; -import com.gunshi.project.hsz.entity.vo.ForeRainVo; -import com.gunshi.project.hsz.entity.vo.MeshrainVo; -import com.gunshi.project.hsz.grb.RainGrib2Layer; -import com.gunshi.project.hsz.mapper.RealRainMapper; -import jakarta.annotation.Resource; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.util.EntityUtils; -import org.locationtech.jts.geom.Coordinate; -import org.locationtech.jts.geom.GeometryFactory; -import org.locationtech.jts.geom.Polygon; -import org.locationtech.jts.geom.impl.CoordinateArraySequence; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -import java.io.IOException; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.*; -import java.util.stream.Collectors; - -/** - * Description: - * Created by wanyan on 2024/3/13 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Data -@Slf4j -public class ForecastService { - - @Value("${shqxjsCloudowrCnPath}") - private String shqxjsCloudowrCnPath;//获取气象预报文件名接口 http://shqxjs.cloudowr.cn/service/ - - public static GeometryFactory factory = new GeometryFactory(); - - public static String grbgetName = "grb/get"; - - public static String radargetName = "radar/get"; - - public static String getData = "res/grblayerset"; - - public static String getRadarData = "res/radarlayer"; - - public static Double x1 = 114.364492; - public static Double y1 = 30.910941; - public static Double x2 = 114.872155; - public static Double y2 = 31.594063; - - public static String totalLayers = "00.24";//只取24小时每个网格的总量 - - public static String detailLayers = "00.24,00.01,01.01,02.01,03.01,04.01,05.01,06.01,07.01,08.01,09.01,10.01,11.01,12.01,13.01,14.01,15.01,16.01,17.01,18.01,19.01,20.01,21.01,22.01,23.01,24.01"; - - @Resource - private RealRainMapper realRainMapper; - - - - private List calcDrp(List gribList,List rainLevelVos){ - if(CollectionUtils.isEmpty(gribList)){ - throw new IllegalArgumentException("该时间无预报数据"); - } - RainGrib2Layer layer = gribList.get(0); - BigDecimal dh = layer.getDh(); - BigDecimal dw = layer.getDw(); - int nh = layer.getNh();//横向格子数 - int nw = layer.getNw();//纵向格子数 - //网格左下角经纬度 - BigDecimal x11 = layer.getX1(); - BigDecimal y11 = layer.getY1(); - harry : for(ForeRainVo vo : rainLevelVos){ - BigDecimal lgtd = new BigDecimal(vo.getLgtd()); - BigDecimal lttd = new BigDecimal(vo.getLttd()); - for(int i = 0;i < nw;i++){ - for(int j=0;j< nh;j++){ - BigDecimal xMin = x11.add(dh.multiply(BigDecimal.valueOf(i))); - BigDecimal xMax = x11.add(dh.multiply(BigDecimal.valueOf(i+1))); - BigDecimal yMin = y11.add(dw.multiply(BigDecimal.valueOf(j))); - BigDecimal yMax = y11.add(dw.multiply(BigDecimal.valueOf(j+1))); - if(lgtd.compareTo(xMin)>=0 && lgtd.compareTo(xMax)<0 && lttd.compareTo(yMin)>=0 && lttd.compareTo(yMax)<0){ - vo.setH2(layer.data[j][i].doubleValue()); - continue harry; - } - } - } - } - - return rainLevelVos; - } - - /** - * 获取24小时气象的网格数据 - * @param tm - * @return - */ - public List getGribData(String tm,Boolean isOnlyQueryTotal){ - List list = new ArrayList<>(); - String grbLatestUrl = shqxjsCloudowrCnPath + grbgetName + "?tm=" + tm; - HttpClient httpClient = HttpClientBuilder.create().build(); - HttpGet httpGet = new HttpGet(grbLatestUrl); - try { - HttpResponse httpResponse = httpClient.execute(httpGet); - HttpEntity entity = httpResponse.getEntity(); - JSONObject jsonObject = JSONUtil.parseObj(EntityUtils.toString(entity)); - JSONObject data = jsonObject.getJSONObject("data"); - if (data == null) { - throw new IllegalArgumentException("该时间无预报数据"); - }; - String rainFile = data.getStr("rainFile"); - String layers = detailLayers; - if(isOnlyQueryTotal){ - layers = totalLayers; - } - String grblayersetUrl = shqxjsCloudowrCnPath + getData + "?filename="+rainFile + "&x1=" + x1+ "&y1=" + y1+ "&x2=" + x2+ "&y2=" + y2+"&layers="+layers; - HttpGet grbData = new HttpGet(grblayersetUrl); - HttpResponse responseForGrb = httpClient.execute(grbData); - HttpEntity entityForGrb = responseForGrb.getEntity(); - - JSONObject grbObject = JSONUtil.parseObj(EntityUtils.toString(entityForGrb)); - - JSONArray grbArrData = grbObject.getJSONArray("data"); - if (grbArrData == null) return list; - list = grbArrData.toList(RainGrib2Layer.class); - - } catch (IOException e) { - e.printStackTrace(); - } - return list; - } - - - /** - * 获取短临气象的网格数据 - * @param tm - * @return - */ - private RainGrib2Layer getRadarData(String tm){ - RainGrib2Layer rainGrib2Layer = new RainGrib2Layer(); - String radarLatestUrl = shqxjsCloudowrCnPath + radargetName + "?tm=" + tm; - HttpClient httpClient = HttpClientBuilder.create().build(); - HttpGet httpGet = new HttpGet(radarLatestUrl); - try { - HttpResponse httpResponse = httpClient.execute(httpGet); - HttpEntity entity = httpResponse.getEntity(); - JSONObject jsonObject = JSONUtil.parseObj(EntityUtils.toString(entity)); - JSONObject data = jsonObject.getJSONObject("data"); - if (data == null) { - throw new IllegalArgumentException("该时间无预报数据"); - }; - String rainFile = data.getStr("rainFile"); - String radarUrl = shqxjsCloudowrCnPath + getRadarData + "?filename="+rainFile + "&x1=" + x1+ "&y1=" + y1+ "&x2=" + x2+ "&y2=" + y2; - HttpGet radarData = new HttpGet(radarUrl); - HttpResponse responseForRadar = httpClient.execute(radarData); - HttpEntity entityForRadar = responseForRadar.getEntity(); - JSONObject radarObject = JSONUtil.parseObj(EntityUtils.toString(entityForRadar)); - rainGrib2Layer = radarObject.get("data",RainGrib2Layer.class); - } catch (IOException e) { - e.printStackTrace(); - } - return rainGrib2Layer; - } - - - public List shortFore(ShortWeatherSo weatherSo) { - List rainLevelVos = realRainMapper.querySttpList(); - List gribList = Arrays.asList(getRadarData(weatherSo.getTm())); - return calcDrp(gribList,rainLevelVos); - } - - public List fore(WeatherSo weatherSo) { - List rainLevelVos = realRainMapper.querySttpList(); - return commonDataHandle(weatherSo,rainLevelVos); - } - - private List commonDataHandle(WeatherSo weatherSo,List list){ - List gribList = getGribData(weatherSo.getTm(),false); - if(CollectionUtils.isEmpty(list)){ - return list; - } - //24小时每个网格的总量 - List total = gribList.stream().filter(o -> o.getTmRange().getInterval() == 24).collect(Collectors.toList()); - //24小时每个网格的逐小时雨量 - List detail = gribList.stream().filter(o -> o.getTmRange().getInterval() == 1).collect(Collectors.toList()); - for(ForeRainVo vo : list){ - List resultList = getData(vo,total,detail); - vo.setTimeRainVos(resultList); - vo.setH1(resultList.get(0).getDrp()); - List list3=resultList.subList(0, Math.min(3, resultList.size())); - vo.setH3(list3.stream().map(ForeRainTimeVo::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add)); - List list6=resultList.subList(0, Math.min(6, resultList.size())); - vo.setH6(list6.stream().map(ForeRainTimeVo::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add)); - List list12=resultList.subList(0, Math.min(12, resultList.size())); - vo.setH12(list12.stream().map(ForeRainTimeVo::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add)); - } - return list.stream() - .sorted(Comparator.comparing(ForeRainVo::getH24, - Comparator.nullsFirst(Comparator.reverseOrder()))) - .collect(Collectors.toList()); - } - - public List getData(ForeRainVo vo, List total,List detail) { - List result = new ArrayList<>(); - RainGrib2Layer layer = total.get(0); - BigDecimal dh = layer.getDh(); - BigDecimal dw = layer.getDw(); - int nh = layer.getNh();//横向格子数 - int nw = layer.getNw();//纵向格子数 - //网格左下角经纬度 - BigDecimal x11 = layer.getX1(); - BigDecimal y11 = layer.getY1(); - BigDecimal lgtd = BigDecimal.ZERO; - BigDecimal lttd = BigDecimal.ZERO; - if(vo.getLgtd() != null){ - lgtd = new BigDecimal(vo.getLgtd()); - } - if(vo.getLttd() != null){ - lttd = new BigDecimal(vo.getLttd()); - } - int rownum = 0; - int colnum = 0; - for(int i = 0;i < nw;i++){ - for(int j=0;j< nh;j++){ - BigDecimal xMin = x11.add(dh.multiply(BigDecimal.valueOf(i))); - BigDecimal xMax = x11.add(dh.multiply(BigDecimal.valueOf(i+1))); - BigDecimal yMin = y11.add(dw.multiply(BigDecimal.valueOf(j))); - BigDecimal yMax = y11.add(dw.multiply(BigDecimal.valueOf(j+1))); - if(lgtd.compareTo(xMin)>=0 && lgtd.compareTo(xMax)<0 && lttd.compareTo(yMin)>=0 && lttd.compareTo(yMax)<0){ - rownum = j; - colnum = i; - vo.setH24(layer.data[rownum][colnum].doubleValue()); - break; - } - } - } - for(RainGrib2Layer lay : detail){ - result.add(ForeRainTimeVo.builder().tm(lay.getTmRange().getTm2()).drp(lay.data[rownum][colnum]).build()); - } - Map sumByGroup = result.stream() - .collect(Collectors.groupingBy(ForeRainTimeVo::getTm, Collectors.mapping(ForeRainTimeVo::getDrp, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); - List resultList = sumByGroup.entrySet().stream() - .map(entry -> ForeRainTimeVo.builder().tm(entry.getKey()).drp(entry.getValue().divide(new BigDecimal(1),1, RoundingMode.UP)).build()) - .sorted(Comparator.comparing(ForeRainTimeVo::getTm)) - .collect(Collectors.toList()); - return resultList; - } - - /** - * @description: 计算面降雨量 - * @param vo - * @param total - * @param detail - * @return: java.util.List - * @date: 2024-10-14, 周一, 17:52:27 - */ - public List getAreaData(ForeRainStatVo vo, List total, List detail) { - String geom = vo.getGeom(); - //处理面 - Polygon areaPolygon = handlePolygon(geom); - RainGrib2Layer layer = total.get(0); - BigDecimal dh = layer.getDh(); - BigDecimal dw = layer.getDw(); - int nh = layer.getNh();//横向格子数 - int nw = layer.getNw();//纵向格子数 - //网格左下角经纬度 - BigDecimal x11 = layer.getX1(); - BigDecimal y11 = layer.getY1(); - List meshrainVos = new ArrayList<>(); - for(int i = 0;i < nw;i++){ - for(int j=0;j< nh;j++){ - BigDecimal xMin = x11.add(dh.multiply(BigDecimal.valueOf(i))); - BigDecimal xMax = x11.add(dh.multiply(BigDecimal.valueOf(i+1))); - BigDecimal yMin = y11.add(dw.multiply(BigDecimal.valueOf(j))); - BigDecimal yMax = y11.add(dw.multiply(BigDecimal.valueOf(j+1))); - Coordinate[] c2 = { - new Coordinate(xMin.doubleValue(), yMin.doubleValue()), - new Coordinate(xMin.doubleValue(), yMax.doubleValue()), - new Coordinate(xMax.doubleValue(), yMax.doubleValue()), - new Coordinate(xMax.doubleValue(), yMin.doubleValue()), - new Coordinate(xMin.doubleValue(), yMin.doubleValue()) - }; - Polygon p2 = factory.createPolygon(new CoordinateArraySequence(c2)); - boolean intersects = areaPolygon.intersects(p2); - if(intersects){ - MeshrainVo meshrainVo = new MeshrainVo(); - meshrainVo.setColnum(i); - meshrainVo.setRownum(j); - meshrainVos.add(meshrainVo); - } - } - } - List result = new ArrayList<>(); - BigDecimal size = new BigDecimal(meshrainVos.size()); - for(MeshrainVo mesVo : meshrainVos){ - result.addAll(detail.stream().map(lay-> - ForeRainTimeVo.builder().tm(lay.getTmRange().getTm2()).drp(lay.data[mesVo.getRownum()][mesVo.getColnum()]).build() - ).collect(Collectors.toList())); - } - Map sumByGroup = result.stream() - .collect(Collectors.groupingBy(ForeRainTimeVo::getTm, Collectors.mapping(ForeRainTimeVo::getDrp, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); - List resultList = sumByGroup.entrySet().stream() - .map(entry -> ForeRainTimeVo.builder().tm(entry.getKey()).drp(entry.getValue().divide(size,1, RoundingMode.UP)).build()) - .sorted(Comparator.comparing(ForeRainTimeVo::getTm)) - .collect(Collectors.toList()); - vo.setDrp(calcSumDrp(meshrainVos,total)); - return resultList; - } - - private Polygon handlePolygon(String geom) { - JSONObject jsonObject = new JSONObject(geom); - JSONArray data = jsonObject.getJSONArray("coordinates"); - JSONArray data1 = data.getJSONArray(0); - JSONArray jsonArray = data1.getJSONArray(0); - Coordinate[] coords = new Coordinate[jsonArray.size()]; - for (int c = 0; c < jsonArray.size(); c++) { - BigDecimal x = (BigDecimal) jsonArray.getJSONArray(c).get(0); - BigDecimal y = (BigDecimal) jsonArray.getJSONArray(c).get(1); - coords[c] = new Coordinate(x.doubleValue(), y.doubleValue()); - } - return factory.createPolygon(new CoordinateArraySequence(coords)); - } - - private Double calcSumDrp(List meshrainVos, List total) { - BigDecimal size = new BigDecimal(meshrainVos.size()); - BigDecimal sumDrp = new BigDecimal(0); - for (MeshrainVo vo : meshrainVos){ - List drp = total.stream().map(o -> (o.getData()[vo.getRownum()][vo.getColnum()])).collect(Collectors.toList()); - sumDrp = drp.stream().reduce(sumDrp,BigDecimal::add); - } - return sumDrp.divide(size,1,RoundingMode.UP).doubleValue(); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastTaskService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastTaskService.java deleted file mode 100644 index c67f698..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastTaskService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ForecastTaskMapper; -import com.gunshi.project.hsz.model.ForecastTask; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 预报_预测自动任务管理表 - * author: cxw - * date: 2024-08-05 11:41:45 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastTaskService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastUService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastUService.java deleted file mode 100644 index 7160c23..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastUService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ForecastUMapper; -import com.gunshi.project.hsz.model.ForecastU; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 预报_时段单位线表 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastUService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ForecastUseparamService.java b/src/main/java/com/gunshi/project/hsz/service/ForecastUseparamService.java deleted file mode 100644 index 5b56a53..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ForecastUseparamService.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ForecastUseparamMapper; -import com.gunshi.project.hsz.model.ForecastUseparam; -import com.gunshi.project.hsz.util.BigdecimalUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 预报_通用参数管理 - * author: cxw - * date: 2024-07-30 10:02:24 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ForecastUseparamService extends ServiceImpl -{ - - /** - * @description: 计算时间单位线u参数 - * @param areaF 流域面积 k㎡(承雨面积) - * @param lengthL 主河道长度 km - * @param j 主河道加权平均比降 千分率‰(河道坡降) - * @param dt 时段∆t,时间间隔,例如0.5 - * @param h h毫米净雨,例如1、10等,默认为1 - * @param slice 水文分区 - * @return: java.util.List - * @auther: cxw - * @date: 2024-11-06, 周三, 10:16:26 - */ - public List calcU(BigDecimal areaF, BigDecimal lengthL, BigDecimal j, double dt, BigDecimal h, String slice) { - // 计算m1、n - Map m1AndNMap = calcM1AndN(areaF, lengthL, j, slice); - BigDecimal m1 = m1AndNMap.get("m1"); - BigDecimal n = m1AndNMap.get("n"); - // k = m1 / n。如果m1有非线性改正,则为改正后的值。算例保留1位小数 - BigDecimal k = m1.divide(n, 3, BigDecimal.ROUND_HALF_UP); - /* - * 瞬时单位线u(0,t)=(1/(k*Γ(n)))*((t/k)^(n-1))*e^(-t/k) - */ - List> mapList = new ArrayList<>(); - Map initMap = new HashMap<>(); - initMap.put("t", BigDecimal.ZERO); - initMap.put("tDevideK", BigDecimal.ZERO); - initMap.put("st", BigDecimal.ZERO); - initMap.put("utt", BigDecimal.ZERO); - initMap.put("qtt", BigDecimal.ZERO); - mapList.add(initMap); - for (int i = 1; i <= 11; i++) { - Map result = new HashMap<>(); - // 表1-5地表径流过程计算表:t - BigDecimal t = BigDecimal.valueOf(dt * i); - result.put("t", t); - - // 表1-5地表径流过程计算表:t/k - BigDecimal x = t.divide(k, 10, BigDecimal.ROUND_HALF_UP);// x - result.put("tDevideK", x); - - BigDecimal alpha = n;// α - BigDecimal beta = BigDecimal.ONE;// β - // 表1-5地表径流过程计算表:s(t) - BigDecimal gammaDist = BigDecimal.valueOf(BigdecimalUtil.gammaDist(x.doubleValue(), alpha.doubleValue(), beta.doubleValue(), true)).setScale(10, BigDecimal.ROUND_HALF_UP);// 伽马分布 - result.put("st", gammaDist); - // 表1-5地表径流过程计算表:s(t-∆t)。stt为上一行的st - BigDecimal stt = BigDecimal.ZERO; - stt = mapList.get(i - 1).get("st").setScale(10, BigDecimal.ROUND_HALF_UP); - result.put("stt", stt); - - // 表1-5地表径流过程计算表:u(∆t,t)。utt=st-stt - BigDecimal utt = gammaDist.subtract(stt).setScale(10, BigDecimal.ROUND_HALF_UP); - result.put("utt", utt); - - // 表1-5地表径流过程计算表:q(∆t,t)。qtt=Fh*utt/(3.6*∆t) - BigDecimal qtt = areaF.multiply(h).multiply(utt).divide(new BigDecimal(3.6).multiply(t), 3, BigDecimal.ROUND_HALF_UP); - result.put("qtt", qtt); - mapList.add(result); - } - mapList.remove(0);// 去除initMap - List uList = mapList.stream().map(map -> map.get("qtt")).collect(Collectors.toList()); - return uList; - } - - - /** - * @description: 计算m1和n参数 - * @param areaF - * @param lengthL - * @param j - * @param slice - * @return: void - * @auther: cxw - * @date: 2024-11-06, 周三, 13:16:24 - */ - private Map calcM1AndN(BigDecimal areaF, BigDecimal lengthL, BigDecimal j, String slice) { - BigDecimal m1 = BigDecimal.ZERO; - BigDecimal n = BigDecimal.ZERO; - // 所属片区(全省山丘区瞬时单位线分三个片进行参数的地区综合,第一片包括水文分区 1、2、4区即京广线两侧及鄂东黄冈、咸宁地区一带,(江汉平原湖区在外);第二片包括水文分区6、8、9、11区即鄂北,鄂西北及宜昌地区长江以北一带;第三片包括7、10水文分区即清江流域,恩施地区) - if (slice.toUpperCase().equals("I")) {// I片(1、2、4区) - if (areaF.compareTo(new BigDecimal("30")) > 0) {// areaF > 30 - // m1 = 0.82*F^0.29*L^0.23*j^-0.20 - m1 = new BigDecimal("0.82").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.29)).multiply(BigdecimalUtil.bigDecimalExponentiation(lengthL, 0.23)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, -0.20)); - } else if (areaF.compareTo(new BigDecimal("30")) <= 0) {// areaF <= 30 - // m1 = 1.38*F^0.27*L^0.216*j^-0.185 - m1 = new BigDecimal("1.38").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.27)).multiply(BigdecimalUtil.bigDecimalExponentiation(lengthL, 0.216)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, -0.185)); - } - if (j.compareTo(new BigDecimal("5")) > 0) {// j > 5 - // n = 0.34*F^0.35*j^0.1 - n = new BigDecimal("0.34").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.35)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, 0.1)); - } else if (j.compareTo(new BigDecimal("5")) <= 0) {// j <= 5 - // n = 1.04*F^0.3*j^0.1 - n = new BigDecimal("1.04").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.3)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, 0.1)); - } - } else if (slice.toUpperCase().equals("II")) {// II片(6、8、9、11区) - // m1 = 1.64*F^0.231*L^0.131*j^-0.08 - m1 = new BigDecimal("1.64").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.231)).multiply(BigdecimalUtil.bigDecimalExponentiation(lengthL, 0.131)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, -0.08)); - // n = 0.529*F^0.25*j^0.20 - n = new BigDecimal("0.529").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.25)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, 0.20)); - } else if (slice.toUpperCase().equals("III")) {// III片(7、10区) - // m1 = 0.8*F^0.3*L^0.1*j^-0.06 - m1 = new BigDecimal("0.8").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.3)).multiply(BigdecimalUtil.bigDecimalExponentiation(lengthL, 0.1)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, -0.06)); - // n = 0.69*F^0.224*j^0.092 - n = new BigDecimal("0.69").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.224)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, 0.092)); - } - // TODO 特殊流域适用的公式 - - // TODO 当设计雨强超过10mm/h时,除熔岩地区外一般应作参数m1外延的非线性改正 - - BigDecimal finalM1 = m1.setScale(3, BigDecimal.ROUND_HALF_UP); - BigDecimal finalN = n.setScale(3, BigDecimal.ROUND_HALF_UP); - return new HashMap<>() {{ - put("m1", finalM1); - put("n", finalN); - }}; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/GatePoreService.java b/src/main/java/com/gunshi/project/hsz/service/GatePoreService.java deleted file mode 100644 index 5114ce6..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/GatePoreService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.GatePoreMapper; -import com.gunshi.project.hsz.model.GatePore; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 闸孔信息表 - * author: xusan - * date: 2024-09-26 10:44:57 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class GatePoreService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/GateValveCctvRelService.java b/src/main/java/com/gunshi/project/hsz/service/GateValveCctvRelService.java deleted file mode 100644 index b685d30..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/GateValveCctvRelService.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.GateValveCctvRelPage; -import com.gunshi.project.hsz.entity.vo.GateValveCctvRelVo; -import com.gunshi.project.hsz.mapper.GateValveCctvRelMapper; -import com.gunshi.project.hsz.model.GateValveCctvRel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 闸阀关联视频点 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class GateValveCctvRelService extends ServiceImpl -{ - - public Page pages(GateValveCctvRelPage page){ - return getBaseMapper().pages(page.getPageSo().toPage(), page); - } - - public List queryList(String valveCode) { - return baseMapper.queryList(valveCode); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/GateValveRService.java b/src/main/java/com/gunshi/project/hsz/service/GateValveRService.java deleted file mode 100644 index 18989d9..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/GateValveRService.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.GateHisPageSo; -import com.gunshi.project.hsz.entity.vo.GateStautsVo; -import com.gunshi.project.hsz.mapper.GateValveRMapper; -import com.gunshi.project.hsz.model.GateValveR; -import com.gunshi.project.hsz.util.ExcelUtil; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 闸阀开关历史表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class GateValveRService extends ServiceImpl -{ - - public Page pageQuery(GateHisPageSo so) { - return baseMapper.pageQuery(so.getPageSo().toPage(),so); - } - - public void export(GateHisPageSo so, HttpServletResponse response) { - List list = baseMapper.hisList(so); - ExcelUtil.exportExcel(list,"闸阀开度历史",GateStautsVo.class,response,"闸阀开度历史"); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/GateValveRealService.java b/src/main/java/com/gunshi/project/hsz/service/GateValveRealService.java deleted file mode 100644 index 0849cfc..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/GateValveRealService.java +++ /dev/null @@ -1,413 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -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.gunshi.project.hsz.common.model.StFlowR; -import com.gunshi.project.hsz.entity.so.GateHisPageSo; -import com.gunshi.project.hsz.entity.vo.AttResBaseVo; -import com.gunshi.project.hsz.entity.vo.GateStautsVo; -import com.gunshi.project.hsz.entity.vo.GateValveOplogVo; -import com.gunshi.project.hsz.mapper.GateValveRealMapper; -import com.gunshi.project.hsz.mapper.StWaterRRealMapper; -import com.gunshi.project.hsz.mapper.TyYearRainfallMapper; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.DataHandleUtil; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.util.ExcelUtil; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.LocalDate; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 闸阀开关表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class GateValveRealService extends ServiceImpl -{ - @Resource - private com.gunshi.project.hsz.model.GateValveKeyAutoDao gateValveKeyAutoDao; - - @Resource - private com.gunshi.project.hsz.model.GateValveOplogAutoDao gateValveOplogAutoDao; - - @Resource - private ReservoirWaterService reservoirWaterService; - - @Resource - private StWaterRRealMapper stWaterRRealMapper; - - @Resource - private TyYearRainfallMapper tyYearRainfallMapper; - - public List gateStatusList() { - List list = baseMapper.gateStatusList(); - for(GateStautsVo vo : list){ - if(vo.getTm() != null && DateUtil.hoursBetweenDate(vo.getTm(), new Date()) > 2){ - vo.setFlag(1); - } - } - return list; - } - - public BigDecimal realQ(String valveCode) { - return baseMapper.realQ(valveCode); - } - - public String control(GateValveKey gateValveKey) { - //先判断密码是否正确 - String valveCode = gateValveKey.getValveCode(); - String key = gateValveKey.getKey(); - GateValveKey valveKey = gateValveKeyAutoDao.getById(valveCode); - if(valveKey == null || !key.equals(valveKey.getKey())){ - throw new IllegalArgumentException("密码不正确"); - } - //生成闸阀操作日志 - GateValveOplog oplog = new GateValveOplog(); - oplog.setId(IdWorker.getId()); - oplog.setStatus(gateValveKey.getStatus()); - oplog.setOpContent("设置闸阀开度为"+gateValveKey.getStatus()); - oplog.setValveCode(valveCode); - oplog.setTm(new Date()); - oplog.setOpUserId(1L); - oplog.setOpUserName("胡兵"); - - GateValveReal valveReal = this.getOne(new QueryWrapper().eq("valve_code", valveCode)); - oplog.setBeforeStatus(valveReal == null ? "-" : valveReal.getStatus()); - gateValveOplogAutoDao.save(oplog); - //todo 给闸阀下发调节指令 -// GateValveR gateValveR = new GateValveR(); -// BeanUtils.copyProperties(gateValveKey,gateValveR); -// gateValveR.setTm(new Date()); -// gateValveRMapper.insert(gateValveR); -// -// GateValveReal real = new GateValveReal(); -// BeanUtils.copyProperties(gateValveKey,real); -// real.setTm(new Date()); -// this.remove(new QueryWrapper().eq("valve_code",valveCode)); -// this.save(real); - return "调节闸阀成功"; - } - - public Page logPage(GateHisPageSo so) { - return baseMapper.logPage(so.getPageSo().toPage(),so); - } - - public GateValveOplog loginfo(String code) { - if(StringUtils.isBlank(code)){ - return null; - } - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(GateValveOplog::getValveCode,code); - qw.orderByDesc(GateValveOplog::getTm).last("LIMIT 1"); - List list = gateValveOplogAutoDao.list(qw); - return list.isEmpty() ? null : list.get(0); - } - - public void logExport(GateHisPageSo so, HttpServletResponse response) { - List logList = baseMapper.logList(so); - ExcelUtil.exportExcel(logList,"闸阀操作日志",GateValveOplogVo.class,response,"闸阀操作日志"); - } - - @Autowired - private StEvpoService stEvpoService; - - @Autowired - private StFlowRService stFlowRService; - - @Autowired - private StWaterRRealService stWaterRRealService; - - public Map supplyTime(Integer year, Integer month) { - Map result = new HashMap<>(); - - // 获取所有月份的日蒸发量数据 - List allEvaporationData = stEvpoService.lambdaQuery().list(); - Map evaporationMap = allEvaporationData.stream() - .collect(Collectors.toMap(StEvpo::getMonth, StEvpo::getEvaporation)); - - // 获取水库基础数据 - List reservoirList = reservoirWaterService.list(); - if (CollectionUtils.isEmpty(reservoirList)) { - return result; - } - AttResBaseVo reservoir = reservoirList.get(0); - - // 初始可供水量 = 实时库容 - 死库容 (万m³) - BigDecimal nowCap = reservoir.getNowCap() == null ? BigDecimal.ZERO : reservoir.getNowCap(); - BigDecimal deadCap = reservoir.getDeadCap() == null ? BigDecimal.ZERO : reservoir.getDeadCap(); - BigDecimal availableWater = nowCap.subtract(deadCap); - - Date tm = reservoir.getTm(); - Calendar now = Calendar.getInstance(); - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - now.set(Calendar.MILLISECOND, 0); - Date currentHour = now.getTime(); - if(tm.before(currentHour)){ - result.put(BigDecimal.ZERO,"当前时间无最新水位数据"); - return result; - } - - // 如果初始可供水量就为0或负数,直接返回 - if (availableWater.compareTo(BigDecimal.ZERO) <= 0) { - result.put(BigDecimal.ZERO, "当前无可供水量"); - return result; - } - - // 获取当前流量数据 - List waterFlowList = stWaterRRealService.listNewData(); - BigDecimal totalFlow = waterFlowList.stream() - .map(StWaterRReal::getQ) - .reduce(BigDecimal.ZERO, BigDecimal::add); - // 计算日供水量 (m³/d) 并转换为万m³/d - BigDecimal dailySupply = totalFlow.multiply(new BigDecimal(3600 * 24)); - BigDecimal dailySupplyInTenThousand = dailySupply.divide(new BigDecimal(10000), 10, RoundingMode.HALF_UP); - - // 从当前时间开始计算 - Calendar calendar = Calendar.getInstance(); - int currentYear = calendar.get(Calendar.YEAR); - int currentMonth = calendar.get(Calendar.MONTH) + 1; - - // 计算当前月份剩余天数 - calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); - int daysInCurrentMonth = calendar.get(Calendar.DAY_OF_MONTH); - int currentDay = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); - int remainingDaysInMonth = daysInCurrentMonth - currentDay + 1; - - BigDecimal totalSupplyDays = BigDecimal.ZERO; - BigDecimal remainingWater = availableWater; - - // 判断是否计算预测水量 - boolean calculatePredictWater = (year != null && month != null); - - // 逐月计算,直到可供水量耗尽 - int calcYear = currentYear; - int calcMonth = currentMonth; - boolean waterExhausted = false; - - while (remainingWater.compareTo(BigDecimal.ZERO) > 0 && !waterExhausted) { - // 获取当前计算月份的蒸发量 - String monthKey = String.valueOf(calcMonth); - BigDecimal monthlyEvaporation = evaporationMap.getOrDefault(Integer.valueOf(monthKey), BigDecimal.ZERO); - - // 计算当前月份的预测来水量(只有当传入年份和月份不为空,且当前月份在预测范围内时才计算) - BigDecimal monthlyPredictWater = BigDecimal.ZERO; - if (calculatePredictWater && isMonthInPredictRange(calcMonth, currentMonth, month)) { - monthlyPredictWater = calcMonthlyPredictV(year, calcMonth, reservoir.getWatShedArea()); - } - - // 当前月份总可用水量 = 剩余水量 + 预测来水量 - BigDecimal monthlyTotalWater = remainingWater.add(monthlyPredictWater); - - // 当前月份日消耗量 = 日供水量 + 日蒸发量 (万m³/d) - BigDecimal dailyConsumption = dailySupplyInTenThousand.add(monthlyEvaporation); - - if (dailyConsumption.compareTo(BigDecimal.ZERO) <= 0) { - // 如果日消耗量为0或负数,说明可以无限供水 - totalSupplyDays = new BigDecimal("9999"); // 表示无限期 - break; - } - - // 计算当前月份可供水天数 - int daysInMonth = getDaysInMonth(calcYear, calcMonth); - int daysToCalculate = (calcYear == currentYear && calcMonth == currentMonth) ? - remainingDaysInMonth : daysInMonth; - - // 当前月份最大可供水量 = 日消耗量 * 当月剩余天数 - BigDecimal monthlyMaxConsumption = dailyConsumption.multiply(new BigDecimal(daysToCalculate)); - - if (monthlyTotalWater.compareTo(monthlyMaxConsumption) >= 0) { - // 当前月份水量充足,可以支撑整个月 - totalSupplyDays = totalSupplyDays.add(new BigDecimal(daysToCalculate)); - remainingWater = monthlyTotalWater.subtract(monthlyMaxConsumption); - - // 移动到下个月 - calcMonth++; - if (calcMonth > 12) { - calcMonth = 1; - calcYear++; - } - } else { - // 当前月份水量不足,计算具体天数 - BigDecimal remainingDays = monthlyTotalWater.divide(dailyConsumption, 1, RoundingMode.HALF_UP); - totalSupplyDays = totalSupplyDays.add(remainingDays); - waterExhausted = true; - } - } - - // 计算结束日期 - long totalDays = DataHandleUtil.BigDecimalIntegerPart(totalSupplyDays); - - String endDate = DateUtil.getPlusDate(new Date(), totalDays); - - result.put(totalSupplyDays, endDate); - return result; - } - - /** - * 判断当前计算月份是否在预测范围内 - * 预测范围:从当前月份到传入的截至月份 - */ - private boolean isMonthInPredictRange(int calcMonth, int currentMonth, int endMonth) { - if (endMonth >= currentMonth) { - // 不跨年情况:当前月份 <= 计算月份 <= 截至月份 - return calcMonth >= currentMonth && calcMonth <= endMonth; - } else { - // 跨年情况:计算月份 >= 当前月份 或者 计算月份 <= 截至月份 - return calcMonth >= currentMonth || calcMonth <= endMonth; - } - } - - /** - * 获取指定年份月份的天数 - */ - private int getDaysInMonth(int year, int month) { - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.YEAR, year); - calendar.set(Calendar.MONTH, month - 1); - return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - } - - - -// public Map supplyTime(Integer year, Integer month) { -// StEvpo stEvpo = stEvpoService.lambdaQuery().eq(StEvpo::getMonth, month.toString()).list().get(0); -// BigDecimal evpo = BigDecimal.ZERO; //蒸发量 (万m³ -// if(stEvpo != null){ -// evpo = stEvpo.getEvaporation(); -// } -// Map map = new HashMap<>(); -// /** -// * 可供水量= 实时库容 - 死库容 -// * 小时水量= (输水管流量 + 放水管流量)*3600 ->改为 (输水管流量 + 放水管流量)*3600 + 蒸发量 -// * 可供水小时数 = 可供水量 * 10000/ 小时水量 ->改为 (可供水量 + 预测水量如果有) * 10000 / 小时水量 -// * 可供水天数 = 可供水小时数换算为天数 -// */ -// List list = reservoirWaterService.list(); -// if(CollectionUtils.isEmpty(list)){ -// return map; -// } -// AttResBaseVo attResBaseVo = list.get(0); -// BigDecimal nowCap = attResBaseVo.getNowCap() == null ? new BigDecimal(0) : attResBaseVo.getNowCap(); -// BigDecimal deadCap = attResBaseVo.getDeadCap() == null ? new BigDecimal(0) : attResBaseVo.getDeadCap(); -// -// BigDecimal supplyV = nowCap.subtract(deadCap); -// if(year != null){ -// //计算预测来水量 -// BigDecimal predictV = calcPredictV(year,month,attResBaseVo.getWatShedArea()); -// supplyV = supplyV.add(predictV); -// } -// List water = stWaterRRealMapper.listRelated(); -// //小时水量 -// BigDecimal hourQ = water.stream().map(StWaterRReal::getQ).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(new BigDecimal(3600)); -// BigDecimal day = supplyV.multiply(new BigDecimal(10000)).divide(hourQ.multiply(new BigDecimal(24)),1, RoundingMode.HALF_UP); -// long l = DataHandleUtil.BigDecimalIntegerPart(day); -// String date = DateUtil.getPlusDate(new Date(), l); -// map.put(day,date); -// return map; -// } - - /** - * 新增方法:计算指定月份的预测来水量(独立月份计算) - * 例子:10.14-10.30预测水量为40,11.01-11.30预测水量为60 - */ - private BigDecimal calcMonthlyPredictV(Integer year, Integer month, BigDecimal watShedArea) { - LocalDate now = LocalDate.now(); - Integer nowMonth = now.getMonthValue(); - - // 查询指定月份的降雨量数据 - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(TyYearRainfall::getYear, year) - .eq(TyYearRainfall::getMonth, month) - .eq(TyYearRainfall::getType, 2); - - TyYearRainfall rainfall = tyYearRainfallMapper.selectOne(queryWrapper); - - if (rainfall == null || rainfall.getDrp() == null) { - return BigDecimal.ZERO; - } - - BigDecimal monthlyRainfall = rainfall.getDrp(); - - // 如果是当前月份,需要按剩余天数比例计算 - if (month.equals(nowMonth)) { - int dayOfMonth = now.getDayOfMonth(); - int totalDaysInMonth = now.lengthOfMonth(); - int remainingDays = totalDaysInMonth - dayOfMonth + 1; - - // 按剩余天数比例计算当月有效降雨量 - monthlyRainfall = new BigDecimal(remainingDays) - .multiply(monthlyRainfall) - .divide(new BigDecimal(totalDaysInMonth), 2, RoundingMode.HALF_UP); - } - // 如果不是当前月份,则使用整月的降雨量(不需要按比例计算) - - // 预测来水量 = 月降雨量 * 水库坝址控制流域面积 / 1000 - BigDecimal sum = monthlyRainfall.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP); - return sum.multiply(watShedArea); - } - - - private BigDecimal calcPredictV(Integer year, Integer month,BigDecimal watShedArea) { - LocalDate now = LocalDate.now(); - Integer nowMonth = now.getMonthValue(); - - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(TyYearRainfall::getYear,year) - .eq(TyYearRainfall::getType,2) - .ge(TyYearRainfall::getMonth,nowMonth) - .le(TyYearRainfall::getMonth,month); - List list = tyYearRainfallMapper.selectList(queryWrapper); - - //和当前月份相同的降雨量 - Optional first = list.stream().filter(o -> nowMonth == o.getMonth()).findFirst(); - BigDecimal drp = first.isPresent() ? first.get().getDrp() : new BigDecimal(0); - int dayOfMonth = now.getDayOfMonth(); - int total = now.lengthOfMonth(); - BigDecimal nowMonthDrp = new BigDecimal((total - dayOfMonth + 1)).multiply(drp).divide(new BigDecimal(total), 2, RoundingMode.HALF_UP); - - //当前月到预测月份的降雨量 - BigDecimal value = list.stream().filter(o -> nowMonth != o.getMonth()).map(TyYearRainfall::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add); - - //预测来水量 = 月降雨量和 * 水库坝址控制流域面积 - BigDecimal sum = nowMonthDrp.add(value).divide(new BigDecimal(1000),2,RoundingMode.HALF_UP); - return sum.multiply(watShedArea); - } - - public BigDecimal predictWater(Integer year, Integer month) { - List list = reservoirWaterService.list(); - if(CollectionUtils.isEmpty(list)){ - return new BigDecimal(0); - } - return calcPredictV(year,month,list.get(0).getWatShedArea()); - } - - public BigDecimal predictWaterMonth(Integer year, Integer month) { - List list = reservoirWaterService.list(); - if(CollectionUtils.isEmpty(list)){ - return new BigDecimal(0); - } - return calcMonthlyPredictV(year,month,list.get(0).getWatShedArea()); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/HiddenInfoService.java b/src/main/java/com/gunshi/project/hsz/service/HiddenInfoService.java deleted file mode 100644 index 577f59b..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/HiddenInfoService.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.HiddenInfoMapper; -import com.gunshi.project.hsz.mapper.MentenceFarmerRecordMapper; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.model.HiddenInfo; -import com.gunshi.project.hsz.model.MentenceFarmerRecord; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class HiddenInfoService extends ServiceImpl { - - @Autowired - private FileAssociationsService fileService; - - public String getGroupId(){ - return "hiddenInfo"; - } - - public void saveFile(List files, String businessId) { - fileService.saveFile(files,getGroupId(),businessId); - } - - public void deleteFile(String businessId) { - fileService.deleteFile(getGroupId(),businessId); - } - - public List getFiles(String businessId) { - List files = fileService.getFiles(getGroupId(), businessId); - return files; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/HisWaterDataService.java b/src/main/java/com/gunshi/project/hsz/service/HisWaterDataService.java deleted file mode 100644 index 462fce0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/HisWaterDataService.java +++ /dev/null @@ -1,207 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.ExcelWriter; -import com.alibaba.excel.write.metadata.WriteSheet; -import com.alibaba.excel.write.metadata.WriteTable; -import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.gunshi.project.hsz.entity.dto.ExportCommonDto; -import com.gunshi.project.hsz.entity.so.HisWaterDataPageSo; -import com.gunshi.project.hsz.entity.vo.HisWaterDataVo; -import com.gunshi.project.hsz.mapper.HisWaterDataMapper; -import com.gunshi.project.hsz.model.HisWaterData; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.IOException; -import java.io.Serializable; -import java.math.BigDecimal; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class HisWaterDataService extends ServiceImpl { - public Page pageQuery(HisWaterDataPageSo page) { - Page hisWaterDataPage = this.baseMapper.queryPage(page.getPageSo().toPage(),page); - fillList(hisWaterDataPage); - return hisWaterDataPage; - } - - private void fillList(Page ret) { - if (ret.getRecords() != null) { - queryChild(ret.getRecords()); - } - } - - private void queryChild(List records) { - for (HisWaterDataVo record : records) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HisWaterData::getYear, record.getYear()) - .eq(HisWaterData::getType,2) - .orderByAsc(HisWaterData::getMonth); - record.setChildren(this.list(queryWrapper)); - } - } - - public boolean saveData(HisWaterDataVo dto) { - checkParam(dto); - HisWaterData hisWaterData = new HisWaterData(); - BeanUtils.copyProperties(dto,hisWaterData); - List list = dto.getChildren(); - list.stream().forEach(o ->{ - o.setId(null); - }); - hisWaterData.setId(null); - list.add(hisWaterData); - boolean flag = saveBatch(list); - return flag; - } - - private void checkParam(HisWaterDataVo dto) { - Long id = dto.getId(); - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(HisWaterData::getYear,dto.getYear()) - .eq(HisWaterData::getType,1); - if(id != null){ - queryWrapper.ne(HisWaterData::getId,id); - } - if(this.count(queryWrapper ) > 0){ - throw new IllegalArgumentException("该年份已存在历史降雨资料"); - } - Long len = dto.getChildren().stream().map(HisWaterData::getMonth).distinct().collect(Collectors.counting()); - if(dto.getChildren().size() != len.intValue()){ - throw new IllegalArgumentException("月份不可重复"); - } - } - - - public boolean updateData(HisWaterDataVo dto) { - checkParam(dto); - HisWaterData hisWaterData = new HisWaterData(); - BeanUtils.copyProperties(dto,hisWaterData); - if(dto.getChildren() == null || dto.getChildren().isEmpty()){ - dto.setAvgWater(BigDecimal.ZERO); - } - updateById(hisWaterData); - deleteMonthData(dto.getYear()); - List list = dto.getChildren(); - list.stream().forEach(o ->{ - o.setYear(dto.getYear()); - }); - return saveBatch(list); - } - - private void deleteMonthData(Integer year) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(HisWaterData::getYear,year) - .eq(HisWaterData::getType,2); - this.remove(queryWrapper); - } - - public Boolean removeData(Serializable id) { - HisWaterData hisWaterData = this.getById(id); - deleteMonthData(hisWaterData.getYear()); - return this.removeById(id); - } - - public void export(List records, HttpServletResponse response) { - try { - // 设置响应头 - String fileName = URLEncoder.encode("历史蓄水量数据", "UTF-8").replaceAll("\\+", "%20"); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setCharacterEncoding("utf-8"); - response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); - - // 创建ExcelWriter - ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()) - .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 自动列宽 - .build(); - - // 创建主工作表 - WriteSheet writeSheet = EasyExcel.writerSheet("历史蓄水量数据").build(); - - // 当前行数据 - List> dataList = new ArrayList<>(); - - // 遍历每年的数据 - for (HisWaterDataVo yearData : records) { - // 添加年份标题行 - List yearRow = new ArrayList<>(); - yearRow.add(yearData.getYear() + "年"); - yearRow.add(""); // 第二列为空 - dataList.add(yearRow); - - // 添加表头 - List headerRow = new ArrayList<>(); - headerRow.add("月份"); - headerRow.add("月份平均蓄水量"); - dataList.add(headerRow); - - // 添加月份数据 - if (yearData.getChildren() != null) { - for (HisWaterData monthData : yearData.getChildren()) { - List monthRow = new ArrayList<>(); - monthRow.add(monthData.getMonth() + "月"); - monthRow.add(monthData.getAvgWater()); - dataList.add(monthRow); - } - } - - // 添加年度总蓄水量行 - List totalRow = new ArrayList<>(); - totalRow.add("年度总蓄水量"); - totalRow.add(yearData.getAvgWater()); - dataList.add(totalRow); - - // 添加空行分隔 - dataList.add(new ArrayList<>()); - dataList.add(new ArrayList<>()); - } - - // 创建表格并写入数据 - WriteTable writeTable = EasyExcel.writerTable() - .needHead(false) // 不显示表头,因为我们手动添加了 - .build(); - - // 写入数据 - excelWriter.write(dataList, writeSheet, writeTable); - - // 关闭流 - excelWriter.finish(); - - } catch (IOException e) { - throw new RuntimeException("导出Excel失败", e); - } - } - - public List yearList() { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HisWaterData::getType,1); - return this.baseMapper.selectList(queryWrapper); - } - - public List selectList(ExportCommonDto dto) { - List hisWaterDataVos = this.baseMapper.selectYearList(dto); - if(!hisWaterDataVos.isEmpty()){ - queryChild(hisWaterDataVos); - } - return hisWaterDataVos; - } - - public List getYearList() { - return this.baseMapper.selectYear(); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ISCAIEventService.java b/src/main/java/com/gunshi/project/hsz/service/ISCAIEventService.java deleted file mode 100644 index 5dc1b45..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ISCAIEventService.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.ISCAIEventPageSo; -import com.gunshi.project.hsz.mapper.ISCAIEventMapper; -import com.gunshi.project.hsz.model.ISCAIEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ISCAIEventService extends ServiceImpl { - - - public Page pageInfo(ISCAIEventPageSo dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (dto.getEventLevel() != null) { - queryWrapper.eq(ISCAIEvent::getEventLevel, dto.getEventLevel()); - } - - if(dto.getHandleStatus() != null){ - queryWrapper.eq(ISCAIEvent::getHandleStatus, dto.getHandleStatus()); - } - - if(dto.getEventTypeName() != null){ - queryWrapper.like(ISCAIEvent::getEventTypeName, dto.getEventTypeName()); - } - - if(dto.getResName() != null){ - queryWrapper.like(ISCAIEvent::getResName, dto.getResName()); - } - - if(dto.getStartTime() != null){ - queryWrapper.ge(ISCAIEvent::getStartTime, dto.getStartTime()); - } - - if(dto.getEndTime() != null){ - queryWrapper.le(ISCAIEvent::getEndTime, dto.getEndTime()); - } - queryWrapper.orderByDesc(ISCAIEvent::getStartTime); - Page iscaiEventPage = this.baseMapper.selectPage(dto.getPageSo().toPage(), queryWrapper); - return iscaiEventPage; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/IaCBsnssinfoService.java b/src/main/java/com/gunshi/project/hsz/service/IaCBsnssinfoService.java deleted file mode 100644 index ed7e8fc..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/IaCBsnssinfoService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.HomeIaCBsnssinfoVo; -import com.gunshi.project.hsz.mapper.IaCBsnssinfoMapper; -import com.gunshi.project.hsz.model.IaCBsnssinfo; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 防治区企事业单位汇总表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class IaCBsnssinfoService extends ServiceImpl -{ - - public List getDetailsAndMonitoringDataLis() { - return baseMapper.getDetailsAndMonitoringDataLis(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/IaCDanadService.java b/src/main/java/com/gunshi/project/hsz/service/IaCDanadService.java deleted file mode 100644 index 6bca53a..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/IaCDanadService.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.HomeIaCDanadVo; -import com.gunshi.project.hsz.mapper.IaCDanadMapper; -import com.gunshi.project.hsz.model.IaCDanad; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 危险区基本情况调查成果汇总表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class IaCDanadService extends ServiceImpl -{ - - public List getDetailsAndMonitoringDataLis() { - return baseMapper.getDetailsAndMonitoringDataLis(); - } - - public HomeIaCDanadVo detail(String id) { - return baseMapper.detail(id); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/IaCFlrvvlgService.java b/src/main/java/com/gunshi/project/hsz/service/IaCFlrvvlgService.java deleted file mode 100644 index 811fb30..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/IaCFlrvvlgService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.HomeIaCFlrvvlgVo; -import com.gunshi.project.hsz.mapper.IaCFlrvvlgMapper; -import com.gunshi.project.hsz.model.IaCFlrvvlg; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 重要沿河村落居民户调查成果表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class IaCFlrvvlgService extends ServiceImpl -{ - - public List getDetailsAndMonitoringDataLis() { - return baseMapper.getDetailsAndMonitoringDataLis(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/IcWaterForecastDetailService.java b/src/main/java/com/gunshi/project/hsz/service/IcWaterForecastDetailService.java deleted file mode 100644 index 43b333a..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/IcWaterForecastDetailService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.IcWaterForecastDetailMapper; -import com.gunshi.project.hsz.model.IcWaterForecastDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class IcWaterForecastDetailService extends ServiceImpl { - - - public List listByForecastId(Long forecastId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(IcWaterForecastDetail::getIcWaterId,forecastId); - List icWaterForecastDetails = this.baseMapper.selectList(queryWrapper); - return icWaterForecastDetails; - } - - public void removeByForecastId(Long id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(IcWaterForecastDetail::getIcWaterId,id); - this.remove(queryWrapper); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/IcWaterForecastService.java b/src/main/java/com/gunshi/project/hsz/service/IcWaterForecastService.java deleted file mode 100644 index dc8087f..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/IcWaterForecastService.java +++ /dev/null @@ -1,344 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.gunshi.project.hsz.common.util.LocalDateTimeConverter; -import com.gunshi.project.hsz.entity.dto.icWaterForecastCaculateDto; -import com.gunshi.project.hsz.entity.so.IcWaterForecastPageSo; -import com.gunshi.project.hsz.entity.vo.ForecastResultVo; -import com.gunshi.project.hsz.mapper.IcWaterForecastMapper; -import com.gunshi.project.hsz.model.*; -import com.ruoyi.common.utils.StringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.LocalDateTime; -import java.time.YearMonth; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class IcWaterForecastService extends ServiceImpl { - - @Autowired - private IcWaterForecastDetailService icWaterForecastDetailService; - - @Autowired - private ForecastUseparamService forecastUseparamService; - - @Autowired - private TyYearRainfallService tyYearRainfallService;//典型年降雨资料 - - @Autowired - private ForecastResultsService forecastResultsService;//洪水预报 - - - - - public IcWaterForecast saveData(IcWaterForecast dto) { - BigDecimal totalWater = BigDecimal.ZERO; - dto.setCreateTime(LocalDateTime.now()); - List details = dto.getDetails(); - for (IcWaterForecastDetail detail : details) { - totalWater = totalWater.add(detail.getForecastWater() != null?detail.getForecastWater():BigDecimal.ZERO); - } - dto.setForecastWater(totalWater); - if(dto.getType() == 1){ - LocalDateTime now = LocalDateTime.now(); - LocalDateTime nowHour = now.withMinute(0).withSecond(0).withNano(0); - LocalDateTime plusHours = nowHour.plusHours(dto.getHours()); - dto.setStartTime(nowHour); - dto.setEndTime(plusHours); - } - save(dto); - details.stream().forEach(item -> { - item.setIcWaterId(dto.getId()); - }); - dto.setDetails(details); - icWaterForecastDetailService.saveBatch(details); - return dto; - } - - - public IcWaterForecast queryById(Long id){ - IcWaterForecast icWaterForecast = this.baseMapper.selectById(id); - if(icWaterForecast == null){ - return icWaterForecast; - } - icWaterForecast.setDetails(icWaterForecastDetailService.listByForecastId(id)); - return icWaterForecast; - } - - - public Page pageQuery(IcWaterForecastPageSo pageSo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (pageSo.getType() != null) { - queryWrapper.eq(IcWaterForecast::getType, pageSo.getType()); - } - - if (!StringUtils.isBlank(pageSo.getPlanName())) { - queryWrapper.like(IcWaterForecast::getPlanName, pageSo.getPlanName()); - } - - if (pageSo.getDateTimeRangeSo() != null) { - queryWrapper.ge(IcWaterForecast::getCreateTime, pageSo.getDateTimeRangeSo().getStart()); - queryWrapper.le(IcWaterForecast::getCreateTime, pageSo.getDateTimeRangeSo().getEnd()); - } - queryWrapper.orderByDesc(IcWaterForecast::getCreateTime); - Page icWaterForecastPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); - for (IcWaterForecast record : icWaterForecastPage.getRecords()) { - List icWaterForecastDetails = icWaterForecastDetailService.listByForecastId(record.getId()); - record.setDetails(icWaterForecastDetails); - } - return icWaterForecastPage; - } - - public IcWaterForecast updateData(IcWaterForecast dto) { - Long deleteId = dto.getId(); - icWaterForecastDetailService.removeByForecastId(deleteId); - removeById(deleteId); - BigDecimal totalWater = BigDecimal.ZERO; - for (IcWaterForecastDetail detail : dto.getDetails()) { - totalWater = totalWater.add(detail.getForecastWater() != null?detail.getForecastWater():BigDecimal.ZERO); - } - dto.setForecastWater(totalWater); - dto.setCreateTime(LocalDateTime.now()); - if(dto.getType() == 1){ - LocalDateTime now = LocalDateTime.now(); - LocalDateTime nowHour = now.withMinute(0).withSecond(0).withNano(0); - LocalDateTime plusHours = nowHour.plusHours(dto.getHours()); - dto.setStartTime(nowHour); - dto.setEndTime(plusHours); - } - save(dto); - dto.getDetails().stream().forEach(item -> { - item.setIcWaterId(dto.getId()); - }); - icWaterForecastDetailService.saveBatch(dto.getDetails()); - return dto; - - } - - public Boolean delData(Serializable id) { - icWaterForecastDetailService.removeByForecastId(Long.valueOf(id.toString())); - removeById(id); - return true; - } - - public List caculate(icWaterForecastCaculateDto dto) { - //获取水库承雨面积 - // 承雨面积areaF:"cymj", 河道长lengthL:"hdc", 河道坡降j:"hdpj", 时段∆t:"dt", h毫米净雨:"h" - QueryWrapper qw = new QueryWrapper().in("param_code", "cymj", "hdc", "hdpj", "dt", "h"); - List> uMaps = forecastUseparamService.listMaps(qw); - Map uMap = uMaps.stream().collect(Collectors.toMap(map -> (String) map.get("param_code"), map -> (String) map.get("param_value"))); - if(uMap.size() <=0 || uMap.get("cymj") == null){ - throw new IllegalArgumentException("水库承雨面积参数为空,请检查"); - } - List icWaterForecastDetails; - if(dto.getType() == 0){ - //长期预测 - icWaterForecastDetails = longForecast(new BigDecimal(uMap.get("cymj")), dto); - }else{ - //短期预测 - ForecastTask forecastTask = new ForecastTask(); - // 设置当前时间整点 - Integer hours = dto.getHours(); - LocalDateTime now = LocalDateTime.now(); - LocalDateTime nowHour = now.withMinute(0).withSecond(0).withNano(0); - forecastTask.setNowTime(LocalDateTimeConverter.toDate(nowHour)); - - // 设置开始时间(当前时间减去一天) - LocalDateTime startTime = nowHour.minusDays(1); - forecastTask.setStartTime(LocalDateTimeConverter.toDate(startTime)); - - // 设置结束时间(当前时间加上durationHours) - LocalDateTime endTime = nowHour.plusHours(hours); - forecastTask.setEndTime(LocalDateTimeConverter.toDate(endTime)); - - forecastTask.setForecastWarm(1); - forecastTask.setForecastPeriod(hours); // 设置预报时长 - icWaterForecastDetails = shortForecast(forecastTask,uMap.get("dt")); - } - return icWaterForecastDetails; - } - - private List shortForecast(ForecastTask forecastTask,String dt) { - //进行洪水预测 - List humanForecastResult = forecastResultsService.getHumanForecastResult(forecastTask); - List collect = new ArrayList<>(); - for (int i = 0; i < humanForecastResult.size(); i++) { - if(i + 1 < humanForecastResult.size() - && humanForecastResult.get(i).getIspreDrp().equals("0") - && humanForecastResult.get(i + 1).getIspreDrp().equals("1") - ) { - collect.add(humanForecastResult.get(i)); - } - if(humanForecastResult.get(i).getIspreDrp().equals("1")) { - collect.add(humanForecastResult.get(i)); - } - } - List res = new ArrayList<>(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - if(humanForecastResult.size() > 0){ - for (int i = 0; i < collect.size(); i++) { - IcWaterForecastDetail entity = new IcWaterForecastDetail(); - //设置预测时间 - entity.setForecastTime(LocalDateTime.parse(collect.get(i).getTm(),formatter)); - if(i == 0){ - entity.setForecastWater(BigDecimal.ZERO); - }else{ - if("1".equals(dt)){ - ForecastResultVo current = collect.get(i); - BigDecimal water = BigDecimal.ZERO; - BigDecimal waterQGap = current.getYcRkQValue().subtract(current.getYcCkQValue()); - water = waterQGap.multiply(new BigDecimal("3600")); - entity.setForecastWater(water.setScale(2, BigDecimal.ROUND_HALF_UP)); - }else{ - //间隔为半小时 - ForecastResultVo current = collect.get(i);//当前节点:时间为整点的数据 - ForecastResultVo pre = collect.get(i - 1);//时间为30的节点 - if(current.getTm().endsWith("30")){ - continue;//跳过这条数据 - } - BigDecimal water = BigDecimal.ZERO; - BigDecimal preQGap = pre.getYcRkQValue().subtract(pre.getYcCkQValue()); - water = preQGap.multiply(new BigDecimal("1800")); - BigDecimal currentQGap = current.getYcRkQValue().subtract(current.getYcCkQValue()); - water = water.add(currentQGap.multiply(new BigDecimal("1800"))); - entity.setForecastWater(water.setScale(2, BigDecimal.ROUND_HALF_UP)); - } - } - res.add(entity); - } - } - return res; - } - - //获取典型年-月的降雨 - public BigDecimal getYearAndMonthRainfall(Integer year, Integer month) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(TyYearRainfall::getYear, year); - queryWrapper.eq(TyYearRainfall::getMonth, month); - TyYearRainfall tyYearRainfall = tyYearRainfallService.getBaseMapper().selectOne(queryWrapper); - if(tyYearRainfall == null){ - return null; - } - return tyYearRainfall.getDrp(); - } - - - public List longForecast(BigDecimal areaF, icWaterForecastCaculateDto dto) { - Integer year = dto.getYear(); - LocalDateTime startTime = dto.getStartTime(); - LocalDateTime endTime = dto.getEndTime(); - - List result = new ArrayList<>(); - - // 获取开始和结束的年月 - int startYear = startTime.getYear(); - int startMonth = startTime.getMonthValue(); - int endYear = endTime.getYear(); - int endMonth = endTime.getMonthValue(); - - // 遍历每个月份 - int currentYear = startYear; - int currentMonth = startMonth; - - while (currentYear < endYear || (currentYear == endYear && currentMonth <= endMonth)) { - // 获取该月份的天数 - YearMonth yearMonth = YearMonth.of(currentYear, currentMonth); - int daysInMonth = yearMonth.lengthOfMonth(); - - // 计算该月份的起始日和结束日 - LocalDateTime monthStart = (currentYear == startYear && currentMonth == startMonth) - ? startTime - : LocalDateTime.of(currentYear, currentMonth, 1, 0, 0); - - LocalDateTime monthEnd = (currentYear == endYear && currentMonth == endMonth) - ? endTime - : LocalDateTime.of(currentYear, currentMonth, daysInMonth, 23, 59, 59); - - // 计算该月份的实际天数(考虑开始和结束月份的部分天数) - long actualDays = calculateActualDays(monthStart, monthEnd); - - // 获取该月份的降雨量 - BigDecimal rainfall = getYearAndMonthRainfall(year, currentMonth); - if (rainfall == null) { - // 如果没有降雨数据,跳过该月份 - currentMonth++; - if (currentMonth > 12) { - currentMonth = 1; - currentYear++; - } - continue; - } - - // 计算公式:=(降雨量/该月份天数*实际天数/1000*(areaF*10^6))/10000 - BigDecimal forecastWater = calculateForecastWater(rainfall, daysInMonth, actualDays, areaF); - - // 创建明细对象 - IcWaterForecastDetail detail = new IcWaterForecastDetail(); - detail.setStartTime(monthStart); - detail.setEndTime(monthEnd); - detail.setForecastWater(forecastWater); - detail.setMonth(currentMonth); - result.add(detail); - - // 移动到下个月 - currentMonth++; - if (currentMonth > 12) { - currentMonth = 1; - currentYear++; - } - } - - return result; - } - - /** - * 计算实际天数 - */ - private long calculateActualDays(LocalDateTime start, LocalDateTime end) { - return ChronoUnit.DAYS.between(start.toLocalDate(), end.toLocalDate()) + 1; - } - - /** - * 计算预测水量 - * 公式:=(降雨量/该月份天数*实际天数/1000*(areaF*10^6))/10000 - */ - private BigDecimal calculateForecastWater(BigDecimal rainfall, int daysInMonth, long actualDays, BigDecimal areaF) { - // 降雨量/该月份天数 - BigDecimal dailyRainfall = rainfall.divide(BigDecimal.valueOf(daysInMonth), 10, RoundingMode.HALF_UP); - - // * 实际天数 - BigDecimal totalRainfall = dailyRainfall.multiply(BigDecimal.valueOf(actualDays)); - - // /1000 - BigDecimal rainfallMeters = totalRainfall.divide(BigDecimal.valueOf(1000), 10, RoundingMode.HALF_UP); - - // * (areaF * 10^6) - BigDecimal areaSquareMeters = areaF.multiply(BigDecimal.valueOf(1000000)); - BigDecimal volumeCubicMeters = rainfallMeters.multiply(areaSquareMeters); - - // /10000 转换为万立方米 - BigDecimal volumeTenThousandCubicMeters = volumeCubicMeters.divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP); - - return volumeTenThousandCubicMeters; - } - - - -} diff --git a/src/main/java/com/gunshi/project/hsz/service/InspectItemService.java b/src/main/java/com/gunshi/project/hsz/service/InspectItemService.java deleted file mode 100644 index 1777e06..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/InspectItemService.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.dto.InspectItemDto; -import com.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.mapper.InspectItemMapper; -import com.gunshi.project.hsz.mapper.InspectTaskDetailMapper; -import com.gunshi.project.hsz.model.InspectItem; -import com.gunshi.project.hsz.common.model.InspectTaskDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Objects; - -/** - * 描述: 巡检项 - * author: xusan - * date: 2024-08-29 09:58:10 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class InspectItemService extends ServiceImpl -{ - @Autowired - private InspectTaskDetailMapper taskDetailMapper; - - public Page pageQuery(AttCctvBasePage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getMenuId())) { - query.eq(InspectItem::getPointId, page.getMenuId()); - } - query.orderByAsc(InspectItem::getStatus).orderByAsc(InspectItem::getOrderIndex); - Page res = this.page(page.getPageSo().toPage(), query); - return res; - } - - public String startStop(InspectItemDto dto) { - Integer status = dto.getStatus(); - InspectItem item = super.getById(dto.getId()); - if (item == null) { - throw new IllegalArgumentException("当前数据不存在"); - } - item.setStatus(status); - boolean flag = super.updateById(item); - if (flag) { - return status == 0 ? "启用成功" : "禁用成功"; - } - return status == 0 ? "启用失败" : "禁用失败"; - } - - public Boolean delData(Long id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - Long count = taskDetailMapper.selectCount(new QueryWrapper().eq("item_id", id)); - if(count > 0){ - throw new IllegalArgumentException("该巡检项已被巡检任务使用,不可删除"); - } - return this.removeById(id); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/InspectPointService.java b/src/main/java/com/gunshi/project/hsz/service/InspectPointService.java deleted file mode 100644 index 0fb1a6a..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/InspectPointService.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.InspectItemMapper; -import com.gunshi.project.hsz.mapper.InspectPointMapper; -import com.gunshi.project.hsz.model.InspectItem; -import com.gunshi.project.hsz.model.InspectPoint; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 巡检点 - * author: xusan - * date: 2024-08-29 09:57:48 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class InspectPointService extends ServiceImpl -{ - @Autowired - private InspectItemMapper inspectItemMapper; - - public InspectPoint saveData(InspectPoint dto) { - dto.setId(IdWorker.getId()); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderBy(true, false, "order_index"); - InspectPoint lastOne = super.getOne(queryWrapper, false); - int order = 0; - if (lastOne == null) { - order = 1; - } else { - order = lastOne.getOrderIndex() + 1; - } - dto.setOrderIndex(order); - this.save(dto); - return dto; - } - - public InspectPoint updateData(InspectPoint dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - this.updateById(dto); - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - //判断是否关联巡检项 - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(InspectItem::getPointId,id); - if(inspectItemMapper.selectCount(wrapper) > 0){ - throw new IllegalArgumentException("请先删除关联的巡检项"); - } - return this.removeById(id); - } - - public List listWithItem() { - List list = this.lambdaQuery().orderByAsc(InspectPoint::getOrderIndex).list(); - for(InspectPoint point : list){ - point.setChildren(inspectItemMapper.selectList(new QueryWrapper().eq("point_id",point.getId()).orderByAsc("order_index"))); - } - return list; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/InspectTaskDetailService.java b/src/main/java/com/gunshi/project/hsz/service/InspectTaskDetailService.java deleted file mode 100644 index 77562d5..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/InspectTaskDetailService.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.InspectProblemPageSo; -import com.gunshi.project.hsz.entity.vo.InspectProblemVo; -import com.gunshi.project.hsz.entity.vo.InspectTaskDetailVo; -import com.gunshi.project.hsz.mapper.InspectTaskDetailMapper; -import com.gunshi.project.hsz.common.model.InspectTaskDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 巡查信息 - * author: xusan - * date: 2024-08-29 14:21:45 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class InspectTaskDetailService extends ServiceImpl -{ - @Autowired - private FileAssociationsService fileService; - - public void saveDetail(List items, Long taskId) { - items.stream().forEach(o->{ - o.setId(IdWorker.getId()); - o.setTaskId(taskId); - }); - this.saveBatch(items); - } - - public void updateDetail(List items, Long taskId) { - delDetail(taskId); - saveDetail(items,taskId); - } - - public void delDetail(Long taskId) { - this.remove(new QueryWrapper().eq("task_id",taskId)); - } - - public List getByTaskId(Long taskId) { - return this.list(new QueryWrapper().eq("task_id",taskId)); - } - - public List inspectInfo(Long id) { - List res = new ArrayList<>(); - List list = this.baseMapper.inspectInfo(id); - Map> map = list.stream().collect(Collectors.groupingBy(InspectTaskDetailVo::getPointId)); - map.entrySet().forEach(t->{ - InspectTaskDetailVo vo = new InspectTaskDetailVo(); - Long pointId = t.getKey(); - vo.setPointId(pointId); - List value = t.getValue(); - vo.setName(value.get(0).getName()); - fillFile(value); - vo.setChildren(value); - res.add(vo); - }); - return res; - } - - private void fillFile(List value) { - for (InspectTaskDetailVo record : value) { - record.setInspectPics(fileService.queryFileList(record.getId().toString(),getGroupId(),getPicType())); - record.setInspectVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getVideoType())); - if(record.getIsHandle() != null && record.getIsHandle() == 1){ - record.setHandlePics(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandlePicType())); - record.setHandleVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandleVideoType())); - } - } - } - - public Page pageQuery(InspectProblemPageSo page) { - Page res = this.baseMapper.pageQuery(page.getPageSo().toPage(),page); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - } - return res; - } - - private void fillAttach(List records) { - for (InspectProblemVo record : records) { - record.setInspectPics(fileService.queryFileList(record.getId().toString(),getGroupId(),getPicType())); - record.setInspectVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getVideoType())); - if(record.getIsHandle() != null && record.getIsHandle() == 1){ - record.setHandlePics(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandlePicType())); - record.setHandleVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandleVideoType())); - } - } - } - - public String getGroupId() { - return "inspectTask"; - } - - private String getPicType() { - return "inspectPic"; - } - - private String getVideoType() { - return "inspectVideo"; - } - - private String getHandlePicType() { - return "handlePic"; - } - - private String getHandleVideoType() { - return "handleVideo"; - } - - public void finish(List list) { - List res = new ArrayList<>(); - List ids = list.stream().map(InspectTaskDetailVo::getId).map(Object::toString).collect(Collectors.toList()); - if(CollectionUtils.isNotEmpty(ids)){ - fileService.removeByBzIds(ids); - } - for(InspectTaskDetailVo vo : list){ - InspectTaskDetail detail = new InspectTaskDetail(); - detail.setHandleTime(new Date()); - detail.setHandleUserId(vo.getHandleUserId()); - detail.setHandleUserName(vo.getHandleUserName()); - BeanUtils.copyProperties(vo,detail); - res.add(detail); - fileService.save(vo.getInspectPics(),vo.getId().toString(),getGroupId(),getPicType()); - fileService.save(vo.getInspectVideos(),vo.getId().toString(),getGroupId(),getVideoType()); - fileService.save(vo.getHandlePics(),vo.getId().toString(),getGroupId(),getHandlePicType()); - fileService.save(vo.getHandleVideos(),vo.getId().toString(),getGroupId(),getHandleVideoType()); - } - //更新任务巡检信息表 - this.updateBatchById(res); - } - - public String handle(InspectProblemVo vo) { - InspectTaskDetail detail = new InspectTaskDetail(); - BeanUtils.copyProperties(vo,detail,InspectTaskDetail.class); - detail.setIsHandle(1); - detail.setHandleTime(new Date()); - this.updateById(detail); - fileService.save(vo.getHandlePics(),vo.getId().toString(),getGroupId(),getHandlePicType()); - fileService.save(vo.getHandleVideos(),vo.getId().toString(),getGroupId(),getHandleVideoType()); - return "处理成功"; - } - - public List handelList() { - List list = this.baseMapper.handleList(); - if(CollectionUtils.isNotEmpty(list)){ - fillAttach(list); - } - return list; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/InspectTaskService.java b/src/main/java/com/gunshi/project/hsz/service/InspectTaskService.java deleted file mode 100644 index 016228d..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/InspectTaskService.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -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.gunshi.project.hsz.entity.so.InspectTaskPageSo; -import com.gunshi.project.hsz.entity.so.InspectTaskSo; -import com.gunshi.project.hsz.entity.vo.InspectTaskDetailVo; -import com.gunshi.project.hsz.entity.vo.InspectTaskVo; -import com.gunshi.project.hsz.mapper.InspectTaskMapper; -import com.gunshi.project.hsz.common.model.InspectTask; -import com.gunshi.project.hsz.model.MessageCenter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.time.LocalDate; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 巡检任务 - * author: xusan - * date: 2024-08-29 14:21:15 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class InspectTaskService extends ServiceImpl -{ - - @Autowired - private InspectTaskDetailService inspectTaskDetailService; - - @Autowired - private MessageCenterService messageCenterService; - - public InspectTask saveData(InspectTask dto) { - dto.setId(IdWorker.getId()); - dto.setStatus(0); - dto.setCreateTime(new Date()); - this.save(dto); - inspectTaskDetailService.saveDetail(dto.getItems(),dto.getId()); - - MessageCenter center = new MessageCenter(); - center.setPublishUserId(dto.getCreateUserId()); - center.setPublishUserName(dto.getCreateUserName()); - center.setReceiveUserId(dto.getInspectUserId()); - center.setTitle("巡查任务"); - center.setContent("您收到一条巡查任务的提醒:" + dto.getTaskTitle() +",请及时处理。"); - messageCenterService.insertMessage(Arrays.asList(center)); - return dto; - } - - public InspectTask updateData(InspectTask dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - this.updateById(dto); - inspectTaskDetailService.updateDetail(dto.getItems(),dto.getId()); - return dto; - } - - public Boolean delData(Long id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - inspectTaskDetailService.delDetail(id); - return this.removeById(id); - } - - public Page pageQuery(InspectTaskPageSo page) { - return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); - } - - public Boolean startInspect(Long id) { - InspectTask task = this.getById(id); - if (Objects.isNull(task)) { - throw new IllegalArgumentException("当前数据不存在"); - } - task.setReceiveTime(new Date()); - task.setStatus(1); - return this.updateById(task); - } - - - public Boolean finish(InspectTaskVo vo) { - List list = vo.getList(); - InspectTask task = this.getById(list.get(0).getTaskId()); - inspectTaskDetailService.finish(list); - task.setFinishTime(vo.getStatus() == 2 ? new Date() : null); - task.setStatus(vo.getStatus()); - - List messageCenters = list.stream().filter(o -> o.getIsNormal() == 0 && o.getIsHandle() == 0).map(t->{ - MessageCenter center = new MessageCenter(); - center.setPublishUserId(task.getInspectUserId()); - center.setPublishUserName(task.getInspectUserName()); - center.setReceiveUserId(t.getHandleUserId()); - center.setTitle("巡查问题"); - center.setContent("您收到一条巡查任务未处理问题的提醒:"+task.getTaskTitle()+",请及时处理。"); - return center; - }).collect(Collectors.toList()); - messageCenterService.insertMessage(messageCenters); - return this.updateById(task); - } - - public List listQuery(InspectTaskSo so) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(InspectTask::getInspectUserId,so.getInspectUserId()) - .in(InspectTask::getStatus,so.getStatusList()); - if(so.getDateRangeSo() != null && so.getDateRangeSo().getStart() != null){ - queryWrapper.ge(InspectTask::getStartDate,so.getDateRangeSo().getStart()); - } - if(so.getDateRangeSo() != null && so.getDateRangeSo().getEnd() != null){ - queryWrapper.le(InspectTask::getStartDate,so.getDateRangeSo().getEnd()); - } - return this.list(queryWrapper); - } - - public List month() { - LocalDate now = LocalDate.now(); - String monthValue = String.valueOf(now.getMonthValue()); - if(now.getMonthValue() < 10){ - monthValue = "0"+monthValue; - } - return this.baseMapper.month(monthValue); - } - - public Integer year() { - LocalDate now = LocalDate.now(); - String year = String.valueOf(now.getYear()); - return this.baseMapper.year(year); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/InspectTaskTrackService.java b/src/main/java/com/gunshi/project/hsz/service/InspectTaskTrackService.java deleted file mode 100644 index 3316828..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/InspectTaskTrackService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.InspectTaskTrackMapper; -import com.gunshi.project.hsz.model.InspectTaskTrack; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 巡查轨迹 - * author: xusan - * date: 2024-09-18 13:59:21 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class InspectTaskTrackService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByBDService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByBDService.java deleted file mode 100644 index bf3716d..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskByBDService.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.so.JcskByBDPageSo; -import com.gunshi.project.hsz.mapper.JcskByBDMapper; -import com.gunshi.project.hsz.common.model.JcskByBD; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskByBDService extends ServiceImpl { - - public Page pageQuery(JcskByBDPageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(page.getDeviceId() != null){ - queryWrapper.eq(JcskByBD::getDeviceId, page.getDeviceId()); - } - if(page.getOrder() != null){ - queryWrapper.eq(JcskByBD::getOrder, page.getOrder()); - } - Page jcskByBDPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); - return jcskByBDPage; - } - - public List listDevices() { - - return this.baseMapper.listDevices(); - } - - public List listAll(Date date) { - return this.baseMapper.listAll(date); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByBService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByBService.java deleted file mode 100644 index 2dc5542..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskByBService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.JcskByBMapper; -import com.gunshi.project.hsz.common.model.JcskByB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskByBService extends ServiceImpl { -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByInspectTaskService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByInspectTaskService.java deleted file mode 100644 index d91f2c8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskByInspectTaskService.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; - -import com.gunshi.project.hsz.mapper.InspectTaskMapper; -import com.gunshi.project.hsz.mapper.JcskByInspectTaskMapper; -import com.gunshi.project.hsz.common.model.InspectTask; -import com.gunshi.project.hsz.model.JcskByInspectTask; -import com.gunshi.project.hsz.common.model.JcskByR; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskByInspectTaskService extends ServiceImpl { - - @Autowired - private InspectTaskService inspectTaskService; - - @Autowired - private InspectTaskDetailService inspectTaskDetailService; - - @Autowired - private InspectTaskMapper inspectTaskMapper; - - public InspectTask queryInspectTask(JcskByR record) { - InspectTask res = null; - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - //测点编号+开始时间+结束时间 可以唯一确定一条关联数据 - queryWrapper.eq(JcskByInspectTask::getOrder, record.getOrder()); - queryWrapper.le(JcskByInspectTask::getObDate, record.getObDate()); // 任务开始时间 <= record的开始时间 - queryWrapper.ge(JcskByInspectTask::getObResolveDate, record.getObDate()); // 任务结束时间 >= record的开始时间 - JcskByInspectTask jcskByInspectTask = this.baseMapper.selectOne(queryWrapper); - if (jcskByInspectTask != null) { - //获取关联的巡检任务的ID - Long inspectTaskId = jcskByInspectTask.getInspectTaskId(); - //查询数据 - res = inspectTaskService.getById(inspectTaskId); - Integer countIsHandle = inspectTaskMapper.countIsHandle(inspectTaskId); - Integer countIsNormal = inspectTaskMapper.countIsNormal(inspectTaskId); - if(res != null){ - res.setProblemNum(countIsNormal); - res.setHandleNum(countIsHandle); - } - - } - return res; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByRProcessService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByRProcessService.java deleted file mode 100644 index 5877aa9..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskByRProcessService.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.JcskByInspectTaskMapper; -import com.gunshi.project.hsz.mapper.JcskByRProcessMapper; -import com.gunshi.project.hsz.common.model.InspectTask; -import com.gunshi.project.hsz.model.JcskByInspectTask; -import com.gunshi.project.hsz.common.model.JcskByR; -import com.gunshi.project.hsz.model.JcskByRProcess; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskByRProcessService extends ServiceImpl { - private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss"; - - @Autowired - private InspectTaskService inspectTaskService; - - @Autowired - private JcskByInspectTaskMapper jcskByInspectTaskMapper; - - public Boolean process(JcskByRProcess jcskByRProcess) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(JcskByRProcess::getOrder, jcskByRProcess.getOrder()); - queryWrapper.eq(JcskByRProcess::getObDate, jcskByRProcess.getObDate()); - //查询同一测点,同一时间是否处理过 - JcskByRProcess dbData = this.baseMapper.selectOne(queryWrapper); - - Date obDate = jcskByRProcess.getObDate(); - //endDate = obDate + 所填小时 - Date endDate = addHours(obDate, jcskByRProcess.getHours()); - jcskByRProcess.setObResolveDate(endDate); - if(dbData == null){ - this.baseMapper.insert(jcskByRProcess); - }else{ - this.baseMapper.update(jcskByRProcess,queryWrapper); - } - //是否填写巡检任务 - if(jcskByRProcess.getInspectTask() != null){ - InspectTask inspectTask = jcskByRProcess.getInspectTask(); - //保存巡检任务 - inspectTaskService.saveData(inspectTask); - //添加关联 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(JcskByInspectTask::getObDate, obDate); - lambdaQueryWrapper.eq(JcskByInspectTask::getOrder, jcskByRProcess.getOrder()); - JcskByInspectTask jcskByInspectTask = jcskByInspectTaskMapper.selectOne(lambdaQueryWrapper); - JcskByInspectTask entity = new JcskByInspectTask(); - entity.setOrder(jcskByRProcess.getOrder()); - entity.setObDate(obDate); - entity.setObResolveDate(endDate); - entity.setInspectTaskId(inspectTask.getId()); - if(jcskByInspectTask == null){ - jcskByInspectTaskMapper.insert(entity); - }else{ - jcskByInspectTaskMapper.update(entity,lambdaQueryWrapper); - } - } - return true; - } - - private Date addHours(Date date, int hours) { - if (date == null) return null; - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - calendar.add(Calendar.HOUR_OF_DAY, hours); - return calendar.getTime(); - } - - public List queryCount(JcskByR record) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(JcskByRProcess::getOrder, record.getOrder()); - queryWrapper.ge(JcskByRProcess::getObResolveDate,record.getObDate()); - queryWrapper.le(JcskByRProcess::getObDate,record.getObDate()); - queryWrapper.orderByDesc(JcskByRProcess::getHours); - List res = this.baseMapper.selectList(queryWrapper); - return res; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskByRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskByRService.java deleted file mode 100644 index bc7e15e..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskByRService.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.so.JcskByRPageSo; -import com.gunshi.project.hsz.common.model.vo.JcskByRProcessVo; -import com.gunshi.project.hsz.mapper.WaterDataTermitesMapper; -import com.gunshi.project.hsz.common.model.InspectTask; -import com.gunshi.project.hsz.common.model.JcskByR; -import com.gunshi.project.hsz.model.JcskByRProcess; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Map; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskByRService extends ServiceImpl { - - @Autowired - private JcskByRProcessService jcskByRProcessService; - - @Autowired - private JcskByInspectTaskService jcskByInspectTaskService; - - @Autowired - private JcskByBDService jcskByBDService; - - - - public Page pageQuery(JcskByRPageSo page) { - Page res; - if(page.getObDate() != null){ - res = this.baseMapper.query(page.getPageSo().toPage(), page); - }else{ - res = this.baseMapper.queryWithNoDate(page.getPageSo().toPage(), page); - } - for (JcskByR record : res.getRecords()) { - List list = jcskByRProcessService.queryCount(record); - if(list.size() > 0){ - record.setIsProcess(true); - } - //当为处理之后的情况下 - InspectTask inspectTask = jcskByInspectTaskService.queryInspectTask(record); - if(inspectTask != null){ - //设置存在巡检任务 - record.setHasInspectTask(true); - //设置巡检任务数据 - JcskByRProcessVo detailTask = new JcskByRProcessVo(); - BeanUtils.copyProperties(inspectTask,detailTask); - detailTask.setHours(list.get(0).getHours()); - detailTask.setObResolveDate(list.get(0).getObResolveDate()); - detailTask.setObDate(list.get(0).getObDate()); - record.setJcskByRProcessVo(detailTask); - } - } - return res; - } - - public Map pageQueryCount(JcskByRPageSo page, Map countMap) { - long hasAnt = 0; - long noData = 0; - long notAnt = 0; - long totalData = 0; - Page res; - if(page.getObDate() != null){ - res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); - }else{ - res = this.baseMapper.pageQueryWithNoDate(page.getPageSo().toPage(), page); - } - List records = res.getRecords(); - for (JcskByR record : records) { - if(record.getStatus() == 0 && record.getElectricity() != null && record.getElectricity() > 0){ - notAnt++; - }else if(record.getStatus() == 1 && record.getElectricity() != null && record.getElectricity() > 0){ - hasAnt++; - }else{ - noData++; - } - } - totalData = jcskByBDService.count(); - noData = totalData - hasAnt - notAnt; - countMap.put("hasAnt",hasAnt); - countMap.put("notAnt",notAnt); - countMap.put("noData",noData >=0 ? noData:0); - countMap.put("totalPoint",totalData); - return countMap; - } - - public Page detailList(JcskByRPageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(page.getOrder() != null){ - queryWrapper.eq(JcskByR::getOrder,page.getOrder()); - } else if (page.getDeviceCode() != null) { - queryWrapper.eq(JcskByR::getDeviceId,page.getDeviceCode()); - }else{ - throw new IllegalArgumentException("请传入设备编号,或者测站编号"); - } - if(page.getDateTimeRangeSo() != null){ - queryWrapper.between(JcskByR::getObDate,page.getDateTimeRangeSo().getStart(),page.getDateTimeRangeSo().getEnd()); - } - queryWrapper.orderByDesc(JcskByR::getStatus) - .orderByDesc(JcskByR::getObDate); - Page jcskByRPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); - return jcskByRPage; - } - - public List listNewData(String deviceId) { - return this.baseMapper.listNewData(deviceId); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskGnssBService.java b/src/main/java/com/gunshi/project/hsz/service/JcskGnssBService.java deleted file mode 100644 index 8b9136f..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskGnssBService.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.JcskGnssRMapper; -import com.gunshi.project.hsz.common.model.JcskGnssR; -import com.gunshi.project.hsz.common.model.so.JcskGnssBPageSo; -import com.gunshi.project.hsz.common.model.vo.HomeJcskGnssBVo; -import com.gunshi.project.hsz.common.mapper.JcskGnssBMapper; -import com.gunshi.project.hsz.common.model.JcskGnssB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.time.Duration; -import java.time.LocalDateTime; -import java.util.List; - - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskGnssBService extends ServiceImpl { - - - private final JcskGnssRMapper jcskGnssRMapper; - - public JcskGnssBService(JcskGnssRMapper jcskGnssRMapper) { - this.jcskGnssRMapper = jcskGnssRMapper; - } - - public Page pageQuery(JcskGnssBPageSo page) { - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(ObjectUtils.isNotNull(page.getStationCode())){ - queryWrapper.like(JcskGnssB::getCd, page.getStationCode()); - } - - Page res = this.page(page.getPageSo().toPage(), queryWrapper); - return res; - } - - public HomeJcskGnssBVo getDetailsById(String id) { - return baseMapper.getDetailsById(id); - } - - public List getDetailsAndMonitoringDataList() { - return baseMapper.getDetailsAndMonitoringDataList(); - } - - public List listDms() { - return this.baseMapper.listDms(); - } - - public List artificialTree() { - return baseMapper.selectArtificial(); - } - - public void checkStatus(List list){ - for (JcskGnssB jcskGnssB : list) { - //N+1 就N+1把 无所谓了 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(JcskGnssR::getCd, jcskGnssB.getCd()); - queryWrapper.orderByDesc(JcskGnssR::getTm) - .last("limit 1"); - JcskGnssR jcskGnssR = jcskGnssRMapper.selectOne(queryWrapper); - if(jcskGnssR == null){ - jcskGnssB.setStatus(0); - }else if(jcskGnssR != null){ - LocalDateTime tm = jcskGnssR.getTm(); - LocalDateTime now = LocalDateTime.now(); - Duration between = Duration.between(tm, now); - if(between.toHours() > 24){ - jcskGnssB.setStatus(0); - }else{ - jcskGnssB.setStatus(1); - } - } - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskGnssRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskGnssRService.java deleted file mode 100644 index ab20ed5..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskGnssRService.java +++ /dev/null @@ -1,552 +0,0 @@ -package com.gunshi.project.hsz.service; - -import cn.hutool.poi.excel.ExcelWriter; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.common.model.vo.*; -import com.gunshi.project.hsz.entity.dto.ArtificialJcskGnssDeleteDto; -import com.gunshi.project.hsz.common.model.so.JcskGnssRPageSo; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.common.mapper.JcskGnssBMapper; -import com.gunshi.project.hsz.common.mapper.JcskGnssRMapper; -import com.gunshi.project.hsz.common.mapper.JcskSyRMapper; -import com.gunshi.project.hsz.common.model.JcskGnssR; -import com.gunshi.project.hsz.util.DataHandleUtil; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.util.ExcelUtil; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.net.URLEncoder; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; - - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskGnssRService extends ServiceImpl { - - @Resource - private AttResBaseMapper attResBaseMapper; - - @Autowired - private JcskSyRMapper jcskSyRMapper; - - @Autowired - private JcskGnssBMapper jcskGnssBMapper; - - private static final String X_PREFIX = "/E"; - private static final String Y_PREFIX = "/N"; - private static final String H_PREFIX = "/U"; - - - public Page pageQuery(JcskGnssRPageSo page) { - Page res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); - return res; - } - - public String getStcd() { - List attResBaseVos = attResBaseMapper.queryList(); - AttResBaseVo attResBaseVo = attResBaseVos.get(0); - return attResBaseVo == null ? "":attResBaseVo.getStcd(); - } - - public List listValue() { - List list = baseMapper.listValue(); - list.stream().forEach(o ->{ - o.setStationCode(o.getCd()); - }); - if(CollectionUtils.isEmpty(list)){ - return list; - } - OsmoticQuerySo so = new OsmoticQuerySo(); - List stationCodes = list.stream().map(JcskGnessListVo::getCd).collect(Collectors.toList()); - String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(JcskGnessListVo::getTm)).get().getTm(); - String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(JcskGnessListVo::getTm)).get().getTm(); - so.setStationCodes(stationCodes); - DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); - dateTimeRangeSo.setStart(DateUtil.convertStringToDate(minTm)); - dateTimeRangeSo.setEnd(DateUtil.convertStringToDate(maxTm)); - so.setDateTimeRangeSo(dateTimeRangeSo); - List warnList = baseMapper.queryWarn(so); - list.stream().map(o->{ - if(o.getTm() != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(o.getTm()), new Date()) > 48){ - o.setFlag(1); - } - Boolean a = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("X")).findAny().isPresent(); - if(a){ - o.setXStatus(1); - } - Boolean b = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("Y")).findAny().isPresent(); - if(b){ - o.setYStatus(1); - } - Boolean c = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("H")).findAny().isPresent(); - if(c){ - o.setHStatus(1); - } - return o; - }).collect(Collectors.toList()); - return list; - } - - public List yearStat(OsmoticQuerySo osmoticQuerySo) { - List resList = new ArrayList<>(); - commonQueryHandle(osmoticQuerySo); - //查询位移监测记录 - List valueList = baseMapper.queryReorganizeValue(osmoticQuerySo); - List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(), false); - //数据处理 - for(String str : dateList){ - OsmoticShiftVo2 vo = new OsmoticShiftVo2(); - vo.setTm(str); - // 筛选出该日期8点的数据 - List collect = valueList.stream() - .filter(o -> { - if (o.getTm() != null && o.getTm().startsWith(str)) { - // 提取时间部分,检查是否为08:00:00 - String timePart = o.getTm().substring(11, 13); // 获取 HH:mm:ss 部分 - return "08".equals(timePart); - } - return false; - }) - .peek(o->o.setTm(str)) - .collect(Collectors.toList()); - vo.setList(collect); - resList.add(vo); - } - return resList; - } - - // 新增:生成指定年份的所有日期(确保只包含当年日期) - private List generateYearDates(Integer year) { - List dates = new ArrayList<>(); - LocalDate start = LocalDate.of(year, 1, 1); - LocalDate end = LocalDate.of(year, 12, 31); - - LocalDate current = start; - while (!current.isAfter(end)) { - dates.add(current.toString()); // 格式为yyyy-MM-dd - current = current.plusDays(1); - } - return dates; - } - - - private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ - String year = osmoticQuerySo.getYear(); - try { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date start = sdf.parse(year + "-01-01 00:00:00"); - Date end = sdf.parse(year + "-12-31 23:59:59"); // 建议使用 23:59:59 - - DateTimeRangeSo so = new DateTimeRangeSo(); - so.setStart(start); - so.setEnd(end); - osmoticQuerySo.setDateTimeRangeSo(so); - return osmoticQuerySo; - } catch (Exception e) { - throw new IllegalArgumentException("日期格式错误: " + year, e); - } - } - - public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { - // 定义时间格式化器 - List resList = new ArrayList<>(); - try { - commonQueryHandle(osmoticQuerySo); - //查询位移监测记录 - List valueList = baseMapper.queryValue(osmoticQuerySo); - //按测站分组 - Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticShiftValueVo2::getCd)); - map.entrySet().forEach(o->{ - String key = o.getKey(); - List value = o.getValue(); - - OsmoticChartVo2 xVo = new OsmoticChartVo2(); - OsmoticShiftValueVo2 xMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDe)).get(); - OsmoticShiftValueVo2 xMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDe)).get(); - xVo.setCd(key + X_PREFIX); - xVo.setMaxValue(xMax.getDe()); - xVo.setMaxTm(xMax.getTm()); - xVo.setMinValue(xMin.getDe()); - xVo.setMinTm(xMin.getTm()); - xVo.setDiff(xMax.getDe().subtract(xMin.getDe())); - resList.add(xVo); - - OsmoticChartVo2 yVo = new OsmoticChartVo2(); - OsmoticShiftValueVo2 yMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDn)).get(); - OsmoticShiftValueVo2 yMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDn)).get(); - yVo.setCd(key + Y_PREFIX); - yVo.setMaxValue(yMax.getDn()); - yVo.setMaxTm(yMax.getTm()); - yVo.setMinValue(yMin.getDn()); - yVo.setMinTm(yMin.getTm()); - yVo.setDiff(yMax.getDn().subtract(yMin.getDn())); - resList.add(yVo); - - OsmoticChartVo2 hVo = new OsmoticChartVo2(); - OsmoticShiftValueVo2 hMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDu)).get(); - OsmoticShiftValueVo2 hMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDu)).get(); - hVo.setCd(key + H_PREFIX); - hVo.setMaxValue(hMax.getDu()); - hVo.setMaxTm(hMax.getTm()); - hVo.setMinValue(hMin.getDu()); - hVo.setMinTm(hMin.getTm()); - hVo.setDiff(hMax.getDu().subtract(hMin.getDu())); - resList.add(hVo); - - }); - } catch (Exception e) { - log.info("year/state/value报错"); - e.printStackTrace(); - throw new IllegalArgumentException("报错"); - } - return resList; - } - - public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - String fileName = "年度位移统计"; - String sheetName = "年度位移统计"; - - //上方表格数据 - List resList = yearStat(osmoticQuerySo); - //下方特征值数据 - List chartList = yearStatValue(osmoticQuerySo); - List stationCodes = osmoticQuerySo.getStationCodes(); - //表头信息 - List> headList = new ArrayList<>(); - List heads1 = new ArrayList<>(); - heads1.add("序号"); - heads1.add("序号"); - headList.add(heads1); - - List heads2 = new ArrayList<>(); - heads2.add("监测日期"); - heads2.add("监测日期"); - headList.add(heads2); - - for(String code : stationCodes){ - List headsX = new ArrayList<>(); - headsX.add(code); - headsX.add("X"); - headList.add(headsX); - - List headsY = new ArrayList<>(); - headsY.add(code); - headsY.add("Y"); - headList.add(headsY); - - List headsH = new ArrayList<>(); - headsH.add(code); - headsH.add("H"); - headList.add(headsH); - } - - List> list = new ArrayList<>(); - for (int j = 0;j < resList.size(); j++) { - OsmoticShiftVo2 vo = resList.get(j); - Map test = new LinkedHashMap<>(); - test.put("t0",j+1); - test.put("t1", vo.getTm()); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - OsmoticShiftValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getCd())).findFirst().orElse(null); - test.put(code + X_PREFIX,valueVo != null ? valueVo.getDe() : ""); - test.put(code + Y_PREFIX,valueVo != null ? valueVo.getDn() : ""); - test.put(code + H_PREFIX,valueVo != null ? valueVo.getDu() : ""); - } - list.add(test); - } - - Map max = new LinkedHashMap<>(); - max.put("t0","全年度特征值统计"); - max.put("t1", "最大值"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - max.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); - max.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); - max.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); - } - list.add(max); - - Map maxTm = new LinkedHashMap<>(); - maxTm.put("t0","全年度特征值统计"); - maxTm.put("t1", "日期"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - maxTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); - maxTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); - maxTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); - } - list.add(maxTm); - - Map min = new LinkedHashMap<>(); - min.put("t0","全年度特征值统计"); - min.put("t1", "最小值"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - min.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); - min.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); - min.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); - } - list.add(min); - - Map minTm = new LinkedHashMap<>(); - minTm.put("t0","全年度特征值统计"); - minTm.put("t1", "日期"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - minTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); - minTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); - minTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); - } - list.add(minTm); - - Map diff = new LinkedHashMap<>(); - diff.put("t0","全年度特征值统计"); - diff.put("t1", "年变幅"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - diff.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); - diff.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); - diff.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); - } - list.add(diff); - - ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); - } - - public List detailValue(OsmoticDetailQuerySo so) { - List list = baseMapper.detailValue(so); - OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); - BeanUtils.copyProperties(so,osmoticQuerySo); - List stRzVos = jcskSyRMapper.queryLineRz(osmoticQuerySo,getStcd()); - return bindShiftDetail(list,stRzVos); - } - - private String getHourTime(String timeStr) { - try { - if (timeStr == null || timeStr.length() < 16) { - return timeStr; - } - // 假设时间格式为 "yyyy-MM-dd HH:mm:ss" - // 取到小时部分,分钟和秒设为00 - return timeStr.substring(0, 14) + "00:00"; - } catch (Exception e) { - return timeStr; - } - } - - - private List bindShiftDetail(List list, List stRzVos) { - // 分离人工录入数据和自动采集数据 - List manualData = list.stream() - .filter(v -> v.getIsArtificial() != null && v.getIsArtificial() == 1) - .collect(Collectors.toList()); - - List autoData = list.stream() - .filter(v -> v.getIsArtificial() == null || v.getIsArtificial() == 0) - .collect(Collectors.toList()); - - // 如果是人工录入数据,直接使用原始数据,不进行时间合并 - if (!manualData.isEmpty()) { - return manualData.stream() - .map(manual -> { - // 为人工录入数据匹配整点的库水位数据 - String hourTime = getHourTime(manual.getTm()); - stRzVos.stream() - .filter(rz -> hourTime.equals(rz.getTm())) - .findFirst() - .ifPresent(rz -> manual.setRz(rz.getRz())); - return manual; - }) - .sorted(Comparator.comparing(OsmoticShiftValueVo2::getTm).reversed()) - .collect(Collectors.toList()); - } - - // 如果是自动采集数据,保持原有逻辑 - HashSet timeSet = new HashSet<>(); - autoData.forEach(v -> timeSet.add(v.getTm())); - stRzVos.forEach(v -> timeSet.add(v.getTm())); - - List result = new ArrayList<>(); - timeSet.forEach(time -> { - OsmoticShiftValueVo2 vo = new OsmoticShiftValueVo2(); - vo.setTm(time); - result.add(vo); - }); - - List resList = result.stream().map(vo -> { - // 匹配库水位数据 - 自动数据也匹配整点库水位 - String hourTime = getHourTime(vo.getTm()); - stRzVos.stream() - .filter(rz -> hourTime.equals(rz.getTm())) - .findFirst() - .ifPresent(rz -> vo.setRz(rz.getRz())); - - // 匹配位移数据 - autoData.stream() - .filter(shift -> vo.getTm().equals(shift.getTm())) - .findFirst() - .ifPresent(shift -> { - vo.setDe(shift.getDe()); - vo.setDn(shift.getDn()); - vo.setDu(shift.getDu()); - vo.setIsArtificial(shift.getIsArtificial()); - }); - return vo; - }).collect(Collectors.toList()); - - // 过滤掉没有监测数据的记录(即位移数据为空的记录) - List filteredList = resList.stream() - .filter(vo -> vo.getDe() != null || vo.getDn() != null || vo.getDu() != null) - .collect(Collectors.toList()); - - return filteredList.stream() - .sorted(Comparator.comparing(OsmoticShiftValueVo2::getTm).reversed()) - .collect(Collectors.toList()); - } - - public List getChAndCd() { - List chs = jcskGnssBMapper.selectCH(); - List res = new ArrayList<>(); - for (String ch : chs) { - GnssCdAndCdVo vo = new GnssCdAndCdVo(); - vo.setCh(ch); - List cds = jcskGnssBMapper.selectCDbyCh(ch); - vo.setChildrens(cds); - res.add(vo); - } - return res; - } - - public Page historyPage(JcskGnssRPageSo page) { - return this.baseMapper.historyPage(page.getPageSo().toPage(),page); - } - - public Page artificialPage(JcskGnssRPageSo page) { - Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(),page); - return res; - } - - /** - * 将Date转为String - * @param date - * @return - */ - public String transforDateToString(Date date) { - // 将Date转换为LocalDateTime - if(date == null){ - return null; - } - LocalDateTime localDateTime = date.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - String formattedDate = localDateTime.format(formatter); - return formattedDate; - } - - public void artificialExport(JcskGnssRPageSo page, HttpServletResponse response) { - Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(), page); - List records = res.getRecords(); - - // 创建导出数据列表 - List> exportData = new ArrayList<>(); - for (JcskGnssR record : records) { - Map row = new HashMap<>(); - row.put("cd",record.getCd()); - row.put("isArtificial", record.getIsArtificial() != null && record.getIsArtificial() == 1 ? "人工录入" : "自动采集"); - row.put("updateTm", record.getUpdateTm().toString()); - row.put("x",record.getDe()); - row.put("y",record.getDn()); - row.put("h",record.getDu()); - row.put("tm",record.getTm().toString()); - exportData.add(row); - } - - // 通过工具类创建writer - ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(); - - // 自定义标题(去掉水库代码、水工建筑物编号、stcd、mpcd) - writer.addHeaderAlias("cd", "测点编号"); - writer.addHeaderAlias("tm", "监测时间"); - writer.addHeaderAlias("x", "X方向形变值(mm)"); - writer.addHeaderAlias("y", "Y方向形变值(mm)"); - writer.addHeaderAlias("h", "H方向形变值(mm)"); - writer.addHeaderAlias("isArtificial","录入方式"); - writer.addHeaderAlias("updateTm","更新时间"); - - // 只写出设置了别名的字段 - writer.setOnlyAlias(true); - - // 一次性写出内容 - writer.write(exportData, true); - - // 设置响应内容类型 - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); - - try { - // 设置响应头信息 - String fileName = URLEncoder.encode("位移人工录入数据", "UTF-8"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); - - // 将writer对象刷新到响应输出流中 - writer.flush(response.getOutputStream(), true); - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException("导出Excel失败", e); - } finally { - // 关闭writer,释放内存 - writer.close(); - } - } - - public boolean saveData(JcskGnssR dto) { - - dto.setIsArtificial(1); - dto.setUpdateTm(LocalDateTime.now()); - int insert = this.baseMapper.insert(dto); - return insert > 0; - } - - public boolean updateData(JcskGnssR dto) { - dto.setUpdateTm(LocalDateTime.now()); - LocalDateTime oldTm = dto.getTm(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(JcskGnssR::getIsArtificial, 1); - queryWrapper.eq(JcskGnssR::getTm, oldTm); - queryWrapper.eq(JcskGnssR::getCd, dto.getCd()); - dto.setCd(dto.getNewUpdateCd()); - dto.setTm(dto.getNewUpdateTm()); - int update = this.baseMapper.update(dto, queryWrapper); - return update > 0; - } - - public boolean deleteData(ArtificialJcskGnssDeleteDto dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(JcskGnssR::getIsArtificial, 1); - queryWrapper.eq(JcskGnssR::getTm, dto.getTm()); - queryWrapper.eq(JcskGnssR::getCd, dto.getCd()); - int delete = this.baseMapper.delete(queryWrapper); - return delete > 0; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSlBService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSlBService.java deleted file mode 100644 index 4af42f1..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskSlBService.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.so.JcskSlBPageSo; -import com.gunshi.project.hsz.common.model.vo.HomeJcskSlBVo; -import com.gunshi.project.hsz.common.mapper.JcskSlBMapper; -import com.gunshi.project.hsz.common.model.JcskSlB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskSlBService extends ServiceImpl { - - - public Page pageQuery(JcskSlBPageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(ObjectUtils.isNotNull(page.getMpcd())){ - queryWrapper.like(JcskSlB::getMpcd, page.getMpcd()); - } - if(ObjectUtils.isNotNull(page.getRscd())){ - queryWrapper.like(JcskSlB::getRscd, page.getRscd()); - } - if(ObjectUtils.isNotNull(page.getStcd())){ - queryWrapper.like(JcskSlB::getStcd, page.getStcd()); - } - Page res = this.page(page.getPageSo().toPage(), queryWrapper); - return res; - } - - public List getDetailsAndMonitoringDataList() { - return baseMapper.getDetailsAndMonitoringDataList(); - } - - public HomeJcskSlBVo getDetailsById(String id) { - return baseMapper.getDetailsById(id); - } - - public List getDvcdByProfileCode(String profileCode) { - return this.baseMapper.getDvcdByProfileCode(profileCode); - } - - public String getDvcdByStcdAndMpcd(String mpcd) { - return this.baseMapper.selectDvcdByStcdAndMpcd(mpcd); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSlRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSlRService.java deleted file mode 100644 index 8a70ae2..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskSlRService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.so.JcskSlRPageSo; -import com.gunshi.project.hsz.common.model.vo.JcskSlRHisVo; -import com.gunshi.project.hsz.common.mapper.JcskSlRMapper; -import com.gunshi.project.hsz.common.model.JcskSlR; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskSlRService extends ServiceImpl { - - - public Page pageQuery(JcskSlRPageSo page) { - Page res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); - return res; - } - - public Page historyPage(JcskSlRPageSo page) { - return this.baseMapper.historyPage(page.getPageSo().toPage(),page); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSyBService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSyBService.java deleted file mode 100644 index 7ad59f8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskSyBService.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.so.JcskSyBPageSo; -import com.gunshi.project.hsz.common.model.vo.HomeJcskSYBVo; -import com.gunshi.project.hsz.common.mapper.JcskSyBMapper; -import com.gunshi.project.hsz.common.model.JcskSyB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskSyBService extends ServiceImpl { - - - - public Page pageQuery(JcskSyBPageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - - if(ObjectUtils.isNotNull(page.getMpcd())){ - queryWrapper.like(JcskSyB::getMpcd,page.getMpcd()); - } - if(ObjectUtils.isNotNull(page.getDm())){ - queryWrapper.like(JcskSyB::getDm,page.getDm()); - } - Page res = this.page(page.getPageSo().toPage(), queryWrapper); - return res; - } - - public List getDetailsAndMonitoringDataList() { - return baseMapper.getDetailsAndMonitoringDataList(); - } - - public HomeJcskSYBVo getDetailsById(String id) { - return baseMapper.getDetailsById(id); - } - - public List getDvcdByProfileCode(String profileCode) { - - return this.baseMapper.getDvcdByProfileCode(profileCode); - } - - public String getDvcdByStcdAndMpcd(String stcd, String mpcd) { - return this.baseMapper.selectDvcdByStcdAndMpcd(stcd,mpcd); - } - - public List getAllDvcd() { - return this.baseMapper.selectAllDvcd(); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java b/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java deleted file mode 100644 index 9bc0749..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/JcskSyRService.java +++ /dev/null @@ -1,1077 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import cn.hutool.poi.excel.ExcelWriter; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.common.model.JcskSyR; -import com.gunshi.project.hsz.common.model.vo.*; -import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; -import com.gunshi.project.hsz.entity.dto.ArtificialJcskSyDeleteDto; -import com.gunshi.project.hsz.common.model.so.JcskSyRPageSo; -import com.gunshi.project.hsz.common.model.so.OsmoticDetailQuerySo; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.entity.dto.ProjectSafeCalculateDto; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.common.mapper.JcskSlBMapper; -import com.gunshi.project.hsz.mapper.JcskSyREightAmMapper; -import com.gunshi.project.hsz.common.mapper.JcskSyRMapper; -import com.gunshi.project.hsz.common.model.JcskSyB; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.*; -import com.ruoyi.common.utils.StringUtils; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.NotNull; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.net.URLEncoder; -import java.text.SimpleDateFormat; -import java.time.Duration; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class JcskSyRService extends ServiceImpl { - - @Autowired - private JcskSyBService jcskSyBService; - - @Autowired - private JcskGnssRService jcskGnssRService; - - @Autowired - private JcskSlBMapper jcskSlBMapper; - - - @Autowired - private AttDamProfileService attDamProfileService; - - @Autowired - private JcskSyREightAmMapper jcskSyREightAmMapper; - - @Autowired - private SyRegressionDataService syRegressionDataService; - - @Autowired - private SyDataCheckRuleService syDataCheckRuleService; - - - - public Page pageQuery(JcskSyRPageSo page) { - Page res = this.baseMapper.queryPage(page.getPageSo().toPage(),page); - return res; - } - - // 使用更现代的日期时间API - private Date parseDateSafe(String dateStr) { - if (dateStr == null) return null; - - // 移除可能的时区信息 - dateStr = dateStr.replace("T", " ").split("\\.")[0]; - - try { - LocalDateTime localDateTime = LocalDateTime.parse(dateStr, - DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); - } catch (Exception e) { - try { - LocalDate localDate = LocalDate.parse(dateStr, - DateTimeFormatter.ofPattern("yyyy-MM-dd")); - return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); - } catch (Exception e2) { - throw new RuntimeException("无法解析日期: " + dateStr, e2); - } - } - } - - - public List listValue(Integer type) { - List list; - try { - if(type == 1){ - list = baseMapper.listValue(); - }else { - list = jcskSlBMapper.listValue(); - //list = baseMapper.flowListValue(); - } - OsmoticQuerySo so = new OsmoticQuerySo(); - List stationCodes = list.stream().map(JcskSyRVo::getStationCode).collect(Collectors.toList()); - if(list.stream().filter(o->o.getTm() != null).collect(Collectors.toList()).size() > 0 ){ - String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(JcskSyRVo::getTm)).get().getTm().toString(); - String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(JcskSyRVo::getTm)).get().getTm().toString(); - so.setStationCodes(stationCodes); - DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); - dateTimeRangeSo.setStart(parseDateSafe(minTm)); - dateTimeRangeSo.setEnd(parseDateSafe(maxTm)); - so.setDateTimeRangeSo(dateTimeRangeSo); - List warnList = baseMapper.queryWarn(so); - list.stream().map(o->{ - if(o.getTm() != null && DateUtil.hoursBetweenDate(parseDateSafe(o.getTm().toString()), new Date()) > 48){ - o.setFlag(1); - } - Boolean b = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm())).findAny().isPresent(); - if(b){ - o.setStatus(1); - } - String stationCode = o.getStationCode(); - LambdaQueryWrapper wq = new LambdaQueryWrapper(); - wq.eq(JcskSyB::getDvcd, stationCode); - List jcskSyBS = jcskSyBService.list(wq); - if(!jcskSyBS.isEmpty()){ - o.setProfileName(jcskSyBS.get(0).getDm().toString()); - } - return o; - }).collect(Collectors.toList()); - } - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - for (JcskSyRVo jcskSyRVo : list) { - String tm = jcskSyRVo.getTm(); - if(tm != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24){ - jcskSyRVo.setOnoffStauts(0); - }else if(tm == null){ - jcskSyRVo.setOnoffStauts(1); - }else{ - jcskSyRVo.setOnoffStauts(1); - } - } - return list; - } - - public List detailValue(OsmoticDetailQuerySo so) { - List list; - if(so.getType() == 1){ - list = baseMapper.detailValue(so); - }else{ - list = jcskSlBMapper.detailValue(so); - } - if(so.getType() == 2){ - return list; - } - OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); - BeanUtils.copyProperties(so,osmoticQuerySo); - List stRzVos = baseMapper.queryLineRz(osmoticQuerySo,jcskGnssRService.getStcd()); - return bindPressDetail(list,stRzVos); - } - - /** - * 将时间转换为整点时间 - * 例如:2024-10-14 15:30:00 → 2024-10-14 15:00:00 - * 2024-10-14 15:45:25 → 2024-10-14 15:00:00 - */ - private String getHourTime(String timeStr) { - try { - if (timeStr == null || timeStr.length() < 16) { - return timeStr; - } - // 假设时间格式为 "yyyy-MM-dd HH:mm:ss" - // 取到小时部分,分钟和秒设为00 - return timeStr.substring(0, 14) + "00:00"; - } catch (Exception e) { - return timeStr; - } - } - - private List bindPressDetail(List list, List stRzVos) { - HashSet timeSet = new HashSet<>(); - list.forEach(v -> timeSet.add(v.getTm())); - stRzVos.forEach(v -> { - String hourTimeForRz = getHourTime(v.getTm()); - timeSet.add(hourTimeForRz); - }); - - List result = new ArrayList<>(); - timeSet.forEach(time -> { - OsmoticPressDetailVo vo = new OsmoticPressDetailVo(); - vo.setTm(time); - result.add(vo); - }); - - List resList = result.stream().map(vo -> { - // 查询库水位数据:如果时间不是整点,使用整点时间查询 - String hourTimeForRz = getHourTime(vo.getTm()); - stRzVos.stream() - .filter(rz -> hourTimeForRz.equals(getHourTime(rz.getTm()))) - .findFirst() - .ifPresent(rz -> vo.setRz(rz.getRz())); - - // 匹配压力数据:使用原始时间 - list.stream() - .filter(press -> vo.getTm().equals(press.getTm())) - .findFirst() - .ifPresent(press -> vo.setValue(press.getValue())); - - return vo; - }).collect(Collectors.toList()); - - // 修改为倒序排序 - return resList.stream() - .sorted(Comparator.comparing(OsmoticPressDetailVo::getTm).reversed()) - .collect(Collectors.toList()); - } - public Map stat() { - Map map = new HashMap<>(); - List press = this.listValue(1); - Integer pressSize = press.size(); - Long pressWarn = press.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); - - List flow = this.listValue(2); - Integer flowSize = flow.size(); - Long flowWarn = flow.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); - - List shift = jcskGnssRService.listValue(); - Integer shiftSize = shift.size(); - Long shiftWarn = shift.stream().filter(o -> o.getXStatus() == 1 || o.getYStatus() ==1 || o.getHStatus() == 1).collect(Collectors.counting()); - - Integer size = pressSize + flowSize + shiftSize; - Integer warn = Stream.of(pressWarn, flowWarn, shiftWarn).mapToInt(Long::intValue).sum(); - map.put(warn,size); - return map; - } - - - /** - * 测值查询,管水位和库水位数据固定查询每日早8点 - * @param osmoticQuerySo - * @return - */ - public List queryValue(OsmoticQuerySo osmoticQuerySo, Integer year) { - if(osmoticQuerySo.getType() == null) { - osmoticQuerySo.setType(1); - } - List resList = new ArrayList<>(); - if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(osmoticQuerySo.getStationCodes())){ - return resList; - } - String stcd = jcskGnssRService.getStcd(); - Boolean isDesc = true; - //查询测站降雨量 - Map drpMap = new HashMap<>(); - if(year != null){ - isDesc = false; - List drpList = baseMapper.queryDrp(year,stcd); - drpMap = drpList.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); - } - List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(),isDesc); - - //查询库水位 - List list = baseMapper.queryRz(osmoticQuerySo,stcd); - Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); - //查询测站管水位/渗流量 - List valueList; - if(osmoticQuerySo.getType() == 1){ - //渗压数据 - valueList = baseMapper.query8AmValue(osmoticQuerySo); - }else{ - //渗流数据 - valueList = jcskSlBMapper.query8AmValue(osmoticQuerySo); - } - //数据处理 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - for(String str : dateList){ - OsmoticStationVo2 vo = new OsmoticStationVo2(); - vo.setTm(str); - vo.setRz(rzMap.get(str)); - vo.setDrp(drpMap.get(str)); - List collect = valueList.stream() - .filter(o -> { - if (o.getTm() != null) { - // 将Date格式化为yyyy-MM-dd字符串进行比较 - String dateStr = o.getTm().substring(0,10); - return str.equals(dateStr); - } - return false; - }) - .peek(o->o.setTm(str)) - .collect(Collectors.toList()); - vo.setList(collect); - resList.add(vo); - } - return resList; - } - - public List queryChart(OsmoticQuerySo osmoticQuerySo,Integer year) { - List resList = new ArrayList<>(); - List stationCodes = osmoticQuerySo.getStationCodes(); - if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(stationCodes)){ - return resList; - } - String stcd = jcskGnssRService.getStcd(); - //查询库水位 - List list = baseMapper.queryRz2(osmoticQuerySo,stcd); - Map rzMap = list.stream() - .collect(Collectors.toMap( - StRzVo::getTm, // 键:时间 - StRzVo::getRz, // 值:水位 - (existingValue, newValue) -> existingValue // 重复时保留第一个值 - )); - //查询测站管水位 - List valueList; - if(osmoticQuerySo.getType() == 1){ - //渗压数据 - valueList = baseMapper.queryValue(osmoticQuerySo); - }else{ - //渗流数据 - valueList = jcskSlBMapper.queryValue(osmoticQuerySo); - } - //按测站分组 - Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticValueVo2::getStationCode)); - for(String code : stationCodes){ - OsmoticChartVo2 vo = new OsmoticChartVo2(); - vo.setCd(code); - if(map.containsKey(code)){ - List voList = map.get(code); - OsmoticValueVo2 max = voList.stream().max(Comparator.comparing(OsmoticValueVo2::getValue)).get(); - OsmoticValueVo2 min = voList.stream().min(Comparator.comparing(OsmoticValueVo2::getValue)).get(); - vo.setCd(code); - vo.setMaxValue(max.getValue()); - vo.setMaxTm(max.getTm()); - vo.setMinValue(min.getValue()); - vo.setMinTm(min.getTm()); - vo.setDiff(max.getValue().subtract(min.getValue())); - if(year == null){ - vo.setDetailVos(bindData(MyBeanUtil.collectionCopy(list,OsmoticChartDetailVo.class),MyBeanUtil.collectionCopy(voList,OsmoticChartDetailVo.class))); - } - }else { - vo.setDetailVos(new ArrayList<>()); - } - if(vo.getDetailVos() != null){ - for (OsmoticChartDetailVo detailVo : vo.getDetailVos()) { - detailVo.setRz(rzMap.get(detailVo.getTm())); - } - }else{ - vo.setDetailVos(new ArrayList<>()); - } - - resList.add(vo); - } - //查询测站降雨量 - List drpList; - if(year != null){ - drpList = baseMapper.queryDrp(year,stcd); - OsmoticChartVo2 chartVo = new OsmoticChartVo2(); - chartVo.setCd("rz"); - if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(list)){ - StRzVo max = list.stream().max(Comparator.comparing(StRzVo::getRz)).get(); - StRzVo min = list.stream().min(Comparator.comparing(StRzVo::getRz)).get(); - chartVo.setMaxValue(max.getRz()); - chartVo.setMaxTm(max.getTm()); - chartVo.setMinValue(min.getRz()); - chartVo.setMinTm(min.getTm()); - chartVo.setDiff(max.getRz().subtract(min.getRz())); - resList.add(chartVo); - } - - if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(drpList)){ - OsmoticChartVo2 drpVo = new OsmoticChartVo2(); - drpVo.setCd("drp"); - StRzVo maxDrp = drpList.stream().max(Comparator.comparing(StRzVo::getRz)).get(); - StRzVo minDrp = drpList.stream().min(Comparator.comparing(StRzVo::getRz)).get(); - drpVo.setMaxValue(maxDrp.getRz()); - drpVo.setMaxTm(maxDrp.getTm()); - drpVo.setMinValue(minDrp.getRz()); - drpVo.setMinTm(minDrp.getTm()); - drpVo.setDiff(maxDrp.getRz().subtract(minDrp.getRz())); - resList.add(drpVo); - } - } - return resList; - } - - - - //根据监测时间合并管水位和库水位数据 - private List bindData(List tmRzList, List voList) { - HashSet strings = new HashSet<>(); - tmRzList.stream().forEach(v1 -> strings.add(v1.getTm())); - voList.stream().forEach(v1 -> strings.add(v1.getTm())); - - List result = new ArrayList<>(); - strings.stream().forEach(v1 ->{ - OsmoticChartDetailVo v = new OsmoticChartDetailVo(); - v.setTm(v1); - result.add(v); - }); - List list = result.stream().map(v1 -> { - tmRzList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setRz(v2.getRz()); - }); - - voList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setValue(v2.getValue()); - }); - return v1; - }).collect(Collectors.toList()); - return list.stream().sorted(Comparator.comparing(OsmoticChartDetailVo::getTm)).collect(Collectors.toList()); - } - - public List infiltraLine(OsmoticQuerySo osmoticQuerySo) { - List resList = new ArrayList<>(); - String stcd = jcskGnssRService.getStcd(); - //查询库水位 - //TODO 数据是每整点过五分监测一次(暂时修改,看后续实际数据来了之后会怎么样) - List list = baseMapper.queryLineRz(osmoticQuerySo,stcd); - Map rzMap = list.stream() - .collect(Collectors.toMap( - StRzVo::getTm, // 键:时间 - StRzVo::getRz, // 值:水位 - (existingValue, newValue) -> existingValue // 重复时保留第一个值 - )); - //查询测站管水位 - List valueList = baseMapper.queryLineValue(osmoticQuerySo); - //查询测站预警信息 - List warnList = baseMapper.queryWarn(osmoticQuerySo); - - valueList.stream().map(vo->{ - Boolean b = warnList.stream().filter(o->o.getStationCode().equals(vo.getStationCode()) && o.getTm().equals(vo.getTm())).findAny().isPresent(); - if(b){ - vo.setStatus(0); - } - return vo; - }).collect(Collectors.toList()); - - HashSet dateList = new HashSet<>(); - list.stream().forEach(v1 -> dateList.add(v1.getTm())); - valueList.stream().forEach(v1 -> dateList.add(v1.getTm())); - - // 过滤出整点时间数据 - List hourList = dateList.stream() - .filter(tm -> tm.matches(".*:00:00$")) // 匹配以:00:00结尾的时间 - .collect(Collectors.toList()); - - for(String str : hourList){ - OsmoticStationVo2 vo = new OsmoticStationVo2(); - vo.setTm(str); - vo.setRz(rzMap.get(str)); - List newList = valueList.stream().filter(o->str.equals(o.getTm())).collect(Collectors.toList()); - vo.setList(newList); - if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(newList) && newList.stream().filter(o->o.getStatus() == 0).findAny().isPresent()){ - vo.setStatus(0); - } - resList.add(vo); - } - return resList.stream().sorted(Comparator.comparing(OsmoticStationVo2::getTm).reversed()).collect(Collectors.toList()); - } - - public void export(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - //通过断面查询渗压设备 - List stationCodes = osmoticQuerySo.getStationCodes(); - //表头信息 - List heads = new ArrayList<>(); - heads.add("序号"); - heads.add("时间"); - heads.add("库水位(m)"); - heads.addAll(stationCodes); - heads.add("结果分析"); - - //表格数据 - List resList = infiltraLine(osmoticQuerySo); - List> list = new ArrayList<>(); - for (int j = 0;j < resList.size(); j++) { - OsmoticStationVo2 vo = resList.get(j); - Map test = new LinkedHashMap<>(); - test.put("t0",j+1); - test.put("t1", vo.getTm()); - test.put("t2", vo.getRz()); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - OsmoticValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); - test.put(code,valueVo != null ? valueVo.getValue() : ""); - } - test.put("t4", vo.getStatus() == 0 ? "异常":"正常"); - list.add(test); - } - List> hs = new ArrayList<>(); - for (String s : heads) { - hs.add(Arrays.asList(s)); - } - ExcelUtil.exportExcel(hs, DataHandleUtil.tableData(list), "浸润线", response, "浸润线"); - } - - private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ - String year = osmoticQuerySo.getYear(); - try { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date start = sdf.parse(year + "-01-01 00:00:00"); - Date end = sdf.parse(year + "-12-31 23:59:59"); // 建议使用 23:59:59 - - DateTimeRangeSo so = new DateTimeRangeSo(); - so.setStart(start); - so.setEnd(end); - osmoticQuerySo.setDateTimeRangeSo(so); - return osmoticQuerySo; - } catch (Exception e) { - throw new IllegalArgumentException("日期格式错误: " + year, e); - } - } - - public List yearStat(OsmoticQuerySo osmoticQuerySo) { - commonQueryHandle(osmoticQuerySo); - return queryValue(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); - } - - public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { - commonQueryHandle(osmoticQuerySo); - return queryChart(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); - } - - public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { - String headName = osmoticQuerySo.getProfileName() + "断面测压管水位(m)"; - String fileName = "断面年度渗压统计"; - String sheetName = "年度渗压统计"; - if(osmoticQuerySo.getType() == 1){ - fileName = osmoticQuerySo.getProfileName() + fileName; - }else { - headName = "渗流量(L/s)"; - fileName = "年度渗流统计"; - sheetName = "年度渗流统计"; - } - - //上方表格数据 - List resList = yearStat(osmoticQuerySo); - //下方特征值数据 - List chartList = queryChart(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); - List stationCodes = osmoticQuerySo.getStationCodes(); - //表头信息 - List> headList = new ArrayList<>(); - List heads1 = new ArrayList<>(); - heads1.add("序号"); - heads1.add("序号"); - headList.add(heads1); - - List heads2 = new ArrayList<>(); - heads2.add("监测日期"); - heads2.add("监测日期"); - headList.add(heads2); - - for(String code : stationCodes){ - List heads = new ArrayList<>(); - heads.add(headName); - heads.add(code); - headList.add(heads); - } - - List heads3 = new ArrayList<>(); - heads3.add("库水位(m)"); - heads3.add("库水位(m)"); - headList.add(heads3); - - List heads4 = new ArrayList<>(); - heads4.add("降雨量(mm)"); - heads4.add("降雨量(mm)"); - headList.add(heads4); - - List> list = new ArrayList<>(); - for (int j = 0;j < resList.size(); j++) { - OsmoticStationVo2 vo = resList.get(j); - Map test = new LinkedHashMap<>(); - test.put("t0",j+1); - test.put("t1", vo.getTm()); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - OsmoticValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); - test.put(code,valueVo != null ? valueVo.getValue() : ""); - } - test.put("t2", vo.getRz()); - test.put("t3", vo.getDrp()); - list.add(test); - } - - Map max = new LinkedHashMap<>(); - max.put("t0","全年度特征值统计"); - max.put("t1", "最大值"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - max.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMaxValue()); - } - max.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMaxValue()); - max.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMaxValue()); - list.add(max); - - Map maxTm = new LinkedHashMap<>(); - maxTm.put("t0","全年度特征值统计"); - maxTm.put("t1", "日期"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - maxTm.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMaxTm()); - } - maxTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMaxTm()); - maxTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMaxTm()); - list.add(maxTm); - - Map min = new LinkedHashMap<>(); - min.put("t0","全年度特征值统计"); - min.put("t1", "最小值"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - min.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMinValue()); - } - min.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMinValue()); - min.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMinValue()); - list.add(min); - - Map minTm = new LinkedHashMap<>(); - minTm.put("t0","全年度特征值统计"); - minTm.put("t1", "日期"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - minTm.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMinTm()); - } - minTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMinTm()); - minTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMinTm()); - list.add(minTm); - - Map diff = new LinkedHashMap<>(); - diff.put("t0","全年度特征值统计"); - diff.put("t1", "年变幅"); - for(int i = 0;i < stationCodes.size();i++){ - String code = stationCodes.get(i); - diff.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getDiff()); - } - diff.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getDiff()); - diff.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getDiff()); - list.add(diff); - - ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); - } - - public List listDvcd() { - List dms = this.baseMapper.listDm();//查询断面 - List res = new ArrayList<>(); - for (String dm : dms) { - DmDvcdVo vo = new DmDvcdVo(); - vo.setDm(dm); - vo.setDvcd(this.baseMapper.listDvcdByDm(dm)); - res.add(vo); - } - return res; - } - - public List listStcdMpcd() { - List syBList = this.baseMapper.listStcdMpcd(); - List syStcdMpcdVoList = new ArrayList<>(); - Map> groupMapData = syBList.stream().collect( - Collectors.groupingBy(JcskSyB::getStcd, Collectors.mapping(JcskSyB::getMpcd, Collectors.toList())) - ); - groupMapData.entrySet().stream().forEach(entry -> { - SyStcdMpcdVo entity = new SyStcdMpcdVo(); - entity.setStcd(entry.getKey()); - entity.setMpcdList(entry.getValue()); - syStcdMpcdVoList.add(entity); - }); - return syStcdMpcdVoList; - } - - public Page historyPage(JcskSyRPageSo page) { - return this.baseMapper.historyPage(page.getPageSo().toPage(),page); - } - - public boolean saveData(JcskSyR dto) { - List list = jcskSyBService.lambdaQuery().eq(JcskSyB::getDvcd, dto.getDvcd()).last("limit 1").list(); - JcskSyB jcskSyB = list.get(0); - dto.setStcd(jcskSyB.getStcd()); - dto.setMpcd(jcskSyB.getMpcd()); - dto.setIsArtificial(1); - dto.setUpdateTm(LocalDateTime.now()); - int insert = this.baseMapper.insert(dto); - return insert > 0; - } - - public boolean updateData(JcskSyR dto) { - List list = jcskSyBService.lambdaQuery().eq(JcskSyB::getDvcd, dto.getDvcd()).last("limit 1").list(); - JcskSyB jcskSyB = list.get(0); - String stcd = jcskSyB.getStcd(); - String mpcd = jcskSyB.getMpcd(); - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(JcskSyR::getMstm, dto.getMstm()) - .eq(JcskSyR::getMpcd, dto.getMpcd()) - .eq(JcskSyR::getStcd,dto.getStcd()) - .set(JcskSyR::getHycncd, dto.getHycncd()) - .set(JcskSyR::getRscd, dto.getRscd()) - .set(JcskSyR::getSpprwl, dto.getSpprwl()) - .set(JcskSyR::getTm, dto.getTm()) - .set(JcskSyR::getUpdateTm, new Date()) - .set(JcskSyR::getMpcd, mpcd) - .set(JcskSyR::getStcd, stcd) - .set(JcskSyR::getMstm,dto.getUpdateMstm()); - int update = this.baseMapper.update(wrapper); - return update > 0; - } - - public Page artificialPage(JcskSyRPageSo page) { - Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(),page); - return res; - - } - public String transforDateToString(Date date) { - // 将Date转换为LocalDateTime - if(date == null){ - return null; - } - LocalDateTime localDateTime = date.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - String formattedDate = localDateTime.format(formatter); - return formattedDate; - } - - public void artificialExport(JcskSyRPageSo page, HttpServletResponse response) { - - Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(), page); - List records = res.getRecords(); - - // 创建导出数据列表 - List> exportData = new ArrayList<>(); - for (JcskSyR record : records) { - Map row = new HashMap<>(); - row.put("mstm", record.getMstm().toString()); - row.put("tm", record.getTm()); - row.put("spprwl", record.getSpprwl()); - row.put("isArtificial", record.getIsArtificial() != null && record.getIsArtificial() == 1 ? "人工录入" : "自动采集"); - row.put("updateTm", DateTransforUtil.transforLocalDateTimeToString(record.getUpdateTm(),"yyyy-MM-dd HH:mm:ss")); - row.put("dm", record.getDm()); - row.put("dmName", record.getDmName()); - row.put("dvcd", record.getDvcd()); // 改为测点编号 - exportData.add(row); - } - - // 通过工具类创建writer - ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(); - - // 自定义标题(去掉水库代码、水工建筑物编号、stcd、mpcd) - writer.addHeaderAlias("dvcd", "测点编号"); - writer.addHeaderAlias("mstm", "测量时间"); - writer.addHeaderAlias("tm", "温度(℃)"); - writer.addHeaderAlias("spprwl", "渗流压力水位(m)"); - writer.addHeaderAlias("isArtificial", "录入方式"); - writer.addHeaderAlias("updateTm", "更新时间"); - writer.addHeaderAlias("dm", "断面编码"); - writer.addHeaderAlias("dmName", "断面名称"); - - // 只写出设置了别名的字段 - writer.setOnlyAlias(true); - - // 一次性写出内容 - writer.write(exportData, true); - - // 设置响应内容类型 - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); - - try { - // 设置响应头信息 - String fileName = URLEncoder.encode("渗流压力人工录入数据", "UTF-8"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); - - // 将writer对象刷新到响应输出流中 - writer.flush(response.getOutputStream(), true); - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException("导出Excel失败", e); - } finally { - // 关闭writer,释放内存 - writer.close(); - } - } - - - public boolean deleteData(ArtificialJcskSyDeleteDto dto) { - if(StringUtils.isBlank(dto.getStcd())) { - throw new IllegalArgumentException("stcd不能为空"); - } - if(StringUtils.isBlank(dto.getMpcd())){ - throw new IllegalArgumentException("mpcd不能为空"); - } - if(dto.getMstm() == null){ - throw new IllegalArgumentException("时间不能为空"); - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(JcskSyR::getStcd, dto.getStcd()); - queryWrapper.eq(JcskSyR::getMstm, dto.getMstm()); - queryWrapper.eq(JcskSyR::getMpcd,dto.getMpcd()); - queryWrapper.eq(JcskSyR::getIsArtificial,1); - int delete = this.baseMapper.delete(queryWrapper); - return delete > 0; - } - - @Autowired - private AttResBaseService attResBaseService; - - /** - * 多项式方程计算 - * @param dto - * @return - */ - public ProjectSafeCalculateVo calculate(@NotNull ProjectSafeCalculateDto dto) { - /** - * 首先startTime和endTime有没有数据 - * - * */ - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(SyRegressionData::getDvcd,dto.getDvcd()); - wrapper.eq(SyRegressionData::getStartTime,dto.getDateTimeRangeSo().getStart()); - wrapper.eq(SyRegressionData::getEndTime,dto.getDateTimeRangeSo().getEnd()); - wrapper.orderByAsc(SyRegressionData::getOrder); - List queryData = syRegressionDataService.getBaseMapper().selectList(wrapper); - if(!queryData.isEmpty()){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - ProjectSafeCalculateVo res = new ProjectSafeCalculateVo(); - //根据dvcd查询stcd和mpcd - queryWrapper.eq(JcskSyB::getDvcd, dto.getDvcd()); - JcskSyB jcskSyB = jcskSyBService.getBaseMapper().selectOne(queryWrapper); - String stcd = jcskSyB.getStcd(); - String mpcd = jcskSyB.getMpcd(); - //取得这个时间段得所有八点得数据 - LambdaQueryWrapper eightAmLambdaQueryWrapper = new LambdaQueryWrapper<>(); - eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getStcd, stcd); - eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getMpcd, mpcd); - eightAmLambdaQueryWrapper.ge(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getStart()); - eightAmLambdaQueryWrapper.le(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getEnd()); - eightAmLambdaQueryWrapper.orderByAsc(JcskSyREightAm::getMstm); - List jcskSyREightAms = jcskSyREightAmMapper.selectList(eightAmLambdaQueryWrapper); - AttResBase attResBase = attResBaseService.list().get(0); - OsmoticQuerySo querySo = new OsmoticQuerySo(); - DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); - dateTimeRangeSo.setStart(dto.getDateTimeRangeSo().getStart()); - dateTimeRangeSo.setEnd(dto.getDateTimeRangeSo().getEnd()); - querySo.setDateTimeRangeSo(dateTimeRangeSo); - List stRzVos = baseMapper.qeury8AmRz(querySo,attResBase.getStcd()); - Map rzMap = stRzVos.stream() - .collect(Collectors.toMap( - StRzVo::getTm, // key: 时间 - StRzVo::getRz, // value: 水位 - (existing, replacement) -> existing // 如果key冲突,保留已存在的 - )); - //组合成为 时间 库水位 管道水位的数据 - List data = new ArrayList<>(); - Iterator iterator = jcskSyREightAms.iterator(); - while (iterator.hasNext()) { - JcskSyREightAm eightAm = iterator.next(); - if(eightAm.getMstm() == null || eightAm.getSpprwl() == null){ - iterator.remove(); - } - OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); - - // 设置监测时间和监测值(管道水位) - String mstmStr = eightAm.getMstm().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - detailVo.setTm(mstmStr); - detailVo.setValue(eightAm.getSpprwl()); - - // 查找对应的库水位 - BigDecimal rzValue = findClosestRzValue(rzMap, mstmStr); - if(rzValue == null){ - iterator.remove(); - } - detailVo.setRz(rzValue); - //获取数据清洗规则 - SyDataCheckRule rule = syDataCheckRuleService.getByDvcd(dto.getDvcd()); - if(rule != null && rule.getIsAvailable() == 1){ - //校验这条数据是否符合规则 - if(rzValue.compareTo(rule.getRz()) >=0){ - //如果当前库水位大于等于设置库水位,则跳过这条数据 - iterator.remove(); - } - if(eightAm.getSpprwl().compareTo(rule.getSyValue()) <=0){ - //如果当前监测值小于等于设置值,则跳过这套数据 - iterator.remove(); - } - } - data.add(detailVo); - } - if(data.isEmpty()){ - return res; - } - res.setDatas(data); - res.setOne(queryData.get(0) != null?queryData.get(0).getRegressionEquation():null); - res.setTwo(queryData.get(1) != null?queryData.get(1).getRegressionEquation():null); - res.setThree(queryData.get(2) != null?queryData.get(2).getRegressionEquation():null); - res.setFour(queryData.get(3) != null?queryData.get(3).getRegressionEquation():null); - return res; - }else{ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - ProjectSafeCalculateVo res = new ProjectSafeCalculateVo(); - //根据dvcd查询stcd和mpcd - queryWrapper.eq(JcskSyB::getDvcd, dto.getDvcd()); - JcskSyB jcskSyB = jcskSyBService.getBaseMapper().selectOne(queryWrapper); - String stcd = jcskSyB.getStcd(); - String mpcd = jcskSyB.getMpcd(); - //取得这个时间段得所有八点得数据 - LambdaQueryWrapper eightAmLambdaQueryWrapper = new LambdaQueryWrapper<>(); - eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getStcd, stcd); - eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getMpcd, mpcd); - eightAmLambdaQueryWrapper.ge(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getStart()); - eightAmLambdaQueryWrapper.le(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getEnd()); - eightAmLambdaQueryWrapper.orderByAsc(JcskSyREightAm::getMstm); - List jcskSyREightAms = jcskSyREightAmMapper.selectList(eightAmLambdaQueryWrapper); - AttResBase attResBase = attResBaseService.list().get(0); - OsmoticQuerySo querySo = new OsmoticQuerySo(); - DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); - dateTimeRangeSo.setStart(dto.getDateTimeRangeSo().getStart()); - dateTimeRangeSo.setEnd(dto.getDateTimeRangeSo().getEnd()); - querySo.setDateTimeRangeSo(dateTimeRangeSo); - List stRzVos = baseMapper.qeury8AmRz(querySo,attResBase.getStcd()); - Map rzMap = stRzVos.stream() - .collect(Collectors.toMap( - StRzVo::getTm, // key: 时间 - StRzVo::getRz, // value: 水位 - (existing, replacement) -> existing // 如果key冲突,保留已存在的 - )); - //组合成为 时间 库水位 管道水位的数据 - List data = new ArrayList<>(); - Iterator iterator = jcskSyREightAms.iterator(); - while (iterator.hasNext()) { - JcskSyREightAm eightAm = iterator.next(); - if(eightAm.getMstm() == null || eightAm.getSpprwl() == null){ - iterator.remove(); - } - OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); - - // 设置监测时间和监测值(管道水位) - String mstmStr = eightAm.getMstm().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - detailVo.setTm(mstmStr); - detailVo.setValue(eightAm.getSpprwl()); - - // 查找对应的库水位 - BigDecimal rzValue = findClosestRzValue(rzMap, mstmStr); - if(rzValue == null){ - iterator.remove(); - } - detailVo.setRz(rzValue); - //获取数据清洗规则 - SyDataCheckRule rule = syDataCheckRuleService.getByDvcd(dto.getDvcd()); - if(rule != null && rule.getIsAvailable() == 1){ - //校验这条数据是否符合规则 - if(rzValue.compareTo(rule.getRz()) >=0){ - //如果当前库水位大于等于设置库水位,则跳过这条数据 - iterator.remove(); - } - if(eightAm.getSpprwl().compareTo(rule.getSyValue()) <=0){ - //如果当前监测值小于等于设置值,则跳过这套数据 - iterator.remove(); - } - } - data.add(detailVo); - } - if(data.isEmpty()){ - return res; - } - res.setDatas(data); - List saves = new ArrayList<>(); - RegressionEquation first = RegressionAnalysis.calculateLinear(data); - LocalDateTime createTime = LocalDateTime.now(); - if(first != null){ - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SyRegressionData::getDvcd, dto.getDvcd()); - query.eq(SyRegressionData::getOrder,1); - syRegressionDataService.remove(query); - res.setOne(first.toString()); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setOrder(1); - syRegressionData.setRegressionEquation(first.toString()); - syRegressionData.setDvcd(dto.getDvcd()); - syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); - syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); - syRegressionData.setCreateTime(createTime); - saves.add(syRegressionData); - } - RegressionEquation second = RegressionAnalysis.calculateQuadratic(data); - if(second != null){ - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SyRegressionData::getDvcd, dto.getDvcd()); - query.eq(SyRegressionData::getOrder,2); - syRegressionDataService.remove(query); - res.setTwo(second.toString()); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setOrder(2); - syRegressionData.setRegressionEquation(second.toString()); - syRegressionData.setDvcd(dto.getDvcd()); - syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); - syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); - syRegressionData.setCreateTime(createTime); - saves.add(syRegressionData); - } - RegressionEquation three = RegressionAnalysis.calculateCubic(data); - if(three != null){ - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SyRegressionData::getDvcd, dto.getDvcd()); - query.eq(SyRegressionData::getOrder,3); - syRegressionDataService.remove(query); - res.setThree(three.toString()); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setOrder(3); - syRegressionData.setRegressionEquation(three.toString()); - syRegressionData.setDvcd(dto.getDvcd()); - syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); - syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); - syRegressionData.setCreateTime(createTime); - saves.add(syRegressionData); - } - RegressionEquation four = RegressionAnalysis.calculateQuartic(data); - if(four != null){ - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(SyRegressionData::getDvcd, dto.getDvcd()); - query.eq(SyRegressionData::getOrder,4); - syRegressionDataService.remove(query); - res.setFour(four.toString()); - SyRegressionData syRegressionData = new SyRegressionData(); - syRegressionData.setOrder(4); - syRegressionData.setRegressionEquation(four.toString()); - syRegressionData.setDvcd(dto.getDvcd()); - syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); - syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); - syRegressionData.setCreateTime(createTime); - saves.add(syRegressionData); - } - syRegressionDataService.saveBatch(saves); - return res; - } - } - - /** - * 查找最接近的库水位值 - */ - private BigDecimal findClosestRzValue(Map rzMap, String targetTimeStr) { - // 如果直接匹配到,直接返回 - if (rzMap.containsKey(targetTimeStr)) { - return rzMap.get(targetTimeStr); - } - - // 如果没有直接匹配,查找最接近的时间 - LocalDateTime targetTime = LocalDateTime.parse(targetTimeStr, - DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - - String closestTime = null; - long minDiff = Long.MAX_VALUE; - - for (String timeStr : rzMap.keySet()) { - LocalDateTime time = LocalDateTime.parse(timeStr, - DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - - long diff = Math.abs(Duration.between(targetTime, time).toMinutes()); - - if (diff < minDiff) { - minDiff = diff; - closestTime = timeStr; - } - } - - return closestTime != null ? rzMap.get(closestTime) : BigDecimal.ZERO; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/MaintainServiceService.java b/src/main/java/com/gunshi/project/hsz/service/MaintainServiceService.java deleted file mode 100644 index f9d26d4..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/MaintainServiceService.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.so.MaintainPageSo; -import com.gunshi.project.hsz.mapper.MaintainServiceMapper; -import com.gunshi.project.hsz.model.MaintainService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 维修养护 - * author: xusan - * date: 2024-08-27 15:15:14 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class MaintainServiceService extends ServiceImpl -{ - @Autowired - private FileAssociationsService fileService; - - public MaintainService saveData(MaintainService dto) { - dto.setId(IdWorker.getId()); - boolean result = this.save(dto); - if (result) { - fileService.save(dto.getPics(), dto.getId().toString(), getGroupId(),getPicType()); - fileService.save(dto.getVideos(), dto.getId().toString(), getGroupId(),getVideoType()); - } - return dto; - } - - private String getVideoType() { - return "mainVideo"; - } - - private String getPicType() { - return "mainPic"; - } - - public MaintainService updateData(MaintainService dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.removeByBzIdAndType(dto.getId().toString(),getGroupId(),getPicType()); - fileService.save(dto.getPics(), dto.getId().toString(), getGroupId(),getPicType()); - fileService.removeByBzIdAndType(dto.getId().toString(),getGroupId(),getVideoType()); - fileService.save(dto.getVideos(), dto.getId().toString(), getGroupId(),getVideoType()); - } - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return data; - } - - public String getGroupId() { - return "maintainService"; - } - - public Page pageQuery(MaintainPageSo page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getMaintainType())) { - query.eq(MaintainService::getMaintainType, page.getMaintainType()); - } - if (page.getDateTimeSo() != null && page.getDateTimeSo().getStart() != null) { - query.ge(MaintainService::getReportTime, page.getDateTimeSo().getStart()); - } - if (page.getDateTimeSo() != null && page.getDateTimeSo().getEnd() != null) { - query.le(MaintainService::getReportTime, page.getDateTimeSo().getEnd()); - } - query.orderByDesc(MaintainService::getReportTime); - Page res = this.page(page.getPageSo().toPage(), query); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - } - return res; - } - - private void fillAttach(List ret) { - for (MaintainService record : ret) { - record.setPics(fileService.queryFileList(record.getId().toString(),getGroupId(),getPicType())); - record.setVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getVideoType())); - } - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java b/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java deleted file mode 100644 index 7aab724..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/MentenceFarmerRecordService.java +++ /dev/null @@ -1,424 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.db.dto.MonthRangeSo; -import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo; -import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo; -import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo; -import com.gunshi.project.hsz.entity.vo.StatusCountVo; -import com.gunshi.project.hsz.mapper.HiddenInfoMapper; -import com.gunshi.project.hsz.mapper.MentenceFarmerRecordMapper; -import com.gunshi.project.hsz.model.HiddenInfo; -import com.gunshi.project.hsz.model.MentenceFarmerRecord; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysUserMapper; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.IOException; -import java.io.Serializable; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.stream.Collector; -import java.util.stream.Collectors; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class MentenceFarmerRecordService extends ServiceImpl { - - @Autowired - private HiddenInfoMapper hiddenInfoMapper; - - @Autowired - private SysUserMapper sysUserMapper; - - public boolean saveDate(MentenceFarmerRecord dto) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(MentenceFarmerRecord::getMentenceStDetailId, dto.getMentenceStDetailId()); - MentenceFarmerRecord mentenceFarmerRecord = this.baseMapper.selectOne(query); - if(Objects.nonNull(mentenceFarmerRecord)){ - throw new IllegalArgumentException("该维护项目,记录已存在"); - } - dto.setFillTime(new Date()); - dto.setId(IdWorker.getId()); - save(dto); - List details = dto.getDetails(); - if(details.isEmpty()){ - throw new IllegalArgumentException("请添加隐患记录"); - } - details.stream().forEach(o ->{ - o.setId(IdWorker.getId()); - o.setMentenceFarmerRecordId(dto.getId()); - }); - hiddenInfoMapper.insert(details); - return true; - } - - public boolean update(MentenceFarmerRecord dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentenceFarmerRecord::getId, dto.getId()); - MentenceFarmerRecord mentenceFarmerRecord = this.getOne(queryWrapper); - if(Objects.isNull(mentenceFarmerRecord)){ - throw new IllegalArgumentException("该日常养护记录不存在"); - } - updateById(dto); - LambdaQueryWrapper queryHiddenWrapper= new LambdaQueryWrapper<>(); - queryHiddenWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,dto.getId()); - hiddenInfoMapper.delete(queryHiddenWrapper); - List details = dto.getDetails(); - if(details.isEmpty()){ - throw new IllegalArgumentException("隐患点信息至少一条"); - } - details.stream().forEach(o ->{ - o.setId(IdWorker.getId()); - o.setMentenceFarmerRecordId(dto.getId()); - }); - hiddenInfoMapper.insert(details); - return true; - } - - public List delete(Serializable id) { - List childrenIds = new ArrayList<>(); - LambdaQueryWrapper queryHiddenWrapper = new LambdaQueryWrapper<>(); - queryHiddenWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,id); - List hiddenInfos = hiddenInfoMapper.selectList(queryHiddenWrapper); - hiddenInfos.forEach(hiddenInfo -> { - childrenIds.add(hiddenInfo.getId()); - }); - int delete = hiddenInfoMapper.delete(queryHiddenWrapper); - if(delete > 0){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentenceFarmerRecord::getId, id); - boolean result = remove(queryWrapper); - } - return childrenIds; - } - - public Page pageQuery(MentenceFarmerRecordPageSo pageSo) { - Page pageRecord = baseMapper.pageQuery(pageSo.getPageSo().toPage(),pageSo); - List records = pageRecord.getRecords(); - records.stream().forEach(o ->{ - if(o.getMentencePersonId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(o.getMentencePersonId())); - if(sysUser != null){ - o.setMentencePersonName(sysUser.getNickName()); - } - } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,o.getId()); - List hiddenInfos = hiddenInfoMapper.selectList(queryWrapper); - o.setDetails(hiddenInfos); - }); - return pageRecord; - } - - - public Page pageInfoCountQuery(MentenceFarmerRecordPageSo pageSo) { - Page voPage = baseMapper.pageInfoCountQuery(pageSo.getPageSo().toPage(),pageSo); - List records = voPage.getRecords(); - for (MentenceInfoCountVo record : records) { - if(record.getMentencePersonId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getMentencePersonId())); - if(sysUser != null){ - record.setMentencePersonName(sysUser.getNickName()); - } - } - } - return voPage; - } - - public void exportToExcel(List records, HttpServletResponse response) { - Workbook workbook = new XSSFWorkbook(); - Sheet sheet = workbook.createSheet("日常养护记录"); - - // 1. 创建所有样式 - StyleGroup styles = createAllStyles(workbook); - - // 2. 创建标题行 - createHeaderRow(sheet, styles.headerStyle); - - // 3. 填充数据 - fillDataWithMerge(sheet, styles, records); - - // 4. 调整列宽 - adjustColumnWidth(sheet); - - // 5. 响应处理 - String fileName = "日常养护记录_" + System.currentTimeMillis(); - try { - setResponseHeaders(response, fileName); - workbook.write(response.getOutputStream()); - workbook.close(); - } catch (IOException e) { - throw new RuntimeException("导出Excel失败", e); - } - } - - public List count12(MonthRangeSo monthRangeSo) { - List res = hiddenInfoMapper.selectCount12(monthRangeSo); - return res; - } - - public Map countType(MonthRangeSo monthRangeSo) { - return hiddenInfoMapper.selectCountType(monthRangeSo).stream() - .collect(Collectors.toMap(StatusCountVo::getStatus, StatusCountVo::getCount)); - } - - public Map countYear(String year) { - return hiddenInfoMapper.countYear(year).stream() - .collect(Collectors.toMap(StatusCountVo::getStatus, StatusCountVo::getCount)); - } - - - private static class StyleGroup { - CellStyle headerStyle; - CellStyle dataStyle; - CellStyle detailStyle; - CellStyle dateStyle; - CellStyle dateTimeStyle; - - StyleGroup(CellStyle headerStyle, CellStyle dataStyle, CellStyle detailStyle, - CellStyle dateStyle, CellStyle dateTimeStyle) { - this.headerStyle = headerStyle; - this.dataStyle = dataStyle; - this.detailStyle = detailStyle; - this.dateStyle = dateStyle; - this.dateTimeStyle = dateTimeStyle; - } - } - - private StyleGroup createAllStyles(Workbook workbook) { - // 基础数据样式 - CellStyle dataStyle = workbook.createCellStyle(); - dataStyle.setAlignment(HorizontalAlignment.CENTER); - dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); - dataStyle.setBorderBottom(BorderStyle.THIN); - dataStyle.setBorderTop(BorderStyle.THIN); - dataStyle.setBorderLeft(BorderStyle.THIN); - dataStyle.setBorderRight(BorderStyle.THIN); - - // 表头样式 - CellStyle headerStyle = workbook.createCellStyle(); - headerStyle.cloneStyleFrom(dataStyle); - Font headerFont = workbook.createFont(); - headerFont.setBold(true); - headerFont.setFontHeightInPoints((short) 12); - headerStyle.setFont(headerFont); - headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); - - // 详情样式 - CellStyle detailStyle = workbook.createCellStyle(); - detailStyle.cloneStyleFrom(dataStyle); - detailStyle.setAlignment(HorizontalAlignment.LEFT); - detailStyle.setWrapText(true); - - // 日期样式 - CreationHelper createHelper = workbook.getCreationHelper(); - CellStyle dateStyle = workbook.createCellStyle(); - dateStyle.cloneStyleFrom(dataStyle); - dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd")); - - // 日期时间样式 - CellStyle dateTimeStyle = workbook.createCellStyle(); - dateTimeStyle.cloneStyleFrom(dataStyle); - dateTimeStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss")); - - return new StyleGroup(headerStyle, dataStyle, detailStyle, dateStyle, dateTimeStyle); - } - - private void createHeaderRow(Sheet sheet, CellStyle headerStyle) { - Row headerRow = sheet.createRow(0); - String[] headers = { - "序号", "维护对象", "维护项目", "维护人员", "维护时间开始", "维护时间结束", "填报时间", "维护内容", - "隐患发现时间", "隐患描述", "状态", "解决办法", "解决时间" - }; - - for (int i = 0; i < headers.length; i++) { - Cell cell = headerRow.createCell(i); - cell.setCellValue(headers[i]); - cell.setCellStyle(headerStyle); - } - } - - private void fillDataWithMerge(Sheet sheet, StyleGroup styles, List records) { - int currentRow = 1; - int serialNumber = 1; - - for (MentenceFarmerRecord record : records) { - // 获取隐患信息数量 - int hiddenInfoCount = record.getDetails() != null ? record.getDetails().size() : 0; - int rowSpan = Math.max(hiddenInfoCount, 1); - - Row row = sheet.createRow(currentRow); - - // 1. 序号 - createMergedCell(sheet, row, 0, serialNumber, styles.dataStyle, currentRow, rowSpan, 0, 0); - - // 2. 维护对象 - String mentenceStName = record.getMentenceStName() != null ? record.getMentenceStName() : ""; - createMergedCell(sheet, row, 1, mentenceStName, styles.dataStyle, currentRow, rowSpan, 1, 1); - - // 3. 维护项目 - String mentenceStDetailName = record.getMentenceStDetailName() != null ? record.getMentenceStDetailName() : ""; - createMergedCell(sheet, row, 2, mentenceStDetailName, styles.dataStyle, currentRow, rowSpan, 2, 2); - - // 4. 维护人员 - String mentencePersonName = record.getMentencePersonName() != null ? record.getMentencePersonName() : ""; - createMergedCell(sheet, row, 3, mentencePersonName, styles.dataStyle, currentRow, rowSpan, 3, 3); - - // 5. 维护时间开始 - 新增列 - createDateMergedCell(sheet, row, 4, record.getMentenceTimeBegin(), styles.dateStyle, currentRow, rowSpan, 4, 4); - - // 6. 维护时间结束 - 新增列 - createDateMergedCell(sheet, row, 5, record.getMentenceTimeEnd(), styles.dateStyle, currentRow, rowSpan, 5, 5); - - // 7. 填报时间 - 列索引从5变为6 - createDateMergedCell(sheet, row, 6, record.getFillTime(), styles.dateTimeStyle, currentRow, rowSpan, 6, 6); - - // 8. 维护内容 - 列索引从6变为7 - String mentenceContext = record.getMentenceContext() != null ? record.getMentenceContext() : ""; - createMergedCell(sheet, row, 7, mentenceContext, styles.detailStyle, currentRow, rowSpan, 7, 7); - - // 填充隐患信息 - 列索引需要相应调整 - if (hiddenInfoCount > 0) { - fillHiddenInfo(row, record.getDetails().get(0), styles); - - // 创建额外的行用于其他隐患信息 - for (int i = 1; i < hiddenInfoCount; i++) { - Row detailRow = sheet.createRow(currentRow + i); - // 为前8列创建空单元格并设置样式(因为现在有8列基础数据) - for (int col = 0; col <= 7; col++) { - Cell emptyCell = detailRow.createCell(col); - emptyCell.setCellValue(""); - emptyCell.setCellStyle(styles.dataStyle); - } - fillHiddenInfo(detailRow, record.getDetails().get(i), styles); - } - } else { - // 如果没有隐患信息,创建空单元格 - 列索引需要调整 - for (int i = 8; i <= 12; i++) { - Cell cell = row.createCell(i); - cell.setCellValue(""); - cell.setCellStyle(styles.dataStyle); - } - } - - currentRow += rowSpan; - serialNumber++; - } - } - - private void createMergedCell(Sheet sheet, Row row, int column, Object value, CellStyle style, - int startRow, int rowSpan, int firstCol, int lastCol) { - Cell cell = row.createCell(column); - setCellValue(cell, value, style); - - if (rowSpan > 1) { - sheet.addMergedRegion(new CellRangeAddress(startRow, startRow + rowSpan - 1, firstCol, lastCol)); - } - } - - private void createDateMergedCell(Sheet sheet, Row row, int column, Date date, CellStyle style, - int startRow, int rowSpan, int firstCol, int lastCol) { - Cell cell = row.createCell(column); - if (date != null) { - cell.setCellValue(date); - cell.setCellStyle(style); - } else { - cell.setCellValue(""); - cell.setCellStyle(style); - } - - if (rowSpan > 1) { - sheet.addMergedRegion(new CellRangeAddress(startRow, startRow + rowSpan - 1, firstCol, lastCol)); - } - } - - private void fillHiddenInfo(Row row, HiddenInfo hiddenInfo, StyleGroup styles) { - // 隐患发现时间 - 列索引从7变为8 - createCell(row, 8, hiddenInfo.getFoundTime(), styles.dateTimeStyle); - - // 隐患描述 - 列索引从8变为9 - String hiddenDesc = hiddenInfo.getHiddenDesc() != null ? hiddenInfo.getHiddenDesc() : ""; - createCell(row, 9, hiddenDesc, styles.detailStyle); - - // 状态 - 列索引从9变为10 - String status = ""; - if (hiddenInfo.getStatus() != null) { - status = hiddenInfo.getStatus() == 0 ? "已处理" : "未处理"; - } - createCell(row, 10, status, styles.dataStyle); - - // 解决办法 - 列索引从10变为11 - String resolveMethod = hiddenInfo.getResolveMethod() != null ? hiddenInfo.getResolveMethod() : ""; - createCell(row, 11, resolveMethod, styles.detailStyle); - - // 解决时间 - 列索引从11变为12 - createCell(row, 12, hiddenInfo.getResolveTime(), styles.dateTimeStyle); - } - - private void createCell(Row row, int column, Object value, CellStyle style) { - Cell cell = row.createCell(column); - setCellValue(cell, value, style); - } - - private void setCellValue(Cell cell, Object value, CellStyle style) { - if (value == null) { - cell.setCellValue(""); - } else if (value instanceof String) { - cell.setCellValue((String) value); - } else if (value instanceof Date) { - cell.setCellValue((Date) value); - } else if (value instanceof Number) { - cell.setCellValue(value.toString()); - } else { - cell.setCellValue(value.toString()); - } - cell.setCellStyle(style); - } - - private void adjustColumnWidth(Sheet sheet) { - int[] columnWidths = { - 8 * 256, // 序号 - 20 * 256, // 维护对象 - 20 * 256, // 维护项目 - 15 * 256, // 维护人员 - 15 * 256, // 维护时间开始 - 新增列 - 15 * 256, // 维护时间结束 - 新增列 - 20 * 256, // 填报时间 - 30 * 256, // 维护内容 - 20 * 256, // 隐患发现时间 - 30 * 256, // 隐患描述 - 10 * 256, // 状态 - 30 * 256, // 解决办法 - 20 * 256 // 解决时间 - }; - - for (int i = 0; i < columnWidths.length; i++) { - sheet.setColumnWidth(i, columnWidths[i]); - } - } - - private void setResponseHeaders(HttpServletResponse response, String fileName) throws IOException { - String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8) - .replaceAll("\\+", "%20"); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Disposition", - "attachment; filename=\"" + encodedFileName + ".xlsx\""); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/MentencePlanDetailService.java b/src/main/java/com/gunshi/project/hsz/service/MentencePlanDetailService.java deleted file mode 100644 index 41bf7fe..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/MentencePlanDetailService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.MentencePlanDetailMapper; -import com.gunshi.project.hsz.mapper.MentenceStDetailMapper; -import com.gunshi.project.hsz.mapper.MentenceStMapper; -import com.gunshi.project.hsz.model.MentencePlan; -import com.gunshi.project.hsz.model.MentencePlanDetail; -import com.gunshi.project.hsz.model.MentenceSt; -import com.gunshi.project.hsz.model.MentenceStDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class MentencePlanDetailService extends ServiceImpl { -} diff --git a/src/main/java/com/gunshi/project/hsz/service/MentencePlanService.java b/src/main/java/com/gunshi/project/hsz/service/MentencePlanService.java deleted file mode 100644 index b1868f8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/MentencePlanService.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.ByPlanPageSo; -import com.gunshi.project.hsz.entity.so.MentencePlanPageSo; -import com.gunshi.project.hsz.mapper.MentencePlanDetailMapper; -import com.gunshi.project.hsz.mapper.MentencePlanMapper; -import com.gunshi.project.hsz.mapper.MentenceStMapper; -import com.gunshi.project.hsz.model.ByPlan; -import com.gunshi.project.hsz.model.MentencePlan; -import com.gunshi.project.hsz.model.MentencePlanDetail; -import com.gunshi.project.hsz.model.MentenceSt; -import com.gunshi.session.util.SessionUtil; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysUserMapper; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; -import java.util.Objects; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class MentencePlanService extends ServiceImpl { - - - @Autowired - private MentencePlanDetailMapper mentencePlanDetailMapper; - - @Autowired - private SysUserMapper sysUserMapper; - - public boolean saveData(MentencePlan dto) { - String planName = dto.getPlanName();//计划名称 - String planYear = dto.getPlanYear();//计划年份 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentencePlan::getPlanName,planName); - queryWrapper.eq(MentencePlan::getPlanYear,planYear); - MentencePlan mentencePlan = baseMapper.selectOne(queryWrapper); - if(Objects.nonNull(mentencePlan)){ - throw new IllegalArgumentException("该年份计划已存在"); - } - dto.setId(IdWorker.getId()); - dto.setCreateDate(new Date()); - dto.setPlanStatus(0); - save(dto); - //保存细节 - List details = dto.getDetails(); - if(details == null || details.isEmpty()){ - throw new IllegalArgumentException("至少需要一条维护内容"); - } - details.stream().forEach(detail->{ - detail.setId(IdWorker.getId()); - detail.setMentencePlanId(dto.getId()); - }); - if(details == null || details.isEmpty()){ - throw new IllegalArgumentException("请添加维护内容"); - } - mentencePlanDetailMapper.insert(details); - return true; - } - - public boolean update(MentencePlan dto) { - String planName = dto.getPlanName();//计划名称 - String planYear = dto.getPlanYear();//计划年份 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentencePlan::getPlanName,planName); - queryWrapper.eq(MentencePlan::getPlanYear,planYear); - MentencePlan mentencePlan = baseMapper.selectOne(queryWrapper); - if(Objects.isNull(mentencePlan)){ - throw new IllegalArgumentException("该年份计划不存在,请检查"); - } - updateById(dto); - List details = dto.getDetails(); - if(details == null || details.isEmpty()){ - throw new IllegalArgumentException("至少需要一条维护内容"); - } - - //先删除细节 - LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); - queryWrapperDetail.eq(MentencePlanDetail::getMentencePlanId,mentencePlan.getId()); - int delete = mentencePlanDetailMapper.delete(queryWrapperDetail); - //再插入 - details.forEach(o ->{ - o.setId(IdWorker.getId()); - o.setMentencePlanId(dto.getId()); - }); - mentencePlanDetailMapper.insert(details); - return true; - } - - public Page pageQuery(MentencePlanPageSo pageSo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(pageSo.getPlanName())){ - queryWrapper.like(MentencePlan::getPlanName,pageSo.getPlanName()); - } - if(!StringUtils.isBlank(pageSo.getYear())){ - queryWrapper.eq(MentencePlan::getPlanYear,pageSo.getYear()); - } - if(Objects.nonNull(pageSo.getStatus())){ - queryWrapper.eq(MentencePlan::getPlanStatus,pageSo.getStatus()); - } - queryWrapper.orderByDesc(MentencePlan::getCreateDate); - Page mentencePlanPage = baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); - List records = mentencePlanPage.getRecords(); - for (MentencePlan record : records) { - Long id = record.getId(); - if(record.getApprovePersonId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getApprovePersonId())); - if(sysUser != null){ - record.setApprovePersonName(sysUser.getNickName()); - } - } - if(record.getCreateId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getCreateId())); - if(sysUser != null){ - record.setCreateName(sysUser.getNickName()); - } - } - List details = mentencePlanDetailMapper.selectDetail(id); - for (MentencePlanDetail detail : details) { - if(detail.getChargePersonId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(detail.getChargePersonId())); - if(sysUser != null){ - detail.setChargePersonName(sysUser.getNickName()); - } - } - } - record.setDetails(details); - } - return mentencePlanPage; - } - - public void approve(MentencePlan dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentencePlan::getId, dto.getId()); - MentencePlan one = getOne(queryWrapper); - if(Objects.isNull(one)){ - throw new RuntimeException("该计划不存在"); - } - if(!one.getApprovePersonId().equals(dto.getApprovePersonId())){ - throw new IllegalArgumentException("对不起,您没有审批的权限"); - } - dto.setApprovePersonId(dto.getApprovePersonId()); - updateById(dto); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/MentenceStDetailService.java b/src/main/java/com/gunshi/project/hsz/service/MentenceStDetailService.java deleted file mode 100644 index 91c67b8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/MentenceStDetailService.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.MentenceStPageSo; -import com.gunshi.project.hsz.mapper.MentenceFarmerRecordMapper; -import com.gunshi.project.hsz.mapper.MentencePlanDetailMapper; -import com.gunshi.project.hsz.mapper.MentenceStDetailMapper; -import com.gunshi.project.hsz.mapper.MentenceStMapper; -import com.gunshi.project.hsz.model.MentenceFarmerRecord; -import com.gunshi.project.hsz.model.MentencePlanDetail; -import com.gunshi.project.hsz.model.MentenceSt; -import com.gunshi.project.hsz.model.MentenceStDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class MentenceStDetailService extends ServiceImpl { - - @Autowired - private MentencePlanDetailMapper mentencePlanDetailMapper; - - @Autowired - private MentenceFarmerRecordMapper mentenceFarmerRecordMapper; - - public boolean deleteById(Serializable id) { - LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); - queryWrapperDetail.eq(MentencePlanDetail::getMentenceStDetailId, id); - Long count = mentencePlanDetailMapper.selectCount(queryWrapperDetail); - if(count > 0) { - throw new IllegalArgumentException("该维护项目,正关联着维护计划,不允许删除"); - } - int delete = baseMapper.deleteById(id); - return true; - } - - public boolean update(MentenceStDetail dto) { - LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); - queryWrapperDetail.eq(MentencePlanDetail::getMentenceStDetailId, dto.getId()); - Long count = mentencePlanDetailMapper.selectCount(queryWrapperDetail); - if(count > 0) { - throw new IllegalArgumentException("该维护项目,正关联着维护计划,不允许更新"); - } - baseMapper.updateById(dto); - return true; - } - - public Page pageQuery(MentenceStPageSo dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentenceStDetail::getMentenceStId,dto.getStId()); - queryWrapper.orderByAsc(MentenceStDetail::getOrder); - Page mentenceStDetailPage = baseMapper.selectPage(dto.getPageSo().toPage(), queryWrapper); - for (MentenceStDetail record : mentenceStDetailPage.getRecords()) { - LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); - queryWrapperDetail.eq(MentencePlanDetail::getMentenceStDetailId, record.getId()); - Long count1 = mentencePlanDetailMapper.selectCount(queryWrapperDetail); - - LambdaQueryWrapper queryWrapperFarmerRecord = new LambdaQueryWrapper<>(); - queryWrapperFarmerRecord.eq(MentenceFarmerRecord::getMentenceStDetailId,record.getId()); - Long count2 = mentenceFarmerRecordMapper.selectCount(queryWrapperFarmerRecord); - if(count1 > 0 || count2 > 0) { - record.setHasUse(true); - } - } - return mentenceStDetailPage; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/MentenceStService.java b/src/main/java/com/gunshi/project/hsz/service/MentenceStService.java deleted file mode 100644 index 2a31340..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/MentenceStService.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.MentenceStPageSo; -import com.gunshi.project.hsz.mapper.MentencePlanDetailMapper; -import com.gunshi.project.hsz.mapper.MentenceStDetailMapper; -import com.gunshi.project.hsz.mapper.MentenceStMapper; -import com.gunshi.project.hsz.mapper.MessageCenterMapper; -import com.gunshi.project.hsz.model.MentenceSt; -import com.gunshi.project.hsz.model.MentenceStDetail; -import com.gunshi.project.hsz.model.MessageCenter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.Date; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class MentenceStService extends ServiceImpl { - - @Autowired - private MentenceStDetailMapper mentenceStDetailMapper; - - - - public boolean deleteById(Serializable id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentenceStDetail::getMentenceStId, id); - Long count = mentenceStDetailMapper.selectCount(queryWrapper); - if(count > 0) { - throw new IllegalArgumentException("存在养护项目,无法删除"); - } - removeById(id); - return true; - } - - public List tree(MentenceStPageSo dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(dto.getStName())){ - queryWrapper.like(MentenceSt::getStName, dto.getStName()); - } - List mentenceSts = baseMapper.selectList(queryWrapper); - Iterator iterator = mentenceSts.iterator(); - while(iterator.hasNext()) { - MentenceSt mentenceSt = iterator.next(); - LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(dto.getStDetailName())){ - queryWrapper2.like(MentenceStDetail::getStDetailName, dto.getStDetailName()); - } - queryWrapper2.eq(MentenceStDetail::getMentenceStId,mentenceSt.getId()); - queryWrapper2.eq(MentenceStDetail::getIsEnable,0); - List mentenceStDetails = mentenceStDetailMapper.selectList(queryWrapper2); - if(mentenceStDetails.isEmpty()){ - iterator.remove(); - continue; - } - mentenceSt.setChildrens(mentenceStDetails); - } - return mentenceSts; - } - - public boolean saveDate(MentenceSt dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(MentenceSt::getStName, dto.getStName()); - MentenceSt mentenceSt = baseMapper.selectOne(queryWrapper); - if(Objects.nonNull(mentenceSt)){ - throw new IllegalArgumentException("该名称已存在,请检查"); - } - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - save(dto); - return true; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/MentenceTemplateService.java b/src/main/java/com/gunshi/project/hsz/service/MentenceTemplateService.java deleted file mode 100644 index 4afed96..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/MentenceTemplateService.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.MentenceTemplatePageSo; -import com.gunshi.project.hsz.mapper.MentenceStMapper; -import com.gunshi.project.hsz.mapper.MentenceTemplateMapper; -import com.gunshi.project.hsz.model.MentencePlan; -import com.gunshi.project.hsz.model.MentenceSt; -import com.gunshi.project.hsz.model.MentenceTemplate; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysUserMapper; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.Objects; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class MentenceTemplateService extends ServiceImpl { - - @Autowired - private SysUserMapper sysUserMapper; - - public boolean saveDate(MentenceTemplate dto) { - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - if(dto.getCreateId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(dto.getCreateId())); - if(sysUser != null){ - dto.setCreateName(sysUser.getNickName()); - } - } - save(dto); - return true; - } - - public boolean update(MentenceTemplate dto) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(MentenceTemplate::getId, dto.getId()); - MentenceTemplate entity = getOne(wrapper); - if(Objects.isNull(entity)){ - throw new IllegalArgumentException("该模板不存在,请检查"); - } - updateById(dto); - return true; - } - - public Page pageQuery(MentenceTemplatePageSo pageSo) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(pageSo.getName())){ - wrapper.like(MentenceTemplate::getName,pageSo.getName()); - } - if(pageSo.getType() != null){ - wrapper.eq(MentenceTemplate::getType,pageSo.getType()); - } - wrapper.orderByDesc(MentenceTemplate::getCreateTime); - Page mentenceTemplatePage = baseMapper.selectPage(pageSo.getPageSo().toPage(), wrapper); - return mentenceTemplatePage; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/MessageCenterService.java b/src/main/java/com/gunshi/project/hsz/service/MessageCenterService.java deleted file mode 100644 index 5219503..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/MessageCenterService.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.entity.so.MessageCenterPageSo; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.mapper.MessageCenterMapper; -import com.gunshi.project.hsz.model.AttResBase; -import com.gunshi.project.hsz.model.MessageCenter; -import com.gunshi.project.hsz.model.OsmoticWarnR; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.util.DateUtil; -import com.ruoyi.common.utils.SecurityUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -/** - * 描述: 消息中心 - * author: xusan - * date: 2024-09-19 10:39:29 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class MessageCenterService extends ServiceImpl -{ - @Autowired - private AttResBaseMapper resBaseMapper; - - public void insertMessage(List messageCenters){ - for(MessageCenter messageCenter : messageCenters){ - messageCenter.setId(IdWorker.getId()); - messageCenter.setPublishTime(new Date()); - messageCenter.setStatus(0); - } - this.saveBatch(messageCenters); - } - - public Page listPage(MessageCenterPageSo page) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(MessageCenter::getReceiveUserId,page.getReceiveUserId()) - .eq(MessageCenter::getStatus,page.getStatus()); - if (ObjectUtils.isNotNull(page.getTitle())) { - queryWrapper.like(MessageCenter::getTitle, page.getTitle()); - } - if (ObjectUtils.isNotNull(page.getPublishUserName())) { - queryWrapper.like(MessageCenter::getPublishUserName, page.getPublishUserName()); - } - return this.page(page.getPageSo().toPage(),queryWrapper); - } - - public Boolean allRead() { - return this.lambdaUpdate() - .set(MessageCenter::getStatus, 1) - .eq(MessageCenter::getReceiveUserId, SecurityUtils.getUserId()) - .update(); - } - - - public void rzWarnMes(List rlist) { - AttResBase attResBase = resBaseMapper.selectById("42118130001"); - String stcd = attResBase.getStcd(); - Optional first = rlist.stream().filter(o -> o.getStcd().equals(stcd)).findFirst(); - if(first.isPresent()){ - BigDecimal rz = new BigDecimal(first.get().getRz()); - MessageCenter center =new MessageCenter(); - center.setPublishUserId(1L); - center.setPublishUserName("若依"); - center.setTitle("水位告警"); - String content = "系统检测到黑石咀水库水位"; - //校核水位 - BigDecimal calFloodLev = attResBase.getCalFloodLev(); - if(rz.compareTo(calFloodLev) > 0){ - center.setType(1); - content = content + "超校核"+ rz.subtract(calFloodLev) +"m"; - center.setContent(content); - addRzMessage(center,1); - return; - } - //设计水位 - BigDecimal desFloodLev = attResBase.getDesFloodLev(); - if(rz.compareTo(desFloodLev) > 0){ - center.setType(2); - content = content + "超设计"+ rz.subtract(desFloodLev) +"m"; - center.setContent(content); - addRzMessage(center,2); - return; - } - //汛限水位 - BigDecimal flLowLimLev = attResBase.getFlLowLimLev(); - if(rz.compareTo(flLowLimLev) > 0){ - center.setType(3); - content = content + "超汛限"+ rz.subtract(flLowLimLev) +"m"; - center.setContent(content); - addRzMessage(center,3); - } - - } - - } - - private void addRzMessage(MessageCenter center, Integer type) { - String date = DateUtil.convertDateToString(new Date()); - List list = this.baseMapper.queryTodayMes(date,type); - //如果当日不存在该类型的水位告警,则直接新增 - if(CollectionUtils.isEmpty(list)){ - rzMesHandle(center); - }else{ - this.removeBatchByIds(list); - rzMesHandle(center); - } - } - - private void rzMesHandle(MessageCenter center){ - //查找接收角色关联的人员 - List ids = this.baseMapper.queryUserIds(); - List mesList = ids.stream().map(o -> { - MessageCenter mes = new MessageCenter(); - BeanUtils.copyProperties(center, mes); - mes.setReceiveUserId(o); - return mes; - }).collect(Collectors.toList()); - this.insertMessage(mesList); - } - - - /** - * 生成渗压,渗流,位移告警 - * @param warnR - * @param desc - */ - public void osmoticWarnMes(OsmoticWarnR warnR,String desc) { - MessageCenter center = new MessageCenter(); - String stationCode = warnR.getStationCode(); - String title = null; - String content = "系统检测到"; - switch (warnR.getType()){ - case 1 : - title = "渗压告警"; - content = content + "渗压测点" + stationCode + desc +",请注意核实。"; - break; - case 2 : - title = "渗流告警"; - content = content + "渗流测点" + stationCode + desc +",请注意核实。"; - break; - case 3 : - title = "位移告警"; - content = content + "位移测点" + stationCode + desc +",请注意核实。"; - break; - } - center.setPublishUserId(1L); - center.setPublishUserName("若依"); - center.setTitle(title); - center.setContent(content); - rzMesHandle(center); - } - - public List listMes(DateTimeRangeSo dateTimeRangeSo) { - Long userId; - try { - userId = SecurityUtils.getUserId(); - } catch (Exception e) { - return null; - } - - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(MessageCenter::getReceiveUserId, userId); - if (ObjectUtils.isNotNull(dateTimeRangeSo) && ObjectUtils.isNotNull(dateTimeRangeSo.getStart())) { - queryWrapper.gt(MessageCenter::getPublishTime, dateTimeRangeSo.getStart()); - } - if (ObjectUtils.isNotNull(dateTimeRangeSo) && ObjectUtils.isNotNull(dateTimeRangeSo.getEnd())) { - queryWrapper.lt(MessageCenter::getPublishTime, dateTimeRangeSo.getEnd()); - } - queryWrapper.eq(MessageCenter::getStatus,0); - queryWrapper.orderByDesc(MessageCenter::getPublishTime); - return this.list(queryWrapper); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticFlowDeviceService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticFlowDeviceService.java deleted file mode 100644 index a7c6104..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticFlowDeviceService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticFlowDeviceVo; -import com.gunshi.project.hsz.mapper.OsmoticFlowDeviceMapper; -import com.gunshi.project.hsz.model.OsmoticFlowDevice; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 渗流设备表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticFlowDeviceService extends ServiceImpl -{ - - public List getDetailsAndMonitoringDataList() { - return baseMapper.getDetailsAndMonitoringDataList(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticFlowRService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticFlowRService.java deleted file mode 100644 index 185057e..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticFlowRService.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.gunshi.project.hsz.common.model.so.OsmoticQueryPageSo; -import com.gunshi.project.hsz.mapper.OsmoticFlowRMapper; -import com.gunshi.project.hsz.model.OsmoticFlowR; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 渗流监测记录表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticFlowRService extends ServiceImpl -{ - - public Page queryPage(OsmoticQueryPageSo osmoticQueryPageSo) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - if(osmoticQueryPageSo.getDateTimeRangeSo() != null && osmoticQueryPageSo.getDateTimeRangeSo().getStart() != null){ - wrapper.ge(OsmoticFlowR::getTm,osmoticQueryPageSo.getDateTimeRangeSo().getStart()); - } - if(osmoticQueryPageSo.getDateTimeRangeSo() != null && osmoticQueryPageSo.getDateTimeRangeSo().getEnd() != null){ - wrapper.le(OsmoticFlowR::getTm,osmoticQueryPageSo.getDateTimeRangeSo().getEnd()); - } - wrapper.orderByDesc(OsmoticFlowR::getTm); - return this.page(osmoticQueryPageSo.getPageSo().toPage(),wrapper); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticPressDeviceService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticPressDeviceService.java deleted file mode 100644 index 8587603..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticPressDeviceService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticPressDeviceVo; -import com.gunshi.project.hsz.mapper.OsmoticPressDeviceMapper; -import com.gunshi.project.hsz.model.OsmoticPressDevice; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 渗压设备表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticPressDeviceService extends ServiceImpl -{ - - public List getDetailsAndMonitoringDataList() { - return baseMapper.getDetailsAndMonitoringDataList(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticShiftDeviceService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticShiftDeviceService.java deleted file mode 100644 index 8df6583..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticShiftDeviceService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.HomeOsmoticShiftDeviceVo; -import com.gunshi.project.hsz.mapper.OsmoticShiftDeviceMapper; -import com.gunshi.project.hsz.model.OsmoticShiftDevice; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 位移监测记录表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticShiftDeviceService extends ServiceImpl -{ - - public List getDetailsAndMonitoringDataList() { - return baseMapper.getDetailsAndMonitoringDataList(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRService.java deleted file mode 100644 index 901cca7..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRService.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -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.gunshi.project.hsz.entity.so.WarnPageSo; -import com.gunshi.project.hsz.entity.so.WarnSo; -import com.gunshi.project.hsz.entity.vo.OsmoticWarnVo; -import com.gunshi.project.hsz.mapper.OsmoticWarnRMapper; -import com.gunshi.project.hsz.mapper.OsmoticWarnRuleMapper; -import com.gunshi.project.hsz.common.model.JcskGnssR; -import com.gunshi.project.hsz.model.OsmoticWarnR; -import com.gunshi.project.hsz.model.OsmoticWarnRule; -import com.gunshi.project.hsz.util.DateTransforUtil; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -/** - * 描述: 隐患预警记录表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticWarnRService extends ServiceImpl -{ - @Resource - private OsmoticWarnRuleMapper warnRuleMapper; - - @Resource - private MessageCenterService messageCenterService; - - public Page queryPage(WarnPageSo warnPageSo) { - return this.baseMapper.queryPage(warnPageSo.getPageSo().toPage(),warnPageSo); - } - - public Map stat(WarnSo warnSo) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - if(warnSo.getType() != null){ - wrapper.eq(OsmoticWarnR::getType,warnSo.getType()); - } - if(warnSo.getLevel() != null){ - wrapper.eq(OsmoticWarnR::getLevel,warnSo.getLevel()); - } - if(StringUtils.isNotEmpty(warnSo.getStationCode())){ - wrapper.like(OsmoticWarnR::getStationCode,warnSo.getStationCode()); - } - if(warnSo.getDateTimeRangeSo() != null && warnSo.getDateTimeRangeSo().getStart() != null){ - wrapper.ge(OsmoticWarnR::getTm,warnSo.getDateTimeRangeSo().getStart()); - } - if(warnSo.getDateTimeRangeSo() != null && warnSo.getDateTimeRangeSo().getEnd() != null){ - wrapper.le(OsmoticWarnR::getTm,warnSo.getDateTimeRangeSo().getEnd()); - } - List list = this.list(wrapper); - return list.stream().collect(Collectors.groupingBy(OsmoticWarnR::getLevel, Collectors.counting())); - } - - /** - * 生成位移预警 - */ - public void saveShiftWarn(JcskGnssR jcskGnssR){ - String stationCode = jcskGnssR.getCd(); - LocalDateTime tm = jcskGnssR.getTm(); - Date date = DateTransforUtil.transforLocalDateTimeToDate(tm); - BigDecimal x = jcskGnssR.getDe(); - savePressWarn(stationCode,x,date,"x"); - BigDecimal y = jcskGnssR.getDn(); - savePressWarn(stationCode,y,date,"y"); - BigDecimal h = jcskGnssR.getDu(); - savePressWarn(stationCode,h,date,"h"); - } - - /** - * 生成渗压/渗流预警 - * @param - */ - public void savePressWarn(String stationCode,BigDecimal value,Date tm,String direction) { - //查询预警规则,每个测点至多只有2条预警规则 - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(OsmoticWarnRule::getStationCode,stationCode) - .eq(OsmoticWarnRule::getStatus,1); - if(StringUtils.isNotEmpty(direction)){ - queryWrapper.eq(OsmoticWarnRule::getDirection,direction); - } - List ruleList = warnRuleMapper.selectList(queryWrapper); - if(CollectionUtils.isNotEmpty(ruleList)){ - Boolean isRedWarn = false; - //先判断是否符合红色预警 - Optional red = ruleList.stream().filter(o -> o.getLevel() == 2).findFirst(); - if(red.isPresent()){ - OsmoticWarnRule redRule = red.get(); - isRedWarn = saveWarnData(redRule,value,tm); - if (isRedWarn){ - return; - } - //没有生成红色预警,再判断是否符合黄色预警 - Optional yellow = ruleList.stream().filter(o -> o.getLevel() == 1).findFirst(); - if(yellow.isPresent()){ - OsmoticWarnRule yellowRule = yellow.get(); - saveWarnData(yellowRule,value,tm); - } - }else { - OsmoticWarnRule yellowRule = ruleList.get(0); - saveWarnData(yellowRule,value,tm); - } - } - } - - private Boolean saveWarnData(OsmoticWarnRule rule,BigDecimal value,Date tm){ - String conditionOne = rule.getConditionOne(); - BigDecimal valueOne = rule.getValueOne(); - Integer condition = rule.getCondition(); - Boolean flagOne = getFlag(conditionOne,valueOne,value); - /** - * 没有第二条件时,条件1满足就生成预警 - * 有第二条件时,当为或时,条件1满足就生成预警,条件1不满足就判断条件2是否满足;当为且时,需条件1和条件2同时满足才生成预警 - */ - if(condition == null){ - if(flagOne){ - //生成预警 - return geneWarn(rule,value,tm); - } - }else{ - String conditionTwo = rule.getConditionTwo(); - BigDecimal valueTwo = rule.getValueTwo(); - Boolean flagTwo = getFlag(conditionTwo,valueTwo,value); - if(condition == 1){ - if(flagOne && flagTwo){ - //生成预警 - return geneWarn(rule,value,tm); - } - }else{ - if(flagOne || flagTwo){ - //生成预警 - return geneWarn(rule,value,tm); - } - } - } - return false; - } - - private Boolean geneWarn(OsmoticWarnRule rule,BigDecimal value,Date tm) { - OsmoticWarnR warnR = new OsmoticWarnR(); - warnR.setId(IdWorker.getId()); - warnR.setStationCode(rule.getStationCode()); - warnR.setRuleId(rule.getId()); - warnR.setValue(value); - warnR.setTm(tm); - warnR.setType(rule.getType()); - warnR.setLevel(rule.getLevel()); - this.baseMapper.insert(warnR); - //生成消息 - messageCenterService.osmoticWarnMes(warnR,rule.getRuleDesc()); - return true; - } - - private Boolean getFlag(String condition,BigDecimal ruleValue,BigDecimal value){ - Boolean flag = false; - switch (condition) { - case ">" : - flag = value.compareTo(ruleValue) > 0; - break; - case ">=" : - flag = value.compareTo(ruleValue) >= 0; - break; - case "<" : - flag = value.compareTo(ruleValue) < 0; - break; - case "<=" : - flag = value.compareTo(ruleValue) <= 0; - break; - case "=" : - flag = value.compareTo(ruleValue) == 0; - break; - case "!=" : - flag = value.compareTo(ruleValue) != 0; - break; - } - return flag; - } - - public OsmoticWarnR queryMaxTmByType(Integer press) { - return this.baseMapper.queryMaxTmByType(press); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRuleService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRuleService.java deleted file mode 100644 index c87b0cf..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticWarnRuleService.java +++ /dev/null @@ -1,347 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -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.gunshi.project.hsz.common.model.JcskGnssR; -import com.gunshi.project.hsz.common.model.JcskSlR; -import com.gunshi.project.hsz.common.model.JcskSyR; -import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; -import com.gunshi.project.hsz.entity.so.WarnRulePageSo; -import com.gunshi.project.hsz.mapper.OsmoticWarnRuleMapper; -import com.gunshi.project.hsz.model.OsmoticWarnR; -import com.gunshi.project.hsz.model.OsmoticWarnRule; -import com.gunshi.project.hsz.service.OsmoticWarnRService; -import com.gunshi.project.hsz.util.DateTransforUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.Date; -import java.util.List; - -/** - * 描述: 预警规则配置表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticWarnRuleService extends ServiceImpl { - - @Autowired - private OsmoticWarnRService warnRService; - - public Page queryPage(WarnRulePageSo warnRulePageSo) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - if (warnRulePageSo.getType() != null) { - queryWrapper.eq(OsmoticWarnRule::getType, warnRulePageSo.getType()); - } - if (StringUtils.isNotEmpty(warnRulePageSo.getStationCode())) { - queryWrapper.eq(OsmoticWarnRule::getStationCode, warnRulePageSo.getStationCode()); - } - queryWrapper.orderByDesc(OsmoticWarnRule::getStatus).orderByDesc(OsmoticWarnRule::getCreateTime); - return this.page(warnRulePageSo.getPageSo().toPage(), queryWrapper); - } - - /* - 渗压只看管水位value - */ - @Autowired - private JcskSyBService jcskSyBService; - public void checkWarn(JcskSyR flow) { - String stcd = flow.getStcd(); - String mpcd = flow.getMpcd(); - String stationCode = jcskSyBService.getDvcdByStcdAndMpcd(stcd,mpcd); - List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode,stationCode) - .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.PRESS.getType()) - .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) - .list(); - - - BigDecimal valueToCompare = flow.getSpprwl(); - for (OsmoticWarnRule rule : rules) { - OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); - - OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); - if (cond1 == null) continue; - BigDecimal cond1value = rule.getValueOne(); - if (cond1value == null) continue; - boolean cond1Violating = isViolating(valueToCompare, cond1, cond1value); - - boolean cond2Violating = false; - if (matchRel != null) { - OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); - if (cond2 != null) { - BigDecimal cond2value = rule.getValueTwo(); - if (cond2value != null) { - cond2Violating = isViolating(valueToCompare, cond2, cond2value); - } - } - } - - boolean shoudWarn = false; - if (matchRel == null) { - if (cond1Violating) { - shoudWarn = true; - } - } else { - if (matchRel == OsmoticWarnRule.Relation.AND) { - if (cond1Violating && cond2Violating) { - shoudWarn = true; - } - } else if (matchRel == OsmoticWarnRule.Relation.OR) { - if (cond1Violating || cond2Violating) { - shoudWarn = true; - } - } - } - - if (shoudWarn) { - insertWarn(stationCode, rule.getId(), flow.getSpprwl(), OsmoticWarnRule.Type.PRESS.getType(), rule.getLevel(),LocalDateTimeConverter.toDate(flow.getMstm()),rule.getResolveSuggest()); - } - } - } - -// private boolean checkWarn(OsmoticPressR press, OsmoticWarnRule rule) { -// BigDecimal valueToCompare = press.getValue(); -// OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); -// -// OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); -// if (cond1 == null) return false; -// BigDecimal cond1value = rule.getValueOne(); -// if (cond1value == null) return false; -// boolean cond1Violating = isViolating(valueToCompare, cond1, cond1value); -// -// boolean cond2Violating = false; -// if (matchRel != null) { -// OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); -// if (cond2 != null) { -// BigDecimal cond2value = rule.getValueTwo(); -// if (cond2value != null) { -// cond2Violating = isViolating(valueToCompare, cond2, cond2value); -// } -// } -// } -// -// boolean shoudWarn = false; -// if (matchRel == null) { -// if (cond1Violating) { -// shoudWarn = true; -// } -// } else { -// if (matchRel == OsmoticWarnRule.Relation.AND) { -// if (cond1Violating && cond2Violating) { -// shoudWarn = true; -// } -// } else if (matchRel == OsmoticWarnRule.Relation.OR) { -// if (cond1Violating || cond2Violating) { -// shoudWarn = true; -// } -// } -// } -// -// if (shoudWarn) { -// insertWarn(press.getStationCode(), rule.getId(), press.getValue(), OsmoticWarnRule.Type.PRESS.getType(), rule.getLevel()); -// return true; -// } -// return false; -// } - - private void insertWarn(String stationCode, Long ruleId, BigDecimal value, Integer type, Integer level, Date obDate, String resolveSuggest) { - OsmoticWarnR warn = new OsmoticWarnR(); - warn.setId(IdWorker.getId()); - warn.setTm(obDate); - warn.setStationCode(stationCode); - warn.setRuleId(ruleId); - warn.setValue(value); - warn.setType(type); - warn.setLevel(level); - warn.setResolveSuggest(resolveSuggest); - warnRService.save(warn); - log.info("生成了一条预警:",warn); - } - - private void insertWarn(String stationCode, Long ruleId, BigDecimal value, Integer type, Integer level,LocalDateTime obDate) { - OsmoticWarnR warn = new OsmoticWarnR(); - Date date = Date.from(obDate.atZone(ZoneId.systemDefault()).toInstant()); - warn.setId(IdWorker.getId()); - warn.setTm(date); - warn.setStationCode(stationCode); - warn.setRuleId(ruleId); - warn.setValue(value); - warn.setType(type); - warn.setLevel(level); - warnRService.save(warn); - } - - - private boolean isViolating(BigDecimal value, OsmoticWarnRule.Condition cond, BigDecimal condValue) { - return switch (cond) { - case GT -> value.compareTo(condValue) > 0; - case GTE -> value.compareTo(condValue) >= 0; - case LT -> value.compareTo(condValue) < 0; - case LTE -> value.compareTo(condValue) <= 0; - case EQ -> value.compareTo(condValue) == 0; - case NE -> value.compareTo(condValue) != 0; - }; - } - - /* - 位移要看x,y,h - */ - @Autowired - private JcskGnssBService jcskGnssBService; - public void checkWarn(JcskGnssR shift) { - String stationCode = shift.getCd(); - List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode, stationCode) - .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.SHIFT.getType()) - .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) - .list(); - BigDecimal valueXToCompare = shift.getDe(); - BigDecimal valueYToCompare = shift.getDn(); - BigDecimal valueHToCompare = shift.getDu(); - for (OsmoticWarnRule rule : rules) { - OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); - - OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); - if (cond1 == null) continue; - BigDecimal cond1value = rule.getValueOne(); - if (cond1value == null) continue; - boolean cond1Violating; - if(rule.getDirection().contains("x")){ - cond1Violating = isViolating(valueXToCompare, cond1, cond1value); - }else if(rule.getDirection().contains("y")){ - cond1Violating = isViolating(valueYToCompare, cond1, cond1value); - }else{ - cond1Violating = isViolating(valueHToCompare, cond1, cond1value); - } - - boolean cond2Violating = false; - if (matchRel != null) { - OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); - if (cond2 != null) { - BigDecimal cond2value = rule.getValueTwo(); - if(rule.getDirection().contains("x")){ - cond2Violating = isViolating(valueXToCompare, cond2, cond2value); - }else if(rule.getDirection().contains("y")){ - cond2Violating = isViolating(valueYToCompare, cond2, cond2value); - }else{ - cond2Violating = isViolating(valueHToCompare, cond2, cond2value); - } - } - } - - boolean shoudWarn = false; - if (matchRel == null) { - if (cond1Violating) { - shoudWarn = true; - } - } else { - if (matchRel == OsmoticWarnRule.Relation.AND) { - if (cond1Violating && cond2Violating) { - shoudWarn = true; - } - } else if (matchRel == OsmoticWarnRule.Relation.OR) { - if (cond1Violating || cond2Violating) { - shoudWarn = true; - } - } - } - - if (shoudWarn) { - if(rule.getDirection().contains("x")){ - insertWarn(stationCode, rule.getId(), shift.getDe(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(), LocalDateTimeConverter.toDate(shift.getTm()), rule.getResolveSuggest()); - }else if(rule.getDirection().contains("y")){ - insertWarn(stationCode, rule.getId(), shift.getDn(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(),LocalDateTimeConverter.toDate(shift.getTm()), rule.getResolveSuggest()); - }else{ - insertWarn(stationCode, rule.getId(), shift.getDu(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(),LocalDateTimeConverter.toDate(shift.getTm()), rule.getResolveSuggest()); - } - - } - } - } - - - /* - 渗流只看流量q - */ - - @Autowired - private JcskSlBService jcskSlBService; - public void checkWarn(JcskSlR flow) { - String stcd = flow.getStcd(); - String mpcd = flow.getMpcd(); - String stationCode = jcskSlBService.getDvcdByStcdAndMpcd(mpcd); - List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode, stationCode) - .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.FLOW.getType()) - .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) - .list(); - BigDecimal valueToCompare = flow.getSpqn(); - for (OsmoticWarnRule rule : rules) { - OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); - - OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); - if (cond1 == null) continue; - BigDecimal cond1value = rule.getValueOne(); - if (cond1value == null) continue; - boolean cond1Violating = isViolating(valueToCompare, cond1, cond1value); - - boolean cond2Violating = false; - if (matchRel != null) { - OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); - if (cond2 != null) { - BigDecimal cond2value = rule.getValueTwo(); - if (cond2value != null) { - cond2Violating = isViolating(valueToCompare, cond2, cond2value); - } - } - } - - boolean shoudWarn = false; - if (matchRel == null) { - if (cond1Violating) { - shoudWarn = true; - } - } else { - if (matchRel == OsmoticWarnRule.Relation.AND) { - if (cond1Violating && cond2Violating) { - shoudWarn = true; - } - } else if (matchRel == OsmoticWarnRule.Relation.OR) { - if (cond1Violating || cond2Violating) { - shoudWarn = true; - } - } - } - - if (shoudWarn) { - insertWarn(stationCode, rule.getId(), flow.getSpqn(), OsmoticWarnRule.Type.FLOW.getType(), rule.getLevel(),LocalDateTimeConverter.toDate(flow.getMstm()), rule.getResolveSuggest()); - } - } - } - - @Autowired - private JcskSyRService jcskSyRService; - - public void debug() { - List list = jcskSyRService.lambdaQuery().orderByDesc(JcskSyR::getMstm).list(); - - checkWarn(list.get(0)); - } - - public Date queryMaxTmByType(Integer type) { - OsmoticWarnR entity = warnRService.queryMaxTmByType(type); - return entity == null?null:entity.getTm(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticWaterRService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticWaterRService.java deleted file mode 100644 index 95aaadd..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticWaterRService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.OsmoticWaterRMapper; -import com.gunshi.project.hsz.model.OsmoticWaterR; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水质采样记录表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticWaterRService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticWaterRuleService.java b/src/main/java/com/gunshi/project/hsz/service/OsmoticWaterRuleService.java deleted file mode 100644 index 00d11a0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/OsmoticWaterRuleService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.OsmoticWaterRuleMapper; -import com.gunshi.project.hsz.model.OsmoticWaterRule; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水质质量标准规则表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class OsmoticWaterRuleService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/PersonnelPlanLogService.java b/src/main/java/com/gunshi/project/hsz/service/PersonnelPlanLogService.java deleted file mode 100644 index aa2cd02..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/PersonnelPlanLogService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.PersonnelPlanLogMapper; -import com.gunshi.project.hsz.model.PersonnelPlanLog; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class PersonnelPlanLogService extends ServiceImpl -{ -} diff --git a/src/main/java/com/gunshi/project/hsz/service/PersonnelPlanService.java b/src/main/java/com/gunshi/project/hsz/service/PersonnelPlanService.java deleted file mode 100644 index 62e7ae2..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/PersonnelPlanService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.PersonnelPlanMapper; -import com.gunshi.project.hsz.model.PersonnelPlan; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class PersonnelPlanService extends ServiceImpl -{ -} diff --git a/src/main/java/com/gunshi/project/hsz/service/PrePlaceDetailService.java b/src/main/java/com/gunshi/project/hsz/service/PrePlaceDetailService.java deleted file mode 100644 index d5124c8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/PrePlaceDetailService.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -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.gunshi.project.hsz.entity.so.PrePlacePageSo; -import com.gunshi.project.hsz.mapper.ByLogDetailMapper; -import com.gunshi.project.hsz.mapper.ByPlanDetailMapper; -import com.gunshi.project.hsz.mapper.PrePlaceDetailMapper; -import com.gunshi.project.hsz.mapper.PrePlaceMapper; -import com.gunshi.project.hsz.model.PrePlace; -import com.gunshi.project.hsz.model.PrePlaceDetail; -import com.ruoyi.common.utils.StringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class PrePlaceDetailService extends ServiceImpl { - - @Autowired - private PrePlaceMapper prePlaceMapper; - - @Autowired - private ByPlanDetailMapper byPlanDetailMapper; - - @Autowired - private ByLogDetailMapper byLogDetailMapper; - - public Page pageQuery(PrePlacePageSo pageSo) { - if(StringUtils.isBlank(pageSo.getPreId())) { - throw new IllegalArgumentException("请选择防治点"); - } - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(PrePlaceDetail::getPreId, pageSo.getPreId()); - query.orderByAsc(PrePlaceDetail::getOrder); - Page prePlaceDetailPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), query); - for (PrePlaceDetail record : prePlaceDetailPage.getRecords()) { - int count1 = byPlanDetailMapper.selectByPPDI(record.getId()); - int count2 = byLogDetailMapper.selectByPPDi(record.getId()); - if(count1 > 0 || count2 > 0){ - record.setHasUse(true); - } - } - return prePlaceDetailPage; - } - - public boolean saveData(PrePlaceDetail dto) { - dto.setId(IdWorker.getId()); - dto.setIsEnable(0); - Long preId = dto.getPreId(); - PrePlace prePlace = prePlaceMapper.selectById(preId); - if(prePlace == null) { - throw new IllegalArgumentException("防治点不存在,请检查"); - } - boolean save = save(dto); - return save; - } - - public boolean deleteById(Serializable id) { - //先在防治计划中查看是否被引用 - int count = byPlanDetailMapper.selectByPPDI(id); - if(count > 0){ - throw new IllegalArgumentException("该防治点在防治计划中已被选择,不能删除"); - } - - int count2 = byLogDetailMapper.selectByPPDi(id); - if(count2 > 0){ - throw new IllegalArgumentException("该防治点在日志记录中被使用,不能删除"); - } - boolean b = removeById(id); - return b; - } - - public boolean update(PrePlaceDetail dto) { - int count = byPlanDetailMapper.selectByPPDI(dto.getId()); - if(count > 0){ - throw new IllegalArgumentException("该防治点在防治计划中已被选择,不能编辑"); - } - int count2 = byLogDetailMapper.selectByPPDi(dto.getId()); - if(count2 > 0){ - throw new IllegalArgumentException("该防治点在日志记录中被使用,不能编辑"); - } - boolean b = updateById(dto); - return b; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/PrePlaceService.java b/src/main/java/com/gunshi/project/hsz/service/PrePlaceService.java deleted file mode 100644 index 2954085..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/PrePlaceService.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.PrePlacePageSo; -import com.gunshi.project.hsz.mapper.PrePlaceDetailMapper; -import com.gunshi.project.hsz.mapper.PrePlaceMapper; -import com.gunshi.project.hsz.model.PrePlace; -import com.gunshi.project.hsz.model.PrePlaceDetail; -import com.ruoyi.common.utils.StringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.Date; -import java.util.Iterator; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class PrePlaceService extends ServiceImpl { - - @Autowired - private PrePlaceDetailMapper prePlaceDetailMapper; - - @Autowired - private PrePlaceMapper prePlaceMapper; - - public boolean deleteById(Serializable id) { - //先查看细节表还有数据没 - int count = prePlaceDetailMapper.selectByPreId(id); - if(count > 0){ - throw new RuntimeException("该防治点,还有防治部位未删,请检查"); - } - int flag = this.baseMapper.deleteById(id); - return flag > 0? true:false; - } - - - public List tree(PrePlacePageSo dto) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(dto.getPreName())){ - wrapper.eq(PrePlace::getPreName, dto.getPreName()); - } - List prePlaces = prePlaceMapper.selectList(wrapper); - Iterator iterator = prePlaces.iterator(); - while(iterator.hasNext()){ - PrePlace prePlace = iterator.next(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(dto.getPreDetailName())){ - queryWrapper.like(PrePlaceDetail::getDetailName, dto.getPreDetailName()); - } - queryWrapper.eq(PrePlaceDetail::getPreId, prePlace.getId()); - queryWrapper.eq(PrePlaceDetail::getIsEnable,0); - List prePlaceDetails = prePlaceDetailMapper.selectList(queryWrapper); - if(prePlaceDetails.isEmpty()){ - iterator.remove(); - continue; - } - prePlace.setChildrens(prePlaceDetails); - } - return prePlaces; - } - - public boolean saveData(PrePlace dto) { - - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PrePlace::getPreName, dto.getPreName()); - PrePlace prePlace = prePlaceMapper.selectOne(queryWrapper); - if(prePlace != null){ - throw new IllegalArgumentException("该防治点已存在"); - } - save(dto); - return true; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ProjectEventsService.java b/src/main/java/com/gunshi/project/hsz/service/ProjectEventsService.java deleted file mode 100644 index b2a3671..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ProjectEventsService.java +++ /dev/null @@ -1,253 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.so.CommonDataPageSo; -import com.gunshi.project.hsz.entity.vo.ProjectEventsVo; -import com.gunshi.project.hsz.mapper.HiddenInfoMapper; -import com.gunshi.project.hsz.mapper.ProjectEventsMapper; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.model.HiddenInfo; -import com.gunshi.project.hsz.model.ProjectEvents; -import com.gunshi.project.hsz.model.TermiteSurvey; -import com.gunshi.project.hsz.util.DataHandleUtil; -import com.gunshi.project.hsz.util.ExcelUtil; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 工程大事记 - * author: wanyan - * date: 2024-08-21 10:40:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ProjectEventsService extends ServiceImpl { - - @Autowired - private FileAssociationsService fileService; - - @Autowired - private HiddenInfoMapper hiddenInfoMapper; - - public Page pageQuery(CommonDataPageSo page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getName())) { - query.like(ProjectEvents::getName, page.getName()); - } - if (page.getDateSo() != null && page.getDateSo().getStart() != null) { - query.ge(ProjectEvents::getEventsDate, page.getDateSo().getStart()); - } - if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { - query.le(ProjectEvents::getEventsDate, page.getDateSo().getEnd()); - } - query.orderByDesc(ProjectEvents::getEventsDate); - Page res = this.page(page.getPageSo().toPage(), query); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - } - return res; - } - - private void fillAttach(List ret) { - for (ProjectEvents record : ret) { - record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); - } - } - - public String getGroupId() { - return "ProjectEvents"; - } - - public ProjectEvents saveData(ProjectEvents dto) { - dto.setId(IdWorker.getId()); - boolean result = this.save(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public ProjectEvents updateData(ProjectEvents dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return data; - } - - public List queryList(CommonDataPageSo page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getName())) { - query.like(ProjectEvents::getName, page.getName()); - } - if (page.getDateSo() != null && page.getDateSo().getStart() != null) { - query.ge(ProjectEvents::getEventsDate, page.getDateSo().getStart()); - } - if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { - query.le(ProjectEvents::getEventsDate, page.getDateSo().getEnd()); - } - query.orderByDesc(ProjectEvents::getEventsDate); - List list = this.list(query); - fillAttach(list); - return list; - } - - public Page filePage(CommonDataPageSo page) { - Page res = new Page<>(); - List list = new ArrayList<>(); - list = queryData(page,list); - if (CollectionUtils.isNotEmpty(list)) { - fillFile(list.stream().filter(o->o.getType() != 6).collect(Collectors.toList())); - list = list.stream().sorted(Comparator.comparing(ProjectEventsVo::getEventsDate).reversed()).collect(Collectors.toList()); - List paginate = DataHandleUtil.paginate(list, page.getPageSo().getPageNumber(), page.getPageSo().getPageSize()); - res.setRecords(paginate); - } - res.setCurrent(page.getPageSo().getPageNumber()); - res.setTotal(list.size()); - return res; - } - - private List queryData(CommonDataPageSo page,List list) { - List types = page.getTypes(); - if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(1)){ - List projectEventsVos = this.baseMapper.eventList(page); - list.addAll(projectEventsVos); - } - if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(2)){ - List projectEventsVos = this.baseMapper.dispatchList(page); - list.addAll(projectEventsVos); - } - if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(3)){ - List projectEventsVos = this.baseMapper.maintainList(page); - list.addAll(projectEventsVos); - } - if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(4)){ - List projectEventsVos = this.baseMapper.safetyList(page); - list.addAll(projectEventsVos); - } - if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(5)){ - List projectEventsVos = this.baseMapper.reinforceList(page); - list.addAll(projectEventsVos); - } -// if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(6)){ -// List termiteVos = this.baseMapper.termiteList(page); -// List projectEventsVos = this.handelTermite(termiteVos); -// list.addAll(projectEventsVos); -// } - return list; - } - - private List handelTermite(List termiteVos) { - List list = new ArrayList<>(); - if(CollectionUtils.isEmpty(termiteVos)){ - return list; - } - for (TermiteSurvey vo : termiteVos){ - Integer surveyWay = vo.getSurveyWay(); - String way = ""; - switch (surveyWay){ - case 1 : - way = "人工排查法"; - break; - case 2 : - way = "引诱法"; - break; - case 3 : - way = "仪器探测法"; - break; - case 4 : - way = "其它"; - break; - } - Integer surveyType = vo.getSurveyType(); - String type = ""; - switch (surveyType){ - case 1 : - type = "日常检查排查"; - break; - case 2 : - type = "定期普查"; - break; - case 3 : - type = "专项调查"; - break; - } - String result = vo.getHarmNum() > 0 ?"有危害":"无危害"; - String content = "采用"+way+"进行"+type+",结果:"+result+";白蚁危害处数"+vo.getHarmNum()+"处;已处理处数"+vo.getHandleNum()+"处。"; - ProjectEventsVo eventsVo = new ProjectEventsVo(); - eventsVo.setId(vo.getId()); - eventsVo.setType(6); - eventsVo.setEventsDate(vo.getReportDate()); - eventsVo.setEventsDesc(content); - - List ids = this.baseMapper.queryTermiteDetail(vo.getId()); - List files = fileService.getFilesByIds(ids.stream().map(Objects::toString).collect(Collectors.toList())); - eventsVo.setFiles(files); - list.add(eventsVo); - } - return list; - } - - private void fillFile(List list) { - if(CollectionUtils.isEmpty(list)){ - return; - } - List ids = list.stream().map(ProjectEventsVo::getId).map(Objects::toString).collect(Collectors.toList()); - List files = fileService.getFilesByIds(ids); - Map> map = files.stream().collect(Collectors.groupingBy(FileAssociations::getBusinessId)); - for (ProjectEventsVo vo : list){ - vo.setFiles(map.get(vo.getId().toString())); - if(vo.getType() == 3){ - List fileAssociations = vo.getFiles() == null?new ArrayList<>():vo.getFiles(); - //Java有Integer的缓存-128~127可以直接用== - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,vo.getId()); - List hiddenInfos = hiddenInfoMapper.selectList(queryWrapper); - hiddenInfos.stream().forEach(o ->{ - List add = fileService.getFiles("mentenceFarmerRecord", o.getId().toString()); - fileAssociations.addAll(add); - }); - vo.setFiles(fileAssociations); - } - } - } - - public void export(CommonDataPageSo page, HttpServletResponse response) { - List list = new ArrayList<>(); - list = queryData(page,list); - if (CollectionUtils.isNotEmpty(list)) { - list = list.stream().sorted(Comparator.comparing(ProjectEventsVo::getEventsDate).reversed()).collect(Collectors.toList()); - } - ExcelUtil.exportExcel(list,"全周期档案", ProjectEventsVo.class,response,"全周期档案"); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/RainBasinDivisionService.java b/src/main/java/com/gunshi/project/hsz/service/RainBasinDivisionService.java deleted file mode 100644 index d12d20a..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RainBasinDivisionService.java +++ /dev/null @@ -1,508 +0,0 @@ -package com.gunshi.project.hsz.service; - -import cn.hutool.core.bean.BeanUtil; -import com.gunshi.project.hsz.entity.so.StPptnSo; -import com.gunshi.project.hsz.entity.vo.CartogramVo; -import com.gunshi.project.hsz.entity.vo.StPptnDetailsVo; -import com.gunshi.project.hsz.entity.vo.StPptnVo; -import com.gunshi.project.hsz.mapper.RealRainMapper; -import com.gunshi.project.hsz.common.mapper.StPptnRMapper; -import com.gunshi.project.hsz.model.StPptnRD; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import jakarta.annotation.Resource; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.temporal.ChronoUnit; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -/** - * Description: - * Created by wanyan on 2024/7/8 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Slf4j -public class RainBasinDivisionService { - - @Autowired - private RealRainMapper realRainMapper; - - @Autowired - private StPptnRMapper stPptnRMapper; - - @Resource - private StStbprpBService stStbprpBAutoDao; - - /** - * 根据测站编码查询时间段内每小时的雨量 - * - * @param stPptnSo 雨量站降雨量查询参数 - * @return - */ - public List queryStPptnPerHourByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { - String stcd = stPptnSo.getStcd(); - List stPptnVos = realRainMapper.queryStPptnPerHourByStcdAndStartTimeAndEndTime(stcd, stPptnSo.getStartTime(), stPptnSo.getEndTime()); - SimpleDateFormat df = new SimpleDateFormat("MM-dd HH:mm"); - for (StPptnVo stPptnVo : stPptnVos) { - Date time = stPptnVo.getTime(); - stPptnVo.setTimeStr(df.format(time)); - } - return stPptnVos; - } - - /** - * 根据测站编码查询时间段内每小时的雨量统计 - * - * @param stPptnSo 雨量站降雨量查询参数 - * @return - */ - public CartogramVo queryStPptnPerHourChartByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { - //实测 - List stPptnVos1 = queryStPptnPerHourNowByStcdAndStartTimeAndEndTime(stPptnSo); - //累计 - List stPptnVos2 = queryStPptnPerHourSumByStcdAndStartTimeAndEndTime(stPptnSo); - - CartogramVo cartogramVo = new CartogramVo(); - List time = new ArrayList<>(); - List actual = new ArrayList<>(); - List total = new ArrayList<>(); - for (StPptnVo stPptnVo : stPptnVos1) { - time.add(stPptnVo.getTimeStr()); - actual.add(stPptnVo.getSumDrp()); - } - for (StPptnVo stPptnVo : stPptnVos2) { - total.add(stPptnVo.getSumDrp()); - } - cartogramVo.setTime(time); - cartogramVo.setActual(actual); - cartogramVo.setTotal(total); - return cartogramVo; - } - - /** - * 根据测站编码查询时间段内每小时的实测雨量 - * - * @param stPptnSo 雨量站降雨量查询参数 - * @return - */ - public List queryStPptnPerHourNowByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { - List stPptnVos = queryStPptnPerHourByStcdAndStartTimeAndEndTime(stPptnSo); - Collections.reverse(stPptnVos); - return stPptnVos; - } - - /** - * 根据测站编码查询时间段内每小时的累计雨量 - * - * @param stPptnSo 雨量站降雨量查询参数 - * @return - */ - public List queryStPptnPerHourSumByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { - List stPptnVos = queryStPptnPerHourNowByStcdAndStartTimeAndEndTime(stPptnSo); - BigDecimal sumdrp = BigDecimal.valueOf(0); - for (StPptnVo stPptnVo : stPptnVos) { - sumdrp = sumdrp.add(stPptnVo.getSumDrp()); - stPptnVo.setSumDrp(sumdrp); - } - return stPptnVos; - } - - /** - * 根据测站编码查询时间段内每天的雨量 - * - * @param stPptnSo 雨量站降雨量查询参数 - * @return - */ - @SneakyThrows - public List queryStPptnPerDayByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { - String stcd = stPptnSo.getStcd(); - - Date stm = stPptnSo.getStartTime(); - Date etm = stPptnSo.getEndTime(); - Date now = new Date(); - if (etm.getTime() > now.getTime()) etm = now; - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - stm = df.parse(df.format(stm)); - etm = df.parse(df.format(etm)); - Calendar cal = Calendar.getInstance(); - - List stPptnVos = new ArrayList<>(); - while (etm.getTime() >= stm.getTime()) { - cal.setTime(stm); - StPptnVo stPptnVo = new StPptnVo(); - stPptnVo.setTime(stm); - stPptnVo.setTimeStr(df.format(stm)); - int year = cal.get(Calendar.YEAR); - - StPptnRD pptnrd = realRainMapper.getStPptnRD( - stcd, stm, year - ); - if (pptnrd != null) { - stPptnVo.setSumDrp(pptnrd.getDrp()); - } - stPptnVos.add(stPptnVo); - - cal.add(Calendar.DAY_OF_MONTH, 1); - stm = cal.getTime(); - } - return stPptnVos; - } - - /** - * 根据测站编码查询时间段内每天的雨量统计 - * - * @param stPptnSo 雨量站降雨量查询参数 - * @return - */ - public CartogramVo queryStPptnPerDayChartChartByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { - //实测 - List stPptnVos1 = queryStPptnPerDayByStcdAndStartTimeAndEndTime(stPptnSo); - //累计 - List stPptnVos2 = queryStPptnPerDaySumByStcdAndStartTimeAndEndTime(stPptnSo); - - CartogramVo cartogramVo = new CartogramVo(); - List time = new ArrayList<>(); - List actual = new ArrayList<>(); - List total = new ArrayList<>(); - for (StPptnVo stPptnVo : stPptnVos1) { - time.add(stPptnVo.getTimeStr()); - actual.add(stPptnVo.getSumDrp()); - } - for (StPptnVo stPptnVo : stPptnVos2) { - total.add(stPptnVo.getSumDrp()); - } - cartogramVo.setTime(time); - cartogramVo.setActual(actual); - cartogramVo.setTotal(total); - return cartogramVo; - } - - /** - * 根据测站编码查询时间段内每天的累计雨量 - * - * @param stPptnSo 雨量站降雨量查询参数 - * @return - */ - public List queryStPptnPerDaySumByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { - List stPptnVos = queryStPptnPerDayByStcdAndStartTimeAndEndTime(stPptnSo); - BigDecimal sumdrp = BigDecimal.valueOf(0); - for (StPptnVo stPptnVo : stPptnVos) { - if (stPptnVo.getSumDrp() != null){ - sumdrp = sumdrp.add(stPptnVo.getSumDrp()); - } - stPptnVo.setSumDrp(sumdrp); - } - return stPptnVos; - } - - /** - * 根据测站编码查询详细雨量情况 - * - * @param stcd 测站编码 - * @return - */ - public StPptnDetailsVo queryStPptnDetailsByStcd(String stcd) { -// StPptnRStat stPptnRStat = stPptnRStatMapper.queryStPptnRStatByStcd(stcd); - StPptnRReal stPptnRReal = realRainMapper.queryPptnByStcd(stcd); - - StPptnDetailsVo stPptnDetailsVo = new StPptnDetailsVo(); - if (stPptnRReal != null){ - BeanUtil.copyProperties(stPptnRReal, stPptnDetailsVo); - Date tm = stPptnRReal.getTm(); - LocalDateTime nowTime = LocalDateTime.now(); - LocalDateTime latestTime = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); - - boolean isToday = latestTime.toLocalDate().equals(nowTime.toLocalDate()); - - if(!isToday){ - stPptnDetailsVo.setH1(null); - stPptnDetailsVo.setH3(null); - stPptnDetailsVo.setH6(null); - stPptnDetailsVo.setH12(null); - stPptnDetailsVo.setH24(null); - stPptnDetailsVo.setH48(null); - stPptnDetailsVo.setDrp(null); - stPptnDetailsVo.setToday(null); - } - }else { - stPptnDetailsVo.setStcd(stcd); - } - Date date = new Date(); - -// //48小时降雨量 -// BigDecimal h48 = stStbprpBMapper.queryStPptn48HByStcd(stcd); -// if (h48 == null) { -// stPptnDetailsVo.setH48(value0); -// } else { -// stPptnDetailsVo.setH48(h48); -// } -// -// //今日雨量 -// BigDecimal todayDrp = queryTodayDrpByStcdAndTime(stcd, date); -// if (todayDrp == null) { -// stPptnDetailsVo.setTodayDrp(value0); -// } else { -// stPptnDetailsVo.setTodayDrp(todayDrp); -// } - - //昨日雨量 - BigDecimal yesterdayDrp = queryYesterdayDrpByStcdAndTime(stcd, date); - if (yesterdayDrp == null) { - stPptnDetailsVo.setYesterdayDrp(null); - } else { - stPptnDetailsVo.setYesterdayDrp(yesterdayDrp); - } - - //本月降雨量 - BigDecimal monthDay = queryMonthDrpByStcdAndTime(stcd, date); - if (monthDay == null) { - stPptnDetailsVo.setMonthDrp(null); - } else { - stPptnDetailsVo.setMonthDrp(monthDay); - } - - //本年降雨量 - BigDecimal yearDrp = queryYearDrpByStcdAndTime(stcd, date); - if (yearDrp == null) { - stPptnDetailsVo.setYearDrp(null); - } else { - stPptnDetailsVo.setYearDrp(yearDrp); - } - - //本年天数 - Long yearDay = countYearDay(date); - stPptnDetailsVo.setYearDay(yearDay); - - Map map = queryYearDrpDayAndMaxDrpAndMaxDrpTimeByStcdAndTime(stcd, date); - - //本年降雨天数 - Long yearDrpDay = (Long) map.get("count"); - stPptnDetailsVo.setYearDrpDay(yearDrpDay); - - //本年最大日雨量 - BigDecimal maxDrp = (BigDecimal) map.get("maxDrp"); - stPptnDetailsVo.setMaxDrp(maxDrp); - - //本年最大日雨量时间 - Date maxDrpTime =(Date) map.get("maxDrpTime"); - stPptnDetailsVo.setMaxDrpTime(maxDrpTime); - return stPptnDetailsVo; - } - - /** - * 根据测站编码和时间查看昨日降雨量 - * - * @param stcd 测站编码 - * @param time 当前时间 - * @return 昨日降雨量 - */ - public BigDecimal queryYesterdayDrpByStcdAndTime(String stcd, Date time) { - LocalDateTime now = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault()); - LocalDateTime startTime; - LocalDateTime endTime; - LocalDateTime yesterday = now.minusDays(1); - if (now.getHour() >= 8) { - startTime = LocalDateTime.of( - yesterday.getYear(), - yesterday.getMonthValue(), - yesterday.getDayOfMonth(), - 8, - 0, - 0 - ); - endTime = LocalDateTime.of( - now.getYear(), - now.getMonthValue(), - now.getDayOfMonth(), - 8, - 0, - 0 - ); - } else { - endTime = endTime = LocalDateTime.of( - yesterday.getYear(), - yesterday.getMonthValue(), - yesterday.getDayOfMonth(), - 8, - 0, - 0 - ); - yesterday = yesterday.minusDays(1); - startTime = LocalDateTime.of( - yesterday.getYear(), - yesterday.getMonthValue(), - yesterday.getDayOfMonth(), - 8, - 0, - 0 - ); - } - - return stPptnRMapper.queryStPptnTimeQuantumByStcdAndTime( - stcd, - Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), - Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()) - ); - - } - - /** - * 根据测站编码和时间查看本月降雨量 - * - * @param stcd 测站编码 - * @param time 当前时间 - * @return 本月降雨量 - */ - public BigDecimal queryMonthDrpByStcdAndTime(String stcd, Date time) { - LocalDateTime now = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault()); - LocalDateTime startTime; - LocalDateTime endTime; - if (now.getHour() >= 8 || (now.getHour() < 8 && now.getDayOfMonth() > 1)) { - startTime = LocalDateTime.of( - now.getYear(), - now.getMonthValue(), - 1, - 8, - 0, - 0 - ); - endTime = now; - return stPptnRMapper.queryStPptnTimeQuantumByStcdAndTime( - stcd, - Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), - Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()) - ); - - } - BigDecimal monthdrp = BigDecimal.valueOf(0); - return monthdrp; - - } - - /** - * 根据测站编码和时间查看本年降雨量 - * - * @param stcd 测站编码 - * @param time 当前时间 - * @return 本年降雨量 - */ - public BigDecimal queryYearDrpByStcdAndTime(String stcd, Date time) { - LocalDateTime now = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault()); - LocalDateTime startTime; - LocalDateTime endTime; - if (now.getHour() >= 8 || (now.getHour() < 8 && now.getMonthValue() > 1) || (now.getHour() < 8 && now.getMonthValue() == 1 && now.getDayOfMonth() >= 1)) { - startTime = LocalDateTime.of( - now.getYear(), - 1, - 1, - 8, - 0, - 0 - ); - endTime = now; - return stPptnRMapper.queryStPptnTimeQuantumByStcdAndTime( - stcd, - Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), - Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()) - ); - } - BigDecimal monthDrp = BigDecimal.valueOf(0); - return monthDrp; - } - - /** - * 根据测站编码和时间查询本年降雨天数、本年最大日雨量、本年最大日雨量时间 - * - * @param stcd 测站编码 - * @param time 当前时间 - * @return 本年降雨天数、本年最大日雨量、本年最大日雨量时间 - */ - public Map queryYearDrpDayAndMaxDrpAndMaxDrpTimeByStcdAndTime(String stcd, Date time) { - Date now = new Date(); - Date startTime = new Date(now.getYear(), 0, 1, 8, 0, 0); - - BigDecimal maxDrp = BigDecimal.valueOf(0); - Date maxDrpTime = startTime; - Long count = 0L; - Map map = new HashMap<>(); - map.put("count", count); - map.put("maxDrp", maxDrp); - map.put("maxDrpTime", maxDrpTime); - -// QueryWrapper queryWrapper = new QueryWrapper<>(); -// queryWrapper.eq(StStbprpB.COL_STCD,stcd); - -// StStbprpB stStbprpB = stStbprpBAutoDao.getOne(queryWrapper); - StPptnRD stPptnRD = realRainMapper.getMaxOfYear(stcd,now.getYear() + 1900); - if (stPptnRD == null){ - return map; - } - - count = realRainMapper.getRainOfDayInYear(stcd, now.getYear()+1900); - map.put("count", count); - map.put("maxDrp", stPptnRD.getDrp()); - map.put("maxDrpTime", stPptnRD.getTm()); - return map; - } - - /** - * 计算本年天数 - * - * @param time 当前时间 - * @return 本年天数 - */ - public Long countYearDay(Date time) { - LocalDateTime now = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault()); - LocalDateTime startTime = LocalDateTime.of(now.getYear(), 1, 1, 8, 0, 0); - long count = ChronoUnit.DAYS.between(startTime, now); - return count + 1; - } - - public StPptnRReal maxRain(StPptnSo stPptnSo) { - StPptnRReal stPptnRReal = new StPptnRReal(); - List stPptnVos = realRainMapper.queryStPptnPerHourByStcdAndStartTimeAndEndTime(stPptnSo.getStcd(), stPptnSo.getStartTime(), stPptnSo.getEndTime()); - if (stPptnVos == null || stPptnVos.isEmpty()) { - return null; - } - stPptnRReal.setH1(stPptnVos.stream().max(Comparator.comparing(StPptnVo::getSumDrp)).get().getSumDrp()); - Collections.reverse(stPptnVos); - List list = Arrays.asList(3, 6, 12); - for(Integer num : list){ - BigDecimal data = calcMaxData(num,stPptnVos); - if(num == 3){ - stPptnRReal.setH3(data); - } - if(num == 6){ - stPptnRReal.setH6(data); - } - if(num == 12){ - stPptnRReal.setH12(data); - } - } - return stPptnRReal; - } - - private BigDecimal calcMaxData(Integer num, List stPptnVos) { - List list = stPptnVos.stream().map(StPptnVo::getSumDrp).collect(Collectors.toList()); - return IntStream.range(0, list.size() - num -1) - .mapToObj(i -> list.subList(i, Math.min(i + num, list.size()))) // 获取每几个数的子列表 - .map(sublist -> sublist.stream().reduce(BigDecimal.ZERO, BigDecimal::add)) - .max(BigDecimal::compareTo) - .orElse(BigDecimal.ZERO); - } - - public StPptnRReal queryStPptnRealByStcd(String stcd) { - return realRainMapper.queryPptnByStcd(stcd); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/RealRainService.java b/src/main/java/com/gunshi/project/hsz/service/RealRainService.java deleted file mode 100644 index 7fdc8dd..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RealRainService.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.mapper.StPptnRMapper; -import com.gunshi.project.hsz.common.model.StPptnR; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import com.gunshi.project.hsz.entity.so.RealRainBaseSo; -import com.gunshi.project.hsz.entity.vo.RealRainListVo; -import com.gunshi.project.hsz.entity.vo.RealRainStatListVo; -import com.gunshi.project.hsz.mapper.RealRainMapper; -import com.gunshi.project.hsz.model.AttBasBase; -import com.gunshi.project.hsz.model.AttBasBaseAutoDao; -import com.gunshi.project.hsz.util.DateUtil; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.compress.utils.Lists; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.*; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -/** - * Description: - * Created by wanyan on 2024/7/8 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Data -@Slf4j -public class RealRainService { - - @Autowired - private RealRainMapper realRainMapper; - - private final AttBasBaseAutoDao attBasBaseAutoDao; - - @Autowired - private StPptnRMapper stPptnRMapper; - - /** - * 实时雨情-降雨信息-查询接口 - * - * @param realRainBaseSo - * @return - */ - public List getRealRainList(RealRainBaseSo realRainBaseSo) { - List result = realRainMapper.getRealRainList(realRainBaseSo.getStm(), realRainBaseSo.getEtm()); - - for (RealRainListVo realRainListVo : result) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StPptnR::getStcd,realRainListVo.getStcd()) - .orderByDesc(StPptnR::getTm) - .last("limit 1"); - StPptnR stPptnR = stPptnRMapper.selectOne(queryWrapper); - if(stPptnR == null){ - realRainListVo.setStatus(0); - }else{ - Date tm = stPptnR.getTm(); - if(DateUtil.hoursBetweenDate(tm,new Date()) > 24){ - realRainListVo.setStatus(0); - }else{ - realRainListVo.setStatus(1); - } - } - } - - // result.sort(Comparator.comparing(RealRainListVo::getDrp, Comparator.nullsFirst(Double::compareTo)).reversed().thenComparing(RealRainListVo::getStcd)); - return result; - } - - - /** - * 频率统计 - */ - public Map> getRealRainStatLevel(RealRainBaseSo realRainBaseSo) { - - Map> map = new HashMap<>(); - for (int i = 1; i <= 5; i++) { - if (map.get(i) == null) { - map.put(i, Lists.newArrayList()); - } - } - - - if (realRainBaseSo.getSource().size() == 0) { - return map; - } - - List result = getRealRainStat(realRainBaseSo); - //判断result是否为空 - if (CollectionUtils.isEmpty(result)) { - return map; - } - - //按照降雨量级进行分组 - if (realRainBaseSo.getTimeType() == null) { - result = result.stream().filter(res -> res.getFreqH1() != 0).collect(Collectors.toList()); - map = result.stream().collect( - Collectors.groupingBy(RealRainStatListVo::getFreqH1, Collectors.toList()) - ); - } - if (realRainBaseSo.getTimeType() == 3) { - result = result.stream().filter(res -> res.getFreqH3() != 0).collect(Collectors.toList()); - map = result.stream().collect( - Collectors.groupingBy(RealRainStatListVo::getFreqH3, Collectors.toList()) - ); - } else if (realRainBaseSo.getTimeType() == 6) { - result = result.stream().filter(res -> res.getFreqH6() != 0).collect(Collectors.toList()); - map = result.stream().collect( - Collectors.groupingBy(RealRainStatListVo::getFreqH6, Collectors.toList()) - ); - } else if (realRainBaseSo.getTimeType() == 12) { - result = result.stream().filter(res -> res.getFreqH12() != 0).collect(Collectors.toList()); - map = result.stream().collect( - Collectors.groupingBy(RealRainStatListVo::getFreqH12, Collectors.toList()) - ); - } else if (realRainBaseSo.getTimeType() == 24) { - result = result.stream().filter(res -> res.getFreqH24() != 0).collect(Collectors.toList()); - map = result.stream().collect( - Collectors.groupingBy(RealRainStatListVo::getFreqH24, Collectors.toList()) - ); - } else { - result = result.stream().filter(res -> res.getFreqH1() != 0).collect(Collectors.toList()); - map = result.stream().collect( - Collectors.groupingBy(RealRainStatListVo::getFreqH1, Collectors.toList()) - ); - } - - for (int i = 1; i <= 5; i++) { - if (!map.containsKey(i)) { - map.put(i, Lists.newArrayList()); - } - } - - for (int i = 1; i <= 5; i++) { - if (map.get(i) == null) { - map.put(i, Lists.newArrayList()); - } - } - - return map; - - } - - /** - * 频率分析 - * - * @param realRainBaseSo - */ - public List getRealRainStat(RealRainBaseSo realRainBaseSo) { - List result = Lists.newArrayList(); - - if (realRainBaseSo.getSource().size() == 0) { - return result; - } - - checkParam(realRainBaseSo); - List source = realRainBaseSo.getSource(); - ExecutorService executorService = Executors.newFixedThreadPool(4); - for (String sourceStr : source) { - executorService.execute(() -> { - List realRainList = realRainMapper.getRealRainStatList( - realRainBaseSo.getAdcd(), realRainBaseSo.getBasCode(), sourceStr, - realRainBaseSo.getStm(), realRainBaseSo.getEtm() - ); - result.addAll(realRainList); - }); - } - executorService.shutdown(); - try { - executorService.awaitTermination(2, TimeUnit.MINUTES); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - log.error(e.getMessage(), e); - } - return result; - } - - /** - * 流域选择列表 - * - * @param - */ - public List queryBasNameList() { - return attBasBaseAutoDao.list(); - } - - - private void checkParam(RealRainBaseSo realRainBaseSo) { - if (Objects.nonNull(realRainBaseSo.getQueryType()) && realRainBaseSo.getQueryType() == 2 && realRainBaseSo.getTimeType() == null) { - throw new IllegalArgumentException("频率统计中时间段范围类型不能为空"); - } - //检查source是否为空 - if (realRainBaseSo.getSource() == null || realRainBaseSo.getSource().isEmpty()) { - throw new IllegalArgumentException("来源不能为空"); - } - //检查source字段是否合法 - for (String source : realRainBaseSo.getSource()) { - if (!"SH".equals(source) && !"SW".equals(source) && !"SK".equals(source) && !"QX".equals(source)) { - throw new IllegalArgumentException("来源只能是SH SW SK QX这4种"); - } - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ResBriefRService.java b/src/main/java/com/gunshi/project/hsz/service/ResBriefRService.java deleted file mode 100644 index 8ee40f8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResBriefRService.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.gunshi.project.hsz.entity.vo.ResBriefVo; -import com.gunshi.project.hsz.model.AttResBase; -import com.gunshi.project.hsz.model.ResBriefR; -import com.gunshi.project.hsz.common.model.StPptnR; -import com.gunshi.project.hsz.common.model.StStbprpB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.*; - -/** - * @author lyf - * @since 2025-04-25 - */ -@EnableScheduling -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResBriefRService extends com.gunshi.project.hsz.model.ResBriefRAutoDao { - @Autowired - private StPptnRService pptnService; - - @Autowired - private StStbprpBService stbprpService; - - @Autowired - private StRsvrRService rsvrService; - - @Autowired - private StZvarlBService zvarlService; - - @Autowired - private AttResBaseService resService; - - //每天早上8点30分执行一次 - @Scheduled(cron = "0 30 8 * * ?") - public void scheduledScan() { - List pptnStations = stbprpService.getPptnStations(); - List pptnVos = new ArrayList<>(); - pptnStations.forEach(stStbprpB -> { - String stcd = stStbprpB.getStcd(); - String stnm = stStbprpB.getStnm(); - - ResBriefVo.PptnVo pptnVo = new ResBriefVo.PptnVo(); - pptnVo.setStcd(stcd); - pptnVo.setStnm(stnm); - pptnVos.add(pptnVo); - - BigDecimal drp24 = pptnService.getdrp24SumByStcd(stcd); - StPptnR drpMax = pptnService.getdrp24MaxByStcd(stcd); - pptnVo.setDrp24Sum(drp24); - pptnVo.setDrp24Max(drpMax == null?null:drpMax.getDrp() == null?null:new BigDecimal(drpMax.getDrp())); - pptnVo.setMaxTm(drpMax == null?null:drpMax.getTm()); - }); - - AttResBase res = resService.list().getFirst(); - BigDecimal flLowLimLev = res.getFlLowLimLev(); - String stcd = res.getStcd(); - BigDecimal rz8 = rsvrService.getRz8ByStcd(stcd); - BigDecimal rzYesterday8 = rsvrService.getRzYesterday8ByStcd(stcd); - BigDecimal w = null; - if(rz8 != null){ - w = zvarlService.getWFromZvarl(rz8, null); - } - ResBriefVo vo = new ResBriefVo(); - vo.setRz8(rz8); - vo.setRzYesterday8(rzYesterday8); - vo.setW(w); - vo.setFlLowLimLev(flLowLimLev); - - ResBriefVo.PptnVo pptnDrp24Sum = pptnVos.stream() - .filter(o -> o.getDrp24Sum() != null) - .max(Comparator.comparing( - ResBriefVo.PptnVo::getDrp24Sum, - Comparator.nullsLast(Comparator.naturalOrder()) // null 值排在最后 - )) - .orElse(null); - vo.setDrp24Sum(pptnDrp24Sum != null ? pptnDrp24Sum.getDrp24Sum() : null); - vo.setSumStnm(pptnDrp24Sum != null ? pptnDrp24Sum.getStnm() : null); - ResBriefVo.PptnVo pptnDrp24Max = pptnVos.stream() - .filter(o -> o.getDrp24Max() != null) - .max(Comparator.comparing( - ResBriefVo.PptnVo::getDrp24Max, - Comparator.nullsLast(Comparator.naturalOrder()) - )) - .orElse(null); - vo.setDrp24Max(pptnDrp24Max != null ? pptnDrp24Max.getDrp24Max() : null); - vo.setMaxTm(pptnDrp24Max != null ? pptnDrp24Max.getMaxTm() : null); - vo.setMaxStnm(pptnDrp24Max != null ? pptnDrp24Max.getStnm() : null); - - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - vo.setDate(calendar.getTime()); - - save(vo); - } - - public List getResBriefList(Date startDate, Date endDate) { - List list = list(new QueryWrapper().between("date", startDate, endDate).orderByDesc("date")); - list.forEach(item -> { - item.setBrief(item.getBrief()); - }); - return list; - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ResFloodRoadService.java b/src/main/java/com/gunshi/project/hsz/service/ResFloodRoadService.java deleted file mode 100644 index c44c5ec..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResFloodRoadService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ResFloodRoadMapper; -import com.gunshi.project.hsz.model.ResFloodRoad; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 防汛道路 - * author: xusan - * date: 2024-11-14 10:37:15 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResFloodRoadService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ResMangUnitService.java b/src/main/java/com/gunshi/project/hsz/service/ResMangUnitService.java deleted file mode 100644 index 252bf61..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResMangUnitService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ResMangUnitMapper; -import com.gunshi.project.hsz.model.ResMangUnit; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库管理单位表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResMangUnitService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ResMonthEcoFlowService.java b/src/main/java/com/gunshi/project/hsz/service/ResMonthEcoFlowService.java deleted file mode 100644 index d89e184..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResMonthEcoFlowService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ResMonthEcoFlowMapper; -import com.gunshi.project.hsz.model.ResMonthEcoFlow; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库月核定生态流量表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResMonthEcoFlowService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ResPersonService.java b/src/main/java/com/gunshi/project/hsz/service/ResPersonService.java deleted file mode 100644 index c108a09..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResPersonService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ResPersonMapper; -import com.gunshi.project.hsz.model.ResPerson; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * Description: - * Created by XuSan on 2024/9/23. - * - * @author XuSan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResPersonService extends ServiceImpl -{ -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ResPlanBService.java b/src/main/java/com/gunshi/project/hsz/service/ResPlanBService.java deleted file mode 100644 index 48c44d5..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResPlanBService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ResPlanBMapper; -import com.gunshi.project.hsz.model.ResPlanB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库预案表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResPlanBService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ResProjectImgService.java b/src/main/java/com/gunshi/project/hsz/service/ResProjectImgService.java deleted file mode 100644 index af20752..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResProjectImgService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ResProjectImgMapper; -import com.gunshi.project.hsz.model.ResProjectImg; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库工程图片 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResProjectImgService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ResSafePersonBService.java b/src/main/java/com/gunshi/project/hsz/service/ResSafePersonBService.java deleted file mode 100644 index 5089ec2..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResSafePersonBService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ResSafePersonBMapper; -import com.gunshi.project.hsz.model.ResSafePersonB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库责任体系表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResSafePersonBService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ResTunnelService.java b/src/main/java/com/gunshi/project/hsz/service/ResTunnelService.java deleted file mode 100644 index 54bc168..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ResTunnelService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.ResTunnelMapper; -import com.gunshi.project.hsz.model.ResTunnel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库建筑物 - 放空洞/灌溉发电洞 - * author: xusan - * date: 2024-11-14 10:34:12 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ResTunnelService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/RescueGoodsService.java b/src/main/java/com/gunshi/project/hsz/service/RescueGoodsService.java deleted file mode 100644 index 2e3e23f..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RescueGoodsService.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.file.model.FileDescriptor; -import com.gunshi.project.hsz.entity.so.RescueGoodsPageSo; -import com.gunshi.project.hsz.mapper.RescueGoodsMapper; -import com.gunshi.project.hsz.model.RescueGoodsB; -import com.gunshi.project.hsz.model.RescueGoodsBAutoDao; -import com.gunshi.project.hsz.model.RescueGoodsBAutoMapper; -import com.gunshi.project.hsz.model.RescueGoodsFile; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/3/20 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RescueGoodsService - extends AbstractModelWithAttachService< - RescueGoodsB, - RescueGoodsBAutoMapper, - RescueGoodsBAutoDao, - RescueGoodsFile, - com.gunshi.project.hsz.model.RescueGoodsFileAutoMapper, - com.gunshi.project.hsz.model.RescueGoodsFileAutoDao - > -{ - - @Autowired - private RescueGoodsBAutoDao autoDao; - - @Autowired - private com.gunshi.project.hsz.model.RescueGoodsFileAutoDao attachFileAutoDao; - - @Resource - private RescueGoodsMapper rescueGoodsMapper; - - - public Page pageQuery(RescueGoodsPageSo RescueGoodsPageSo) { - return rescueGoodsMapper.pageQuery(RescueGoodsPageSo.getPageSo().toPage(),RescueGoodsPageSo); - } - - - @Override - RescueGoodsBAutoDao getAutoDao() { - return autoDao; - } - - @Override - com.gunshi.project.hsz.model.RescueGoodsFileAutoDao getAttachFileAutoDao() { - return attachFileAutoDao; - } - - @Override - List createAttachList(RescueGoodsB RescueGoodsB) { - List fileIds = RescueGoodsB.getFileIds(); - if (fileIds == null) return null; - List attachList = new ArrayList<>(); - for (String fileId : fileIds) { - RescueGoodsFile attach = new RescueGoodsFile(); - attach.setFileId(Long.valueOf(fileId)); - attach.setGoodsId(RescueGoodsB.getGoodsId()); - attach.setTm(new Date()); - attach.setId(IdWorker.getId()); - attachList.add(attach); - } - return attachList; - } - - @Override - Object getModelId(RescueGoodsB RescueGoodsB) { - return RescueGoodsB.getGoodsId(); - } - - @Override - public String getAttachBzIdName() { - return "goods_id"; - } - - public List detail(Long goodsId) { - return rescueGoodsMapper.detail(goodsId); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/RescueTeamService.java b/src/main/java/com/gunshi/project/hsz/service/RescueTeamService.java deleted file mode 100644 index 1495aab..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RescueTeamService.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.entity.so.RescueTeamPageSo; -import com.gunshi.project.hsz.entity.vo.RescueTeamVo; -import com.gunshi.project.hsz.mapper.RescueTeamBMapper; -import com.gunshi.project.hsz.mapper.RescueTeamFileMapper; -import com.gunshi.project.hsz.model.RescueTeamB; -import com.gunshi.project.hsz.model.RescueTeamDetail; -import com.gunshi.project.hsz.model.RescueTeamFile; -import com.gunshi.project.hsz.model.RescueTeamFileAutoDao; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Description: - * Created by wanyan on 2024/3/18 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RescueTeamService extends AbstractModelWithAttachService{ - @Autowired - private com.gunshi.project.hsz.model.RescueTeamBAutoDao autoDao; - - @Autowired - private RescueTeamFileAutoDao attachFileAutoDao; - - - @Resource - private RescueTeamBMapper rescueTeamMapper; - - @Resource - private RescueTeamFileMapper rescueTeamFileMapper; - - @Resource - private com.gunshi.project.hsz.model.RescueTeamDetailAutoDao detailAutoDao; - - public Page pageQuery(RescueTeamPageSo rescueTeamPageSo) { - return rescueTeamMapper.pageQuery(rescueTeamPageSo.getPageSo().toPage(),rescueTeamPageSo); - } - - public RescueTeamB detail(Long teamId) { - RescueTeamB team = rescueTeamMapper.selectById(teamId); - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(RescueTeamDetail::getTeamId, teamId); - team.setDetails(detailAutoDao.list(queryWrapper)); - - team.setFiles(rescueTeamFileMapper.queryFiles(teamId)); - - return team; - } - - public void saveDetailAndObj(RescueTeamB model, long teamId) { - List details = model.getDetails(); - if(CollectionUtils.isNotEmpty(details)){ - detailAutoDao.saveBatch(details.stream().map(o->{ - o.setDetailId(IdWorker.getId()); - o.setTeamId(teamId); - return o; - }).collect(Collectors.toList())); - } - } - - public void updateDetailAndObj(RescueTeamB model) { - //根据teamId删除队伍明细和服务对象 - Long teamId = model.getTeamId(); - deleteDetailAndObj(teamId); - saveDetailAndObj(model,teamId); - } - - private void deleteDetailAndObj(Long teamId){ - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(RescueTeamDetail::getTeamId,teamId); - detailAutoDao.remove(queryWrapper); - - } - - public Boolean delete(Long teamId) { - deleteDetailAndObj(teamId); - rescueTeamFileMapper.delete(new LambdaUpdateWrapper() - .eq(RescueTeamFile::getTeamId,teamId)); - int i = rescueTeamMapper.deleteById(teamId); - return i > 0 ; - } - - @Override - com.gunshi.project.hsz.model.RescueTeamBAutoDao getAutoDao() { - return autoDao; - } - - @Override - RescueTeamFileAutoDao getAttachFileAutoDao() { - return attachFileAutoDao; - } - - @Override - List createAttachList(RescueTeamB RescueTeamB) { - List fileIds = RescueTeamB.getFileIds(); - if (fileIds == null) return null; - List attachList = new ArrayList<>(); - for (String fileId : fileIds) { - RescueTeamFile attach = new RescueTeamFile(); - attach.setFileId(Long.valueOf(fileId)); - attach.setTeamId(RescueTeamB.getTeamId()); - attach.setTm(new Date()); - attach.setId(IdWorker.getId()); - attachList.add(attach); - } - return attachList; - } - - @Override - Object getModelId(RescueTeamB rescueTeamB) { - return rescueTeamB.getTeamId(); - } - - @Override - public String getAttachBzIdName() { - return "team_id"; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/ReservoirWaterService.java b/src/main/java/com/gunshi/project/hsz/service/ReservoirWaterService.java deleted file mode 100644 index 0dba308..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ReservoirWaterService.java +++ /dev/null @@ -1,496 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.so.DataQueryCommonSo; -import com.gunshi.project.hsz.entity.so.PicQuerySo; -import com.gunshi.project.hsz.entity.so.ReservoirWaterCommonSo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.mapper.StZvarlBMapper; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.DateUtil; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.*; -import java.util.stream.Collectors; - -/** - * Description: - * Created by wanyan on 2024/7/8 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Slf4j -public class ReservoirWaterService { - - @Resource - private AttResBaseMapper attResBaseMapper; - - @Resource - private StZvarlBMapper stZvarlBMapper; - - @Resource - private RainBasinDivisionService rainBasinDivisionService; - - @Autowired - private StZvarlBService stZvarlBService; - - @Autowired - private StRiverRRealService stRiverRRealServices; - - - - //实时供水 - @Autowired - private StWaterRRealService stWaterRRealService; - - public List list() { - List attResBaseVos = attResBaseMapper.queryList(); - if(CollectionUtils.isEmpty(attResBaseVos)){ - return attResBaseVos; - } - attResBaseVos.stream().map(o->{ - if(o.getCalState() == 1){ - o.setDesState(0); - o.setFlState(0); - }else if(o.getCalState() == 0 && o.getDesState() ==1){ - o.setFlState(0); - } - return o; - }).collect(Collectors.toList()); - - for (AttResBaseVo vo : attResBaseVos) { - BigDecimal rz = vo.getRz(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.orderByAsc(StZvarlB::getRz); - List zvarlList = stZvarlBMapper.selectList(queryWrapper); - BigDecimal w = stZvarlBService.getWByZvarl(zvarlList, rz); - vo.setNowCap(w); -// for (StZvarlB zvarl : zvarlList) { -// if (zvarl.getRz().equals(rz)) { -// vo.setNowCap(zvarl.getW()); -// break; -// } -// } - } - //查询所有测站的库容曲线 -// List zvarlList = queryZval(attResBaseVos.stream().map(AttResBaseVo::getStcd).collect(Collectors.toList())); -// Map> zvalMap = zvarlList.stream().collect(Collectors.groupingBy(StZvarlB::getStcd)); -// for(AttResBaseVo vo : attResBaseVos){ -// String stcd = vo.getStcd(); -// BigDecimal rz = vo.getRz(); -// //计算当前库容 -// List zvarlBS = zvalMap.get(stcd); -// if(rz != null && CollectionUtils.isNotEmpty(zvarlBS)){ -// BigDecimal maxRz = zvarlBS.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); -// BigDecimal minRz = zvarlBS.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); -// if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ -// //当期水位库容 -// StZvarlB equals = zvarlBS.stream().filter(e -> e.getRz().compareTo(vo.getRz()) == 0).findFirst().orElse(new StZvarlB()); -// //死水位库容 -// StZvarlB dead = zvarlBS.stream().filter(e -> e.getRz().compareTo(vo.getDeadCap()) == 0).findFirst().orElse(new StZvarlB()); -// if(Objects.nonNull(equals) && Objects.nonNull(dead)){ -// BigDecimal subtract = equals.getW().subtract(dead.getW()); -// vo.setNowCap(subtract); -// } -// continue; -// } -// Map stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW)); -// List list = zvarlBS.stream().map(StZvarlB::getRz).sorted().collect(Collectors.toList()); -// vo.setNowCap(DataHandleUtil.calcData(rz,stZvalMap,list)); -// } -// } - return attResBaseVos; - } - - - public List listV2() { - List voList = attResBaseMapper.queryListV2(); - if(CollectionUtils.isEmpty(voList)){ - return voList; - } - - List zvarlList = stZvarlBService.list(); - zvarlList.sort(Comparator.comparing(StZvarlB::getRz)); - voList.forEach(vo -> { - if(vo.getCalState() == 1){ - vo.setDesState(0); - vo.setFlState(0); - }else if(vo.getCalState() == 0 && vo.getDesState() ==1){ - vo.setFlState(0); - } - BigDecimal rz = vo.getRz(); - if (rz != null) { - //BigDecimal w = stZvarlBService.getWFromZvarl(rz, null, zvarlList); - BigDecimal w = stZvarlBService.getWByZvarl(zvarlList,rz); - vo.setNowCap(w); - } - Date tm = vo.getTm(); - if(tm != null && DateUtil.hoursBetweenDate(tm,new Date()) > 24){ - vo.setStatus(0); - }else if(tm == null){ - vo.setStatus(0); - }else{ - vo.setStatus(1); - } - }); - - //TODO 计算2个灌溉站的流量之和 - BigDecimal totalSum = BigDecimal.ZERO; - String stcd1 = "1112"; - QueryWrapper irrQw1 = new QueryWrapper<>(); - irrQw1.eq("stcd", stcd1).orderBy(true, false, "tm"); - StWaterRReal stWaterRReal1 = stWaterRRealService.getOne(irrQw1); - if(stWaterRReal1 != null){ - totalSum = totalSum.add(stWaterRReal1.getQ()); - } - String stcd2 = "1113"; - QueryWrapper irrQw2 = new QueryWrapper<>(); - irrQw2.eq("stcd", stcd2).orderBy(true, false, "tm"); - StWaterRReal stWaterRReal2 = stWaterRRealService.getOne(irrQw2); - if(stWaterRReal2 != null){ - totalSum = totalSum.add(stWaterRReal2.getQ()); - } - for (AttResBaseVo attResBaseVo : voList) { - //设置灌溉流量 - attResBaseVo.setIrrigationFlowSum(totalSum); - //设置灌溉流量时间 - if(stWaterRReal1 != null){ - attResBaseVo.setIrrigationFlowTm(stWaterRReal1.getTm()); - }else if(stWaterRReal2 != null){ - attResBaseVo.setIrrigationFlowTm(stWaterRReal2.getTm()); - } - } - //获取新建生态供水流量站最新得流量 - String ecologyStcd = "1114"; - QueryWrapper ecologyQw = new QueryWrapper<>(); - ecologyQw.eq("stcd", ecologyStcd).orderBy(true, false, "tm"); - StWaterRReal ecologyWaterRReal = stWaterRRealService.getOne(ecologyQw); - if(ecologyWaterRReal != null){ - voList.stream().forEach(o -> { - o.setEcologyFlow(ecologyWaterRReal.getQ()); - o.setEcologyFlowTm(ecologyWaterRReal.getTm()); - }); - } - return voList; - } - - - public List listV22() { - List voList = attResBaseMapper.queryListV2(); - if(CollectionUtils.isEmpty(voList)){ - return voList; - } - - List zvarlList = stZvarlBService.list(); - zvarlList.sort(Comparator.comparing(StZvarlB::getRz)); - voList.forEach(vo -> { - if(vo.getCalState() == 1){ - vo.setDesState(0); - vo.setFlState(0); - }else if(vo.getCalState() == 0 && vo.getDesState() ==1){ - vo.setFlState(0); - } - //如果最新数据时间小于当前时间整点,那么不显示水位数据(他妈的,很多功能都是复用一个接口的,说实话,不知道以前的人怎么设计的,就单一责任原则不好吗,非得复用代码,这下搞得需求有变更的情况下,一个页面改好了,另一个页面又会出现问题,真是服了) - Date tm = vo.getTm(); - BigDecimal rz = vo.getRz(); - // 获取当前时间整点(去掉分钟和秒) - Calendar now = Calendar.getInstance(); - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - now.set(Calendar.MILLISECOND, 0); - Date currentHour = now.getTime(); - - if(tm != null && tm.before(currentHour)){ - vo.setRz(null); - vo.setTm(null); - vo.setDrpTm(null); - }else if (tm != null && rz != null){ - if (rz != null) { - //BigDecimal w = stZvarlBService.getWFromZvarl(rz, null, zvarlList); - BigDecimal w = stZvarlBService.getWByZvarl(zvarlList,rz); - vo.setNowCap(w); - } - } - }); - Calendar now = Calendar.getInstance(); - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - now.set(Calendar.MILLISECOND, 0); - Date currentHour = now.getTime(); - //TODO 计算2个灌溉站的流量之和 - BigDecimal totalSum = null; - String stcd1 = "1112"; - QueryWrapper irrQw1 = new QueryWrapper<>(); - irrQw1.eq("stcd", stcd1).orderBy(true, false, "tm"); - StWaterRReal stWaterRReal1 = stWaterRRealService.getOne(irrQw1); - - String stcd2 = "1113"; - QueryWrapper irrQw2 = new QueryWrapper<>(); - irrQw2.eq("stcd", stcd2).orderBy(true, false, "tm"); - StWaterRReal stWaterRReal2 = stWaterRRealService.getOne(irrQw2); - if(stWaterRReal1 != null ){ - Date tm1 = stWaterRReal1.getTm(); - if(tm1 != null && !tm1.before(currentHour)){ - totalSum = BigDecimal.ZERO; - totalSum = totalSum.add(stWaterRReal1.getQ()); - } - } - if(stWaterRReal2 != null){ - Date tm2 = stWaterRReal2.getTm(); - if(tm2 != null && !tm2.before(currentHour)){ - if(totalSum == null){ - totalSum = BigDecimal.ZERO; - } - totalSum = totalSum.add(stWaterRReal2.getQ()); - } - } - - - - for (AttResBaseVo attResBaseVo : voList) { - //设置灌溉流量 - attResBaseVo.setIrrigationFlowSum(totalSum); - //设置灌溉流量时间 - if(stWaterRReal1 != null){ - attResBaseVo.setIrrigationFlowTm(stWaterRReal1.getTm()); - }else if(stWaterRReal2 != null){ - attResBaseVo.setIrrigationFlowTm(stWaterRReal2.getTm()); - } - if(totalSum == null){ - attResBaseVo.setIrrigationFlowTm(null); - } - } - //获取新建生态供水流量站最新得流量 - String ecologyStcd = "1114"; - QueryWrapper ecologyQw = new QueryWrapper<>(); - ecologyQw.eq("stcd", ecologyStcd).orderBy(true, false, "tm"); - StWaterRReal ecologyWaterRReal = stWaterRRealService.getOne(ecologyQw); - if(ecologyWaterRReal != null){ - Date tm = ecologyWaterRReal.getTm(); - if(tm != null && !tm.before(currentHour)){ - voList.stream().forEach(o -> { - o.setEcologyFlow(ecologyWaterRReal.getQ()); - o.setEcologyFlowTm(ecologyWaterRReal.getTm()); - }); - } - } - return voList; - } - - private List queryZval(List stcdList) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.in(StZvarlB::getStcd, stcdList); - return stZvarlBMapper.selectList(queryWrapper); - } - - public List realImg(ReservoirWaterCommonSo reservoirWaterCommonSo) { - return attResBaseMapper.realImg(reservoirWaterCommonSo.getResCode()); - } - - public List zvarl(String stcd) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.orderByAsc(StZvarlB::getRz); - return stZvarlBMapper.selectList(queryWrapper); - } - - public List monitorData(DataQueryCommonSo dataQueryCommonSo) { - String stcd = dataQueryCommonSo.getStcd(); - //雨量数据 - List drpData = attResBaseMapper.drpData(dataQueryCommonSo); - //水位数据 - List rzData = attResBaseMapper.rzData(dataQueryCommonSo); - //获取库容曲线关系,算出库容 - List zvarl = zvarl(stcd); - if(CollectionUtils.isNotEmpty(zvarl)){ - //calcTqData(rzData,zvarl); - rzData.stream().forEach(o -> { - BigDecimal w = stZvarlBService.getWByZvarl(zvarl, o.getRz()); - o.setW(w); - }); - } - //根据监测时间合并雨量和水位数据 - return bindData(stcd,drpData,rzData); - } - - private void calcTqData(List rzData, List zqrl) { - /* 前期库容曲线数据不足,采用了计算近似值,废弃,直接查表 - BigDecimal maxRz = zqrl.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); - BigDecimal minRz = zqrl.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); - Map map = zqrl.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW, - (existing, replacement) -> existing)); - - * 根据监测水位和库容曲线计算出当前库容 - * 计算规则:1.监测水位不在库容曲线范围内,无法计算当前库容 - * 2.找出与监测水位最接近的一组水位值,算出比例,根据比例计算库容:如监测水位为10,最相近的一组水位值为9-11,对应的库容为4-5 - * 则计算公式为1/2 = x/1 x=0.5 当前库容=4+0.5=4.5 - - List list = zqrl.stream().map(StZvarlB::getRz).collect(Collectors.toList()); - for (AttResMonitorVo vo : rzData) { - BigDecimal rz = vo.getRz(); - if (rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0) { - continue; - } - vo.setW(DataHandleUtil.calcData(rz, map, list)); - } - */ - //zqrl转map,用rz值做key,bigdecimal的精度设置为3位 - Map map = zqrl.stream().collect(Collectors.toMap(v -> v.getRz().setScale(3, RoundingMode.UNNECESSARY), v -> v.getW())); - for (AttResMonitorVo vo : rzData) { - BigDecimal rz = vo.getRz().setScale(3, RoundingMode.UNNECESSARY); - if (map.containsKey(rz)) { - vo.setW(map.get(rz)); - } - } - } - - private List bindData(String stcd, List drpData, List rzData) { - // 以水位数据的时间为基准(过五分钟的数据) - return rzData.stream().map(rzVo -> { - AttResMonitorVo resultVo = AttResMonitorVo.builder() - .stcd(stcd) - .tm(rzVo.getTm()) // 使用水位数据的时间 - .rz(rzVo.getRz()) - .w(rzVo.getW()) - .build(); - - // 为这个水位时间点查找最接近的降水数据 - drpData.stream() - .min(Comparator.comparing(drpVo -> Math.abs(rzVo.getTm().getTime() - drpVo.getTm().getTime()))) - .ifPresent(closestDrp -> { - long timeDiff = Math.abs(rzVo.getTm().getTime() - closestDrp.getTm().getTime()); - if (timeDiff <= 30 * 60 * 1000) { // 30分钟容差 - resultVo.setDrp(closestDrp.getDrp()); - } - }); - - return resultVo; - }) - .sorted(Comparator.comparing(AttResMonitorVo::getTm).reversed()) - .collect(Collectors.toList()); - } - - public StRsvrVo rz(ReservoirWaterCommonSo reservoirWaterCommonSo) { - StRsvrVo vo = new StRsvrVo(); - String resCode = reservoirWaterCommonSo.getResCode(); - AttResBase attResBase = attResBaseMapper.selectById(resCode); - vo.setFlLowLimLev(attResBase.getFlLowLimLev()); - //默认查询近一周水位 - String endTime = DateUtil.convertDateToMDSString(new Date()); - String startTime = DateUtil.getMinusTime(endTime, 7 * 24); - vo.setList(attResBaseMapper.queryRzList(attResBase.getStcd(),startTime,endTime)); - return vo; - } - - public AttRvMonitorDetailVo detail(String stcd) { - AttRvMonitorDetailVo vo = new AttRvMonitorDetailVo(); - StPptnDetailsVo stPptnDetailsVo = rainBasinDivisionService.queryStPptnDetailsByStcd(stcd); - BeanUtils.copyProperties(stPptnDetailsVo,vo,AttRvMonitorDetailVo.class); - - //最新水位 - AttResMonitorVo monitorVo = attResBaseMapper.latestRz(stcd); - if(monitorVo == null){ - return vo; - } - Date tm = monitorVo.getTm(); - BigDecimal rz = monitorVo.getRz(); - - // 判断最新水位时间是否是今天 - LocalDateTime nowTime = LocalDateTime.now(); - LocalDateTime latestTime = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); - - boolean isToday = latestTime.toLocalDate().equals(nowTime.toLocalDate()); - if(isToday){ - //最新水位时间往前推24小时水位 - LocalDateTime now = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); - LocalDateTime dateTime = now.minusDays(1); - BigDecimal oldRz = attResBaseMapper.oldRz(stcd,2,Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()),Date.from(now.atZone(ZoneId.systemDefault()).toInstant())); - - if(oldRz != null){ - vo.setRzDiff(rz.subtract(oldRz)); - } - }else{ - vo.setRzDiff(null); - } - - - //本年最高水位 - BigDecimal maxYearRz = queryYearRzByStcdAndTime(stcd); - vo.setMaxRz(maxYearRz); - return vo; - } - - private BigDecimal queryYearRzByStcdAndTime(String stcd) { - LocalDateTime now = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()); - LocalDateTime startTime; - LocalDateTime endTime; - if (now.getHour() >= 8 || (now.getHour() < 8 && now.getMonthValue() > 1) || (now.getHour() < 8 && now.getMonthValue() == 1 && now.getDayOfMonth() >= 1)){ - startTime = LocalDateTime.of( - now.getYear(), - 1, - 1, - 8, - 0, - 0 - ); - endTime = now; - return attResBaseMapper.queryMaxRzByStcdAndTime(stcd,Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); - } - return new BigDecimal(0); - } - - public List channel(String resCode) { - return attResBaseMapper.channel(resCode); - } - - public Page imageInfo(PicQuerySo picQuerySo) { - return attResBaseMapper.imageInfo(picQuerySo.getPageSo().toPage(),picQuerySo); - } - - public List data(DataQueryCommonSo dataQueryCommonSo) { - String stcd = dataQueryCommonSo.getStcd(); - //水位数据 - List rzData = attResBaseMapper.rzData(dataQueryCommonSo); - //获取库容曲线关系,算出库容 - List zvarl = zvarl(stcd); - if(CollectionUtils.isNotEmpty(zvarl)){ - calcTqData(rzData,zvarl); - } - return rzData; - } - - public Page dataPage(PicQuerySo picQuerySo) { - String stcd = picQuerySo.getStcd(); - //水位数据 - Page rzData = attResBaseMapper.rzDataPage(picQuerySo.getPageSo().toPage(),picQuerySo); - //获取库容曲线关系,算出库容 - List zvarl = zvarl(stcd); - if(CollectionUtils.isNotEmpty(zvarl)){ - calcTqData(rzData.getRecords(),zvarl); - } - return rzData; - } - - public List listV3() { - String stcd = "199999"; - List voList = attResBaseMapper.queryYhd(stcd); - return voList; - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceGrowConfigService.java b/src/main/java/com/gunshi/project/hsz/service/RiceGrowConfigService.java deleted file mode 100644 index 6eed42b..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiceGrowConfigService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.RiceGrowConfigMapper; -import com.gunshi.project.hsz.model.RiceGrowConfig; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水稻生长配置 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiceGrowConfigService extends ServiceImpl { - - public RiceGrowConfig selectByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceGrowConfig::getRiceWaterId, riceWaterId); - return this.baseMapper.selectOne(queryWrapper); - } - - public void removeByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceGrowConfig::getRiceWaterId, riceWaterId); - this.remove(queryWrapper); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceIrrigationUseService.java b/src/main/java/com/gunshi/project/hsz/service/RiceIrrigationUseService.java deleted file mode 100644 index 2aadd57..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiceIrrigationUseService.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.RiceIrrigationUseMapper; -import com.gunshi.project.hsz.model.RiceIrrigationUse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 水稻灌溉用水 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiceIrrigationUseService extends ServiceImpl { - - public List selectByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceIrrigationUse::getRiceWaterId, riceWaterId); - return this.baseMapper.selectList(queryWrapper); - } - - public void removeByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceIrrigationUse::getRiceWaterId, riceWaterId); - this.remove(queryWrapper); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceRqWaterService.java b/src/main/java/com/gunshi/project/hsz/service/RiceRqWaterService.java deleted file mode 100644 index ed94e7a..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiceRqWaterService.java +++ /dev/null @@ -1,658 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.dto.RiceWaterCaculateDto; -import com.gunshi.project.hsz.entity.so.RiceRqWaterPageSo; -import com.gunshi.project.hsz.entity.vo.RiceRqWaterCaculateVo; -import com.gunshi.project.hsz.entity.vo.TyYearRainfallVo; -import com.gunshi.project.hsz.mapper.RiceRqWaterMapper; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.LocalDateTimeUtils; -import com.ruoyi.common.utils.StringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.YearMonth; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 水稻需水主表 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiceRqWaterService extends ServiceImpl { - - - @Autowired - private RiceGrowConfigService riceGrowConfigService; - - @Autowired - private RiceIrrigationUseService riceIrrigationUseService; - - @Autowired - private RiceWaterForecastCycleService riceWaterForecastCycleService; - - @Autowired - private RiceWaterForecastMonthService riceWaterForecastMonthService; - - @Autowired - private RiceWaterKiService riceWaterKiService; - - public Page pageQuery(RiceRqWaterPageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(page.getYear() != null){ - queryWrapper.eq(RiceRqWater::getYear,page.getYear()); - } - - if(!StringUtils.isBlank(page.getPlanName())){ - queryWrapper.like(RiceRqWater::getPlanName,page.getPlanName()); - } - queryWrapper.orderByDesc(RiceRqWater::getCreateTime); - Page riceRqWaterPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); - List records = riceRqWaterPage.getRecords(); - for (RiceRqWater record : records) { - //灌水定额配置 - record.setRiceWaterKis(riceWaterKiService.selectByRiceWaterId(record.getId())); - //水稻生长系数配置 - record.setRiceGrowConfig(riceGrowConfigService.selectByRiceWaterId(record.getId())); - //按月份 - record.setRiceWaterForecastMonths(riceWaterForecastMonthService.selectByRiceWaterId(record.getId())); - //按生长周期 - record.setRiceWaterForecastCycles(riceWaterForecastCycleService.selectByRiceWaterId(record.getId())); - } - return riceRqWaterPage; - } - - public RiceRqWater queryById(Long id) { - RiceRqWater riceRqWater = this.baseMapper.selectById(id); - if(riceRqWater == null){ - return riceRqWater; - } - riceRqWater.setRiceWaterKis(riceWaterKiService.selectByRiceWaterId(riceRqWater.getId())); - //水稻生长系数配置 - riceRqWater.setRiceGrowConfig(riceGrowConfigService.selectByRiceWaterId(riceRqWater.getId())); - //按月份 - riceRqWater.setRiceWaterForecastMonths(riceWaterForecastMonthService.selectByRiceWaterId(riceRqWater.getId())); - //按生长周期 - riceRqWater.setRiceWaterForecastCycles(riceWaterForecastCycleService.selectByRiceWaterId(riceRqWater.getId())); - return riceRqWater; - } - - public RiceRqWater saveData(RiceRqWater dto) { - RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); - List riceWaterKis = dto.getRiceWaterKis(); - List riceWaterForecastCycles = dto.getRiceWaterForecastCycles(); - List riceWaterForecastMonths = dto.getRiceWaterForecastMonths(); - dto.setReqWater(riceGrowConfig.getIrrigationUse()); - dto.setCreateTime(LocalDateTime.now()); - save(dto); - riceGrowConfig.setRiceWaterId(dto.getId()); - riceWaterKis.stream().forEach(o ->{ - o.setRiceWaterId(dto.getId()); - }); - riceWaterForecastCycles.stream().forEach(o ->{ - o.setRiceWaterId(dto.getId()); - }); - riceWaterForecastMonths.stream().forEach(o ->{ - o.setRiceWaterId(dto.getId()); - }); - riceWaterKiService.saveBatch(riceWaterKis); - riceGrowConfigService.save(riceGrowConfig); - riceWaterForecastCycleService.saveBatch(riceWaterForecastCycles); - riceWaterForecastMonthService.saveBatch(riceWaterForecastMonths); - return dto; - } - - public RiceRqWater updateData(RiceRqWater dto) { - RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); - List riceWaterKis = dto.getRiceWaterKis(); - List riceWaterForecastCycles = dto.getRiceWaterForecastCycles(); - List riceWaterForecastMonths = dto.getRiceWaterForecastMonths(); - dto.setReqWater(riceGrowConfig.getIrrigationUse()); - dto.setCreateTime(LocalDateTime.now()); - updateById(dto); - riceWaterKiService.removeByRiceWaterId(dto.getId()); - riceGrowConfigService.removeByRiceWaterId(dto.getId()); - riceIrrigationUseService.removeByRiceWaterId(dto.getId()); - riceWaterForecastCycleService.removeByRiceWaterId(dto.getId()); - riceWaterForecastMonthService.removeByRiceWaterId(dto.getId()); - riceWaterKis.stream().forEach(o ->{ - o.setRiceWaterId(dto.getId()); - }); - riceWaterForecastCycles.stream().forEach(o ->{ - o.setRiceWaterId(dto.getId()); - }); - riceWaterForecastMonths.stream().forEach(o ->{ - o.setRiceWaterId(dto.getId()); - }); - riceGrowConfig.setRiceWaterId(dto.getId()); - riceWaterKiService.saveBatch(riceWaterKis); - riceGrowConfigService.save(riceGrowConfig); - riceWaterForecastCycleService.saveBatch(riceWaterForecastCycles); - riceWaterForecastMonthService.saveBatch(riceWaterForecastMonths); - return dto; - } - - public Boolean delData(Long id) { - removeById(id); - riceWaterKiService.removeByRiceWaterId(id); - riceGrowConfigService.removeByRiceWaterId(id); - riceIrrigationUseService.removeByRiceWaterId(id); - riceWaterForecastCycleService.removeByRiceWaterId(id); - riceWaterForecastMonthService.removeByRiceWaterId(id); - return true; - } - - public List stageCaculate(RiceWaterCaculateDto dto) { - RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); - List riceWaterKis = dto.getRiceWaterKis(); - orderByStartTimeAsc(riceWaterKis); - // 早稻需水系数 - BigDecimal α1 = riceGrowConfig.getΑ1(); - if(α1 == null){ - throw new IllegalArgumentException("早稻需水系数不能为空"); - } - // 渗漏强度 - BigDecimal lkIntensity = riceGrowConfig.getLkIntensity(); - if(lkIntensity == null){ - throw new IllegalArgumentException("渗漏强度不能为空"); - } - // 生长期水面蒸发量(mm) - BigDecimal ed1 = riceGrowConfig.getEd1(); - if(ed1 == null){ - throw new IllegalArgumentException("生长期水面蒸发量不能为空"); - } - for (RiceWaterKi riceWaterKi : riceWaterKis) { - // 计算阶段耗水量 - if(riceWaterKi.getRiceGrowStage().contains("泡田")){ - riceWaterKi.setKi(riceGrowConfig.getΑ1());//需水系数 - riceWaterKi.setWaterRqStage(riceGrowConfig.getKaQuota());//泡田定额 - continue; - } - BigDecimal waterRqStage = calculateWaterRqStage(riceWaterKi, α1, ed1, lkIntensity); - riceWaterKi.setWaterRqStage(waterRqStage.setScale(1,RoundingMode.UP)); - } - - return riceWaterKis; - } - - /** - * 计算阶段耗水量 - * 公式:ki * α1 * ed1 + days * lkIntensity - */ - private BigDecimal calculateWaterRqStage(RiceWaterKi riceWaterKi, BigDecimal α1, - BigDecimal ed1, BigDecimal lkIntensity) { - // 获取需水模系数 - BigDecimal ki = riceWaterKi.getKi(); - if(ki == null){ - throw new IllegalArgumentException("需水模型系数不能为空"); - } - // 计算天数(如果days为空,则根据开始结束日期计算) - Integer days = riceWaterKi.getDays(); - if (days == null && riceWaterKi.getStartTime() != null && riceWaterKi.getEndTime() != null) { - days = calculateDaysBetween(riceWaterKi.getStartTime(), riceWaterKi.getEndTime()); - riceWaterKi.setDays(days); // 同时设置回实体中 - } - if (days == null) { - days = 0; - } - - - // 计算公式:ki * α1 * ed1 + days * lkIntensity - BigDecimal part1 = ki.multiply(α1).multiply(ed1); - BigDecimal part2 = new BigDecimal(days).multiply(lkIntensity); - - return part1.add(part2); - } - - /** - * 计算两个LocalDateTime之间的天数(包含开始和结束日期) - * 例如:2025-04-26 ~ 2025-05-06 = 11天 - */ - private Integer calculateDaysBetween(LocalDateTime startTime, LocalDateTime endTime) { - if (startTime == null || endTime == null) { - return 0; - } - - // 使用LocalDate来计算天数,忽略时间部分 - long days = java.time.temporal.ChronoUnit.DAYS.between( - startTime.toLocalDate(), - endTime.toLocalDate() - ); - - // 因为包含开始和结束日期,所以需要+1 - return (int) days + 1; - } - - @Autowired - private TyYearRainfallService tyYearRainfallService; - - public List irrigationCaculate(RiceWaterCaculateDto dto) { - List riceWaterKis = dto.getRiceWaterKis(); - List res = new ArrayList<>(); - orderByStartTimeAsc(riceWaterKis); - RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); - riceGrowConfig.setCycle(LocalDateTimeUtils.getTotalDayByRangeDate(riceWaterKis.getFirst().getStartTime(),riceWaterKis.getLast().getEndTime())); - Integer year = riceGrowConfig.getYear();//相似年 - List tyYearRainfallVos = tyYearRainfallService.queryList(); - List collect = tyYearRainfallVos.stream().filter(o -> { - return o.getYear().equals(year); - }).collect(Collectors.toList()); - if(collect == null || collect.isEmpty()){ - throw new IllegalArgumentException("对不起,没有该年份的降雨资料"); - } - TyYearRainfallVo tyYearRainfallVo = collect.get(0); - List list = tyYearRainfallVo.getList();//获取月份的降雨资料 - //泡田定额 - BigDecimal kaQuota = riceGrowConfig.getKaQuota(); - - // 泡田期是第一个元素 - RiceWaterKi kaPeriod = riceWaterKis.get(0); - LocalDateTime kaStartTime = kaPeriod.getStartTime(); - LocalDateTime kaEndTime = kaPeriod.getEndTime(); - int totalKaDays = calculateTotalKaDays(kaStartTime, kaEndTime); - - // 生育期数据(排除泡田期) - List growPeriods = riceWaterKis.subList(1, riceWaterKis.size()); - - // 用于存储去重后的月份(1-12) - Set monthSet = new HashSet<>(); - - // 添加泡田期的月份 - monthSet.add(kaStartTime.getMonthValue()); - monthSet.add(kaEndTime.getMonthValue()); - - // 遍历集合,提取每个元素的 startTime 和 endTime 对应的月份 - for (RiceWaterKi riceWaterKi : riceWaterKis) { - LocalDateTime start = riceWaterKi.getStartTime(); - LocalDateTime end = riceWaterKi.getEndTime(); - - if (start != null) { - monthSet.add(start.getMonthValue()); - } - if (end != null) { - monthSet.add(end.getMonthValue()); - } - } - - // 将去重后的月份转为列表并按从小到大排序 - List sortedMonths = monthSet.stream() - .sorted() - .collect(Collectors.toList()); - //boolean isFirst = true; - for (Integer sortedMonth : sortedMonths) { - RiceIrrigationUse riceIrrigationUse = new RiceIrrigationUse(); - riceIrrigationUse.setMonth(sortedMonth); - - BigDecimal irrigationVolume = BigDecimal.ZERO; - - // 计算泡田期在当前月份的耗水量 - /** - * 由于这个方法是按照月份进行计算的,所以当后面的生长期有属于泡田期的月份时,那么也要把泡田期的算上 - * 比如 泡田期3.30~4.25 - * 返青期4·26~5·6 - * 属于四月份的有泡田期和返青期,那么计算的时候就要把泡田期在四月份的灌溉用水量和返青期在四月份的灌溉用水量计算上 - */ - if (isMonthInKaPeriod(sortedMonth, kaStartTime, kaEndTime)) { - int kaDaysInMonth = calculateKaDaysInMonth(kaStartTime, kaEndTime, sortedMonth); - BigDecimal kaConsumption = kaQuota.divide(BigDecimal.valueOf(totalKaDays), 2, RoundingMode.HALF_UP) - .multiply(BigDecimal.valueOf(kaDaysInMonth)); - irrigationVolume = irrigationVolume.add(kaConsumption); - } - - // 修正:计算生育期在当前月份的总耗水量(按Excel逻辑) - BigDecimal growConsumption = calculateGrowConsumptionForMonth(sortedMonth, growPeriods); - irrigationVolume = irrigationVolume.add(growConsumption); - - // 计算该月份所有生育阶段的总有效降雨量 -// if(isMonthInKaPeriod(sortedMonth, kaStartTime, kaEndTime) && !isFirst){ -// growPeriods.addFirst(kaPeriod); -// } - BigDecimal monthlyRainfall = calculateTotalEffectiveRainfallForMonth(sortedMonth, growPeriods, list); -// if(isMonthInKaPeriod(sortedMonth, kaStartTime, kaEndTime) && !isFirst){ -// growPeriods.removeFirst(); -// } - irrigationVolume = irrigationVolume.subtract(monthlyRainfall); -// // 如果计算结果是负数,则设为0 -// if (irrigationVolume.compareTo(BigDecimal.ZERO) < 0) { -// irrigationVolume = BigDecimal.ZERO; -// } - - // 保留2位小数 - irrigationVolume = irrigationVolume.setScale(2,RoundingMode.UP); - - riceIrrigationUse.setIrrigationUse(irrigationVolume); - res.add(riceIrrigationUse); -// isFirst = false; - } - return res; - } - - - /** - * 计算指定月份生育期的总耗水量(按Excel逻辑) - */ - private BigDecimal calculateGrowConsumptionForMonth(int month, List growPeriods) { - BigDecimal totalConsumption = BigDecimal.ZERO; - - for (RiceWaterKi growPeriod : growPeriods) { - LocalDateTime startTime = growPeriod.getStartTime(); - LocalDateTime endTime = growPeriod.getEndTime(); - - // 检查该阶段是否包含这个月份 - if (LocalDateTimeUtils.isMonthInPeriod(month, startTime, endTime)) { - // 获取阶段在该月份的天数 - int daysInMonth = LocalDateTimeUtils.calculateDaysInMonthForPeriod(startTime, endTime, month); - - if (daysInMonth > 0) { - // 判断阶段是否跨月份 - List monthsInStage = LocalDateTimeUtils.getMonthsInPeriod(startTime, endTime); - - if (monthsInStage.size() == 1) { - // 不跨月份:直接使用完整耗水量 - totalConsumption = totalConsumption.add(growPeriod.getWaterRqStage()); - } else { - // 跨月份:按天数比例分配耗水量 - //当前月份对应阶段的耗水量/当前阶段的全天数 - /** - * 比如 - * 泡田期 3.30~4.25 - * 返青期 4·26~5·6 这里就跨月份了 - * 同时month为4 表示4月份 - * 那么计算公式为 返青期耗水量/返青期天数11天*返青期四月份天数(ps 泡田期在四月份的耗水量已经计算完了) - */ - BigDecimal dailyConsumption = growPeriod.getWaterRqStage() - .divide(BigDecimal.valueOf(growPeriod.getDays()), 2, RoundingMode.HALF_UP); - //再去乘当前阶段在当前月份的天数 - BigDecimal monthlyConsumption = dailyConsumption.multiply(BigDecimal.valueOf(daysInMonth)); - totalConsumption = totalConsumption.add(monthlyConsumption); - } - } - } - } - - return totalConsumption; - } - - /** - * 计算指定月份所有生育阶段的总有效降雨量 - */ - private BigDecimal calculateTotalEffectiveRainfallForMonth(int month, List growPeriods, - List rainfallList) { - BigDecimal totalRainfall = BigDecimal.ZERO; - - for (RiceWaterKi growPeriod : growPeriods) { - LocalDateTime startTime = growPeriod.getStartTime(); - LocalDateTime endTime = growPeriod.getEndTime(); - - // 检查该阶段是否包含这个月份 - if (LocalDateTimeUtils.isMonthInPeriod(month, startTime, endTime)) { - // 使用getMonthlyRainfall方法计算该阶段在该月份的有效降雨量 - BigDecimal stageRainfall = getMonthlyRainfall(rainfallList, month, startTime, endTime); - totalRainfall = totalRainfall.add(stageRainfall); - } - } - - return totalRainfall.setScale(1, RoundingMode.HALF_UP); - } - - - /** - * 判断月份是否在泡田期内 - */ - private boolean isMonthInKaPeriod(int month, LocalDateTime kaStart, LocalDateTime kaEnd) { - int startMonth = kaStart.getMonthValue(); - int endMonth = kaEnd.getMonthValue(); - return month >= startMonth && month <= endMonth; - } - - /** - * 计算泡田期在当前月份的天数 - */ - private int calculateKaDaysInMonth(LocalDateTime kaStart, LocalDateTime kaEnd, int targetMonth) { - int startMonth = kaStart.getMonthValue(); - int endMonth = kaEnd.getMonthValue(); - - // 如果整个泡田期都在目标月份内 - if (startMonth == targetMonth && endMonth == targetMonth) { - return (int) java.time.temporal.ChronoUnit.DAYS.between(kaStart.toLocalDate(), kaEnd.toLocalDate()) + 1; - } - - // 如果泡田期开始时间在目标月份,结束时间在下个月 - if (startMonth == targetMonth && endMonth > targetMonth) { - LocalDate lastDayOfMonth = kaStart.toLocalDate().withDayOfMonth(kaStart.toLocalDate().lengthOfMonth()); - return (int) java.time.temporal.ChronoUnit.DAYS.between(kaStart.toLocalDate(), lastDayOfMonth) + 1; - } - - // 如果泡田期结束时间在目标月份,开始时间在上个月 - if (endMonth == targetMonth && startMonth < targetMonth) { - LocalDate firstDayOfMonth = kaEnd.toLocalDate().withDayOfMonth(1); - return (int) java.time.temporal.ChronoUnit.DAYS.between(firstDayOfMonth, kaEnd.toLocalDate()) + 1; - } - - return 0; - } - - /** - * 计算泡田期总天数 - */ - private int calculateTotalKaDays(LocalDateTime kaStart, LocalDateTime kaEnd) { - return (int) java.time.temporal.ChronoUnit.DAYS.between(kaStart.toLocalDate(), kaEnd.toLocalDate()) + 1; - } - - /** - * 将ki的数据按照月份从小到大排序 - */ - private void orderByStartTimeAsc(List riceWaterKis) { - Collections.sort(riceWaterKis, (ki1, ki2) -> { - LocalDateTime time1 = ki1.getStartTime(); - LocalDateTime time2 = ki2.getStartTime(); - if (time1 == null) return -1; - if (time2 == null) return 1; - return time1.compareTo(time2); - }); - } - - public List irrigationComprehensiveCaculateMonth(RiceWaterCaculateDto dto) { - RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); - List riceIrrigationUses = irrigationCaculate(dto);//获取灌区水稻用水量 - BigDecimal totalWaterUse = BigDecimal.ZERO; - for (RiceIrrigationUse riceIrrigationUs : riceIrrigationUses) { - totalWaterUse = totalWaterUse.add(riceIrrigationUs.getIrrigationUse()); - } - riceGrowConfig.setWaterUse(totalWaterUse); - List res = new ArrayList<>(); - - //灌溉区面积(亩) - BigDecimal sArea = riceGrowConfig.getArea(); - sArea = sArea.multiply(new BigDecimal("10000")); - for (RiceIrrigationUse riceIrrigationUse : riceIrrigationUses) { - RiceWaterForecastMonth entity = new RiceWaterForecastMonth(); - entity.setMonth(riceIrrigationUse.getMonth()); - BigDecimal irrigationUse = riceIrrigationUse.getIrrigationUse(); - if(irrigationUse.compareTo(BigDecimal.ZERO) <= 0){ - entity.setIrrigationUse(BigDecimal.ZERO); - }else{ - // 计算公式:2/3 * irrigationUse * sArea / 10000 - BigDecimal value = new BigDecimal("2") - .divide(new BigDecimal("3"), 10, RoundingMode.HALF_UP) // 2/3,保留10位小数 - .multiply(irrigationUse) - .multiply(sArea) - .divide(new BigDecimal("10000")); // 除以10000,保留2位小数 - - entity.setIrrigationUse(value); - } - - res.add(entity); - } - return res; - } - - public List irrigationComprehensiveCaculateCycle(RiceWaterCaculateDto dto) { - List riceWaterKis = dto.getRiceWaterKis(); - orderByStartTimeAsc(riceWaterKis); - RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); - BigDecimal kaQuota = riceGrowConfig.getKaQuota();//泡田定额 - Integer year = riceGrowConfig.getYear();//相似年 - BigDecimal sArea = riceGrowConfig.getArea(); - List tyYearRainfallVos = tyYearRainfallService.queryList(); - List collect = tyYearRainfallVos.stream().filter(o -> { - return o.getYear().equals(year); - }).collect(Collectors.toList()); - if(collect == null || collect.isEmpty()){ - throw new IllegalArgumentException("对不起,没有该年份的降雨资料"); - } - TyYearRainfallVo tyYearRainfallVo = collect.get(0); - List rainfallList = tyYearRainfallVo.getList();//获取月份的降雨资料 - List res = new ArrayList<>(); - - for (int i = 0; i < riceWaterKis.size(); i++) { - RiceWaterKi riceWaterKi = riceWaterKis.get(i); - RiceWaterForecastCycle data = new RiceWaterForecastCycle(); - data.setRiceGrowStage(riceWaterKi.getRiceGrowStage()); - data.setOrder(i + 1); - - //泡田期为定值,泡田定额 - if(riceWaterKi.getRiceGrowStage().contains("泡田")){ - data.setIrrigationUse(kaQuota); - data.setRiceGrowStage("泡田期"); - res.add(data); - } else { - LocalDateTime startTime = riceWaterKi.getStartTime(); - LocalDateTime endTime = riceWaterKi.getEndTime(); - BigDecimal irrigationUse = calculateIrrigationUse(riceWaterKi, rainfallList, startTime, endTime); - data.setIrrigationUse(irrigationUse.setScale(2,RoundingMode.HALF_UP)); - res.add(data); - } - } - sArea = sArea.multiply(new BigDecimal("10000")); - for (RiceWaterForecastCycle re : res) { - BigDecimal irrigationUse = re.getIrrigationUse(); - if(irrigationUse.compareTo(BigDecimal.ZERO) <=0){ - re.setIrrigationUse(BigDecimal.ZERO); - }else{ - BigDecimal value = new BigDecimal("2") - .divide(new BigDecimal("3"), 10, RoundingMode.HALF_UP) // 2/3,保留10位小数 - .multiply(irrigationUse) - .multiply(sArea) - .divide(new BigDecimal("10000")); // 除以10000,保留2位小数 - re.setIrrigationUse(value); - } - - } - return res; - } - - /** - * 计算非泡田期的灌溉用水量 - */ - private BigDecimal calculateIrrigationUse(RiceWaterKi riceWaterKi, List rainfallList, - LocalDateTime startTime, LocalDateTime endTime) { - // 阶段用水量(从waterRqStage获取) - BigDecimal stageWaterUse = riceWaterKi.getWaterRqStage(); - if (stageWaterUse == null) { - stageWaterUse = BigDecimal.ZERO; - } - - // 计算有效降雨量 - BigDecimal effectiveRainfall = calculateEffectiveRainfall(rainfallList, startTime, endTime); - - // 灌溉用水量 = 阶段用水量 - 有效降雨量 - BigDecimal irrigationUse = stageWaterUse.subtract(effectiveRainfall); - - // 确保不会出现负值 - return irrigationUse; - } - - /** - * 计算阶段内的有效降雨量 - */ - private BigDecimal calculateEffectiveRainfall(List rainfallList, - LocalDateTime stageStartTime, LocalDateTime stageEndTime) { - BigDecimal totalEffectiveRainfall = BigDecimal.ZERO; - - // 获取阶段跨越的月份 - Set months = LocalDateTimeUtils.getMonthsInPeriodSet(stageStartTime, stageEndTime); - - for (Integer month : months) { - BigDecimal monthlyRainfall = getMonthlyRainfall(rainfallList, month, stageStartTime, stageEndTime); - totalEffectiveRainfall = totalEffectiveRainfall.add(monthlyRainfall); - } - - return totalEffectiveRainfall; - } - - /** - * 从降雨资料中获取指定月份的降雨量,并根据阶段实际使用天数进行调整 - */ - private BigDecimal getMonthlyRainfall(List rainfallList, int month, - LocalDateTime stageStartTime, LocalDateTime stageEndTime) { - if (rainfallList == null || stageStartTime == null || stageEndTime == null) { - return BigDecimal.ZERO; - } - - // 获取原始月降雨量 - BigDecimal originalRainfall = rainfallList.stream() - .filter(rainfall -> rainfall.getMonth() != null && rainfall.getMonth() == month) - .findFirst() - .map(TyYearRainfall::getDrp) - .orElse(BigDecimal.ZERO); - - // 计算阶段在该月份的实际使用天数 - int daysInMonth = LocalDateTimeUtils.calculateDaysInMonthForPeriod(stageStartTime, stageEndTime, month); - int totalDaysInMonth = LocalDateTimeUtils.getTotalDaysInMonth(stageStartTime.getYear(), month); - - if (daysInMonth > 0 && totalDaysInMonth > 0) { - // 按实际使用天数比例计算有效降雨量 - return originalRainfall - .multiply(BigDecimal.valueOf(daysInMonth)) - .divide(BigDecimal.valueOf(totalDaysInMonth), 2, RoundingMode.HALF_UP); - } - - return BigDecimal.ZERO; - } - - public RiceRqWaterCaculateVo caculate(RiceWaterCaculateDto dto) { - //先计算阶段耗水量 - RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); - RiceRqWaterCaculateVo vo = new RiceRqWaterCaculateVo(); - List riceWaterKis = stageCaculate(dto); - dto.setRiceWaterKis(riceWaterKis); - //计算灌区水稻用水量-按月份 - List riceWaterForecastMonths = irrigationComprehensiveCaculateMonth(dto); - BigDecimal monthTotal = BigDecimal.ZERO; - for (RiceWaterForecastMonth riceWaterForecastMonth : riceWaterForecastMonths) { - monthTotal = monthTotal.add(riceWaterForecastMonth.getIrrigationUse()); -// riceWaterForecastMonth.setIrrigationUse(riceWaterForecastMonth.getIrrigationUse().setScale(2,RoundingMode.HALF_UP)); - } - riceGrowConfig.setIrrigationUse(monthTotal); - //计算灌区水稻用水量-按周期 - List riceWaterForecastCycles = irrigationComprehensiveCaculateCycle(dto); - BigDecimal cycleTotal = BigDecimal.ZERO; - for (RiceWaterForecastCycle riceWaterForecastCycle : riceWaterForecastCycles) { - cycleTotal = cycleTotal.add(riceWaterForecastCycle.getIrrigationUse()); -// riceWaterForecastCycle.setIrrigationUse(riceWaterForecastCycle.getIrrigationUse().setScale(2,RoundingMode.HALF_UP)); - } - monthTotal = cycleTotal; - vo.setIrrigationMonthTotalUse(monthTotal.setScale(2,RoundingMode.HALF_UP)); - vo.setIrrigationCycleTotalUse(cycleTotal.setScale(2,RoundingMode.HALF_UP)); - vo.setRiceWaterKis(riceWaterKis); - vo.setRiceWaterForecastMonths(riceWaterForecastMonths); - vo.setRiceWaterForecastCycles(riceWaterForecastCycles); - vo.setRiceGrowConfig(riceGrowConfig); - return vo; - - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceSupportBalanceDetailService.java b/src/main/java/com/gunshi/project/hsz/service/RiceSupportBalanceDetailService.java deleted file mode 100644 index e228fde..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiceSupportBalanceDetailService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.RiceSupportBalanceDetailMapper; -import com.gunshi.project.hsz.model.RiceSupportBalanceDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiceSupportBalanceDetailService extends ServiceImpl { - public List selectByRCId(Long id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceSupportBalanceDetail::getRiceSupportId,id); - return this.baseMapper.selectList(queryWrapper); - } - - public void delByRcId(Long id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceSupportBalanceDetail::getRiceSupportId,id); - baseMapper.delete(queryWrapper); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceSupportBalanceService.java b/src/main/java/com/gunshi/project/hsz/service/RiceSupportBalanceService.java deleted file mode 100644 index 405d5d3..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiceSupportBalanceService.java +++ /dev/null @@ -1,405 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.StRsvrRReal; -import com.gunshi.project.hsz.entity.RiceSupportMidCaculate; -import com.gunshi.project.hsz.entity.dto.RiceSupportBalanceCaculateDto; -import com.gunshi.project.hsz.entity.so.RiceSupportBalanceCaculateIcPageSo; -import com.gunshi.project.hsz.entity.so.RiceSupportBalanceCaculatePageSo; -import com.gunshi.project.hsz.entity.so.RiceSupportBalanceCaculateRcPageSo; -import com.gunshi.project.hsz.entity.vo.TyYearRainfallVo; -import com.gunshi.project.hsz.mapper.RiceSupportBalanceMapper; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.LocalDateTimeUtils; -import lombok.extern.slf4j.Slf4j; -import org.jodconverter.core.util.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiceSupportBalanceService extends ServiceImpl { - - @Autowired - private RiceRqWaterService riceRqWaterService; - - @Autowired - private RiceSupportBalanceDetailService riceSupportBalanceDetailService; - - @Autowired - private IcWaterForecastService icWaterForecastService; - - @Autowired - private AttResBaseService attResBaseService; //水库站点 - - @Autowired - private StZvarlBService stZvarlBService;//库容曲线 - - @Autowired - private StRsvrRRealService stRsvrRRealService; - - @Autowired - private TyYearRainfallService tyYearRainfallService;//降雨相似年资料 - - @Autowired - private IcWaterForecastDetailService icWaterForecastDetailService; - - @Autowired - private RiceGrowConfigService riceGrowConfigService; - - @Autowired - private RiceIrrigationUseService riceIrrigationUseService; - - @Autowired - private RiceWaterForecastCycleService riceWaterForecastCycleService; - - @Autowired - private RiceWaterForecastMonthService riceWaterForecastMonthService; - - @Autowired - private RiceWaterKiService riceWaterKiService; - - public AttResBase getAttResBase(){ - return attResBaseService.list().get(0); - } - - - public void caculateAndSave(RiceSupportBalanceCaculateDto dto) { - - if(dto.getEndTime().isBefore(dto.getStartTime())){ - throw new IllegalArgumentException("开始时间必须小于结束时间"); - } - RiceRqWater riceRqWater = riceRqWaterService.queryById(dto.getRqId()); - IcWaterForecast icWaterForecast = icWaterForecastService.queryById(dto.getIcId()); - //获取生态每天生态需水量(万m³) - BigDecimal dailyEcoWaterUse; - dailyEcoWaterUse = dto.getEcoQ().multiply(new BigDecimal("3600").multiply(new BigDecimal("24"))); - dailyEcoWaterUse = dailyEcoWaterUse.divide(new BigDecimal("10000"),2,RoundingMode.HALF_UP);//转为万m³ - List allDaysByStartAndEndTime = LocalDateTimeUtils.getAllDaysByStartAndEndTime(dto.getStartTime(), dto.getEndTime()); - LocalDateTime today = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0); - BigDecimal totalIcWater = BigDecimal.ZERO;//总来水量 - AttResBase attResBase = getAttResBase(); - String stcd = attResBase.getStcd();//获取站点编码 - //获取死水位 - BigDecimal deadLev = attResBase.getDeadLev(); - StRsvrRReal stRsvrRReal = stRsvrRRealService.getBaseMapper().queryRzByStcd(stcd); - List list = stZvarlBService.lambdaQuery().orderByAsc(StZvarlB::getRz).list(); - BigDecimal w = stZvarlBService.getWByZvarl(list, stRsvrRReal.getRz());//获取库容 - BigDecimal deadW = stZvarlBService.getWByZvarl(list, deadLev);//死水位库容 - Integer year = riceRqWater.getRiceGrowConfig().getYear();//获取相似年 - if(dto.getStartTime().isAfter(today)){ - //获取降雨相似年资料 - BigDecimal totalRainfallWater = BigDecimal.ZERO; - for (TyYearRainfallVo tyYearRainfallVo : tyYearRainfallService.queryList()) { - if (tyYearRainfallVo.getYear().equals(year)) { - List monthData = tyYearRainfallVo.getList(); - // 获取时间范围内的所有月份 - List months = LocalDateTimeUtils.getMonthsInPeriod(today, dto.getStartTime()); - for (Integer month : months) { - // 计算该月份在时间范围内的天数 - int daysInMonthForPeriod = LocalDateTimeUtils.calculateDaysInMonthForPeriod( - today, dto.getStartTime().minusDays(1), month - ); - if (daysInMonthForPeriod > 0) { - // 找到该月份的降雨资料 - for (TyYearRainfall monthDatum : monthData) { - if (monthDatum.getMonth().equals(month)) { - BigDecimal monthRainfall = monthDatum.getDrp(); - if (monthRainfall != null) { - int totalDaysInMonth = LocalDateTimeUtils.getTotalDaysInMonth( - today.getYear(), month - ); - // 该月份的平均日降雨量 - BigDecimal avgDailyRainfall = monthRainfall.divide( - new BigDecimal(totalDaysInMonth), 4, RoundingMode.HALF_UP - ); - // 该月份在时间范围内的总降雨量 - BigDecimal monthRainfallInPeriod = avgDailyRainfall.multiply( - new BigDecimal(daysInMonthForPeriod) - ); - - totalRainfallWater = totalRainfallWater.add(monthRainfallInPeriod); - } - break; - } - } - } - } - break; - } - } - // 总来水量 = 当前到开始时间的降雨来水量 + 方案来水(长期预测为万m³,短期预测为m³ 所以如果为短期,则需要进行÷10000 - BigDecimal currentToStartWater = totalRainfallWater; // 这里假设totalRainfallWater就是需要的来水量 - totalIcWater = totalIcWater.add(currentToStartWater).add(icWaterForecast.getType() == 0? icWaterForecast.getForecastWater(): icWaterForecast.getForecastWater().divide(new BigDecimal("10000"))); // 将当前到开始时间的来水量加入总来水量 - - }else{ - // 总来水量 = 当前蓄水量 + 来水方案中的来水 - BigDecimal forecastWater = icWaterForecast.getType() == 0? icWaterForecast.getForecastWater(): icWaterForecast.getForecastWater().divide(new BigDecimal("10000")); - totalIcWater = w.add(forecastWater); - } - BigDecimal totalNeedWater = BigDecimal.ZERO; - //获取总需水量(需水总量 + 每日生态用水量 * 天数) - totalNeedWater = riceRqWater.getReqWater().add(dailyEcoWaterUse.multiply(new BigDecimal(allDaysByStartAndEndTime.size()))).setScale(2,RoundingMode.HALF_UP); - //总计划供水量 - BigDecimal totalPlan; - if(totalIcWater.compareTo(totalNeedWater) > 0){ - //如果来水量大于需水量 - totalPlan = totalNeedWater; - }else{ - //总计划供水量 = (当前蓄水量 + 来水) - 死水位对应库容 - totalPlan = (w.add(totalIcWater)).subtract(deadW); - //如果计划供水大于了来水,那么计划供水就为来水 - totalPlan = totalPlan.compareTo(totalNeedWater) >=0?totalNeedWater:totalPlan; - } - /** - * 需要优先保障每日生态供水 - * 比如 - * 总需水8000,生态需水100,灌溉7900 来水+蓄水 = 7500 - * 那么 生态供水100,灌溉供水7400,并且每日灌溉供水按“(蓄水+来水)/需水”的比例进行等比缩放 - */ - //获取灌溉用水周期参数 - List riceWaterForecastCycles = riceRqWater.getRiceWaterForecastCycles(); - List riceSupportMidCaculates = fillData(riceWaterForecastCycles, riceRqWater.getRiceWaterKis()); - // 先计算总灌溉需水量 - BigDecimal totalIrrigationNeed = BigDecimal.ZERO; - for (RiceSupportMidCaculate caculate : riceSupportMidCaculates) { - if (caculate.getIrrigationUse() != null) { - totalIrrigationNeed = totalIrrigationNeed.add(caculate.getIrrigationUse()); - } - } - - //生态总用水量 - BigDecimal totalWaterForEco = dailyEcoWaterUse.multiply(new BigDecimal(allDaysByStartAndEndTime.size())); - // 如果来水量不足够供应所有生态用水和灌溉用水 - if(totalPlan.compareTo(totalNeedWater) <0){ - //如果生态用水都满足不了 - if(totalPlan.compareTo(totalWaterForEco) < 0){ - //调整生态用水量 - totalWaterForEco = totalPlan; // 实际生态供水量调整为可用的总量 - dailyEcoWaterUse = totalWaterForEco.divide( - new BigDecimal(allDaysByStartAndEndTime.size()),10,RoundingMode.HALF_UP); - } - } - // 计算灌溉用水的缩放比例 - BigDecimal irrigationRatio; - if (totalIrrigationNeed.compareTo(BigDecimal.ZERO) > 0) { - //总计划供水/总需水 - irrigationRatio = totalPlan.divide(totalNeedWater,3,RoundingMode.DOWN); - } else { - irrigationRatio = BigDecimal.ZERO; - } - //首先保存主表信息 - RiceSupportBalance riceSupportBalance = new RiceSupportBalance(); - riceSupportBalance.setRiceWaterId(dto.getRqId()); - riceSupportBalance.setIcWaterId(dto.getIcId()); - riceSupportBalance.setStartTime(dto.getStartTime()); - riceSupportBalance.setEndTime(dto.getEndTime()); - riceSupportBalance.setCreateTime(LocalDateTime.now()); -// riceSupportBalance.setTotalPlan(totalPlan);//实际供水量 -// riceSupportBalance.setTotalCost(totalNeedWater);//计划供水量 - riceSupportBalance.setCreateName(dto.getCreateName()); - riceSupportBalance.setStatus(0); - riceSupportBalance.setPlanName(dto.getPlanName()); - boolean save = this.save(riceSupportBalance); - // 创建final或effectively final的局部变量副本 - final Long mainId = riceSupportBalance.getId(); - final BigDecimal finalDailyEcoWaterUse = dailyEcoWaterUse; - final BigDecimal finalIrrigationRatio = irrigationRatio; - final List finalAllDays = new ArrayList<>(allDaysByStartAndEndTime); - final List finalRiceSupportMidCaculates = new ArrayList<>(riceSupportMidCaculates); - - // 在新线程中执行计算和保存 - //TODO 这样做会有事务问题(如果明细数据计算失败,那么会导致 只有主表数据,没有明细数据(当然也可以保持同步计算逻辑) - new Thread(() -> { - try { - List saveDetails = new ArrayList<>(); - for (LocalDateTime localDateTime : finalAllDays) { - RiceSupportBalanceDetail entity = new RiceSupportBalanceDetail(); - entity.setTm(localDateTime); - - // 查找当前日期属于哪个生长周期,计算灌溉需水量 - BigDecimal dailyIrrigationNeed = BigDecimal.ZERO; // 灌溉需水量 - for (RiceSupportMidCaculate caculate : finalRiceSupportMidCaculates) { - // 提取月份和日,忽略年份 - int currentMonth = localDateTime.getMonthValue(); - int currentDay = localDateTime.getDayOfMonth(); - - int startMonth = caculate.getStartTime().getMonthValue(); - int startDay = caculate.getStartTime().getDayOfMonth(); - - int endMonth = caculate.getEndTime().getMonthValue(); - int endDay = caculate.getEndTime().getDayOfMonth(); - - // 判断日期是否在周期内(只比较月日) - boolean isInCycle = false; - - if (startMonth < endMonth || (startMonth == endMonth && startDay <= endDay)) { - // 正常情况:开始月日 <= 结束月日(不跨年) - if ((currentMonth > startMonth || (currentMonth == startMonth && currentDay >= startDay)) && - (currentMonth < endMonth || (currentMonth == endMonth && currentDay <= endDay))) { - isInCycle = true; - } - } else { - // 跨年情况:开始月日 > 结束月日(如11月到次年2月) - if ((currentMonth > startMonth || (currentMonth == startMonth && currentDay >= startDay)) || - (currentMonth < endMonth || (currentMonth == endMonth && currentDay <= endDay))) { - isInCycle = true; - } - } - - if (isInCycle) { - // 计算该生长周期的天数 - int daysInCycle = LocalDateTimeUtils.calculateDaysIgnoringYear( - caculate.getStartTime(), - caculate.getEndTime() - ); - - if (daysInCycle > 0 && caculate.getIrrigationUse() != null) { - // 该生长周期每天的灌溉需水量 - dailyIrrigationNeed = caculate.getIrrigationUse() - .divide(new BigDecimal(daysInCycle),2,RoundingMode.DOWN); - } - break; - } - } - - // 设置灌溉需水量 - entity.setIrrigationUse(dailyIrrigationNeed); - - // 按比例计算灌溉计划供水量 - BigDecimal dailyIrrigationPlan = dailyIrrigationNeed.multiply(finalIrrigationRatio); - entity.setIrrigationPlan(dailyIrrigationPlan.setScale(2,RoundingMode.UP)); - - // 每日生态需水量 - entity.setEcoUse(finalDailyEcoWaterUse); - - // 每日生态计划供水量 - entity.setEcoPlan(finalDailyEcoWaterUse); - - // 设置主表关联ID - entity.setRiceSupportId(mainId); - saveDetails.add(entity); - } - - if(!saveDetails.isEmpty()){ - riceSupportBalanceDetailService.saveBatch(saveDetails); - } - BigDecimal finalTotalPlan = BigDecimal.ZERO; - BigDecimal finalTotalCost = BigDecimal.ZERO; - for (RiceSupportBalanceDetail saveDetail : saveDetails) { - finalTotalPlan = finalTotalPlan.add(saveDetail.getEcoPlan().add(saveDetail.getIrrigationPlan())); - finalTotalCost = finalTotalCost.add(saveDetail.getEcoUse().add(saveDetail.getIrrigationUse())); - } - riceSupportBalance.setTotalPlan(finalTotalPlan); - riceSupportBalance.setTotalCost(finalTotalCost); - riceSupportBalance.setStatus(1); - updateById(riceSupportBalance); - } catch (Exception e) { - riceSupportBalance.setStatus(2); - riceSupportBalance.setFailReason(e.getMessage()); - updateById(riceSupportBalance); - } - }).start(); - } - - - - public Page icPage(RiceSupportBalanceCaculateIcPageSo pageSo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.le(IcWaterForecast::getStartTime,pageSo.getStartTime()); - queryWrapper.ge(IcWaterForecast::getEndTime,pageSo.getEndTime()); - if(pageSo.getType() != null){ - queryWrapper.eq(IcWaterForecast::getType, pageSo.getType()); - } - if(!StringUtils.isBlank(pageSo.getIcplanName())){ - queryWrapper.like(IcWaterForecast::getPlanName, pageSo.getIcplanName()); - } - queryWrapper.orderByDesc(IcWaterForecast::getCreateTime); - Page icWaterForecastPage = icWaterForecastService.getBaseMapper().selectPage(pageSo.getPageSo().toPage(), queryWrapper); - for (IcWaterForecast record : icWaterForecastPage.getRecords()) { - List icWaterForecastDetails = icWaterForecastDetailService.listByForecastId(record.getId()); - record.setDetails(icWaterForecastDetails); - } - return icWaterForecastPage; - } - - public Page rcPage(RiceSupportBalanceCaculateRcPageSo pageSo) { - List yearByRangeDate = LocalDateTimeUtils.getYearByRangeDate(pageSo.getStartTime(), pageSo.getEndTime()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(pageSo.getRcplanName())){ - queryWrapper.like(RiceRqWater::getPlanName, pageSo.getRcplanName()); - } - queryWrapper.in(RiceRqWater::getYear, yearByRangeDate); - queryWrapper.orderByDesc(RiceRqWater::getCreateTime); - Page riceRqWaterPage = riceRqWaterService.getBaseMapper().selectPage(pageSo.getPageSo().toPage(), queryWrapper); - List records = riceRqWaterPage.getRecords(); - for (RiceRqWater record : records) { - //灌水定额配置 - record.setRiceWaterKis(riceWaterKiService.selectByRiceWaterId(record.getId())); - //水稻生长系数配置 - record.setRiceGrowConfig(riceGrowConfigService.selectByRiceWaterId(record.getId())); - //按月份 - record.setRiceWaterForecastMonths(riceWaterForecastMonthService.selectByRiceWaterId(record.getId())); - //按生长周期 - record.setRiceWaterForecastCycles(riceWaterForecastCycleService.selectByRiceWaterId(record.getId())); - } - return riceRqWaterPage; - } - - private List fillData(List riceWaterForecastCycles, List riceWaterKis){ - List res = new ArrayList<>(); - for (RiceWaterKi riceWaterKi : riceWaterKis) { - RiceSupportMidCaculate entity = new RiceSupportMidCaculate(); - entity.setStartTime(riceWaterKi.getStartTime()); - entity.setEndTime(riceWaterKi.getEndTime()); - entity.setName(riceWaterKi.getRiceGrowStage()); - //去riceWaterForecastCycles查询与riceWaterKi生长周期相同的数据,并设置他的灌溉用水量 - Optional matchingCycle = riceWaterForecastCycles.stream() - .filter(cycle -> cycle.getRiceGrowStage().equals(riceWaterKi.getRiceGrowStage())) - .findFirst(); - - if (matchingCycle.isPresent()) { - entity.setIrrigationUse(matchingCycle.get().getIrrigationUse()); - } else { - entity.setIrrigationUse(BigDecimal.ZERO); - } - res.add(entity); - } - return res; - } - - public Page queryPage(RiceSupportBalanceCaculatePageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(page.getPlanName())){ - queryWrapper.like(RiceSupportBalance::getPlanName, page.getPlanName()); - } - queryWrapper.orderByDesc(RiceSupportBalance::getCreateTime); - Page riceSupportBalancePage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); - for (RiceSupportBalance record : riceSupportBalancePage.getRecords()) { - List details = riceSupportBalanceDetailService.selectByRCId(record.getId()); - for (RiceSupportBalanceDetail detail : details) { - detail.setDailyTotalUse(detail.getEcoUse().add(detail.getIrrigationUse())); - detail.setDailyTotalPlan(detail.getEcoPlan().add(detail.getIrrigationPlan())); - } - record.setDetails(details); - } - return riceSupportBalancePage; - } - - public boolean delData(Long id) { - riceSupportBalanceDetailService.delByRcId(id); - boolean flag = removeById(id); - return flag; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceWaterForecastCycleService.java b/src/main/java/com/gunshi/project/hsz/service/RiceWaterForecastCycleService.java deleted file mode 100644 index 93d908f..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiceWaterForecastCycleService.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.RiceWaterForecastCycleMapper; -import com.gunshi.project.hsz.model.RiceWaterForecastCycle; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 水稻水分预测周期 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiceWaterForecastCycleService extends ServiceImpl { - - public List selectByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceWaterForecastCycle::getRiceWaterId, riceWaterId); - queryWrapper.orderByAsc(RiceWaterForecastCycle::getOrder); - return this.baseMapper.selectList(queryWrapper); - } - - public void removeByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceWaterForecastCycle::getRiceWaterId, riceWaterId); - this.remove(queryWrapper); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceWaterForecastMonthService.java b/src/main/java/com/gunshi/project/hsz/service/RiceWaterForecastMonthService.java deleted file mode 100644 index a804621..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiceWaterForecastMonthService.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.RiceWaterForecastMonthMapper; -import com.gunshi.project.hsz.model.RiceWaterForecastMonth; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 水稻水分预测月份 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiceWaterForecastMonthService extends ServiceImpl { - - public List selectByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceWaterForecastMonth::getRiceWaterId, riceWaterId); - return this.baseMapper.selectList(queryWrapper); - } - - public void removeByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceWaterForecastMonth::getRiceWaterId, riceWaterId); - this.baseMapper.delete(queryWrapper); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/RiceWaterKiService.java b/src/main/java/com/gunshi/project/hsz/service/RiceWaterKiService.java deleted file mode 100644 index eb81138..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiceWaterKiService.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.RiceWaterKiMapper; -import com.gunshi.project.hsz.model.RiceWaterKi; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 水稻水分需水模系数 - * author: xusan - * date: 2024-09-04 13:42:40 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiceWaterKiService extends ServiceImpl { - - public List selectByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceWaterKi::getRiceWaterId, riceWaterId); - return this.baseMapper.selectList(queryWrapper); - } - - public void removeByRiceWaterId(Long riceWaterId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RiceWaterKi::getRiceWaterId, riceWaterId); - this.baseMapper.delete(queryWrapper); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/service/RiskControlInfoService.java b/src/main/java/com/gunshi/project/hsz/service/RiskControlInfoService.java deleted file mode 100644 index 1ca12b0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiskControlInfoService.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.so.AttCctvBasePage; -import com.gunshi.project.hsz.mapper.RiskControlInfoMapper; -import com.gunshi.project.hsz.model.BzDictRel; -import com.gunshi.project.hsz.model.RiskControlInfo; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 描述: 风险管控清单 - * author: xusan - * date: 2024-08-22 14:17:28 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiskControlInfoService extends ServiceImpl -{ - @Autowired - private FileAssociationsService fileService; - - @Autowired - private BzDictRelService bzDictRelService; - - public RiskControlInfo saveData(RiskControlInfo dto) { - dto.setId(IdWorker.getId()); - dto.setCreateDate(new Date()); - boolean result = this.save(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); -// bzDictRelService.saveRel(dto.getResult(),dto.getId(),getGroupId()); - } - return dto; - } - - public RiskControlInfo updateData(RiskControlInfo dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); -// bzDictRelService.updateRel(dto.getResult(),dto.getId(),getGroupId()); - } - return dto; - } - - public Boolean delData(Long id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); -// bzDictRelService.deleteRel(id); - } - return data; - } - - public String getGroupId() { - return "riskControlInfo"; - } - - public Page pageQuery(AttCctvBasePage page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getMenuId())) { - query.eq(RiskControlInfo::getMenuId, page.getMenuId()); - } - query.orderByDesc(RiskControlInfo::getCreateDate); - Page res = this.page(page.getPageSo().toPage(), query); - if (res.getRecords() != null && res.getRecords().size() > 0) { - fillAttach(res.getRecords()); -// fillRel(res.getRecords()); - } - return res; - } - - private void fillRel(List records) { - List ids = records.stream().map(RiskControlInfo::getId).collect(Collectors.toList()); - List relList = this.baseMapper.queryRelList(ids); - Map> map = relList.stream().collect(Collectors.groupingBy(BzDictRel::getBusinessId)); - for (RiskControlInfo record : records) { - record.setResult(map.get(record.getId())); - } - } - - private void fillAttach(List ret) { - for (RiskControlInfo record : ret) { - record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); - } - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/RiskControlMenuService.java b/src/main/java/com/gunshi/project/hsz/service/RiskControlMenuService.java deleted file mode 100644 index 9e08d90..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiskControlMenuService.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.RiskControlInfoMapper; -import com.gunshi.project.hsz.mapper.RiskControlMenuMapper; -import com.gunshi.project.hsz.model.RiskControlInfo; -import com.gunshi.project.hsz.model.RiskControlMenu; -import com.gunshi.util.common.tree.TreeUtil; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 风险管控目录 - * author: xusan - * date: 2024-08-22 14:16:35 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiskControlMenuService extends ServiceImpl -{ - - @Resource - private RiskControlInfoMapper riskControlInfoMapper; - - public RiskControlMenu saveData(RiskControlMenu dto) { - if (Objects.isNull(dto.getParentId())){ - dto.setParentId(0L); - } - dto.setId(IdWorker.getId()); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("parent_id", dto.getParentId()); - queryWrapper.orderBy(true, false, "order_index"); - RiskControlMenu lastOne = super.getOne(queryWrapper, false); - int order = 0; - if (lastOne == null) { - order = 1; - } else { - order = lastOne.getOrderIndex() + 1; - } - dto.setOrderIndex(order); - this.save(dto); - return dto; - } - - public RiskControlMenu updateData(RiskControlMenu dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - this.updateById(dto); - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - Long count = this.lambdaQuery() - .eq(RiskControlMenu::getParentId, id) - .count(); - if(count > 0){ - throw new IllegalArgumentException("请先删除下级目录"); - } - //判断是否关联风险清单 - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(RiskControlInfo::getMenuId,id); - if(riskControlInfoMapper.selectCount(wrapper) > 0){ - throw new IllegalArgumentException("请先删除关联的风险管控清单"); - } - return this.removeById(id); - } - - public List tree() { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.orderBy(true, true, RiskControlMenu::getOrderIndex); - List list = this.list(queryWrapper); - return TreeUtil.list2ListTree(list, 0L, RiskControlMenu::getId, RiskControlMenu::getParentId, RiskControlMenu::setChildren, null); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/RiverWaterService.java b/src/main/java/com/gunshi/project/hsz/service/RiverWaterService.java deleted file mode 100644 index 6850446..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RiverWaterService.java +++ /dev/null @@ -1,334 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import com.gunshi.project.hsz.common.model.StRiverRReal; -import com.gunshi.project.hsz.entity.so.DataQueryCommonSo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.mapper.StZqRMapper; -import com.gunshi.project.hsz.mapper.StZqrlBMapper; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.DataHandleUtil; -import com.gunshi.project.hsz.util.DateUtil; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.*; -import java.util.stream.Collectors; - -/** - * Description: - * Created by wanyan on 2024/2/21 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class RiverWaterService { - - @Resource - private AttResBaseMapper attRvBaseMapper; - - @Resource - private StZqrlBMapper stZqrlBMapper; - - @Resource - private RainBasinDivisionService rainBasinDivisionService; - - @Resource - private AlarmSetService alarmSetService; - - @Resource - private StRiverRRealService stRiverRRealService; - - @Resource - private StZqRMapper stZqRMapper;//水位-流量关系 - - - public List getRiverStcd(){ - return attRvBaseMapper.getRiverStcd(); - } - - - public List list() { - List attRvBaseVos = attRvBaseMapper.queryWaterListUpAndLow(); - if(CollectionUtils.isEmpty(attRvBaseVos)){ - return attRvBaseVos; - } - for (AttRvBaseVo attRvBaseVo : attRvBaseVos) { - Date tm = attRvBaseVo.getTm(); - if(tm != null && DateUtil.hoursBetweenDate(tm,new Date()) > 24){ - attRvBaseVo.setStatus(0); - }else if (tm == null){ - attRvBaseVo.setStatus(0); - }else{ - attRvBaseVo.setStatus(1); - } - } - return attRvBaseVos; - } - - public List get(String stcd) { - List attRvBaseVos = attRvBaseMapper.queryWaterListByStcd(stcd); - if(CollectionUtils.isEmpty(attRvBaseVos)){ - return attRvBaseVos; - } - return attRvBaseVos; - } - - public List zqrl(String stcd) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(StZqrlB::getStcd, stcd).orderByAsc(StZqrlB::getPtno); - return stZqrlBMapper.selectList(queryWrapper); - } - - public BigDecimal getQByRz(List zqr,BigDecimal rz){ - // 1. 参数校验 - if (zqr == null || zqr.isEmpty()) { - throw new IllegalArgumentException("水位-流量关系列表不能为空"); - } - if (rz == null) { - throw new IllegalArgumentException("水位值不能为空"); - } - - // 2. 检查边界情况:如果目标水位低于最低水位或高于最高水位 - BigDecimal minRz = zqr.get(0).getZ(); - BigDecimal maxRz = zqr.get(zqr.size() - 1).getZ(); - if (rz.compareTo(minRz) < 0) { - // 低于最低水位,返回0流量 - return BigDecimal.ZERO; - } - if (rz.compareTo(maxRz) > 0) { - // 高于最高水位,返回0流量 - return BigDecimal.ZERO; - } - - // 3. 二分查找水位区间 - int l = 0; - int r = zqr.size() - 1; - - while (l <= r) { - int mid = l + (r - l) / 2; - BigDecimal midRz = zqr.get(mid).getZ(); - int compareResult = midRz.compareTo(rz); - - if (compareResult == 0) { - // 找到完全匹配的水位,直接返回对应的流量 - return zqr.get(mid).getQ(); - } else if (compareResult < 0) { - l = mid + 1; - } else { - r = mid - 1; - } - } - - /** - * 此时: - * l 指向第一个大于rz的位置 - * r 指向最后一个小于rz的位置 - * 即:r为 (x1, y1) - 下限水位和流量 - * l为 (x2, y2) - 上限水位和流量 - */ - if (l >= zqr.size() || r < 0) { - return BigDecimal.ZERO; - } - - // 获取前后相邻的两个点 - StZqR lowerPoint = zqr.get(r); - StZqR upperPoint = zqr.get(l); - - // 使用线性插值计算流量 - return linearInterpolation( - lowerPoint.getZ(), lowerPoint.getQ(), - upperPoint.getZ(), upperPoint.getQ(), - rz - ).setScale(3, RoundingMode.HALF_UP); - } - - /** - * 线性插值辅助方法(可以复用之前的) - * @param x1 已知点1的水位 - * @param y1 已知点1的流量 - * @param x2 已知点2的水位 - * @param y2 已知点2的流量 - * @param x 目标水位 - * @return 目标水位对应的流量 - */ - private BigDecimal linearInterpolation(BigDecimal x1, BigDecimal y1, - BigDecimal x2, BigDecimal y2, - BigDecimal x) { - // 使用公式: y = y1 + ( (y2 - y1) / (x2 - x1) ) * (x - x1) - - // 计算斜率: (y2 - y1) / (x2 - x1) - BigDecimal slope = y2.subtract(y1) - .divide(x2.subtract(x1), 10, RoundingMode.HALF_UP); - - // 计算: slope * (x - x1) - BigDecimal xDiff = x.subtract(x1); - BigDecimal product = slope.multiply(xDiff); - - // 计算最终结果: y1 + product - return y1.add(product); - } - - public List monitorData(DataQueryCommonSo dataQueryCommonSo) { - String stcd = dataQueryCommonSo.getStcd(); - //雨量数据 - List drpData = attRvBaseMapper.drp(dataQueryCommonSo); - //水位数据 - List rzData = attRvBaseMapper.rz(dataQueryCommonSo); - //获取水位流量关系,算出转换流量 - //List zqrl = zqrl(stcd); - List zqr = zqr(stcd); - if(CollectionUtils.isNotEmpty(zqr)){ - rzData.stream().forEach(o->{ - o.setQ(getQByRz(zqr,o.getZ())); - }); - } - //根据监测时间合并雨量和水位数据 - return bindData(stcd,drpData,rzData); - } - - private List bindData(String stcd, List drpData, List rzData) { - HashSet strings = new HashSet<>(); - drpData.stream().forEach(v1 -> strings.add(v1.getTm())); - rzData.stream().forEach(v1 -> strings.add(v1.getTm())); - - ArrayList result = new ArrayList<>(); - strings.stream().forEach(v1 -> result.add(AttRvMonitorVo.builder().stcd(stcd).tm(v1).build())); - - List list = result.stream().map(v1 -> { - drpData.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setDrp(v2.getDrp()); - }); - - rzData.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { - v1.setZ(v2.getZ()); - v1.setQ(v2.getQ()); - v1.setTq(v2.getTq()); - }); - - return v1; - }).collect(Collectors.toList()); - return list.stream().sorted(Comparator.comparing(AttRvMonitorVo::getTm).reversed()).collect(Collectors.toList()); - } - - private void calcTqData(List rzData, List zqrl) { - BigDecimal maxRz = zqrl.stream().max(Comparator.comparing(StZqrlB::getZ)).get().getZ(); - BigDecimal minRz = zqrl.stream().min(Comparator.comparing(StZqrlB::getZ)).get().getZ(); - Map map = zqrl.stream().collect(Collectors.toMap(StZqrlB::getZ, StZqrlB::getQ)); - List list = zqrl.stream().map(StZqrlB::getZ).collect(Collectors.toList()); - for(AttRvMonitorVo vo : rzData){ - BigDecimal rz = vo.getZ(); - if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ - continue; - } - vo.setTq(DataHandleUtil.calcData(rz,map,list)); - } - } - - - public AttRvMonitorDetailVo detail(String stcd) { - AttRvMonitorDetailVo vo = new AttRvMonitorDetailVo(); - StPptnDetailsVo stPptnDetailsVo = rainBasinDivisionService.queryStPptnDetailsByStcd(stcd); - BeanUtils.copyProperties(stPptnDetailsVo,vo,AttRvMonitorDetailVo.class); - - //最新水位 - AttRvMonitorVo monitorVo = attRvBaseMapper.newRz(stcd); - if(monitorVo == null){ - return vo; - } - Date tm = monitorVo.getTm(); - BigDecimal rz = monitorVo.getZ(); - - // 判断最新水位时间是否是今天 - LocalDateTime nowTime = LocalDateTime.now(); - LocalDateTime latestTime = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); - - // 检查是否同一天(年、月、日相同) - boolean isToday = latestTime.toLocalDate().equals(nowTime.toLocalDate()); - - if(isToday){ - //最新水位时间往前推24小时水位 - LocalDateTime now = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); - LocalDateTime dateTime = now.minusDays(1); - BigDecimal oldRz = attRvBaseMapper.oldRz(stcd,1,Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()),Date.from(now.atZone(ZoneId.systemDefault()).toInstant())); - - if(oldRz != null){ - vo.setRzDiff(rz.subtract(oldRz)); - } - }else{ - vo.setRzDiff(null); - } - - //本年最高水位 - BigDecimal maxYearRz = queryYearRzByStcdAndTime(stcd); - vo.setMaxRz(maxYearRz); - return vo; - } - - private BigDecimal queryYearRzByStcdAndTime(String stcd) { - LocalDateTime now = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()); - LocalDateTime startTime; - LocalDateTime endTime; - if (now.getHour() >= 8 || (now.getHour() < 8 && now.getMonthValue() > 1) || (now.getHour() < 8 && now.getMonthValue() == 1 && now.getDayOfMonth() >= 1)){ - startTime = LocalDateTime.of( - now.getYear(), - 1, - 1, - 8, - 0, - 0 - ); - endTime = now; - return attRvBaseMapper.queryRiverMaxRz(stcd,Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); - } - return new BigDecimal(0); - } - - public AttRiverNowDataVo nowData(String stcd) { - AttRiverNowDataVo vo = new AttRiverNowDataVo(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AlarmSet::getStcd,stcd); - AlarmSet alarmSet = alarmSetService.getBaseMapper().selectOne(queryWrapper);//查询该站点的警告水位配置信息 - if(alarmSet == null){ - vo.setWaterAlarm(BigDecimal.ZERO); - vo.setWaterPromise(BigDecimal.ZERO); - }else{ - vo.setWaterAlarm(alarmSet.getWarnWaterLevel()); - vo.setWaterPromise(alarmSet.getPromiseWaterLevel()); - } - - StPptnRReal stPptnRReal = rainBasinDivisionService.queryStPptnRealByStcd(stcd);//查询该站点的实时降雨 - BeanUtils.copyProperties(stPptnRReal,vo); - - //查询该站点实时水位 - StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().queryQByStcd(stcd); - if(stRiverRReal == null){ - return vo; - } - BigDecimal z = stRiverRReal.getZ() == null ? BigDecimal.ZERO : stRiverRReal.getZ(); - vo.setRz(z); - vo.setWaterAlarmGap(z.subtract(vo.getWaterAlarm())); - vo.setWaterPromiseGap(z.subtract(vo.getWaterPromise())); - return vo; - } - - public List zqr(String stcd){ - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(StZqR::getStcd, stcd).orderByAsc(StZqR::getZ); - return stZqRMapper.selectList(queryWrapper); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/RotaLogService.java b/src/main/java/com/gunshi/project/hsz/service/RotaLogService.java deleted file mode 100644 index 73d04a8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RotaLogService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.RotaLogPageSo; -import com.gunshi.project.hsz.mapper.RotaLogMapper; -import com.gunshi.project.hsz.model.RotaLog; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * Description: - * Created by wanyan on 2024/3/25 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Transactional(rollbackFor = Exception.class) -public class RotaLogService extends ServiceImpl { - - public Page queryPage(RotaLogPageSo rotaLogPageSo) { - return this.baseMapper.queryPage(rotaLogPageSo.getPageSo().toPage(),rotaLogPageSo); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/RotaService.java b/src/main/java/com/gunshi/project/hsz/service/RotaService.java deleted file mode 100644 index 9b63d66..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/RotaService.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.core.dateformat.DateFormatString; -import com.gunshi.project.hsz.entity.dto.RotaDto; -import com.gunshi.project.hsz.entity.dto.RotaUserDto; -import com.gunshi.project.hsz.entity.vo.RotaVo; -import com.gunshi.project.hsz.mapper.RotaBMapper; -import com.gunshi.project.hsz.model.RotaB; -import com.gunshi.project.hsz.util.DateUtil; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * Description: - * Created by wanyan on 2024/3/25 - * - * @author wanyan - * @version 1.0 - */ -@Service -@Transactional(rollbackFor = Exception.class) -public class RotaService extends ServiceImpl { - - - public Map> query(String yearMonth) { - List list = this.baseMapper.query(yearMonth); - return list.stream().collect(Collectors.groupingBy(rota -> new SimpleDateFormat(DateFormatString.YYYY_MM_DD).format(rota.getRotaDate()))); - } - - public String editInfo(RotaDto RotaDto) { - Date rotaDate = RotaDto.getRotaDate(); - //先删除该日期的所有信息 - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(RotaB::getRotaDate,rotaDate); - this.remove(queryWrapper); - if(RotaDto.getIsHoliday() != null && RotaDto.getIsHoliday() == 1){ - RotaB rotaB = new RotaB(); - BeanUtils.copyProperties(RotaDto,rotaB,RotaB.class); - rotaB.setId(IdWorker.getId()); - this.save(rotaB); - return "设为放假日成功"; - } - List userDtoList = RotaDto.getUserDtoList(); - List list = userDtoList.stream().map(o -> { - RotaB rotaB = new RotaB(); - rotaB.setId(IdWorker.getId()); - rotaB.setRotaDate(rotaDate); - rotaB.setIsHoliday(0); - rotaB.setRotaType(o.getRotaType()); - rotaB.setUserId(o.getUserId()); - return rotaB; - }).collect(Collectors.toList()); - this.saveBatch(list); - return "设置值班信息成功"; - } - - public List dateList(String rotaDate) { - return this.baseMapper.dateList(rotaDate); - } - - public Long checkPhone(String value){ - return this.baseMapper.queryUser(value); - } - - public void saveImportData(ArrayList successArrayList) { - List list = new ArrayList<>(); - for(RotaVo vo : successArrayList){ - Date stm = vo.getStm(); - Date etm = vo.getEtm(); - List dates = DateUtil.getDatesBetween(stm, etm); - dates.stream().forEach(str->{ - RotaB rotaB = new RotaB(); - rotaB.setId(IdWorker.getId()); - rotaB.setRotaDate(str); - rotaB.setIsHoliday(0); - rotaB.setRotaType(1); - rotaB.setUserId(vo.getLeaderUserId()); - list.add(rotaB); - - RotaB rota = new RotaB(); - rota.setId(IdWorker.getId()); - rota.setRotaDate(str); - rota.setIsHoliday(0); - rota.setRotaType(2); - rota.setUserId(vo.getDutyUserId()); - list.add(rota); - }); - } - this.saveOrUpdateBatch(list); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/SafetyAccidentRegService.java b/src/main/java/com/gunshi/project/hsz/service/SafetyAccidentRegService.java deleted file mode 100644 index 79a07d3..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SafetyAccidentRegService.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.so.CommonDataPageSo2; -import com.gunshi.project.hsz.mapper.SafetyAccidentRegMapper; -import com.gunshi.project.hsz.model.SafetyAccidentReg; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 安全事故登记 - * author: xusan - * date: 2024-08-21 15:44:55 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SafetyAccidentRegService extends ServiceImpl -{ - @Autowired - private FileAssociationsService fileService; - - public Page pageQuery(CommonDataPageSo2 page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getName())) { - query.like(SafetyAccidentReg::getName, page.getName()); - } - if (page.getDateSo() != null && page.getDateSo().getStart() != null) { - query.ge(SafetyAccidentReg::getAccidentDate, page.getDateSo().getStart()); - } - if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { - query.le(SafetyAccidentReg::getAccidentDate, page.getDateSo().getEnd()); - } - query.orderByDesc(SafetyAccidentReg::getAccidentDate); - Page res = this.page(page.getPageSo().toPage(), query); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - } - return res; - } - - private void fillAttach(List ret) { - for (SafetyAccidentReg record : ret) { - record.setAccidentPic(fileService.queryFileList(record.getId().toString(),getGroupId(),getPicType())); - record.setAccidentHandle(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandleType())); - } - } - - public String getGroupId() { - return "safetyAccidentReg"; - } - - public SafetyAccidentReg saveData(SafetyAccidentReg dto) { - dto.setId(IdWorker.getId()); - boolean result = this.save(dto); - if (result) { - fileService.save(dto.getAccidentPic(), dto.getId().toString(), getGroupId(),getPicType()); - fileService.save(dto.getAccidentHandle(), dto.getId().toString(), getGroupId(),getHandleType()); - } - return dto; - } - - private String getHandleType() { - return "accidentHandle"; - } - - private String getPicType() { - return "accidentPic"; - } - - public SafetyAccidentReg updateData(SafetyAccidentReg dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.removeByBzIdAndType(dto.getId().toString(),getGroupId(),getPicType()); - fileService.save(dto.getAccidentPic(), dto.getId().toString(), getGroupId(),getPicType()); - fileService.removeByBzIdAndType(dto.getId().toString(),getGroupId(),getHandleType()); - fileService.save(dto.getAccidentHandle(), dto.getId().toString(), getGroupId(),getHandleType()); - } - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return data; - } - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/SafetyCheckService.java b/src/main/java/com/gunshi/project/hsz/service/SafetyCheckService.java deleted file mode 100644 index 11e8033..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SafetyCheckService.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.so.CommonDataPageSo; -import com.gunshi.project.hsz.mapper.SafetyCheckMapper; -import com.gunshi.project.hsz.model.SafetyCheck; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 安全检查管理 - * author: wanyan - * date: 2024-08-21 10:40:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SafetyCheckService extends ServiceImpl { - - @Autowired - private FileAssociationsService fileService; - - public Page pageQuery(CommonDataPageSo page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getName())) { - query.like(SafetyCheck::getName, page.getName()); - } - if (page.getDateSo() != null && page.getDateSo().getStart() != null) { - query.ge(SafetyCheck::getCheckDate, page.getDateSo().getStart()); - } - if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { - query.le(SafetyCheck::getCheckDate, page.getDateSo().getEnd()); - } - query.orderByDesc(SafetyCheck::getCheckDate); - Page res = this.page(page.getPageSo().toPage(), query); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - } - return res; - } - - private void fillAttach(List ret) { - for (SafetyCheck record : ret) { - record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); - } - } - - public String getGroupId() { - return "safetyCheck"; - } - - public SafetyCheck saveData(SafetyCheck dto) { - dto.setId(IdWorker.getId()); - boolean result = this.save(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public SafetyCheck updateData(SafetyCheck dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return data; - } - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/SafetyHazardInvestService.java b/src/main/java/com/gunshi/project/hsz/service/SafetyHazardInvestService.java deleted file mode 100644 index ad1079c..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SafetyHazardInvestService.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -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.gunshi.project.hsz.entity.so.CommonDataPageSo; -import com.gunshi.project.hsz.mapper.SafetyHazardInvestMapper; -import com.gunshi.project.hsz.model.SafetyHazardInvest; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 安全隐患排查 - * author: wanyan - * date: 2024-08-21 10:40:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SafetyHazardInvestService extends ServiceImpl { - - @Autowired - private FileAssociationsService fileService; - - public Page pageQuery(CommonDataPageSo page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if (ObjectUtils.isNotNull(page.getName())) { - query.like(SafetyHazardInvest::getHazardDesc, page.getName()); - } - if (page.getDateSo() != null && page.getDateSo().getStart() != null) { - query.ge(SafetyHazardInvest::getHazardDate, page.getDateSo().getStart()); - } - if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { - query.le(SafetyHazardInvest::getHazardDate, page.getDateSo().getEnd()); - } - query.orderByDesc(SafetyHazardInvest::getHazardDate); - Page res = this.page(page.getPageSo().toPage(), query); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - } - return res; - } - - private void fillAttach(List ret) { - for (SafetyHazardInvest record : ret) { - record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); - } - } - - public String getGroupId() { - return "safetyHazardInvest"; - } - - public SafetyHazardInvest saveData(SafetyHazardInvest dto) { - dto.setId(IdWorker.getId()); - boolean result = this.save(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public SafetyHazardInvest updateData(SafetyHazardInvest dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return data; - } - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/SafetyIdentifyService.java b/src/main/java/com/gunshi/project/hsz/service/SafetyIdentifyService.java deleted file mode 100644 index bc6989e..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SafetyIdentifyService.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -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.gunshi.db.dto.PageSo; -import com.gunshi.project.hsz.mapper.SafetyIdentifyMapper; -import com.gunshi.project.hsz.model.SafetyIdentify; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 安全鉴定台账 - * author: xusan - * date: 2024-08-21 14:45:44 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SafetyIdentifyService extends ServiceImpl -{ - - @Autowired - private FileAssociationsService fileService; - - public Page pageQuery(PageSo page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - query.orderByDesc(SafetyIdentify::getIdentifyDate); - Page res = this.page(page.toPage(), query); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - } - return res; - } - - private void fillAttach(List ret) { - for (SafetyIdentify record : ret) { - record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); - } - } - - public String getGroupId() { - return "safetyIdentify"; - } - - public SafetyIdentify saveData(SafetyIdentify dto) { - dto.setId(IdWorker.getId()); - boolean result = this.save(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public SafetyIdentify updateData(SafetyIdentify dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return data; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/SafetyReinforcementService.java b/src/main/java/com/gunshi/project/hsz/service/SafetyReinforcementService.java deleted file mode 100644 index 03f2956..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SafetyReinforcementService.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -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.gunshi.db.dto.PageSo; -import com.gunshi.project.hsz.mapper.SafetyReinforcementMapper; -import com.gunshi.project.hsz.model.SafetyReinforcement; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; -import java.util.Objects; - -/** - * 描述: 除险加固台账 - * author: xusan - * date: 2024-08-22 11:27:44 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SafetyReinforcementService extends ServiceImpl -{ - - @Autowired - private FileAssociationsService fileService; - - public Page pageQuery(PageSo page) { - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - query.orderByDesc(SafetyReinforcement::getStartDate); - Page res = this.page(page.toPage(), query); - if (res.getRecords() != null) { - fillAttach(res.getRecords()); - } - return res; - } - - private void fillAttach(List ret) { - for (SafetyReinforcement record : ret) { - record.setFiles(fileService.getFiles(getGroupId(), record.getId().toString())); - } - } - - public String getGroupId() { - return "safetyReinforcement"; - } - - public SafetyReinforcement saveData(SafetyReinforcement dto) { - dto.setId(IdWorker.getId()); - boolean result = this.save(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return dto; - } - - public SafetyReinforcement updateData(SafetyReinforcement dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); - } - return dto; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return data; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/ShpPlacementService.java b/src/main/java/com/gunshi/project/hsz/service/ShpPlacementService.java deleted file mode 100644 index 862d0ca..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/ShpPlacementService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.HomeShpPlacementVo; -import com.gunshi.project.hsz.mapper.ShpPlacementMapper; -import com.gunshi.project.hsz.model.ShpPlacement; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 安置点 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class ShpPlacementService extends ServiceImpl -{ - - public List getDetailsAndMonitoringDataLis() { - return baseMapper.getDetailsAndMonitoringDataList(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/SoilMoistureDataService.java b/src/main/java/com/gunshi/project/hsz/service/SoilMoistureDataService.java deleted file mode 100644 index 2729b06..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SoilMoistureDataService.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.gunshi.project.hsz.entity.so.SoilMoisturePageSo; -import com.gunshi.project.hsz.entity.vo.SoilMoistureVO; -import com.gunshi.project.hsz.mapper.SoilMoistureDataMapper; -import com.gunshi.project.hsz.model.SoilMoistureData; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.time.DayOfWeek; -import java.time.LocalDate; -import java.time.temporal.TemporalAdjusters; -import java.util.Objects; - -/** - * - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SoilMoistureDataService extends ServiceImpl { - - public Page pageQuery(SoilMoisturePageSo page) { - page.getPageSo().setPageSize(10000); - LambdaQueryWrapper query = Wrappers.lambdaQuery(); - if(StringUtils.isNotBlank(page.getStcd())){ - query.eq(SoilMoistureData::getStcd,page.getStcd()); - } - if(Objects.nonNull(page.getDateRangeSo())){ - if(Objects.nonNull(page.getDateRangeSo().getStart())){ - query.ge(SoilMoistureData::getCreateTime, page.getDateRangeSo().getStart()); - } - if(Objects.nonNull(page.getDateRangeSo().getEnd())){ - query.le(SoilMoistureData::getCreateTime, page.getDateRangeSo().getEnd()); - } - } - query.orderByDesc(SoilMoistureData::getCreateTime); - Page res = this.page(page.getPageSo().toPage(), query); - return res; - } - - public SoilMoistureVO count(String stcd) { - SoilMoistureVO vo = new SoilMoistureVO(); - vo.setStcd(stcd); - LocalDate today = LocalDate.now(); - - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(SoilMoistureData::getStcd,stcd).orderByDesc(SoilMoistureData::getCreateTime).last(" limit 1"); - SoilMoistureData max = baseMapper.selectOne(qw); - SoilMoistureData min = new SoilMoistureData(); - vo.setCreateTime(max.getCreateTime()); - vo.setCurrVal(Objects.nonNull(max)? max.getVal(): null); - - max = findMaxByRang(today, today.minusWeeks(1), stcd); - min = findMinByRang(today, today.minusWeeks(1), stcd); - vo.setNearWeekValMax(Objects.nonNull(max)? max.getVal(): null); - vo.setNearWeekValMin(Objects.nonNull(min)? min.getVal(): null); - - max = findMaxByRang(today, today.minusMonths(1), stcd); - min = findMinByRang(today, today.minusMonths(1), stcd); - vo.setNearMonthValMax(Objects.nonNull(max)? max.getVal(): null); - vo.setNearMonthValMin(Objects.nonNull(min)? min.getVal(): null); - - max = findMaxByRang(today, today.minusMonths(3), stcd); - min = findMinByRang(today, today.minusMonths(3), stcd); - vo.setNearThreeMonthValMax(Objects.nonNull(max)? max.getVal(): null); - vo.setNearThreeMonthValMin(Objects.nonNull(min)? min.getVal(): null); - - max = findMaxByRang(today, today.minusMonths(6), stcd); - min = findMinByRang(today, today.minusMonths(6), stcd); - vo.setNearSixMonthValMax(Objects.nonNull(max)? max.getVal(): null); - vo.setNearSixMonthValMin(Objects.nonNull(min)? min.getVal(): null); - - max = findMaxByRang(today, today.minusYears(1), stcd); - min = findMinByRang(today, today.minusYears(1), stcd); - vo.setNearYearValMax(Objects.nonNull(max)? max.getVal(): null); - vo.setNearYearValMin(Objects.nonNull(min)? min.getVal(): null); - - max = findMaxByRang(today, today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)), stcd); - min = findMinByRang(today, today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)), stcd); - vo.setCurrWeekValMax(Objects.nonNull(max)? max.getVal(): null); - vo.setCurrWeekValMin(Objects.nonNull(min)? min.getVal(): null); - - max = findMaxByRang(today, today.withDayOfMonth(1), stcd); - min = findMinByRang(today, today.withDayOfMonth(1), stcd); - vo.setCurrMonthValMax(Objects.nonNull(max)? max.getVal(): null); - vo.setCurrMonthValMin(Objects.nonNull(min)? min.getVal(): null); - - max = findMaxByRang(today, today.withDayOfYear(1), stcd); - min = findMinByRang(today, today.withDayOfYear(1), stcd); - vo.setCurrYearValMax(Objects.nonNull(max)? max.getVal(): null); - vo.setCurrYearValMin(Objects.nonNull(min)? min.getVal(): null); - return vo; - } - - public SoilMoistureData findMaxByRang(LocalDate now, LocalDate startDate, String stcd){ - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(SoilMoistureData::getStcd,stcd); - qw.le(SoilMoistureData::getCreateTime,now); - qw.ge(SoilMoistureData::getCreateTime,startDate).orderByDesc(SoilMoistureData::getVal).last(" limit 1"); - return baseMapper.selectOne(qw); - } - - public SoilMoistureData findMinByRang(LocalDate now, LocalDate startDate, String stcd){ - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(SoilMoistureData::getStcd,stcd); - qw.le(SoilMoistureData::getCreateTime,now); - qw.ge(SoilMoistureData::getCreateTime,startDate).orderByAsc(SoilMoistureData::getVal).last(" limit 1"); - return baseMapper.selectOne(qw); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/SoilMoistureStationService.java b/src/main/java/com/gunshi/project/hsz/service/SoilMoistureStationService.java deleted file mode 100644 index 6fcb794..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SoilMoistureStationService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.SoilMoistureStationMapper; -import com.gunshi.project.hsz.model.SoilMoistureStation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: APP版本记录 - * author: xusan - * date: 2024-11-12 10:14:50 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SoilMoistureStationService extends ServiceImpl { - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StAddvcdDService.java b/src/main/java/com/gunshi/project/hsz/service/StAddvcdDService.java deleted file mode 100644 index 6b098c2..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StAddvcdDService.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.StAddvcdTreeVo; -import com.gunshi.project.hsz.mapper.StAddvcdDMapper; -import com.gunshi.project.hsz.model.StAddvcdD; -import com.gunshi.project.hsz.util.MyBeanUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.List; - -/** - * 描述: 行政区划表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StAddvcdDService extends ServiceImpl -{ - - public List tree(String level) { - List treeList = new ArrayList<>(); - //根据adcd模糊查询得到所有的行政区划 - List list = this.baseMapper.selectList(new LambdaQueryWrapper<>()); - List totalList = MyBeanUtil.collectionCopy(list, StAddvcdTreeVo.class); - //根据adcd查询行政区划信息 - StAddvcdD stAddvcdD = this.baseMapper.selectByAdcd("421181000000000"); - StAddvcdTreeVo stAddvcdTreeVo = new StAddvcdTreeVo(); - BeanUtils.copyProperties(stAddvcdD, stAddvcdTreeVo); - if ("1".equals(level)) { - treeList.add(stAddvcdTreeVo); - //当下拉深度为2时 - } else if ("2".equals(level)) { - List towns = new ArrayList<>(); - //遍历所有的行政区划 - for (StAddvcdTreeVo total : totalList) { - //后6位都是0并且6到9位不是0时为乡镇 - if ("000000".equals(total.getAdcd().substring(9)) && !"000".equals(total.getAdcd().substring(6, 9))) { - towns.add(total); - } - } - stAddvcdTreeVo.setChildren(towns); - treeList.add(stAddvcdTreeVo); - //当下拉深度为3时 - }else if("3".equals(level)){ - List towns = new ArrayList<>(); - //遍历所有的行政区划 - for (StAddvcdTreeVo total : totalList) { - //后6位都是0并且6到9位不是0时为乡镇 - if ("000000".equals(total.getAdcd().substring(9)) && !"000".equals(total.getAdcd().substring(6, 9))) { - towns.add(total); - } - } - //遍历镇 - for (StAddvcdTreeVo town : towns) { - List administrativeVillageList = new ArrayList<>(); - //遍历所有的行政区划 - for (StAddvcdTreeVo total : totalList) { - //当行政区划前9位相同并且后3位都为0并且9到12不为0时为同一乡镇下的行政村 - if (town.getAdcd().substring(0, 9).equals(total.getAdcd().substring(0, 9)) && "000".equals(total.getAdcd().substring(12)) && !"000".equals(total.getAdcd().substring(9, 12))) { - administrativeVillageList.add(total); - } - } - town.setChildren(administrativeVillageList); - } - stAddvcdTreeVo.setChildren(towns); - treeList.add(stAddvcdTreeVo); - }else{ - List towns = new ArrayList<>(); - //遍历所有的行政区划 - for (StAddvcdTreeVo total : totalList) { - //后6位都是0并且6到9位不是0时为乡镇 - if ("000000".equals(total.getAdcd().substring(9)) && !"000".equals(total.getAdcd().substring(6, 9))) { - towns.add(total); - } - } - //遍历镇 - for (StAddvcdTreeVo town : towns) { - List administrativeVillageList = new ArrayList<>(); - //遍历所有的行政区划 - for (StAddvcdTreeVo total : totalList) { - //当行政区划前9位相同并且后3位都为0并且9到12不为0时为同一乡镇下的行政村 - if (town.getAdcd().substring(0, 9).equals(total.getAdcd().substring(0, 9)) && "000".equals(total.getAdcd().substring(12)) && !"000".equals(total.getAdcd().substring(9, 12))) { - administrativeVillageList.add(total); - } - } - //遍历行政村 - for (StAddvcdTreeVo administrativeVillage : administrativeVillageList) { - List naturalVillages = new ArrayList<>(); - //遍历所有的行政区划 - for (StAddvcdTreeVo total : totalList) { - //行政区划前12为相同并且后3位不为0时为同一行政村下的自然组 - if (total.getAdcd().substring(0, 12).equals(administrativeVillage.getAdcd().substring(0, 12)) && !"000".equals(total.getAdcd().substring(12))) { - naturalVillages.add(total); - } - } - administrativeVillage.setChildren(naturalVillages); - } - town.setChildren(administrativeVillageList); - } - stAddvcdTreeVo.setChildren(towns); - treeList.add(stAddvcdTreeVo); - } - return treeList; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StEvpoService.java b/src/main/java/com/gunshi/project/hsz/service/StEvpoService.java deleted file mode 100644 index 96a8f32..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StEvpoService.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.ExcelWriter; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StEvpoMapper; -import com.gunshi.project.hsz.model.StEvpo; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.IOException; -import java.net.URLEncoder; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StEvpoService extends ServiceImpl { - public void export(HttpServletResponse response) { - List list = this.lambdaQuery().orderByAsc(StEvpo::getMonth).list(); - list.stream().forEach(o ->{ - o.setEvaporation(o.getEvaporation().setScale(2)); - }); - // 通过工具类创建writer - ExcelWriter writer = ExcelUtil.getWriter(); - - // 自定义标题别名(只包含需要导出的字段) - writer.addHeaderAlias("month", "月份"); - writer.addHeaderAlias("evaporation", "日蒸发量(万m³)"); - - // 只写出设置了别名的字段,默认写出所有字段 - writer.setOnlyAlias(true); - - // 一次性写出内容,使用默认样式 - writer.write(list, true); - - // 设置响应内容类型 - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); - - try { - // 设置响应头信息 - String fileName = URLEncoder.encode("蒸发量数据", "UTF-8"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); - - // 将writer对象刷新到响应输出流中 - writer.flush(response.getOutputStream(), true); - } catch (IOException e) { - e.printStackTrace(); - } finally { - // 关闭writer,释放内存 - writer.close(); - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/StFlowRService.java b/src/main/java/com/gunshi/project/hsz/service/StFlowRService.java deleted file mode 100644 index 1e5be69..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StFlowRService.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StFlowRMapper; -import com.gunshi.project.hsz.common.model.StFlowR; -import com.gunshi.project.hsz.entity.vo.StFlowRVo; -import com.gunshi.project.hsz.mapper.StFlowRVoMapper; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StFlowRService extends ServiceImpl { - - @Autowired - private StFlowRVoMapper voMapper; - - public StFlowR getNewDataByStcd(String stcd) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StFlowR::getStcd, stcd); - queryWrapper.orderByDesc(StFlowR::getTm); - queryWrapper.last("limit 1"); - return baseMapper.selectOne(queryWrapper); - } - - public List listNewData() { - return this.baseMapper.listNewData(); - } - - public List getStcdList() { - return voMapper.listStcds(); - } - - public List getDataByStcdAndTm(String stcd, Date tm) { - return voMapper.getDataByStcdAndTm(stcd, tm); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/StImgRRealService.java b/src/main/java/com/gunshi/project/hsz/service/StImgRRealService.java deleted file mode 100644 index c57d4d0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StImgRRealService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StImgRRealMapper; -import com.gunshi.project.hsz.model.StImgRReal; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 图像表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StImgRRealService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StImgRService.java b/src/main/java/com/gunshi/project/hsz/service/StImgRService.java deleted file mode 100644 index 871421f..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StImgRService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.service; - -import java.util.List; - -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StImgRMapper; -import com.gunshi.project.hsz.model.StImgR; - -import lombok.extern.slf4j.Slf4j; - -/** - * 描述: 图像历史表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StImgRService extends ServiceImpl -{ - - public List getStcdLastImgData() { - return baseMapper.getStcdLastImgData(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StImgWarnRService.java b/src/main/java/com/gunshi/project/hsz/service/StImgWarnRService.java deleted file mode 100644 index 9ba42fa..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StImgWarnRService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.ImgWarnPageSo; -import com.gunshi.project.hsz.mapper.StImgWarnRMapper; -import com.gunshi.project.hsz.model.StImgWarnR; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: AI告警表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StImgWarnRService extends ServiceImpl -{ - - public Page pageQuery(ImgWarnPageSo imgWarnPageSo) { - return this.baseMapper.pageQuery(imgWarnPageSo.getPageSo().toPage(),imgWarnPageSo); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StPptnRDService.java b/src/main/java/com/gunshi/project/hsz/service/StPptnRDService.java deleted file mode 100644 index 6d7bf6c..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StPptnRDService.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StPptnRDMapper; -import com.gunshi.project.hsz.model.StPptnRD; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StPptnRDService extends ServiceImpl -{ - - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - - @Autowired - private StPptnRService stPptnRService; - - public List getStcdLastPptnDayData() { - return baseMapper.getStcdLastPptnDayData(); - } - - - public void reorganizeStPptnRD(List stcdList, String startDateStr) { - List dList = new ArrayList<>(); - try { - for (String stcd : stcdList) { - List> pptnRDataList = stPptnRService.getPptnRDataList(stcd, startDateStr); - Map pptnrMap = pptnRDataList.stream().collect(Collectors.toMap(map -> (String) map.get("tm"), map -> map.get("drp"))); - for (int i = pptnRDataList.size() - 1; i >= 0; i--) { - Map stringObjectMap = pptnRDataList.get(i); - String tm = stringObjectMap.get("tm").toString(); - Date nowTm = sdf.parse(tm); - String drp = stringObjectMap.get("drp").toString(); - StPptnRD stPptnRD = new StPptnRD(); - stPptnRD.setStcd(stcd); - stPptnRD.setTm(nowTm); - stPptnRD.setDrp(new BigDecimal(drp)); - stPptnRD.setYear(Integer.parseInt(tm.substring(0, 4))); - Calendar calendar = Calendar.getInstance(); - // 当前时间往前推一天,查看是否是降雨 - calendar.setTime(nowTm); - calendar.add(Calendar.DAY_OF_MONTH, -1); - // 如果昨天存在数据 - String lastTm = sdf.format(calendar.getTime()); - if (pptnrMap.containsKey(lastTm)) { - String lastDrp = pptnrMap.get(lastTm).toString(); - String lastDayIsdrp = BigDecimal.ZERO.compareTo(new BigDecimal(lastDrp)) == 0 ? "0" : "1"; - stPptnRD.setLastDayIsdrp(lastDayIsdrp); - // 已经往前推过一天了,从1开始 - int j = 1; - Boolean isContinue = true; - // 一直往前推 - while (isContinue){ - calendar.add(Calendar.DAY_OF_MONTH, -1); - String lastContinueTm = sdf.format(calendar.getTime()); - if(!pptnrMap.containsKey(lastContinueTm)){ - isContinue = false; - } else { - String beforeDrp = pptnrMap.get(lastContinueTm).toString(); - if (("0".equals(lastDayIsdrp) && BigDecimal.ZERO.compareTo(new BigDecimal(beforeDrp)) == 0) || ("1".equals(lastDayIsdrp) && BigDecimal.ZERO.compareTo(new BigDecimal(beforeDrp)) != 0)) { - j++; - } else { - isContinue = false; - } - } - } - stPptnRD.setIsdrpCount(j); - } else { - stPptnRD.setLastDayIsdrp("2"); - stPptnRD.setIsdrpCount(0); - } - dList.add(stPptnRD); - } - } - } catch (ParseException e) { - throw new RuntimeException(e); - } - saveBatch(dList); - } - - public StPptnRD getMaxData(String stcd) { - return baseMapper.getMaxData(stcd); - } - - public List reorganizePptnRDData(String stcd, StPptnRD maxData) { - return baseMapper.reorganizePptnRDData(stcd, maxData); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StPptnRHService.java b/src/main/java/com/gunshi/project/hsz/service/StPptnRHService.java deleted file mode 100644 index dec2e86..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StPptnRHService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StPptnRHMapper; -import com.gunshi.project.hsz.model.StPptnRH; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 描述: 降雨量小时表 - * author: cxw - * date: 2024-09-02 09:34:31 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StPptnRHService extends ServiceImpl -{ - - public List reorganizePptnRHData(String stcd, StPptnRH maxData) { - return baseMapper.reorganizePptnRHData(stcd, maxData); - } - - public StPptnRH getMaxData(String stcd) { - return baseMapper.getMaxData(stcd); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StPptnRRealService.java b/src/main/java/com/gunshi/project/hsz/service/StPptnRRealService.java deleted file mode 100644 index 90ec81a..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StPptnRRealService.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StPptnRRealMapper; -import com.gunshi.project.hsz.common.model.StPptnRReal; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -/** - * 描述: 降水量历史表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StPptnRRealService extends ServiceImpl -{ - - public int updatePptnRReal(String stcd) { - return baseMapper.updatePptnRReal(stcd); - } - - public List queryList() { - List stPptnRReals = this.baseMapper.queryList(); - - if(!stPptnRReals.isEmpty()){ - Calendar now = Calendar.getInstance(); - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - now.set(Calendar.MILLISECOND, 0); - Date currentHour = now.getTime(); - for (StPptnRReal stPptnRReal : stPptnRReals) { - Date tm = stPptnRReal.getTm(); - if(tm != null && tm.before(currentHour)){ - stPptnRReal.setH1(null); - stPptnRReal.setH3(null); - stPptnRReal.setH6(null); - stPptnRReal.setH12(null); - stPptnRReal.setH24(null); - } - } - } - return stPptnRReals; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StPptnRService.java b/src/main/java/com/gunshi/project/hsz/service/StPptnRService.java deleted file mode 100644 index 7cc54e2..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StPptnRService.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.gunshi.project.hsz.service; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StPptnRMapper; -import com.gunshi.project.hsz.common.model.StPptnR; - -import lombok.extern.slf4j.Slf4j; - -/** - * 描述: 降水量表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StPptnRService extends ServiceImpl -{ - - public List getStcdLastPptnData() { - return baseMapper.getStcdLastPptnData(); - } - - public List> getPptnRDataList(String stcd, String tm) { - return baseMapper.getPptnRDataList(stcd, tm); - } - - public List> getPptnRDataListByTask(String resCode, String stcd, String tm) { - return baseMapper.getPptnRDataListByTask(resCode, stcd, tm); - } - - public List getStcdFirstPptnData() { - return baseMapper.getStcdFirstPptnData(); - } - - public List getNewestDataOfEachStcd() { - return baseMapper.getNewestDataOfEachStcd(); - } - - /** - * 根据stcd查询24小时总降水量 - */ - public BigDecimal getdrp24SumByStcd(String stcd) { - return baseMapper.getdrp24SumByStcd(stcd); - } - - /** - * 根据stcd查询24小时内最大降水量 - */ - public StPptnR getdrp24MaxByStcd(String stcd) { - return baseMapper.getdrp24MaxByStcd(stcd); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StQxWarnRService.java b/src/main/java/com/gunshi/project/hsz/service/StQxWarnRService.java deleted file mode 100644 index 1d5d6e0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StQxWarnRService.java +++ /dev/null @@ -1,312 +0,0 @@ -package com.gunshi.project.hsz.service; - -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.common.model.StRiverR; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.mapper.AttCctvBaseMapper; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.mapper.StQxWarnRMapper; -import com.gunshi.project.hsz.model.*; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.compress.utils.Lists; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.util.EntityUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 气象预警表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StQxWarnRService extends ServiceImpl { - - @Value("${shqxjsWarnPath}") - private String shqxjsWarnPath; - - @Resource - private StImgWarnRService imgWarnRService; - - @Resource - private AttResBaseMapper attResBaseMapper; - - @Resource - private StRsvrRRealService stRsvrRRealService; - - @Resource - private AlarmSetService alarmSetService; - - @Resource - private StRiverRRealService stRiverRRealService; - - - @Resource - private StRiverRService stRiverRService; - - @Autowired - private ISCAIEventService iscaiEventService; - - @Resource - private JcskByRService jcskByRService; - - @Resource - private AttCctvBaseService attCctvBaseService; - - public HomeWarnVo homeWarn(DateTimeRangeSo dateTimeRangeSo) { - HomeWarnVo vo = new HomeWarnVo(); - - List attResBaseVos = attResBaseMapper.queryList2(); - - Map> skWarningVoMap = new HashMap<>(); - //超校核水位 - List cals = new ArrayList<>(); - //超设计水位 - List des = new ArrayList<>(); - //超汛限水位 - List fl = new ArrayList<>(); - for (AttResBaseVo attResBaseVo : attResBaseVos) { - Date tm = attResBaseVo.getTm(); - if(tm == null){ - continue; - } - //水位的最新采集时间不在24小时内 - if (tm.before(dateTimeRangeSo.getStart())) { - continue; - }else{ - BigDecimal rz = attResBaseVo.getRz(); - if(rz == null){ - continue; - } - SKWarningVo skWarningVo = new SKWarningVo(); - skWarningVo.setLttd(attResBaseVo.getLttd()); - skWarningVo.setLgtd(attResBaseVo.getLgtd()); - skWarningVo.setStnm(attResBaseVo.getStnm()); - skWarningVo.setStcd(attResBaseVo.getStcd()); - if (attResBaseVo.getCalState() == 1) { - BigDecimal aboveCal = rz.subtract(attResBaseVo.getCalFloodLev()); - skWarningVo.setRzWarn(rz + "(" + aboveCal.setScale(2, RoundingMode.HALF_EVEN) + ")" ); - cals.add(skWarningVo); - } else if (attResBaseVo.getDesState() == 1) { - BigDecimal aboveDes = rz.subtract(attResBaseVo.getDesFloodLev()); - skWarningVo.setRzWarn(rz + "(" + aboveDes.setScale(2, RoundingMode.HALF_EVEN) + ")" ); - des.add(skWarningVo); - } else if (attResBaseVo.getFlState() == 1) { - BigDecimal aboveFl = attResBaseVo.getAFsltdz().setScale(2, RoundingMode.HALF_UP); - skWarningVo.setRzWarn(rz + "(" + aboveFl.setScale(2, RoundingMode.HALF_UP) + ")" ); - fl.add(skWarningVo); - } - } - } - skWarningVoMap.put("calState", cals); - skWarningVoMap.put("desState",des); - skWarningVoMap.put("flState",fl); - vo.setSkWarningVoMap(skWarningVoMap); - List warnVos = baseMapper.queryOsmoticWarn(dateTimeRangeSo); - List pressWarn = warnVos.stream().filter(o -> o.getType() == 1).collect(Collectors.toList()); - pressWarn.stream().forEach(o ->{ - if(o.getLevel() != null){ - if(o.getLevel() == 1){ - o.setWarnLevel("黄色"); - }else{ - o.setWarnLevel("红色"); - } - } - }); - List flowWarn = warnVos.stream().filter(o -> o.getType() == 2).collect(Collectors.toList()); - flowWarn.stream().forEach(o->{ - if(o.getLevel() != null){ - if(o.getLevel() == 1){ - o.setWarnLevel("黄色"); - }else{ - o.setWarnLevel("红色"); - } - } - }); - List shiftWarn = warnVos.stream().filter(o -> o.getType() == 3).collect(Collectors.toList()); - shiftWarn.stream().forEach(o ->{ - if(o.getLevel() != null){ - if(o.getLevel() == 1){ - o.setWarnLevel("黄色"); - }else{ - o.setWarnLevel("红色"); - } - } - }); - Map> osmoticWarnMaps = new HashMap<>(); - osmoticWarnMaps.put("pressWarn",pressWarn); - osmoticWarnMaps.put("flowWarn",flowWarn); - osmoticWarnMaps.put("shiftWarn",shiftWarn); - vo.setOsmoticWarnVoMap(osmoticWarnMaps); - List iscaiEvents = iscaiEventService.lambdaQuery() - .ge(ISCAIEvent::getStartTime, dateTimeRangeSo.getStart()) - .le(ISCAIEvent::getStartTime, dateTimeRangeSo.getEnd()).orderByDesc(ISCAIEvent::getStartTime).list(); - List distinctResNames = iscaiEvents.stream() - .map(ISCAIEvent::getEventTypeName) - .filter(Objects::nonNull) // 过滤null值 - .distinct() // 去重 - .collect(Collectors.toList()); - Map> aiWarnVoMap = new HashMap<>(); - distinctResNames.forEach(resName -> { - aiWarnVoMap.put(resName, new ArrayList<>()); - }); - for (ISCAIEvent iscaiEvent : iscaiEvents) { - if(aiWarnVoMap.containsKey(iscaiEvent.getEventTypeName())){ - List aiWarningVos = aiWarnVoMap.get(iscaiEvent.getEventTypeName()); - List list = attCctvBaseService.lambdaQuery().eq(AttCctvBase::getIndexCode, iscaiEvent.getResIndexCode()).list(); - for (AttCctvBase attCctvBase : list) { - AiWarningVo aiWarningVo = new AiWarningVo(); - aiWarningVo.setWarningTime(iscaiEvent.getStartTime()); - aiWarningVo.setStnm(attCctvBase.getName()); - if(attCctvBase.getLgtd() !=null){ - aiWarningVo.setLgtd(new BigDecimal(attCctvBase.getLgtd())); - } - if(attCctvBase.getLttd() != null){ - aiWarningVo.setLttd(new BigDecimal(attCctvBase.getLttd())); - } - aiWarningVos.add(aiWarningVo); - - } - } - } - vo.setAiWarnVoMap(aiWarnVoMap); - Map> riverWarningVoMap = new HashMap<>(); - List overWarn = new ArrayList<>(); - List overPmis = new ArrayList<>(); - //TODO 超河道上游 - String upperStcd = "999999999";//固定的站点编码 - setUpAndDownOverRvUpAndDown(upperStcd,dateTimeRangeSo,overWarn,overPmis); - - //TODO 超河道下游 - String lowerStcd = "999999998";//固定的站点编码 - setUpAndDownOverRvUpAndDown(lowerStcd,dateTimeRangeSo,overWarn,overPmis); - riverWarningVoMap.put("overWarn",overWarn); - riverWarningVoMap.put("overPromise",overPmis); - vo.setRiverWarningVoMap(riverWarningVoMap); - return vo; - } - - private void setUpAndDownOverRvUpAndDown(String stcd, DateTimeRangeSo dateTimeRangeSo, List overWarn, List overPmis){ - StRiverR stRiverR = stRiverRService.getBaseMapper().queryByOneByTimeRange(stcd,dateTimeRangeSo); - RiverWarningVo riverWarningVo = new RiverWarningVo(); - if(stRiverR != null){ - riverWarningVo.setStcd(stcd); - riverWarningVo.setStnm(stRiverR.getStnm()); - riverWarningVo.setLgtd(stRiverR.getLgtd()); - riverWarningVo.setLgtd(stRiverR.getLgtd()); - AlarmSet alarmSet = alarmSetService.getBaseMapper().queryByStcd(stcd); - if(alarmSet == null){ - riverWarningVo.setRzWarn("告警设置未配置,请检查"); - }else{ - //警告水位 - BigDecimal warnWaterLevel = alarmSet.getWarnWaterLevel(); - //保证水位 - BigDecimal promiseWaterLevel = alarmSet.getPromiseWaterLevel(); - BigDecimal rz = stRiverR.getZ(); - if(rz == null){ - return; - } - if(rz.compareTo(warnWaterLevel) >=0 && rz.compareTo(promiseWaterLevel) <0){ - BigDecimal gap = rz.subtract(warnWaterLevel); - riverWarningVo.setRzWarn(gap.toString()); - overWarn.add(riverWarningVo); - }else if (rz.compareTo(promiseWaterLevel) >=0){ - BigDecimal gap = rz.subtract(warnWaterLevel); - riverWarningVo.setRzWarn(gap.toString()); - overPmis.add(riverWarningVo); - } - } - } - } - - - private List queryQxWarn() { - List list = new ArrayList<>(); - ApiVo apiVo = new ApiVo(); - apiVo.setFilter(Lists.newArrayList()); - ObjectMapper om = new ObjectMapper(); - HttpClient httpClient = HttpClientBuilder.create().build(); - HttpPost httpPost = new HttpPost(shqxjsWarnPath); - log.info("请求气象预警接口:{}", shqxjsWarnPath); - StringEntity stringEntity; - long start = System.currentTimeMillis(); - try { - String params = om.writeValueAsString(apiVo); - log.info("请求气象预警接口参数:{}", params); - stringEntity = new StringEntity(params, ContentType.APPLICATION_JSON); - httpPost.setEntity(stringEntity); - HttpResponse response = httpClient.execute(httpPost); - HttpEntity entity = response.getEntity(); - JSONObject dataObject = JSONUtil.parseObj(EntityUtils.toString(entity)); - JSONArray data = dataObject.getJSONArray("data"); - if (data == null) return list; - List dataList = data.toList(WarningData.class); - list = getList(dataList); - } catch (Exception e) { - e.printStackTrace(); - } - long end = System.currentTimeMillis(); - log.info("查询气象预警耗时:{} 秒", (end - start) / 1000); - return list; - } - - private List getList(List data) { - List respList = Lists.newArrayList(); - for (WarningData datum : data) {//最外层的列表 - String ctnm = datum.getEffectArea();//市级范围 - for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的 - // 预警类型 - String type = typeList.getType(); - List warnList = typeList.getWarnList(); - - for (WarningData.Warning warning : warnList) { - String cnnm = warning.getEffectArea(); - if("红安".equals(cnnm)){ - QXWarningVo vo = new QXWarningVo(); - String publishUnit = warning.getPublishUnit(); - vo.setCtnm(ctnm);//市级名称 - vo.setCnnm(cnnm);//县级名称 - vo.setPublishUnit(publishUnit);//发布单位 - vo.setPublishTime(warning.getPublishTime());//预警发布时间 - vo.setWarnSignalType(warning.getWarnSignalType());//预警类型 - vo.setWarnSignalLevel(warning.getWarnSignalLevel());//预警级别 - vo.setContent(warning.getContent());//预警内容 - vo.setWarnid(warning.getId()); - vo.setCreateTime(warning.getCreateTime()); - vo.setStartTime(warning.getStartTime()); - vo.setEndTime(warning.getEndTime()); - respList.add(vo); - } - - } - } - } - respList = respList.stream().filter(o -> "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); - respList = respList.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); - return respList.stream().sorted(Comparator.comparing(QXWarningVo::getPublishTime).reversed()) - .collect(Collectors.toList()); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StRiverRRealService.java b/src/main/java/com/gunshi/project/hsz/service/StRiverRRealService.java deleted file mode 100644 index bb4f28c..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StRiverRRealService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StRiverRRealMapper; -import com.gunshi.project.hsz.common.model.StRiverRReal; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: - * author: cxw - * date: 2024-09-24 14:01:07 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StRiverRRealService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StRiverRService.java b/src/main/java/com/gunshi/project/hsz/service/StRiverRService.java deleted file mode 100644 index f4863df..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StRiverRService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StRiverRMapper; -import com.gunshi.project.hsz.common.model.StRiverR; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: - * author: cxw - * date: 2024-09-24 14:01:07 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StRiverRService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StRsvrRRealService.java b/src/main/java/com/gunshi/project/hsz/service/StRsvrRRealService.java deleted file mode 100644 index 99e02f7..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StRsvrRRealService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StRsvrRRealMapper; -import com.gunshi.project.hsz.common.model.StRsvrRReal; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 水库水位实时数据表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StRsvrRRealService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StRsvrRService.java b/src/main/java/com/gunshi/project/hsz/service/StRsvrRService.java deleted file mode 100644 index b689d52..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StRsvrRService.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.gunshi.project.hsz.service; - -import java.math.BigDecimal; -import java.util.List; - -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StRsvrRMapper; -import com.gunshi.project.hsz.common.model.StRsvrR; - -import lombok.extern.slf4j.Slf4j; - -/** - * 描述: 水库历史水位表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StRsvrRService extends ServiceImpl -{ - - public List getStcdLastRsvrData() { - return baseMapper.getStcdLastRsvrData(); - } - - public List getStcdFirstRsvrData() { - return baseMapper.getStcdFirstRsvrData(); - } - - /** - * 根据stcd获取8点的rz - */ - public BigDecimal getRz8ByStcd(String stcd) { - return baseMapper.getRz8ByStcd(stcd); - } - - /** - * 根据stcd获取昨日8点的rz - */ - public BigDecimal getRzYesterday8ByStcd(String stcd) { - return baseMapper.getRzYesterday8ByStcd(stcd); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StStbprpBElemService.java b/src/main/java/com/gunshi/project/hsz/service/StStbprpBElemService.java deleted file mode 100644 index cef27dc..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StStbprpBElemService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StStbprpBElemMapper; -import com.gunshi.project.hsz.common.model.StStbprpBElem; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * 描述: 测站监测值类型 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StStbprpBElemService extends ServiceImpl -{ - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StStbprpBService.java b/src/main/java/com/gunshi/project/hsz/service/StStbprpBService.java deleted file mode 100644 index fe585d5..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StStbprpBService.java +++ /dev/null @@ -1,582 +0,0 @@ -package com.gunshi.project.hsz.service; - -import cn.hutool.core.collection.CollectionUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.mapper.StStbprpBMapper; -import com.gunshi.project.hsz.common.model.StRiverR; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.common.model.vo.OsmoticShiftListVo2; -import com.gunshi.project.hsz.entity.dto.StZqrlBDto; -import com.gunshi.project.hsz.entity.so.HomeStStbprpBSo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.mapper.OsmoticPressRMapper; -import com.gunshi.project.hsz.mapper.OsmoticShiftRMapper; -import com.gunshi.project.hsz.mapper.StWaterFlowMapper; -import com.gunshi.project.hsz.mapper.StbprpBVoMapper; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.util.DateUtil; -import io.swagger.v3.oas.models.security.SecurityScheme; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.SimpleDateFormat; -import java.time.Duration; -import java.time.LocalDateTime; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: sttp 以水利标准来 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StStbprpBService extends ServiceImpl { - @Resource - private OsmoticPressRMapper pressRMapper; - - @Resource - private OsmoticShiftRMapper shiftRMapper; - - @Autowired - private StZqrlBService stZqrlBService; - - @Autowired - private StZvarlBService stZvarlBService; - - @Autowired - private StRsvrRService rsvrRService; - - @Autowired - private StRiverRService riverRService; - - @Autowired - private StbprpBVoMapper stbprpBVoMapper; - - @Autowired - private StWaterFlowMapper stWaterFlowMapper; - - @Autowired - private AttCctvBaseService attCctvBaseService; - - @Autowired - private StZqRSerivce stZqRSerivce; - - public List rainfallStationDetailsList(HomeStStbprpBSo dto) { - return stbprpBVoMapper.rainfallStationDetailsList(dto); - } - - public List reservoirStationDetailsList() { - return stbprpBVoMapper.reservoirStationDetailsList(); - } - - public List flowStationDetailsList() { - return stbprpBVoMapper.flowStationDetailsList(); - } - - public StStatusListVo statusList() { - StStatusListVo res = new StStatusListVo(); - Integer onlineCount = 0; - Integer offlineCount = 0; - //水雨情站超过2小时为离线;渗压,渗流,位移暂定超过24小时为离线 - //雨量站 - List rainList = stbprpBVoMapper.realRainList(); - for (StStatusVo stStatusVo : rainList) { - String tm = stStatusVo.getTm(); - if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ - stStatusVo.setStatus(1); - onlineCount++; - }else{ - stStatusVo.setStatus(0); - offlineCount++; - } - } - res.setRainStationList(rainList); - //水库水位站 - List rzList = stbprpBVoMapper.rzList(); - for (StStatusVo stStatusVo : rzList) { - String tm = stStatusVo.getTm(); - if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ - stStatusVo.setStatus(1); - onlineCount++; - }else{ - stStatusVo.setStatus(0); - offlineCount++; - } - } - res.setRsvrStationList(rzList); - //河道 - List zList = stbprpBVoMapper.zList(); - for (StStatusVo stStatusVo : zList) { - String tm = stStatusVo.getTm(); - if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ - stStatusVo.setStatus(1); - onlineCount++; - }else{ - stStatusVo.setStatus(0); - offlineCount++; - } - } - res.setRiverStationList(zList); - // 视频点 - List attCctvBases = attCctvBaseService.queryList(); - List cctvList = new ArrayList<>(); - for (AttCctvBase attCctvBase : attCctvBases) { - StStatusVo stStatusVo = new StStatusVo(); - stStatusVo.setStnm(attCctvBase.getName()); - stStatusVo.setLgtd(attCctvBase.getLgtd() == null?null:new BigDecimal(attCctvBase.getLgtd())); - stStatusVo.setLttd(attCctvBase.getLttd() == null?null:new BigDecimal(attCctvBase.getLttd())); - stStatusVo.setStatus(0); - cctvList.add(stStatusVo); - offlineCount++; - } - res.setCctvStationList(cctvList); - //流量站 - //TODO 站点编码等真实站点编码来之后需要更改 - List flowList = stbprpBVoMapper.flowStationList(); - for (StStatusVo stStatusVo : flowList) { - String tm = stStatusVo.getTm(); - if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ - stStatusVo.setStatus(1); - onlineCount++; - }else{ - stStatusVo.setStatus(0); - offlineCount++; - } - } - res.setFlowStationList(flowList); - - //大坝安全监测 渗流 渗压 位移 - //渗压 - List pressList = pressRMapper.listValue2(); - List syStationList = new ArrayList<>(); - for (OsmoticPressVo osmoticPressVo : pressList) { - StStatusVo vo = new StStatusVo(); - vo.setStcd(osmoticPressVo.getStationCode()); - vo.setStnm(osmoticPressVo.getStationCode()); - vo.setLttd(osmoticPressVo.getLttd()); - vo.setLgtd(osmoticPressVo.getLgtd()); - String tm = osmoticPressVo.getTm(); - if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ - vo.setStatus(1); - onlineCount++; - }else{ - vo.setStatus(0); - offlineCount++; - } - syStationList.add(vo); - } - res.setSyStationList(syStationList); - //渗流 - List slList = pressRMapper.flowListValue2(); - List slStationList = new ArrayList<>(); - for (OsmoticPressVo osmoticPressVo : slList) { - StStatusVo vo = new StStatusVo(); - vo.setStcd(osmoticPressVo.getStationCode()); - vo.setStnm(osmoticPressVo.getStationCode()); - vo.setLttd(osmoticPressVo.getLttd()); - vo.setLgtd(osmoticPressVo.getLgtd()); - String tm = osmoticPressVo.getTm(); - if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ - vo.setStatus(1); - onlineCount++; - }else{ - vo.setStatus(0); - offlineCount++; - } - slStationList.add(vo); - } - res.setSlStationList(slStationList); - //位移 - List wyList = shiftRMapper.listValue2(); - List wyStationList = new ArrayList<>(); - for (OsmoticShiftListVo2 wy : wyList) { - StStatusVo vo = new StStatusVo(); - vo.setStcd(wy.getCdNm()); - vo.setStnm(wy.getCdNm()); - vo.setLttd(wy.getLttd()); - vo.setLgtd(wy.getLgtd()); - String tm = wy.getTm(); - if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ - vo.setStatus(1); - onlineCount++; - }else{ - vo.setStatus(0); - offlineCount++; - } - wyStationList.add(vo); - } - res.setWyStationList(wyStationList); - BigDecimal totalCount = new BigDecimal(onlineCount).add(new BigDecimal(offlineCount)); - BigDecimal reportPercentage = new BigDecimal(onlineCount) - .divide(totalCount, 4, RoundingMode.HALF_UP) // 这里先设置精度 - .multiply(BigDecimal.valueOf(100)) - .setScale(2, RoundingMode.HALF_UP); - res.setOnlineCount(onlineCount); - res.setOffLineCount(offlineCount); - res.setReportPercentage(reportPercentage); - return res; - } - - public List rainList() { - return stbprpBVoMapper.rainList(); - } - - public List flowList(StZqrlBDto obj) { - /* - * 查出时段内的水位列表,按时间升序排,根据水位查水位流量曲线表得到流量 - * 第一条数据的累计溢洪量设为0,第二条累计溢洪量=上一条累计溢洪量+本条溢洪流量*60分*60秒,以此类推 - */ - - //TODO 这里得确定一下,这个新建的泄洪道水位站是不是从水库历史水位表中查 - //获取水位历史数据 -// List rsvrList = rsvrRService.lambdaQuery() -// .eq(StRsvrR::getStcd, obj.getStcd()) -// .between(StRsvrR::getTm, obj.getDateSo().getStart(), obj.getDateSo().getEnd()) -// .orderBy(true, true, StRsvrR::getTm) -// .list(); - //TODO or 获取从河道水位表获取 - List riverList = riverRService.lambdaQuery() - .eq(StRiverR::getStcd, obj.getStcd()) - .between(StRiverR::getTm, obj.getDateSo().getStart(), obj.getDateSo().getEnd()) - .orderBy(true, true, StRiverR::getTm) - .list(); - //查询水位-流量关系 - List zqrlList = stZqRSerivce.lambdaQuery().eq(StZqR::getStcd, obj.getStcd()).list(); - zqrlList.sort(Comparator.comparing(StZqR::getZ)); - //获取水位-库容关系 - List zvarlList = stZvarlBService.list(); - zvarlList.sort(Comparator.comparing(StZvarlB::getRz)); - List ret = new ArrayList<>(); - - for (int i = 0; i < riverList.size(); i++) { - StRiverR rsvr = riverList.get(i); - BigDecimal rz = rsvr.getZ(); - StZqrlBVo vo = new StZqrlBVo(); - vo.setStcd(rsvr.getStcd()); - vo.setTm(rsvr.getTm()); - vo.setWaterLevel(rz); - //溢洪流量计算 - //TODO 这里水位->流量 需要计算公式 - //BigDecimal q = stZqrlBService.getQByZqrl(zqrlList, rz);//根据水位计算流量 - BigDecimal q = stZqRSerivce.getQByZqr(zqrlList,rz); - vo.setFlowNum(q);//计算溢洪量(非累加值) - BigDecimal w = stZvarlBService.getWByZvarl(zvarlList, rz);//根据水位计算库容 - vo.setBoxNum(w); - if (i == 0) { - vo.setQtotal(BigDecimal.ZERO); - } else { - StZqrlBVo voPrev = ret.get(i - 1); - BigDecimal qTotal = voPrev.getQtotal().add(vo.getFlowNum().multiply(BigDecimal.valueOf(60 * 60))); - vo.setQtotal(qTotal); - } - - ret.add(vo); - } - //倒序输出 - ret.sort(Comparator.comparing(StZqrlBVo::getTm).reversed()); - return ret; - } - - public StZqrlBCountVo count(Serializable stcd) { - StZqrlBCountVo vo = new StZqrlBCountVo(); - vo.setStcd(stcd.toString()); - - //取出当月的时间 20xx-xx-01 00:00:00 - Calendar calendar = Calendar.getInstance(); - Date now = calendar.getTime(); - calendar.set(Calendar.DAY_OF_MONTH, 1); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - Date monthStart = calendar.getTime(); - - //取本年的时间 20xx-01-01 00:00:00 - calendar.set(Calendar.MONTH, 0); - calendar.set(Calendar.DAY_OF_MONTH, 1); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - Date yearStart = calendar.getTime(); - - - calendar.setTime(now); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - Date dayStart = calendar.getTime(); - - //查询当年水位数据 - List rsvrList = rsvrRService.lambdaQuery() - .eq(StRsvrR::getStcd, stcd) - .between(StRsvrR::getTm, yearStart, now) - .orderByAsc(true, StRsvrR::getTm) - .list(); - if(rsvrList.isEmpty()){ - return vo; - } - //获取水位流量关系 - List zqrlList = stZqrlBService.list(); - zqrlList.sort(Comparator.comparing(StZqrlB::getZ)); - - //获取水位-溢洪量关系 - List stWaterFlows = stWaterFlowMapper.selectListByStcd(stcd.toString()); - - List complexList = new ArrayList<>(); - BigDecimal maxYearSv = BigDecimal.ZERO; - Date maxQStartTime = null; - Date maxQEndTime = null; - - // 用于跟踪当前连续的最大值段 - Date currentSegmentStart = null; - BigDecimal currentSegmentValue = BigDecimal.ZERO; - boolean segmentActive = false; - - for (int i = 0; i < rsvrList.size(); i++) { - StRsvrR rsvr = rsvrList.get(i); - RsvrComplexVo complex = new RsvrComplexVo(); - BigDecimal rz = new BigDecimal(rsvr.getRz()); - complex.setRz(rz); - complex.setTm(rsvr.getTm()); - - BigDecimal q = stZqrlBService.getQByZqrl(zqrlList, rz); - complex.setQ(q); - complex.setSv(complex.getQ().multiply(BigDecimal.valueOf(60 * 60))); - - if (i == 0) { - complex.setTotalSv(BigDecimal.ZERO); - } else { - RsvrComplexVo pre = complexList.get(i - 1); - complex.setTotalSv(pre.getTotalSv().add(complex.getQ().multiply(BigDecimal.valueOf(60 * 60)))); - } - - BigDecimal currentSv = complex.getSv(); - complexList.add(complex); - - /** - * 嗯,这段代码,,,希望未来的你能看得懂 - */ - // 处理溢洪量逻辑 - if (currentSv.compareTo(BigDecimal.ZERO) > 0) { - // 1. 发现更大的溢洪量 - if (currentSv.compareTo(maxYearSv) > 0) { - maxYearSv = currentSv; - // 开始新的最大值段 - currentSegmentStart = rsvr.getTm(); - currentSegmentValue = currentSv; - segmentActive = true; - maxQStartTime = currentSegmentStart; - maxQEndTime = null; // 重置结束时间 - } - // 2. 等于当前最大值且在活跃段中 - else if (currentSv.compareTo(maxYearSv) == 0 && segmentActive) { - // 继续当前段,不更新结束时间(等待第一个小于的值) - // 这里什么都不做,保持当前状态 - } - // 3. 小于当前最大值且在活跃段中 - else if (currentSv.compareTo(maxYearSv) < 0 && segmentActive) { - // 找到第一个小于最大值的点,作为结束时间 - maxQEndTime = rsvr.getTm(); - segmentActive = false; // 结束当前段 - } - // 4. 等于当前最大值但不在活跃段中(新的连续段开始) - else if (currentSv.compareTo(maxYearSv) == 0 && !segmentActive) { - // 开始新的连续段 - currentSegmentStart = rsvr.getTm(); - currentSegmentValue = currentSv; - segmentActive = true; - // 更新全局开始时间(取最新的开始时间) - maxQStartTime = currentSegmentStart; - maxQEndTime = null; // 重置结束时间 - } - } else { - // 遇到0值且在活跃段中 - if (segmentActive && currentSegmentValue.compareTo(maxYearSv) == 0) { - // 找到第一个小于最大值的点(0值),作为结束时间 - maxQEndTime = rsvr.getTm(); - segmentActive = false; - } - } - } - - // 处理最后一条数据仍是最大值的情况 - if (segmentActive && maxQStartTime != null && maxQEndTime == null) { - maxQEndTime = new Date(); // 结束时间为当前时间 - } - // 设置结果 - vo.setCurrYearMaxVal(maxYearSv); - if (maxQStartTime != null && maxQEndTime != null) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String period = sdf.format(maxQStartTime) + " ~ " + sdf.format(maxQEndTime); - vo.setMaxOverflowPeriod(period); - } else { - vo.setMaxOverflowPeriod("无溢洪记录"); - } - - //当前流量 - vo.setVal(complexList.getLast().getQ()); - vo.setCreateTime(complexList.getLast().getTm()); - - // 今日累计溢洪量(基于时间间隔的积分) - List complexDayList = complexList.stream().filter(complex -> complex.getTm().after(dayStart)).collect(Collectors.toList()); - BigDecimal sumToday = stZqrlBService.getFlowQSum(complexDayList); - vo.setCurrDayValSum(sumToday); - - - // 当月累计溢洪量 - List complexMonthList = complexList.stream().filter(complex -> (complex.getTm().after(monthStart) || complex.getTm().equals(monthStart)) - && complex.getTm().before(now) || complex.getTm().equals(now)).collect(Collectors.toList()); - BigDecimal sumMonth = stZqrlBService.getFlowQSum(complexMonthList); - vo.setCurrMonthSum(sumMonth); - - - // 当年累计溢洪量 - - BigDecimal sumYear = complexList.getLast().getTotalSv(); - vo.setCurrYearSum(sumYear); - - //计算溢洪次数 - // 0 0 0 1 1 0 1 0 1 - int overFlowCount = 0; - boolean isOverFlow = false; - //连续的sv > 0 才算一次 溢洪 - for (int i = 0; i < complexList.size(); i++) { - //BigDecimal sv = complexList.get(i).getSv(); - BigDecimal q = complexList.get(i).getQ(); - if (q != null && q.compareTo(BigDecimal.ZERO) > 0) { - if (!isOverFlow) { - overFlowCount++; - isOverFlow = true; - } - } else { - isOverFlow = false; - } - } - vo.setCurrYearCount(Long.valueOf(overFlowCount)); - return vo; - } - - public StZqrlBCount24Vo count24(Serializable stcd) { - StZqrlBCount24Vo vo = new StZqrlBCount24Vo(); - vo.setStcd(stcd.toString()); - - StRsvrR rsvrLatest = rsvrRService.lambdaQuery().eq(StRsvrR::getStcd, stcd).orderByDesc(StRsvrR::getTm).last("limit 1").one(); - if (rsvrLatest == null) { - return vo; - } - BigDecimal rzLatest = new BigDecimal(rsvrLatest.getRz()); - //获取水位-流量数据k - List zqrlBList = stZqrlBService.list(); - //TODO 转换溢洪流量计算 - BigDecimal qLatest = stZqrlBService.getQByZqrl(zqrlBList, rzLatest); - //BigDecimal qLatest = stZqrlBService.getQFromZqrl(rzLatest); - vo.setCurrWaterLevel(rzLatest); - vo.setFlowNum(qLatest);//当前溢洪量 就为 流量 - vo.setCreateTime(rsvrLatest.getTm()); - - LocalDateTime now = LocalDateTime.now(); - LocalDateTime before24 = now.minusHours(24); - List rsvrList = rsvrRService.lambdaQuery().ge(StRsvrR::getTm, before24).le(StRsvrR::getTm, now).orderByAsc(StRsvrR::getTm).list(); - //TODO 这个溢洪流量汇总的计算也需要进行公式计算 - List rsvrComplexVos = stZqrlBService.calculateSpilledVolumeList(rsvrList); - if(rsvrComplexVos.isEmpty()){ - vo.setSum24(BigDecimal.ZERO); - }else{ - vo.setSum24(rsvrComplexVos.getLast().getTotalSv()); - } - - return vo; - } - - public List calculateQtotal(List list) { - if (list == null || list.size() < 2) { - return list; - } - - // 第一条数据设为0或null - list.get(0).setQtotal(BigDecimal.ZERO); - - for (int i = 1; i < list.size(); i++) { - StZqrlB current = list.get(i); - StZqrlB previous = list.get(i - 1); - - // 使用Duration计算分钟差(精确到小数) - Duration duration = Duration.between(previous.getModitimeAsLocalDateTime(), current.getModitimeAsLocalDateTime()); - double minutesDiff = duration.toMillis() / 60000.0; // 毫秒转分钟 - - // 使用BigDecimal的valueOf方法,避免new BigDecimal(double)的精度问题 - BigDecimal minutesDecimal = BigDecimal.valueOf(minutesDiff); - - // 计算并设置qtotal - current.setQtotal(current.getQ().multiply(minutesDecimal)); - } - return list; - } - - private List getList(String stcd, LocalDateTime start, LocalDateTime end) { - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - List list = stZqrlBService.list(qw); - return list; - } - - private BigDecimal sumVal(String stcd, LocalDateTime start, LocalDateTime end) { - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(StZqrlB::getStcd, stcd); - qw.ge(StZqrlB::getModitime, start); - qw.le(StZqrlB::getModitime, end); - List list = stZqrlBService.list(qw); - if (CollectionUtil.isNotEmpty(list)) { - return list.stream().map(StZqrlB::getQ).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); - } - return null; - } - - private Long countVal(String stcd, LocalDateTime start, LocalDateTime end) { - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(StZqrlB::getStcd, stcd); - qw.ge(StZqrlB::getModitime, start); - qw.le(StZqrlB::getModitime, end); - List list = stZqrlBService.list(qw); - if (CollectionUtil.isNotEmpty(list)) { - return list.stream().map(StZqrlB::getQ).filter(Objects::nonNull).filter(q -> q.compareTo(BigDecimal.ZERO) > 0).count(); - } - return 0l; - } - - private BigDecimal maxVal(String stcd, LocalDateTime start, LocalDateTime end) { - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(StZqrlB::getStcd, stcd); - qw.ge(StZqrlB::getModitime, start); - qw.le(StZqrlB::getModitime, end); - List list = stZqrlBService.list(qw); - if (CollectionUtil.isNotEmpty(list)) { - return list.stream().map(StZqrlB::getQ).filter(Objects::nonNull).max(Comparator.naturalOrder()).orElse(null); - } - return null; - } - - public List getPptnStations() { - return baseMapper.getPptnStations(); - } - - public List getRsvrStations() { - return baseMapper.getRsvrStations(); - } - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StStbprpCctvService.java b/src/main/java/com/gunshi/project/hsz/service/StStbprpCctvService.java deleted file mode 100644 index e121e0e..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StStbprpCctvService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.gunshi.project.hsz.entity.vo.StStbprpCctvVo; -import com.gunshi.project.hsz.mapper.StStbprpCctvMapper; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * Description: - * Created by wanyan on 2024/4/9 - * - * @author wanyan - * @version 1.0 - */ -@Service -public class StStbprpCctvService { - - @Resource - private StStbprpCctvMapper stStbprpCctvMapper; - - - public List listByStcd(String stcd) { - return stStbprpCctvMapper.listByStcd(stcd); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/StWaterFlowSerivce.java b/src/main/java/com/gunshi/project/hsz/service/StWaterFlowSerivce.java deleted file mode 100644 index 3ba430c..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StWaterFlowSerivce.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StEvpoMapper; -import com.gunshi.project.hsz.mapper.StWaterFlowMapper; -import com.gunshi.project.hsz.model.StEvpo; -import com.gunshi.project.hsz.model.StWaterFlow; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StWaterFlowSerivce extends ServiceImpl { -} diff --git a/src/main/java/com/gunshi/project/hsz/service/StWaterRRealService.java b/src/main/java/com/gunshi/project/hsz/service/StWaterRRealService.java deleted file mode 100644 index 7dca382..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StWaterRRealService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.service; - -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import com.gunshi.project.hsz.util.DateUtil; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StWaterRRealMapper; -import com.gunshi.project.hsz.model.StWaterRReal; - -import lombok.extern.slf4j.Slf4j; - -/** - * 描述: 供水量实时表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StWaterRRealService extends ServiceImpl -{ - - public List listRelated() { - List stWaterRReals = baseMapper.listRelated(); - // 获取当前时间整点(去掉分钟和秒) - Calendar now = Calendar.getInstance(); - now.set(Calendar.MINUTE, 0); - now.set(Calendar.SECOND, 0); - now.set(Calendar.MILLISECOND, 0); - Date currentHour = now.getTime(); - for (StWaterRReal stWaterRReal : stWaterRReals) { - Date tm = stWaterRReal.getTm(); - if(tm != null){ - if(tm.before(currentHour)){ - stWaterRReal.setTm(null); - stWaterRReal.setQ(null); - stWaterRReal.setV(null); - } - if(DateUtil.hoursBetweenDate(tm,new Date()) < 1){ - stWaterRReal.setStatus(1); - }else{ - stWaterRReal.setStatus(0); - } - }else{ - stWaterRReal.setStatus(0); - } - } - return stWaterRReals; - } - - public List listNewData() { - return this.baseMapper.listNewData(); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StWaterRReorganizeService.java b/src/main/java/com/gunshi/project/hsz/service/StWaterRReorganizeService.java deleted file mode 100644 index 9228c79..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StWaterRReorganizeService.java +++ /dev/null @@ -1,350 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.StWaterRReorganizeYearVo; -import com.gunshi.project.hsz.mapper.StWaterRReorganizeMapper; -import com.gunshi.project.hsz.model.StWaterRReorganize; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 描述: 供水量整编表 - * author: cxw - * date: 2024-07-24 11:22:46 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StWaterRReorganizeService extends ServiceImpl -{ - -// public List getYearStatisticAnalysis(int year, List resList) { -// // 查询 选择年 数据 -// QueryWrapper nowYearQw = new QueryWrapper() -// .select("LEFT(tm, 7) tm,ROUND( AVG ( ecology_q ), 2 ) ecology_q,SUM ( ecology_v ) ecology_v,ROUND( AVG ( life_q ), 2 ) life_q,SUM ( life_v ) life_v,SUM ( sum_v ) sum_v") -// .eq("LEFT(tm, 4)", String.valueOf(year)).groupBy("LEFT(tm, 7)").orderBy(true, true, "tm"); -// List nowYearList = this.list(nowYearQw); -// -// // 查询 选择年的前一年 数据 -// QueryWrapper lastYearQw = new QueryWrapper() -// .select("LEFT(tm, 7) tm,ROUND( AVG ( ecology_q ), 2 ) ecology_q,SUM ( ecology_v ) ecology_v,ROUND( AVG ( life_q ), 2 ) life_q,SUM ( life_v ) life_v,SUM ( sum_v ) sum_v") -// .eq("LEFT(tm, 4)", String.valueOf(year - 1)).groupBy("LEFT(tm, 7)").orderBy(true, true, "tm"); -// List lastYearList = this.list(lastYearQw); -// -// // 组装VO -// if(CollectionUtils.isNotEmpty(nowYearList)){ -// BigDecimal ecologyVSum = nowYearList.stream().map(StWaterRReorganize::getEcologyV).reduce(BigDecimal.ZERO, BigDecimal::add);// 年度生态水量的和 -// BigDecimal lifeVSum = nowYearList.stream().map(StWaterRReorganize::getLifeV).reduce(BigDecimal.ZERO, BigDecimal::add);// 年度生活水量的和 -// for(int i = 0; i < nowYearList.size(); i++){ -// String jiantou = ""; -// StWaterRReorganizeYearVo vo = new StWaterRReorganizeYearVo(); -// StWaterRReorganize nowStwrr = nowYearList.get(i); -// vo.setTm(nowStwrr.getTm()); -// vo.setEcologyYearRateV(nowStwrr.getEcologyV().divide(ecologyVSum, 1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); -// vo.setEcologyV(nowStwrr.getEcologyV().toString()); -// vo.setLifeYearRateV(nowStwrr.getEcologyV().divide(lifeVSum, 1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); -// vo.setLifeV(nowStwrr.getLifeV().toString()); -// -// StWaterRReorganize lastStwrr = lastYearList.stream() -// .filter(item -> nowStwrr.getTm() -// .equals(String.valueOf((Integer.valueOf(item.getTm().substring(0, 4)) + 1)) -// .concat(item.getTm().substring(4, 7)))).findAny().orElse(null); -// // 生态同比 (本期数 - 同期数) / 同期数 × 100% -// if(ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getEcologyV().compareTo(BigDecimal.ZERO) == 0){ -// vo.setEcologyYoyV("-"); -// } else { -// BigDecimal ecologyYoyV = (nowStwrr.getEcologyV().subtract(lastStwrr.getEcologyV())).divide(lastStwrr.getEcologyV(), 1, BigDecimal.ROUND_HALF_UP); -// jiantou = ""; -// if(ecologyYoyV.compareTo(BigDecimal.ZERO) == 0){ -// jiantou = "↔"; -// vo.setEcologyYoyV(jiantou); -// } else { -// if(ecologyYoyV.compareTo(BigDecimal.ZERO) < 0){ -// jiantou = "↓"; -// } else if(ecologyYoyV.compareTo(BigDecimal.ZERO) > 0){ -// jiantou = "↑"; -// } -// vo.setEcologyYoyV(jiantou.concat(ecologyYoyV.abs().toString()).concat("%")); -// } -// } -// // 生活同比 (本期数 - 同期数) / 同期数 × 100% -// if(ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getLifeV().compareTo(BigDecimal.ZERO) == 0){ -// vo.setLifeYoyV("-"); -// } else { -// BigDecimal lifeYoyV = (nowStwrr.getLifeV().subtract(lastStwrr.getLifeV())).divide(lastStwrr.getLifeV(), 1, BigDecimal.ROUND_HALF_UP); -// jiantou = ""; -// if(lifeYoyV.compareTo(BigDecimal.ZERO) == 0){ -// jiantou = "↔"; -// vo.setLifeYoyV(jiantou); -// } else { -// if(lifeYoyV.compareTo(BigDecimal.ZERO) < 0){ -// jiantou = "↓"; -// } else if(lifeYoyV.compareTo(BigDecimal.ZERO) > 0){ -// jiantou = "↑"; -// } -// vo.setLifeYoyV(jiantou.concat(lifeYoyV.abs().toString()).concat("%")); -// } -// } -// // 环比 (本期数 - 上期数) / 上期数 × 100% -// StWaterRReorganize lastOneStwrr; -// // 如果是1月,需要拿到去年12月的 -// if(i == 0 && nowStwrr.getTm().contains("-01")){ -// lastOneStwrr = lastYearList.stream().filter(item -> item.getTm().contains("-12")).findAny().orElse(null); -// } else { -// lastOneStwrr = nowYearList.get(i-1); -// } -// // 生态 -// if(ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getEcologyV().compareTo(BigDecimal.ZERO) == 0){ -// vo.setEcologyQoqV("-"); -// } else { -// BigDecimal ecologyQoqV = (nowStwrr.getEcologyV().subtract(lastOneStwrr.getEcologyV())).divide(lastOneStwrr.getEcologyV(), 1, BigDecimal.ROUND_HALF_UP); -// jiantou = ""; -// if(ecologyQoqV.compareTo(BigDecimal.ZERO) == 0){ -// jiantou = "↔"; -// vo.setEcologyQoqV(jiantou); -// } else { -// if(ecologyQoqV.compareTo(BigDecimal.ZERO) < 0){ -// jiantou = "↓"; -// } else if(ecologyQoqV.compareTo(BigDecimal.ZERO) > 0){ -// jiantou = "↑"; -// } -// vo.setEcologyQoqV(jiantou.concat(ecologyQoqV.abs().toString()).concat("%")); -// } -// } -// // 生活 -// if(ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getLifeV().compareTo(BigDecimal.ZERO) == 0){ -// vo.setLifeQoqV("-"); -// } else { -// BigDecimal lifeQoqV = (nowStwrr.getLifeV().subtract(lastOneStwrr.getLifeV())).divide(lastOneStwrr.getLifeV(), 1, BigDecimal.ROUND_HALF_UP); -// jiantou = ""; -// if(lifeQoqV.compareTo(BigDecimal.ZERO) == 0){ -// jiantou = "↔"; -// vo.setLifeQoqV(jiantou); -// } else { -// if(lifeQoqV.compareTo(BigDecimal.ZERO) < 0){ -// jiantou = "↓"; -// } else if(lifeQoqV.compareTo(BigDecimal.ZERO) > 0){ -// jiantou = "↑"; -// } -// vo.setLifeQoqV(jiantou.concat(lifeQoqV.abs().toString()).concat("%")); -// } -// } -// resList.add(vo); -// } -// } -// return resList; -// } - - public List getYearStatisticAnalysis(int year, List resList) { - // 查询 选择年 数据 - QueryWrapper nowYearQw = new QueryWrapper() - .select("LEFT(tm, 7) tm," + - "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + - "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + - "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") - .eq("LEFT(tm, 4)", String.valueOf(year)) - .groupBy("LEFT(tm, 7)") - .orderBy(true, true, "tm"); - List nowYearList = this.list(nowYearQw); - - // 查询 选择年的前一年 数据 - QueryWrapper lastYearQw = new QueryWrapper() - .select("LEFT(tm, 7) tm," + - "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + - "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + - "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") - .eq("LEFT(tm, 4)", String.valueOf(year - 1)) - .groupBy("LEFT(tm, 7)") - .orderBy(true, true, "tm"); - List lastYearList = this.list(lastYearQw); - - // 组装VO - if (CollectionUtils.isNotEmpty(nowYearList)) { - // 计算年度总量 - BigDecimal mci1VSum = nowYearList.stream().map(StWaterRReorganize::getMci1V).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal mci2VSum = nowYearList.stream().map(StWaterRReorganize::getMci2V).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal ecologyVSum = nowYearList.stream().map(StWaterRReorganize::getEcologyV).reduce(BigDecimal.ZERO, BigDecimal::add); - - for (int i = 0; i < nowYearList.size(); i++) { - String jiantou = ""; - StWaterRReorganizeYearVo vo = new StWaterRReorganizeYearVo(); - StWaterRReorganize nowStwrr = nowYearList.get(i); - vo.setTm(nowStwrr.getTm()); - - // 干渠灌溉1数据 - if(mci1VSum.compareTo(BigDecimal.ZERO) == 0){ - vo.setMci1YearRateV("0%"); - }else{ - vo.setMci1YearRateV(nowStwrr.getMci1V().divide(mci1VSum, 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); - } - vo.setMci1V(nowStwrr.getMci1V() == null?null:nowStwrr.getMci1V().toString()); - - // 干渠灌溉2数据 - if(mci2VSum.compareTo(BigDecimal.ZERO) == 0){ - vo.setMci2YearRateV("0%"); - }else{ - vo.setMci2YearRateV(nowStwrr.getMci2V().divide(mci2VSum, 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); - } - - vo.setMci2V(nowStwrr.getMci2V() == null?null:nowStwrr.getMci2V().toString()); - - // 生态数据 - if(ecologyVSum.compareTo(BigDecimal.ZERO) == 0){ - vo.setEcologyV("0%"); - }else{ - vo.setEcologyYearRateV(nowStwrr.getEcologyV().divide(ecologyVSum, 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); - } - - vo.setEcologyV(nowStwrr.getEcologyV() == null? null:nowStwrr.getEcologyV().toString()); - - // 查找去年同期数据 - StWaterRReorganize lastStwrr = lastYearList.stream() - .filter(item -> nowStwrr.getTm() - .equals(String.valueOf((Integer.valueOf(item.getTm().substring(0, 4)) + 1)) - .concat(item.getTm().substring(4, 7)))).findAny().orElse(null); - - // 干渠灌溉1同比 - if (ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getMci1V().compareTo(BigDecimal.ZERO) == 0) { - vo.setMci1YoyV("-"); - } else { - BigDecimal mci1YoyV = (nowStwrr.getMci1V().subtract(lastStwrr.getMci1V())) - .divide(lastStwrr.getMci1V(), 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); - jiantou = getArrowSymbol(mci1YoyV); - vo.setMci1YoyV(formatChangeRate(jiantou, mci1YoyV)); - } - - // 干渠灌溉2同比 - if (ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getMci2V().compareTo(BigDecimal.ZERO) == 0) { - vo.setMci2YoyV("-"); - } else { - BigDecimal mci2YoyV = (nowStwrr.getMci2V().subtract(lastStwrr.getMci2V())) - .divide(lastStwrr.getMci2V(), 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); - jiantou = getArrowSymbol(mci2YoyV); - vo.setMci2YoyV(formatChangeRate(jiantou, mci2YoyV)); - } - - // 生态同比 - if (ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getEcologyV().compareTo(BigDecimal.ZERO) == 0) { - vo.setEcologyYoyV("-"); - } else { - BigDecimal ecologyYoyV = (nowStwrr.getEcologyV().subtract(lastStwrr.getEcologyV())) - .divide(lastStwrr.getEcologyV(), 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); - jiantou = getArrowSymbol(ecologyYoyV); - vo.setEcologyYoyV(formatChangeRate(jiantou, ecologyYoyV)); - } - - // 环比处理(查找上期数据) - StWaterRReorganize lastOneStwrr; - if (i == 0 && nowStwrr.getTm().contains("-01")) { - lastOneStwrr = lastYearList.stream().filter(item -> item.getTm().contains("-12")).findAny().orElse(null); - } else { - lastOneStwrr = (i > 0) ? nowYearList.get(i - 1) : null; - } - - // 干渠灌溉1环比 - if (ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getMci1V().compareTo(BigDecimal.ZERO) == 0) { - vo.setMci1QoqV("-"); - } else { - BigDecimal mci1QoqV = (nowStwrr.getMci1V().subtract(lastOneStwrr.getMci1V())) - .divide(lastOneStwrr.getMci1V(), 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); - jiantou = getArrowSymbol(mci1QoqV); - vo.setMci1QoqV(formatChangeRate(jiantou, mci1QoqV)); - } - - // 干渠灌溉2环比 - if (ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getMci2V().compareTo(BigDecimal.ZERO) == 0) { - vo.setMci2QoqV("-"); - } else { - BigDecimal mci2QoqV = (nowStwrr.getMci2V().subtract(lastOneStwrr.getMci2V())) - .divide(lastOneStwrr.getMci2V(), 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); - jiantou = getArrowSymbol(mci2QoqV); - vo.setMci2QoqV(formatChangeRate(jiantou, mci2QoqV)); - } - - // 生态环比 - if (ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getEcologyV().compareTo(BigDecimal.ZERO) == 0) { - vo.setEcologyQoqV("-"); - } else { - BigDecimal ecologyQoqV = (nowStwrr.getEcologyV().subtract(lastOneStwrr.getEcologyV())) - .divide(lastOneStwrr.getEcologyV(), 4, BigDecimal.ROUND_HALF_UP) - .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); - jiantou = getArrowSymbol(ecologyQoqV); - vo.setEcologyQoqV(formatChangeRate(jiantou, ecologyQoqV)); - } - - resList.add(vo); - } - } - return resList; - } - - // 辅助方法:获取箭头符号 - private String getArrowSymbol(BigDecimal value) { - if (value.compareTo(BigDecimal.ZERO) == 0) { - return "↔"; - } else if (value.compareTo(BigDecimal.ZERO) < 0) { - return "↓"; - } else { - return "↑"; - } - } - - // 辅助方法:格式化变化率 - private String formatChangeRate(String arrow, BigDecimal value) { - if ("↔".equals(arrow)) { - return arrow; - } else { - return arrow.concat(value.abs().toString()).concat("%"); - } - } - - public Map getWaterSupplyerYeaarOrMonth(Integer type,String date) { - Map res = new HashMap<>(); - BigDecimal ggTotal = null; - BigDecimal stTotal = null; - List rReorganizes; - if(type == 0){ - rReorganizes = baseMapper.getWaterSupplyerYeaarOrMonth(type,date); - }else{ - rReorganizes = baseMapper.getWaterSupplyerYeaarOrMonth(type,date); - } - - if(rReorganizes.size() > 0){ - ggTotal = BigDecimal.ZERO; - stTotal = BigDecimal.ZERO; - for (StWaterRReorganize o : rReorganizes) { - if(o.getMci1V() != null){ - ggTotal = ggTotal.add(o.getMci1V()); - } - if(o.getMci2V() != null){ - ggTotal = ggTotal.add(o.getMci2V()); - } - if(o.getEcologyV() != null){ - stTotal = stTotal.add(o.getEcologyV()); - } - } - } - res.put("gg",ggTotal); - res.put("st",stTotal); - return res; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StWaterRService.java b/src/main/java/com/gunshi/project/hsz/service/StWaterRService.java deleted file mode 100644 index b597ed9..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StWaterRService.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.mapper.StWaterRMapper; -import com.gunshi.project.hsz.model.StWaterR; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 供水量表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StWaterRService extends ServiceImpl -{ - - public Map stat(DateTimeRangeSo dateTimeRangeSo) { - List list = baseMapper.stat(dateTimeRangeSo); - return list.stream() - .collect(Collectors.groupingBy(StWaterR::getStcd, Collectors.mapping(StWaterR::getV, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); - } - - public StWaterR selectNewDataByStcd(String stcd) { - return this.baseMapper.selectNewDataByStcd(stcd); - } - - public List queryDetail() { - return null; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StZqRSerivce.java b/src/main/java/com/gunshi/project/hsz/service/StZqRSerivce.java deleted file mode 100644 index 05af152..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StZqRSerivce.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StZqRMapper; -import com.gunshi.project.hsz.model.StZqR; -import com.gunshi.project.hsz.model.StZqrlB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StZqRSerivce extends ServiceImpl { - - - public BigDecimal getQByZqr(List zvarlList, BigDecimal rz) { - // 1. 参数校验 - if (zvarlList == null || zvarlList.isEmpty()) { - throw new IllegalArgumentException("水位-流量关系列表不能为空"); - } - if (rz == null) { - throw new IllegalArgumentException("水位值不能为空"); - } - - // 2. 检查边界情况:如果目标水位低于最低水位或高于最高水位 - BigDecimal minRz = zvarlList.get(0).getZ(); - BigDecimal maxRz = zvarlList.get(zvarlList.size() - 1).getZ(); - if (rz.compareTo(minRz) < 0) { - // 低于最低水位,返回0流量 - return BigDecimal.ZERO; - } - if (rz.compareTo(maxRz) > 0) { - // 高于最高水位,返回0流量 - return BigDecimal.ZERO; - } - - // 3. 二分查找水位区间 - int l = 0; - int r = zvarlList.size() - 1; - - while (l <= r) { - int mid = l + (r - l) / 2; - BigDecimal midRz = zvarlList.get(mid).getZ(); - int compareResult = midRz.compareTo(rz); - - if (compareResult == 0) { - // 找到完全匹配的水位,直接返回对应的流量 - return zvarlList.get(mid).getQ(); - } else if (compareResult < 0) { - l = mid + 1; - } else { - r = mid - 1; - } - } - - /** - * 此时: - * l 指向第一个大于rz的位置 - * r 指向最后一个小于rz的位置 - * 即:r为 (x1, y1) - 下限水位和流量 - * l为 (x2, y2) - 上限水位和流量 - */ - if (l >= zvarlList.size() || r < 0) { - return BigDecimal.ZERO; - } - - // 获取前后相邻的两个点 - StZqR lowerPoint = zvarlList.get(r); - StZqR upperPoint = zvarlList.get(l); - - // 使用线性插值计算流量 - return linearInterpolation( - lowerPoint.getZ(), lowerPoint.getQ(), - upperPoint.getZ(), upperPoint.getQ(), - rz - ).setScale(3, RoundingMode.HALF_UP); - } - - /** - * 线性插值辅助方法(可以复用之前的) - * @param x1 已知点1的水位 - * @param y1 已知点1的流量 - * @param x2 已知点2的水位 - * @param y2 已知点2的流量 - * @param x 目标水位 - * @return 目标水位对应的流量 - */ - private BigDecimal linearInterpolation(BigDecimal x1, BigDecimal y1, - BigDecimal x2, BigDecimal y2, - BigDecimal x) { - // 使用公式: y = y1 + ( (y2 - y1) / (x2 - x1) ) * (x - x1) - - // 计算斜率: (y2 - y1) / (x2 - x1) - BigDecimal slope = y2.subtract(y1) - .divide(x2.subtract(x1), 10, RoundingMode.HALF_UP); - - // 计算: slope * (x - x1) - BigDecimal xDiff = x.subtract(x1); - BigDecimal product = slope.multiply(xDiff); - - // 计算最终结果: y1 + product - return y1.add(product); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/StZqrlBService.java b/src/main/java/com/gunshi/project/hsz/service/StZqrlBService.java deleted file mode 100644 index 7fdbdb7..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StZqrlBService.java +++ /dev/null @@ -1,248 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.vo.RsvrComplexVo; -import com.gunshi.project.hsz.mapper.StZqrlBMapper; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.model.StZqrlB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.Duration; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 水位流量关系曲线表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StZqrlBService extends ServiceImpl { - - /** - * 计算溢洪量 - * - * @param rz 计算溢洪的起始水位 - * @param seconds 溢洪时间,是两条水位数据的时间差,单位秒 - * @param zqrlList 水位流量关系曲线 - * @return 溢洪量 - * @author lyf - */ - public BigDecimal calculateSpilledVolume(BigDecimal rz, long seconds, List zqrlList) { - return getQFromZqrl(rz, zqrlList).multiply(BigDecimal.valueOf(seconds)); - } - - /** - * 计算溢洪量 - * - * @param rz 计算溢洪的起始水位 - * @param seconds 溢洪时间,是两条水位数据的时间差,单位秒 - * @return 溢洪量 - * @author lyf - */ - public BigDecimal calculateSpilledVolume(BigDecimal rz, long seconds) { - return calculateSpilledVolume(rz, seconds, list()); - } - - /** - * 批量计算溢洪量 - * - * @param rsvrList 要计算的水位数据 - * @param zqrlList 水位流量关系曲线 - * @return 计算后的水位数据(时间倒序),含每条水位对应的流量和与上一条水位对应的溢洪量 - * @author lyf - */ - public List calculateSpilledVolumeList(List rsvrList, List zqrlList) { - rsvrList.sort(Comparator.comparing(StRsvrR::getTm)); - List ret = new ArrayList<>(); - BigDecimal sum = BigDecimal.ZERO; - for (int i = 0; i < rsvrList.size(); i++) { - StRsvrR rsvr = rsvrList.get(i); - BigDecimal rz = new BigDecimal(rsvr.getRz()); - Date tm = rsvr.getTm(); - RsvrComplexVo vo = RsvrComplexVo.of(rz, tm); - BigDecimal q = getQByZqrl(zqrlList,rz); - //TODO 这个需要公式进行对水位->流量的转换 - vo.setQ(q); - if (i == 0) { - vo.setTotalSv(BigDecimal.ZERO); - sum = BigDecimal.ZERO; - } else { - StRsvrR rsvrPrev = rsvrList.get(i - 1); - Date tmPrev = rsvrPrev.getTm(); - long seconds = tm.getTime() - tmPrev.getTime(); - sum = sum.add(vo.getQ().multiply(BigDecimal.valueOf(60 * 60))); - vo.setTotalSv(sum); - } - ret.add(vo); - } - return ret; - } - - /** - * 批量计算溢洪量 - * - * @param rsvrList 要计算的水位数据 - * @return 计算后的水位数据(时间倒序),含每条水位对应的流量和与上一条水位对应的溢洪量 - * @author lyf - */ - public List calculateSpilledVolumeList(List rsvrList) { - return calculateSpilledVolumeList(rsvrList, list()); - } - - /** - * 根据水位查表得流量 - * - * @param rz 水位 - * @return 查表流量 - * @author lyf - */ - public BigDecimal getQFromZqrl(BigDecimal rz) { - return getQFromZqrl(rz, list()); - } - - /** - * 根据水位查表得流量 - * - * @param rz 水位 - * @param zqrlList 水位流量关系曲线 - * @return 查表流量 - * @author lyf - */ - public BigDecimal getQFromZqrl(BigDecimal rz, List zqrlList) { - return toMap(zqrlList).getOrDefault(rz.setScale(3, RoundingMode.DOWN), BigDecimal.ZERO); - } - - /** - * 将水位流量曲线列表转为字典,水位作为键,注意BigDecimal做键的时候要匹配值和精度 - * - * @param zqrlList 水位流量曲线列表 - * @return 水位流量曲线字典 - * @author lyf - */ - private Map toMap(List zqrlList) { - return zqrlList.stream() - .map(item -> Map.entry(item.getZ().setScale(3, RoundingMode.DOWN), item.getQ())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - - public BigDecimal getQByZqrl(List zqrlBList, BigDecimal rz) { - // 1. 参数校验 - if (zqrlBList == null || zqrlBList.isEmpty()) { - throw new IllegalArgumentException("水位-流量关系列表不能为空"); - } - if (rz == null) { - throw new IllegalArgumentException("水位值不能为空"); - } - - // 2. 检查边界情况:如果目标水位低于最低水位或高于最高水位 - BigDecimal minRz = zqrlBList.get(0).getZ(); - BigDecimal maxRz = zqrlBList.get(zqrlBList.size() - 1).getZ(); - if (rz.compareTo(minRz) < 0) { - // 低于最低水位,返回0流量 - return BigDecimal.ZERO; - } - if (rz.compareTo(maxRz) > 0) { - // 高于最高水位,返回0流量 - return BigDecimal.ZERO; - } - - // 3. 二分查找水位区间 - int l = 0; - int r = zqrlBList.size() - 1; - - while (l <= r) { - int mid = l + (r - l) / 2; - BigDecimal midRz = zqrlBList.get(mid).getZ(); - int compareResult = midRz.compareTo(rz); - - if (compareResult == 0) { - // 找到完全匹配的水位,直接返回对应的流量 - return zqrlBList.get(mid).getQ(); - } else if (compareResult < 0) { - l = mid + 1; - } else { - r = mid - 1; - } - } - - /** - * 此时: - * l 指向第一个大于rz的位置 - * r 指向最后一个小于rz的位置 - * 即:r为 (x1, y1) - 下限水位和流量 - * l为 (x2, y2) - 上限水位和流量 - */ - if (l >= zqrlBList.size() || r < 0) { - return BigDecimal.ZERO; - } - - // 获取前后相邻的两个点 - StZqrlB lowerPoint = zqrlBList.get(r); - StZqrlB upperPoint = zqrlBList.get(l); - - // 使用线性插值计算流量 - return linearInterpolation( - lowerPoint.getZ(), lowerPoint.getQ(), - upperPoint.getZ(), upperPoint.getQ(), - rz - ).setScale(3, RoundingMode.HALF_UP); - } - - /** - * 线性插值辅助方法(可以复用之前的) - * @param x1 已知点1的水位 - * @param y1 已知点1的流量 - * @param x2 已知点2的水位 - * @param y2 已知点2的流量 - * @param x 目标水位 - * @return 目标水位对应的流量 - */ - private BigDecimal linearInterpolation(BigDecimal x1, BigDecimal y1, - BigDecimal x2, BigDecimal y2, - BigDecimal x) { - // 使用公式: y = y1 + ( (y2 - y1) / (x2 - x1) ) * (x - x1) - - // 计算斜率: (y2 - y1) / (x2 - x1) - BigDecimal slope = y2.subtract(y1) - .divide(x2.subtract(x1), 10, RoundingMode.HALF_UP); - - // 计算: slope * (x - x1) - BigDecimal xDiff = x.subtract(x1); - BigDecimal product = slope.multiply(xDiff); - - // 计算最终结果: y1 + product - return y1.add(product); - } - - /** - * 计算累计溢洪量 - * @param complexList - * @return - */ - public BigDecimal getFlowQSum(List complexList) { - BigDecimal sum = BigDecimal.ZERO; - if(complexList.isEmpty()){ - return null; - } - for (int i = 0; i < complexList.size(); i++) { - RsvrComplexVo current = complexList.get(i); - if (i == 0) { - // 第一条数据,累计量为0 - sum = BigDecimal.ZERO; - } else { - BigDecimal multiply = current.getQ().multiply(new BigDecimal(60 * 60)); - sum = sum.add(multiply); - } - } - return sum; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StZvarlBService.java b/src/main/java/com/gunshi/project/hsz/service/StZvarlBService.java deleted file mode 100644 index a132a5d..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StZvarlBService.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.StZvarlBMapper; -import com.gunshi.project.hsz.model.StZqrlB; -import com.gunshi.project.hsz.model.StZvarlB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 库( 湖)容曲线表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StZvarlBService extends ServiceImpl { - - /** - * 根据水位查表得库容 - * - * @param rz 水位 - * @return 查表库容 - * @author lyf - */ - public BigDecimal getWFromZvarl(BigDecimal rz) { - return getWFromZvarl(rz, BigDecimal.ZERO, list()); - } - - /** - * 根据水位查表得库容 - * - * @param rz 水位 - * @param defaultValue 查不到时默认值 - * @return 查表库容 - * @author lyf - */ - public BigDecimal getWFromZvarl(BigDecimal rz, BigDecimal defaultValue) { - return getWFromZvarl(rz, defaultValue, list()); - } - - /** - * 根据水位查表得库容 - * - * @param rz 水位 - * @param defaultValue 查不到时默认值 - * @param zvarlList 水位库容关系曲线 - * @return 查表库容 - * @author lyf - */ - public BigDecimal getWFromZvarl(BigDecimal rz, BigDecimal defaultValue, List zvarlList) { - return toMap(zvarlList).getOrDefault(rz.setScale(3, RoundingMode.DOWN), defaultValue); - } - - /** - * 将水位库容曲线列表转为字典,水位作为键,注意BigDecimal做键的时候要匹配值和精度 - * - * @param zvarlList 水位库容曲线列表 - * @return 水位库容曲线字典 - * @author lyf - */ - private Map toMap(List zvarlList) { - return zvarlList.stream() - .map(item -> Map.entry(item.getRz().setScale(3, RoundingMode.DOWN), item.getW())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - - /** - * 分段线性计算水位->库容 - * 首先需要保证 水位->库容的数据要按水位从小到大进行排列 - * @param zvarlBS - * @param rz - * @return - */ - public BigDecimal getWByZvarl(List zvarlBS, BigDecimal rz) { - //对数据进行排序 - // 1. 参数校验 - if (zvarlBS == null || zvarlBS.isEmpty()) { - throw new IllegalArgumentException("水位-库容关系列表不能为空"); - } - if (rz == null) { - throw new IllegalArgumentException("水位值不能为空"); - } - // 2. 检查边界情况:如果目标水位低于最低水位或高于最高水位 - BigDecimal minRz = zvarlBS.get(0).getRz(); - BigDecimal maxRz = zvarlBS.get(zvarlBS.size() - 1).getRz(); - if (rz.compareTo(minRz) < 0) { - // 低于最低水位,返回值0 - return BigDecimal.ZERO; - } - if (rz.compareTo(maxRz) > 0) { - // 高于最高水位,返回值0 - return BigDecimal.ZERO; - } - int l = 0; - int r = zvarlBS.size() -1; - //二分查找 由线性On时间复杂度降为Ologn - while (l <= r) { - int mid = l + (r-l) / 2; - BigDecimal midRz = zvarlBS.get(mid).getRz(); - int compareResult = midRz.compareTo(rz); - if(compareResult == 0 ){ - return zvarlBS.get(mid).getW(); - }else if(compareResult < 0){ - l = mid + 1; - }else{ - r = mid - 1; - } - } - - /** - * 此时 l 指向第一个大于rz的位置 - * r 指向最后一个小于rz的位置 - * 既 r为 x1 y1 - * l为 x2 y2 - */ - if(l < 0 || r >= zvarlBS.size()){ - return BigDecimal.ZERO; - } - //获取前后差值的点 - StZvarlB lowerPoint = zvarlBS.get(r); - StZvarlB upperPoint = zvarlBS.get(l); - return linearInterpolation(lowerPoint.getRz(),lowerPoint.getW(),upperPoint.getRz(),upperPoint.getW(),rz).setScale(3); - } - - - /** - * 线性插值辅助方法 - * @param x1 已知点1的水位 - * @param y1 已知点1的库容 - * @param x2 已知点2的水位 - * @param y2 已知点2的库容 - * @param x 目标水位 - * @return 目标水位对应的库容 - */ - private BigDecimal linearInterpolation(BigDecimal x1, BigDecimal y1, - BigDecimal x2, BigDecimal y2, - BigDecimal x) { - // 使用公式: y = y1 + ( (y2 - y1) / (x2 - x1) ) * (x - x1) - - // 计算斜率: (y2 - y1) / (x2 - x1) - BigDecimal slope = y2.subtract(y1) - .divide(x2.subtract(x1), 10, RoundingMode.HALF_UP); - - // 计算: slope * (x - x1) - BigDecimal xDiff = x.subtract(x1); - BigDecimal product = slope.multiply(xDiff); - - // 计算最终结果: y1 + product,并设置小数位数和舍入模式 - return y1.add(product).setScale(3, RoundingMode.HALF_UP); - } - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/StatisticsService.java b/src/main/java/com/gunshi/project/hsz/service/StatisticsService.java deleted file mode 100644 index 624083e..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/StatisticsService.java +++ /dev/null @@ -1,609 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.project.hsz.common.model.vo.StRzVo; -import com.gunshi.project.hsz.entity.so.StatisticsQuerySo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.mapper.StPptnRHMapper; -import com.gunshi.project.hsz.model.StPptnRD; -import com.gunshi.project.hsz.model.StPptnRH; -import com.gunshi.project.hsz.util.DateUtil; -import com.gunshi.project.hsz.util.ExcelUtil; -import com.gunshi.project.hsz.util.MyBeanUtil; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 报图报表 - * author: xusan - * date: 2024-07-08 17:30:37 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class StatisticsService { - - @Autowired - private StPptnRHMapper stPptnRHMapper; - - private static final String TIME_END_PREFIX = " 08:00:00"; - - private static final String ZERO_TIME_END_PREFIX = " 00:00:00"; - - public List sdJyRb(DateRangeSo dateRangeSo) { - List res = new ArrayList<>(); - String start = DateUtil.convertDateToString(dateRangeSo.getStart()) + TIME_END_PREFIX; - String end = DateUtil.getPlusDate(dateRangeSo.getEnd(), 1) + TIME_END_PREFIX; - List dates = DateUtil.getDatesBetween(dateRangeSo.getStart(), dateRangeSo.getEnd(), false); - List list = stPptnRHMapper.queryList(start, end); - for (String date : dates) { - SdJyRbVo vo = new SdJyRbVo(); - vo.setDate(date); - getDrp(vo, list); - res.add(vo); - } - return res; - } - - private void getDrp(SdJyRbVo vo, List list) { - if (CollectionUtils.isNotEmpty(list)) { - String date = vo.getDate(); - BigDecimal drpD = new BigDecimal(0); - Date start = DateUtil.convertStringToDate(date + TIME_END_PREFIX); - String end = DateUtil.getPlusTime(date + TIME_END_PREFIX, 24); - List dayList = list.stream().filter(o -> o.getTm().compareTo(start) > 0 && o.getTm().compareTo(DateUtil.convertStringToDate(end)) <= 0).collect(Collectors.toList()); - SimpleDateFormat simpleDateFormatHH = new SimpleDateFormat("HH"); - for (int i = 0; i < dayList.size(); i++) { - StPptnRH stPptnRH = dayList.get(i); - if (stPptnRH.getDrp() != null) { - vo = setHourDrp(vo, simpleDateFormatHH.format(stPptnRH.getTm()), stPptnRH.getDrp()); - drpD = drpD.add(stPptnRH.getDrp()); - } - } - vo.setDrpD(drpD); - } - } - - private SdJyRbVo setHourDrp(SdJyRbVo vo, String HH, BigDecimal drp) { - switch (HH) { - case "01": - vo.setDrpH1(drp); - break; - case "02": - vo.setDrpH2(drp); - break; - case "03": - vo.setDrpH3(drp); - break; - case "04": - vo.setDrpH4(drp); - break; - case "05": - vo.setDrpH5(drp); - break; - case "06": - vo.setDrpH6(drp); - break; - case "07": - vo.setDrpH7(drp); - break; - case "08": - vo.setDrpH8(drp); - break; - case "09": - vo.setDrpH9(drp); - break; - case "10": - vo.setDrpH10(drp); - break; - case "11": - vo.setDrpH11(drp); - break; - case "12": - vo.setDrpH12(drp); - break; - case "13": - vo.setDrpH13(drp); - break; - case "14": - vo.setDrpH14(drp); - break; - case "15": - vo.setDrpH15(drp); - break; - case "16": - vo.setDrpH16(drp); - break; - case "17": - vo.setDrpH17(drp); - break; - case "18": - vo.setDrpH18(drp); - break; - case "19": - vo.setDrpH19(drp); - break; - case "20": - vo.setDrpH20(drp); - break; - case "21": - vo.setDrpH21(drp); - break; - case "22": - vo.setDrpH22(drp); - break; - case "23": - vo.setDrpH23(drp); - break; - case "00": - vo.setDrpH24(drp); - break; - } - return vo; - } - - public void sdJyRbExport(DateRangeSo dateRangeSo, HttpServletResponse response) { - List list = sdJyRb(dateRangeSo); - String start = DateUtil.convertDateToChineseYmd(dateRangeSo.getStart()); - String end = DateUtil.convertDateToChineseYmd(dateRangeSo.getEnd()); - String fileName = start + "-" + end + "小时降雨量日报表"; - ExcelUtil.exportExcel(list, fileName, SdJyRbVo.class, response, fileName); - } - - public List sdSwRb(DateRangeSo dateRangeSo) { - List res = new ArrayList<>(); - String start = DateUtil.convertDateToString(dateRangeSo.getStart()) + ZERO_TIME_END_PREFIX; - String end = DateUtil.getPlusDate(dateRangeSo.getEnd(), 1) + ZERO_TIME_END_PREFIX; - List dates = DateUtil.getDatesBetween(dateRangeSo.getStart(), dateRangeSo.getEnd(), false); - List list = stPptnRHMapper.queryRzList(start, end); - for (String date : dates) { - SdSwRbVo vo = new SdSwRbVo(); - vo.setDate(date); - getRz(vo, list); - res.add(vo); - } - return res; - } - - private void getRz(SdSwRbVo vo, List list) { - if (CollectionUtils.isNotEmpty(list)) { - String date = vo.getDate(); - BigDecimal rzD = new BigDecimal(0); - Integer count = 0; - String start = date + ZERO_TIME_END_PREFIX; - String end = DateUtil.getPlusTime(date + ZERO_TIME_END_PREFIX, 24); - List dayList = list.stream().filter(o -> o.getTm().compareTo(start) >= 0 && o.getTm().compareTo(end) < 0).collect(Collectors.toList()); - SimpleDateFormat simpleDateFormatHH = new SimpleDateFormat("HH"); - for (int i = 0; i < dayList.size(); i++) { - StRzVo stRzVo = dayList.get(i); - if (stRzVo.getRz() != null) { - vo = setHourRz(vo, simpleDateFormatHH.format(DateUtil.convertStringToDate(stRzVo.getTm())), stRzVo.getRz()); - rzD = rzD.add(stRzVo.getRz()); - count++; - } - } - if(count > 0){ - vo.setRzAvg(rzD.divide(new BigDecimal(count), 2, RoundingMode.HALF_UP)); - } - } - } - - private SdSwRbVo setHourRz(SdSwRbVo vo, String HH, BigDecimal rz) { - switch (HH) { - case "01": - vo.setRzH1(rz); - break; - case "02": - vo.setRzH2(rz); - break; - case "03": - vo.setRzH3(rz); - break; - case "04": - vo.setRzH4(rz); - break; - case "05": - vo.setRzH5(rz); - break; - case "06": - vo.setRzH6(rz); - break; - case "07": - vo.setRzH7(rz); - break; - case "08": - vo.setRzH8(rz); - break; - case "09": - vo.setRzH9(rz); - break; - case "10": - vo.setRzH10(rz); - break; - case "11": - vo.setRzH11(rz); - break; - case "12": - vo.setRzH12(rz); - break; - case "13": - vo.setRzH13(rz); - break; - case "14": - vo.setRzH14(rz); - break; - case "15": - vo.setRzH15(rz); - break; - case "16": - vo.setRzH16(rz); - break; - case "17": - vo.setRzH17(rz); - break; - case "18": - vo.setRzH18(rz); - break; - case "19": - vo.setRzH19(rz); - break; - case "20": - vo.setRzH20(rz); - break; - case "21": - vo.setRzH21(rz); - break; - case "22": - vo.setRzH22(rz); - break; - case "23": - vo.setRzH23(rz); - break; - case "00": - vo.setRzH24(rz); - break; - } - return vo; - } - - public void sdSwRbExport(DateRangeSo dateRangeSo, HttpServletResponse response) { - List list = sdSwRb(dateRangeSo); - String start = DateUtil.convertDateToChineseYmd(dateRangeSo.getStart()); - String end = DateUtil.convertDateToChineseYmd(dateRangeSo.getEnd()); - String fileName = start + "-" + end + "时段水位日报表"; - ExcelUtil.exportExcel(list, fileName, SdSwRbVo.class, response, fileName); - } - - public List rjyNb(StatisticsQuerySo statisticsQuerySo,Integer type) { - List res = new ArrayList<>(); - Integer year = statisticsQuerySo.getYear(); - List list = new ArrayList<>(); - if(type != null){ - list = stPptnRHMapper.queryDayRz(year.toString()); - }else{ - list = stPptnRHMapper.queryDayDrp(year); - } - if (CollectionUtils.isEmpty(list)) { - return res; - } - Map> map = list.stream().collect(Collectors.groupingBy(StPptnRD::getDay)); - for (int i = 1; i < 32; i++) { - RjyNbVo vo = new RjyNbVo(); - String s = String.valueOf(i); - vo.setDate(s); - if(i < 10){ - s = "0" + i; - } - List rds = map.get(s); - if(CollectionUtils.isNotEmpty(rds)){ - for (int j = 0; j < rds.size(); j++) { - StPptnRD rd = rds.get(j); - if (rd.getDrp() != null) { - vo = setDayDrp(vo, rd.getMonth(), rd.getDrp().toString()); - } - } - } - res.add(vo); - } - return res; - } - - private RjyNbVo setDayDrp(RjyNbVo vo, String month, String drp) { - switch (month) { - case "01": - vo.setDrpM1(drp); - break; - case "02": - vo.setDrpM2(drp); - break; - case "03": - vo.setDrpM3(drp); - break; - case "04": - vo.setDrpM4(drp); - break; - case "05": - vo.setDrpM5(drp); - break; - case "06": - vo.setDrpM6(drp); - break; - case "07": - vo.setDrpM7(drp); - break; - case "08": - vo.setDrpM8(drp); - break; - case "09": - vo.setDrpM9(drp); - break; - case "10": - vo.setDrpM10(drp); - break; - case "11": - vo.setDrpM11(drp); - break; - case "12": - vo.setDrpM12(drp); - break; - } - return vo; - } - - public RjyNbStatVo rjyNbStat(StatisticsQuerySo statisticsQuerySo) { - RjyNbStatVo vo = new RjyNbStatVo(); - Integer year = statisticsQuerySo.getYear(); - List list = stPptnRHMapper.queryDayDrp(year); - if (CollectionUtils.isEmpty(list)) { - return vo; - } - BigDecimal drpSum = list.stream().map(StPptnRD::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add); - vo.setDrpSum(drpSum); - Long count = list.stream().filter(o -> o.getDrp().compareTo(new BigDecimal(0)) > 0).collect(Collectors.counting()); - vo.setDayCount(count); - //按月份分组 - Map> map = list.stream().collect(Collectors.groupingBy(StPptnRD::getMonth)); - - List childList = new ArrayList<>(); - RjyNbVo rjyNbVo = new RjyNbVo(); - rjyNbVo.setDate("月降雨量"); - setMonthSumDrp(rjyNbVo,map); - childList.add(rjyNbVo); - - RjyNbVo rVo = new RjyNbVo(); - rVo.setDate("降雨日数"); - setMonthDrpDay(rVo,map); - childList.add(rVo); - - RjyNbVo max = new RjyNbVo(); - max.setDate("最大日量"); - setMonthDrpMax(max,map); - childList.add(max); - - vo.setList(childList); - return vo; - } - - private void setMonthDrpMax(RjyNbVo rjyNbVo, Map> map) { - for(int i = 1;i< 13;i++){ - String s = String.valueOf(i); - if(i < 10){ - s = "0" + i; - } - List list = map.get(s); - if(CollectionUtils.isNotEmpty(list)) { - BigDecimal maxDrp = list.stream().max(Comparator.comparing(StPptnRD::getDrp)).get().getDrp(); - setDayDrp(rjyNbVo, s, maxDrp.toString()); - } - } - } - - - private void setMonthSumDrp(RjyNbVo rjyNbVo, Map> map) { - for(int i = 1;i< 13;i++){ - String s = String.valueOf(i); - if(i < 10){ - s = "0" + i; - } - List list = map.get(s); - if(CollectionUtils.isNotEmpty(list)){ - BigDecimal drpSum = list.stream().map(StPptnRD::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add); - setDayDrp(rjyNbVo,s,drpSum.toString()); - } - } - } - - private void setMonthDrpDay(RjyNbVo rjyNbVo, Map> map) { - for(int i = 1;i< 13;i++){ - String s = String.valueOf(i); - if(i < 10){ - s = "0" + i; - } - List list = map.get(s); - if(CollectionUtils.isNotEmpty(list)){ - Long count = list.stream().filter(o -> o.getDrp().compareTo(new BigDecimal(0)) > 0).collect(Collectors.counting()); - setDayDrp(rjyNbVo,s,new BigDecimal(count).toString()); - } - } - } - - public void rjyNbExport(StatisticsQuerySo statisticsQuerySo, HttpServletResponse response) { - //上方数据 - List rjyNb = rjyNb(statisticsQuerySo,null); - //下方统计数据 - RjyNbStatVo vo = rjyNbStat(statisticsQuerySo); - List list = vo.getList(); - rjyNb.addAll(list); - //最下方拼接一条数据 - RjyNbVo rjyNbVo = new RjyNbVo(); - rjyNbVo.setDate("年统计"); - rjyNbVo.setDrpM1("降水量"); - rjyNbVo.setDrpM2("降水量"); - rjyNbVo.setDrpM3(vo.getDrpSum().toString()); - rjyNbVo.setDrpM4(vo.getDrpSum().toString()); - rjyNbVo.setDrpM5(vo.getDrpSum().toString()); - rjyNbVo.setDrpM6(vo.getDrpSum().toString()); - rjyNbVo.setDrpM7("降雨日数"); - rjyNbVo.setDrpM8("降雨日数"); - rjyNbVo.setDrpM9(vo.getDayCount().toString()); - rjyNbVo.setDrpM10(vo.getDayCount().toString()); - rjyNbVo.setDrpM11(vo.getDayCount().toString()); - rjyNbVo.setDrpM12(vo.getDayCount().toString()); - rjyNb.add(rjyNbVo); - - String fileName = "檀树岗水库" + statisticsQuerySo.getYear() + "年日降雨年报表"; - ExcelUtil.exportExcel(rjyNb, fileName, RjyNbVo.class, response, fileName,1); - } - - public List rjswNb(StatisticsQuerySo statisticsQuerySo) { - return rjyNb(statisticsQuerySo,1); - } - - public RjswNbStatVo rjswNbStat(StatisticsQuerySo statisticsQuerySo) { - RjswNbStatVo vo = new RjswNbStatVo(); - Integer year = statisticsQuerySo.getYear(); - List list = stPptnRHMapper.queryDayRz(year.toString()); - if (CollectionUtils.isEmpty(list)) { - return vo; - } - BigDecimal max = list.stream().max(Comparator.comparing(StPptnRD::getDrp)).get().getDrp(); - vo.setMax(max); - BigDecimal min = list.stream().min(Comparator.comparing(StPptnRD::getDrp)).get().getDrp(); - vo.setMin(min); - BigDecimal sum = list.stream().map(StPptnRD::getDrp).reduce(BigDecimal.ZERO,BigDecimal::add); - Long count = list.stream().filter(o -> o.getDrp().compareTo(new BigDecimal(0)) > 0).collect(Collectors.counting()); - vo.setAvg(sum.divide(new BigDecimal(count),2,RoundingMode.HALF_UP)); - //按月份分组 - Map> map = list.stream().collect(Collectors.groupingBy(StPptnRD::getMonth)); - List statVos = statData(map); - - List childList = new ArrayList<>(); - - RjswNbVo rjswNbVo = new RjswNbVo(); - Map avgMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getAvg)); - RjyNbVo rjyNbVo = setDayRz(avgMap); - BeanUtils.copyProperties(rjyNbVo,rjswNbVo); - rjswNbVo.setTheme("月统计"); - rjswNbVo.setDate("平均"); - childList.add(rjswNbVo); - - RjswNbVo rjswNbVoMax = new RjswNbVo(); - Map maxMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getMax)); - RjyNbVo rjyNbVoMax = setDayRz(maxMap); - BeanUtils.copyProperties(rjyNbVoMax,rjswNbVoMax); - rjswNbVoMax.setTheme("月统计"); - rjswNbVoMax.setDate("最高"); - childList.add(rjswNbVoMax); - - RjswNbVo rjMaxDate = new RjswNbVo(); - Map maxDateMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getMaxDate)); - RjyNbVo rjyNbVoMaxDate = setDayRz(maxDateMap); - BeanUtils.copyProperties(rjyNbVoMaxDate,rjMaxDate); - rjMaxDate.setTheme("月统计"); - rjMaxDate.setDate("最高日期"); - childList.add(rjMaxDate); - - RjswNbVo rjswNbVoMin = new RjswNbVo(); - Map minMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getMin)); - RjyNbVo rjyNbVoMin = setDayRz(minMap); - BeanUtils.copyProperties(rjyNbVoMin,rjswNbVoMin); - rjswNbVoMin.setTheme("月统计"); - rjswNbVoMin.setDate("最低"); - childList.add(rjswNbVoMin); - - RjswNbVo rjMinDate = new RjswNbVo(); - Map minDateMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getMinDate)); - RjyNbVo rjyNbVoMinDate = setDayRz(minDateMap); - BeanUtils.copyProperties(rjyNbVoMinDate,rjMinDate); - rjMinDate.setTheme("月统计"); - rjMinDate.setDate("最低日期"); - childList.add(rjMinDate); - - vo.setList(childList); - return vo; - } - - private RjyNbVo setDayRz(Map map) { - RjyNbVo rjyNbVo = new RjyNbVo(); - map.entrySet().forEach(entry->{ - String month = entry.getKey(); - String value = entry.getValue(); - setDayDrp(rjyNbVo,month,value); - }); - return rjyNbVo; - } - - - private List statData(Map> map) { - List statVos = new ArrayList<>(); - for(int i = 1;i< 13;i++){ - String s = String.valueOf(i); - if(i < 10){ - s = "0" + i; - } - List list = map.get(s); - if(CollectionUtils.isNotEmpty(list)){ - NbStatVo vo = new NbStatVo(); - vo.setMonth(s); - StPptnRD max = list.stream().max(Comparator.comparing(StPptnRD::getDrp)).get(); - vo.setMax(max.getDrp().toString()); - vo.setMaxDate(max.getDay()+"日"); - - StPptnRD min = list.stream().min(Comparator.comparing(StPptnRD::getDrp)).get(); - vo.setMin(min.getDrp().toString()); - vo.setMinDate(min.getDay()+"日"); - - BigDecimal sum = list.stream().map(StPptnRD::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add); - Long count = list.stream().filter(o -> o.getDrp().compareTo(new BigDecimal(0)) > 0).collect(Collectors.counting()); - vo.setAvg(sum.divide(new BigDecimal(count),2,RoundingMode.HALF_UP).toString()); - statVos.add(vo); - } - } - return statVos; - } - - public void rjswNbExport(StatisticsQuerySo statisticsQuerySo, HttpServletResponse response) { - //上方数据 - List rjyNbVos = this.rjswNb(statisticsQuerySo); - List rjswNbVos = MyBeanUtil.collectionCopy(rjyNbVos, RjswNbVo.class); - rjswNbVos.stream().forEach(o->o.setTheme(o.getDate())); - //下方统计数据 - RjswNbStatVo statVo = this.rjswNbStat(statisticsQuerySo); - List list = statVo.getList(); - rjswNbVos.addAll(list); - - //最下方拼接一条数据 - RjswNbVo rjswNbVo = new RjswNbVo(); - rjswNbVo.setTheme("年统计"); - rjswNbVo.setDate("年统计"); - rjswNbVo.setDrpM1("最高水位"); - rjswNbVo.setDrpM2(statVo.getMax().toString()); - rjswNbVo.setDrpM3(statVo.getMax().toString()); - rjswNbVo.setDrpM4(statVo.getMax().toString()); - rjswNbVo.setDrpM5("最低水位"); - rjswNbVo.setDrpM6(statVo.getMin().toString()); - rjswNbVo.setDrpM7(statVo.getMin().toString()); - rjswNbVo.setDrpM8(statVo.getMin().toString()); - rjswNbVo.setDrpM9("平均水位"); - rjswNbVo.setDrpM10(statVo.getAvg().toString()); - rjswNbVo.setDrpM11(statVo.getAvg().toString()); - rjswNbVo.setDrpM12(statVo.getAvg().toString()); - rjswNbVos.add(rjswNbVo); - - String fileName = "檀树岗水库" + statisticsQuerySo.getYear() + "年日平均水位年报表"; - ExcelUtil.exportExcel(rjswNbVos, fileName, RjswNbVo.class, response, fileName,2); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/SyDataCheckRuleService.java b/src/main/java/com/gunshi/project/hsz/service/SyDataCheckRuleService.java deleted file mode 100644 index c7a77cd..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SyDataCheckRuleService.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.JcskSyB; -import com.gunshi.project.hsz.entity.so.SyDataCheckRulePageSo; -import com.gunshi.project.hsz.mapper.StZvarlBMapper; -import com.gunshi.project.hsz.mapper.SyDataCheckRuleMapper; -import com.gunshi.project.hsz.model.StZvarlB; -import com.gunshi.project.hsz.model.SyDataCheckRule; -import com.ruoyi.common.utils.StringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SyDataCheckRuleService extends ServiceImpl { - - public Page pageQuery(SyDataCheckRulePageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(page.getDvcd())){ - queryWrapper.eq(SyDataCheckRule::getDvcd,page.getDvcd()); - } - if(!StringUtils.isBlank(page.getDm())){ - queryWrapper.eq(SyDataCheckRule::getDm,page.getDm()); - } - Page syDataCheckRulePage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); - return syDataCheckRulePage; - } - - public SyDataCheckRule saveData(SyDataCheckRule dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SyDataCheckRule::getDvcd,dto.getDvcd()); - SyDataCheckRule syDataCheckRule = this.baseMapper.selectOne(queryWrapper); - if(syDataCheckRule != null){ - throw new IllegalArgumentException("对不起,该测点已配置清洗策略"); - } - save(dto); - return dto; - } - - public Boolean updateData(SyDataCheckRule dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SyDataCheckRule::getDvcd,dto.getDvcd()); - queryWrapper.ne(SyDataCheckRule::getId,dto.getId()); - SyDataCheckRule syDataCheckRule = this.baseMapper.selectOne(queryWrapper); - if(syDataCheckRule != null){ - throw new IllegalArgumentException("对不起,该测点已配置清洗策略"); - } - boolean flag = updateById(dto); - return flag; - } - - public SyDataCheckRule getByDvcd(String dvcd) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SyDataCheckRule::getDvcd,dvcd); - return this.baseMapper.selectOne(queryWrapper); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/SyRegressionDataService.java b/src/main/java/com/gunshi/project/hsz/service/SyRegressionDataService.java deleted file mode 100644 index a1f6401..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SyRegressionDataService.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.entity.vo.ProjectSafeCalculateVo; - -import com.gunshi.project.hsz.mapper.SyRegressionDataMapper; -import com.gunshi.project.hsz.model.SyRegressionData; -import com.gunshi.project.hsz.util.RegressionEquationFormatter; -import jakarta.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.net.URLEncoder; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SyRegressionDataService extends ServiceImpl { - - - public List queryData(SyRegressionData dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(dto.getDvcd() != null){ - queryWrapper.eq(SyRegressionData::getDvcd, dto.getDvcd()); - } - if(dto.getOrder() != null){ - queryWrapper.eq(SyRegressionData::getOrder, dto.getOrder()); - } - queryWrapper.orderByDesc(SyRegressionData::getCreateTime) - .last("limit 1"); - List syRegressionData = this.baseMapper.selectList(queryWrapper); - return syRegressionData; - } - - public void export(String dvcd, ProjectSafeCalculateVo ans, HttpServletResponse response) { - try { - // 设置响应头 - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setCharacterEncoding("UTF-8"); - String fileName = URLEncoder.encode("渗透压力监测数据", "UTF-8").replaceAll("\\+", "%20"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); - - // 创建Excel工作簿 - Workbook workbook = new XSSFWorkbook(); - Sheet sheet = workbook.createSheet("渗透压力监测数据"); - - // 创建单元格样式 - 支持换行 - CellStyle wrapStyle = workbook.createCellStyle(); - wrapStyle.setWrapText(true); // 设置自动换行 - - // 设置行号 - int rowNum = 0; - - // 第一行:测点编号(不合并) - Row row1 = sheet.createRow(rowNum++); - Cell label1 = row1.createCell(0); - label1.setCellValue("测点编号:"); - Cell value1 = row1.createCell(1); - value1.setCellValue(dvcd); - - // 第二行:一阶回归方程(从D列开始合并10个单元格) - Row row2 = sheet.createRow(rowNum++); - Cell label2 = row2.createCell(0); - label2.setCellValue("一阶回归方程:"); - Cell value2 = row2.createCell(3); // D列(索引为3) - String one = RegressionEquationFormatter.formatEquation(ans.getOne()); - value2.setCellValue(one != null ? one : ""); - value2.setCellStyle(wrapStyle); - // 合并D列到M列(共10个单元格):从第3列到第12列 - sheet.addMergedRegion(new CellRangeAddress(1, 1, 3, 12)); - - // 第三行:二阶回归方程(从D列开始合并10个单元格) - Row row3 = sheet.createRow(rowNum++); - Cell label3 = row3.createCell(0); - label3.setCellValue("二阶回归方程:"); - Cell value3 = row3.createCell(3); // D列(索引为3) - String tow = RegressionEquationFormatter.formatEquation(ans.getTwo()); - value3.setCellValue(tow != null ? tow : ""); - value3.setCellStyle(wrapStyle); - // 合并D列到M列(共10个单元格):从第3列到第12列 - sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 12)); - - // 第四行:三阶回归方程(从D列开始合并10个单元格) - Row row4 = sheet.createRow(rowNum++); - Cell label4 = row4.createCell(0); - label4.setCellValue("三阶回归方程:"); - Cell value4 = row4.createCell(3); // D列(索引为3) - String three = RegressionEquationFormatter.formatEquation(ans.getThree()); - value4.setCellValue(three != null ? three : ""); - value4.setCellStyle(wrapStyle); - // 合并D列到M列(共10个单元格):从第3列到第12列 - sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 12)); - - // 第五行:四阶回归方程(从D列开始合并10个单元格) - Row row5 = sheet.createRow(rowNum++); - Cell label5 = row5.createCell(0); - label5.setCellValue("四阶回归方程:"); - Cell value5 = row5.createCell(3); // D列(索引为3) - String four = RegressionEquationFormatter.formatEquation(ans.getFour()); - value5.setCellValue(four != null ? four : ""); - value5.setCellStyle(wrapStyle); - // 合并D列到M列(共10个单元格):从第3列到第12列 - sheet.addMergedRegion(new CellRangeAddress(4, 4, 3, 12)); - - // 空一行 - rowNum++; - - // 表头行 - 从第0列开始正常显示 - Row headerRow = sheet.createRow(rowNum++); - String[] headers = {"监测时间", "监测值", "库水位"}; - for (int i = 0; i < headers.length; i++) { - Cell headerCell = headerRow.createCell(i); - headerCell.setCellValue(headers[i]); - } - - // 数据行 - if (ans.getDatas() != null && !ans.getDatas().isEmpty()) { - for (OsmoticPressDetailVo data : ans.getDatas()) { - Row dataRow = sheet.createRow(rowNum++); - - // 监测时间 - 第0列 - Cell timeCell = dataRow.createCell(0); - timeCell.setCellValue(data.getTm() != null ? data.getTm() : ""); - - // 监测值 - 第1列 - Cell valueCell = dataRow.createCell(1); - if (data.getValue() != null) { - valueCell.setCellValue(data.getValue().doubleValue()); - } else { - valueCell.setCellValue(""); - } - - // 库水位 - 第2列 - Cell rzCell = dataRow.createCell(2); - if (data.getRz() != null) { - rzCell.setCellValue(data.getRz().doubleValue()); - } else { - rzCell.setCellValue(""); - } - } - } - - // 设置列宽 - sheet.setColumnWidth(0, 15 * 256); // A列:标签列,固定宽度 - sheet.setColumnWidth(1, 12 * 256); // B列:测点编号值,固定宽度 - sheet.setColumnWidth(2, 12 * 256); // C列:空列,固定宽度 - sheet.setColumnWidth(3, 50 * 256); // D列:方程列开始,固定宽度 - - // 自动调整数据表格的列宽(只对数据区域有效) - sheet.autoSizeColumn(0); // 监测时间列 - sheet.autoSizeColumn(1); // 监测值列 - sheet.autoSizeColumn(2); // 库水位列 - - // 写入响应流 - workbook.write(response.getOutputStream()); - workbook.close(); - - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException("导出Excel失败"); - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/SysDictBService.java b/src/main/java/com/gunshi/project/hsz/service/SysDictBService.java deleted file mode 100644 index 1228df0..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SysDictBService.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.SysDictBMapper; -import com.gunshi.project.hsz.model.SysDictB; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 系统字典表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SysDictBService extends ServiceImpl -{ - - - public List tree() { - List list = list(); - if (CollectionUtils.isEmpty(list)){ - return list; - } - Map> listMap = list.stream().collect(Collectors.groupingBy(SysDictB::getPid)); - - list.forEach(o -> o.setChildren(listMap.get(o.getId()))); - List parentList = list.stream().filter(o -> 0L == o.getPid()).collect(Collectors.toList()); - return sorted(parentList); - } - - private List sorted( List tree) { - - List sorteds = null; - - if (CollectionUtils.isNotEmpty(tree)){ - sorteds = tree.stream().sorted(Comparator.comparing(SysDictB::getSortOn) - ).collect(Collectors.toList()); - sorteds.forEach(o->{ - o.setChildren(sorted(o.getChildren())); - }); - } - - return sorteds; - } - - public List listByCd(String dictCd) { - return this.baseMapper.listByCd(dictCd); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/SzCaseService.java b/src/main/java/com/gunshi/project/hsz/service/SzCaseService.java deleted file mode 100644 index 95167d1..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SzCaseService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.SzCaseMapper; -import com.gunshi.project.hsz.model.SzCase; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SzCaseService extends ServiceImpl { -} diff --git a/src/main/java/com/gunshi/project/hsz/service/SzRegulatoryFrameworkService.java b/src/main/java/com/gunshi/project/hsz/service/SzRegulatoryFrameworkService.java deleted file mode 100644 index 176719d..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SzRegulatoryFrameworkService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.SzRegulatoryFrameworkMapper; -import com.gunshi.project.hsz.model.SzRegulatoryFramework; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SzRegulatoryFrameworkService extends ServiceImpl { -} diff --git a/src/main/java/com/gunshi/project/hsz/service/SzRuleByLawService.java b/src/main/java/com/gunshi/project/hsz/service/SzRuleByLawService.java deleted file mode 100644 index a500409..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SzRuleByLawService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.SzRuleByLawMapper; -import com.gunshi.project.hsz.model.SzRuleByLaw; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SzRuleByLawService extends ServiceImpl { -} diff --git a/src/main/java/com/gunshi/project/hsz/service/SzTreatmentBasisService.java b/src/main/java/com/gunshi/project/hsz/service/SzTreatmentBasisService.java deleted file mode 100644 index 63d24ea..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/SzTreatmentBasisService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.SzTreatmentBasisMapper; -import com.gunshi.project.hsz.model.SzTreatmentBasis; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * Description: - * Created by XuSan on 2024/9/24. - * - * @author XuSan - * @version 1.0 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class SzTreatmentBasisService extends ServiceImpl { -} diff --git a/src/main/java/com/gunshi/project/hsz/service/TermiteAdverPicService.java b/src/main/java/com/gunshi/project/hsz/service/TermiteAdverPicService.java deleted file mode 100644 index 163e7c8..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/TermiteAdverPicService.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.TermiteAdverPicMapper; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.model.TermiteAdverPic; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 描述: 白蚁防治宣传图片墙 - * author: xusan - * date: 2024-08-29 17:33:09 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class TermiteAdverPicService extends ServiceImpl -{ - - @Autowired - private FileAssociationsService fileService; - - public TermiteAdverPic saveData(TermiteAdverPic dto) { - dto.setId(IdWorker.getId()); - dto.setCreateTime(new Date()); - boolean result = this.save(dto); - if (result) { - fileService.saveFile(Arrays.asList(dto.getPic()), getGroupId(), String.valueOf(dto.getId())); - } - return dto; - } - - public String getGroupId() { - return "termiteAdverPic"; - } - - public Boolean delData(Serializable id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - fileService.deleteFile(getGroupId(), id.toString()); - } - return data; - } - - public List queryList() { - List list = this.list().stream().sorted(Comparator.comparing(TermiteAdverPic::getCreateTime).reversed()).collect(Collectors.toList()); - for(TermiteAdverPic pic : list){ - List files = fileService.getFiles(getGroupId(), pic.getId().toString()); - pic.setPic(files.get(0)); - } - return list; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/TermiteSurveyDetailService.java b/src/main/java/com/gunshi/project/hsz/service/TermiteSurveyDetailService.java deleted file mode 100644 index 1963a35..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/TermiteSurveyDetailService.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -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.gunshi.project.hsz.entity.so.TermiteSurveyPageSo; -import com.gunshi.project.hsz.mapper.RiskControlInfoMapper; -import com.gunshi.project.hsz.mapper.TermiteSurveyDetailMapper; -import com.gunshi.project.hsz.model.BzDictRel; -import com.gunshi.project.hsz.model.FileAssociations; -import com.gunshi.project.hsz.model.TermiteSurvey; -import com.gunshi.project.hsz.model.TermiteSurveyDetail; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 描述: 白蚁普查明细 - * author: xusan - * date: 2024-08-28 10:25:17 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class TermiteSurveyDetailService extends ServiceImpl -{ - @Autowired - private FileAssociationsService fileService; - - @Autowired - private BzDictRelService bzDictRelService; - - @Autowired - private RiskControlInfoMapper controlInfoMapper; - - public void saveDetail(List details, Long id) { - if(!CollectionUtils.isEmpty(details)){ - List picList = new ArrayList<>(); - List videoList = new ArrayList<>(); - List relList = new ArrayList<>(); - for (TermiteSurveyDetail detail : details){ - Long detailId = IdWorker.getId(); - detail.setId(detailId); - detail.setSurveyId(id); - if(CollectionUtils.isNotEmpty(detail.getActSign())){ - detail.getActSign().stream().forEach(o->o.setBusinessId(detailId)); - relList.addAll(detail.getActSign()); - } - if(CollectionUtils.isNotEmpty(detail.getPics())){ - detail.getPics().stream().forEach(o->o.setBusinessId(detailId.toString())); - picList.addAll(detail.getPics()); - } - if(CollectionUtils.isNotEmpty(detail.getVideos())){ - detail.getVideos().stream().forEach(o->o.setBusinessId(detailId.toString())); - videoList.addAll(detail.getVideos()); - } - } - this.saveBatch(details); - bzDictRelService.saveRel(relList,null,getGroupId()); - fileService.save(picList,null,getGroupId(),getPicType()); - fileService.save(videoList,null,getGroupId(),getVideoType()); - } - - } - - private String getPicType() { - return "termitePic"; - } - - private String getVideoType() { - return "termiteVideo"; - } - - public String getGroupId() { - return "termiteSurvey"; - } - - - public void updateDetail(List details, Long id) { - delDetail(id); - saveDetail(details,id); - } - - public void delDetail(Long id) { - List list = getDetailById(id); - if(CollectionUtils.isEmpty(list)){ - return; - } - List detailIds = list.stream().map(TermiteSurveyDetail::getId).collect(Collectors.toList()); - List ids = detailIds.stream().map(Object::toString).collect(Collectors.toList()); - //删除附件 - fileService.removeByBzIds(ids); - //删除字典 - bzDictRelService.removeByBzIds(detailIds); - this.removeBatchByIds(detailIds); - } - - public TermiteSurvey detail(TermiteSurvey termiteSurvey) { - List list = getDetailById(termiteSurvey.getId()); - if(CollectionUtils.isEmpty(list)){ - return termiteSurvey; - } - List ids = list.stream().map(TermiteSurveyDetail::getId).collect(Collectors.toList()); - List relList = controlInfoMapper.queryRelList(ids); - Map> map = relList.stream().collect(Collectors.groupingBy(BzDictRel::getBusinessId)); - for(TermiteSurveyDetail detail : list){ - detail.setActSign(map.get(detail.getId())); - detail.setPics(fileService.queryFileList(detail.getId().toString(),getGroupId(),getPicType())); - detail.setVideos(fileService.queryFileList(detail.getId().toString(),getGroupId(),getVideoType())); - } - termiteSurvey.setDetails(list); - return termiteSurvey; - } - - private List getDetailById(Long id){ - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(TermiteSurveyDetail::getSurveyId,id); - return this.list(queryWrapper); - } - - - public Page pageQuery(TermiteSurveyPageSo page) { - return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/TermiteSurveyService.java b/src/main/java/com/gunshi/project/hsz/service/TermiteSurveyService.java deleted file mode 100644 index deaf332..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/TermiteSurveyService.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.TermiteSurveyPageSo; -import com.gunshi.project.hsz.mapper.TermiteSurveyMapper; -import com.gunshi.project.hsz.model.TermiteSurvey; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.Objects; - -/** - * 描述: 白蚁普查 - * author: xusan - * date: 2024-08-28 10:29:58 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class TermiteSurveyService extends ServiceImpl -{ - @Autowired - private TermiteSurveyDetailService detailService; - - public TermiteSurvey saveData(TermiteSurvey dto) { - dto.setCreateTime(new Date()); - dto.setId(IdWorker.getId()); - boolean result = this.save(dto); - if (result) { - detailService.saveDetail(dto.getDetails(),dto.getId()); - } - return dto; - } - - public TermiteSurvey updateData(TermiteSurvey dto) { - if (Objects.isNull(this.getById(dto.getId()))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean result = this.updateById(dto); - if (result) { - detailService.updateDetail(dto.getDetails(),dto.getId()); - } - return dto; - } - - public Boolean delData(Long id) { - if (Objects.isNull(this.getById(id))) { - throw new IllegalArgumentException("当前数据不存在"); - } - boolean data = this.removeById(id); - if (data) { - detailService.delDetail(id); - } - return data; - } - - public TermiteSurvey detail(Long id) { - TermiteSurvey termiteSurvey = this.getById(id); - if(Objects.isNull(termiteSurvey)){ - throw new IllegalArgumentException("当前数据不存在"); - } - return detailService.detail(termiteSurvey); - } - - public Page pageQuery(TermiteSurveyPageSo page) { - return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/TyYearRainfallService.java b/src/main/java/com/gunshi/project/hsz/service/TyYearRainfallService.java deleted file mode 100644 index 8e3022e..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/TyYearRainfallService.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -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.gunshi.project.hsz.entity.so.TyYearRainfallPageSo; -import com.gunshi.project.hsz.entity.vo.TyYearRainfallVo; -import com.gunshi.project.hsz.mapper.TyYearRainfallMapper; -import com.gunshi.project.hsz.model.TyYearRainfall; -import com.gunshi.project.hsz.util.MyBeanUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * 描述: 典型年降雨资料表 - * author: xusan - * date: 2024-07-08 17:30:38 - */ -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class TyYearRainfallService extends ServiceImpl -{ - - - public boolean saveData(TyYearRainfallVo dto) { - checkParam(dto); - TyYearRainfall tyYearRainfall = new TyYearRainfall(); - BeanUtils.copyProperties(dto,tyYearRainfall); - tyYearRainfall.setId(IdWorker.getId()); - List list = dto.getList(); - if(CollectionUtils.isNotEmpty(list)){ - list.stream().map(o->{ - o.setId(IdWorker.getId()); - return o; - }).collect(Collectors.toList()); - } - list.add(tyYearRainfall); - return this.saveBatch(list); - } - - private void checkParam(TyYearRainfallVo dto) { - Long id = dto.getId(); - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(TyYearRainfall::getYear,dto.getYear()) - .eq(TyYearRainfall::getType,1); - if(id != null){ - queryWrapper.ne(TyYearRainfall::getId,id); - } - if(this.count(queryWrapper ) > 0){ - throw new IllegalArgumentException("该年份已存在典型年降雨资料"); - } - Long len = dto.getList().stream().map(TyYearRainfall::getMonth).distinct().collect(Collectors.counting()); - if(dto.getList().size() != len.intValue()){ - throw new IllegalArgumentException("月份不可重复"); - } - } - - public Page pageQuery(TyYearRainfallPageSo tyYearRainfallPageSo) { - Page page = baseMapper.pageQuery(tyYearRainfallPageSo.getPageSo().toPage(), tyYearRainfallPageSo); - fillList(page); - return page; - } - - private void fillList(Page ret) { - if (ret.getRecords() != null) { - queryChild(ret.getRecords()); - } - } - - private void queryChild(List records) { - for (TyYearRainfallVo record : records) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(TyYearRainfall::getYear,record.getYear()) - .eq(TyYearRainfall::getType,2) - .orderByAsc(TyYearRainfall::getMonth); - record.setList(this.list(queryWrapper)); - } - } - - public boolean updateData(TyYearRainfallVo dto) { - checkParam(dto); - TyYearRainfall tyYearRainfall = new TyYearRainfall(); - BeanUtils.copyProperties(dto,tyYearRainfall); - this.updateById(tyYearRainfall); - deleteMonthData(dto.getYear()); - List list = dto.getList(); - if(CollectionUtils.isNotEmpty(list)){ - list.stream().map(o->{ - o.setId(IdWorker.getId()); - return o; - }).collect(Collectors.toList()); - } - return this.saveBatch(list); - } - - private void deleteMonthData(Integer year) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(TyYearRainfall::getYear,year) - .eq(TyYearRainfall::getType,2); - this.remove(queryWrapper); - } - - public Boolean removeData(Long id) { - TyYearRainfall tyYearRainfall = this.getById(id); - deleteMonthData(tyYearRainfall.getYear()); - return this.removeById(id); - } - - public List queryList() { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(TyYearRainfall::getType,1); - queryWrapper.orderByDesc(TyYearRainfall::getYear); - List list = this.list(queryWrapper); - List resList = MyBeanUtil.collectionCopy(list,TyYearRainfallVo.class); - queryChild(resList); - return resList; - } -} - - diff --git a/src/main/java/com/gunshi/project/hsz/service/WarningConditionService.java b/src/main/java/com/gunshi/project/hsz/service/WarningConditionService.java deleted file mode 100644 index af905d5..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/WarningConditionService.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.mapper.WarningConditionMapper; -import com.gunshi.project.hsz.mapper.WarningRuleMapper; -import com.gunshi.project.hsz.model.WarningCondition; -import com.gunshi.project.hsz.model.WarningRule; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class WarningConditionService extends ServiceImpl { - - - - public List getListByRuleId(Serializable id){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - queryWrapper.eq(WarningCondition::getRuleId,id); - queryWrapper.orderByAsc(WarningCondition::getOrder); - return this.list(queryWrapper); - } - - - public WarningCondition checkConditionExists(WarningCondition dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(dto.getId() != null){ - queryWrapper.ne(WarningCondition::getId, dto.getId()); - } - if(dto.getIndicatorType() != null){ - //预警指标类型 - queryWrapper.eq(WarningCondition::getIndicatorType,dto.getIndicatorType()); - } - if(dto.getWarningLevel() != null){ - //预警等级 - queryWrapper.eq(WarningCondition::getWarningLevel,dto.getWarningLevel()); - } - if(dto.getWarningType() != null){ - //预警类型 - queryWrapper.eq(WarningCondition::getWarningType,dto.getWarningType()); - } - if(dto.getOperator() != null){ - //比较符 - queryWrapper.eq(WarningCondition::getOperator,dto.getOperator()); - } - if(dto.getThresholdValue() != null){ - //阈值 - queryWrapper.eq(WarningCondition::getThresholdValue,dto.getThresholdValue()); - } - if(dto.getDurationHours() != null){ - //时长/时段(小时) - queryWrapper.eq(WarningCondition::getDurationHours,dto.getDurationHours()); - } - List warningConditions = this.baseMapper.selectList(queryWrapper); - WarningCondition warningCondition = null; - if(warningConditions != null && warningConditions.size() > 0){ - warningCondition = warningConditions.get(0); - } - return warningCondition; - } - - public boolean removeByRuleId(Long ruleId){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(WarningCondition::getRuleId,ruleId); - return this.remove(queryWrapper); - } - - public boolean deleteData(Long ruleId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(WarningCondition::getRuleId,ruleId); - boolean remove = this.remove(queryWrapper); - return remove; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/WarningRuleInfoService.java b/src/main/java/com/gunshi/project/hsz/service/WarningRuleInfoService.java deleted file mode 100644 index 5baf5a3..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/WarningRuleInfoService.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.alibaba.excel.util.StringUtils; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.entity.so.WarningRulePageSo; -import com.gunshi.project.hsz.mapper.WarningRuleInfoMapper; -import com.gunshi.project.hsz.model.WarningCondition; -import com.gunshi.project.hsz.model.WarningRuleInfo; -import kotlin.jvm.internal.Lambda; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class WarningRuleInfoService extends ServiceImpl { - - @Autowired - private WarningConditionService warningConditionService; - - - public Page pageQuery(WarningRulePageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(page.getRuleName())){ - queryWrapper.like(WarningRuleInfo::getRuleName, page.getRuleName()); - } - if(!StringUtils.isBlank(page.getWarningType())){ - queryWrapper.eq(WarningRuleInfo::getWarningType, page.getWarningType()); - } - if(page.getDateTimeRangeSo() != null){ - queryWrapper.ge(WarningRuleInfo::getCreateTime,page.getDateTimeRangeSo().getStart()); - queryWrapper.le(WarningRuleInfo::getCreateTime,page.getDateTimeRangeSo().getEnd()); - } - queryWrapper.orderByDesc(WarningRuleInfo::getCreateTime); - Page warningRuleInfoPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); - List records = warningRuleInfoPage.getRecords(); - for (WarningRuleInfo record : records) { - List listByRuleId = warningConditionService.getListByRuleId(record.getRuleId()); - record.setConditions(listByRuleId); - } - return warningRuleInfoPage; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/WarningRuleService.java b/src/main/java/com/gunshi/project/hsz/service/WarningRuleService.java deleted file mode 100644 index e8913b7..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/WarningRuleService.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.WarningRulePageSo; -import com.gunshi.project.hsz.mapper.TermiteSurveyMapper; -import com.gunshi.project.hsz.mapper.WarningRuleMapper; -import com.gunshi.project.hsz.model.TermiteSurvey; -import com.gunshi.project.hsz.model.WarningCondition; -import com.gunshi.project.hsz.model.WarningRule; -import com.ruoyi.common.utils.StringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.*; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class WarningRuleService extends ServiceImpl { - - @Autowired - private WarningConditionService warningConditionService; - - public Page pageQuery(WarningRulePageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(page.getRuleName())){ - queryWrapper.like(WarningRule::getRuleName, page.getRuleName()); - } - if(!StringUtils.isBlank(page.getWarningType())){ - queryWrapper.eq(WarningRule::getWarningType, page.getWarningType()); - } - queryWrapper.orderByDesc(WarningRule::getCreateTime); - Page warningRulePage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); - - for (WarningRule record : warningRulePage.getRecords()) { - List listByRuleId = warningConditionService.getListByRuleId(record.getId()); - record.setConditions(listByRuleId); - } - return warningRulePage; - } - - public List listData(){ - List warningRules = this.baseMapper.selectList(null); - for (WarningRule warningRule : warningRules) { - List listByRuleId = warningConditionService.getListByRuleId(warningRule.getId()); - warningRule.setConditions(listByRuleId); - } - return warningRules; - } - - public WarningRule saveData(WarningRule dto) { - dto.setCreateTime(LocalDateTime.now()); - if(dto.getConditions() == null || dto.getConditions().isEmpty()){ - throw new IllegalArgumentException("请至少配置一条预警规则"); - } - orderData(dto.getConditions()); - save(dto); - List conditions = dto.getConditions(); - for (WarningCondition condition : conditions) { -// WarningCondition warningCondition = warningConditionService.checkConditionExists(condition); -// if(warningCondition != null){ -// throw new IllegalArgumentException("对不起,该预警规则已配置"); -// } - condition.setRuleId(dto.getId()); - condition.setWarningType(dto.getWarningType()); - condition.setWarningLevel(dto.getWarningLevel()); - } - warningConditionService.saveBatch(conditions); - return dto; - } - - public boolean updateData(WarningRule dto) { - if(dto.getConditions() == null || dto.getConditions().isEmpty()){ - throw new IllegalArgumentException("请至少配置一条预警规则"); - } - orderData(dto.getConditions()); - updateById(dto); - List conditions = dto.getConditions(); - for (WarningCondition condition : conditions) { -// WarningCondition warningCondition = warningConditionService.checkConditionExists(condition); -// if(warningCondition != null){ -// throw new IllegalArgumentException("对不起,该预警规则已配置"); -// } - condition.setRuleId(dto.getId()); - } - warningConditionService.deleteData(dto.getId()); - - warningConditionService.saveBatch(conditions); - - return true; - } - - - public boolean deleteById(Serializable id) { - removeById(id); - warningConditionService.removeByRuleId(Long.valueOf(id.toString())); - return true; - } - - private void orderData(List warningConditions){ - if (warningConditions == null || warningConditions.size() <= 1) { - return; - } - - warningConditions.sort(Comparator.comparingInt(WarningCondition::getOrder)); - warningConditions.getLast().setRelationType(null); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/WaterAlarmService.java b/src/main/java/com/gunshi/project/hsz/service/WaterAlarmService.java deleted file mode 100644 index 90a8ead..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/WaterAlarmService.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.so.WaterAlarmPageSo; - -import com.gunshi.project.hsz.entity.vo.WaterAlarmCount; -import com.gunshi.project.hsz.entity.vo.WaterAlarmTypeCount; -import com.gunshi.project.hsz.mapper.WaterAlarmMapper; - -import com.gunshi.project.hsz.model.WaterAlarm; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Map; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class WaterAlarmService extends ServiceImpl { - - public boolean saveData(WaterAlarm dto) { - dto.setId(IdWorker.getId()); - boolean save = save(dto); - return save; - } - - public Page queryPage(WaterAlarmPageSo pageSo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (pageSo.getStcd() != null) { - queryWrapper.eq(WaterAlarm::getStcd,pageSo.getStcd()); - } - if(pageSo.getType() != null){ - queryWrapper.eq(WaterAlarm::getAlarmType,pageSo.getType()); - } - if(!StringUtils.isBlank(pageSo.getName())){ - queryWrapper.like(WaterAlarm::getStnm,pageSo.getName()); - } - - if(pageSo.getTimeRangeSo() != null){ - queryWrapper.between(WaterAlarm::getAlarmTime,pageSo.getTimeRangeSo().getStart(),pageSo.getTimeRangeSo().getEnd()); - } - queryWrapper.orderByDesc(WaterAlarm::getAlarmTime); - Page waterAlarmPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); - return waterAlarmPage; - } - - public List count12(Integer year) { - return this.baseMapper.count12(year); - } - - public List countTypeByYear(Integer year) { - List res = this.baseMapper.countTypeByYear(year); - return res; - } - - public List listStation() { - return this.baseMapper.listStation(); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/WaterCountAnalysisService.java b/src/main/java/com/gunshi/project/hsz/service/WaterCountAnalysisService.java deleted file mode 100644 index e855d69..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/WaterCountAnalysisService.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.db.dto.DateRangeSo; -import com.gunshi.project.hsz.common.model.StRsvrR; -import com.gunshi.project.hsz.entity.vo.WaterAnalysisVo; -import com.gunshi.project.hsz.entity.vo.WaterCapacityAnalysisVo; -import com.gunshi.project.hsz.model.*; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class WaterCountAnalysisService { - - @Autowired - private XlPlanService xlPlanService;//兴利计划 - - @Autowired - private StWaterRReorganizeService stWaterRReorganizeService;//供水量整编 - - @Autowired - private WaterDispatchService waterDispatchService;//水量调度 - - @Autowired - private StZvarlBService stZvarlBService;//水位-库容 - - @Autowired - private StRsvrRService stRsvrRService;//水库历史水位 - - @Autowired - private AttResBaseService attResBaseService; - - - public List waterSupplyAnalysis(Serializable id) { - XlPlan byId = xlPlanService.getById(id); - List res = new ArrayList<>(); - WaterAnalysisVo waterAnalysisGGVo = new WaterAnalysisVo(); - waterAnalysisGGVo.setType(0); - WaterAnalysisVo waterAnalysisSTVo = new WaterAnalysisVo(); - waterAnalysisSTVo.setType(1); - res.add(waterAnalysisGGVo); - res.add(waterAnalysisSTVo); - //判断该兴利计划是年度月度 - if(byId == null){ - throw new IllegalArgumentException("对不起,该计划不存在"); - } - //如果是月度 - //计划灌溉供水量 - BigDecimal ggWater = byId.getGgWater(); - waterAnalysisGGVo.setPlanSupply(ggWater); - //计划生态供水量 - BigDecimal stWater = byId.getStWater(); - waterAnalysisSTVo.setPlanSupply(stWater); - Map map; - if(byId.getPlanType().equals(byId.MONTH)){ - map = stWaterRReorganizeService.getWaterSupplyerYeaarOrMonth(byId.MONTH,byId.getPlanDate()); - }else{ - //年度 - map = stWaterRReorganizeService.getWaterSupplyerYeaarOrMonth(byId.YEAR,byId.getPlanDate()); - } - waterAnalysisGGVo.setRealSupply(map.get("gg")); - if(waterAnalysisGGVo.getRealSupply() == null){ - waterAnalysisGGVo.setGapSupply(null); - }else{ - waterAnalysisGGVo.setGapSupply(waterAnalysisGGVo.getRealSupply().subtract(waterAnalysisGGVo.getPlanSupply())); - } - waterAnalysisSTVo.setRealSupply(map.get("st")); - if(waterAnalysisSTVo.getRealSupply() == null){ - waterAnalysisSTVo.setGapSupply(null); - }else{ - waterAnalysisSTVo.setGapSupply(waterAnalysisSTVo.getRealSupply().subtract(waterAnalysisSTVo.getPlanSupply())); - } - return res; - } - - public List waterDispatchAnalysis(Serializable year) { - return waterDispatchService.lambdaQuery().apply("EXTRACT(YEAR FROM dis_start) = {0}", year) - .in(WaterDispatch::getExeStatus, 0, 2) - .list(); - } - - public List waterCapacityAnalysis(DateRangeSo dateRangeSo){ - List res = new ArrayList<>(); - List stZvarlBList = stZvarlBService.list();//获取水位-蓄水量 - stZvarlBList.sort(Comparator.comparing(StZvarlB::getRz)); - //查询时间段的 - List list = attResBaseService.list(); - AttResBase attResBase = list.get(0); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.apply("date_part('hour',tm) = 8") // 获取每天早上八点的数据 - .ge(StRsvrR::getTm,dateRangeSo.getStart()) - .le(StRsvrR::getTm, dateRangeSo.getEnd()) - .eq(StRsvrR::getStcd,attResBase.getStcd()); - queryWrapper.orderByDesc(StRsvrR::getTm);//根据时间降序 - List stRsvrRS = stRsvrRService.getBaseMapper().selectList(queryWrapper);//获取水库的历史时间段的水位 - - for (int i = 0; i < stRsvrRS.size(); i++) { - WaterCapacityAnalysisVo vo = new WaterCapacityAnalysisVo(); - vo.setTm(stRsvrRS.get(i).getTm()); - String rz = stRsvrRS.get(i).getRz();//历史水位 - BigDecimal currentCap = BigDecimal.ZERO; - if(rz != null){ - currentCap = stZvarlBService.getWByZvarl(stZvarlBList,new BigDecimal(rz));//根据水位计算出库容 - vo.setCap(currentCap); - }else{ - currentCap = BigDecimal.ZERO; - vo.setCap(currentCap); - } - - if(i < stRsvrRS.size() - 1){ - //获取前一天的库容(由于是降序排列,前一天的索引是i+1) - BigDecimal prevDayCap = null; - String prevRz = stRsvrRS.get(i + 1).getRz(); - if(prevRz != null){ - prevDayCap = stZvarlBService.getWByZvarl(stZvarlBList, new BigDecimal(prevRz)); - } - - if (prevDayCap == null || BigDecimal.ZERO.compareTo(prevDayCap) == 0) { - vo.setRate(BigDecimal.ZERO.setScale(2, RoundingMode.DOWN)); - } else { - //计算变化率: (当天 - 前一天) / 前一天 * 100 - BigDecimal diff = currentCap.subtract(prevDayCap); - BigDecimal rate = diff.divide(prevDayCap, 4, RoundingMode.HALF_UP) - .multiply(new BigDecimal(100)); - vo.setRate(rate.setScale(2, RoundingMode.HALF_UP)); - } - }else{ - //最后一天(时间上最早的一天)没有前一天数据,变化率为0 - vo.setRate(BigDecimal.ZERO.setScale(2, RoundingMode.DOWN)); - } - res.add(vo); - } - return res; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/WaterDeviceService.java b/src/main/java/com/gunshi/project/hsz/service/WaterDeviceService.java deleted file mode 100644 index 0166b50..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/WaterDeviceService.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gunshi.project.hsz.service; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; - -import com.gunshi.project.hsz.entity.so.WaterDevicePageSo; -import com.gunshi.project.hsz.mapper.WaterDeviceMapper; -import com.gunshi.project.hsz.common.model.JcskByB; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class WaterDeviceService extends ServiceImpl { - - public Page pageQuery(WaterDevicePageSo page) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - if(ObjectUtils.isNotNull(page.getCode())){ - queryWrapper.eq(JcskByB::getCode, page.getCode()); - } - if(ObjectUtils.isNotNull(page.getName())){ - queryWrapper.like(JcskByB::getName, page.getName()); - } - if(ObjectUtils.isNotNull(page.getMnNo())){ - queryWrapper.like(JcskByB::getMnNo, page.getMnNo()); - } - Page res = this.page(page.getPageSo().toPage(), queryWrapper); - return res; - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/service/WaterDispatchService.java b/src/main/java/com/gunshi/project/hsz/service/WaterDispatchService.java deleted file mode 100644 index b621fc7..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/WaterDispatchService.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.WaterDispatchPageSo; -import com.gunshi.project.hsz.entity.vo.WdCountVo; -import com.gunshi.project.hsz.mapper.WaterDispatchMapper; -import com.gunshi.project.hsz.model.WaterDispatch; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.mapper.SysUserMapper; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.time.Year; -import java.util.Date; -import java.util.Objects; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class WaterDispatchService extends ServiceImpl { - - @Autowired - private SysUserMapper sysUserMapper; - - public boolean saveData(WaterDispatch dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(WaterDispatch::getName, dto.getName()); - WaterDispatch one = getOne(queryWrapper); - if(Objects.nonNull(one)){ - throw new IllegalArgumentException("该调度已存在"); - } - if(dto.getIsDistribute() != null && dto.getIsDistribute() == 0){//如果选择下发 - dto.setExeStatus(2);//状态改为下发中 - }else{ - dto.setExeStatus(1);//否则为待下发 - dto.setIsDistribute(1); - } - dto.setFillTime(new Date()); - save(dto); - return true; - } - - public boolean feedBack(WaterDispatch dto) { - WaterDispatch byId = getById(dto.getId()); - if(byId == null){ - throw new IllegalArgumentException("抱歉,该调度不存在"); - } -// if(!dto.getExePersonId().equals(byId.getExePersonId())){ -// throw new IllegalArgumentException("对不起,您没有权限进行反馈"); -// } - if(dto.getIsCompelete() == 0){ - dto.setExeStatus(0); - } - dto.setResTm(new Date()); - dto.setFillTime(byId.getFillTime()); - updateById(dto); - return true; - } - - public boolean update(WaterDispatch dto) { - WaterDispatch byId = getById(dto.getId()); - if(byId == null){ - throw new IllegalArgumentException("抱歉,该调度不存在"); - } - if(dto.getIsDistribute() != null && dto.getIsDistribute() == 0){//如果选择下发 - dto.setExeStatus(2);//状态改为下发中 - }else{ - dto.setExeStatus(1);//否则为待下发 - dto.setIsDistribute(1); - } - updateById(dto); - return true; - } - - public Page pageQuery(WaterDispatchPageSo pageSo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(pageSo.getName())){ - queryWrapper.like(WaterDispatch::getName, pageSo.getName()); - } - if(pageSo.getStatus() != null){ - queryWrapper.eq(WaterDispatch::getExeStatus, pageSo.getStatus()); - } - Page waterDispatchPage = baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); - for (WaterDispatch record : waterDispatchPage.getRecords()) { - if(record.getExePersonId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getExePersonId())); - if(sysUser != null){ - record.setExePersonName(sysUser.getNickName()); - } - } - if(record.getResPersonId() != null){ - SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getResPersonId())); - if(sysUser != null){ - record.setResPersonName(sysUser.getNickName()); - } - } - } - return waterDispatchPage; - } - - public WdCountVo getCount() { - int currYear = Year.now().getValue(); - int count = baseMapper.countCompeleteByYear(currYear); - WdCountVo vo = new WdCountVo(); - vo.setYear(String.valueOf(currYear)); - vo.setCount(count); - return vo; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/service/XlPlanService.java b/src/main/java/com/gunshi/project/hsz/service/XlPlanService.java deleted file mode 100644 index 569d981..0000000 --- a/src/main/java/com/gunshi/project/hsz/service/XlPlanService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gunshi.project.hsz.service; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gunshi.project.hsz.entity.so.XlPlanPageSo; -import com.gunshi.project.hsz.mapper.WaterAlarmMapper; -import com.gunshi.project.hsz.mapper.XlPlanMapper; -import com.gunshi.project.hsz.model.WaterAlarm; -import com.gunshi.project.hsz.model.XlPlan; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.Objects; - -@Service -@Slf4j -@Transactional(rollbackFor = Exception.class) -public class XlPlanService extends ServiceImpl { - - - public boolean saveData(XlPlan dto) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(XlPlan::getPlanName, dto.getPlanName()); - queryWrapper.eq(XlPlan::getPlanType, dto.getPlanType()); - queryWrapper.eq(XlPlan::getPlanDate, dto.getPlanDate()); - XlPlan xlPlan = baseMapper.selectOne(queryWrapper); - if(Objects.nonNull(xlPlan)){ - throw new IllegalArgumentException("该计划已存在,请检查"); - } - dto.setFillDate(new Date()); - save(dto); - return true; - } - - public boolean update(XlPlan dto) { - XlPlan byId = getById(dto.getId()); - if(Objects.isNull(byId)){ - throw new IllegalArgumentException("该计划不存在,无法删除"); - } - boolean flag = updateById(dto); - return flag; - } - - public Page pageQuery(XlPlanPageSo pageSo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if(!StringUtils.isBlank(pageSo.getName())){ - queryWrapper.like(XlPlan::getPlanName, pageSo.getName()); - } - if(pageSo.getType() != null){ - queryWrapper.eq(XlPlan::getPlanType, pageSo.getType()); - } - queryWrapper.orderByDesc(XlPlan::getFillDate); - Page xlPlanPage = baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); - return xlPlanPage; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/system/AppUpdateController.java b/src/main/java/com/gunshi/project/hsz/system/AppUpdateController.java deleted file mode 100644 index b5b9655..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/AppUpdateController.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.gunshi.project.hsz.system; - -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.io.*; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -@RestController -@RequestMapping("/appUpdate") -@Tag(name = "app端更新") -public class AppUpdateController { - - private static final String BASE_PATH = "/app/uploadPath/upload"; - - @GetMapping("/getApp/**") - public void downloadFile(HttpServletRequest request, HttpServletResponse response) throws Exception { - // 1. 获取URI - String uri = request.getRequestURI(); - System.out.println("收到请求URI: " + uri); - - // 2. 使用正则表达式提取日期部分和文件名 - // 匹配模式:/YYYY/MM/DD/文件名.apk - Pattern pattern = Pattern.compile("/(\\d{4}/\\d{2}/\\d{2}/[^/]+\\.apk)"); - Matcher matcher = pattern.matcher(uri); - - String path; - if (matcher.find()) { - // 找到日期文件路径,例如:2025/12/19/__UNI__DB7153B__20251218172415(1)_20251219102301A001.apk - path = matcher.group(1); - System.out.println("提取的日期文件路径: " + path); - } else { - // 如果没有找到日期格式的路径,使用原来的逻辑 - // 找到 "/getApp/" 的位置 - int startIndex = uri.indexOf("/getApp/"); - if (startIndex == -1) { - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "URL格式错误"); - return; - } - - // 提取路径(去掉"/getApp/") - path = uri.substring(startIndex + "/getApp/".length()); - System.out.println("提取的相对路径: " + path); - - // 可选:移除可能的前缀如 "profile/upload/" - if (path.startsWith("profile/upload/")) { - path = path.substring("profile/upload/".length()); - System.out.println("移除profile/upload前缀后: " + path); - } - } - - // 3. 构建文件路径 - String fullPath = BASE_PATH + "/" + path; - System.out.println("完整文件路径: " + fullPath); - - File file = new File(fullPath); - - // 4. 检查文件是否存在 - if (!file.exists()) { - System.out.println("文件不存在: " + fullPath); - response.sendError(HttpServletResponse.SC_NOT_FOUND, "文件不存在"); - return; - } - - if (!file.isFile()) { - System.out.println("不是文件: " + fullPath); - response.sendError(HttpServletResponse.SC_NOT_FOUND, "不是有效的文件"); - return; - } - - System.out.println("文件大小: " + file.length() + " bytes"); - - // 5. 设置响应头 - String fileName = file.getName(); - String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString()) - .replaceAll("\\+", "%20"); - - // 根据文件扩展名设置Content-Type - String contentType = getContentType(fileName); - response.setContentType(contentType); - response.setHeader("Content-Disposition", - "attachment; filename=\"" + encodedFileName + "\""); - response.setContentLengthLong(file.length()); - - // 6. 流式传输文件 - try (InputStream in = new FileInputStream(file); - OutputStream out = response.getOutputStream()) { - - byte[] buffer = new byte[8192]; // 使用8KB缓冲区 - int bytesRead; - long totalBytes = 0; - - while ((bytesRead = in.read(buffer)) != -1) { - out.write(buffer, 0, bytesRead); - totalBytes += bytesRead; - } - - System.out.println("成功传输字节数: " + totalBytes); - out.flush(); - - } catch (IOException e) { - // 客户端可能中断了下载 - System.out.println("下载中断或错误: " + e.getMessage()); - if (!e.getMessage().contains("Broken pipe") && - !e.getMessage().contains("Connection reset")) { - throw e; - } - } - } - - /** - * 根据文件扩展名获取Content-Type - */ - private String getContentType(String fileName) { - if (fileName.toLowerCase().endsWith(".apk")) { - return "application/vnd.android.package-archive"; - } else if (fileName.toLowerCase().endsWith(".ipa")) { - return "application/iphone"; - } else if (fileName.toLowerCase().endsWith(".txt")) { - return "text/plain"; - } else if (fileName.toLowerCase().endsWith(".pdf")) { - return "application/pdf"; - } else if (fileName.toLowerCase().endsWith(".zip")) { - return "application/zip"; - } else { - return "application/octet-stream"; - } - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/system/SysUserLoginLogController.java b/src/main/java/com/gunshi/project/hsz/system/SysUserLoginLogController.java deleted file mode 100644 index 524f5bd..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/SysUserLoginLogController.java +++ /dev/null @@ -1,267 +0,0 @@ -package com.gunshi.project.hsz.system; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.annotation.Get; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.project.hsz.system.model.SysUserLoginLog; -import com.gunshi.project.hsz.system.model.SysVisitMenuLog; -import com.gunshi.project.hsz.system.mapper.SysUserLoginLogMapper; -import com.gunshi.project.hsz.system.mapper.SysVisitMenuLogMapper; -import com.gunshi.project.hsz.system.so.UserLoginLogPageSo; -import com.gunshi.project.hsz.system.so.UserLoginLogSo; -import com.gunshi.project.hsz.system.vo.TodayCountVo; -import com.gunshi.project.hsz.system.vo.UserCountVo; -import com.gunshi.project.hsz.system.vo.VisitCountVo; -import com.gunshi.project.hsz.util.DateUtil; -import com.ruoyi.common.utils.SecurityUtils; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.LocalDate; -import java.util.*; -import java.util.stream.Collectors; - -/** - * Description: - * Created by XuSan on 2024/6/20. - * - * @author XuSan - * @version 1.0 - */ -@RestController -@RequestMapping("/userLoginLog") -@Tag(name = "用户访问记录") -public class SysUserLoginLogController { - - @Autowired - private SysUserLoginLogMapper thisMapper; - - @Autowired - private SysVisitMenuLogMapper thisMenuMapper; - -// @Autowired -// private ProjectCommonService projectCommonService; - - @Post(path = "/page", summary = "分页查询") - public R> page(@RequestBody @Validated UserLoginLogPageSo dto) { - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - - if (dto.getName() != null) { - queryWrapper.eq(SysUserLoginLog::getCreateId, dto.getName()); - } - - return R.ok(thisMapper.selectPage(dto.getPageSo().toPage(), queryWrapper)); - } - - @Get(path = "/todayCount", summary = "今日数据总览") - public R todayCount() { - - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(SysUserLoginLog.class) - .between(SysUserLoginLog::getCreateDate, DateUtil.convertStringToDate(LocalDate.now().toString() + " 00:00:00"), new Date()); - - List logs = thisMapper.selectList(wrapper); - - if (CollectionUtils.isEmpty(logs)) { - return R.ok(null); - } - - TodayCountVo vo = new TodayCountVo(); - - vo.setWeb1Count( - logs.stream() - .filter(o -> "0".equals(o.getLoginType())) - .count()); - - List webTimes = logs.stream() - .filter(o -> "0".equals(o.getLoginType())) - .filter(o -> o.getLogoutTime() != null && o.getLoginTime() != null) - .map(o -> o.getLogoutTime().getTime() - o.getLoginTime().getTime()) - .collect(Collectors.toList()); - - BigDecimal divisor = BigDecimal.valueOf(1000 * 60 * 60); - if(!webTimes.isEmpty()){ - vo.setWeb3Count( - BigDecimal.valueOf(webTimes.stream().mapToLong(o -> o).sum()) - .divide(BigDecimal.valueOf(webTimes.size()), 2, RoundingMode.HALF_UP) - .divide(divisor, 2, RoundingMode.HALF_UP) - ); - }else{ - vo.setWeb3Count(BigDecimal.ZERO); - } - - - vo.setApp1Count( - logs.stream() - .filter(o -> "1".equals(o.getLoginType())) - .count() - ); - - List appTimes = logs.stream() - .filter(o -> "1".equals(o.getLoginType())) - .filter(o -> o.getLogoutTime() != null && o.getLoginTime() != null) - .map(o -> o.getLogoutTime().getTime() - o.getLoginTime().getTime()) - .collect(Collectors.toList()); - if(!appTimes.isEmpty()){ - vo.setApp3Count( - BigDecimal.valueOf(appTimes.stream().mapToLong(o -> o).sum()) - .divide(BigDecimal.valueOf(appTimes.size()),2, RoundingMode.HALF_UP) - .divide(divisor,2, RoundingMode.HALF_UP) - ); - }else{ - vo.setApp3Count(BigDecimal.ZERO); - } - - - - Date start = DateUtil.convertStringToDate(LocalDate.now().toString() + " 00:00:00"); - LambdaQueryWrapper wrapperMenuLog = new LambdaQueryWrapper<>(); - wrapperMenuLog.between(SysVisitMenuLog::getCreateTime,start,new Date()); - - vo.setWeb2Count(0L); - vo.setApp2Count(0L); - - List wrapperMenuLogs = thisMenuMapper.selectList(wrapperMenuLog); - if (CollectionUtils.isNotEmpty(wrapperMenuLogs)) { - vo.setWeb2Count( - wrapperMenuLogs.stream() - .filter(o -> "0".equals(o.getLoginType())) - .count() - ); - - vo.setApp2Count( - wrapperMenuLogs.stream() - .filter(o -> "1".equals(o.getLoginType())) - .count() - ); - } - - return R.ok(vo); - } - - - @Post(path = "/visitCount", summary = "访问用户前十") - public R visitCount(@RequestBody @Validated UserLoginLogSo so) { - //C N M 的xjm,你妈的写的什么Ghots代码?嗯哼? 你TM自己都不测一下? -// List logs = thisMapper.getUserLoginLog(so.getStm(), so.getEtm()); - List logs = thisMenuMapper.getUserVisitLog(so.getStm(), so.getEtm()); - VisitCountVo vo = new VisitCountVo(); - if (CollectionUtils.isEmpty(logs)) { - return R.ok(vo); - } - vo.setWebList( - logs.stream() - .filter(o -> "0".equals(o.getLoginType())) - .collect(Collectors.groupingBy(SysVisitMenuLog::getName, Collectors.counting())) - .entrySet().stream() - .sorted(Map.Entry.comparingByValue().reversed()) // 按数量降序排序 - .limit(10) // 取前10名 - .map(o -> { - VisitCountVo.VisitCountDataVo dataVo = new VisitCountVo.VisitCountDataVo(); - dataVo.setCount(o.getValue()); - dataVo.setName(o.getKey()); - return dataVo; - }) - .collect(Collectors.toList()) - ); - - vo.setAppList( - logs.stream() - .filter(o -> "1".equals(o.getLoginType())) - .collect(Collectors.groupingBy(SysVisitMenuLog::getName, Collectors.counting())) - .entrySet().stream() - .sorted(Map.Entry.comparingByValue().reversed()) // 按数量降序排序 - .limit(10) // 取前10名 - .map(o -> { - VisitCountVo.VisitCountDataVo dataVo = new VisitCountVo.VisitCountDataVo(); - dataVo.setCount(o.getValue()); - dataVo.setName(o.getKey()); - return dataVo; - }) - .collect(Collectors.toList()) - ); - return R.ok(vo); - } - - @Post(path = "/userCount", summary = "日活跃用户数") - public R userCount(@RequestBody @Validated UserLoginLogSo so) { - - List logs = thisMapper.getUserLoginLog(so.getStm(), so.getEtm()); - - UserCountVo vo = new UserCountVo(); - if (CollectionUtils.isEmpty(logs)) { - return R.ok(vo); - } - - vo.setWebList(logs.stream() - .filter(o -> "0".equals(o.getLoginType())) - .collect(Collectors.groupingBy(SysUserLoginLog::getCreateDate, Collectors.counting())) - .entrySet().stream() - .map(o -> { - UserCountVo.UserCountDataVo dataVo = new UserCountVo.UserCountDataVo(); - dataVo.setCount(o.getValue()); - dataVo.setCreateDate(o.getKey()); - return dataVo; - }) - .sorted(Comparator.comparing(UserCountVo.UserCountDataVo::getCreateDate)) - .collect(Collectors.toList()) - ); - - vo.setAppList(logs.stream() - .filter(o -> "1".equals(o.getLoginType())) - .collect(Collectors.groupingBy(SysUserLoginLog::getCreateDate, Collectors.counting())) - .entrySet().stream() - .map(o -> { - UserCountVo.UserCountDataVo dataVo = new UserCountVo.UserCountDataVo(); - dataVo.setCount(o.getValue()); - dataVo.setCreateDate(o.getKey()); - return dataVo; - }) - .sorted(Comparator.comparing(UserCountVo.UserCountDataVo::getCreateDate)) - .collect(Collectors.toList()) - ); - return R.ok(vo); - } - - @Post(path = "/insert", summary = "添加") - public R insert(@RequestBody @Validated SysUserLoginLog dto) { - - if (Objects.isNull(dto.getCreateId())) { - Long loginUserId = SecurityUtils.getUserId(); - dto.setCreateId(loginUserId); - } - - // 查询当前时间是否存在 - List uLogs = thisMapper.selectList( - Wrappers - .lambdaQuery(SysUserLoginLog.class) - .eq(SysUserLoginLog::getCreateId,dto.getCreateId()) - .eq(SysUserLoginLog::getCreateDate, new Date())); - - - if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(uLogs)) { - throw new RuntimeException("当前数据已存在"); - } - - Date date = new Date(); - - - // 第一次登录 - dto - .setCreateDate(date) - .setLoginTime(date) - .setLogoutTime(date); - - return R.ok(thisMapper.insert(dto) == 1); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/system/SysVisitMenuLogController.java b/src/main/java/com/gunshi/project/hsz/system/SysVisitMenuLogController.java deleted file mode 100644 index 52bf569..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/SysVisitMenuLogController.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.gunshi.project.hsz.system; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.core.annotation.Post; -import com.gunshi.core.result.R; -import com.gunshi.core.result.exception.NeedLoginException; -import com.gunshi.project.hsz.system.mapper.SysVisitMenuLogMapper; -import com.gunshi.project.hsz.system.model.SysVisitMenuLog; -import com.gunshi.project.hsz.system.so.VisitMenuLogPageSo; -import com.ruoyi.common.utils.SecurityUtils; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Description: - * Created by XuSan on 2024/6/20. - * - * @author XuSan - * @version 1.0 - */ -@Slf4j -@RestController -@RequestMapping("/visitMenuLog") -@Tag(name = "页面访问记录") -public class SysVisitMenuLogController { - - @Autowired - private SysVisitMenuLogMapper thisMapper; - - -// @Resource -// private ProjectCommonService projectCommonService; - @Post(path = "/page", summary = "分页查询") - public R> page(@RequestBody @Validated VisitMenuLogPageSo dto) { -// LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); -// -// if (dto.getMenu() != null) { -// queryWrapper.like(SysVisitMenuLog::getMenu1, dto.getMenu()); -// queryWrapper.like(SysVisitMenuLog::getMenu2, dto.getMenu()); -// queryWrapper.like(SysVisitMenuLog::getMenu3, dto.getMenu()); -// } - - return R.ok(thisMapper.pageQuery(dto.getPageSo().toPage(),dto)); - } - - @Post(path = "/count", summary = "统计查询") - public R> count(@RequestBody @Validated VisitMenuLogPageSo dto) { - - LambdaQueryWrapper queryWrapper = Wrappers.query(SysVisitMenuLog.class) - .select("COUNT(ID) COUNT, menu2, menu1,menu3") - .lambda(); - if(dto.getLoginType() != null){ - queryWrapper.eq(SysVisitMenuLog::getLoginType, dto.getLoginType()); - } - - if (dto.getStm() != null) { - queryWrapper.ge(SysVisitMenuLog::getCreateTime, dto.getStm()); - } - - if (dto.getEtm() != null) { - queryWrapper.le(SysVisitMenuLog::getCreateTime, dto.getEtm()); - } - - queryWrapper.groupBy(SysVisitMenuLog::getMenu2, SysVisitMenuLog::getMenu1,SysVisitMenuLog::getMenu3) - .last("ORDER BY COUNT DESC"); - List list = thisMapper.selectList(queryWrapper); - return R.ok(list); - } - - @Post(path = "/insert", summary = "添加") - public R insert(@RequestBody @Validated SysVisitMenuLog dto) { - - Long loginUserId = null; - // 获取用户id - try { - loginUserId = SecurityUtils.getUserId(); - } catch (NeedLoginException e) { - log.info("获取登录账号id," + e.getMessage(), e); - } - if (null == dto.getCreateId() && null != loginUserId){ - dto.setCreateId(loginUserId); - } - return R.ok(thisMapper.insert(dto) == 1); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/system/aspect/SysUserLogAspect.java b/src/main/java/com/gunshi/project/hsz/system/aspect/SysUserLogAspect.java deleted file mode 100644 index fa8b1ae..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/aspect/SysUserLogAspect.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.gunshi.project.hsz.system.aspect; - -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.gunshi.project.hsz.system.mapper.SysUserLoginLogMapper; -import com.gunshi.project.hsz.system.model.SysUserLoginLog; -import com.gunshi.project.hsz.system.utils.ReqUtil; -import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.SecurityUtils; -import jakarta.servlet.http.HttpServletRequest; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.aspectj.lang.annotation.Pointcut; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import java.util.Date; -import java.util.List; -import java.util.Objects; - -/** - * Description: - * Created by XuSan on 2024/6/20. - * - * @author XuSan - * @version 1.0 - */ -@Aspect -@Slf4j -@Component -public class SysUserLogAspect { - - @Autowired - private SysUserLoginLogMapper userLoginLogMapper; - -// @Autowired -// private ProjectCommonService projectCommonService; - - - @Pointcut("execution(public * com.gunshi.project.hsz.controller..*Controller.*(..))") - public void controllerPointcut() { - } - - @Before("controllerPointcut()") - public void doBefore(JoinPoint joinPoint) throws Throwable { - - log.info("进入记录日志切面"); - - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - HttpServletRequest request = attributes.getRequest(); - - Long loginUserId = null; - // 获取用户id - try { -// loginUserId = projectCommonService.getLoginUserId(); - loginUserId = SecurityUtils.getUserId(); - } catch (ServiceException e) { -// log.info("获取登录账号id," + e.getMessage(), e); - log.info("获取登录账号id异常,请重新登录"); - loginUserId = 1l; - } - if (loginUserId != null) { - - String loginType = request.getHeader("loginType"); - if (StringUtils.isBlank(loginType)){ - loginType = "0"; - } - - // 查询当前时间是否存在 - List uLogs = userLoginLogMapper.selectList( - Wrappers - .lambdaQuery(SysUserLoginLog.class) - .eq(SysUserLoginLog::getLoginType, loginType) - .eq(SysUserLoginLog::getCreateDate, new Date()) - .eq(SysUserLoginLog::getCreateId, loginUserId)); - - Integer id = null; - SysUserLoginLog o = new SysUserLoginLog(); - if (CollectionUtils.isNotEmpty(uLogs)) { - o = uLogs.getFirst(); - id = o.getId(); - } - - Date date = new Date(); - - - if (Objects.isNull(id)) { - String ip = request.getHeader("ClientIp"); - - if (StringUtils.isBlank(ip)) { - ip = ReqUtil.getIpAddress(request); - } - - // 第一次登录 - o.setLoginType(loginType); - o.setCreateId(loginUserId) - .setCreateDate(date) - .setLoginTime(date) - .setIp(ip) - .setLogoutTime(date); - if (userLoginLogMapper.insert(o) != 1) { - log.error("插入用户登录日志失败"); - } - } else { - o.setId(id); - o.setLogoutTime(date); - if (userLoginLogMapper.updateById(o) != 1) { - log.error("更新用户登录日志失败"); - } - } - - } - log.info("记录日志切面结束"); - - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/system/mapper/SysUserLoginLogMapper.java b/src/main/java/com/gunshi/project/hsz/system/mapper/SysUserLoginLogMapper.java deleted file mode 100644 index 5e60264..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/mapper/SysUserLoginLogMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gunshi.project.hsz.system.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.gunshi.project.hsz.system.model.SysUserLoginLog; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysUserLoginLogMapper extends BaseMapper { - - @Select(""" - - """) - List getUserLoginLog(@Param("stm") Date stm , @Param("etm") Date etm); - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/system/mapper/SysVisitMenuLogMapper.java b/src/main/java/com/gunshi/project/hsz/system/mapper/SysVisitMenuLogMapper.java deleted file mode 100644 index 0c732f3..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/mapper/SysVisitMenuLogMapper.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.system.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.gunshi.project.hsz.system.model.SysVisitMenuLog; -import com.gunshi.project.hsz.system.so.VisitMenuLogPageSo; -import jakarta.validation.constraints.NotNull; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface SysVisitMenuLogMapper extends BaseMapper { - - - @Select(""" - - """) - Page pageQuery(Page page, VisitMenuLogPageSo dto); - - - @Select(""" - - """) - List getUserVisitLog(@Param("stm") Date stm, @Param("etm") Date etm); -} diff --git a/src/main/java/com/gunshi/project/hsz/system/model/SysUserLoginLog.java b/src/main/java/com/gunshi/project/hsz/system/model/SysUserLoginLog.java deleted file mode 100644 index 0dc129c..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/model/SysUserLoginLog.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gunshi.project.hsz.system.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.experimental.Accessors; - -import java.io.Serializable; -import java.util.Date; - -/** - * 流域基础信息表 - */ -@Schema(description="用户登录日志") -@Data -@TableName(value = "public.sys_user_login_log") -@Accessors(chain = true) -public class SysUserLoginLog implements Serializable { - - @TableId(value = "id", type = IdType.AUTO) - @Schema(description="主键id") - @JsonSerialize(using = ToStringSerializer.class) - @JsonFormat(shape = JsonFormat.Shape.STRING) - private Integer id; - - @TableField(value = "create_id") - @Schema(description="用户编号") - private Long createId; - - @TableField(value = "login_type") - @Schema(description="登录类型, 0: web, 1:app") - private String loginType; - - @TableField(value = "ip") - @Schema(description="ip") - private String ip; - - @TableField(value = "create_date") - @Schema(description="日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date createDate; - - - @TableField(value = "login_time") - @Schema(description="登录时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date loginTime; - - - @TableField(value = "logout_time") - @Schema(description="登出时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date logoutTime; - - - @TableField(exist = false) - @Schema(description="用户名称") - private String userName; -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/system/model/SysVisitMenuLog.java b/src/main/java/com/gunshi/project/hsz/system/model/SysVisitMenuLog.java deleted file mode 100644 index 81a033a..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/model/SysVisitMenuLog.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.system.model; - -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 com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - * 流域基础信息表 - */ -@Schema(description="菜单访问日志") -@Data -@TableName(value = "public.sys_visit_menu_log") -public class SysVisitMenuLog implements Serializable { - - @TableId(value = "id", type = IdType.AUTO) - @Schema(description="主键id") - @JsonSerialize(using = ToStringSerializer.class) - @JsonFormat(shape = JsonFormat.Shape.STRING) - private Integer id; - - @TableField(value = "create_id") - @Schema(description="用户编号") - private Long createId; - - @TableField(value = "login_type") - @Schema(description="登录类型, 0: web, 1:app") - private String loginType; - - @TableField(value = "create_time") - @Schema(description="创建时间") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") - private Date createTime; - - @TableField(value = "menu1") - @Schema(description="菜单1") - private String menu1; - - @TableField(value = "menu2") - @Schema(description="菜单2") - private String menu2; - - @TableField(value = "menu3") - @Schema(description="菜单3") - private String menu3; - - @TableField(exist = false) - @Schema(description="统计数量") - private String count; - - @TableField(exist = false) - @Schema(description = "名称") - private String name; - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/system/so/UserLoginLogPageSo.java b/src/main/java/com/gunshi/project/hsz/system/so/UserLoginLogPageSo.java deleted file mode 100644 index e07cb10..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/so/UserLoginLogPageSo.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.system.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; - -/** - * - * Created by wanyan on 2024/4/7. - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "用户访问记录分页查询条件") -public class UserLoginLogPageSo { - - @NotNull(message = "分页参数不能为空") - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="名称") - private String name; - - @Schema(description="开始时间 yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date stm; - - @Schema(description="结束时间 yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date etm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/system/so/UserLoginLogSo.java b/src/main/java/com/gunshi/project/hsz/system/so/UserLoginLogSo.java deleted file mode 100644 index a31271c..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/so/UserLoginLogSo.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gunshi.project.hsz.system.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; - -/** - * - * Created by wanyan on 2024/4/7. - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "用户访问记录统计查询条件") -public class UserLoginLogSo { - - - @Schema(description="开始时间 yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @NotNull - private Date stm; - - @Schema(description="结束时间 yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @NotNull - private Date etm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/system/so/VisitMenuLogPageSo.java b/src/main/java/com/gunshi/project/hsz/system/so/VisitMenuLogPageSo.java deleted file mode 100644 index 2983f6a..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/so/VisitMenuLogPageSo.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gunshi.project.hsz.system.so; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.db.dto.PageSo; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.util.Date; - -/** - * - * Created by wanyan on 2024/4/7. - * - * @author wanyan - * @version 1.0 - */ -@Data -@Schema(description = "页面访问记录分页查询条件") -public class VisitMenuLogPageSo { - - @Schema(description = "分页参数") - private PageSo pageSo; - - @Schema(description="菜单名") - private String menu; - - @Schema(description="名称") - private String name; - - @Schema(description="登录类型, 0: web, 1:app") - private String loginType; - - @Schema(description="开始时间 yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date stm; - - @Schema(description="结束时间 yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date etm; - -} diff --git a/src/main/java/com/gunshi/project/hsz/system/utils/ReqUtil.java b/src/main/java/com/gunshi/project/hsz/system/utils/ReqUtil.java deleted file mode 100644 index 335e60a..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/utils/ReqUtil.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.gunshi.project.hsz.system.utils; - - -import jakarta.servlet.http.HttpServletRequest; - -public class ReqUtil { -// private static DbConfig config = null; - private static String dbPath = null; - -// private static DbSearcher searcher = null; - - /** - * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, - * 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢? - * 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。 - * 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100 - * 用户真实IP为: 192.168.1.110 - * - * @param request - * @return - */ - public static String getIpAddress(HttpServletRequest request) {// 获取客户端ip地址 - String clientIp = request.getHeader("x-forwarded-for"); - - if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { - clientIp = request.getHeader("Proxy-Client-IP"); - } - if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { - clientIp = request.getHeader("WL-Proxy-Client-IP"); - } - if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { - clientIp = request.getRemoteAddr(); - } - /* - * 对于获取到多ip的情况下,找到公网ip. - */ - String sIP = null; - if (clientIp != null && !clientIp.contains("unknown") && clientIp.indexOf(",") > 0) { - String[] ipsz = clientIp.split(","); - for (String anIpsz : ipsz) { - if (!isInnerIP(anIpsz.trim())) { - sIP = anIpsz.trim(); - break; - } - } - /* - * 如果多ip都是内网ip,则取第一个ip. - */ - if (null == sIP) { - sIP = ipsz[0].trim(); - } - clientIp = sIP; - } - if (clientIp != null && clientIp.contains("unknown")) { - clientIp = clientIp.replaceAll("unknown,", ""); - clientIp = clientIp.trim(); - } - if ("".equals(clientIp) || null == clientIp) { - clientIp = "127.0.0.1"; - } - return clientIp; - } - - /** - * 判断IP是否是内网地址 - * - * @param ipAddress ip地址 - * @return 是否是内网地址 - */ - public static boolean isInnerIP(String ipAddress) { - boolean isInnerIp; - long ipNum = getIpNum(ipAddress); - /** - 私有IP:A类 10.0.0.0-10.255.255.255 - B类 172.16.0.0-172.31.255.255 - C类 192.168.0.0-192.168.255.255 - 当然,还有127这个网段是环回地址 - **/ - long aBegin = getIpNum("10.0.0.0"); - long aEnd = getIpNum("10.255.255.255"); - - long bBegin = getIpNum("172.16.0.0"); - long bEnd = getIpNum("172.31.255.255"); - - long cBegin = getIpNum("192.168.0.0"); - long cEnd = getIpNum("192.168.255.255"); - isInnerIp = - isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || ipAddress.equals("127.0.0.1"); - return isInnerIp; - } - - private static long getIpNum(String ipAddress) { - String[] ip = ipAddress.split("\\."); - long a = Integer.parseInt(ip[0]); - long b = Integer.parseInt(ip[1]); - long c = Integer.parseInt(ip[2]); - long d = Integer.parseInt(ip[3]); - - return a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; - } - - private static boolean isInner(long userIp, long begin, long end) { - return (userIp >= begin) && (userIp <= end); - } - - public static String getRealIP(HttpServletRequest request) { - // 获取客户端ip地址 - String clientIp = request.getHeader("x-forwarded-for"); - - if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { - clientIp = request.getRemoteAddr(); - } - - String[] clientIps = clientIp.split(","); - if (clientIps.length <= 1) return clientIp.trim(); - - // 判断是否来自CDN - if (isComefromCDN(request)) { - if (clientIps.length >= 2) return clientIps[clientIps.length - 2].trim(); - } - - return clientIps[clientIps.length - 1].trim(); - } - - private static boolean isComefromCDN(HttpServletRequest request) { - String host = request.getHeader("host"); - return host.contains("www.189.cn") || host.contains("shouji.189.cn") || host.contains("image2.chinatelecom-ec" + - ".com") || host.contains("image1.chinatelecom-ec.com"); - } - -// public static synchronized String getRegion(String ip) { -// if (StrKit.isBlank(ip)) return null; -// boolean isIpAddress = Util.isIpAddress(ip); -// if (!isIpAddress) return null; -// try { -// if (searcher == null) { -// if (null == config) config = new DbConfig(); -// if (null == dbPath) dbPath = ReqUtil.class.getResource("/ip2region/ip2region.db").getPath(); -// searcher = new DbSearcher(config, dbPath); -// } -// -// DataBlock dataBlock = searcher.binarySearch(ip); -// return dataBlock.getRegion(); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// -// return null; -// } -} diff --git a/src/main/java/com/gunshi/project/hsz/system/vo/TodayCountVo.java b/src/main/java/com/gunshi/project/hsz/system/vo/TodayCountVo.java deleted file mode 100644 index 43d1b16..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/vo/TodayCountVo.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gunshi.project.hsz.system.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * Description: - * Created by XuSan on 2024/6/25. - * - * @author XuSan - * @version 1.0 - */ -@Data -public class TodayCountVo { - - @Schema(description = "WEB端访问次数") - private Long web1Count; - - @Schema(description = "WEB端浏览次数") - private Long web2Count; - - @Schema(description = "WEB端平均访问时长") - private BigDecimal web3Count; - - @Schema(description = "移动端访问次数") - private Long app1Count; - - @Schema(description = "移动端浏览次数") - private Long app2Count; - - @Schema(description = "移动端平均访问时长") - private BigDecimal app3Count; - -} diff --git a/src/main/java/com/gunshi/project/hsz/system/vo/UserCountVo.java b/src/main/java/com/gunshi/project/hsz/system/vo/UserCountVo.java deleted file mode 100644 index 37c5b9a..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/vo/UserCountVo.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gunshi.project.hsz.system.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.gunshi.core.dateformat.DateFormatString; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/6/25. - * - * @author XuSan - * @version 1.0 - */ -@Data -public class UserCountVo { - - @Schema(description = "web统计数据") - private List webList; - - @Schema(description = "app统计数据") - private List appList; - - @Data - public static class UserCountDataVo { - - @Schema(description="日期") - @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") - private Date createDate; - - @Schema(description = "统计数据") - private Long count; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/system/vo/VisitCountVo.java b/src/main/java/com/gunshi/project/hsz/system/vo/VisitCountVo.java deleted file mode 100644 index ac3e356..0000000 --- a/src/main/java/com/gunshi/project/hsz/system/vo/VisitCountVo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gunshi.project.hsz.system.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -/** - * Description: - * Created by XuSan on 2024/6/25. - * - * @author XuSan - * @version 1.0 - */ -@Data -public class VisitCountVo { - - @Schema(description = "web统计数据") - private List webList; - - @Schema(description = "app统计数据") - private List appList; - - @Data - public static class VisitCountDataVo { - - @Schema(description = "名字") - private String name; - - @Schema(description = "统计数据") - private Long count; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/AlarmTask.java b/src/main/java/com/gunshi/project/hsz/timetask/AlarmTask.java deleted file mode 100644 index 7d448a0..0000000 --- a/src/main/java/com/gunshi/project/hsz/timetask/AlarmTask.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.gunshi.project.hsz.timetask; - - -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.entity.enums.AlarmTypeEnum; -import com.gunshi.project.hsz.entity.vo.AttResBaseVo; -import com.gunshi.project.hsz.mapper.AlarmSetMapper; -import com.gunshi.project.hsz.mapper.AttResBaseMapper; -import com.gunshi.project.hsz.model.AlarmSet; -import com.gunshi.project.hsz.common.model.StRiverRReal; -import com.gunshi.project.hsz.model.WaterAlarm; -import com.gunshi.project.hsz.service.StRiverRRealService; -import com.gunshi.project.hsz.service.StRsvrRService; -import com.gunshi.project.hsz.service.StStbprpBService; -import com.gunshi.project.hsz.service.WaterAlarmService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Profile; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.time.Instant; -import java.util.List; -import java.util.concurrent.TimeUnit; - -/** - * 告警定时任务 - */ -@Component -@Slf4j -@EnableScheduling -@Profile({"prod","dev","local"}) -public class AlarmTask { - - @Autowired - private AlarmSetMapper alarmSetMapper; - - @Autowired - private AttResBaseMapper attResBaseMapper; - - @Autowired - private WaterAlarmService waterAlarmService; - - @Autowired - private StRiverRRealService stRiverRRealService; - - @Autowired - private StStbprpBService stStbprpBService; - - @Async - @Scheduled(cron = "0 7 * * * *") - public void updateAlarmSet(){ - //查询告警设置中所有的配置的站点 - List alarmSets = alarmSetMapper.selectList(null); - //去实时水情查询数据 - for (AlarmSet alarmSet : alarmSets) { - String stcd = alarmSet.getStcd();//获取站点编号 - saveRiverData(stcd); - } - } - - @Async - @Scheduled(cron = "0 7 * * * *") - public void updateWaterAlarm(){ - List attResBaseVos = attResBaseMapper.queryList2(); - for (AttResBaseVo attResBaseVo : attResBaseVos) { - saveResStData(attResBaseVo); - } - } - - private void saveResStData(AttResBaseVo entity){ - Integer calState = entity.getCalState();//是否超校核 - - Integer desState = entity.getDesState();//是否超设计 - - Integer flState = entity.getFlState();//是否超汛限 - WaterAlarm waterAlarmNew = waterAlarmService.getBaseMapper().selectByStcdNew(entity.getStcd()); - if(waterAlarmNew != null){ - //判断最新的时间是否大于 - //最新数据时间 - Instant newDataInstant = entity.getTm().toInstant(); - //老数据告警时间 - Instant currentDataInstant = waterAlarmNew.getAlarmTime().toInstant(); - if(newDataInstant.compareTo(currentDataInstant) <= 0){ - //如果不是最新数据,直接结束 - return; - } - } - if(calState > 0){ - Integer level = AlarmTypeEnum.RESERVOIR_OVER_CHECK.getLevel(); - WaterAlarm waterAlarm = new WaterAlarm(); - waterAlarm.setStcd(entity.getStcd()); - waterAlarm.setStnm(entity.getStnm()); - waterAlarm.setAlarmTime(entity.getTm()); - waterAlarm.setCurValue(entity.getRz()); - waterAlarm.setAlarmValue(entity.getCalFloodLev()); - waterAlarm.setOverValue(entity.getRz().subtract(entity.getCalFloodLev())); - waterAlarm.setAlarmType(level); - waterAlarmService.save(waterAlarm); - } - if(desState > 0){ - Integer level = AlarmTypeEnum.RESERVOIR_OVER_DESIGN.getLevel(); - WaterAlarm waterAlarm = new WaterAlarm(); - waterAlarm.setStcd(entity.getStcd()); - waterAlarm.setStnm(entity.getStnm()); - waterAlarm.setAlarmTime(entity.getTm()); - waterAlarm.setCurValue(entity.getRz()); - waterAlarm.setAlarmValue(entity.getDesFloodLev()); - waterAlarm.setOverValue(entity.getRz().subtract(entity.getDesFloodLev())); - waterAlarm.setAlarmType(level); - waterAlarmService.save(waterAlarm); - } - if(flState > 0){ - Integer level = AlarmTypeEnum.RESERVOIR_OVER_FLOOD_LIMIT.getLevel(); - WaterAlarm waterAlarm = new WaterAlarm(); - waterAlarm.setStcd(entity.getStcd()); - waterAlarm.setStnm(entity.getStnm()); - waterAlarm.setAlarmTime(entity.getTm()); - waterAlarm.setCurValue(entity.getRz()); - waterAlarm.setAlarmValue(entity.getFlLowLimLev()); - waterAlarm.setOverValue(entity.getRz().subtract(entity.getFlLowLimLev())); - waterAlarm.setAlarmType(level); - waterAlarmService.save(waterAlarm); - } - } - - private void saveRiverData(String stcd){ - //根据站点编码查询真实水位数据 - StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().queryQByStcd(stcd); - //查询该站点最新一条数据 - WaterAlarm waterAlarmNew = waterAlarmService.getBaseMapper().selectByStcdNew(stcd); - - - if(stRiverRReal != null){ - //该站点,真实河道水位的最新数据的时间 - Instant newDateInstant = stRiverRReal.getTm().toInstant(); - //告警表中,该站点的最新数据的时间 - if(waterAlarmNew != null){ - Instant curDateInstant = waterAlarmNew.getAlarmTime().toInstant(); - if(newDateInstant.compareTo(curDateInstant) <= 0){ - //如果要插入数据的时间与当前告警表中数据相同,则直接跳过本条数据 - return; - } - } - AlarmSet alarmSet = alarmSetMapper.queryByStcd(stcd); - //警告水位 - BigDecimal warnWaterLevel = alarmSet.getWarnWaterLevel(); - //保证水位 - BigDecimal promiseWaterLevel = alarmSet.getPromiseWaterLevel(); - if(alarmSet == null){ - return; - }else{ - BigDecimal rz =stRiverRReal.getZ(); - if(rz == null){ - return; - } - if(rz.compareTo(warnWaterLevel) >=0 && rz.compareTo(promiseWaterLevel) <=0){ - BigDecimal gap = rz.subtract(warnWaterLevel); - //河道超警戒 - Integer level = AlarmTypeEnum.RIVER_OVER_WARNING.getLevel(); - WaterAlarm waterAlarm = new WaterAlarm(); - waterAlarm.setStcd(stRiverRReal.getStcd()); - waterAlarm.setStnm(stRiverRReal.getStnm()); - waterAlarm.setAlarmTime(stRiverRReal.getTm()); - waterAlarm.setCurValue(stRiverRReal.getZ()); - waterAlarm.setAlarmValue(warnWaterLevel); - waterAlarm.setOverValue(gap); - waterAlarm.setAlarmType(level); - waterAlarmService.save(waterAlarm); - }else if(rz.compareTo(promiseWaterLevel) >0){ - BigDecimal gap = rz.subtract(promiseWaterLevel); - //河道超保证 - Integer level = AlarmTypeEnum.RIVER_OVER_GUARANTEE.getLevel(); - WaterAlarm waterAlarm = new WaterAlarm(); - waterAlarm.setStcd(stRiverRReal.getStcd()); - waterAlarm.setStnm(stRiverRReal.getStnm()); - waterAlarm.setAlarmTime(stRiverRReal.getTm()); - waterAlarm.setCurValue(stRiverRReal.getZ()); - waterAlarm.setAlarmValue(promiseWaterLevel); - waterAlarm.setOverValue(gap); - waterAlarm.setAlarmType(level); - waterAlarmService.save(waterAlarm); - } - } - } - - - } -} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java b/src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java deleted file mode 100644 index fa6e3ef..0000000 --- a/src/main/java/com/gunshi/project/hsz/timetask/DataTaskHsz.java +++ /dev/null @@ -1,615 +0,0 @@ -package com.gunshi.project.hsz.timetask; - -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.gunshi.project.hsz.common.model.*; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.service.*; -import com.gunshi.project.hsz.util.OkHttpUtil; -import lombok.extern.slf4j.Slf4j; -import okhttp3.FormBody; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Profile; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.io.IOException; -import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.function.Function; -import java.util.stream.Collectors; - -/** -*@description 檀树岗数据定时任务 -*@author cxw -*@classname DataTaskHsz.java -*@create 2024-09-20, 周五, 17:05:22 -*/ -@EnableScheduling//开启定时任务 -@Component -@Slf4j - @Profile({"prod","dev"}) -public class DataTaskHsz { - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - private static SimpleDateFormat sdfD = new SimpleDateFormat("yyyy-MM-dd"); - - - private static SimpleDateFormat sdfEight = new SimpleDateFormat("yyyy-MM-dd 08:00:00"); - - - @Value("${jcskPath}") - private String jcskPath;// 荆楚水库同步地址 - - @Value("${jcskToken}") - private String jcskToken;// 荆楚水库同步接口token - - @Value("${reloadCache}") - private String reloadCache;// 清除ip白名单缓存 - - public static String jcskPathPptnRoute = "/pptn/";// 雨情接口,需拼接源(sh、sw、qx) - - public static String jcskPathRrRiverRoute = "/river/";// ZZ河道水位接口 - public static String jcskPathZzRsvrRoute = "/rsvr/";// RR水库水位接口 - - public static String jcskPathWaterRRoute = "";//供水接口 - - // 实时雨情 - @Autowired - private StPptnRRealService stPptnRRealService; - - // 历史雨情 - @Autowired - private StPptnRService stPptnRService; - - // 小时雨情 - @Autowired - private StPptnRHService stPptnRHService; - - // 按天雨情 - @Autowired - private StPptnRDService stPptnRDService; - - // 实时水情 - @Autowired - private StRsvrRRealService stRsvrRRealService; - - // 历史水情 - @Autowired - private StRsvrRService stRsvrRService; - - // 实时水情 - @Autowired - private StRiverRRealService stRiverRRealService; - - // 历史水情 - @Autowired - private StRiverRService stRiverRService; - - //历史供水量 - @Autowired - private StWaterRService stWaterRService; - - //实时供水量 - @Autowired - private StWaterRRealService stWaterRRealService; - - //供水量整编 - @Autowired - private StWaterRReorganizeService stWaterRReorganizeService; - - /** - * @param - * @description: 定时获取水库雨情数据(历史、天、时、real) - * @return: void - * @auther: cxw - * @date: 2024-09-20, 周五, 17:07:23 - */ -// @Async -// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES) - @Deprecated(since = "改在hsz-datasync中同步") - public void getPptnData() { - Date now = new Date(); - System.out.println("雨情实时定时任务,执行时间:" + sdf.format(now)); - // 获取水库站点编码 - List stcdLastPptnDatas = stPptnRService.getStcdLastPptnData(); - OkHttpClient client = OkHttpUtil.build(); - try { - if (CollectionUtils.isNotEmpty(stcdLastPptnDatas)) { - for (StPptnR stPptnR : stcdLastPptnDatas) { - log.info("开始获取雨情数据:{}", stPptnR.getStcd()); - Calendar calendar = Calendar.getInstance(); - String stcd = stPptnR.getStcd(); - String source = stPptnR.getSource().toLowerCase(); - Date stm = stPptnR.getStm(); - // 默认30天前 - if (ObjectUtils.isEmpty(stm)) { - if ("sh".equals(stPptnR.getSource().toLowerCase())) { - calendar.add(Calendar.DATE, -30); - } else { - calendar.add(Calendar.DATE, -2); - calendar.add(Calendar.HOUR_OF_DAY, -20); - } - } else { - int diffDays = new BigDecimal((int) Math.ceil((now.getTime() - stm.getTime()) / (24 * 60 * 60 * 1000))).intValue(); - if (diffDays > 3) { - calendar.add(Calendar.DATE, -2); - calendar.add(Calendar.HOUR_OF_DAY, -20); - } else { - calendar.setTime(stm); - calendar.add(Calendar.MINUTE, 1); - } - } - stm = calendar.getTime(); - String url = jcskPath; - if ("shylres".equals(source)) { - url += "/" + source + "/pptn"; - } else { - url += jcskPathPptnRoute + stPptnR.getSource().toLowerCase(); - } - Response resp = client.newCall(new Request.Builder().url(url) - .post(new FormBody.Builder().add("stcd", stcd) - .add("stm", sdf.format(stm)) - .add("etm", sdf.format(now)) - .build()) - .header("Token", jcskToken) - .addHeader("Content-Type", "application/x-www-form-urlencoded") - .build()).execute(); - String respStr = resp.body().string(); - JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); - // 清除同步平台的ip白名单缓存 - if ("401".equals(jsonObject.get("code").toString())) { - OkHttpClient clientCache = new OkHttpClient(); - Request request = new Request.Builder().url(reloadCache).build(); - clientCache.newCall(request).execute(); - } - JSONArray data = jsonObject.getJSONArray("data"); - if (ObjectUtils.isNotEmpty(data)) { - List rlist = data.toJavaList(StPptnR.class); - if (CollectionUtils.isNotEmpty(rlist)) { - // 全部替换为stcd,并去重 - rlist = rlist.stream().peek(entity -> entity.setStcd(stPptnR.getStcd())).collect(Collectors.toMap( - e -> e.getStcd().toUpperCase() + "_" + e.getTm(), // 使用属性组合作为键 - Function.identity(), - (existing, replacement) -> existing // 如果有冲突,保留现有的 - )).values().stream().collect(Collectors.toList()); - stPptnRService.saveBatch(rlist); - log.info("【{}】历史数据同步成功,数据条数:{}", stcd, rlist.size()); - // 更新到实时数据表 - stPptnRRealService.updatePptnRReal(rlist.get(0).getStcd()); - // 整编降雨量天表数据 - StPptnRD maxDataD = stPptnRDService.getMaxData(stPptnR.getStcd()); - Date tmMax = maxDataD.getTm(); - maxDataD.setTm(sdf.parse(sdfEight.format(tmMax))); - List listD = stPptnRDService.reorganizePptnRDData(stPptnR.getStcd(), maxDataD); - if (CollectionUtils.isNotEmpty(listD)) { - if (listD.size() > 0) { - listD = listD.stream() - .map(user -> { - user.setYear(Integer.valueOf(sdfD.format(user.getTm()).substring(0, 4))); // 修改属性值 - return user; - }).collect(Collectors.toList()); - QueryWrapper deleteWrapper = new QueryWrapper<>(); - deleteWrapper.eq("stcd", stcd).ge("tm", tmMax); - stPptnRDService.remove(deleteWrapper); - stPptnRDService.saveBatch(listD); - } - } - // 整编降雨量小时表数据 - StPptnRH maxDataH = stPptnRHService.getMaxData(stPptnR.getStcd()); - List listH = stPptnRHService.reorganizePptnRHData(stPptnR.getStcd(), maxDataH); - if (CollectionUtils.isNotEmpty(listH)) { - StPptnRH LastData = listH.get(0); - if (LastData.getTm().equals(maxDataH.getTm())) { - listH.remove(0); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("stcd", LastData.getStcd()).eq("tm", LastData.getTm()); - LastData.setDrp(LastData.getDrp()); - LastData.setChtm(maxDataH.getChtm()); - stPptnRHService.saveOrUpdate(LastData, updateWrapper); - } - if (listH.size() > 0) { - stPptnRHService.saveBatch(listH); - } - } - } - } - } - } - } catch (IOException e) { - log.error("荆楚水库雨情定时任务失败:", e.getMessage()); - } catch (ParseException e) { - throw new RuntimeException(e); - } - } - /** - * @description: 定时获取水库水情数据(历史、real) - * @param - * @return: void - * @auther: cxw - * @date: 2024-09-23, 周一, 11:23:04 - */ -// @Async -// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES) - @Deprecated(since = "改在hsz-datasync中同步") - public void getRiverData() { - Date now = new Date(); - System.out.println("水情历史定时任务,执行时间:" + sdf.format(now)); - // 获取水库站点编码历史水情表中站点最新数据时间 - List stcdLast = stRsvrRService.getStcdLastRsvrData(); - OkHttpClient client = OkHttpUtil.build(); - try { - if (CollectionUtils.isNotEmpty(stcdLast)) { - //对每个数据进行遍历 - for (StRsvrR stRsvrR : stcdLast) { - Date stm = stRsvrR.getStm(); - String source = stRsvrR.getSource().toLowerCase(); - String sttp = stRsvrR.getSttp().toLowerCase(); - Calendar calendar = Calendar.getInstance(); - // 默认40天前(接口最多40天),存在则加1小时(接口是按小时算且大于等于开始时间) - // 默认30天前 - if (ObjectUtils.isEmpty(stm)) { - //如果数据库中没有该站点任何时间得数据 - if ("sh".equals(source)) { - //对于sh源得数据,取前30天至今 - calendar.add(Calendar.DATE, -30); - } else { - //其它源得数据,取前2天20小时 - calendar.add(Calendar.DATE, -2); - calendar.add(Calendar.HOUR_OF_DAY, -20); - } - } else { - //如果又时间,则计算当前时间与最后一次同步得时间差 - int diffDays = new BigDecimal((int) Math.ceil((now.getTime() - stm.getTime()) / (24 * 60 * 60 * 1000))).intValue(); - if (diffDays > 3) { - //如果时间差大于3天 - calendar.add(Calendar.DATE, -2); - calendar.add(Calendar.HOUR_OF_DAY, -20); - } else { - //小于三天 - calendar.setTime(stm); - calendar.add(Calendar.MINUTE, 1); - } - } - stm = calendar.getTime(); - String url = jcskPath; - if("shylres".equals(source)) { - url += "/" + source + "/rsvr"; - } else { - if ("rr".equals(sttp)) { - url += jcskPathZzRsvrRoute + source; - } else if ("zz".equals(sttp)) { - url += jcskPathRrRiverRoute + source; - } else { - continue; - } - } - //构建HTTP请求 - Response resp = client.newCall(new Request.Builder().url(url) - .post(new FormBody.Builder().add("stcd", stRsvrR.getStcd()) - .add("stm", sdf.format(stm)) - .add("etm", sdf.format(now)) - .build()) - .header("Token", jcskToken) - .addHeader("Content-Type", "application/x-www-form-urlencoded") - .build()).execute(); - String respStr = resp.body().string(); - JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); - if (!"200".equals(jsonObject.get("code").toString())) { - continue; - } - JSONArray data = jsonObject.getJSONArray("data"); - if (CollectionUtils.isNotEmpty(data)) { - //如果是zz类型站得数据 - if ("zz".equals(sttp)) { - List rlist = data.toJavaList(StRiverR.class); - stRiverRService.saveBatch(rlist); - // 更新实时表数据 - StRiverR stRiverRLast = rlist.get(rlist.size() - 1); - StRiverRReal stRiverRReal = new StRiverRReal(); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("stcd", stRiverRLast.getStcd()).eq("tm", stRiverRLast.getTm()); - BeanUtils.copyProperties(stRiverRLast, stRiverRReal); - stRiverRReal.setChtm(new Date()); - stRiverRRealService.saveOrUpdate(stRiverRReal, updateWrapper); - } else if ("rr".equals(sttp)) { - List rlist = data.toJavaList(StRsvrR.class); - stRsvrRService.saveBatch(rlist); - // 更新实时表数据 - StRsvrR stRsvrRLast = rlist.get(rlist.size() - 1); - StRsvrRReal stRsvrRReal = new StRsvrRReal(); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("stcd", stRsvrRLast.getStcd()).eq("tm", stRsvrRLast.getTm()); - BeanUtils.copyProperties(stRsvrRLast, stRsvrRReal); - stRsvrRReal.setChtm(new Date()); - stRsvrRRealService.saveOrUpdate(stRsvrRReal, updateWrapper); - } - } - } - } - } catch (IOException e) { - log.error("水情历史定时任务错误:", e.getMessage()); - } - } - - /** - * @description: 补雨量数据 - * @param - * @return: void - * @auther: cxw - * @date: 2024-10-16, 周三, 16:24:29 - */ -// @PostConstruct - public void supplementPptnData() { - Date now = new Date(); - System.out.println("补雨量数据任务,执行时间:" + sdf.format(now)); - List stcdLastPptnDatas = stPptnRService.getStcdFirstPptnData(); - OkHttpClient client = OkHttpUtil.build(); - try { - if (CollectionUtils.isNotEmpty(stcdLastPptnDatas)) { - for (StPptnR stPptnR : stcdLastPptnDatas) { - String stm = "2024-01-01 00:00:00";// 补数据的开始时间 - Calendar calendar = Calendar.getInstance(); - String source = stPptnR.getSource().toLowerCase(); - String url = jcskPath; - if ("shylres".equals(source)) { - url += "/" + source + "/pptn"; - } else { - url += jcskPathPptnRoute + stPptnR.getSource().toLowerCase(); - } - String stcd = stPptnR.getStcd(); - Date etmD = null; - if (ObjectUtils.isEmpty(stPptnR.getEtm())) { - etmD = now; - } else { - etmD = stPptnR.getEtm(); - } - String etm = sdf.format(etmD);// 补数据的结束时间 - if (stmIsBeforeEtm(etm, stm, "yyyy-MM-dd HH:mm:ss")) { - continue; - } - // 结束日期往前减4分钟,防止数据重复 - Calendar calendarEtm = Calendar.getInstance(); - calendarEtm.setTime(sdf.parse(etm)); - calendarEtm.add(Calendar.MINUTE, -4); - etm = sdf.format(calendarEtm.getTime()); - // 开始时间往后推3天,不超过结束日期 - while (stmIsBeforeEtm(stm, etm, "yyyy-MM-dd HH:mm:ss")) { - String newEtm = dateManipulation(stm, 3, "yyyy-MM-dd HH:mm:ss"); - if(stmIsBeforeEtm(etm, newEtm, "yyyy-MM-dd HH:mm:ss")){ - newEtm = etm; - } - Response resp = client.newCall(new Request.Builder().url(url).post(new FormBody.Builder().add("stcd", stcd).add("stm", stm).add("etm", newEtm).build()).header("Token", jcskToken).addHeader("Content-Type", "application/x-www" + - "-form-urlencoded").build()).execute(); - String respStr = resp.body().string(); - JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); - // 清除同步平台的ip白名单缓存 - if ("401".equals(jsonObject.get("code").toString())) { - OkHttpClient clientCache = new OkHttpClient(); - Request request = new Request.Builder().url(reloadCache).build(); - clientCache.newCall(request).execute(); - } - JSONArray data = jsonObject.getJSONArray("data"); - if (ObjectUtils.isNotEmpty(data)) { - List rlist = data.toJavaList(StPptnR.class); - if (CollectionUtils.isNotEmpty(rlist)) { - // 全部替换为stcd,并去重 - rlist = rlist.stream().peek(entity -> entity.setStcd(stPptnR.getStcd())).collect(Collectors.toMap(e -> e.getStcd().toUpperCase() + "_" + e.getTm(), // 使用属性组合作为键 - Function.identity(), (existing, replacement) -> existing // 如果有冲突,保留现有的 - )).values().stream().collect(Collectors.toList()); - stPptnRService.saveBatch(rlist); - // 更新到实时数据表 - stPptnRRealService.updatePptnRReal(rlist.get(0).getStcd()); - // 整编降雨量天表数据 - StPptnRD maxDataD = stPptnRDService.getMaxData(stPptnR.getStcd()); - Date tmMax = maxDataD.getTm(); - maxDataD.setTm(sdf.parse(sdfEight.format(tmMax))); - List listD = stPptnRDService.reorganizePptnRDData(stPptnR.getStcd(), maxDataD); - if (CollectionUtils.isNotEmpty(listD)) { - if (listD.size() > 0) { - listD = listD.stream().map(user -> { - user.setYear(Integer.valueOf(sdfD.format(user.getTm()).substring(0, 4))); // 修改属性值 - return user; - }).collect(Collectors.toList()); - QueryWrapper deleteWrapper = new QueryWrapper<>(); - deleteWrapper.eq("stcd", stcd).ge("tm", tmMax); - stPptnRDService.remove(deleteWrapper); - stPptnRDService.saveBatch(listD); - } - } - // 整编降雨量小时表数据 - StPptnRH maxDataH = stPptnRHService.getMaxData(stPptnR.getStcd()); - List listH = stPptnRHService.reorganizePptnRHData(stPptnR.getStcd(), maxDataH); - if (CollectionUtils.isNotEmpty(listH)) { - StPptnRH LastData = listH.get(0); - if (LastData.getTm().equals(maxDataH.getTm())) { - listH.remove(0); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("stcd", LastData.getStcd()).eq("tm", LastData.getTm()); - LastData.setDrp(LastData.getDrp()); - LastData.setChtm(maxDataH.getChtm()); - stPptnRHService.saveOrUpdate(LastData, updateWrapper); - } - if (listH.size() > 0) { - stPptnRHService.saveBatch(listH); - } - } - } - } - if (stmIsBeforeEtm(etm, newEtm, "yyyy-MM-dd HH:mm:ss")) { - stm = etm; - } else { - stm = newEtm; - } - calendar.setTime(sdf.parse(stm)); - calendar.add(Calendar.MINUTE, 5); - stm = sdf.format(calendar.getTime()); - } - } - } - } catch (IOException e) { - log.error("补雨量数据任务失败:", e.getMessage()); - } catch (ParseException e) { - throw new IllegalArgumentException(e); - } - } - - /** - * @description: 补水位数据 - * @param - * @return: void - * @auther: cxw - * @date: 2024-10-16, 周三, 17:13:33 - */ -// @PostConstruct - public void supplementRsvrData() { - Date now = new Date(); - System.out.println("补水位数据任务,执行时间:" + sdf.format(now)); - List stcdLast = stRsvrRService.getStcdFirstRsvrData(); - OkHttpClient client = OkHttpUtil.build(); - try { - if (CollectionUtils.isNotEmpty(stcdLast)) { - for (StRsvrR stRsvrR : stcdLast) { - String sttp = stRsvrR.getSttp().toLowerCase(); - String source = stRsvrR.getSource().toLowerCase(); - String stm = "2024-01-01 00:00:00";// 补数据的开始时间 - Calendar calendar = Calendar.getInstance(); - Date etmD = null; - if (ObjectUtils.isEmpty(stRsvrR.getEtm())) { - etmD = now; - } else { - etmD = stRsvrR.getEtm(); - } - String etm = sdf.format(etmD);// 补数据的结束时间 - if (stmIsBeforeEtm(etm, stm, "yyyy-MM-dd HH:mm:ss")) { - continue; - } - String url = jcskPath; - if("shylres".equals(source)) { - url += "/" + source + "/rsvr"; - } else { - if ("rr".equals(sttp)) { - url += jcskPathZzRsvrRoute + source; - } else if ("zz".equals(sttp)) { - url += jcskPathRrRiverRoute + source; - } else { - continue; - } - } - // 结束日期往前减4分钟,防止数据重复 - Calendar calendarEtm = Calendar.getInstance(); - calendarEtm.setTime(sdf.parse(etm)); - calendarEtm.add(Calendar.MINUTE, -4); - etm = sdf.format(calendarEtm.getTime()); - while (stmIsBeforeEtm(stm, etm, "yyyy-MM-dd HH:mm:ss")) { - String newEtm = dateManipulation(stm, 3, "yyyy-MM-dd HH:mm:ss"); - if(stmIsBeforeEtm(etm, newEtm, "yyyy-MM-dd HH:mm:ss")){ - newEtm = etm; - } - Response resp = client.newCall(new Request.Builder().url(url) - .post(new FormBody.Builder().add("stcd", stRsvrR.getStcd()) - .add("stm", stm) - .add("etm", newEtm) - .build()) - .header("Token", jcskToken) - .addHeader("Content-Type", "application/x-www-form-urlencoded") - .build()).execute(); - String respStr = resp.body().string(); - JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); - if (!"200".equals(jsonObject.get("code").toString())) { - continue; - } - JSONArray data = jsonObject.getJSONArray("data"); - if (CollectionUtils.isNotEmpty(data)) { - if ("zz".equals(sttp)) { - List rlist = data.toJavaList(StRiverR.class); - stRiverRService.saveBatch(rlist); - // 更新实时表数据 - StRiverR stRiverRLast = rlist.get(rlist.size() - 1); - StRiverRReal stRiverRReal = new StRiverRReal(); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("stcd", stRiverRLast.getStcd()).eq("tm", stRiverRLast.getTm()); - BeanUtils.copyProperties(stRiverRLast, stRiverRReal); - stRiverRReal.setChtm(new Date()); - stRiverRRealService.saveOrUpdate(stRiverRReal, updateWrapper); - } else if ("rr".equals(sttp)) { - List rlist = data.toJavaList(StRsvrR.class); - stRsvrRService.saveBatch(rlist); - // 更新实时表数据 - StRsvrR stRsvrRLast = rlist.get(rlist.size() - 1); - StRsvrRReal stRsvrRReal = new StRsvrRReal(); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("stcd", stRsvrRLast.getStcd()).eq("tm", stRsvrRLast.getTm()); - BeanUtils.copyProperties(stRsvrRLast, stRsvrRReal); - stRsvrRReal.setChtm(new Date()); - stRsvrRRealService.saveOrUpdate(stRsvrRReal, updateWrapper); - } - } - if (stmIsBeforeEtm(etm, newEtm, "yyyy-MM-dd HH:mm:ss")) { - stm = etm; - } else { - stm = newEtm; - } - calendar.setTime(sdf.parse(stm)); - calendar.add(Calendar.MINUTE, 5); - stm = sdf.format(calendar.getTime()); - } - } - } - } catch (IOException e) { - log.error("补水位数据任务错误:", e.getMessage()); - } catch (ParseException e) { - throw new IllegalArgumentException(e); - } - } - - - private Boolean stmIsBeforeEtm(String stm, String etm, String fmt) { - Boolean ret = false; - try { - SimpleDateFormat sdf = new SimpleDateFormat(fmt); - Date date1 = sdf.parse(stm); - Date date2 = sdf.parse(etm); - if (date1.equals(date2)) { - ret = true; - } else if (date1.before(date2)) { - ret = true; - } - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException("时间大小不正确!"); - } - return ret; - } - - private String dateManipulation(String tm, int daysToSubtract, String fmt) { - String newDateString = ""; - try { - SimpleDateFormat dateFormat = new SimpleDateFormat(fmt); - Date parsedDate = dateFormat.parse(tm); - - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parsedDate); - calendar.add(Calendar.DATE, daysToSubtract); - - newDateString = dateFormat.format(calendar.getTime()); - } catch (Exception e) { - throw new RuntimeException(e); - } - return newDateString; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java deleted file mode 100644 index 4ab8440..0000000 --- a/src/main/java/com/gunshi/project/hsz/timetask/JcskDataTask.java +++ /dev/null @@ -1,515 +0,0 @@ -package com.gunshi.project.hsz.timetask; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.core.result.R; -import com.gunshi.db.dto.DateTimeRangeSo; -import com.gunshi.project.hsz.common.model.*; -import com.gunshi.project.hsz.common.model.so.OsmoticQuerySo; -import com.gunshi.project.hsz.common.model.vo.OsmoticShiftValueVo2; -import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; -import com.gunshi.project.hsz.entity.dto.ProjectSafeCalculateDto; -import com.gunshi.project.hsz.entity.vo.ProjectSafeCalculateVo; -import com.gunshi.project.hsz.mapper.JcskGnssREightAmMapper; -import com.gunshi.project.hsz.common.mapper.JcskSlBMapper; -import com.gunshi.project.hsz.mapper.JcskSlREightAmMapper; -import com.gunshi.project.hsz.mapper.JcskSyREightAmMapper; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.service.*; -import com.gunshi.project.hsz.util.DateTransforUtil; -import com.gunshi.project.hsz.util.DateUtil; -import io.swagger.v3.oas.annotations.Operation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Profile; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; - -@EnableScheduling//开启定时任务 -@Component -@Slf4j -@Profile({"prod","dev","local"}) -public class JcskDataTask { - - - @Autowired - private JcskGnssREightAmMapper jcskGnssREightAmMapper; - - @Autowired - private JcskGnssRService jcskGnssRService; - - @Autowired - private JcskGnssBService service; - - @Autowired - private JcskSyREightAmMapper jcskSyREightAmMapper; - - @Autowired - private JcskSyRService jcskSyRService; - - @Autowired - private JcskSyBService jcskSyBService; - - @Autowired - private JcskSlBMapper jcskSlBMapper; - - @Autowired - private JcskSlREightAmMapper jcskSlREightAmMapper; - - @Autowired - private JcskSlBService jcskSlBService; - - @Autowired - private OsmoticWarnRuleService osmoticWarnRuleService; - - @Autowired - private JcskSlRService jcskSlRService; - - - - private static final Integer PRESS = 1; - - public static final Integer FLOW = 2; - - public static final Integer GNSS = 3; - -// @Scheduled(cron = "0 30 8 * * ?") - @Async - public void calculate(){ - List dvcds = jcskSyBService.getAllDvcd(); - for (String dvcd : dvcds) { - ProjectSafeCalculateDto dto = new ProjectSafeCalculateDto(); - LocalDateTime now = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(0); - LocalDateTime lastYear = now.minusYears(1); - lastYear = lastYear.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); - DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); - dateTimeRangeSo.setStart(LocalDateTimeConverter.toDate(lastYear)); - dateTimeRangeSo.setEnd(LocalDateTimeConverter.toDate(now)); - dto.setDateTimeRangeSo(dateTimeRangeSo); - dto.setDvcd(dvcd); - ProjectSafeCalculateVo ans = jcskSyRService.calculate(dto); - } - } - - -// /** -// * 每5分钟扫描渗流。渗压、位移表 生成预警 -// */ -// @Scheduled(cron = "0 */30 * * * ?") -// @Async - public void syncWarn(){ - // 获取昨天的时间 - Date yesterday = getYesterday(); - Date syMaxTm = osmoticWarnRuleService.queryMaxTmByType(PRESS); - if(syMaxTm==null){ - syMaxTm = yesterday; - } - Date slMaxTm = osmoticWarnRuleService.queryMaxTmByType(FLOW); - if(slMaxTm==null){ - slMaxTm = yesterday; - } - Date gnssMaxTm = osmoticWarnRuleService.queryMaxTmByType(GNSS); - if(gnssMaxTm==null){ - gnssMaxTm = yesterday; - } - List syList = jcskSyRService.lambdaQuery().gt(JcskSyR::getMstm, syMaxTm).list(); - List slList = jcskSlRService.lambdaQuery().gt(JcskSlR::getMstm, slMaxTm).list(); - List gnssList = jcskGnssRService.lambdaQuery().gt(JcskGnssR::getTm, gnssMaxTm).list(); - for (JcskSyR jcskSyR : syList) { - osmoticWarnRuleService.checkWarn(jcskSyR); - } - for (JcskSlR jcskSlR : slList) { - osmoticWarnRuleService.checkWarn(jcskSlR); - } - for (JcskGnssR jcskGnssR : gnssList) { - osmoticWarnRuleService.checkWarn(jcskGnssR); - } - } - - private Date getYesterday() { - Calendar calendar = Calendar.getInstance(); - calendar.add(Calendar.DAY_OF_YEAR, -1); - return calendar.getTime(); - } - - /** - * 同步渗流每日八点的数据 - */ -// @Scheduled(cron = "*/10 * * * * ?") -// @Scheduled(cron = "0 17 8 * * ?") -// @Async - public void syncSlREightAmData() { - OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); - DateTimeRangeSo so = new DateTimeRangeSo(); - List list = jcskSlBService.lambdaQuery().list(); - List cds = list.stream().map(JcskSlB::getDvcd).collect(Collectors.toList());//获取所有的测点编码(仪器编号) - osmoticQuerySo.setStationCodes(cds); - //获取整编表数量 - Long count = jcskSlREightAmMapper.selectCount(null); - List saveDatas = new ArrayList<>(); - List> syncData = new ArrayList<>(); - - if (count > 0) { - //增量同步 - //取最新的一个数据的时间,按每个测站测点分别同步 - for (JcskSlB jcskSlB : list) { - String mpcd = jcskSlB.getMpcd(); - String dvcd = jcskSlB.getDvcd(); - osmoticQuerySo.setStationCodes(Arrays.asList(dvcd)); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(JcskSlREightAm::getMpcd, mpcd) - .orderByDesc(JcskSlREightAm::getMstm).last("limit 1"); - JcskSlREightAm jcskGnssREightAm = jcskSlREightAmMapper.selectOne(wrapper); - - Calendar calendar = Calendar.getInstance(); - - if (jcskGnssREightAm != null) { - // 如果存在最新数据,从最新时间的第二天开始同步 - LocalDateTime latestDate = jcskGnssREightAm.getMstm(); - calendar.setTime(DateTransforUtil.transforLocalDateTimeToDate(latestDate)); - calendar.add(Calendar.DAY_OF_MONTH, 1); // 加1天 - } else { - // 如果为空,设置同步时间为前一个星期 - calendar.add(Calendar.DAY_OF_MONTH, -7); // 减7天 - } - - // 设置时间范围为8:00:00开始 - calendar.set(Calendar.HOUR_OF_DAY, 8); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - Date start = calendar.getTime(); - - so.setStart(start); - so.setEnd(new Date()); - osmoticQuerySo.setDateTimeRangeSo(so); - List osmoticValueVo2s = jcskSlBMapper.syncqueryValue(osmoticQuerySo); - if(!osmoticValueVo2s.isEmpty()){ - syncData.add(osmoticValueVo2s); - } - } - } else { - //全量同步 - osmoticQuerySo.setStationCodes(cds); - List osmoticValueVo2s = jcskSlBMapper.syncqueryValue(osmoticQuerySo); - if(!osmoticValueVo2s.isEmpty()){ - syncData.add(osmoticValueVo2s); - } - } - - // 使用 DateTimeFormatter 替代 SimpleDateFormat - DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH:mm"); - - if(syncData.size() > 0){ - for (List osmoticValueVo2s : syncData) { - //筛选出每天每个测点8-9点的数据 - List closestTo8AMList = osmoticValueVo2s.stream() - .filter(vo -> { - // 使用 DateTimeFormatter 格式化 LocalDateTime - String timeStr = vo.getMstm().format(formatter3); - return timeStr.compareTo("08:00") >= 0 && timeStr.compareTo("09:00") <=0; - }) - .collect(Collectors.groupingBy(vo -> { - // 分组键:日期(yyyy-MM-dd) + 测站编码 + 测点编码 - String date = vo.getMstm().format(formatter2); - return date + "_" + vo.getMpcd(); - })) - .values().stream() - .map(group -> group.stream() - .min((vo1, vo2) -> { - String time1 = vo1.getMstm().format(formatter3); - String time2 = vo2.getMstm().format(formatter3); - - // 计算与08:00的时间差(分钟数) - int diff1 = Math.abs( - Integer.parseInt(time1.substring(0, 2)) * 60 + - Integer.parseInt(time1.substring(3, 5)) - - 8 * 60 - ); - - int diff2 = Math.abs( - Integer.parseInt(time2.substring(0, 2)) * 60 + - Integer.parseInt(time2.substring(3, 5)) - - 8 * 60 - ); - //获取最接近于八点的数据 - return Integer.compare(diff1, diff2); - }) - .orElse(null) - ) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - - // 处理筛选后的数据 - for (JcskSlR data : closestTo8AMList) { - JcskSlREightAm entity = new JcskSlREightAm(); - BeanUtils.copyProperties(data, entity); - saveDatas.add(entity); - } - - if(saveDatas.size() > 0){ - jcskSlREightAmMapper.insert(saveDatas); - } - saveDatas.clear(); - } - } - } - - - - - /** - * 同步渗压每日八点的数据 - */ -//@Scheduled(cron = "*/10 * * * * ?") -// @Scheduled(cron = "0 17 8 * * ?") -// @Async - public void syncSyREightAmData() { - OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); - DateTimeRangeSo so = new DateTimeRangeSo(); - List list = jcskSyBService.lambdaQuery().list(); - List cds = list.stream().map(JcskSyB::getDvcd).collect(Collectors.toList()); - //获取整编表数量 - Long count = jcskSyREightAmMapper.selectCount(null); - List saveDatas = new ArrayList<>(); - List> syncData = new ArrayList<>(); - - if (count > 0) { - //增量同步 - //取最新的一个数据的时间 - for (JcskSyB jcskSyB : list) { - String stcd = jcskSyB.getStcd(); - String mpcd = jcskSyB.getMpcd(); - String dvcd = jcskSyB.getDvcd(); - osmoticQuerySo.setStationCodes(Arrays.asList(dvcd)); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(JcskSyREightAm::getStcd, stcd) - .eq(JcskSyREightAm::getMpcd, mpcd) - .orderByDesc(JcskSyREightAm::getMstm).last("limit 1"); - JcskSyREightAm jcskGnssREightAm = jcskSyREightAmMapper.selectOne(wrapper); - - LocalDateTime startTime; - - if (jcskGnssREightAm != null) { - // 如果存在最新数据,从最新时间的第二天开始同步 - startTime = jcskGnssREightAm.getMstm().plusDays(1); // 加1天 - } else { - // 如果为空,设置同步时间为前一个星期 - startTime = LocalDateTime.now().minusDays(7); // 减7天 - } - // 设置时间范围为当天的8:00:00开始 - startTime = startTime.withHour(8).withMinute(0).withSecond(0).withNano(0); - - so.setStart(DateTransforUtil.transforLocalDateTimeToDate(startTime)); - so.setEnd(DateTransforUtil.transforLocalDateTimeToDate(LocalDateTime.now())); - osmoticQuerySo.setDateTimeRangeSo(so); - List osmoticValueVo2s = jcskSyRService.getBaseMapper().syncqueryValue(osmoticQuerySo); - if(!osmoticValueVo2s.isEmpty()){ - syncData.add(osmoticValueVo2s); - } - } - } else { - //全量同步 - osmoticQuerySo.setStationCodes(cds); - List osmoticValueVo2s = jcskSyRService.getBaseMapper().syncqueryValue(osmoticQuerySo); - if(!osmoticValueVo2s.isEmpty()){ - syncData.add(osmoticValueVo2s); - } - } - - // 使用DateTimeFormatter替代SimpleDateFormat - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); - - if(!syncData.isEmpty()){ - for (List osmoticValueVo2s : syncData) { - //筛选出每天每个测点8-9点的数据 - List closestTo8AMList = osmoticValueVo2s.stream() - .filter(vo -> { - // 使用LocalDateTime直接获取小时和分钟 - int hour = vo.getMstm().getHour(); - int minute = vo.getMstm().getMinute(); - // 过滤8:00到9:00之间的数据 - return (hour == 8 && minute >= 0) || (hour == 9 && minute == 0); - }) - .collect(Collectors.groupingBy(vo -> { - // 分组键:日期(yyyy-MM-dd) + 测站编码 + 测点编码 - String date = vo.getMstm().format(dateFormatter); - return date + "_" + vo.getStcd() + "_" + vo.getMpcd(); - })) - .values().stream() - .map(group -> group.stream() - .min((vo1, vo2) -> { - // 计算与08:00的时间差(分钟数) - int diff1 = Math.abs( - vo1.getMstm().getHour() * 60 + - vo1.getMstm().getMinute() - 8 * 60 - ); - - int diff2 = Math.abs( - vo2.getMstm().getHour() * 60 + - vo2.getMstm().getMinute() - 8 * 60 - ); - //获取最接近于八点的数据 - return Integer.compare(diff1, diff2); - }) - .orElse(null) - ) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - - // 处理筛选后的数据 - for (JcskSyR data : closestTo8AMList) { - JcskSyREightAm entity = new JcskSyREightAm(); - BeanUtils.copyProperties(data, entity); - entity.setMstm(data.getMstm()); // 直接设置LocalDateTime - saveDatas.add(entity); - } - - if(!saveDatas.isEmpty()){ - // 批量插入,注意检查MyBatis-Plus是否支持批量插入 - for (JcskSyREightAm entity : saveDatas) { - jcskSyREightAmMapper.insert(entity); - } - // 或者使用批量插入方法(如果配置了) - // jcskSyREightAmMapper.insertBatch(saveDatas); - } - saveDatas.clear(); - } - } - } - - - - /** - * 同步位移监测每天最接近八点的数据 - */ - - //@Scheduled(cron = "*/30 * * * * ?") -// @Async -// @Scheduled(cron = "0 17 8 * * ?") - public void syncGnssREightAmData() { - OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); - DateTimeRangeSo so = new DateTimeRangeSo(); - List list = service.lambdaQuery().list(); - List cds = list.stream().map(JcskGnssB::getCd).collect(Collectors.toList());//获取所有的测点编码 - //获取整编表数量 - Long count = jcskGnssREightAmMapper.selectCount(null); - List saveDatas = new ArrayList<>(); - List> syncData = new ArrayList<>(); - if (count > 0) { - //增量同步 - //取最新的一个数据的时间 - //获取每个cd的最新时间按cd进行同步 - for (String cd : cds) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(JcskGnssREightAm::getCd, cd) - .orderByDesc(JcskGnssREightAm::getTm).last("limit 1"); - osmoticQuerySo.setStationCodes(Arrays.asList(cd)); - JcskGnssREightAm jcskGnssREightAm = jcskGnssREightAmMapper.selectOne(wrapper); - - Calendar calendar = Calendar.getInstance(); - - if(jcskGnssREightAm != null){ - // 如果有历史数据,从最新时间的第二天开始同步 - String latestTm = jcskGnssREightAm.getTm(); - Date latestDate = DateUtil.convertStringToDate(latestTm); - calendar.setTime(latestDate); - calendar.add(Calendar.DAY_OF_MONTH, 1); // 加1天 - } else { - // 如果没有同步过数据,同步一个星期以前的数据 - calendar.add(Calendar.DAY_OF_MONTH, -7); // 减7天 - } - - // 设置时间范围为8:00:00开始 - calendar.set(Calendar.HOUR_OF_DAY, 8); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - Date start = calendar.getTime(); - so.setStart(start); - so.setEnd(new Date()); - osmoticQuerySo.setDateTimeRangeSo(so); - List shiftValueVo2s = jcskGnssRService.getBaseMapper().queryValue(osmoticQuerySo); - if(!shiftValueVo2s.isEmpty()){ - syncData.add(shiftValueVo2s); - } - } - - } else { - //全量同步 - osmoticQuerySo.setStationCodes(cds); - List shiftValueVo2s = jcskGnssRService.getBaseMapper().queryValue(osmoticQuerySo); - if(!shiftValueVo2s.isEmpty()){ - syncData.add(shiftValueVo2s); - } - } - - if(syncData.size()>0){ - //筛选出每天每个测点8-9点的数据 - for (List shiftValueVo2s : syncData) { - List closestTo8AMList = shiftValueVo2s.stream() - .filter(vo -> { - // 假设OsmoticShiftValueVo2中有getTm方法返回时间字符串 - String timePart = vo.getTm().substring(11, 16); // 提取HH:MM部分 - return timePart.compareTo("08:00") >= 0 && timePart.compareTo("09:00") <=0; - }) - .collect(Collectors.groupingBy(vo -> { - // 分组键:日期(yyyy-MM-dd) + 测点编码 - // 假设OsmoticShiftValueVo2中有getCd方法返回测点编码 - String date = vo.getTm().substring(0, 10); // 提取日期部分 - return date + "_" + vo.getCd(); - })) - .values().stream() - .map(group -> group.stream() - .min((vo1, vo2) -> { - String time1 = vo1.getTm().substring(11, 16); - String time2 = vo2.getTm().substring(11, 16); - - // 计算与08:00的时间差(分钟数) - int diff1 = Math.abs( - Integer.parseInt(time1.substring(0, 2)) * 60 + - Integer.parseInt(time1.substring(3, 5)) - - 8 * 60 - ); - - int diff2 = Math.abs( - Integer.parseInt(time2.substring(0, 2)) * 60 + - Integer.parseInt(time2.substring(3, 5)) - - 8 * 60 - ); - //获取最接近于八点的数据 - return Integer.compare(diff1, diff2); - }) - .orElse(null) - ) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - - // 处理筛选后的数据 - for (OsmoticShiftValueVo2 data : closestTo8AMList) { - JcskGnssREightAm entity = new JcskGnssREightAm(); - BeanUtils.copyProperties(data, entity); - saveDatas.add(entity); - } - if(saveDatas.size()>0){ - jcskGnssREightAmMapper.insert(saveDatas); - } - saveDatas.clear(); - } - } - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/PaDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/PaDataTask.java deleted file mode 100644 index e20319d..0000000 --- a/src/main/java/com/gunshi/project/hsz/timetask/PaDataTask.java +++ /dev/null @@ -1,233 +0,0 @@ -package com.gunshi.project.hsz.timetask; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.gunshi.algorithm.RunoffService; -import com.gunshi.project.hsz.model.AttResBase; -import com.gunshi.project.hsz.model.ForecastK; -import com.gunshi.project.hsz.model.ForecastPa; -import com.gunshi.project.hsz.model.ForecastUseparam; -import com.gunshi.project.hsz.common.model.StPptnR; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.service.AttResBaseService; -import com.gunshi.project.hsz.service.ForecastKService; -import com.gunshi.project.hsz.service.ForecastPaService; -import com.gunshi.project.hsz.service.ForecastResultsService; -import com.gunshi.project.hsz.service.ForecastUseparamService; -import com.gunshi.project.hsz.service.StPptnRService; -import com.gunshi.project.hsz.service.StStbprpBService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Profile; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author cxw - * @description Pa降雨值定时任务计算 - * @classname PaDataTask.java - * @create 2024-08-02, 星期五, 11:16:46 - */ -@EnableScheduling//开启定时任务 -@Component -@Slf4j -@Profile({"prod","dev","local"}) -public class PaDataTask { - - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - private static SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd"); - - private static SimpleDateFormat eightSdf = new SimpleDateFormat("yyyy-MM-dd 08:00:00"); - - @Autowired - private ForecastUseparamService forecastUseparamService; - - @Autowired - private ForecastPaService forecastPaService; - - @Autowired - private ForecastKService forecastKService; - - @Autowired - private StPptnRService stPptnRService; - - @Autowired - private StStbprpBService stStbprpBService; - - @Autowired - private ForecastResultsService forecastResultsService; - - @Autowired - private AttResBaseService attResBaseService; - - /** - * @description: 每天8点30计算的Pa - * @param - * @return: void - * @auther: cxw - * @date: 2024-08-02, 周五, 11:21:00 - */ - @Async - @Scheduled(cron ="0 30 8 * * ?") -// @PostConstruct - public void PaDataCalc() throws ParseException { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - Date nowTime = calendar.getTime(); - // 获取配置参数 - List paramList = forecastUseparamService.list(new QueryWrapper().isNotNull("param_code").isNotNull("param_value")); - List kList = forecastKService.list(); - if (CollectionUtils.isEmpty(paramList) || CollectionUtils.isEmpty(kList)) { - return; - } - // 檀树岗使用多个站点的均值作为水库的降雨 - AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>()); - if (ObjectUtils.isNotEmpty(attResBase)) { - String resCode = attResBase.getResCode(); - String skStcd = attResBase.getStcd(); - // 先删除水库当天的pa,假如已经存在的话(有另一任务,提前算了第二天(此处为当天)的) - forecastPaService.remove(new QueryWrapper().eq("tm", sdfDay.format(nowTime)).eq("stcd", attResBase.getResCode())); - // 获取最新pa - ForecastPa forecastPaLast = forecastPaService.getOne(new QueryWrapper().eq("stcd", skStcd).orderBy(true, false, "tm").last("limit 1")); -// 补数据时解开 - if(ObjectUtils.isEmpty(forecastPaLast)){ - forecastPaLast = new ForecastPa(); - forecastPaLast.setStcd(skStcd); - forecastPaLast.setTm("2024-01-01"); - forecastPaLast.setK(new BigDecimal(0.97)); - forecastPaLast.setPa0(BigDecimal.ZERO); - forecastPaLast.setIm(new BigDecimal(120)); - forecastPaLast.setPt0(BigDecimal.ZERO); - forecastPaLast.setPa(BigDecimal.ZERO); - forecastPaLast.setChtm(new Date()); - - } - if (CollectionUtils.isNotEmpty(paramList) && CollectionUtils.isNotEmpty(kList) && ObjectUtils.isNotEmpty(forecastPaLast) && !forecastPaLast.getTm().equals(sdfDay.format(nowTime))) { - Calendar calendar2 = Calendar.getInstance(); - calendar2.setTime(sdfDay.parse(forecastPaLast.getTm())); - calendar2.add(Calendar.DAY_OF_MONTH, -3); - String searchTm = sdfDay.format(calendar2.getTime()); - String lastTm = forecastPaLast.getTm(); - // 获取空缺时间的所有降雨,当天8点到第二天8点间的drp和 - List> mapList = stPptnRService.getPptnRDataListByTask(resCode, skStcd, searchTm); - Map pptnrMap; - if (CollectionUtils.isNotEmpty(mapList)) { - pptnrMap = mapList.stream().collect(Collectors.toMap(map -> (String) map.get("tm"), map -> map.get("drp"))); - } else { - return; - } - Map kMap = kList.stream().collect(Collectors.toMap(ForecastK::getMonth, ForecastK::getKValue)); - Map paramMap = paramList.stream().collect(Collectors.toMap(ForecastUseparam::getParamCode, ForecastUseparam::getParamValue)); - double Im = Double.parseDouble(paramMap.get("Im"));// 土壤含水量最大值(最大初损值)Im - // 第一次的pa0是最新一条的pa - List list = new ArrayList<>(); - ForecastPa forecastPa = null; - while (!lastTm.equals(sdfDay.format(nowTime))) { - double lastPa0 = forecastPaLast.getPa().doubleValue(); - double lastPt0 = Double.valueOf(ObjectUtils.isEmpty(pptnrMap.get(lastTm)) ? "0.0" : pptnrMap.get(lastTm).toString()); - forecastPa = new ForecastPa(); - // 最新加1天 - calendar.setTime(sdfDay.parse(lastTm)); - calendar.add(Calendar.DAY_OF_MONTH, 1); - lastTm = sdfDay.format(calendar.getTime()); - double k = kMap.get(Integer.valueOf(lastTm.substring(5, 7))).doubleValue(); - double pa = RunoffService.PaCaculate(k, lastPa0, lastPt0, Im); - forecastPa.setStcd(skStcd); - forecastPa.setTm(lastTm); - forecastPa.setK(new BigDecimal(k).setScale(2, BigDecimal.ROUND_HALF_UP)); - forecastPa.setPa0(new BigDecimal(lastPa0)); - forecastPa.setIm(new BigDecimal(Im)); - forecastPa.setPt0(new BigDecimal(lastPt0).setScale(2, BigDecimal.ROUND_HALF_UP)); - forecastPa.setPa(new BigDecimal(pa)); - list.add(forecastPa); - forecastPaLast = forecastPa; - } - if (CollectionUtils.isNotEmpty(list)) { - forecastPaService.saveBatch(list); - } - } - } - } - - /** - * @description: 每天19点到24点每5分钟计算一次第二天的Pa - * @param - * @return: void - * @auther: cxw - * @date: 2024-08-16, 周五, 15:42:13 - */ - @Async - @Scheduled(cron ="0 0/5 20-23 * * ?") - public void PaNextDataCalc() throws ParseException { - Date nowTime = new Date(); - // 檀树岗使用多个站点的均值作为水库的降雨 - AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>()); - if (ObjectUtils.isNotEmpty(attResBase)) { - // 查询所有需要统计pa值的站点 - List stStbprpBList = stStbprpBService.list(new QueryWrapper().eq("res_code", attResBase.getResCode())); - if(CollectionUtils.isEmpty(stStbprpBList)){ - return; - } - // 获取配置参数 - List paramList = forecastUseparamService.list(new QueryWrapper().isNotNull("param_code").isNotNull("param_value")); - List kList = forecastKService.list(); - if (CollectionUtils.isEmpty(paramList) || CollectionUtils.isEmpty(kList)) { - return; - } - String skStcd = attResBase.getResCode(); - // 查询第二天的是否已经生成了 - Calendar calendarNext = Calendar.getInstance(); - calendarNext.setTime(nowTime); - calendarNext.add(Calendar.DAY_OF_MONTH, 1); - String nextTimeStr = sdfDay.format(calendarNext.getTime()); - ForecastPa hasPa = forecastPaService.getOne(new QueryWrapper().eq("stcd", skStcd).eq("tm", nextTimeStr)); - if (ObjectUtils.isNotEmpty(hasPa)) { - return; - } - // 获取最新pa(当天) - ForecastPa forecastPaLast = forecastPaService.getOne(new QueryWrapper().eq("stcd", skStcd).eq("tm", sdfDay.format(nowTime)).last("limit 1")); - if (CollectionUtils.isNotEmpty(paramList) && CollectionUtils.isNotEmpty(kList) && ObjectUtils.isNotEmpty(forecastPaLast)) { - List listAll = new ArrayList<>(); - for (StStbprpB stb : stStbprpBList) { - String stcd = stb.getStcd(); - // 获取当天大于08点到执行时间的真实降雨 - List qwExistedStcd = stPptnRService.list(new QueryWrapper().eq("stcd", stcd).gt("tm", sdf.parse(eightSdf.format(nowTime))).le("tm", nowTime).orderBy(true, true, "tm")); - // 获取当天的预测降雨 - List pptnRFutureListStcd = forecastResultsService.getForecastDrpData(nowTime, stcd); - listAll.addAll(qwExistedStcd); - listAll.addAll(pptnRFutureListStcd); - } - Double totalDrp = listAll.stream().mapToDouble(x -> Double.valueOf(x.getDrp())).sum(); - ForecastPa forecastPa = new ForecastPa(); - Map kMap = kList.stream().collect(Collectors.toMap(ForecastK::getMonth, ForecastK::getKValue)); - Map paramMap = paramList.stream().collect(Collectors.toMap(ForecastUseparam::getParamCode, ForecastUseparam::getParamValue)); - double Im = Double.parseDouble(paramMap.get("Im"));// 土壤含水量最大值(最大初损值)Im - double k = kMap.get(Integer.valueOf(nextTimeStr.substring(5, 7))).doubleValue(); - double pa = RunoffService.PaCaculate(k, Double.parseDouble(forecastPaLast.getPa().toString()), totalDrp, Im); - forecastPa.setStcd(skStcd); - forecastPa.setTm(nextTimeStr); - forecastPa.setK(new BigDecimal(k).setScale(2, BigDecimal.ROUND_HALF_UP)); - forecastPa.setPa0(forecastPaLast.getPa()); - forecastPa.setIm(new BigDecimal(Im)); - forecastPa.setPt0(new BigDecimal(totalDrp).setScale(2, BigDecimal.ROUND_HALF_UP)); - forecastPa.setPa(new BigDecimal(pa)); - forecastPaService.save(forecastPa); - } - } - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/PptnRDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/PptnRDataTask.java deleted file mode 100644 index 6ae6892..0000000 --- a/src/main/java/com/gunshi/project/hsz/timetask/PptnRDataTask.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gunshi.project.hsz.timetask; - - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.gunshi.project.hsz.common.model.StPptnR; -import com.gunshi.project.hsz.model.StPptnRD; -import com.gunshi.project.hsz.model.StPptnRH; -import com.gunshi.project.hsz.service.StPptnRDService; -import com.gunshi.project.hsz.service.StPptnRHService; -import com.gunshi.project.hsz.service.StPptnRRealService; -import com.gunshi.project.hsz.service.StPptnRService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Profile; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * 降雨量数据 day表 和 hour表同不 - */ -@EnableScheduling//开启定时任务 -@Component -@Slf4j -@Profile({"prod","dev","local"}) -public class PptnRDataTask { - - // 实时雨情 - @Autowired - private StPptnRRealService stPptnRRealService; - - // 历史雨情 - @Autowired - private StPptnRService stPptnRService; - - // 小时雨情 - @Autowired - private StPptnRHService stPptnRHService; - - // 按天雨情 - @Autowired - private StPptnRDService stPptnRDService; - - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - private static SimpleDateFormat sdfD = new SimpleDateFormat("yyyy-MM-dd"); - - - private static SimpleDateFormat sdfEight = new SimpleDateFormat("yyyy-MM-dd 08:00:00"); - - @Scheduled(fixedRate = 2, timeUnit = TimeUnit.MINUTES) - @Async - public void syncPptnRData(){ - try { - //获取所有站点最新的数据 - List stcdLastPptnData = stPptnRService.getStcdLastPptnData(); - if (CollectionUtils.isNotEmpty(stcdLastPptnData)){ - for (StPptnR stPptnR : stcdLastPptnData){ - String stcd = stPptnR.getStcd(); - // 整编降雨量天表数据 - //获取该站点在降雨量天表中最大的时间的数据 - StPptnRD maxDataD = stPptnRDService.getMaxData(stPptnR.getStcd()); - Date tmMax = maxDataD.getTm(); - maxDataD.setTm(sdf.parse(sdfEight.format(tmMax))); - //去历史表中查询大于该时间的数据 - List listD = stPptnRDService.reorganizePptnRDData(stPptnR.getStcd(), maxDataD); - if (CollectionUtils.isNotEmpty(listD)) { - if (listD.size() > 0) { - listD = listD.stream() - .map(user -> { - user.setYear(Integer.valueOf(sdfD.format(user.getTm()).substring(0, 4))); // 修改属性值 - return user; - }).collect(Collectors.toList()); - QueryWrapper deleteWrapper = new QueryWrapper<>(); - deleteWrapper.eq("stcd", stcd).ge("tm", tmMax); - stPptnRDService.remove(deleteWrapper); - stPptnRDService.saveBatch(listD); - } - } - - // 整编降雨量小时表数据 - StPptnRH maxDataH = stPptnRHService.getMaxData(stPptnR.getStcd()); - List listH = stPptnRHService.reorganizePptnRHData(stPptnR.getStcd(), maxDataH); - if (CollectionUtils.isNotEmpty(listH)) { - StPptnRH LastData = listH.get(0); - if (LastData.getTm().equals(maxDataH.getTm())) { - listH.remove(0); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("stcd", LastData.getStcd()).eq("tm", LastData.getTm()); - LastData.setDrp(LastData.getDrp()); - LastData.setChtm(maxDataH.getChtm()); - stPptnRHService.saveOrUpdate(LastData, updateWrapper); - } - if (listH.size() > 0) { - stPptnRHService.saveBatch(listH); - } - } - } - } - } catch (ParseException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/ScheduledPool.java b/src/main/java/com/gunshi/project/hsz/timetask/ScheduledPool.java deleted file mode 100644 index 773902f..0000000 --- a/src/main/java/com/gunshi/project/hsz/timetask/ScheduledPool.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.timetask; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.TaskScheduler; -import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; - -/** - * @author cxw - * @description: 定时任务池 - * @classname ScheduledPool.java - * @create 2024-07-22, 星期一, 10:43:54 - */ -@Configuration -public class ScheduledPool { - @Bean - public TaskScheduler taskScheduler() { - ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); - // 设置定时任务线程数量 - taskScheduler.setPoolSize(20); - return taskScheduler; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/StWaterDataTask.java b/src/main/java/com/gunshi/project/hsz/timetask/StWaterDataTask.java deleted file mode 100644 index c2560a8..0000000 --- a/src/main/java/com/gunshi/project/hsz/timetask/StWaterDataTask.java +++ /dev/null @@ -1,310 +0,0 @@ -package com.gunshi.project.hsz.timetask; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.entity.vo.StFlowRVo; -import com.gunshi.project.hsz.model.StWaterR; -import com.gunshi.project.hsz.model.StWaterRReal; -import com.gunshi.project.hsz.model.StWaterRReorganize; -import com.gunshi.project.hsz.service.StFlowRService; -import com.gunshi.project.hsz.service.StWaterRRealService; -import com.gunshi.project.hsz.service.StWaterRReorganizeService; -import com.gunshi.project.hsz.service.StWaterRService; -import com.gunshi.project.hsz.util.DateTransforUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Profile; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.time.ZoneId; -import java.util.*; -import java.util.stream.Collectors; - - -@EnableScheduling//开启定时任务 -@Component -@Slf4j -@Profile({"prod","dev","local"}) -public class StWaterDataTask { - - - @Autowired - private StFlowRService stFlowRService; - - @Autowired - private StWaterRService stWaterRService; - - @Autowired - private StWaterRReorganizeService stWaterRReorganizeService; - - @Autowired - private StWaterRRealService stWaterRRealService; - - @Scheduled(fixedDelay = 75 * 60 * 1000) // 75分钟,单位毫秒 - @Async - public void syncFlowToWater(){ - List stcds = stFlowRService.getStcdList(); - //去供水量表查数据 - for (String stcd : stcds) { - List syncData = new ArrayList<>(); - StWaterR firstData = stWaterRService.selectNewDataByStcd(stcd); - if(firstData == null) { - //取全部数据 - List queryData = stFlowRService.getDataByStcdAndTm(stcd, null); - for (int i = 0; i < queryData.size(); i++) { - StWaterR entity = new StWaterR(); - entity.setStcd(stcd); - entity.setQ(queryData.get(i).getQ()); - entity.setTm(DateTransforUtil.transforLocalDateTimeToDate(queryData.get(i).getTm())); - BigDecimal v = BigDecimal.ZERO;//水量 - if (i == 0) { - v = BigDecimal.ZERO; - } else { - // 其他数据:与前一条数据的时间差 - long seconds = java.time.Duration.between( - queryData.get(i - 1).getTm(), - queryData.get(i).getTm() - ).getSeconds(); - v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); - } - entity.setV(v); - syncData.add(entity); - } - // 批量保存 - if (!syncData.isEmpty()) { - stWaterRService.saveBatch(syncData); - - //实时表更新 - StWaterR stWaterR = syncData.get(syncData.size() - 1); - StWaterRReal stWaterRReal = new StWaterRReal(); - BeanUtils.copyProperties(stWaterR, stWaterRReal); - stWaterRReal.setV(stWaterR.getV().toString()); - boolean flag = stWaterRRealService.getBaseMapper().insertOrUpdate(stWaterRReal); - } - }else{ - List queryData = stFlowRService.getDataByStcdAndTm(stcd, firstData.getTm()); - for (int i = 0; i < queryData.size(); i++) { - StWaterR entity = new StWaterR(); - entity.setStcd(stcd); - entity.setQ(queryData.get(i).getQ()); - entity.setTm(DateTransforUtil.transforLocalDateTimeToDate(queryData.get(i).getTm())); - BigDecimal v = BigDecimal.ZERO;//水量 - if (i == 0) { - // 第一条数据:与firstData的时间差 - long seconds = java.time.Duration.between( - firstData.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(), - queryData.get(i).getTm() - ).getSeconds(); - v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); - }else { - // 其他数据:与前一条数据的时间差 - long seconds = java.time.Duration.between( - queryData.get(i-1).getTm(), - queryData.get(i).getTm() - ).getSeconds(); - v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); - } - entity.setV(v); - syncData.add(entity); - } - // 批量保存 - if (!syncData.isEmpty()) { - stWaterRService.saveBatch(syncData); - //实时表更新 - StWaterR stWaterR = syncData.get(syncData.size() - 1); - StWaterRReal stWaterRReal = new StWaterRReal(); - BeanUtils.copyProperties(stWaterR, stWaterRReal); - stWaterRReal.setV(stWaterR.getV().toString()); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StWaterRReal::getStcd, stWaterR.getStcd()); - boolean remove = stWaterRRealService.remove(queryWrapper); - stWaterRRealService.save(stWaterRReal); - } - } - } - } - - @Scheduled(fixedDelay = 76 * 60 * 1000) // 75分钟,单位毫秒 - @Async - public void syncWaterToReorganize(){ - List list = stWaterRReorganizeService.lambdaQuery() - .orderByDesc(StWaterRReorganize::getTm).last("limit 1").list(); - List syncData = new ArrayList<>(); - - if(!list.isEmpty()){ - StWaterRReorganize stWaterRReorganize = list.get(0);//查询最新的一条整编数据 - String tm = stWaterRReorganize.getTm();//varchar 13 例如 2025-01-01 01 - - // 将字符串时间转换为Date用于查询 - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH"); - Date startTime; - try { - Date lastTime = formatter.parse(tm); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(lastTime); - calendar.add(Calendar.HOUR, 1); // 从下个小时开始 - startTime = calendar.getTime(); - } catch (Exception e) { - log.error("时间转换错误", e); - return; - } - - // 查询st_water_r表中大于该时间的数据 - List waterData = stWaterRService.lambdaQuery() - .ge(StWaterR::getTm, startTime) - .orderByAsc(StWaterR::getTm) - .list(); - - // 按小时分组,每个小时每个站点取最新记录 - Map> hourlyData = waterData.stream() - .collect(Collectors.groupingBy( - data -> { - // 按小时分组,格式:yyyy-MM-dd HH - SimpleDateFormat hourFormatter = new SimpleDateFormat("yyyy-MM-dd HH"); - return hourFormatter.format(data.getTm()); - }, - Collectors.groupingBy( - StWaterR::getStcd, - Collectors.collectingAndThen( - Collectors.maxBy(Comparator.comparing(StWaterR::getTm)), - Optional::get - ) - ) - )); - - // 处理每个小时的数据 - for (Map.Entry> hourEntry : hourlyData.entrySet()) { - String hourKey = hourEntry.getKey(); // 格式:2025-10-16 16 - Map stationData = hourEntry.getValue(); - - StWaterRReorganize reorganize = new StWaterRReorganize(); - reorganize.setTm(hourKey); - - // 获取三个站点的数据(根据实际情况调整站点代码) - StWaterR ecologyData = stationData.get("1114"); // 生态供水 - StWaterR mci1Data = stationData.get("1112"); // 干渠灌溉1 - StWaterR mci2Data = stationData.get("1113"); // 干渠灌溉2 - - // 设置生态供水数据 - if (ecologyData != null) { - reorganize.setEcologyQ(ecologyData.getQ()); - reorganize.setEcologyV(ecologyData.getV()); - } else { - reorganize.setEcologyQ(BigDecimal.ZERO); - reorganize.setEcologyV(BigDecimal.ZERO); - } - - // 设置干渠灌溉1数据 - if (mci1Data != null) { - reorganize.setMci1Q(mci1Data.getQ()); - reorganize.setMci1V(mci1Data.getV()); - } else { - reorganize.setMci1Q(BigDecimal.ZERO); - reorganize.setMci1V(BigDecimal.ZERO); - } - - // 设置干渠灌溉2数据 - if (mci2Data != null) { - reorganize.setMci2Q(mci2Data.getQ()); - reorganize.setMci2V(mci2Data.getV()); - } else { - reorganize.setMci2Q(BigDecimal.ZERO); - reorganize.setMci2V(BigDecimal.ZERO); - } - - // 计算水量小计(三个站点的总和) - BigDecimal sumV = reorganize.getEcologyV() == null? BigDecimal.ZERO: reorganize.getEcologyV() - .add(reorganize.getMci1V() == null? BigDecimal.ZERO: reorganize.getMci1V()) - .add(reorganize.getMci2V() == null? BigDecimal.ZERO: reorganize.getMci2V()); - reorganize.setSumV(sumV); - - syncData.add(reorganize); - } - - } else { - //全量同步 - List allWaterData = stWaterRService.lambdaQuery() - .orderByAsc(StWaterR::getTm) - .list(); - - // 按小时分组,每个小时每个站点取最新记录 - Map> hourlyData = allWaterData.stream() - .collect(Collectors.groupingBy( - data -> { - SimpleDateFormat hourFormatter = new SimpleDateFormat("yyyy-MM-dd HH"); - return hourFormatter.format(data.getTm()); - }, - Collectors.groupingBy( - StWaterR::getStcd, - Collectors.collectingAndThen( - Collectors.maxBy(Comparator.comparing(StWaterR::getTm)), - Optional::get - ) - ) - )); - - // 处理每个小时的数据 - for (Map.Entry> hourEntry : hourlyData.entrySet()) { - String hourKey = hourEntry.getKey(); - Map stationData = hourEntry.getValue(); - - StWaterRReorganize reorganize = new StWaterRReorganize(); - reorganize.setTm(hourKey); - - // 获取三个站点的数据 - StWaterR ecologyData = stationData.get("1114"); // 生态供水 - StWaterR mci1Data = stationData.get("1112"); // 干渠灌溉1 - StWaterR mci2Data = stationData.get("1113"); // 干渠灌溉2 - - // 设置生态供水数据 - if (ecologyData != null) { - reorganize.setEcologyQ(ecologyData.getQ()); - reorganize.setEcologyV(ecologyData.getV()); - } else { - reorganize.setEcologyQ(BigDecimal.ZERO); - reorganize.setEcologyV(BigDecimal.ZERO); - } - - // 设置干渠灌溉1数据 - if (mci1Data != null) { - reorganize.setMci1Q(mci1Data.getQ()); - reorganize.setMci1V(mci1Data.getV()); - } else { - reorganize.setMci1Q(BigDecimal.ZERO); - reorganize.setMci1V(BigDecimal.ZERO); - } - - // 设置干渠灌溉2数据 - if (mci2Data != null) { - reorganize.setMci2Q(mci2Data.getQ()); - reorganize.setMci2V(mci2Data.getV()); - } else { - reorganize.setMci2Q(BigDecimal.ZERO); - reorganize.setMci2V(BigDecimal.ZERO); - } - - // 计算水量小计(三个站点的总和) - BigDecimal sumV = reorganize.getEcologyV() == null? BigDecimal.ZERO: reorganize.getEcologyV() - .add(reorganize.getMci1V() == null? BigDecimal.ZERO: reorganize.getMci1V()) - .add(reorganize.getMci2V() == null? BigDecimal.ZERO: reorganize.getMci2V()); - reorganize.setSumV(sumV); - - syncData.add(reorganize); - } - } - - // 批量保存数据 - if (!syncData.isEmpty()) { - stWaterRReorganizeService.saveBatch(syncData); - } - } - - - - -} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/WarningRuleTask.java b/src/main/java/com/gunshi/project/hsz/timetask/WarningRuleTask.java deleted file mode 100644 index 4670e7f..0000000 --- a/src/main/java/com/gunshi/project/hsz/timetask/WarningRuleTask.java +++ /dev/null @@ -1,426 +0,0 @@ -package com.gunshi.project.hsz.timetask; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.gunshi.project.hsz.common.model.StRiverRReal; -import com.gunshi.project.hsz.common.model.StRsvrRReal; -import com.gunshi.project.hsz.common.model.StStbprpB; -import com.gunshi.project.hsz.common.util.LocalDateTimeConverter; -import com.gunshi.project.hsz.entity.so.WeatherSo; -import com.gunshi.project.hsz.entity.vo.*; -import com.gunshi.project.hsz.model.*; -import com.gunshi.project.hsz.service.*; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Profile; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -@EnableScheduling//开启定时任务 -@Component -@Slf4j -@Profile({"prod","dev","local"}) -public class WarningRuleTask { - - - @Autowired - private WarningRuleService warningRuleService; - - - @Autowired - private WarningRuleInfoService warningRuleInfoService; - - //河道水位 - @Autowired - private RiverWaterService riverWaterService; - - @Autowired - private StRiverRRealService stRiverRRealService; - - - //水库水位 - @Autowired - private ReservoirWaterService reservoirWaterService; - - @Autowired - private StRsvrRRealService stRsvrRRealService; - - @Autowired - private ForecastResultsService forecastResultsService; - - @Resource - private ForecastService forecastService; - - - @Autowired - private RainBasinDivisionService rainBasinDivisionService; - -// @Scheduled(fixedDelay = 60 * 60 * 1000) // 75分钟,单位毫秒 -// @Async - public void warningRuleExecute(){ - //获取配置的预警规则 - List warningRules = warningRuleService.listData(); - //过滤出启动了的预警规则 - warningRules = warningRules.stream().filter(o ->{ - return o.getStatus() != null && o.getStatus() == 1; - }).collect(Collectors.toList()); - - for (WarningRule warningRule : warningRules) { - //获取预警类型 - String warningType = warningRule.getWarningType(); - //获取预警的规则细节 - List conditions = warningRule.getConditions(); - - if (conditions == null || conditions.isEmpty()) { - continue; - } - - // 为每个条件计算实际值并设置是否满足 - for (WarningCondition condition : conditions) { - BigDecimal actualValue = calculateActualValue(condition, warningType); - condition.setIsEnjoy(compareValue(actualValue, condition)); - } - - // 根据条件关系判断整个规则是否满足 - boolean isRuleSatisfied = evaluateConditions(conditions); - - // 这里可以根据 isRuleSatisfied 进行后续处理,比如触发预警等 - if (isRuleSatisfied) { - log.info("预警规则 {} 满足条件,触发预警", warningRule.getRuleName()); - - // 生成规则信息 - String ruleInfo = generateRuleInfo(conditions); - - WarningRuleInfo warningRuleInfo = new WarningRuleInfo(); - warningRuleInfo.setCreateName(warningRule.getCreateName()); - warningRuleInfo.setRuleId(warningRule.getId()); - warningRuleInfo.setRuleName(warningRule.getRuleName()); - warningRuleInfo.setConditions(conditions); - warningRuleInfo.setCreateTime(LocalDateTime.now()); - warningRuleInfo.setRuleInfo(ruleInfo); - warningRuleInfo.setWarningType(warningType); - warningRuleInfo.setWarningLevel(warningRule.getWarningLevel()); - warningRuleInfo.setStatus(warningRule.getStatus()); - warningRuleInfoService.save(warningRuleInfo); - } - } - } - - /** - * 生成规则信息描述 - */ - private String generateRuleInfo(List conditions) { - List conditionInfos = new ArrayList<>(); - - for (WarningCondition condition : conditions) { - if (condition.getIsEnjoy()) { // 只记录满足条件的报警信息 - String conditionInfo = generateSingleConditionInfo(condition); - if (conditionInfo != null && !conditionInfo.isEmpty()) { - conditionInfos.add(conditionInfo); - } - } - } - - return String.join(";", conditionInfos); - } - - - @Autowired - private StStbprpBService stStbprpBService; - /** - * 生成单个条件的描述信息 - 修改格式 - */ - private String generateSingleConditionInfo(WarningCondition condition) { - String indicatorType = condition.getIndicatorType(); - String stcd = condition.getStcd(); - String stnm=""; - List stStbprpBS = stStbprpBService.lambdaQuery().eq(StStbprpB::getStcd, stcd).last("limit 1").list(); - if(stStbprpBS != null && !stStbprpBS.isEmpty()){ - stnm = stStbprpBS.get(0).getStnm(); - } - BigDecimal thresholdValue = condition.getThresholdValue(); - Integer durationHours = condition.getDurationHours(); - - switch (indicatorType) { - case "REAL_WATER_LEVEL": - BigDecimal currentWaterLevel = getRzByStcd(stcd); - return String.format("%s测点监测水位%sm %s %sm", - stnm, currentWaterLevel, condition.getOperator(), thresholdValue); - - case "PEAK_FLOW": - return String.format("未来%dh预报洪峰流量 %s %s m³/s", - durationHours != null ? durationHours : 24, condition.getOperator(), thresholdValue); - - case "RAINFALL": - BigDecimal currentRainfall = getRealRainFall(stcd, durationHours); - return String.format("%s测点过去%dh降雨量%smm %s %smm", - stnm, durationHours != null ? durationHours : 24, - currentRainfall, condition.getOperator(), thresholdValue); - - case "WATER_STORAGE": - BigDecimal currentStoragePercent = getWaterStorage(condition.getYear()); - return String.format("蓄水量 %s 同期%s%%", - condition.getOperator(), thresholdValue); - - case "FORECAST_RAINFALL": - return String.format("%s测点未来%dh降雨量 %s %smm", - stnm, durationHours != null ? durationHours : 24, - condition.getOperator(), thresholdValue); - - default: - return String.format("未知指标类型%s %s %s", stcd, condition.getOperator(), thresholdValue); - } - } - - /** - * 计算条件的实际值 - */ - private BigDecimal calculateActualValue(WarningCondition condition, String warningType) { - String indicatorType = condition.getIndicatorType(); - String stcd = condition.getStcd(); - Integer durationHours = condition.getDurationHours(); - - switch (indicatorType) { - case "REAL_WATER_LEVEL": - return getRzByStcd(stcd); - case "PEAK_FLOW": - return getFloowMaxQ(durationHours); - case "RAINFALL": - return getRealRainFall(stcd, durationHours); - case "WATER_STORAGE": - return getWaterStorage(condition.getYear()); - case "FORECAST_RAINFALL": - return getForecastRainFall(stcd, durationHours); - default: - return BigDecimal.ZERO; - } - } - - /** - * 比较实际值和阈值 - */ - private boolean compareValue(BigDecimal actualValue, WarningCondition condition) { - if (actualValue == null || condition.getThresholdValue() == null) { - return false; - } - - String operator = condition.getOperator(); - BigDecimal threshold = condition.getThresholdValue(); - - switch (operator) { - case ">": - return actualValue.compareTo(threshold) > 0; - case ">=": - return actualValue.compareTo(threshold) >= 0; - case "<": - return actualValue.compareTo(threshold) < 0; - case "<=": - return actualValue.compareTo(threshold) <= 0; - default: - return false; - } - } - - /** - * 评估条件组合是否满足 - * 处理 AND/OR 逻辑关系 - */ - private boolean evaluateConditions(List conditions) { - if (conditions.isEmpty()) { - return false; - } - - boolean result = false; - boolean currentGroup = conditions.get(0).getIsEnjoy(); - - for (int i = 0; i < conditions.size() - 1; i++) { - WarningCondition current = conditions.get(i); - WarningCondition next = conditions.get(i + 1); - String relation = current.getRelationType(); - - if ("AND".equals(relation)) { - // AND 关系:当前组与下一个条件进行与运算 - currentGroup = currentGroup && next.getIsEnjoy(); - } else if ("OR".equals(relation)) { - // OR 关系:当前结果与当前组进行或运算,然后开始新的组 - result = result || currentGroup; - currentGroup = next.getIsEnjoy(); - } - } - - // 处理最后一个条件 - result = result || currentGroup; - - return result; - } - - //获取实时水位 - private BigDecimal getRzByStcd(String stcd){ - //获取河道水位的站点编码 - List riverStcd = riverWaterService.getRiverStcd(); - if(riverStcd.contains(stcd)){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StRiverRReal::getStcd,stcd); - StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().selectOne(queryWrapper); - if(stRiverRReal != null){ - return stRiverRReal.getZ(); - } - return BigDecimal.ZERO; - }else{ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StRsvrRReal::getStcd,stcd); - StRsvrRReal stRsvrRReal = stRsvrRRealService.getBaseMapper().selectOne(queryWrapper); - if(stRsvrRReal != null){ - return stRsvrRReal.getRz(); - } - return BigDecimal.ZERO; - } - } - - //获取预报洪峰流量 - private BigDecimal getFloowMaxQ(Integer durationHours){ - ForecastTask forecastTask = new ForecastTask(); - // 设置当前时间整点 - LocalDateTime now = LocalDateTime.now(); - LocalDateTime nowHour = now.withMinute(0).withSecond(0).withNano(0); - forecastTask.setNowTime(LocalDateTimeConverter.toDate(nowHour)); - - // 设置开始时间(当前时间减去一天) - LocalDateTime startTime = nowHour.minusDays(1); - forecastTask.setStartTime(LocalDateTimeConverter.toDate(startTime)); - - // 设置结束时间(当前时间加上durationHours) - LocalDateTime endTime = nowHour.plusHours(durationHours); - forecastTask.setEndTime(LocalDateTimeConverter.toDate(endTime)); - - forecastTask.setForecastWarm(1); - forecastTask.setForecastPeriod(durationHours); // 设置预报时长 - List humanForecastResult = forecastResultsService.getHumanForecastResult(forecastTask); - //过滤出预报的数据 - humanForecastResult = humanForecastResult.stream().filter(o ->{ - return o.getIspreDrp().equals("1") && o.getYcRkQValue() != null; - }).collect(Collectors.toList()); - BigDecimal totalQ = BigDecimal.ZERO; - for (ForecastResultVo forecastResultVo : humanForecastResult) { - totalQ = totalQ.add(forecastResultVo.getYcRkQValue()); - } - return totalQ; - } - - - //获取降雨量的值 - public BigDecimal getRealRainFall(String stcd,Integer durationHours){ - StPptnDetailsVo stPptnDetailsVo = rainBasinDivisionService.queryStPptnDetailsByStcd(stcd); - if (stPptnDetailsVo == null) { - return BigDecimal.ZERO; // 或返回 BigDecimal.ZERO,根据业务需求调整 - } - - BigDecimal result = switch (durationHours) { - case 1 -> stPptnDetailsVo.getH1(); - case 3 -> stPptnDetailsVo.getH3(); - case 6 -> stPptnDetailsVo.getH6(); - case 12 -> stPptnDetailsVo.getH12(); - case 24 -> stPptnDetailsVo.getH24(); - case 48 -> stPptnDetailsVo.getH48(); - // 3. 未匹配的时长(如2、5等),返回null或默认值 - default -> BigDecimal.ZERO; // 或 throw new IllegalArgumentException("不支持的时长:" + durationHours); - }; - return result == null?BigDecimal.ZERO:result; - } - - @Autowired - private HisWaterDataService hisWaterDataService; - - //获取蓄水量 - 修改后的逻辑 - private BigDecimal getWaterStorage(String year){ - List list = reservoirWaterService.list(); - if (list == null || list.isEmpty()) { - return BigDecimal.ZERO; - } - - AttResBaseVo reservoir = list.get(0); - BigDecimal nowCap = reservoir.getNowCap() == null ? BigDecimal.ZERO : reservoir.getNowCap(); - BigDecimal deadCap = reservoir.getDeadCap() == null ? BigDecimal.ZERO : reservoir.getDeadCap(); - BigDecimal availableWater = nowCap.subtract(deadCap); // 当前可用水量 - - // 获取当前月份 - int currentMonth = LocalDateTime.now().getMonthValue(); - String month = String.valueOf(currentMonth); - - // 获取某年同月的蓄水量作为基准值 - List hisWaterDataList = hisWaterDataService.lambdaQuery() - .eq(HisWaterData::getYear, year) - .eq(HisWaterData::getMonth, month) - .eq(HisWaterData::getType,2) - .list(); - - BigDecimal baseWaterStorage = BigDecimal.ZERO; - if (!hisWaterDataList.isEmpty()) { - HisWaterData hisWaterData = hisWaterDataList.get(0); - baseWaterStorage = hisWaterData.getAvgWater() == null ? BigDecimal.ZERO : hisWaterData.getAvgWater(); - } - - // 如果基准值为0,避免除零错误,返回0 - if (baseWaterStorage.compareTo(BigDecimal.ZERO) == 0) { - return BigDecimal.ZERO; - } - - // 计算当前可用水量占同期蓄水量的百分比 - BigDecimal percentage = availableWater.divide(baseWaterStorage, 4, RoundingMode.HALF_UP) - .multiply(new BigDecimal("100")); - - return percentage; - } - - - - //获取预测降雨量 - private BigDecimal getForecastRainFall(String stcd,Integer durationHours) { - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd"); - // 获取当前日期(默认系统时区,可指定时区如:ZoneId.of("UTC")) - LocalDate today = LocalDate.now(ZoneId.systemDefault()); - String todayDateStr = today.format(dateFormatter); // 结果示例:20251120 - String tm = todayDateStr + "08"; // 拼接固定小时,最终格式:2025112008 - WeatherSo weatherSo = new WeatherSo(); - weatherSo.setTm(tm); - List fore = forecastService.fore(weatherSo); - for (ForeRainVo foreRainVo : fore) { - if (stcd.equals(foreRainVo.getStcd())) { - BigDecimal forecastRain = BigDecimal.ZERO; - switch (durationHours) { - case 1: - forecastRain = foreRainVo.getH1(); - return forecastRain; - case 3: - forecastRain = foreRainVo.getH3(); - return forecastRain; - case 6: - forecastRain = foreRainVo.getH6(); - return forecastRain; - case 12: - forecastRain = foreRainVo.getH12(); - return forecastRain; - case 24: - forecastRain = new BigDecimal(foreRainVo.getH24()); - return forecastRain; - default: - return BigDecimal.ZERO; - } - } - } - return BigDecimal.ZERO; - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/util/BigdecimalUtil.java b/src/main/java/com/gunshi/project/hsz/util/BigdecimalUtil.java deleted file mode 100644 index 39fcd69..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/BigdecimalUtil.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gunshi.project.hsz.util; - -import org.apache.commons.math3.distribution.GammaDistribution; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; - -/** - * @author cxw - * @description - * @classname BigdecimalUtil.java - * @create 2024-11-06, 星期三, 10:33:41 - */ -public class BigdecimalUtil { - - - /** - * @description: 小数指数计算 - * @param base 底数 - * @param exponent 指数 - * @return: java.math.BigDecimal - * @auther: cxw - * @date: 2024-11-06, 周三, 10:34:47 - */ - public static BigDecimal bigDecimalExponentiation(BigDecimal base, double exponent) { - BigDecimal result = BigDecimal.valueOf(Math.pow(base.doubleValue(), exponent)).round(new MathContext(10, RoundingMode.HALF_UP)); - return result; - } - - - /** - * @description: 计算x的伽马函数 - * @param x - * @return: java.math.BigDecimal - * @auther: cxw - * @date: 2024-11-06, 周三, 11:31:24 - */ - public static double gammaDist(double x, double alpha, double beta, boolean cumulative) { - GammaDistribution gammaDist = new GammaDistribution(alpha, 1/beta); - if (cumulative) { - return gammaDist.cumulativeProbability(x); - } else { - return gammaDist.density(x); - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/util/ConvertUtil.java b/src/main/java/com/gunshi/project/hsz/util/ConvertUtil.java deleted file mode 100644 index b0f1d00..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/ConvertUtil.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gunshi.project.hsz.util; - -/** - * @author cxw - * @description: (描述这个类或者方法的作用) - * @classname ConvertUtil.java - * @create 2024-07-10, 星期三, 10:34:14 - */ -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.BeanUtils; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -public class ConvertUtil { - public static final Logger logger = LoggerFactory.getLogger(ConvertUtil.class); - - public static T entityToVo(Object source, Class target) { - if (source == null) { - return null; - } - T targetObject = null; - try { - targetObject = target.newInstance(); - BeanUtils.copyProperties(source, targetObject); - } catch (Exception e) { - e.printStackTrace(); - } - return targetObject; - } - - public static List entityToVoList(Collection sourceList, Class target) { - if (sourceList == null) { - return null; - } - List targetList = new ArrayList<>(sourceList.size()); - - try { - for (Object source : sourceList) { - T targetObject = target.newInstance(); - BeanUtils.copyProperties(source, targetObject); - targetList.add(targetObject); - } - } catch (Exception e) { - logger.error("convert error ", e); - } - return targetList; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/util/DataHandleUtil.java b/src/main/java/com/gunshi/project/hsz/util/DataHandleUtil.java deleted file mode 100644 index c31a9e2..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/DataHandleUtil.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.gunshi.project.hsz.util; - - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; - - -public class DataHandleUtil { - - /** - * 判断BigDecimal的小数部分是否为0 - * @param bigDecimal - * @return - */ - public static long BigDecimalIntegerPart(BigDecimal bigDecimal) { - BigDecimal integerPart = bigDecimal.setScale(0, RoundingMode.UP); - return integerPart.longValue(); - } - - - public static BigDecimal calcData(BigDecimal rz, Map map,List list) { - //库容曲线中最近的一组水位 - BigDecimal lowerRz = new BigDecimal(0); - BigDecimal upperRz = new BigDecimal(0); - - //库容曲线中最近的一组水位对应的库容 - BigDecimal lowerW = new BigDecimal(0); - BigDecimal upperW = new BigDecimal(0); - - for(int i=0;i= 0 && rz.compareTo(list.get(i+1)) <= 0) { - lowerRz = list.get(i); - upperRz = list.get(i+1); - - lowerW = map.get(lowerRz); - upperW = map.get(upperRz); - break; - } - } - BigDecimal diff = rz.subtract(lowerRz); - return lowerW.add(diff.multiply(upperW.subtract(lowerW)).divide(upperRz.subtract(lowerRz),2,RoundingMode.UP)); - } - - public static List tableData( List> list){ - List list2 = new ArrayList<>(); - Collection values; - for (int i = 0; i < list.size(); i++) { - values = list.get(i).values(); - List objects = new ArrayList<>(); - for (Object value : values) { - objects.add(value == null ? "" : value.toString()); - } - list2.add(objects); - } - return list2; - } - - public static List paginate(List list, int pageNumber, int pageSize) { - if (list == null || list.isEmpty()) { - return new ArrayList(); - } - - int totalSize = list.size(); - int fromIndex = (pageNumber - 1) * pageSize; - if (fromIndex >= totalSize || fromIndex < 0) { - return new ArrayList(); - } - - int toIndex = fromIndex + pageSize; - if (toIndex > totalSize) { - toIndex = totalSize; - } - - return list.subList(fromIndex, toIndex); - } - - -} diff --git a/src/main/java/com/gunshi/project/hsz/util/DateTransforUtil.java b/src/main/java/com/gunshi/project/hsz/util/DateTransforUtil.java deleted file mode 100644 index fd93a58..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/DateTransforUtil.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.gunshi.project.hsz.util; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.Date; - -public class DateTransforUtil { - - // 默认日期时间格式 - private static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; - private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; - - /** - * 将Date转换为字符串(默认格式:yyyy-MM-dd HH:mm:ss) - */ - public static String transforDateToString(Date date) { - if (date == null) { - return null; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); - return transforDateToString(date, formatter); - } - - /** - * 将Date转换为字符串(指定格式) - */ - public static String transforDateToString(Date date, DateTimeFormatter formatter) { - if (date == null) { - return null; - } - LocalDateTime localDateTime = date.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(); - return localDateTime.format(formatter); - } - - /** - * 将Date转换为字符串(指定格式字符串) - */ - public static String transforDateToString(Date date, String pattern) { - if (date == null) { - return null; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); - return transforDateToString(date, formatter); - } - - /** - * 将字符串转换为Date(指定格式) - */ - public static Date transforStringToDate(String date, DateTimeFormatter formatter) { - if (date == null || date.trim().isEmpty()) { - return null; - } - LocalDateTime localDateTime = LocalDateTime.parse(date, formatter); - return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); - } - - /** - * 将字符串转换为Date(默认格式:yyyy-MM-dd HH:mm:ss) - */ - public static Date transforStringToDate(String date) { - if (date == null || date.trim().isEmpty()) { - return null; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); - return transforStringToDate(date, formatter); - } - - /** - * 将字符串转换为Date(指定格式字符串) - */ - public static Date transforStringToDate(String date, String pattern) { - if (date == null || date.trim().isEmpty()) { - return null; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); - return transforStringToDate(date, formatter); - } - - /** - * 将LocalDateTime转换为字符串(默认格式:yyyy-MM-dd HH:mm:ss) - */ - public static String transforLocalDateTimeToString(LocalDateTime date) { - if (date == null) { - return null; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); - return date.format(formatter); - } - - /** - * 将LocalDateTime转换为字符串(指定格式) - */ - public static String transforLocalDateTimeToString(LocalDateTime date, DateTimeFormatter formatter) { - if (date == null) { - return null; - } - return date.format(formatter); - } - - /** - * 将LocalDateTime转换为字符串(指定格式字符串) - */ - public static String transforLocalDateTimeToString(LocalDateTime date, String pattern) { - if (date == null) { - return null; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); - return date.format(formatter); - } - - /** - * 将字符串转换为LocalDateTime(默认格式:yyyy-MM-dd HH:mm:ss) - */ - public static LocalDateTime transforStringToLocalDateTime(String date) { - if (date == null || date.trim().isEmpty()) { - return null; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); - return LocalDateTime.parse(date, formatter); - } - - /** - * 将字符串转换为LocalDateTime(指定格式) - */ - public static LocalDateTime transforStringToLocalDateTime(String date, DateTimeFormatter formatter) { - if (date == null || date.trim().isEmpty()) { - return null; - } - return LocalDateTime.parse(date, formatter); - } - - /** - * 将字符串转换为LocalDateTime(指定格式字符串) - */ - public static LocalDateTime transforStringToLocalDateTime(String date, String pattern) { - if (date == null || date.trim().isEmpty()) { - return null; - } - DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); - return LocalDateTime.parse(date, formatter); - } - - /** - * 将Date转换为LocalDateTime - */ - public static LocalDateTime transforDateToLocalDateTime(Date date) { - if (date == null) { - return null; - } - return date.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDateTime(); - } - - /** - * 将LocalDateTime转换为Date - */ - public static Date transforLocalDateTimeToDate(LocalDateTime date) { - if (date == null) { - return null; - } - return Date.from(date.atZone(ZoneId.systemDefault()).toInstant()); - } - - /** - * 将LocalDate转换为Date - */ - public static Date transforLocalDateToDate(LocalDate date) { - if (date == null) { - return null; - } - return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); - } - - /** - * 将Date转换为LocalDate - */ - public static LocalDate transforDateToLocalDate(Date date) { - if (date == null) { - return null; - } - return date.toInstant() - .atZone(ZoneId.systemDefault()) - .toLocalDate(); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/util/DateUtil.java b/src/main/java/com/gunshi/project/hsz/util/DateUtil.java deleted file mode 100644 index 74e7640..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/DateUtil.java +++ /dev/null @@ -1,267 +0,0 @@ -package com.gunshi.project.hsz.util; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.TimeUnit; - -/** - * Description: - * Created by wanyan on 2024/2/28 - * - * @author wanyan - * @version 1.0 - */ -public class DateUtil { - - // 使用 ConcurrentMap 来缓存 SimpleDateFormat 实例 - private static final ConcurrentMap> DATE_FORMAT_CACHE = new ConcurrentHashMap<>(); - - private static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - - private static SimpleDateFormat chineseYmd = new SimpleDateFormat("yyyy年MM月dd日"); - - private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - - private static DateTimeFormatter ymdformat = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - - private static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd日HH时"); - - private static DateTimeFormatter ym = DateTimeFormatter.ofPattern("YYYYMM"); - - public static Date convertStringToDate(String str){ - try { - return df.parse(str); - } catch (ParseException e) { - throw new RuntimeException(e); - } - } - - public static final ThreadLocal sdfhmsS = new ThreadLocal() { - protected SimpleDateFormat initialValue() { - return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - } - }; - - public static String convertDateToString(Date date){ - return sdf.format(date); - } - - public static String convertDateToMDSString(Date date){ - return df.format(date); - } - - public static String convertDateToChineseYmd(Date date){ - return chineseYmd.format(date); - } - - public static long hoursBetweenDate(Date start,Date end){ - long startTime = start.getTime(); - long endTime = end.getTime(); - long hours = TimeUnit.MILLISECONDS.toHours(endTime - startTime); - return Math.round(hours); - } - - /** - * 年初 - * @param year - * @return - */ - public static LocalDateTime beginningOfYear(Integer year){ - return LocalDateTime.of(year, 1, 1, 0, 0, 0, 0); - } - - /** - * 年末 - * @param year - * @return - */ - public static LocalDateTime endOfYear(Integer year){ - return beginningOfYear(year).plusYears(1).minusSeconds(1); - } - - - /** - * 年初 - * @param year - * @return - */ - public static Date beginOfYearToDate(Integer year){ - if (year == null) { - throw new IllegalArgumentException("Year cannot be null"); - } - - LocalDate localDate = LocalDate.of(year, 1, 1); - return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); - } - - /** - * 年末 - * @param year - * @return - */ - public static Date endOfYearToDate(Integer year){ - if (year == null) { - throw new IllegalArgumentException("Year cannot be null"); - } - LocalDateTime time = LocalDateTime.of(year, 1, 1, 0, 0, 0, 0); - time = time.plusYears(1).minusSeconds(1); - return Date.from(time.atZone(ZoneId.systemDefault()).toInstant()); - } - - - - /** - * 将Date对象转换为LocalDateTime对象. - * - * @param date 需要转换的Date对象 - * @return 转换后的LocalDateTime对象 - */ - public static Optional convertFromDate(Date date) { - if (date == null) { - throw new IllegalArgumentException("date is null"); - } - - Instant instant = date.toInstant(); - return Optional.of(instant.atZone(ZoneId.systemDefault()).toLocalDateTime()); - } - - - public static String getIntegerTime(){ - LocalDateTime now = LocalDateTime.now(); - LocalDateTime roundedTime = now.withMinute(0).withSecond(0).withNano(0); - return roundedTime.format(formatter); - } - - public static String getMinusIntegerTime(){ - LocalDateTime yesterday = LocalDateTime.now().minusDays(1); - LocalDateTime roundedTime = yesterday.withMinute(0).withSecond(0).withNano(0); - return roundedTime.format(formatter); - } - - public static String convertDH(String str){ - LocalDateTime dateTime = LocalDateTime.parse(str, formatter); - return dateTime.format(dtf); - } - - public static String getMinusTime(String str,long hour){ - LocalDateTime dateTime = LocalDateTime.parse(str, formatter); - LocalDateTime minusTime = dateTime.minusHours(hour); - return minusTime.format(formatter); - } - - public static String getPlusTime(String str,long hour){ - LocalDateTime dateTime = LocalDateTime.parse(str, formatter); - LocalDateTime plusTime = dateTime.plusHours(hour); - return plusTime.format(formatter); - } - - public static String getPlusDate(Date date,long day){ - String str = convertDateToString(date); - LocalDate localDate = LocalDate.parse(str, ymdformat); - LocalDate plusDay = localDate.plusDays(day); - return plusDay.format(ymdformat); - } - - public static String getTodayEight(){ - LocalDateTime now = LocalDateTime.now(); - LocalDateTime roundedTime = now.withHour(8).withMinute(0).withSecond(0).withNano(0); - return roundedTime.format(formatter); - } - - public static Integer getMD(int year, int month) { - if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { - return 31; - } else if (month == 4 || month == 6 || month == 9 || month == 11) { - return 30; - } else if (month == 2) { - //判断是否是闰年 - if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { - return 29; - } else { - return 28; - } - } - return 31; - } - - public static String getYM() { - LocalDateTime now = LocalDateTime.now(); - return now.format(ym); - } - - public static List getDatesBetween(Date startDate, Date endDate,Boolean isDesc) { - List dates = new ArrayList<>(); - Calendar calendar = Calendar.getInstance(); - while (startDate.getTime()<=endDate.getTime()){ - // 把日期添加到集合 - dates.add(convertDateToString(startDate)); - // 设置日期 - calendar.setTime(startDate); - //把日期增加一天 - calendar.add(Calendar.DATE, 1); - // 获取增加后的日期 - startDate=calendar.getTime(); - } - if(isDesc){ - return dates.reversed(); - } - return dates; - } - - public static List getDatesBetween(Date startDate, Date endDate) { - List dates = new ArrayList<>(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(startDate); - - while (calendar.getTime().before(endDate)) { - dates.add(calendar.getTime()); - calendar.add(Calendar.DATE, 1); - } - dates.add(endDate); - return dates; - } - - - public static boolean isValidDate(Date date, String format) { - if (date == null || format == null || format.isEmpty()) { - return false; - } - - try { - SimpleDateFormat sdf = getThreadSafeFormatter(format); - sdf.setLenient(false); // 设置严格模式 - sdf.parse(date.toString()); - return true; - } catch (IllegalArgumentException | ParseException e) { - return false; - } - } - - private static SimpleDateFormat getThreadSafeFormatter(String format) { - return DATE_FORMAT_CACHE.computeIfAbsent(format, key -> ThreadLocal.withInitial(() -> new SimpleDateFormat(key))).get(); - } - - public static List getMonthsBetweenDates(String startDateStr, String endDateStr) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDate startDate = LocalDate.parse(startDateStr, formatter); - LocalDate endDate = LocalDate.parse(endDateStr, formatter); - - List months = new ArrayList<>(); - while (startDate.isBefore(endDate)) { - months.add(startDate.getMonthValue()); - startDate = startDate.plusMonths(1); - } - - return months; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/util/ExcelUtil.java b/src/main/java/com/gunshi/project/hsz/util/ExcelUtil.java deleted file mode 100644 index 2f712b5..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/ExcelUtil.java +++ /dev/null @@ -1,279 +0,0 @@ -package com.gunshi.project.hsz.util; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.io.resource.ClassPathResource; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.ExcelWriter; -import com.alibaba.excel.support.ExcelTypeEnum; -import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; -import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy; -import com.alibaba.excel.write.metadata.WriteSheet; -import com.gunshi.project.hsz.util.excel.ExcelFillCellMergeStrategy; -import com.gunshi.project.hsz.util.excel.ExcelListener; -import com.gunshi.project.hsz.util.excel.ExcelResult; -import com.gunshi.project.hsz.util.excel.VoteTitleHandler; -import jakarta.servlet.http.HttpServletResponse; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.List; -import java.util.Map; - -public class ExcelUtil { - - /** - * 导出excel - * - * @param list 导出数据集合,加动态表头 - * @param filename 工作表的名称 - * @param clazz 实体类 - * @param response 响应体 - */ - public static void exportExcel(List list, String filename, Class clazz, HttpServletResponse response, String sheetName) { - OutputStream out = null; - try { - out = getOutputStream(filename, response); - ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) - //是否自动关闭流 - .autoCloseStream(Boolean.FALSE) - //自动列宽(不太精确) - .registerWriteHandler(new VoteTitleHandler(filename)) - .sheet(sheetName); - builder.doWrite(list); - } finally { - try { - if (out != null) { - out.flush(); - out.close(); - } - } catch (IOException e) { - throw new RuntimeException("导出Excel异常"); - } - } - } - - public static void exportExcel(List list, String filename, Class clazz,int mergeRowIndex, int[] mergeColumnIndex, HttpServletResponse response, String sheetName) { - OutputStream out = null; - try { - out = getOutputStream(filename, response); - ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) - //是否自动关闭流 - .autoCloseStream(Boolean.FALSE) - //自动列宽(不太精确) - .registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex)) - .sheet(sheetName); - builder.doWrite(list); - } finally { - try { - if (out != null) { - out.flush(); - out.close(); - } - } catch (IOException e) { - throw new RuntimeException("导出Excel异常"); - } - } - } - - /** - * 导出excel,合并指定单元格 - * - * @param list 导出数据集合,加动态表头 - * @param filename 工作表的名称 - * @param clazz 实体类 - * @param response 响应体 - */ - public static void exportExcel(List list, String filename, Class clazz, HttpServletResponse response, String sheetName, Integer type) { - OutputStream out = null; - try { - out = getOutputStream(filename, response); - if (type == 1) { - OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(36, 36, 1, 2); - OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(36, 36, 3, 6); - OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(36, 36, 7, 8); - OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(36, 36, 9, 12); - ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) - //是否自动关闭流 - .autoCloseStream(Boolean.FALSE) - //自动列宽(不太精确) - .registerWriteHandler(new VoteTitleHandler(filename)) - .registerWriteHandler(strategy) - .registerWriteHandler(strategy1) - .registerWriteHandler(strategy2) - .registerWriteHandler(strategy3) - .sheet(sheetName); - builder.doWrite(list); - } else { - OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(33, 37, 0, 0); - OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(38, 38, 0, 1); - OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(38, 38, 3, 5); - OnceAbsoluteMergeStrategy strategy4 = new OnceAbsoluteMergeStrategy(38, 38, 7, 9); - OnceAbsoluteMergeStrategy strategy5 = new OnceAbsoluteMergeStrategy(38, 38, 11, 13); - ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) - //是否自动关闭流 - .autoCloseStream(Boolean.FALSE) - .registerWriteHandler(new VoteTitleHandler(filename)) - .registerWriteHandler(strategy1) - .registerWriteHandler(strategy2) - .registerWriteHandler(strategy3) - .registerWriteHandler(strategy4) - .registerWriteHandler(strategy5) - .sheet(sheetName); - for (int i = 2; i < 33; i++) { - OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(i, i, 0, 1); - builder.registerWriteHandler(strategy); - } - builder.doWrite(list); - } - } finally { - try { - if (out != null) { - out.flush(); - out.close(); - } - } catch (IOException e) { - throw new RuntimeException("导出Excel异常"); - } - } - } - - /** - * 导出动态列 - * - * @param head 表头 - * @param data 数据 - * @param filename - * @param response - * @param sheetName - * @param - */ - public static void exportExcel(List> head, List data, String filename, HttpServletResponse response, String sheetName) { - OutputStream out = null; - try { - out = getOutputStream(filename, response); - ExcelWriterSheetBuilder builder = EasyExcel.write(out) - //是否自动关闭流 - .autoCloseStream(Boolean.FALSE) - //自动列宽(不太精确) - .registerWriteHandler(new VoteTitleHandler(filename)) - .head(head) - .sheet(sheetName); - builder.doWrite(data); - } finally { - try { - if (out != null) { - out.flush(); - out.close(); - } - } catch (IOException e) { - throw new RuntimeException("导出Excel异常"); - } - } - } - - /** - * 导出动态列,带合并单元格 - * - * @param head 表头 - * @param data 表格数据 - * @param mergeRowIndex 从第几行开始合并 - * @param mergeColumnIndex 合并字段的下标,如第一到五列new int[]{0,1,2,3,4} - * @param filename - * @param response - * @param sheetName - * @param - */ - public static void exportExcel(List> head, List data, int mergeRowIndex, int[] mergeColumnIndex, String filename, HttpServletResponse response, String sheetName) { - OutputStream out = null; - try { - out = getOutputStream(filename, response); - ExcelWriterSheetBuilder builder = EasyExcel.write(out) - //是否自动关闭流 - .autoCloseStream(Boolean.FALSE) - .registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex)) - .head(head) - .sheet(sheetName); - builder.doWrite(data); - } finally { - try { - if (out != null) { - out.flush(); - out.close(); - } - } catch (IOException e) { - throw new RuntimeException("导出Excel异常"); - } - } - } - - /** - * 单表多数据模板导出 模板格式为 {.属性} - * - * @param filename 文件名 - * @param templatePath 模板路径 resource 目录下的路径包括模板文件名 - * 例如: excel/temp.xlsx - * 重点: 模板文件必须放置到启动类对应的 resource 目录下 - * @param data 模板需要的数据 - * @param list 模板需要的集合数据 - */ - public static void exportTemplate(Map data, List list, String filename, String templatePath, HttpServletResponse response) { - OutputStream out = null; - try { - out = getOutputStream(filename, response); - ClassPathResource templateResource = new ClassPathResource(templatePath); - ExcelWriter excelWriter = EasyExcel.write(out) - .withTemplate(templateResource.getStream()) - .excelType(ExcelTypeEnum.XLSX) - .build(); - WriteSheet writeSheet = EasyExcel.writerSheet().build(); - if (CollUtil.isEmpty(data)) { - throw new IllegalArgumentException("数据为空"); - } - excelWriter.fill(list, writeSheet); - excelWriter.fill(data, writeSheet); - excelWriter.finish(); - } finally { - try { - if (out != null) { - out.flush(); - out.close(); - } - } catch (IOException e) { - throw new RuntimeException("导出Excel异常"); - } - } - } - - private static OutputStream getOutputStream(String fileName, HttpServletResponse response) { - try { - fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"); - response.setCharacterEncoding("utf8"); - response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx"); - response.setHeader("Pragma", "public"); - response.setHeader("Cache-Control", "no-store"); - response.addHeader("Cache-Control", "max-age=0"); - return response.getOutputStream(); - } catch (IOException e) { - System.out.println(e.getMessage()); - } - return null; - } - - /** - * 使用自定义监听器 异步导入 自定义返回 - * - * @param is 输入流 - * @param clazz 对象类型 - * @param listener 自定义监听器 - * @return 转换后集合 - */ - public static ExcelResult importExcel(InputStream is, Class clazz, ExcelListener listener) { - EasyExcel.read(is, clazz, listener).sheet().doRead(); - return listener.getExcelResult(); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/util/LocalDateTimeUtils.java b/src/main/java/com/gunshi/project/hsz/util/LocalDateTimeUtils.java deleted file mode 100644 index ead1ed4..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/LocalDateTimeUtils.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.gunshi.project.hsz.util; - -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -public class LocalDateTimeUtils { - - /** - * 判断月份是否在阶段时间内 - */ - public static boolean isMonthInPeriod(int month, LocalDateTime startTime, LocalDateTime endTime) { - if (startTime == null || endTime == null) { - return false; - } - - LocalDate startDate = startTime.toLocalDate(); - LocalDate endDate = endTime.toLocalDate(); - LocalDate current = startDate; - - while (!current.isAfter(endDate)) { - if (current.getMonthValue() == month) { - return true; - } - current = current.plusDays(1); - } - - return false; - } - - /** - * 计算阶段在指定月份的天数 - */ - public static int calculateDaysInMonthForPeriod(LocalDateTime startTime, LocalDateTime endTime, int targetMonth) { - if (startTime == null || endTime == null) { - return 0; - } - - LocalDate startDate = startTime.toLocalDate(); - LocalDate endDate = endTime.toLocalDate(); - LocalDate current = startDate; - int daysInTargetMonth = 0; - - while (!current.isAfter(endDate)) { - if (current.getMonthValue() == targetMonth) { - daysInTargetMonth++; - } - current = current.plusDays(1); - } - - return daysInTargetMonth; - } - - /** - * 获取指定月份的总天数 - */ - public static int getTotalDaysInMonth(int year, int month) { - LocalDate date = LocalDate.of(year, month, 1); - return date.lengthOfMonth(); - } - - /** - * 获取时间段内包含的月份 - */ - public static List getMonthsInPeriod(LocalDateTime startTime, LocalDateTime endTime) { - List months = new ArrayList<>(); - if (startTime == null || endTime == null) { - return months; - } - - LocalDate current = startTime.toLocalDate(); - LocalDate end = endTime.toLocalDate(); - - while (!current.isAfter(end)) { - int month = current.getMonthValue(); - if (!months.contains(month)) { - months.add(month); - } - current = current.plusDays(1); - } - - // 按月份顺序排序 - Collections.sort(months); - return months; - } - - /** - * 获取阶段跨越的月份集合 - */ - public static Set getMonthsInPeriodSet(LocalDateTime startTime, LocalDateTime endTime) { - Set months = new HashSet<>(); - LocalDateTime current = startTime; - - while (!current.isAfter(endTime)) { - months.add(current.getMonthValue()); - current = current.plusMonths(1).withDayOfMonth(1); - } - - return months; - } - - /** - * 根据传入的时间范围,获取所有天数,从小到大排列 - * - * @param startTime 开始时间(包含) - * @param endTime 结束时间(包含) - * @return 时间范围内的所有天数列表 - */ - public static List getAllDaysByStartAndEndTime(LocalDateTime startTime, LocalDateTime endTime) { - // 1. 参数校验 - if (startTime == null || endTime == null) { - throw new IllegalArgumentException("开始时间和结束时间不能为空"); - } - - if (startTime.isAfter(endTime)) { - throw new IllegalArgumentException("开始时间不能晚于结束时间"); - } - - List result = new ArrayList<>(); - - // 2. 获取开始日期的0点 - LocalDateTime currentDay = startTime.toLocalDate().atStartOfDay(); - LocalDateTime endDay = endTime.toLocalDate().atStartOfDay(); - - // 3. 循环添加每一天 - while (!currentDay.isAfter(endDay)) { - result.add(currentDay); - currentDay = currentDay.plusDays(1); - } - - return result; - } - - /** - * 根据时间范围获取包含的所有年份 - * @param startTime 起始时间 - * @param endTime 结束时间 - * @return 年份列表(升序) - */ - public static List getYearByRangeDate(LocalDateTime startTime, LocalDateTime endTime) { - if (startTime == null || endTime == null) { - throw new IllegalArgumentException("开始时间和结束时间不能为空"); - } - - if (startTime.isAfter(endTime)) { - throw new IllegalArgumentException("开始时间不能晚于结束时间"); - } - - int startYear = startTime.getYear(); - int endYear = endTime.getYear(); - - // 使用Stream生成年份列表 - return IntStream.rangeClosed(startYear, endYear) - .boxed() - .collect(Collectors.toList()); - } - - /** - * 根据开始时间和结束时间,计算时间间隔内的总天数 - * 包含开始日期和结束日期(两头都算) - * - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return 总天数(包含起止日) - */ - public static Integer getTotalDayByRangeDate(LocalDateTime startTime, LocalDateTime endTime) { - if (startTime == null || endTime == null) { - throw new IllegalArgumentException("开始时间和结束时间不能为空"); - } - - if (startTime.isAfter(endTime)) { - throw new IllegalArgumentException("开始时间不能晚于结束时间"); - } - - // 转换为LocalDate,忽略时间部分 - LocalDate startDate = startTime.toLocalDate(); - LocalDate endDate = endTime.toLocalDate(); - - // 使用ChronoUnit.DAYS.between计算天数差,+1表示包含起止日 - long days = ChronoUnit.DAYS.between(startDate, endDate) + 1; - - // 转换为Integer,注意数值范围检查 - if (days > Integer.MAX_VALUE) { - throw new ArithmeticException("天数超出Integer范围"); - } - - return (int) days; - } - - /** - * 计算忽略年份的时间范围内的天数(用于年循环的周期,如生长周期) - * 处理跨年情况,如11月15日到次年3月15日 - * - * @param startTime 开始时间 - * @param endTime 结束时间 - * @return 天数(假设为同一年计算) - */ - public static int calculateDaysIgnoringYear(LocalDateTime startTime, LocalDateTime endTime) { - if (startTime == null || endTime == null) { - return 0; - } - // 将开始和结束时间调整为同一年(比如都调整为2020年) - int baseYear = 2020; // 选择一个基准年 - - LocalDateTime adjustedStart = startTime.withYear(baseYear); - LocalDateTime adjustedEnd = endTime.withYear(baseYear); - - // 如果调整后开始时间在结束时间之后,说明是跨年周期 - // 如:11月15日(2020年)到3月15日(2020年)实际上应该是11月15日到次年3月15日 - if (adjustedStart.isAfter(adjustedEnd)) { - adjustedEnd = adjustedEnd.plusYears(1); // 结束时间加一年 - } - - // 计算天数 - return getTotalDayByRangeDate(adjustedStart, adjustedEnd); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/util/MyBeanUtil.java b/src/main/java/com/gunshi/project/hsz/util/MyBeanUtil.java deleted file mode 100644 index 83130a2..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/MyBeanUtil.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.gunshi.project.hsz.util; - -import org.springframework.beans.BeanUtils; -import org.springframework.util.CollectionUtils; - -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.*; - -/** - * Description:BeanUtils拓展工具类 - * Created by wanyan on 2024/7/10 - * - * @author wanyan - * @version 1.0 - */ -public class MyBeanUtil extends BeanUtils{ - - public MyBeanUtil() { - } - - public static T propertiesCopy(Object source, Class clazz) { - if (null == source) { - return null; - } else { - try { - T obj = clazz.newInstance(); - BeanUtils.copyProperties(source, obj); - return obj; - } catch (IllegalAccessException | InstantiationException var3) { - throw new RuntimeException(var3); - } - } - } - - /** - * list中对象的copy - * @param source - * @param clazz - * @param - * @return - */ - public static List collectionCopy(Collection source, Class clazz) { - if (null == source) { - return new ArrayList(); - } else { - List list = new ArrayList(); - Iterator var3 = source.iterator(); - - while(var3.hasNext()) { - Object o = var3.next(); - list.add(propertiesCopy(o, clazz)); - } - - return list; - } - } - - /** - * 将对象转换为map - * @param obj - * @return - */ - public static Map object2Map(Object obj) { - Map map = new HashMap(); - if (obj == null) { - return map; - } else { - Class clazz = obj.getClass(); - Field[] fields = clazz.getDeclaredFields(); - - try { - Field[] var4 = fields; - int var5 = fields.length; - - for(int var6 = 0; var6 < var5; ++var6) { - Field field = var4[var6]; - field.setAccessible(true); - map.put(field.getName(), field.get(obj)); - } - - return map; - } catch (Exception var8) { - throw new RuntimeException(var8); - } - } - } - - - /** - * 将map转换为对象,必须保证属性名称相同 - * @return - */ - public static Object map2Object(Map map,Class clzz){ - try { - Object target = clzz.newInstance(); - if(CollectionUtils.isEmpty(map)){ - return target; - } - Field[] fields = clzz.getDeclaredFields(); - if(!CollectionUtils.isEmpty(Arrays.asList(fields))){ - Arrays.stream(fields).filter((Field field) -> map.containsKey(field.getName())).forEach(var -> { - //获取属性的修饰符 - int modifiers = var.getModifiers(); - if(Modifier.isStatic(modifiers) || Modifier.isFinal(modifiers)){ - //在lambada中结束本次循环是用return,它不支持continue和break - return; - } - //设置权限 - var.setAccessible(true); - try { - var.set(target,map.get(var.getName())); - } catch (IllegalAccessException e) { - //属性类型不对,非法操作,跳过本次循环,直接进入下一次循环 - throw new RuntimeException(e); - } - }); - } - return target; - } catch (InstantiationException | IllegalAccessException e) { - e.printStackTrace(); - } - return null; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/util/OkHttpUtil.java b/src/main/java/com/gunshi/project/hsz/util/OkHttpUtil.java deleted file mode 100644 index 8e1e29d..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/OkHttpUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gunshi.project.hsz.util; - -import com.google.common.base.Suppliers; -import okhttp3.OkHttpClient; - -import java.util.concurrent.TimeUnit; -import java.util.function.Supplier; - -public class OkHttpUtil { - private OkHttpUtil(){ - - } - private static final Supplier OK_HTTP_CLIENT_FACTORY = Suppliers.memoize(OkHttpClient::new); - - public static OkHttpClient build(){ - return OK_HTTP_CLIENT_FACTORY.get().newBuilder().retryOnConnectionFailure(true) - .connectTimeout(10, TimeUnit.SECONDS) - .callTimeout(240, TimeUnit.SECONDS) - .readTimeout(240, TimeUnit.SECONDS) - .build(); - } - - public static OkHttpClient build(int timeout, int callTimeout){ - return OK_HTTP_CLIENT_FACTORY.get().newBuilder().retryOnConnectionFailure(true) - .connectTimeout(timeout, TimeUnit.SECONDS) - .callTimeout(callTimeout, TimeUnit.SECONDS) - .readTimeout(callTimeout, TimeUnit.SECONDS) - .build(); - } -} diff --git a/src/main/java/com/gunshi/project/hsz/util/ProjectCalculateUtil.java b/src/main/java/com/gunshi/project/hsz/util/ProjectCalculateUtil.java deleted file mode 100644 index e2238a6..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/ProjectCalculateUtil.java +++ /dev/null @@ -1,204 +0,0 @@ -package com.gunshi.project.hsz.util; - -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.model.RegressionEquation; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.List; -import java.util.stream.Collectors; - -/** - * 工程安全分析-线性回归方程计算 - */ -public class ProjectCalculateUtil { - - private static List filterValidData(List data) { - return data.stream() - .filter(vo -> vo.getRz() != null && vo.getValue() != null) - .collect(Collectors.toList()); - } - - private static BigDecimal calculateRSquared(List data, - List coefficients, - BigDecimal meanY) { - BigDecimal ssTot = BigDecimal.ZERO; - BigDecimal ssRes = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : data) { - BigDecimal x = vo.getRz(); - BigDecimal y = vo.getValue(); - BigDecimal yPredicted = predictWithCoefficients(x, coefficients); - - BigDecimal diffActual = y.subtract(meanY); - ssTot = ssTot.add(diffActual.multiply(diffActual)); - - BigDecimal diffResidual = y.subtract(yPredicted); - ssRes = ssRes.add(diffResidual.multiply(diffResidual)); - } - - if (ssTot.compareTo(BigDecimal.ZERO) == 0) { - return BigDecimal.ONE; - } - - return BigDecimal.ONE.subtract(ssRes.divide(ssTot, 30, RoundingMode.HALF_UP)); - } - - private static BigDecimal predictWithCoefficients(BigDecimal x, List coefficients) { - BigDecimal result = BigDecimal.ZERO; - BigDecimal xPower = BigDecimal.ONE; - - for (BigDecimal coeff : coefficients) { - result = result.add(coeff.multiply(xPower)); - xPower = xPower.multiply(x); - } - - return result; - } - - private static BigDecimal calculateDeterminant3x3(BigDecimal a11, BigDecimal a12, BigDecimal a13, - BigDecimal a21, BigDecimal a22, BigDecimal a23, - BigDecimal a31, BigDecimal a32, BigDecimal a33) { - return a11.multiply(a22.multiply(a33).subtract(a23.multiply(a32))) - .subtract(a12.multiply(a21.multiply(a33).subtract(a23.multiply(a31)))) - .add(a13.multiply(a21.multiply(a32).subtract(a22.multiply(a31)))); - } - - /** - * 计算线性回归方程(1阶) 库水位x轴,检测值y轴 - */ - public static RegressionEquation calculateLinear(List data) { - List validData = filterValidData(data); - if (validData.isEmpty()) { - throw new IllegalArgumentException("没有有效的数据点进行计算"); - } - - int n = validData.size(); - - BigDecimal sumX = BigDecimal.ZERO; - BigDecimal sumY = BigDecimal.ZERO; - BigDecimal sumXY = BigDecimal.ZERO; - BigDecimal sumX2 = BigDecimal.ZERO; - BigDecimal sumY2 = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : validData) { - BigDecimal x = vo.getRz(); - BigDecimal y = vo.getValue(); - - sumX = sumX.add(x); - sumY = sumY.add(y); - sumXY = sumXY.add(x.multiply(y)); - sumX2 = sumX2.add(x.multiply(x)); - sumY2 = sumY2.add(y.multiply(y)); - } - - BigDecimal nBig = new BigDecimal(n); - BigDecimal meanX = sumX.divide(nBig, 30, RoundingMode.HALF_UP); - BigDecimal meanY = sumY.divide(nBig, 30, RoundingMode.HALF_UP); - - BigDecimal numerator = sumXY.subtract(nBig.multiply(meanX).multiply(meanY)); - BigDecimal denominator = sumX2.subtract(nBig.multiply(meanX).multiply(meanX)); - - if (denominator.compareTo(BigDecimal.ZERO) == 0) { - throw new IllegalArgumentException("数据点x值相同,无法计算斜率"); - } - - BigDecimal slope = numerator.divide(denominator, 30, RoundingMode.HALF_UP); - BigDecimal intercept = meanY.subtract(slope.multiply(meanX)); - - // 计算R² - BigDecimal rSquared = calculateRSquared(validData, - List.of(intercept, slope), meanY); - - // 系数列表:[常数项, 一次项系数] - List coefficients = List.of( - intercept.setScale(10, RoundingMode.HALF_UP), - slope.setScale(10, RoundingMode.HALF_UP) - ); - - return new RegressionEquation(1, coefficients, rSquared, n); - } - - /** - * 计算二次回归方程(2阶) - */ - public static RegressionEquation calculateQuadratic(List data) { - List validData = filterValidData(data); - if (validData.size() < 3) { - throw new IllegalArgumentException("二次回归至少需要3个数据点"); - } - - int n = validData.size(); - - BigDecimal sumX = BigDecimal.ZERO, sumY = BigDecimal.ZERO; - BigDecimal sumX2 = BigDecimal.ZERO, sumX3 = BigDecimal.ZERO, sumX4 = BigDecimal.ZERO; - BigDecimal sumXY = BigDecimal.ZERO, sumX2Y = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : validData) { - BigDecimal x = vo.getRz(); - BigDecimal y = vo.getValue(); - - BigDecimal x2 = x.multiply(x); - BigDecimal x3 = x2.multiply(x); - BigDecimal x4 = x3.multiply(x); - - sumX = sumX.add(x); - sumY = sumY.add(y); - sumX2 = sumX2.add(x2); - sumX3 = sumX3.add(x3); - sumX4 = sumX4.add(x4); - sumXY = sumXY.add(x.multiply(y)); - sumX2Y = sumX2Y.add(x2.multiply(y)); - } - - BigDecimal nBig = new BigDecimal(n); - - // 使用克莱姆法则求解 - BigDecimal det = calculateDeterminant3x3( - nBig, sumX, sumX2, - sumX, sumX2, sumX3, - sumX2, sumX3, sumX4 - ); - - if (det.compareTo(BigDecimal.ZERO) == 0) { - throw new IllegalArgumentException("矩阵奇异,无法求解二次回归方程"); - } - - BigDecimal detA0 = calculateDeterminant3x3( - sumY, sumX, sumX2, - sumXY, sumX2, sumX3, - sumX2Y, sumX3, sumX4 - ); - - BigDecimal detA1 = calculateDeterminant3x3( - nBig, sumY, sumX2, - sumX, sumXY, sumX3, - sumX2, sumX2Y, sumX4 - ); - - BigDecimal detA2 = calculateDeterminant3x3( - nBig, sumX, sumY, - sumX, sumX2, sumXY, - sumX2, sumX3, sumX2Y - ); - - BigDecimal a0 = detA0.divide(det, 30, RoundingMode.HALF_UP); - BigDecimal a1 = detA1.divide(det, 30, RoundingMode.HALF_UP); - BigDecimal a2 = detA2.divide(det, 30, RoundingMode.HALF_UP); - - // 计算R² - BigDecimal meanY = sumY.divide(nBig, 30, RoundingMode.HALF_UP); - BigDecimal rSquared = calculateRSquared(validData, - List.of(a0, a1, a2), meanY); - - // 系数列表:[常数项, 一次项系数, 二次项系数] - List coefficients = List.of( - a0.setScale(10, RoundingMode.HALF_UP), - a1.setScale(10, RoundingMode.HALF_UP), - a2.setScale(10, RoundingMode.HALF_UP) - ); - - return new RegressionEquation(2, coefficients, rSquared, n); - } - -} diff --git a/src/main/java/com/gunshi/project/hsz/util/RegressionAnalysis.java b/src/main/java/com/gunshi/project/hsz/util/RegressionAnalysis.java deleted file mode 100644 index 8f940a4..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/RegressionAnalysis.java +++ /dev/null @@ -1,747 +0,0 @@ -package com.gunshi.project.hsz.util; - -import com.gunshi.project.hsz.common.model.vo.OsmoticPressDetailVo; -import com.gunshi.project.hsz.model.RegressionEquation; - -import java.math.BigDecimal; -import java.math.MathContext; -import java.math.RoundingMode; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * 回归分析工具类 - * - * - * 库水位rz为x轴 - * 检测值value为y轴 - */ -public class RegressionAnalysis { - - /** - * 计算线性回归方程(1阶) - */ - public static RegressionEquation calculateLinear(List data) { - int n = 0; - BigDecimal rSquared = null; - List coefficients = null; - try { - List validData = filterValidData(data); - if (validData.isEmpty()) { - throw new IllegalArgumentException("没有有效的数据点进行计算"); - } - - n = validData.size(); - - // 检查所有x值是否相同 - boolean allXSame = checkAllXSame(validData); - if (allXSame) { - // 所有x值相同,返回常数函数(y = 平均值) - BigDecimal meanY = calculateMeanY(validData); - List collect = List.of(meanY); - BigDecimal rSquareds = BigDecimal.ZERO; // 这种情况下R²为0 - return new RegressionEquation(1, collect, rSquareds, n); - } - - BigDecimal sumX = BigDecimal.ZERO; - BigDecimal sumY = BigDecimal.ZERO; - BigDecimal sumXY = BigDecimal.ZERO; - BigDecimal sumX2 = BigDecimal.ZERO; - BigDecimal sumY2 = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : validData) { - BigDecimal x = vo.getRz(); - BigDecimal y = vo.getValue(); - - sumX = sumX.add(x); - sumY = sumY.add(y); - sumXY = sumXY.add(x.multiply(y)); - sumX2 = sumX2.add(x.multiply(x)); - sumY2 = sumY2.add(y.multiply(y)); - } - - BigDecimal nBig = new BigDecimal(n); - BigDecimal meanX = sumX.divide(nBig, 100, RoundingMode.HALF_UP); - BigDecimal meanY = sumY.divide(nBig, 100, RoundingMode.HALF_UP); - - BigDecimal numerator = sumXY.subtract(nBig.multiply(meanX).multiply(meanY)); - BigDecimal denominator = sumX2.subtract(nBig.multiply(meanX).multiply(meanX)); - - if (denominator.compareTo(BigDecimal.ZERO) == 0) { - throw new IllegalArgumentException("数据点x值相同,无法计算斜率"); - } - - BigDecimal slope = numerator.divide(denominator, 100, RoundingMode.HALF_UP); - BigDecimal intercept = meanY.subtract(slope.multiply(meanX)); - - // 计算R² - rSquared = calculateRSquared(validData, List.of(intercept, slope), meanY); - - // 系数列表:[常数项, 一次项系数] - 不进行四舍五入 - coefficients = List.of(intercept, slope); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - return null; - } - - return new RegressionEquation(1, coefficients, rSquared, n); - } - - /** - * 计算二次回归方程(2阶) - */ - public static RegressionEquation calculateQuadratic(List data) { - int n = 0; - BigDecimal rSquared = null; - List coefficients = null; - try { - List validData = filterValidData(data); - if (validData.size() < 3) { - throw new IllegalArgumentException("二次回归至少需要3个数据点"); - } - - n = validData.size(); - - // 检查所有x值是否相同 - boolean allXSame = checkAllXSame(validData); - if (allXSame) { - // 所有x值相同,返回常数函数 - BigDecimal meanY = calculateMeanY(validData); - List collect = List.of(meanY); - BigDecimal rSquaredsame = BigDecimal.ZERO; - return new RegressionEquation(2, collect, rSquaredsame, n); - } - - // 计算各项和 - BigDecimal sumX = BigDecimal.ZERO, sumY = BigDecimal.ZERO; - BigDecimal sumX2 = BigDecimal.ZERO, sumX3 = BigDecimal.ZERO, sumX4 = BigDecimal.ZERO; - BigDecimal sumXY = BigDecimal.ZERO, sumX2Y = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : validData) { - BigDecimal x = vo.getRz(); - BigDecimal y = vo.getValue(); - - BigDecimal x2 = x.multiply(x); - BigDecimal x3 = x2.multiply(x); - BigDecimal x4 = x3.multiply(x); - - sumX = sumX.add(x); - sumY = sumY.add(y); - sumX2 = sumX2.add(x2); - sumX3 = sumX3.add(x3); - sumX4 = sumX4.add(x4); - sumXY = sumXY.add(x.multiply(y)); - sumX2Y = sumX2Y.add(x2.multiply(y)); - } - - BigDecimal nBig = new BigDecimal(n); - - // 使用克莱姆法则求解 - BigDecimal det = calculateDeterminant3x3( - nBig, sumX, sumX2, - sumX, sumX2, sumX3, - sumX2, sumX3, sumX4 - ); - - if (det.compareTo(BigDecimal.ZERO) == 0) { - throw new IllegalArgumentException("矩阵奇异,无法求解二次回归方程"); - } - - // 求解常数项 a - BigDecimal detA = calculateDeterminant3x3( - sumY, sumX, sumX2, - sumXY, sumX2, sumX3, - sumX2Y, sumX3, sumX4 - ); - - // 求解一次项系数 b - BigDecimal detB = calculateDeterminant3x3( - nBig, sumY, sumX2, - sumX, sumXY, sumX3, - sumX2, sumX2Y, sumX4 - ); - - // 求解二次项系数 c - BigDecimal detC = calculateDeterminant3x3( - nBig, sumX, sumY, - sumX, sumX2, sumXY, - sumX2, sumX3, sumX2Y - ); - - BigDecimal a = detA.divide(det, 100, RoundingMode.HALF_UP); // 常数项 - BigDecimal b = detB.divide(det, 100, RoundingMode.HALF_UP); // 一次项系数 - BigDecimal c = detC.divide(det, 100, RoundingMode.HALF_UP); // 二次项系数 - - // 计算R² - BigDecimal meanY = sumY.divide(nBig, 100, RoundingMode.HALF_UP); - rSquared = calculateRSquared(validData, List.of(a, b, c), meanY); - - // 系数列表:[常数项, 一次项系数, 二次项系数] - 不进行四舍五入 - coefficients = List.of(a, b, c); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - return null; - } - - return new RegressionEquation(2, coefficients, rSquared, n); - } - - - /** - * 计算三次回归方程(3阶)- 高精度版本 - */ - public static RegressionEquation calculateCubic(List data) { - try { - List validData = filterValidData(data); - if (validData.size() < 4) { - throw new IllegalArgumentException("三次回归至少需要4个数据点"); - } - - int n = validData.size(); - - // 使用高精度计算各项和 - MathContext mc = new MathContext(200, RoundingMode.HALF_UP); // 提高精度到200位 - - BigDecimal sumX = BigDecimal.ZERO, sumY = BigDecimal.ZERO; - BigDecimal sumX2 = BigDecimal.ZERO, sumX3 = BigDecimal.ZERO, sumX4 = BigDecimal.ZERO; - BigDecimal sumX5 = BigDecimal.ZERO, sumX6 = BigDecimal.ZERO; - BigDecimal sumXY = BigDecimal.ZERO, sumX2Y = BigDecimal.ZERO, sumX3Y = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : validData) { - BigDecimal x = vo.getRz(); - BigDecimal y = vo.getValue(); - - BigDecimal x2 = x.multiply(x, mc); - BigDecimal x3 = x2.multiply(x, mc); - BigDecimal x4 = x3.multiply(x, mc); - BigDecimal x5 = x4.multiply(x, mc); - BigDecimal x6 = x5.multiply(x, mc); - - sumX = sumX.add(x, mc); - sumY = sumY.add(y, mc); - sumX2 = sumX2.add(x2, mc); - sumX3 = sumX3.add(x3, mc); - sumX4 = sumX4.add(x4, mc); - sumX5 = sumX5.add(x5, mc); - sumX6 = sumX6.add(x6, mc); - sumXY = sumXY.add(x.multiply(y, mc), mc); - sumX2Y = sumX2Y.add(x2.multiply(y, mc), mc); - sumX3Y = sumX3Y.add(x3.multiply(y, mc), mc); - } - - BigDecimal nBig = new BigDecimal(n); - - // 构建正规方程组 - 使用中心化数据提高数值稳定性 - BigDecimal meanX = sumX.divide(nBig, mc); - - // 重新计算中心化后的各阶矩 - BigDecimal m2 = BigDecimal.ZERO, m3 = BigDecimal.ZERO, m4 = BigDecimal.ZERO, m5 = BigDecimal.ZERO, m6 = BigDecimal.ZERO; - BigDecimal m1y = BigDecimal.ZERO, m2y = BigDecimal.ZERO, m3y = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : validData) { - BigDecimal xCentered = vo.getRz().subtract(meanX, mc); - BigDecimal y = vo.getValue(); - - BigDecimal x2 = xCentered.multiply(xCentered, mc); - BigDecimal x3 = x2.multiply(xCentered, mc); - BigDecimal x4 = x3.multiply(xCentered, mc); - BigDecimal x5 = x4.multiply(xCentered, mc); - BigDecimal x6 = x5.multiply(xCentered, mc); - - m2 = m2.add(x2, mc); - m3 = m3.add(x3, mc); - m4 = m4.add(x4, mc); - m5 = m5.add(x5, mc); - m6 = m6.add(x6, mc); - m1y = m1y.add(xCentered.multiply(y, mc), mc); - m2y = m2y.add(x2.multiply(y, mc), mc); - m3y = m3y.add(x3.multiply(y, mc), mc); - } - - // 中心化后的正规方程组(常数项为0) - BigDecimal[][] matrix = { - {nBig, BigDecimal.ZERO, m2, m3}, - {BigDecimal.ZERO, m2, m3, m4}, - {m2, m3, m4, m5}, - {m3, m4, m5, m6} - }; - - // 注意:第一个方程对应常数项,右侧是sumY - BigDecimal[] vector = { - sumY, // 对应常数项 - m1y, // 对应一次项 - m2y, // 对应二次项 - m3y // 对应三次项 - }; - - // 使用高精度求解 - BigDecimal[] centeredCoefficients = solveLinearSystemHighPrecision(matrix, vector, mc); - if (centeredCoefficients == null) { - throw new IllegalArgumentException("无法求解三次回归方程"); - } - - // 将中心化系数转换回原始坐标 - BigDecimal[] originalCoefficients = convertCenteredToOriginalCubic(centeredCoefficients, meanX, mc); - - // 计算R² - BigDecimal meanY = sumY.divide(nBig, mc); - List coefficientsList = Arrays.asList(originalCoefficients); - BigDecimal rSquared = calculateRSquared(validData, coefficientsList, meanY); - - return new RegressionEquation(3, coefficientsList, rSquared, n); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - return null; - } - } - - /** - * 高精度线性方程组求解 - */ - private static BigDecimal[] solveLinearSystemHighPrecision(BigDecimal[][] matrix, BigDecimal[] vector, MathContext mc) { - int n = vector.length; - - // 复制矩阵和向量 - BigDecimal[][] a = new BigDecimal[n][n]; - BigDecimal[] b = new BigDecimal[n]; - for (int i = 0; i < n; i++) { - a[i] = matrix[i].clone(); - b[i] = vector[i]; - } - - // 部分主元高斯消元 - for (int k = 0; k < n; k++) { - // 寻找主元 - int maxRow = k; - BigDecimal maxVal = a[k][k].abs(); - for (int i = k + 1; i < n; i++) { - BigDecimal current = a[i][k].abs(); - if (current.compareTo(maxVal) > 0) { - maxVal = current; - maxRow = i; - } - } - - // 交换行 - if (maxRow != k) { - BigDecimal[] tempRow = a[k]; - a[k] = a[maxRow]; - a[maxRow] = tempRow; - - BigDecimal tempB = b[k]; - b[k] = b[maxRow]; - b[maxRow] = tempB; - } - - // 检查主元是否为0 - 增加容错 - if (a[k][k].abs().compareTo(new BigDecimal("1E-100")) < 0) { - // 尝试使用伪逆或特殊处理 - return solveSingularSystem(a, b, mc); - } - - // 消元 - for (int i = k + 1; i < n; i++) { - BigDecimal factor = a[i][k].divide(a[k][k], mc); - for (int j = k; j < n; j++) { - a[i][j] = a[i][j].subtract(factor.multiply(a[k][j], mc), mc); - } - b[i] = b[i].subtract(factor.multiply(b[k], mc), mc); - } - } - - // 回代 - BigDecimal[] x = new BigDecimal[n]; - for (int i = n - 1; i >= 0; i--) { - BigDecimal sum = BigDecimal.ZERO; - for (int j = i + 1; j < n; j++) { - sum = sum.add(a[i][j].multiply(x[j], mc), mc); - } - x[i] = b[i].subtract(sum, mc).divide(a[i][i], mc); - } - - return x; - } - - /** - * 处理奇异或接近奇异的系统 - */ - private static BigDecimal[] solveSingularSystem(BigDecimal[][] a, BigDecimal[] b, MathContext mc) { - int n = b.length; - - // 简单处理:将接近0的主元设为一个小值 - for (int k = 0; k < n; k++) { - if (a[k][k].abs().compareTo(new BigDecimal("1E-100")) < 0) { - a[k][k] = new BigDecimal("1E-50"); // 设置一个小值 - } - - for (int i = k + 1; i < n; i++) { - BigDecimal factor = a[i][k].divide(a[k][k], mc); - for (int j = k; j < n; j++) { - a[i][j] = a[i][j].subtract(factor.multiply(a[k][j], mc), mc); - } - b[i] = b[i].subtract(factor.multiply(b[k], mc), mc); - } - } - - // 回代 - BigDecimal[] x = new BigDecimal[n]; - for (int i = n - 1; i >= 0; i--) { - BigDecimal sum = BigDecimal.ZERO; - for (int j = i + 1; j < n; j++) { - sum = sum.add(a[i][j].multiply(x[j], mc), mc); - } - x[i] = b[i].subtract(sum, mc).divide(a[i][i], mc); - } - - return x; - } - - /** - * 将中心化三次系数转换回原始坐标 - */ - private static BigDecimal[] convertCenteredToOriginalCubic(BigDecimal[] centeredCoeffs, BigDecimal mean, MathContext mc) { - // centered: y = a + b(x-μ) + c(x-μ)² + d(x-μ)³ - // original: y = A + Bx + Cx² + Dx³ - - BigDecimal a = centeredCoeffs[0]; - BigDecimal b = centeredCoeffs[1]; - BigDecimal c = centeredCoeffs[2]; - BigDecimal d = centeredCoeffs[3]; - - BigDecimal mu = mean; - BigDecimal mu2 = mu.multiply(mu, mc); - BigDecimal mu3 = mu2.multiply(mu, mc); - - BigDecimal A = a.subtract(b.multiply(mu, mc), mc) - .add(c.multiply(mu2, mc), mc) - .subtract(d.multiply(mu3, mc), mc); - - BigDecimal B = b.subtract(BigDecimal.valueOf(2).multiply(c, mc).multiply(mu, mc), mc) - .add(BigDecimal.valueOf(3).multiply(d, mc).multiply(mu2, mc), mc); - - BigDecimal C = c.subtract(BigDecimal.valueOf(3).multiply(d, mc).multiply(mu, mc), mc); - BigDecimal D = d; - - return new BigDecimal[]{A, B, C, D}; - } - - - // 其他辅助方法 - private static List filterValidData(List data) { - return data.stream() - .filter(vo -> vo.getRz() != null && vo.getValue() != null) - .collect(Collectors.toList()); - } - - private static BigDecimal calculateDeterminant3x3(BigDecimal a11, BigDecimal a12, BigDecimal a13, - BigDecimal a21, BigDecimal a22, BigDecimal a23, - BigDecimal a31, BigDecimal a32, BigDecimal a33) { - return a11.multiply(a22.multiply(a33).subtract(a23.multiply(a32))) - .subtract(a12.multiply(a21.multiply(a33).subtract(a23.multiply(a31)))) - .add(a13.multiply(a21.multiply(a32).subtract(a22.multiply(a31)))); - } - - - private static BigDecimal predictWithCoefficients(BigDecimal x, List coefficients) { - BigDecimal result = BigDecimal.ZERO; - BigDecimal xPower = BigDecimal.ONE; - - for (BigDecimal coeff : coefficients) { - result = result.add(coeff.multiply(xPower)); - xPower = xPower.multiply(x); - } - - return result; - } - - - /** - * 计算四次回归方程(4阶)- 与三阶保持一致精度,失败时自动降级为三阶 - */ - public static RegressionEquation calculateQuartic(List data) { - try { - List validData = filterValidData(data); - if (validData.size() < 5) { - // 数据点不足5个,尝试三阶 - return calculateCubic(data); - } - - int n = validData.size(); - - // 检查所有x值是否相同 - boolean allXSame = checkAllXSame(validData); - if (allXSame) { - BigDecimal meanY = calculateMeanY(validData); - return new RegressionEquation(1, List.of(meanY), BigDecimal.ZERO, n); - } - - // 与三阶保持一致的200位精度 - MathContext mc = new MathContext(200, RoundingMode.HALF_UP); - - // 计算各项和(高精度) - BigDecimal sumX = BigDecimal.ZERO, sumY = BigDecimal.ZERO; - BigDecimal sumX2 = BigDecimal.ZERO, sumX3 = BigDecimal.ZERO, sumX4 = BigDecimal.ZERO; - BigDecimal sumX5 = BigDecimal.ZERO, sumX6 = BigDecimal.ZERO, sumX7 = BigDecimal.ZERO, sumX8 = BigDecimal.ZERO; - BigDecimal sumXY = BigDecimal.ZERO, sumX2Y = BigDecimal.ZERO, sumX3Y = BigDecimal.ZERO, sumX4Y = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : validData) { - BigDecimal x = vo.getRz(); - BigDecimal y = vo.getValue(); - - BigDecimal x2 = x.multiply(x, mc); - BigDecimal x3 = x2.multiply(x, mc); - BigDecimal x4 = x3.multiply(x, mc); - BigDecimal x5 = x4.multiply(x, mc); - BigDecimal x6 = x5.multiply(x, mc); - BigDecimal x7 = x6.multiply(x, mc); - BigDecimal x8 = x7.multiply(x, mc); - - sumX = sumX.add(x, mc); - sumY = sumY.add(y, mc); - sumX2 = sumX2.add(x2, mc); - sumX3 = sumX3.add(x3, mc); - sumX4 = sumX4.add(x4, mc); - sumX5 = sumX5.add(x5, mc); - sumX6 = sumX6.add(x6, mc); - sumX7 = sumX7.add(x7, mc); - sumX8 = sumX8.add(x8, mc); - sumXY = sumXY.add(x.multiply(y, mc), mc); - sumX2Y = sumX2Y.add(x2.multiply(y, mc), mc); - sumX3Y = sumX3Y.add(x3.multiply(y, mc), mc); - sumX4Y = sumX4Y.add(x4.multiply(y, mc), mc); - } - - BigDecimal nBig = new BigDecimal(n); - - // 中心化处理(与三阶逻辑一致,提高稳定性) - BigDecimal meanX = sumX.divide(nBig, mc); - - // 计算中心化后的各阶矩 - BigDecimal m2 = BigDecimal.ZERO, m3 = BigDecimal.ZERO, m4 = BigDecimal.ZERO, m5 = BigDecimal.ZERO, m6 = BigDecimal.ZERO, m7 = BigDecimal.ZERO, m8 = BigDecimal.ZERO; - BigDecimal m1y = BigDecimal.ZERO, m2y = BigDecimal.ZERO, m3y = BigDecimal.ZERO, m4y = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : validData) { - BigDecimal xCentered = vo.getRz().subtract(meanX, mc); - BigDecimal y = vo.getValue(); - - BigDecimal x2 = xCentered.multiply(xCentered, mc); - BigDecimal x3 = x2.multiply(xCentered, mc); - BigDecimal x4 = x3.multiply(xCentered, mc); - BigDecimal x5 = x4.multiply(xCentered, mc); - BigDecimal x6 = x5.multiply(xCentered, mc); - BigDecimal x7 = x6.multiply(xCentered, mc); - BigDecimal x8 = x7.multiply(xCentered, mc); - - m2 = m2.add(x2, mc); - m3 = m3.add(x3, mc); - m4 = m4.add(x4, mc); - m5 = m5.add(x5, mc); - m6 = m6.add(x6, mc); - m7 = m7.add(x7, mc); - m8 = m8.add(x8, mc); - m1y = m1y.add(xCentered.multiply(y, mc), mc); - m2y = m2y.add(x2.multiply(y, mc), mc); - m3y = m3y.add(x3.multiply(y, mc), mc); - m4y = m4y.add(x4.multiply(y, mc), mc); - } - - // 中心化后的正规方程组 - BigDecimal[][] matrix = { - {nBig, BigDecimal.ZERO, m2, m3, m4}, - {BigDecimal.ZERO, m2, m3, m4, m5}, - {m2, m3, m4, m5, m6}, - {m3, m4, m5, m6, m7}, - {m4, m5, m6, m7, m8} - }; - - BigDecimal[] vector = { - sumY, // 常数项 - m1y, // 一次项 - m2y, // 二次项 - m3y, // 三次项 - m4y // 四次项 - }; - - // 高精度求解四阶方程 - BigDecimal[] centeredCoefficients = solveLinearSystemHighPrecision(matrix, vector, mc); - if (centeredCoefficients == null) { - // 四阶求解失败,自动降级为三阶 - return calculateCubic(data); - } - - // 将中心化系数转换回原始坐标 - BigDecimal[] originalCoefficients = convertCenteredToOriginalQuartic(centeredCoefficients, meanX, mc); - - // 计算R² - BigDecimal meanY = sumY.divide(nBig, mc); - List coefficientsList = Arrays.asList(originalCoefficients); - BigDecimal rSquared = calculateRSquared(validData, coefficientsList, meanY); - - return new RegressionEquation(4, coefficientsList, rSquared, n); - } catch (Exception e) { - // 任何异常都降级为三阶 - return calculateCubic(data); - } - } - - /** - * 将中心化四次系数转换回原始坐标 - */ - private static BigDecimal[] convertCenteredToOriginalQuartic(BigDecimal[] centeredCoeffs, BigDecimal mean, MathContext mc) { - // centered: y = a + b(x-μ) + c(x-μ)² + d(x-μ)³ + e(x-μ)⁴ - // original: y = A + Bx + Cx² + Dx³ + Ex⁴ - BigDecimal a = centeredCoeffs[0]; - BigDecimal b = centeredCoeffs[1]; - BigDecimal c = centeredCoeffs[2]; - BigDecimal d = centeredCoeffs[3]; - BigDecimal e = centeredCoeffs[4]; - - BigDecimal mu = mean; - BigDecimal mu2 = mu.multiply(mu, mc); - BigDecimal mu3 = mu2.multiply(mu, mc); - BigDecimal mu4 = mu3.multiply(mu, mc); - - BigDecimal A = a.subtract(b.multiply(mu, mc), mc) - .add(c.multiply(mu2, mc), mc) - .subtract(d.multiply(mu3, mc), mc) - .add(e.multiply(mu4, mc), mc); - - BigDecimal B = b.subtract(BigDecimal.valueOf(2).multiply(c, mc).multiply(mu, mc), mc) - .add(BigDecimal.valueOf(3).multiply(d, mc).multiply(mu2, mc), mc) - .subtract(BigDecimal.valueOf(4).multiply(e, mc).multiply(mu3, mc), mc); - - BigDecimal C = c.subtract(BigDecimal.valueOf(3).multiply(d, mc).multiply(mu, mc), mc) - .add(BigDecimal.valueOf(6).multiply(e, mc).multiply(mu2, mc), mc); - - BigDecimal D = d.subtract(BigDecimal.valueOf(4).multiply(e, mc).multiply(mu, mc), mc); - - BigDecimal E = e; - - return new BigDecimal[]{A, B, C, D, E}; - } - - - /** - * 计算R² - */ - private static BigDecimal calculateRSquared(List data, - List coefficients, - BigDecimal meanY) { - BigDecimal ssTot = BigDecimal.ZERO; - BigDecimal ssRes = BigDecimal.ZERO; - - for (OsmoticPressDetailVo vo : data) { - BigDecimal x = vo.getRz(); - BigDecimal y = vo.getValue(); - BigDecimal yPredicted = predictWithCoefficients(x, coefficients); - - BigDecimal diffActual = y.subtract(meanY); - ssTot = ssTot.add(diffActual.multiply(diffActual)); - - BigDecimal diffResidual = y.subtract(yPredicted); - ssRes = ssRes.add(diffResidual.multiply(diffResidual)); - } - - if (ssTot.compareTo(BigDecimal.ZERO) == 0) { - return BigDecimal.ONE; // 总平方和为0,拟合完美 - } - return BigDecimal.ONE.subtract(ssRes.divide(ssTot, MathContext.DECIMAL128), MathContext.DECIMAL128); - } - - /** - * 检查所有数据点的x值是否相同 - */ - private static boolean checkAllXSame(List data) { - if (data.isEmpty()) return false; - - BigDecimal firstX = data.get(0).getRz(); - for (OsmoticPressDetailVo vo : data) { - if (vo.getRz().compareTo(firstX) != 0) { - return false; - } - } - return true; - } - - /** - * 计算y值的平均值 - */ - private static BigDecimal calculateMeanY(List data) { - BigDecimal sum = BigDecimal.ZERO; - for (OsmoticPressDetailVo vo : data) { - sum = sum.add(vo.getValue()); - } - return sum.divide(new BigDecimal(data.size()), MathContext.DECIMAL128); - } - - /** - * 生成回归方程字符串(使用数学符号表示) - */ - public static String generateEquationString(int order, List coefficients) { - StringBuilder sb = new StringBuilder("y = "); - - for (int i = 0; i < coefficients.size(); i++) { - BigDecimal coeff = coefficients.get(i); - if (coeff.compareTo(BigDecimal.ZERO) == 0) { - continue; - } - - // 处理符号 - if (i > 0) { - if (coeff.compareTo(BigDecimal.ZERO) > 0) { - sb.append(" + "); - } else { - sb.append(" - "); - coeff = coeff.abs(); - } - } - - // 处理系数 - if (i == 0 || coeff.compareTo(BigDecimal.ONE) != 0) { - // 格式化系数,避免科学计数法 - String coeffStr = coeff.toPlainString(); - // 去除不必要的尾随零 - if (coeffStr.contains(".")) { - coeffStr = coeffStr.replaceAll("0+$", "").replaceAll("\\.$", ""); - } - sb.append(coeffStr); - } - - // 处理x的幂次 - if (i > 0) { - sb.append("x"); - if (i > 1) { - // 使用Unicode上标数字 - sb.append(getSuperscript(i)); - } - } - } - - return sb.toString(); - } - - /** - * 获取数字的Unicode上标表示 - */ - private static String getSuperscript(int number) { - String numStr = String.valueOf(number); - StringBuilder superscript = new StringBuilder(); - for (char c : numStr.toCharArray()) { - switch (c) { - case '0': superscript.append('⁰'); break; - case '1': superscript.append('¹'); break; - case '2': superscript.append('²'); break; - case '3': superscript.append('³'); break; - case '4': superscript.append('⁴'); break; - case '5': superscript.append('⁵'); break; - case '6': superscript.append('⁶'); break; - case '7': superscript.append('⁷'); break; - case '8': superscript.append('⁸'); break; - case '9': superscript.append('⁹'); break; - default: superscript.append(c); - } - } - return superscript.toString(); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/util/RegressionEquationFormatter.java b/src/main/java/com/gunshi/project/hsz/util/RegressionEquationFormatter.java deleted file mode 100644 index fe7e38d..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/RegressionEquationFormatter.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.gunshi.project.hsz.util; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * 回归方程格式化工具类 - */ -public class RegressionEquationFormatter { - - /** - * 格式化回归方程,保留小数点后指定有效小数位数(四舍五入) - * @param equation 原始方程字符串 - * @param decimalDigits 小数点后有效小数位数 - * @return 格式化后的方程字符串 - */ - public static String formatEquation(String equation, int decimalDigits) { - if (equation == null || equation.trim().isEmpty()) { - return equation; - } - - // 使用正则表达式匹配数字 - String regex = "-?\\d+\\.\\d+"; - Pattern pattern = Pattern.compile(regex); - Matcher matcher = pattern.matcher(equation); - - StringBuffer result = new StringBuffer(); - while (matcher.find()) { - String numberStr = matcher.group(); - try { - // 截取小数点后指定位数,进行四舍五入 - String formatted = roundDecimal(numberStr, decimalDigits); - matcher.appendReplacement(result, formatted); - } catch (Exception e) { - // 如果处理失败,保留原数字 - matcher.appendReplacement(result, numberStr); - } - } - matcher.appendTail(result); - - return result.toString(); - } - - /** - * 截取小数点后指定位数,进行四舍五入 - */ - private static String roundDecimal(String numberStr, int decimalDigits) { - boolean isNegative = numberStr.startsWith("-"); - if (isNegative) { - numberStr = numberStr.substring(1); - } - - // 使用BigDecimal进行精确的四舍五入 - BigDecimal bd = new BigDecimal(numberStr); - bd = bd.setScale(decimalDigits, RoundingMode.HALF_UP); - - // 转换为字符串 - String result = bd.toPlainString(); - - // 确保显示所有小数位(即使末尾是0) - if (result.contains(".")) { - String[] parts = result.split("\\."); - String integerPart = parts[0]; - String decimalPart = parts[1]; - - // 如果小数部分长度不足,补0 - while (decimalPart.length() < decimalDigits) { - decimalPart += "0"; - } - result = integerPart + "." + decimalPart; - } - - return isNegative ? "-" + result : result; - } - - /** - * 格式化回归方程,默认保留小数点后4位有效小数(四舍五入) - * @param equation 原始方程字符串 - * @return 格式化后的方程字符串 - */ - public static String formatEquation(String equation) { - return formatEquation(equation, 4); - } - - /** - * 格式化单个数字,保留小数点后指定有效小数位数(四舍五入) - * @param number 原始数字 - * @param decimalDigits 小数点后有效小数位数 - * @return 格式化后的字符串 - */ - public static String formatNumber(double number, int decimalDigits) { - String numberStr = String.valueOf(number); - return roundDecimal(numberStr, decimalDigits); - } - - /** - * 格式化单个数字,默认保留小数点后4位有效小数(四舍五入) - * @param number 原始数字 - * @return 格式化后的字符串 - */ - public static String formatNumber(double number) { - return formatNumber(number, 4); - } - - /** - * 格式化单个数字,保留小数点后指定有效小数位数(四舍五入) - * @param number 原始数字 - * @param decimalDigits 小数点后有效小数位数 - * @return 格式化后的字符串 - */ - public static String formatNumber(BigDecimal number, int decimalDigits) { - if (number == null) { - return "0"; - } - number = number.setScale(decimalDigits, RoundingMode.HALF_UP); - String result = number.toPlainString(); - - // 确保显示所有小数位(即使末尾是0) - if (result.contains(".")) { - String[] parts = result.split("\\."); - String integerPart = parts[0]; - String decimalPart = parts[1]; - - // 如果小数部分长度不足,补0 - while (decimalPart.length() < decimalDigits) { - decimalPart += "0"; - } - result = integerPart + "." + decimalPart; - } - - return result; - } - - /** - * 格式化单个数字,默认保留小数点后4位有效小数(四舍五入) - * @param number 原始数字 - * @return 格式化后的字符串 - */ - public static String formatNumber(BigDecimal number) { - return formatNumber(number, 4); - } -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/util/ResultJson.java b/src/main/java/com/gunshi/project/hsz/util/ResultJson.java deleted file mode 100644 index e033624..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/ResultJson.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.gunshi.project.hsz.util; - -import io.swagger.v3.oas.annotations.media.Schema; -import org.springframework.stereotype.Component; - -import java.io.Serializable; -import java.util.Date; - -@Schema(description = "数据传输对象") -@Component -@SuppressWarnings("all") -public class ResultJson implements Serializable { - - private static final long serialVersionUID = 1L; - /** - * 成功 - */ - public static final Integer SUCCESS = 200; - public static final String SUCCESS_MSG = "success"; - - /** - * 失败 - */ - public static final Integer FAIL = 900; - public static final String FAIL_MSG = "fail"; - - public static final Integer PARAM_ERROR = 400; // 失败、参数错误等 - public static final Integer UNAUTHORIZED = 401; // 用户验证失败,或者用户验证信息过期 - public static final Integer PERMISSION_DENIED = 403; // 没有权限 - public static final Integer NOT_FOUND = 404; // 未找到资源 - public static final Integer METHOD_NOT_ALLOWED = 405; // 不支持的类型 - public static final Integer NSUPPORTED_MEDIA_TYPE = 415; // 不支持的媒体 - public static final Integer NOT_ALLOWED = 405; // 请求太频繁,同一个用户(token)、同一个url、同样的请求参数,请求间隔小于0.5秒 - public static final Integer SERVER_ERROR = 500; // 后台错误 - public static final Integer SRC_TIMEOUT = 504; // 请求资源超时 - - - @Schema(description="数据消息") - private String msg; - - @Schema(description="传输状态码(200=成功;400=参数错误; 500=后端错误;900=失败)") - private Integer code; - - @Schema(description="传输数据") - private T data; - - @Schema(description="接口响应时间戳") - private String restm; // 接口响应时间戳。如果有缓存,则该时间表示最后接口响应时间 - - public static ResultJson error() { - return error(FAIL, "未知异常,请联系管理员"); - } - - public static ResultJson error(String msg) { - return error(FAIL, msg); - } - - public static ResultJson error(int code, String msg) { - ResultJson r = new ResultJson(); - r.setCode(code); - r.setMsg(msg); - r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); - return r; - } - - public static ResultJson error(int code, String msg, Object data) { - ResultJson r = new ResultJson(); - r.setCode(code); - r.setMsg(msg); - r.setData(data); - r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); - return r; - } - - public static ResultJson ok(Integer code, String msg) { - ResultJson r = new ResultJson(); - r.setMsg(msg); - r.setCode(code); - r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); - return r; - } - - public static ResultJson ok() { - ResultJson r = new ResultJson(); - r.setCode(SUCCESS); - r.setMsg(SUCCESS_MSG); - r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); - return r; - } - - public static ResultJson ok(Object data) { - ResultJson r = new ResultJson(); - r.setCode(SUCCESS); - r.setMsg(SUCCESS_MSG); - r.setData(data); - r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); - return r; - } - - public static ResultJson ok(Object data, String msg) { - ResultJson r = new ResultJson(); - r.setData(data); - r.setCode(SUCCESS); - r.setMsg(msg); - r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); - return r; - } - - public String getMsg() { - return msg; - } - - public void setMsg(String msg) { - this.msg = msg; - } - - public Integer getCode() { - return code; - } - - public void setCode(Integer code) { - this.code = code; - } - - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } - - public static long getSerialVersionUID() { - return serialVersionUID; - } - - public static Integer getSUCCESS() { - return SUCCESS; - } - - public static String getSuccessMsg() { - return SUCCESS_MSG; - } - - public static Integer getFAIL() { - return FAIL; - } - - public static String getFailMsg() { - return FAIL_MSG; - } - - public String getRestm() { - return restm; - } - - public void setRestm(String restm) { - this.restm = restm; - } - - @Override - public String toString() { - return "ResultJson{" + - "msg='" + msg + "'" + - ", code=" + code + - ", data=" + data + - ", restm=" + restm + - '}'; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/util/ServiceException.java b/src/main/java/com/gunshi/project/hsz/util/ServiceException.java deleted file mode 100644 index 4264632..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/ServiceException.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gunshi.project.hsz.util; - -/** - * 业务异常 - * - * @author ruoyi - */ -public final class ServiceException extends RuntimeException { - private static final long serialVersionUID = 1L; - - /** - * 错误码 - */ - private Integer code; - - /** - * 错误提示 - */ - private String message; - - /** - * 错误明细,内部调试错误 - *

- */ - private String detailMessage; - - /** - * 空构造方法,避免反序列化问题 - */ - public ServiceException() { - } - - public ServiceException(String message) { - this.message = message; - } - - public ServiceException(String message, Integer code) { - this.message = message; - this.code = code; - } - - public String getDetailMessage() { - return detailMessage; - } - - @Override - public String getMessage() { - return message; - } - - public Integer getCode() { - return code; - } - - public ServiceException setMessage(String message) { - this.message = message; - return this; - } - - public ServiceException setDetailMessage(String detailMessage) { - this.detailMessage = detailMessage; - return this; - } -} diff --git a/src/main/java/com/gunshi/project/hsz/util/excel/DefautExcelResult.java b/src/main/java/com/gunshi/project/hsz/util/excel/DefautExcelResult.java deleted file mode 100644 index a041cb7..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/excel/DefautExcelResult.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.gunshi.project.hsz.util.excel; - -import cn.hutool.core.util.StrUtil; -import lombok.Setter; - -import java.util.ArrayList; -import java.util.List; - -/** - * 默认excel返回对象 - * - * - */ -public class DefautExcelResult implements ExcelResult { - - /** - * 数据对象list - */ - @Setter - private List list; - - /** - * 错误信息列表 - */ - @Setter - private List errorList; - - public DefautExcelResult() { - this.list = new ArrayList<>(); - this.errorList = new ArrayList<>(); - } - - public DefautExcelResult(List list, List errorList) { - this.list = list; - this.errorList = errorList; - } - - public DefautExcelResult(ExcelResult excelResult) { - this.list = excelResult.getList(); - this.errorList = excelResult.getErrorList(); - } - - @Override - public List getList() { - return list; - } - - @Override - public List getErrorList() { - return errorList; - } - - /** - * 获取导入回执 - * - * @return 导入回执 - */ - @Override - public String getAnalysis() { - int successCount = list.size(); - int errorCount = errorList.size(); - if (successCount == 0) { - return "读取失败,未解析到数据"; - } else { - if (errorCount == 0) { - return StrUtil.format("恭喜您,全部读取成功!共{}条", successCount); - } else { - return ""; - } - } - } -} diff --git a/src/main/java/com/gunshi/project/hsz/util/excel/ExcelFillCellMergeStrategy.java b/src/main/java/com/gunshi/project/hsz/util/excel/ExcelFillCellMergeStrategy.java deleted file mode 100644 index d78c134..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/excel/ExcelFillCellMergeStrategy.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.gunshi.project.hsz.util.excel; - -import com.alibaba.excel.metadata.Head; -import com.alibaba.excel.metadata.data.WriteCellData; -import com.alibaba.excel.write.handler.CellWriteHandler; -import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; -import com.alibaba.excel.write.metadata.holder.WriteTableHolder; -import lombok.Data; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.util.CellRangeAddress; - -import java.util.List; - - -@Data -public class ExcelFillCellMergeStrategy implements CellWriteHandler { - /** - * 合并字段的下标,如第一到五列new int[]{0,1,2,3,4} - */ - private int[] mergeColumnIndex; - /** - * 从第几行开始合并,如果表头占两行,这个数字就是2 - */ - private int mergeRowIndex; - - - public ExcelFillCellMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex) { - this.mergeRowIndex = mergeRowIndex; - this.mergeColumnIndex = mergeColumnIndex; - } - - @Override - public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, - Head head, Integer integer, Integer integer1, Boolean aBoolean) { - - } - - @Override - public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, - Head head, Integer integer, Boolean aBoolean) { - - } - - - @Override - public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, - List> list, Cell cell, Head head, Integer integer, Boolean aBoolean) { - //当前行 - int curRowIndex = cell.getRowIndex(); - //当前列 - int curColIndex = cell.getColumnIndex(); - - if (curRowIndex > mergeRowIndex) { - for (int i = 0; i < mergeColumnIndex.length; i++) { - if (curColIndex == mergeColumnIndex[i]) { - mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); - break; - } - } - } - } - - private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) { - //获取当前行的当前列的数据和上一行的当前列列数据,通过上一行数据是否相同进行合并 - Object curData = cell.getCellTypeEnum() == CellType.STRING ? cell.getStringCellValue() : - cell.getNumericCellValue(); - Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); - Object preData = preCell.getCellTypeEnum() == CellType.STRING ? preCell.getStringCellValue() :preCell.getNumericCellValue(); - // 比较当前行的第一列的单元格与上一行是否相同,相同合并当前单元格与上一行 - if (curData.equals(preData)) { - Sheet sheet = writeSheetHolder.getSheet(); - List mergeRegions = sheet.getMergedRegions(); - boolean isMerged = false; - for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { - CellRangeAddress cellRangeAddr = mergeRegions.get(i); - // 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元 - if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { - sheet.removeMergedRegion(i); - cellRangeAddr.setLastRow(curRowIndex); - sheet.addMergedRegion(cellRangeAddr); - isMerged = true; - } - } - // 若上一个单元格未被合并,则新增合并单元 - if (!isMerged) { - CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, - curColIndex); - sheet.addMergedRegion(cellRangeAddress); - } - } - } -} - diff --git a/src/main/java/com/gunshi/project/hsz/util/excel/ExcelListener.java b/src/main/java/com/gunshi/project/hsz/util/excel/ExcelListener.java deleted file mode 100644 index dd8ad19..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/excel/ExcelListener.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.gunshi.project.hsz.util.excel; - -import com.alibaba.excel.read.listener.ReadListener; - -/** - * Excel 导入监听 - * - * @author Lion Li - */ -public interface ExcelListener extends ReadListener { - - ExcelResult getExcelResult(); - -} diff --git a/src/main/java/com/gunshi/project/hsz/util/excel/ExcelResult.java b/src/main/java/com/gunshi/project/hsz/util/excel/ExcelResult.java deleted file mode 100644 index dd4ee31..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/excel/ExcelResult.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gunshi.project.hsz.util.excel; - -import java.util.List; - -/** - * excel返回对象 - * - * @author Lion Li - */ -public interface ExcelResult { - - /** - * 对象列表 - */ - List getList(); - - /** - * 错误列表 - */ - List getErrorList(); - - /** - * 导入回执 - */ - String getAnalysis(); -} diff --git a/src/main/java/com/gunshi/project/hsz/util/excel/LengthValid.java b/src/main/java/com/gunshi/project/hsz/util/excel/LengthValid.java deleted file mode 100644 index 6bff79d..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/excel/LengthValid.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gunshi.project.hsz.util.excel; - -import java.lang.annotation.*; - -/** - * Description: - * Created by wanyan on 2024/8/19 - * - * @author wanyan - * @version 1.0 - */ -@Target(ElementType.FIELD) -@Retention(RetentionPolicy.RUNTIME) -@Inherited -public @interface LengthValid { - - int length() default 0; - - String msg() default ""; - -} - - diff --git a/src/main/java/com/gunshi/project/hsz/util/excel/VoteTitleHandler.java b/src/main/java/com/gunshi/project/hsz/util/excel/VoteTitleHandler.java deleted file mode 100644 index 0529d03..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/excel/VoteTitleHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.gunshi.project.hsz.util.excel; - -import com.alibaba.excel.metadata.Head; -import com.alibaba.excel.write.handler.CellWriteHandler; -import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; -import com.alibaba.excel.write.metadata.holder.WriteTableHolder; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import org.apache.poi.ss.usermodel.Row; -import org.springframework.util.PropertyPlaceholderHelper; - -import java.util.Date; -import java.util.List; -import java.util.Properties; - - -public class VoteTitleHandler implements CellWriteHandler { - - private String title; - - private String describe; - - private Date voteTime; - - PropertyPlaceholderHelper placeholderHelper = new PropertyPlaceholderHelper("${", "}"); - - public VoteTitleHandler(String title) { - this.title = title; - } - - @Override - public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, - Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) { - if (head != null) { - List headNameList = head.getHeadNameList(); - if (CollectionUtils.isNotEmpty(headNameList)) { - Properties properties = new Properties(); - properties.setProperty("title", title); - for (int i = 0; i < headNameList.size(); i++) { - headNameList.set(i, placeholderHelper.replacePlaceholders(headNameList.get(i), properties)); - } - } - } - } - -} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/util/spring/SpringUtils.java b/src/main/java/com/gunshi/project/hsz/util/spring/SpringUtils.java deleted file mode 100644 index 14e1b80..0000000 --- a/src/main/java/com/gunshi/project/hsz/util/spring/SpringUtils.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gunshi.project.hsz.util.spring; - -import cn.hutool.extra.spring.SpringUtil; -import org.springframework.aop.framework.AopContext; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.stereotype.Component; - -/** - * spring工具类 - * - * - */ -@Component -public final class SpringUtils extends SpringUtil { - - /** - * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true - * - * @param name - * @return boolean - */ - public static boolean containsBean(String name) { - return getBeanFactory().containsBean(name); - } - - /** - * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 - * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException) - * - * @param name - * @return boolean - */ - public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { - return getBeanFactory().isSingleton(name); - } - - /** - * @param name - * @return Class 注册对象的类型 - */ - public static Class getType(String name) throws NoSuchBeanDefinitionException { - return getBeanFactory().getType(name); - } - - /** - * 如果给定的bean名字在bean定义中有别名,则返回这些别名 - * - * @param name - */ - public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { - return getBeanFactory().getAliases(name); - } - - /** - * 获取aop代理对象 - * - * @param invoker - * @return - */ - @SuppressWarnings("unchecked") - public static T getAopProxy(T invoker) { - return (T) AopContext.currentProxy(); - } - -} diff --git a/src/main/java/com/gunshi/project/ss/Main.java b/src/main/java/com/gunshi/project/ss/Main.java new file mode 100644 index 0000000..a7f5b8d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/Main.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss; + +import com.github.jeffreyning.mybatisplus.conf.EnableMPP; +import com.gunshi.core.annotation.GunShiApplication; +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.servers.Server; +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.cache.annotation.EnableCaching; + +@OpenAPIDefinition( + servers = { + @Server( + url = "http://localhost:24305/gunshiApp/hsz", + description = "本地测试环境" + ), + @Server( + url = "http://local.gunshiiot.com:18083/gunshiApp/hsz", + description = "线上测试环境" + ) + } +) +@GunShiApplication +@MapperScan(basePackages = {"com.gunshi.**.mapper", "com.gunshi.**.model"}) +@Slf4j +@EnableMPP +@EnableCaching +public class Main { + public static void main(String[] args) { + SpringApplication.run(Main.class, args); + } +} diff --git a/src/main/java/com/gunshi/project/ss/config/MyE500UnknownExceptionResolver.java b/src/main/java/com/gunshi/project/ss/config/MyE500UnknownExceptionResolver.java new file mode 100644 index 0000000..acb0344 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/config/MyE500UnknownExceptionResolver.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.config; + +import com.gunshi.core.result.R; +import com.gunshi.core.result.exception.ressolver.E500UnknownExceptionResolver; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.web.bind.annotation.RestControllerAdvice; + + + +/** + * Description: + * Created by XuSan on 2024/7/10. + * + * @author XuSan + * @version 1.0 + */ +@RestControllerAdvice +@Order +@Slf4j +public class MyE500UnknownExceptionResolver extends E500UnknownExceptionResolver { + + public R resolve(Exception exception) { + log.error("系统未知异常,错误信息: " + exception.getMessage(), exception); + if (exception instanceof AccessDeniedException || exception.getMessage().contains("获取用户信息异常")) { + return R.error(405, "登录状态失效,请重新登录"); + } + return R.error(500, "系统未知异常,错误信息: " + exception.getMessage()); + } +} diff --git a/src/main/java/com/gunshi/project/ss/config/OpenApiConfig.java b/src/main/java/com/gunshi/project/ss/config/OpenApiConfig.java new file mode 100644 index 0000000..1948864 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/config/OpenApiConfig.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.config; + +import org.springdoc.core.models.GroupedOpenApi; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Description: + * Created by wanyan on 2024/7/8 + * + * @author wanyan + * @version 1.0 + */ +@Configuration +public class OpenApiConfig { + + @Bean + public GroupedOpenApi openApi() { + String[] packagesToScan = { + "com.gunshi.project.hsz.controller", + }; + return GroupedOpenApi.builder() + .group("hsz") + .packagesToScan(packagesToScan) + .build(); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/AbstractCommonFileController.java b/src/main/java/com/gunshi/project/ss/controller/AbstractCommonFileController.java new file mode 100644 index 0000000..6a94fe4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AbstractCommonFileController.java @@ -0,0 +1,101 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.GunShiCoreProperties; +import com.gunshi.core.result.R; +import com.gunshi.core.session.entity.SessionUser; +import com.gunshi.core.session.service.BaseSessionService; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.file.service.IFileService; +import com.gunshi.file.service.LoginFileService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.multipart.MultipartFile; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-03-12 + */ +public abstract class AbstractCommonFileController implements ICommonFileController { + + @Override + public R uploadSingle(MultipartFile file, String groupId, String businessType, Long userId, HttpServletRequest request) throws Exception { + return ICommonFileController.super.uploadSingle(file, getGroupId(), getBusinessType(), userId, request); + } + + /** + * 单个文件上传 + * + * @param file 文件 + * @param userId 上传者userId + */ + @Operation(summary = "单个文件上传,不需要groupId和businessType") + @PostMapping(path = "/file/upload/singleSimple", consumes = "multipart/form-data") + @Override + public R uploadSingle( + @Parameter(description = "文件") @RequestPart("file") MultipartFile file, + @Parameter(description = "上传者用户id", hidden = true) @RequestParam(value = "userId", required = false) Long userId, + @Parameter(hidden = true) HttpServletRequest request) throws Exception { + + if (userId == null) { + SessionUser sessionUser = checkLogin(request); + if (sessionUser == null) { + return R.error(400, "未登录", null); + } + userId = sessionUser.getUserId(); + } + + FileDescriptor fd = new FileDescriptor(); + fd.setBusinessType(getBusinessType()); + fd.setGroupId(getGroupId()); + fd.setUserId(userId); + fd.setAccessGroup(getService().getAccessGroup()); + fd.setFilePath(generateFilePath(getProperty().getAppCode(), getBusinessType(), userId, getGroupId(), file.getOriginalFilename())); + fd.setFileName(file.getOriginalFilename()); + fd.setFileLength(file.getSize()); + + getService().upload(fd, file.getInputStream()); + + return R.ok(fd); + } + + @Override + public String getBusinessType() { + return "common"; + } + + @Autowired + private LoginFileService service; + + @Autowired + private GunShiCoreProperties properties; + + @Autowired + private BaseSessionService sessionService; + + @Override + public IFileService getService() { + return service; + } + + @Override + public SessionUser checkLogin(HttpServletRequest request) { +// String token = sessionService.getToken(request); +// return sessionService.getSessionUser(token); + SessionUser user = new SessionUser(); + user.setUserId(1L); + return user; + } + + @Override + public GunShiCoreProperties getProperty() { + return properties; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/AlarmSetController.java b/src/main/java/com/gunshi/project/ss/controller/AlarmSetController.java new file mode 100644 index 0000000..f1831f9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AlarmSetController.java @@ -0,0 +1,81 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.entity.so.AlarmSetPageSo; +import com.gunshi.project.ss.model.AlarmSet; +import com.gunshi.project.ss.service.AlarmSetService; +import com.gunshi.project.ss.timetask.AlarmTask; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "告警设置") +@RestController +@RequestMapping(value="/alarmSet") +public class AlarmSetController { + + @Autowired + private AlarmSetService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AlarmSet dto) { + boolean result = service.saveData(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AlarmSet dto) { + boolean result = service.updateInfo(dto); + //boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = service.removeById(id); + return R.ok(b); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody AlarmSetPageSo pageSo) { + return R.ok(service.queryPage(pageSo)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public List list(@RequestBody AlarmSetPageSo pageSo) { + List list = service.lambdaQuery().list(); + return list; + } + + @Autowired + private AlarmTask alarmTask; + + @GetMapping("/test") + public void test(){ + alarmTask.updateAlarmSet(); + } + + + @Operation(summary = "获取河道站点") + @GetMapping("/listStation") + public R> listStation(){ + return R.ok(service.listStation()); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/AppVersionRecordController.java b/src/main/java/com/gunshi/project/ss/controller/AppVersionRecordController.java new file mode 100644 index 0000000..11ebe84 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AppVersionRecordController.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.AppVersionRecord; +import com.gunshi.project.ss.service.AppVersionRecordService; +import com.ruoyi.common.config.RuoYiConfig; +import com.ruoyi.common.utils.file.FileUploadUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.HashMap; +import java.util.Map; + +/** + * 描述: APP版本记录 + * author: xusan + * date: 2024-11-12 10:14:50 + */ +@Tag(name = "APP版本记录") +@RestController +@RequestMapping(value="/appVersionRecord") +public class AppVersionRecordController { + + @Autowired + private AppVersionRecordService service; + + @PostMapping("/upload") + public R upload(@RequestParam("file") MultipartFile file, @RequestParam("version") String version, @RequestParam("versionDesc") String versionDesc) throws Exception + { + Map map = new HashMap<>(); + if (!file.isEmpty()) + { + String url = FileUploadUtils.upload(RuoYiConfig.getUploadPath(),file,null); + if (service.insertData(version,versionDesc,url)) + { + map.put("url", url); + return R.ok(map); + } + } + return R.error(400,"上传失败"); + } + + + + @Operation(summary = "最新记录") + @GetMapping("/latest") + public R latest() { + return R.ok(service.getLatest()); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AssessCategoryController.java b/src/main/java/com/gunshi/project/ss/controller/AssessCategoryController.java new file mode 100644 index 0000000..fdcbc78 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AssessCategoryController.java @@ -0,0 +1,56 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.AssessCategory; +import com.gunshi.project.ss.service.AssessCategoryService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 考核类目 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Tag(name = "考核类目") +@RestController +@RequestMapping(value="/assessCategory") +public class AssessCategoryController { + + @Autowired + private AssessCategoryService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AssessCategory dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AssessCategory dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().orderByAsc(AssessCategory::getOrderIndex).list()); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AssessIndicatorController.java b/src/main/java/com/gunshi/project/ss/controller/AssessIndicatorController.java new file mode 100644 index 0000000..65eb183 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AssessIndicatorController.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.dto.InspectItemDto; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.model.AssessIndicator; +import com.gunshi.project.ss.service.AssessIndicatorService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +/** + * 描述: 考核指标 + * author: xusan + * date: 2024-09-03 17:46:56 + */ +@Tag(name = "考核指标") +@RestController +@RequestMapping(value="/assessIndicator") +public class AssessIndicatorController { + + @Autowired + private AssessIndicatorService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AssessIndicator dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AssessIndicator dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "启停") + @PostMapping("/startStop") + public R startStop(@RequestBody InspectItemDto dto) { + return R.ok(service.startStop(dto)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated AttCctvBasePage page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "选择指标") + @PostMapping("/choose") + public R> choosePage(@RequestBody @Validated AttCctvBasePage page) { + return R.ok(service.choosePage(page)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AssessTaskController.java b/src/main/java/com/gunshi/project/ss/controller/AssessTaskController.java new file mode 100644 index 0000000..4c3f0bb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AssessTaskController.java @@ -0,0 +1,132 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.so.AssessTaskPageSo; +import com.gunshi.project.ss.entity.vo.AssessResultVo; +import com.gunshi.project.ss.model.AssessTask; +import com.gunshi.project.ss.service.AssessTaskService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * 描述: 考核任务 + * author: xusan + * date: 2024-09-05 14:19:04 + */ +@Tag(name = "考核任务") +@RestController +@RequestMapping(value="/assessTask") +public class AssessTaskController extends AbstractCommonFileController{ + + @Autowired + private AssessTaskService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AssessTask dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AssessTask dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "详情") + @GetMapping("/detail/{id}") + public R detail(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.detail(id)); + } + + @Operation(summary = "考核任务清单") + @PostMapping("/list/page") + public R> listPage(@Validated @RequestBody AssessTaskPageSo page) { + return R.ok(service.listPage(page)); + } + + @Operation(summary = "启动") + @GetMapping("/start/{id}") + public R start(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.start(id)); + } + + @Operation(summary = "我的待办") + @PostMapping("/myTodo/page") + public R> myTodo(@Validated @RequestBody AssessTaskPageSo page) { + return R.ok(service.myTodo(page)); + } + + @Operation(summary = "我的已办") + @PostMapping("/myDone/page") + public R> myDone(@Validated @RequestBody AssessTaskPageSo page) { + return R.ok(service.myDone(page)); + } + + @Operation(summary = "审核通过") + @GetMapping("/pass/{id}") + public R pass(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.pass(id)); + } + + @Operation(summary = "作废") + @GetMapping("/cancel/{id}") + public R cancel(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.cancel(id)); + } + + @Operation(summary = "驳回评分") + @GetMapping("/reject/{id}") + public R reject(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.reject(id)); + } + + @Operation(summary = "考核结果") + @GetMapping("/result/{id}") + public R> result(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.result(id)); + } + + @Operation(summary = "考核结果导出") + @GetMapping("/result/export") + public void resultExport(@RequestParam("id") @Parameter(description = "考核任务id") Long id, HttpServletResponse response) { + service.resultExport(id,response); + } + + @Operation(summary = "人员考核结果") + @PostMapping("/result/stat") + public R> resultStat(@Validated @RequestBody MonthRangeSo monthRangeSo) { + return R.ok(service.resultStat(monthRangeSo)); + } + + @Operation(summary = "等级统计") + @PostMapping("/level/stat") + public R> levelStat(@Validated @RequestBody MonthRangeSo monthRangeSo) { + return R.ok(service.levelStat(monthRangeSo)); + } + + @Override + public String getGroupId() { + return "assessTask"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AssessTeamRatingController.java b/src/main/java/com/gunshi/project/ss/controller/AssessTeamRatingController.java new file mode 100644 index 0000000..d61971e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AssessTeamRatingController.java @@ -0,0 +1,82 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.so.AssessTaskPageSo; +import com.gunshi.project.ss.entity.vo.AssessRatingVo; +import com.gunshi.project.ss.entity.vo.AssessRectifyVo; +import com.gunshi.project.ss.entity.vo.AssessScoreVo; +import com.gunshi.project.ss.model.AssessTeamRating; +import com.gunshi.project.ss.service.AssessTeamRatingService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * 描述: 考核评分详情 + * author: xusan + * date: 2024-09-05 14:20:04 + */ +@Tag(name = "考核评分详情") +@RestController +@RequestMapping(value="/assessTeamRating") +public class AssessTeamRatingController extends AbstractCommonFileController{ + + @Autowired + private AssessTeamRatingService service; + + + @Operation(summary = "完成评分") + @PostMapping("/score") + public R score(@Validated @RequestBody AssessScoreVo vo) { + return R.ok(service.score(vo)); + } + + @Operation(summary = "保存评分") + @PostMapping("/saveScore") + public R saveScore(@Validated @RequestBody AssessScoreVo vo) { + return R.ok(service.saveScore(vo)); + } + + @Operation(summary = "我的待办/已办-查看评分详情") + @GetMapping("/do/detail/{teamId}") + public R> doDetail(@Schema(name = "teamId") @PathVariable("teamId") Long teamId) { + return R.ok(service.doDetail(teamId)); + } + + @Operation(summary = "考核任务清单-查看评分详情") + @GetMapping("/scoreDetail/{objectId}") + public R>> scoreDetail(@Schema(name = "objectId") @PathVariable("objectId") Long objectId) { + return R.ok(service.scoreDetail(objectId)); + } + + @Operation(summary = "考核问题整改") + @PostMapping("/list/page") + public R> listPage(@Validated @RequestBody AssessTaskPageSo page) { + return R.ok(service.listPage(page)); + } + + @Operation(summary = "整改") + @PostMapping("/rectify") + public R rectify(@Validated @RequestBody AssessTeamRating rating) { + return R.ok(service.rectify(rating)); + } + + @Operation(summary = "整改统计") + @PostMapping("/rectify/stat") + public R> rectifyStat(@Validated @RequestBody MonthRangeSo monthRangeSo) { + return R.ok(service.rectifyStat(monthRangeSo)); + } + + @Override + public String getGroupId() { + return "assessTeamRating"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AssessTemplateController.java b/src/main/java/com/gunshi/project/ss/controller/AssessTemplateController.java new file mode 100644 index 0000000..ebeb059 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AssessTemplateController.java @@ -0,0 +1,82 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.dto.InspectItemDto; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.model.AssessIndicator; +import com.gunshi.project.ss.model.AssessTemplate; +import com.gunshi.project.ss.service.AssessTemplateService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +/** + * 描述: 考核模板 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Tag(name = "考核模板") +@RestController +@RequestMapping(value="/assessTemplate") +public class AssessTemplateController { + + @Autowired + private AssessTemplateService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AssessTemplate dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AssessTemplate dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "启停") + @PostMapping("/startStop") + public R startStop(@RequestBody InspectItemDto dto) { + return R.ok(service.startStop(dto)); + } + + @Operation(summary = "列表") + @PostMapping("/listByType/{templateFreq}") + public R> listByType(@Schema(name = "templateFreq") @PathVariable("templateFreq") Integer templateFreq) { + return R.ok(service.listByType(templateFreq)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated AttCctvBasePage page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "根据模板id查询模板详情") + @GetMapping("/detail/{id}") + public R detail(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.getById(id)); + } + + @Operation(summary = "根据模板id查询关联的指标") + @GetMapping("/queryIndicators/{id}") + public R> queryIndicators(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.queryIndicators(id)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttCctvBaseController.java b/src/main/java/com/gunshi/project/ss/controller/AttCctvBaseController.java new file mode 100644 index 0000000..0d29279 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttCctvBaseController.java @@ -0,0 +1,192 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.entity.vo.CctvControlVo; +import com.gunshi.project.ss.model.AttCctvBase; +import com.gunshi.project.ss.model.CctvBMenu; +import com.gunshi.project.ss.service.AttCctvBaseService; +import com.gunshi.project.ss.service.CctvBMenuService; +import com.gunshi.project.ss.util.OkHttpUtil; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 视频基本信息表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "视频基本信息表") +@RestController +@RequestMapping(value="/attCctvBase") +public class AttCctvBaseController { + + @Autowired + private AttCctvBaseService service; + + @Autowired + private CctvBMenuService menuService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttCctvBase dto) { + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + if (StringUtils.isNotBlank(dto.getName()) && service.lambdaQuery().eq(AttCctvBase::getName,dto.getName()) + .count() > 0){ + throw new IllegalArgumentException("当前名称已存在"); + } + if (Objects.nonNull(dto.getMenuId()) && menuService.lambdaQuery().eq(CctvBMenu::getId,dto.getMenuId()) + .count() == 0 + ){ + throw new IllegalArgumentException("当前视频点目录不存在"); + } + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttCctvBase dto) { + + if (Objects.isNull(service.getById(dto.getId()))){ + throw new RuntimeException("当前数据不存在"); + } + if (StringUtils.isNotBlank(dto.getName()) && service.lambdaQuery().eq(AttCctvBase::getName,dto.getName()) + .ne(AttCctvBase::getId,dto.getId()) + .count() > 0){ + throw new IllegalArgumentException("当前名称已存在"); + } + + if (Objects.nonNull(dto.getMenuId()) && menuService.lambdaQuery().eq(CctvBMenu::getId,dto.getMenuId()) + .count() == 0 + ){ + throw new IllegalArgumentException("当前视频点目录不存在"); + } + dto.setCreateTime(null); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))){ + throw new RuntimeException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List res = service.queryList(); + //没时间只能默认为离线 + for (AttCctvBase re : res) { + re.setStatus(0); + } + return R.ok(res); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated AttCctvBasePage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + if (ObjectUtils.isNotNull(page.getCode())) { + query.like(AttCctvBase::getIndexCode, page.getCode()); + } + if (ObjectUtils.isNotNull(page.getMenuId())) { + query.eq(AttCctvBase::getMenuId, page.getMenuId()); + } + if (ObjectUtils.isNotNull(page.getName())) { + query.like(AttCctvBase::getName, page.getName()); + } + if (ObjectUtils.isNotNull(page.getType())) { + query.eq(AttCctvBase::getType, Integer.valueOf(page.getType())); + } + query.orderByDesc(AttCctvBase::getCreateTime); + Page basePage = service.page(page.getPageSo().toPage(), query); + List records = basePage.getRecords(); + if (CollectionUtils.isNotEmpty(records)){ + List list = menuService.list(); + if (CollectionUtils.isNotEmpty(list)){ + Map> listMap = list.stream(). + collect(Collectors.groupingBy(CctvBMenu::getId, Collectors.mapping(CctvBMenu::getName, Collectors.toList()))); + + records.forEach(item -> { + if (Objects.nonNull(item.getMenuId())){ + item.setMenuName(listMap.get(item.getMenuId()).getFirst()); + } + }); + } + basePage.setRecords(records); + } + return R.ok(basePage); + } + + @Operation(summary = "获取预览地址") + @GetMapping("/preview/{indexCode}") + public R preview(@PathVariable("indexCode") String indexCode) { + String api = "http://10.42.6.68:7000/liveAddressLimited?cameraIndexCode=%s&protocol=ws&token=111"; + OkHttpClient client = OkHttpUtil.build(); + String ret = null; + try { + Response resp = client.newCall(new Request.Builder().url(String.format(api, indexCode)).build()).execute(); + String respStr = resp.body().string(); + ObjectMapper om = new ObjectMapper(); + Map map = om.readValue(respStr, Map.class); + ret = map.get("data").toString(); + } catch (IOException e) { + throw new RuntimeException(e); + } + return R.ok(ret); + } + + @Operation(summary = "云台控制") + @PostMapping("/control") + public R control(@RequestBody CctvControlVo vo) { + String indexCode = vo.getIndexCode(); + Integer action = vo.getAction(); + Integer speed = vo.getSpeed(); + String command = vo.getCommand(); + String api = "http://10.42.6.68:7000/controlling?cameraIndexCode="+indexCode+"&action="+action+"&speed="+speed+"&command="+command+"&token=111"; + OkHttpClient client = OkHttpUtil.build(); + String ret = null; + try { + Response resp = client.newCall(new Request.Builder().url(api).build()).execute(); + ret = resp.body().string(); + } catch (IOException e) { + throw new RuntimeException(e); + } + return R.ok(ret); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttDamBaseController.java b/src/main/java/com/gunshi/project/ss/controller/AttDamBaseController.java new file mode 100644 index 0000000..7f807db --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttDamBaseController.java @@ -0,0 +1,139 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.GeneralDataPage; +import com.gunshi.project.ss.model.AttDamBase; +import com.gunshi.project.ss.service.AttDamBaseService; +import com.gunshi.project.ss.service.AttResBaseService; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 大坝表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "大坝表") +@RestController +@RequestMapping(value="/attDamBase") +public class AttDamBaseController extends AbstractCommonFileController{ + + @Autowired + private AttDamBaseService service; + + @Autowired + private FileAssociationsService fileService; + + @Autowired + private AttResBaseService resService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttDamBase dto) { + if (StringUtils.isNotBlank(dto.getResCode()) && Objects.isNull(resService.getById(dto.getResCode()))){ + throw new RuntimeException("当前水库不存在"); + } + dto.setDamCode(IdWorker.get32UUID()); + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getDamCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttDamBase dto) { + if (StringUtils.isNotBlank(dto.getResCode()) && Objects.isNull(resService.getById(dto.getResCode()))){ + throw new RuntimeException("当前水库不存在"); + } + if (Objects.isNull(service.getById(dto.getDamCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getDamCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = service.removeById(id); + if (data){ + fileService.deleteFile(getGroupId(),id.toString()); + } + return R.ok(data); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.lambdaQuery().list(); + for (AttDamBase attDamBase : list) { + attDamBase.setFiles(fileService.getFiles(getGroupId(), attDamBase.getDamCode())); + } + return R.ok(list); + } + + @Operation(summary = "获取主副坝,拦洪坝信息") + @GetMapping("/info") + public R> info(@Schema(name = "isMain",description = "是否主坝(0否 1是 2拦洪坝)") @RequestParam(name = "isMain") Integer isMain) { + List list = service.lambdaQuery().eq(AttDamBase::getIsMain, isMain).list(); + for (AttDamBase attDamBase : list) { + attDamBase.setFiles(fileService.getFiles(getGroupId(), attDamBase.getDamCode())); + } + return R.ok(list); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated GeneralDataPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + if (ObjectUtils.isNotNull(page.getCode())){ + query.like(AttDamBase::getDamCode, page.getCode()); + } + if (ObjectUtils.isNotNull(page.getName())){ + query.like(AttDamBase::getDamName, page.getName()); + } + return R.ok(service.page(page.getPageSo().toPage(),query)); + } + @Operation(summary = "查看详情") + @GetMapping("/get/{id}") + public R page(@PathVariable("id") Serializable id) { + AttDamBase data = service.getById(id); + if (Objects.nonNull(data)){ + data.setFiles(fileService.getFiles(getGroupId(),data.getDamCode())); + } + return R.ok(data); + } + + @Override + public String getGroupId() { + return "attDamBase"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttDamProfileController.java b/src/main/java/com/gunshi/project/ss/controller/AttDamProfileController.java new file mode 100644 index 0000000..71426f2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttDamProfileController.java @@ -0,0 +1,132 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.GeneralDataPage; +import com.gunshi.project.ss.entity.vo.ProfilePressTreeVo; +import com.gunshi.project.ss.model.AttDamProfile; +import com.gunshi.project.ss.service.AttDamProfileService; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 监测断面信息表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "监测断面信息表") +@RestController +@RequestMapping(value="/attDamProfile") +public class AttDamProfileController extends AbstractCommonFileController{ + + @Autowired + private AttDamProfileService service; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttDamProfile dto) { + if (Objects.nonNull(service.getById(dto.getProfileCode()))) { + throw new IllegalArgumentException("当前编号已存在"); + }else{ + dto.setProfileCode(String.valueOf(IdWorker.getId())); + } + if (StringUtils.isNotBlank(dto.getProfileName())){ + if (service.lambdaQuery().eq(AttDamProfile::getProfileName,dto.getProfileName()).count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + } + + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getProfileCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttDamProfile dto) { + if (Objects.isNull(service.getById(dto.getProfileCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + + if (StringUtils.isNotBlank(dto.getProfileName())){ + if (service.lambdaQuery().eq(AttDamProfile::getProfileName,dto.getProfileName()) + .ne(AttDamProfile::getProfileCode,dto.getProfileCode()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + } + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getProfileCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + + LambdaQueryWrapper wq = new LambdaQueryWrapper(); + wq.orderByAsc(AttDamProfile::getProfileCode); + List list = service.list(wq); + return R.ok(list); + } + + @Operation(summary = "断面渗压树") + @PostMapping("/tree") + public R> tree() { + return R.ok(service.tree()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated GeneralDataPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + if (ObjectUtils.isNotNull(page.getName())) { + query.like(AttDamProfile::getProfileName, page.getName()); + } + + Page data = service.page(page.getPageSo().toPage(), query); + data.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getProfileCode()) + )); + return R.ok(data); + } + + + @Override + public String getGroupId() { + return "AttDamProfile"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttGateBController.java b/src/main/java/com/gunshi/project/ss/controller/AttGateBController.java new file mode 100644 index 0000000..bcaa2de --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttGateBController.java @@ -0,0 +1,65 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.GateMonitorDataVo; +import com.gunshi.project.ss.model.AttGateB; +import com.gunshi.project.ss.service.AttGateBService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 水闸基本情况调查表 + * author: xusan + * date: 2024-09-26 10:44:06 + */ +@Tag(name = "水闸基本情况调查表") +@RestController +@RequestMapping(value="/attGateB") +public class AttGateBController { + + @Autowired + private AttGateBService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttGateB dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttGateB dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.queryList()); + } + + @Operation(summary = "监测数据") + @GetMapping("/data") + public R> dataList(@Schema(name = "gateCode",description = "水闸编码") @RequestParam("gateCode") String gateCode) { + return R.ok(service.dataList(gateCode)); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttGateValveController.java b/src/main/java/com/gunshi/project/ss/controller/AttGateValveController.java new file mode 100644 index 0000000..d470f51 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttGateValveController.java @@ -0,0 +1,124 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.GeneralDataPage; +import com.gunshi.project.ss.model.AttGateValve; +import com.gunshi.project.ss.service.AttGateValveService; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 闸阀信息表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "闸阀信息表") +@RestController +@RequestMapping(value="/attGateValve") +public class AttGateValveController extends AbstractCommonFileController{ + + @Autowired + private AttGateValveService service; + + @Autowired + private FileAssociationsService fileService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttGateValve dto) { + dto.setValveCode(IdWorker.get32UUID()); + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getValveCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttGateValve dto) { + if (Objects.isNull(service.getById(dto.getValveCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getValveCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = service.removeById(id); + if (data){ + fileService.deleteFile(getGroupId(),id.toString()); + } + return R.ok(data); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated GeneralDataPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + if (ObjectUtils.isNotNull(page.getCode())){ + query.like(AttGateValve::getValveCode, page.getCode()); + } + if (ObjectUtils.isNotNull(page.getName())){ + query.like(AttGateValve::getValveName, page.getName()); + } + query.orderByDesc(AttGateValve::getCreateTime); + return R.ok(service.page(page.getPageSo().toPage(),query)); + } + + @Operation(summary = "详情") + @GetMapping("/detail") + public R detail(@Schema(name = "valveCode",description = "闸阀编码") @RequestParam("valveCode") String valveCode) { + return R.ok(service.getById(valveCode)); + } + + @Operation(summary = "查看详情") + @GetMapping("/get/{id}") + public R getDetail(@PathVariable("id") Serializable id) { + AttGateValve data = service.getById(id); + if (Objects.nonNull(data)){ + data.setFiles(fileService.getFiles(getGroupId(),data.getValveCode())); + } + return R.ok(data); + } + + + @Override + public String getGroupId() { + return "attGateValve"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttMeaWeirController.java b/src/main/java/com/gunshi/project/ss/controller/AttMeaWeirController.java new file mode 100644 index 0000000..5dc4810 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttMeaWeirController.java @@ -0,0 +1,100 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.GeneralDataPage; +import com.gunshi.project.ss.model.AttMeaWeir; +import com.gunshi.project.ss.service.AttMeaWeirService; +import com.gunshi.project.ss.service.StAddvcdDService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 量水堰表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "量水堰表") +@RestController +@RequestMapping(value="/attMeaWeir") +public class AttMeaWeirController { + + @Autowired + private AttMeaWeirService service; + + @Autowired + private StAddvcdDService stAddvcdDService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttMeaWeir dto) { + dto.setWeirCode(IdWorker.get32UUID()); + dto.setCreateTime(new Date()); + if (StringUtils.isNotBlank(dto.getAdcd()) && Objects.isNull(stAddvcdDService.getById(dto.getAdcd()))){ + throw new IllegalArgumentException("当前行政区划不存在"); + } + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttMeaWeir dto) { + if (Objects.isNull(service.getById(dto.getWeirCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + + if (StringUtils.isNotBlank(dto.getAdcd()) && Objects.isNull(stAddvcdDService.getById(dto.getAdcd()))){ + throw new IllegalArgumentException("当前行政区划不存在"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated GeneralDataPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + if (ObjectUtils.isNotNull(page.getCode())) { + query.like(AttMeaWeir::getWeirCode, page.getCode()); + } + if (ObjectUtils.isNotNull(page.getName())) { + query.like(AttMeaWeir::getWeirName, page.getName()); + } + query.orderByDesc(AttMeaWeir::getCreateTime); + return R.ok(service.page(page.getPageSo().toPage(), query)); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttResBaseController.java b/src/main/java/com/gunshi/project/ss/controller/AttResBaseController.java new file mode 100644 index 0000000..4dfd024 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttResBaseController.java @@ -0,0 +1,136 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.AttResBase; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.service.AttResBaseService; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 水库基本信息表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库基本信息表") +@RestController +@RequestMapping(value="/attResBase") +public class AttResBaseController extends AbstractCommonFileController { + + @Autowired + private AttResBaseService service; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttResBase dto) { + if (Objects.nonNull(service.getById(dto.getResCode()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + if (StringUtils.isNotBlank(dto.getResName())){ + if (service.lambdaQuery().eq(AttResBase::getResName,dto.getResName()).count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + } + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getResCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttResBase dto) { + if (Objects.isNull(service.getById(dto.getResCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + + if (StringUtils.isNotBlank(dto.getResName())){ + if (service.lambdaQuery() + .eq(AttResBase::getResName,dto.getResName()) + .ne(AttResBase::getResCode,dto.getResCode()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + } + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getResCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = service.removeById(id); + if (data){ + fileService.deleteFile(getGroupId(),id.toString()); + } + return R.ok(data); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.lambdaQuery().list(); + if (CollectionUtils.isNotEmpty(list)){ + list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),o.getResCode()))); + } + return R.ok(list); + } + + @Operation(summary = "设计图纸和资料文件上传") + @PostMapping("/updateFile") + public R updateFile(@Validated(Update.class) @RequestBody AttResBase dto) { + if (Objects.isNull(service.getById(dto.getResCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + List files = dto.getFiles(); + fileService.saveFileNotDel(files, getGroupId(), dto.getResCode(),"1"); + return R.ok(dto); + } + + @Operation(summary = "设计图纸和资料列表") + @GetMapping("/fileList/{resCode}") + public R> list(@PathVariable("resCode") String resCode) { + List files = fileService.getFiles(getGroupId(), resCode); + if (CollectionUtils.isEmpty(files)){ + return R.ok(files); + } + List datas = files.stream().filter(o -> "1".equals(o.getType())) + .collect(Collectors.toList()); + return R.ok(datas); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + @Override + public String getGroupId() { + return "attResBase"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttResBuildingController.java b/src/main/java/com/gunshi/project/ss/controller/AttResBuildingController.java new file mode 100644 index 0000000..dd136c6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttResBuildingController.java @@ -0,0 +1,92 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.AttResBuilding; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.service.AttResBuildingService; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 描述: 水库基本信息表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库基本信息表") +@RestController +@RequestMapping(value="/attResBuilding") +public class AttResBuildingController extends AbstractCommonFileController { + + @Autowired + private AttResBuildingService attResBuildingService; + + @Autowired + private FileAssociationsService fileService; + + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttResBuilding dto) { +// if (Objects.isNull(attResBuildingService.getById(dto.getId()))) { +// throw new IllegalArgumentException("当前数据不存在"); +// } + boolean result = attResBuildingService.updateById(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getResCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @GetMapping("/info") + public R info() { + List list = attResBuildingService.list(); + + if (CollectionUtils.isEmpty(list)) { + throw new IllegalArgumentException("当前数据不存在"); + } + AttResBuilding byId = list.stream().findFirst().orElse(null); + //boolean result = attResBuildingService.updateById(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getResCode()); +// } + return R.ok(byId); + } + +// @Operation(summary = "设计图纸和资料文件上传") +// @PostMapping("/updateFile") +// public R updateFile(@Validated(Update.class) @RequestBody AttResBase dto) { +// if (Objects.isNull(service.getById(dto.getResCode()))) { +// throw new IllegalArgumentException("当前数据不存在"); +// } +// List files = dto.getFiles(); +// fileService.saveFileNotDel(files, getGroupId(), dto.getResCode(),"1"); +// return R.ok(dto); +// } + + @Operation(summary = "设计图纸和资料列表") + @GetMapping("/fileList/{resCode}") + public R> list(@PathVariable("resCode") String resCode) { + List files = fileService.getFiles(getGroupId(), resCode); + if (CollectionUtils.isEmpty(files)){ + return R.ok(files); + } + List datas = files.stream().filter(o -> "1".equals(o.getType())) + .collect(Collectors.toList()); + return R.ok(datas); + } + + @Override + public String getGroupId() { + return "attResBase"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttSpillwayBaseController.java b/src/main/java/com/gunshi/project/ss/controller/AttSpillwayBaseController.java new file mode 100644 index 0000000..380b0e3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttSpillwayBaseController.java @@ -0,0 +1,85 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.GeneralDataPage; +import com.gunshi.project.ss.model.AttSpillwayBase; +import com.gunshi.project.ss.service.AttSpillwayBaseService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 溢洪道 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "溢洪道") +@RestController +@RequestMapping(value="/attSpillwayBase") +public class AttSpillwayBaseController { + + @Autowired + private AttSpillwayBaseService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttSpillwayBase dto) { + dto.setCode(String.valueOf(IdWorker.getId())); + + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttSpillwayBase dto) { + if (Objects.isNull(service.getById(dto.getCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated GeneralDataPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getCode())){ + query.like(AttSpillwayBase::getCode, page.getCode()); + } + if (ObjectUtils.isNotNull(page.getName())){ + query.like(AttSpillwayBase::getName, page.getName()); + } + return R.ok(service.page(page.getPageSo().toPage(),query)); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/AttWaterItemController.java b/src/main/java/com/gunshi/project/ss/controller/AttWaterItemController.java new file mode 100644 index 0000000..9ee01d8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/AttWaterItemController.java @@ -0,0 +1,73 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.AttWaterItem; +import com.gunshi.project.ss.service.AttWaterItemService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.io.Serializable; +import java.util.List; +/** + * 描述: 水质整编展示项目表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水质整编展示项目表") +@RestController +@RequestMapping(value="/attWaterItem") +public class AttWaterItemController { + + @Autowired + private AttWaterItemService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody AttWaterItem dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody AttWaterItem dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + LambdaQueryWrapper wrapper = new QueryWrapper().lambda() + .eq(true, AttWaterItem::getIsEnable, "0") + .orderBy(true, true, AttWaterItem::getSort); + return R.ok(service.list(wrapper)); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/BroadcastStationController.java b/src/main/java/com/gunshi/project/ss/controller/BroadcastStationController.java new file mode 100644 index 0000000..407f1ef --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/BroadcastStationController.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.BroadcastStation; +import com.gunshi.project.ss.service.BroadcastStationService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: + * author: xusan + * date: 2024-09-25 10:12:34 + */ +@Tag(name = "广播站") +@RestController +@RequestMapping(value="/broadcastStation") +public class BroadcastStationController { + + @Autowired + private BroadcastStationService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody BroadcastStation dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody BroadcastStation dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().orderByAsc(BroadcastStation::getOrderIndex).list()); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/BroadcastTemplateController.java b/src/main/java/com/gunshi/project/ss/controller/BroadcastTemplateController.java new file mode 100644 index 0000000..51838bf --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/BroadcastTemplateController.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.BroadcastTemplate; +import com.gunshi.project.ss.service.BroadcastTemplateService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: + * author: xusan + * date: 2024-09-25 10:12:13 + */ +@Tag(name = "广播模板") +@RestController +@RequestMapping(value="/broadcastTemplate") +public class BroadcastTemplateController { + + @Autowired + private BroadcastTemplateService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody BroadcastTemplate dto) { + return R.ok(service.saveData(dto)); + } + + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().orderByAsc(BroadcastTemplate::getOrderIndex).list()); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/BroadcastWarnController.java b/src/main/java/com/gunshi/project/ss/controller/BroadcastWarnController.java new file mode 100644 index 0000000..bb2f14a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/BroadcastWarnController.java @@ -0,0 +1,45 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.BroadcastWarnPageSo; +import com.gunshi.project.ss.model.BroadcastWarn; +import com.gunshi.project.ss.service.BroadcastWarnService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +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: xusan + * date: 2024-09-25 10:12:51 + */ +@Tag(name = "广播预警") +@RestController +@RequestMapping(value="/broadcastWarn") +public class BroadcastWarnController { + + @Autowired + private BroadcastWarnService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody BroadcastWarn dto) { + return R.ok(service.saveData(dto)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@Validated @RequestBody BroadcastWarnPageSo page) { + return R.ok(service.pageQuery(page)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ByLogController.java b/src/main/java/com/gunshi/project/ss/controller/ByLogController.java new file mode 100644 index 0000000..e929d28 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ByLogController.java @@ -0,0 +1,112 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.dto.ExportCommonDto; +import com.gunshi.project.ss.entity.so.ByLogPageSo; +import com.gunshi.project.ss.model.ByLog; +import com.gunshi.project.ss.model.ByLogDetail; +import com.gunshi.project.ss.service.ByLogDetailService; +import com.gunshi.project.ss.service.ByLogService; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +@Tag(name = "白蚁-日志管理") +@RestController +@RequestMapping(value="/byLog") +public class ByLogController extends AbstractCommonFileController { + + + @Autowired + private ByLogService byLogService; + + @Autowired + private ByLogDetailService byLogDetailService; + + @Autowired + private FileAssociationsService fileService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ByLog dto) { + + boolean flag = byLogService.saveData(dto); + if (flag) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(flag? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ByLog dto) { + + boolean flag = byLogService.update(dto); + + if (flag) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(flag ? dto : null); + } + + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + ByLog byId = byLogService.getById(id); + if(Objects.isNull(byId)){ + throw new IllegalArgumentException("该日志不存在"); + } + //先删除细节 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ByLogDetail::getByLogId,id); + boolean remove = byLogDetailService.remove(queryWrapper); + //再删除主体 + if(remove){ + byLogService.removeById(id); + } + return R.ok(true); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody ByLogPageSo pageSo) { + Page res = byLogService.pageQuery(pageSo); + if(!CollectionUtils.isEmpty(res.getRecords())){ + res.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + )); + } + return R.ok(res); + } + + @Override + public String getGroupId() { + return "byLog"; + } + + @Operation(description = "日志导出") + @PostMapping("/export") + public void export(@RequestBody ExportCommonDto dto, HttpServletResponse response) { + List byLogs = byLogService.selectByIds(dto.getIds()); + + byLogService.exportToExcel(byLogs,response); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ByPlanController.java b/src/main/java/com/gunshi/project/ss/controller/ByPlanController.java new file mode 100644 index 0000000..a0bc7f1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ByPlanController.java @@ -0,0 +1,129 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ByPlanPageSo; +import com.gunshi.project.ss.model.ByPlan; +import com.gunshi.project.ss.model.ByPlanDetail; +import com.gunshi.project.ss.service.ByPlanDetailService; +import com.gunshi.project.ss.service.ByPlanService; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysUserMapper; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +@Tag(name = "白蚁-计划管理") +@RestController +@RequestMapping(value="/byPlan") +public class ByPlanController extends AbstractCommonFileController{ + + @Autowired + private FileAssociationsService fileService; + + @Autowired + private ByPlanService byPlanService; + + + @Autowired + private ByPlanDetailService byPlanDetailService; + + + @Autowired + private SysUserMapper sysUserMapper; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ByPlan dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ByPlan::getPlanId, dto.getPlanId()); + ByPlan one = byPlanService.getOne(queryWrapper); + if(Objects.nonNull(one)){ + throw new IllegalArgumentException("该计划编号已存在"); + } + dto.setId(IdWorker.getId()); + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(dto.getUserId())); + if(sysUser != null){ + dto.setUserName(sysUser.getNickName()); + } + List byPlanDetail = dto.getByPlanDetail(); + if(byPlanDetail == null || byPlanDetail.isEmpty()){ + throw new IllegalArgumentException("防止部位至少需要一条数据"); + } + byPlanDetail.forEach(detail -> { + detail.setId(IdWorker.getId()); + }); + boolean save = byPlanService.saveData(dto); + if (save) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(save ? dto : null); + } + + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ByPlan dto) { + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(dto.getUserId())); + if(sysUser != null){ + dto.setUserName(sysUser.getNickName()); + } + boolean flag = byPlanService.update(dto); + + if (flag) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(flag ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ByPlan::getId, id); + ByPlan one = byPlanService.getOne(queryWrapper); + if(Objects.isNull(one)){ + throw new IllegalArgumentException("该计划不存在"); + } + String planId = one.getPlanId(); + LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); + queryWrapperDetail.eq(ByPlanDetail::getPlanId, planId); + //先删细节 + boolean remove = byPlanDetailService.remove(queryWrapperDetail); + //再删主体 + byPlanService.remove(queryWrapper); + return R.ok(true); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody ByPlanPageSo byPlanPageSo) { + Page byPlanPage = byPlanService.pageQuery(byPlanPageSo); + if(!CollectionUtils.isEmpty(byPlanPage.getRecords())){ + byPlanPage.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + )); + } + return R.ok(byPlanPage); + } + + + @Override + public String getGroupId() { + return "byPlan"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/CctvBMenuController.java b/src/main/java/com/gunshi/project/ss/controller/CctvBMenuController.java new file mode 100644 index 0000000..1bf96f0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/CctvBMenuController.java @@ -0,0 +1,95 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.CctvBMenu; +import com.gunshi.project.ss.service.CctvBMenuService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 视频点目录 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "视频点目录") +@RestController +@RequestMapping(value="/cctvBMenu") +public class CctvBMenuController { + + @Autowired + private CctvBMenuService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody CctvBMenu dto) { + if (Objects.isNull(dto.getParentId())){ + dto.setParentId(0L); + } + if (StringUtils.isNotBlank(dto.getName()) && service.lambdaQuery().eq(CctvBMenu::getName,dto.getName()) + .count() > 0){ + throw new IllegalArgumentException("当前名称已存在"); + } + dto.setId(IdWorker.getId()); + if (Objects.isNull(dto.getOrderIndex())){ + CctvBMenu one = service.lambdaQuery() + .select(CctvBMenu::getOrderIndex) + .orderByDesc(CctvBMenu::getOrderIndex) + .one(); + if (Objects.nonNull(one)){ + dto.setOrderIndex(one.getOrderIndex() + 1); + } + } + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody CctvBMenu dto) { + if (StringUtils.isNotBlank(dto.getName()) && service.lambdaQuery().eq(CctvBMenu::getName,dto.getName()) + .ne(CctvBMenu::getId,dto.getId()) + .count() > 0){ + throw new IllegalArgumentException("当前名称已存在"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "树") + @GetMapping("/tree") + public R> tree() { + return R.ok(service.tree()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/CurrentFormAnalysisController.java b/src/main/java/com/gunshi/project/ss/controller/CurrentFormAnalysisController.java new file mode 100644 index 0000000..8158158 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/CurrentFormAnalysisController.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.RainfallAnalysisSo; +import com.gunshi.project.ss.entity.vo.RainfallAnalysisVo; +import com.gunshi.project.ss.service.CurrentFormAnalysisService; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +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; +import java.util.Map; + +/** + * TODO + * + * @ClassName CurrentFormAnalysisController + * @Author Huang Qianxiang + * @Date 2024/3/12 17:39 + */ +@RestController +@RequestMapping("/analysis") +@Tag(name = "防汛调度-当前形势分析-降雨分析") +public class CurrentFormAnalysisController { + + @Resource + private CurrentFormAnalysisService currentFormAnalysisService; + + @Post(path = "/rainfallAnalysis",summary = "当前形势分析-降雨分析") + public R>> rainfallAnalysis(@RequestBody RainfallAnalysisSo rainfallAnalysisSo){ + return R.ok(currentFormAnalysisService.rainfallAnalysis(rainfallAnalysisSo)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/DebugController.java b/src/main/java/com/gunshi/project/ss/controller/DebugController.java new file mode 100644 index 0000000..5676111 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/DebugController.java @@ -0,0 +1,88 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.timetask.JcskDataTask; +import com.gunshi.project.ss.timetask.PaDataTask; +import com.gunshi.project.ss.timetask.StWaterDataTask; +import com.gunshi.project.ss.timetask.WarningRuleTask; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.ParseException; + +@Tag(name = "后门") +@RestController +@RequestMapping(value="/debug") +public class DebugController { + + + @Autowired + private PaDataTask paDataTask; + + @Autowired + private JcskDataTask jcskDataTask; + + @Autowired + private WarningRuleTask warningRuleTask; + + @Autowired + private StWaterDataTask stWaterDataTask; + + @GetMapping("/syncWateData") + public String syncWateData() { + try { + stWaterDataTask.syncFlowToWater(); + Thread.sleep(1000); + stWaterDataTask.syncWaterToReorganize(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return "success"; + } + + @GetMapping("/syRegressionCaculate") + public String syRegressionCaculate(){ + try { + jcskDataTask.calculate(); + return "SUCCESS"; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @GetMapping("/warnRule") + public String warningRuleTast(){ + try { + warningRuleTask.warningRuleExecute(); + return "success"; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + + @GetMapping("/patask") + public String patask(){ + try { + paDataTask.PaDataCalc(); + return "成功"; + } catch (ParseException e) { + return "失败"; + } + } + + @Operation(description = "同步一次渗压、渗流、位移的数据") + @GetMapping("/syncJcskData") + public R syncJcskData(){ + jcskDataTask.syncGnssREightAmData(); + + jcskDataTask.syncSlREightAmData(); + + jcskDataTask.syncSyREightAmData(); + return R.ok("ok"); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/DeptempController.java b/src/main/java/com/gunshi/project/ss/controller/DeptempController.java new file mode 100644 index 0000000..c735211 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/DeptempController.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.controller; + +import com.github.pagehelper.PageInfo; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.service.DeptempService; +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.PageUtils; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * + */ +@Tag(name = "dept") +@RestController +@RequestMapping(value="/deptemp") +public class DeptempController { + + @Autowired + private DeptempService deptempService; + + @GetMapping("/deptlist") + public R> deptlist(SysDept dept) + { + List depts = deptempService.selectDeptList(dept); + return R.ok(depts); + } + + @GetMapping("/userlist") + public TableDataInfo userlist(SysUser user) + { + PageUtils.startPage(); + List list = deptempService.selectUserList(user); + return getDataTable(list); + } + + private TableDataInfo getDataTable(List list) + { + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setMsg("查询成功"); + rspData.setRows(list); + rspData.setTotal(new PageInfo(list).getTotal()); + return rspData; + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/DispatchRecordController.java b/src/main/java/com/gunshi/project/ss/controller/DispatchRecordController.java new file mode 100644 index 0000000..49bf0d5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/DispatchRecordController.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.DispatchRecordPageSo; +import com.gunshi.project.ss.model.DispatchRecord; +import com.gunshi.project.ss.service.DispatchRecordService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +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: xusan + * date: 2024-10-09 09:56:28 + */ +@Tag(name = "调度记录") +@RestController +@RequestMapping(value="/dispatchRecord") +public class DispatchRecordController extends AbstractCommonFileController{ + + @Autowired + private DispatchRecordService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody DispatchRecord dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody DispatchRecord dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @PostMapping("/del") + public R del(@RequestBody @Validated List ids) { + return R.ok(service.delData(ids)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated DispatchRecordPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "导出") + @PostMapping("/export") + public void export(@RequestBody @Validated DispatchRecordPageSo page, HttpServletResponse response) { + service.export(page,response); + } + + @Override + public String getGroupId() { + return "dispatchRecord"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/FileAssociationsController.java b/src/main/java/com/gunshi/project/ss/controller/FileAssociationsController.java new file mode 100644 index 0000000..27f38bb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/FileAssociationsController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 文件关联业务表 + * author: xusan + * date: 2024-07-17 10:09:40 + */ +@Tag(name = "文件关联业务表") +@RestController +@RequestMapping(value="/fileAssociations") +public class FileAssociationsController { + + @Autowired + private FileAssociationsService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody FileAssociations dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody FileAssociations dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastDispatchPlanController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastDispatchPlanController.java new file mode 100644 index 0000000..6ce2948 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastDispatchPlanController.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ForecastDispatchPlanPageSo; +import com.gunshi.project.ss.model.ForecastDispatchPlan; +import com.gunshi.project.ss.service.ForecastDispatchPlanService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + + +@Tag(name = "预报-调度方案管理") +@RestController +@RequestMapping(value="/forecastDispatchPlan") +public class ForecastDispatchPlanController { + + @Autowired + private ForecastDispatchPlanService forecastDispatchPlanService; + + @Operation(summary = "插入") + @PostMapping("/insert") + public R insert(@RequestBody ForecastDispatchPlan dto) { + return R.ok(forecastDispatchPlanService.saveData(dto)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ForecastDispatchPlanPageSo pageSo) { + return R.ok(forecastDispatchPlanService.pageDetail(pageSo)); + } + + @Operation(summary = "删除") + @PostMapping("/delete/{id}") + public R delete(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(forecastDispatchPlanService.deleteById(id)); + } + +// @Operation(summary = "导出") +// @PostMapping("/export") +// public void export(@RequestBody @Validated ForecastDispatchPlanPageSo page, HttpServletResponse response) { +// page.getPageSo().setPageSize(90000); +// Page forecastDispatchPlanPage = forecastDispatchPlanService.pageDetail(page); +// List records = forecastDispatchPlanPage.getRecords(); +// forecastDispatchPlanService.export(records,response); +// } + + @Operation(summary = "导出") + @PostMapping("/export") + public void export(@RequestParam("ids") List ids, HttpServletResponse response) { + List records = forecastDispatchPlanService.selectByIds(ids); + forecastDispatchPlanService.export(records,response); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastKController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastKController.java new file mode 100644 index 0000000..6bcb921 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastKController.java @@ -0,0 +1,102 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ForecastK; +import com.gunshi.project.ss.service.ForecastKService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 预报_前期影响雨量折减系数表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Tag(name = "预报_前期影响雨量折减系数表") +@RestController +@RequestMapping(value="/forecastK") +public class ForecastKController { + + @Autowired + private ForecastKService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ForecastK dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ForecastK dto) { + ForecastK oldK = service.getById(dto.getMonth()); + if (Objects.isNull(oldK)) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setChtm(oldK.getChtm()); + dto.setUpdateTime(new Date()); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated ForecastK forecastK) { + QueryWrapper wrapper = new QueryWrapper(); + if(StringUtils.isNotBlank(forecastK.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastK.getIsAsc()) ? false : forecastK.getIsAsc(), forecastK.getOrderField()); + } + return R.ok(service.list(wrapper)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ForecastK forecastK) { + QueryWrapper wrapper = new QueryWrapper(); + if(StringUtils.isNotBlank(forecastK.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastK.getIsAsc()) ? false : forecastK.getIsAsc(), forecastK.getOrderField()); + } + return R.ok(service.page(forecastK.getPageSo().toPage(), wrapper)); + } + + @Operation(summary = "批量保存") + @PostMapping("/saveBatch") + public R saveBatch(@RequestBody List dtos) { + boolean result = false; + if (CollectionUtils.isNotEmpty(dtos)) { + boolean remove = service.remove(new QueryWrapper<>()); + if (remove) { + result = service.saveBatch(dtos); + } + } + return R.ok(result); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastPPaRController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastPPaRController.java new file mode 100644 index 0000000..a69b49e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastPPaRController.java @@ -0,0 +1,86 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ForecastPPaR; +import com.gunshi.project.ss.service.ForecastPPaRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.io.Serializable; +import java.util.List; +/** + * 描述: 预报_降雨径流关系表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Tag(name = "预报_降雨径流关系表") +@RestController +@RequestMapping(value="/forecastPPaR") +public class ForecastPPaRController { + + @Autowired + private ForecastPPaRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ForecastPPaR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ForecastPPaR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List PPaRList = service.handleList(); + return R.ok(PPaRList); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ForecastPPaR forecastPPaR) { + QueryWrapper wrapper = new QueryWrapper(); + if(StringUtils.isNotBlank(forecastPPaR.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastPPaR.getIsAsc()) ? false : forecastPPaR.getIsAsc(), forecastPPaR.getOrderField()); + } + return R.ok(service.page(forecastPPaR.getPageSo().toPage(), wrapper)); + } + + @Operation(summary = "批量保存") + @PostMapping("/saveBatch") + public R saveBatch(@RequestBody List PPaRList) { + if (PPaRList.size() == 0) { + throw new IllegalArgumentException("数据格式不正确"); + } + boolean result = service.handleSaveBatch(PPaRList); + return R.ok(result); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastPaController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastPaController.java new file mode 100644 index 0000000..252f6c2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastPaController.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ForecastPa; +import com.gunshi.project.ss.service.ForecastPaService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 预报_土壤含水量表 + * author: cxw + * date: 2024-08-02 12:23:07 + */ +@Tag(name = "预报_土壤含水量表") +@RestController +@RequestMapping(value="/forecastPa") +public class ForecastPaController { + + @Autowired + private ForecastPaService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ForecastPa dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ForecastPa dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastProjectController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastProjectController.java new file mode 100644 index 0000000..d766302 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastProjectController.java @@ -0,0 +1,247 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import com.gunshi.project.ss.model.ForecastProject; +import com.gunshi.project.ss.model.ForecastResults; +import com.gunshi.project.ss.service.ForecastProjectService; +import com.gunshi.project.ss.service.ForecastResultsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.io.IOException; +import java.io.Serializable; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * 描述: 预报_预测方案管理表 + * author: cxw + * date: 2024-08-05 11:41:45 + */ +@Tag(name = "预报_预测方案管理表") +@RestController +@RequestMapping(value="/forecastProject") +@Slf4j +public class ForecastProjectController { + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Autowired + private ForecastProjectService service; + + @Autowired + private ForecastResultsService forecastResultsService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ForecastProject dto) { + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ForecastProject dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = service.removeById(id); + // 级联删除 + if(b){ + forecastResultsService.remove(new QueryWrapper().eq("project_id", id)); + } + return R.ok(b); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated ForecastProject forecastProject) { + QueryWrapper wrapper = new QueryWrapper() + .like(ObjectUtils.isNotNull(forecastProject.getName()), "name", forecastProject.getName()) + .like(ObjectUtils.isNotNull(forecastProject.getType()), "type", forecastProject.getType()) + .ge(ObjectUtils.isNotNull(forecastProject.getStartTm()), "forecast_tm", forecastProject.getStartTm()) + .le(ObjectUtils.isNotNull(forecastProject.getEndTm()), "forecast_tm", forecastProject.getEndTm()); + if(StringUtils.isNotBlank(forecastProject.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastProject.getIsAsc()) ? false : forecastProject.getIsAsc(), forecastProject.getOrderField()); + } + List list = service.list(wrapper); + if (list.size() > 0) { + for (ForecastProject fp : list) { + if (StringUtils.isNotEmpty(fp.getUserId()) && fp.getUserId().contains("_")) { + fp.setUserId(fp.getUserId().substring(fp.getUserId().indexOf("_") + 1)); + } + } + } + return R.ok(list); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ForecastProject forecastProject) { + QueryWrapper wrapper = new QueryWrapper() + .like(ObjectUtils.isNotNull(forecastProject.getName()), "name", forecastProject.getName()) + .like(ObjectUtils.isNotNull(forecastProject.getType()), "type", forecastProject.getType()) + .ge(ObjectUtils.isNotNull(forecastProject.getStartTm()), "forecast_tm", forecastProject.getStartTm()) + .le(ObjectUtils.isNotNull(forecastProject.getEndTm()), "forecast_tm", forecastProject.getEndTm()); + if(StringUtils.isNotBlank(forecastProject.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastProject.getIsAsc()) ? false : forecastProject.getIsAsc(), forecastProject.getOrderField()); + } + Page page = service.page(forecastProject.getPageSo().toPage(), wrapper); + if (page.getRecords().size() > 0) { + for (ForecastProject fp : page.getRecords()) { + if (StringUtils.isNotEmpty(fp.getUserId()) && fp.getUserId().contains("_")) { + fp.setUserId(fp.getUserId().substring(fp.getUserId().indexOf("_") + 1)); + } + } + } + return R.ok(page); + } + + + @Operation(summary = "保存人工交互洪水预报结果") + @PostMapping("/saveHumanForecastResults") + public R saveHumanForecastResults(@RequestBody @Validated ForecastProject forecastProject) throws ParseException { + if (CollectionUtils.isEmpty(forecastProject.getVoList())) { + throw new IllegalArgumentException("数据格式不正确"); + } + forecastProject.setId(IdWorker.getId()); + boolean result = service.save(forecastProject); + if (result) { + service.saveForecastResults(forecastProject); + } + return R.ok(result ? forecastProject : null); + } + + + @Operation(summary = "根据方案id查看方案洪水预报结果") + @GetMapping("/getForecastProjectResults") + public R getForecastProjectResults(@Schema(name = "projectId", description = "预测方案id") @RequestParam("projectId") String projectId) { + ForecastProject forecastProject = service.getById(projectId); + if (Objects.isNull(forecastProject)) { + throw new IllegalArgumentException("当前数据不存在"); + } + List resultList = forecastResultsService.list(new QueryWrapper().eq("project_id", projectId).orderBy(true, true, "tm")); + if (CollectionUtils.isNotEmpty(resultList)) { + List vos = resultList.stream() + .map(result -> { + ForecastResultVo vo = new ForecastResultVo(); + vo.setTm(sdf.format(result.getTm())); + vo.setYcRkQValue(result.getYcRkQValue()); + vo.setRealRkQValue(result.getRealRkQValue()); + vo.setYcCkQValue(result.getYcCkQValue()); + vo.setRealCkQValue(result.getRealCkQValue()); + vo.setYcSwHValue(result.getYcSwHValue()); + vo.setRealSwHValue(result.getRealSwHValue()); + BigDecimal ycSwHValue = result.getYcSwHValue() == null ? BigDecimal.ZERO : result.getYcSwHValue(); + BigDecimal realSwHValue = result.getRealSwHValue() == null ? BigDecimal.ZERO : result.getRealSwHValue(); + vo.setSwHDValue(ycSwHValue.subtract(realSwHValue));// 处理预测与实测水位差 + vo.setDrp(result.getDrp()); + vo.setIspreDrp(result.getIspreDrp()); + vo.setR(result.getR()); + vo.setFlLowLimLev(result.getFlLowLimLev()); + vo.setCurrentYdgdyjz(result.getCurrentYdgdyjz()); + vo.setPa(result.getPa()); + return vo; + }).collect(Collectors.toList()); + forecastProject.setVoList(vos); + forecastResultsService.handleVoList(forecastProject); + } + return R.ok(forecastProject); + } + + + @Operation(summary = "pdf导出") + @PostMapping("export") + public void export(@RequestParam("ids") List ids, HttpServletResponse response) { + try { + // 设置响应头 + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=\"forecast_reports.zip\""); + + // 创建ZIP输出流 + ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream()); + + + for (String projectId : ids) { + ForecastProject forecastProject = service.getById(projectId); + if (Objects.isNull(forecastProject)) { + throw new IllegalArgumentException("当前数据不存在"); + } + List resultList = forecastResultsService.list(new QueryWrapper().eq("project_id", projectId).orderBy(true, true, "tm")); + if (CollectionUtils.isNotEmpty(resultList)) { + List vos = resultList.stream() + .map(result -> { + ForecastResultVo vo = new ForecastResultVo(); + vo.setTm(sdf.format(result.getTm())); + vo.setYcRkQValue(result.getYcRkQValue()); + vo.setRealRkQValue(result.getRealRkQValue()); + vo.setYcCkQValue(result.getYcCkQValue()); + vo.setRealCkQValue(result.getRealCkQValue()); + vo.setYcSwHValue(result.getYcSwHValue()); + vo.setRealSwHValue(result.getRealSwHValue()); + BigDecimal ycSwHValue = result.getYcSwHValue() == null ? BigDecimal.ZERO : result.getYcSwHValue(); + BigDecimal realSwHValue = result.getRealSwHValue() == null ? BigDecimal.ZERO : result.getRealSwHValue(); + vo.setSwHDValue(ycSwHValue.subtract(realSwHValue));// 处理预测与实测水位差 + vo.setDrp(result.getDrp()); + vo.setIspreDrp(result.getIspreDrp()); + vo.setR(result.getR()); + vo.setFlLowLimLev(result.getFlLowLimLev()); + vo.setCurrentYdgdyjz(result.getCurrentYdgdyjz()); + vo.setPa(result.getPa()); + return vo; + }).collect(Collectors.toList()); + forecastProject.setVoList(vos); + forecastResultsService.handleVoList(forecastProject); + } + //进行pdf导出 + // 为每个项目生成PDF + String fileName = "预报报告_" + forecastProject.getName() + "_" + + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".pdf"; + // 添加到ZIP + zipOut.putNextEntry(new ZipEntry(fileName)); + service.generatePdf(forecastProject, zipOut); + zipOut.closeEntry(); + } + zipOut.finish(); + zipOut.close(); + } catch (IOException e) { + log.error("PDF导出失败", e); + throw new RuntimeException("导出失败: " + e.getMessage()); + } + + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastResultsController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastResultsController.java new file mode 100644 index 0000000..573eeb1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastResultsController.java @@ -0,0 +1,116 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import com.gunshi.project.ss.model.ForecastProject; +import com.gunshi.project.ss.model.ForecastResults; +import com.gunshi.project.ss.model.ForecastTask; +import com.gunshi.project.ss.service.ForecastResultsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.io.Serializable; +import java.math.BigDecimal; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 描述: 预报_预测结果表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Tag(name = "预报_预测结果表") +@RestController +@RequestMapping(value="/forecastResults") +public class ForecastResultsController { + + @Autowired + private ForecastResultsService service; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ForecastResults dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ForecastResults dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated ForecastResults forecastResults) { + QueryWrapper wrapper = new QueryWrapper(); + if(StringUtils.isNotBlank(forecastResults.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastResults.getIsAsc()) ? false : forecastResults.getIsAsc(), forecastResults.getOrderField()); + } + return R.ok(service.list(wrapper)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ForecastResults forecastResults) { + QueryWrapper wrapper = new QueryWrapper<>(); + if(StringUtils.isNotBlank(forecastResults.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastResults.getIsAsc()) ? false : forecastResults.getIsAsc(), forecastResults.getOrderField()); + } + return R.ok(service.page(forecastResults.getPageSo().toPage(), wrapper)); + } + + @Operation(summary = "获取人工交互洪水预报结果") + @PostMapping("/getHumanForecastResult") + public R getHumanForecastResult(@RequestBody ForecastTask forecastTask) { + ForecastProject forecastProject = new ForecastProject(); + List voList = service.getHumanForecastResult(forecastTask); + forecastProject.setType("2"); + forecastProject.setForecastTm(forecastTask.getForecastTime()); + forecastProject.setProjectTm(forecastTask.getNowTime()); + forecastProject.setStartTm(forecastTask.getStartTime()); + forecastProject.setEndTm(forecastTask.getEndTime()); + forecastProject.setForecastPeriod(forecastTask.getForecastPeriod()); + forecastProject.setForecastWarm(forecastTask.getForecastWarm()); + forecastProject.setVoList(voList); + if (CollectionUtils.isNotEmpty(voList)) { + service.handleVoList(forecastProject); + } + + //收集实际数据和 + List collect = voList.stream().filter(o -> { + return o.getRealRkQValue() != null; + }).collect(Collectors.toList()); + BigDecimal rkVValue = BigDecimal.ZERO; + for (ForecastResultVo entity : collect) { + rkVValue = rkVValue.add(entity.getRealRkQValue().multiply(new BigDecimal("3600"))); + } + // 转换为万m³ + rkVValue = rkVValue.divide(new BigDecimal("10000"), 2, BigDecimal.ROUND_HALF_UP); + forecastProject.setRkVValue(rkVValue); + return R.ok(forecastProject); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastTaskController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastTaskController.java new file mode 100644 index 0000000..67a22e1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastTaskController.java @@ -0,0 +1,122 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ForecastTask; +import com.gunshi.project.ss.schedule.TaskGroupHandler; +import com.gunshi.project.ss.service.ForecastTaskService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 预报_预测自动任务管理表 + * author: cxw + * date: 2024-08-05 11:41:45 + */ +@Tag(name = "预报_预测自动任务管理表") +@RestController +@RequestMapping(value="/forecastTask") +public class ForecastTaskController { + + @Autowired + private ForecastTaskService service; + + @Autowired + private TaskGroupHandler taskGroupHandler; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ForecastTask dto) { + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + if (result) { + taskGroupHandler.addCronJob(String.valueOf(dto.getId()), dto); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ForecastTask dto) { + ForecastTask oldTask = service.getById(dto.getId()); + if (Objects.isNull(oldTask)) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setChtm(oldTask.getChtm()); + dto.setUpdateTm(new Date()); + boolean result = service.updateById(dto); + if (result) { + // 先删除,再重新添加 + taskGroupHandler.removeCronJob(String.valueOf(dto.getId())); + taskGroupHandler.addCronJob(String.valueOf(dto.getId()), dto); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = service.removeById(id); + if (b) { + taskGroupHandler.removeCronJob((String) id); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated ForecastTask forecastTask) { + QueryWrapper wrapper = new QueryWrapper() + .in("status", "0", "1")// 只返回启用和暂停的 + .like(ObjectUtils.isNotNull(forecastTask.getName()), "name", forecastTask.getName()); + if(StringUtils.isNotBlank(forecastTask.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastTask.getIsAsc()) ? false : forecastTask.getIsAsc(), forecastTask.getOrderField()); + } + List list = service.list(wrapper); + if (list.size() > 0) { + for (ForecastTask task : list) { + if (StringUtils.isNotEmpty(task.getUserId()) && task.getUserId().contains("_")) { + task.setUserName(task.getUserId().substring(task.getUserId().indexOf("_") + 1)); + } + } + } + return R.ok(list); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ForecastTask forecastTask) { + QueryWrapper wrapper = new QueryWrapper() + .in("status", "0", "1")// 只返回启用和暂停的 + .like(ObjectUtils.isNotNull(forecastTask.getName()), "name", forecastTask.getName()); + if(StringUtils.isNotBlank(forecastTask.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastTask.getIsAsc()) ? false : forecastTask.getIsAsc(), forecastTask.getOrderField()); + } + Page page = service.page(forecastTask.getPageSo().toPage(), wrapper); + if (page.getRecords().size() > 0) { + for (ForecastTask task : page.getRecords()) { + if (StringUtils.isNotEmpty(task.getUserId()) && task.getUserId().contains("_")) { + task.setUserName(task.getUserId().substring(task.getUserId().indexOf("_") + 1)); + } + } + } + return R.ok(page); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastUController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastUController.java new file mode 100644 index 0000000..79e9037 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastUController.java @@ -0,0 +1,107 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ForecastU; +import com.gunshi.project.ss.service.ForecastUService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 预报_时段单位线表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Tag(name = "预报_时段单位线表") +@RestController +@RequestMapping(value="/forecastU") +public class ForecastUController { + + @Autowired + private ForecastUService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ForecastU dto) { + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ForecastU dto) { + ForecastU oldU = service.getById(dto.getId()); + if (Objects.isNull(oldU)) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setChtm(oldU.getChtm()); + dto.setUpdateTime(new Date()); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated ForecastU forecastU) { + QueryWrapper wrapper = new QueryWrapper(); + if(StringUtils.isNotBlank(forecastU.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastU.getIsAsc()) ? false : forecastU.getIsAsc(), forecastU.getOrderField()); + } + return R.ok(service.list(wrapper)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ForecastU forecastU) { + QueryWrapper wrapper = new QueryWrapper(); + if(StringUtils.isNotBlank(forecastU.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastU.getIsAsc()) ? false : forecastU.getIsAsc(), forecastU.getOrderField()); + } + return R.ok(service.page(forecastU.getPageSo().toPage(), wrapper)); + } + + @Operation(summary = "批量保存") + @PostMapping("/saveBatch") + public R saveBatch(@RequestBody List dtos) { + boolean result = false; + if (CollectionUtils.isNotEmpty(dtos)) { + boolean remove = service.remove(new QueryWrapper<>()); + if (remove) { + for (ForecastU u : dtos) { + u.setId(IdWorker.getId()); + } + result = service.saveBatch(dtos); + } + } + return R.ok(result); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ForecastUseparamController.java b/src/main/java/com/gunshi/project/ss/controller/ForecastUseparamController.java new file mode 100644 index 0000000..06456e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ForecastUseparamController.java @@ -0,0 +1,133 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ForecastU; +import com.gunshi.project.ss.model.ForecastUseparam; +import com.gunshi.project.ss.service.ForecastUService; +import com.gunshi.project.ss.service.ForecastUseparamService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 预报_通用参数管理 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Tag(name = "预报_通用参数管理") +@RestController +@RequestMapping(value="/forecastUseparam") +public class ForecastUseparamController { + + @Autowired + private ForecastUseparamService service; + + @Autowired + private ForecastUService forecastUService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ForecastUseparam dto) { + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ForecastUseparam dto) { + ForecastUseparam oldData = service.getById(dto.getId()); + if (Objects.isNull(oldData)) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setChtm(oldData.getChtm()); + dto.setUpdateTime(new Date()); + boolean result = service.updateById(dto); + // 修改计算单位线的参数时,需要重新计算一次 + if (result && (dto.getParamCode().equals("cymj") || dto.getParamCode().equals("hdc") || dto.getParamCode().equals("hdpj") || dto.getParamCode().equals("dt") || dto.getParamCode().equals("h")) && !dto.getParamValue().equals(oldData.getParamValue())) { + // 承雨面积areaF:"cymj", 河道长lengthL:"hdc", 河道坡降j:"hdpj", 时段∆t:"dt", h毫米净雨:"h" + QueryWrapper qw = new QueryWrapper().in("param_code", "cymj", "hdc", "hdpj", "dt", "h"); + List> uMaps = service.listMaps(qw); + Map uMap = uMaps.stream().collect(Collectors.toMap(map -> (String) map.get("param_code"), map -> (String) map.get("param_value"))); + if (uMap.containsKey("cymj") && StringUtils.isNotEmpty(uMap.get("cymj")) + && uMap.containsKey("hdc") && StringUtils.isNotEmpty(uMap.get("hdc")) + && uMap.containsKey("hdpj") && StringUtils.isNotEmpty(uMap.get("hdpj")) + && uMap.containsKey("dt") && StringUtils.isNotEmpty(uMap.get("dt"))) { + List uParam = service.calcU(new BigDecimal(uMap.get("cymj")), + new BigDecimal(uMap.get("hdc")), + new BigDecimal(uMap.get("hdpj")), + Double.valueOf(uMap.get("dt")), + StringUtils.isNotEmpty(uMap.get("h")) ? new BigDecimal(uMap.get("h")) : BigDecimal.ONE, StringUtils.isNotEmpty(uMap.get("swfq")) ? uMap.get("swfq") : "I"); + if (CollectionUtils.isNotEmpty(uParam)) { + forecastUService.remove(new UpdateWrapper<>()); + List uList = new ArrayList<>(); + Date date = new Date(); + for (BigDecimal u : uParam) { + ForecastU forecastU = new ForecastU(); + forecastU.setId(IdWorker.getId()); + forecastU.setUValue(u); + forecastU.setChtm(date); + forecastU.setUpdateTime(date); + uList.add(forecastU); + } + forecastUService.saveBatch(uList); + } + } + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated ForecastUseparam forecastUseparam) { + QueryWrapper wrapper = new QueryWrapper(); + if(StringUtils.isNotBlank(forecastUseparam.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastUseparam.getIsAsc()) ? false : forecastUseparam.getIsAsc(), forecastUseparam.getOrderField()); + } + return R.ok(service.list(wrapper)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ForecastUseparam forecastUseparam) { + QueryWrapper wrapper = new QueryWrapper(); + if(StringUtils.isNotBlank(forecastUseparam.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(forecastUseparam.getIsAsc()) ? false : forecastUseparam.getIsAsc(), forecastUseparam.getOrderField()); + } + return R.ok(service.page(forecastUseparam.getPageSo().toPage(), wrapper)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/GatePoreController.java b/src/main/java/com/gunshi/project/ss/controller/GatePoreController.java new file mode 100644 index 0000000..c01f476 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/GatePoreController.java @@ -0,0 +1,58 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.GatePore; +import com.gunshi.project.ss.service.GatePoreService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 闸孔信息表 + * author: xusan + * date: 2024-09-26 10:44:57 + */ +@Tag(name = "闸孔信息表") +@RestController +@RequestMapping(value="/gatePore") +public class GatePoreController { + + @Autowired + private GatePoreService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody GatePore dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody GatePore dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "通过stcd获取闸孔开度") + @GetMapping("/listByStcd") + public R> list(@Schema(name = "stcd",description = "测站编码") @RequestParam("stcd") String stcd) { + return R.ok(service.lambdaQuery().eq(GatePore::getStcd,stcd).orderByAsc(GatePore::getGateNumber).list()); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/GateValveCctvRelController.java b/src/main/java/com/gunshi/project/ss/controller/GateValveCctvRelController.java new file mode 100644 index 0000000..0aed90a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/GateValveCctvRelController.java @@ -0,0 +1,93 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.GateValveCctvRelPage; +import com.gunshi.project.ss.entity.vo.GateValveCctvRelVo; +import com.gunshi.project.ss.model.GateValveCctvRel; +import com.gunshi.project.ss.service.GateValveCctvRelService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 闸阀关联视频点 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "闸阀关联视频点") +@RestController +@RequestMapping(value="/gateValveCctvRel") +public class GateValveCctvRelController { + + @Autowired + private GateValveCctvRelService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class)@RequestBody GateValveCctvRel dto) { + if (service.lambdaQuery() + .eq(GateValveCctvRel::getValveCode,dto.getValveCode()) + .eq(GateValveCctvRel::getIndexCode,dto.getIndexCode()) + .count() > 0) { + throw new IllegalArgumentException("当前编号已关联"); + } + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody GateValveCctvRel dto) { + if (Objects.isNull(service.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + if (service.lambdaQuery() + .eq(GateValveCctvRel::getValveCode,dto.getValveCode()) + .eq(GateValveCctvRel::getIndexCode,dto.getIndexCode()) + .ne(GateValveCctvRel::getId,dto.getId()) + .count() > 0) { + throw new IllegalArgumentException("当前编号已关联"); + } + dto.setCreateTime(null); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestParam(value = "valveCode",required = false) @Parameter(description = "闸阀编码") String valveCode) { + return R.ok(service.queryList(valveCode)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody GateValveCctvRelPage page) { + return R.ok(service.pages(page)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/GateValveRController.java b/src/main/java/com/gunshi/project/ss/controller/GateValveRController.java new file mode 100644 index 0000000..3a6f933 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/GateValveRController.java @@ -0,0 +1,73 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.GateHisPageSo; +import com.gunshi.project.ss.entity.vo.GateStautsVo; +import com.gunshi.project.ss.model.GateValveR; +import com.gunshi.project.ss.service.GateValveRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 闸阀开关历史表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "闸阀开关历史表") +@RestController +@RequestMapping(value="/gateValveR") +public class GateValveRController { + + @Autowired + private GateValveRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody GateValveR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody GateValveR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody GateHisPageSo so) { + return R.ok(service.pageQuery(so)); + } + + @Operation(summary = "导出") + @PostMapping("/export") + public void export(@RequestBody GateHisPageSo so, HttpServletResponse response) { + service.export(so,response); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/GateValveRealController.java b/src/main/java/com/gunshi/project/ss/controller/GateValveRealController.java new file mode 100644 index 0000000..cf1a3be --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/GateValveRealController.java @@ -0,0 +1,187 @@ +package com.gunshi.project.ss.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.GateHisPageSo; +import com.gunshi.project.ss.entity.vo.GateStautsVo; +import com.gunshi.project.ss.entity.vo.GateValveOplogVo; +import com.gunshi.project.ss.model.GateValveKey; +import com.gunshi.project.ss.model.GateValveOplog; +import com.gunshi.project.ss.model.GateValveReal; +import com.gunshi.project.ss.service.GateValveRealService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.poi.ss.usermodel.FillPatternType; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 闸阀开关表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "闸阀开关表") +@RestController +@RequestMapping(value="/gateValveReal") +public class GateValveRealController { + + private static final Logger log = LoggerFactory.getLogger(GateValveRealController.class); + + + @Autowired + private GateValveRealService service; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody GateValveReal dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody GateValveReal dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.gateStatusList()); + } + + @Operation(summary = "通过闸阀查询实时流量") + @GetMapping("/realQ") + public R realQ(@RequestParam("valveCode") @Parameter(description = "闸阀编码") String valveCode) { + return R.ok(service.realQ(valveCode)); + } + + @Operation(summary = "调节闸阀") + @PostMapping("/control") + public R control(@RequestBody GateValveKey gateValveKey) { + return R.ok(service.control(gateValveKey)); + } + + @Operation(summary = "闸阀操作日志-分页") + @PostMapping("/log/page") + public R> logPage(@RequestBody GateHisPageSo so) { + return R.ok(service.logPage(so)); + } + + @Operation(summary = "闸阀操作日志-导出") + @PostMapping("/log/exp") + public void logexp(@RequestBody GateHisPageSo so, HttpServletResponse response) { + so.getPageSo().setPageSize(1000000); + Page gateValveOplogVoPage = service.logPage(so); + + try { +// 设置响应 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("闸阀操作日志_" + System.currentTimeMillis(), "UTF-8") + .replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + // 自定义表头样式 + WriteCellStyle headStyle = new WriteCellStyle(); + headStyle.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex()); + headStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); + + // 自定义内容样式 + WriteCellStyle contentStyle = new WriteCellStyle(); + contentStyle.setWrapped(true); // 自动换行 + List> headlist= Arrays.asList( + Arrays.asList("闸阀名称"), + Arrays.asList("操作人"), + Arrays.asList("操作时间"), + Arrays.asList("操作内容"), + Arrays.asList("设定开度"), + Arrays.asList("操作前开度") + ); + // 构建导出器 + EasyExcel.write(response.getOutputStream()) + .head(headlist) // 自定义表头 + .registerWriteHandler(new HorizontalCellStyleStrategy(headStyle, contentStyle)) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 自动列宽 + .sheet("闸阀操作日志") + .doWrite(gateValveOplogVoPage.getRecords()); + }catch (Exception e){ + log.error("导出异常", e); + } + } + + @Operation(summary = "闸阀操作日志-分页") + @PostMapping("/log/loglist") + public R> loglist(@RequestBody GateHisPageSo so) { + List gateStautsVos = service.gateStatusList(); + if(CollectionUtil.isEmpty(gateStautsVos)){ + return R.ok(null); + } + List collect = gateStautsVos.stream().map(e -> { + GateValveOplogVo vo = new GateValveOplogVo(); + GateValveOplog loginfo = service.loginfo(e.getValveCode()); + if(Objects.nonNull(loginfo)){ + BeanUtils.copyProperties(loginfo, vo); + } + vo.setValveCode(e.getValveCode()); + vo.setValveName(e.getValveName()); + return vo; + }).collect(Collectors.toList()); + return R.ok(collect); + } + + + + + @Operation(summary = "闸阀操作日志-导出") + @PostMapping("/log/export") + public void logExport(@RequestBody GateHisPageSo so, HttpServletResponse response) { + service.logExport(so,response); + } + + @Operation(summary = "预计可供水时间") + @GetMapping("/supply/time") + public R> supplyTime(@RequestParam(value = "year",required = false) @Parameter(description = "年份") Integer year,@RequestParam(value = "month",required = false) @Parameter(description = "月份") Integer month) { + return R.ok(service.supplyTime(year,month)); + } + + @Operation(summary = "预测来水量") + @GetMapping("/predict/water") + public R predictWater(@RequestParam(value = "year") @Parameter(description = "年份") Integer year, @RequestParam(value = "month") @Parameter(description = "月份") Integer month) { + return R.ok(service.predictWater(year,month)); + } + + @Operation(summary = "预测来水量分月份") + @GetMapping("/predict/water/month") + public R predictWaterMonth(@RequestParam(value = "year") @Parameter(description = "年份") Integer year, @RequestParam(value = "month") @Parameter(description = "月份") Integer month) { + return R.ok(service.predictWaterMonth(year,month)); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/HiddenInfoController.java b/src/main/java/com/gunshi/project/ss/controller/HiddenInfoController.java new file mode 100644 index 0000000..f34ffa5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/HiddenInfoController.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "维护养护-隐患点") +@RestController +@RequestMapping(value="/hiddeninfo") +public class HiddenInfoController extends AbstractCommonFileController { + @Override + public String getGroupId() { + return "hiddeninfo"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/HisWaterDataController.java b/src/main/java/com/gunshi/project/ss/controller/HisWaterDataController.java new file mode 100644 index 0000000..69039f6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/HisWaterDataController.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.gunshi.project.ss.entity.dto.ExportCommonDto; +import com.gunshi.project.ss.entity.so.HisWaterDataPageSo; +import com.gunshi.project.ss.entity.vo.HisWaterDataVo; +import com.gunshi.project.ss.model.HisWaterData; +import com.gunshi.project.ss.service.HisWaterDataService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "预警-历史水库水量资料") +@RestController +@RequestMapping(value="/hiswater") +public class HisWaterDataController { + + + @Autowired + private HisWaterDataService hisWaterDataService; + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated HisWaterDataPageSo page) { + return R.ok(hisWaterDataService.pageQuery(page)); + } + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody HisWaterDataVo dto) { + boolean result = hisWaterDataService.saveData(dto); + return R.ok(result); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody HisWaterDataVo dto) { + boolean result = hisWaterDataService.updateData(dto); + return R.ok(result); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(hisWaterDataService.removeData(id)); + } + + @Operation(summary = "导出") + @PostMapping("/export") + public void export(@RequestBody ExportCommonDto dto, HttpServletResponse response) { + List records = hisWaterDataService.selectList(dto); + hisWaterDataService.export(records,response); + } + + @Operation(summary = "年份列表") + @GetMapping("/year/list") + public R> yearList(){ + return R.ok(hisWaterDataService.yearList()); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ICommonDeleteByIdWithAttach.java b/src/main/java/com/gunshi/project/ss/controller/ICommonDeleteByIdWithAttach.java new file mode 100644 index 0000000..5a203e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ICommonDeleteByIdWithAttach.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.db.dao.BaseDao; +import com.gunshi.db.dao.IMapper; +import com.gunshi.project.ss.service.AbstractModelWithAttachService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.io.Serializable; + +/** + * 通用按id删除 + * + * @author lyf + * @version 1.0.0 + * @since 2024-01-31 + */ +public interface ICommonDeleteByIdWithAttach, AutoDao extends BaseDao, + AttachModel, AttachModelAutoMapper extends IMapper, AttachModelAutoDao extends BaseDao> { + + AbstractModelWithAttachService getModelService(); + + Serializable getId(Serializable id); + + @Operation(summary = "按id删除") + @GetMapping("/deleteById/{id}") + default R commonDeleteById(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(getModelService().removeById(getId(id))); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ICommonFileController.java b/src/main/java/com/gunshi/project/ss/controller/ICommonFileController.java new file mode 100644 index 0000000..0e67da9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ICommonFileController.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.file.controller.IFileController; +import com.gunshi.file.model.FileDescriptor; +import io.swagger.v3.oas.annotations.Parameter; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.multipart.MultipartFile; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-03-12 + */ +public interface ICommonFileController extends IFileController { + + String getGroupId(); + + String getBusinessType(); + + R uploadSingle( + @Parameter(description = "文件") @RequestPart("file") MultipartFile file, + @Parameter(description = "上传者用户id", hidden = true) @RequestParam(value = "userId", required = false) Long userId, + @Parameter(hidden = true) HttpServletRequest request) throws Exception; +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ICommonInsertWithAttach.java b/src/main/java/com/gunshi/project/ss/controller/ICommonInsertWithAttach.java new file mode 100644 index 0000000..c292d35 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ICommonInsertWithAttach.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.db.dao.BaseDao; +import com.gunshi.db.dao.IMapper; +import com.gunshi.project.ss.service.AbstractModelWithAttachService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-03-19 + */ +public interface ICommonInsertWithAttach, AutoDao extends BaseDao, + AttachModel, AttachModelAutoMapper extends IMapper, AttachModelAutoDao extends BaseDao> { + AbstractModelWithAttachService getModelService(); + + void customSetFieldForInsert(Model model); + + @Operation(summary = "实体类新增") + @PostMapping("/insert") + default R commonInsert(@Validated(Insert.class) @RequestBody Model model) { + customSetFieldForInsert(model); + boolean result = getModelService().save(model); + return R.ok(result ? model : null); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ICommonQueryAttach.java b/src/main/java/com/gunshi/project/ss/controller/ICommonQueryAttach.java new file mode 100644 index 0000000..86c3959 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ICommonQueryAttach.java @@ -0,0 +1,47 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.gunshi.core.result.R; +import com.gunshi.db.dao.BaseDao; +import com.gunshi.db.dao.IMapper; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +import java.io.Serializable; +import java.util.List; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-03-19 + */ +public interface ICommonQueryAttach, AutoDao extends BaseDao> { + AutoDao getAttachAutoDao(); + + String getAttachBzIdName(); + + IdType getId(Serializable id); + + @Operation(summary = "按id查询") + @GetMapping("/attach/getById/{id}") + default R commonGetAttachById(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(getAttachAutoDao().getById(id)); + } + + @Operation(summary = "按bzId查询") + @GetMapping("/attach/getByBzId/{bzId}") + default R> commonGetAttachByBzId(@Schema(name = "bzId") @PathVariable("bzId") Serializable bzId) { + return R.ok(getAttachAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), getId(bzId)))); + } + + @Operation(summary = "列表查询") + @GetMapping("/attach/find") + default R> commonFind(@Schema(name = "bzId") @PathVariable("bzId") Serializable bzId) { + return R.ok(getAttachAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), getId(bzId)))); + } +} + diff --git a/src/main/java/com/gunshi/project/ss/controller/ICommonUpdateByIdWithAttach.java b/src/main/java/com/gunshi/project/ss/controller/ICommonUpdateByIdWithAttach.java new file mode 100644 index 0000000..dc99dab --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ICommonUpdateByIdWithAttach.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.db.dao.BaseDao; +import com.gunshi.db.dao.IMapper; +import com.gunshi.project.ss.service.AbstractModelWithAttachService; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 通用实体类新增 + * + * @author lyf + * @version 1.0.0 + * @since 2024-02-19 + */ +public interface ICommonUpdateByIdWithAttach, AutoDao extends BaseDao, + AttachModel, AttachModelAutoMapper extends IMapper, AttachModelAutoDao extends BaseDao> { + + AbstractModelWithAttachService getModelService(); + + void customSetFieldForUpdate(Model model); + + @Operation(summary = "实体类修改") + @PostMapping("/update") + default R commonUpdateById(@Validated(Update.class) @RequestBody Model model) { + customSetFieldForUpdate(model); + boolean result = getModelService().updateById(model); + return R.ok(result ? model : null); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ISCAIEventController.java b/src/main/java/com/gunshi/project/ss/controller/ISCAIEventController.java new file mode 100644 index 0000000..f378f70 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ISCAIEventController.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ISCAIEventPageSo; +import com.gunshi.project.ss.model.ISCAIEvent; +import com.gunshi.project.ss.service.ISCAIEventService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "海康ai事件Controller") +@RestController +@RequestMapping(value="/iscaiEvent") +public class ISCAIEventController { + + + @Autowired + private ISCAIEventService iscaiEventService; + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> pageInfo(@RequestBody ISCAIEventPageSo dto) { + return R.ok(iscaiEventService.pageInfo(dto)); + } + + @Operation(summary = "列表") + @GetMapping("/list") + public R> list() { + return R.ok(iscaiEventService.lambdaQuery().list()); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/IaCBsnssinfoController.java b/src/main/java/com/gunshi/project/ss/controller/IaCBsnssinfoController.java new file mode 100644 index 0000000..f99bfc1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/IaCBsnssinfoController.java @@ -0,0 +1,151 @@ +package com.gunshi.project.ss.controller; + +import com.google.common.collect.Lists; +import com.gunshi.core.result.R; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.entity.vo.HomeIaCBsnssinfoVo; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.IaCBsnssinfo; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.IaCBsnssinfoService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 防治区企事业单位汇总表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "防治区企事业单位汇总表") +@RestController +@RequestMapping(value="/iaCBsnssinfo") +public class IaCBsnssinfoController extends AbstractCommonFileController{ + + @Autowired + private IaCBsnssinfoService service; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody IaCBsnssinfo dto) { + if (Objects.nonNull(service.getById(dto.getEicd()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + if (StringUtils.isNotBlank(dto.getName())){ + if (service.lambdaQuery().eq(IaCBsnssinfo::getName,dto.getName()).count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + } + + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getEicd()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody IaCBsnssinfo dto) { + if (Objects.isNull(service.getById(dto.getEicd()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getEicd()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = service.removeById(id); + + if (data){ + fileService.deleteFile(getGroupId(),id.toString()); + } + + return R.ok(data); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + @Operation(summary = "详情和行政区划数据查询") + @PostMapping("/getDetailsAndAddvcdDataList") + public R> getDetailsAndMonitoringDataList() { + List list = service.getDetailsAndMonitoringDataLis(); + if (CollectionUtils.isNotEmpty(list)){ + list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),o.getEicd()))); + } + return R.ok(list); + } + + @Operation(summary = "上传相关图片文件") + @PostMapping(path = "/setImgFile", consumes = "multipart/form-data") + public R setImgFile(@Parameter(description = "文件") @RequestPart("files") MultipartFile[] files) throws Exception { + + for (MultipartFile file : files) { + + String fileName = file.getOriginalFilename(); + String eicd = fileName.split("\\.")[0]; + + FileDescriptor fd = new FileDescriptor(); + fd.setBusinessType(getBusinessType()); + fd.setGroupId(getGroupId()); + fd.setUserId(1L); + fd.setAccessGroup(getService().getAccessGroup()); + fd.setFilePath(generateFilePath(getProperty().getAppCode(), getBusinessType(), 1L, getGroupId(), fileName)); + fd.setFileName(fileName); + fd.setFileLength(file.getSize()); + + getService().upload(fd, file.getInputStream()); + + FileAssociations fileAssociations = new FileAssociations(); + fileAssociations.setFileId(fd.getFileId()); + + fileService.saveFile(Lists.newArrayList(fileAssociations), getGroupId(), eicd); + } + + + return R.ok(); + } + + + + @Override + public String getGroupId() { + return "iaCBsnssinfo"; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/IaCDanadController.java b/src/main/java/com/gunshi/project/ss/controller/IaCDanadController.java new file mode 100644 index 0000000..2bf2b33 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/IaCDanadController.java @@ -0,0 +1,76 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.HomeIaCDanadVo; +import com.gunshi.project.ss.model.IaCDanad; +import com.gunshi.project.ss.service.IaCDanadService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 危险区基本情况调查成果汇总表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "危险区基本情况调查成果汇总表") +@RestController +@RequestMapping(value="/iaCDanad") +public class IaCDanadController { + + @Autowired + private IaCDanadService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody IaCDanad dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody IaCDanad dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "详情") + @GetMapping("/detail/{id}") + public R detail(@Schema(name = "id") @PathVariable("id") String id) { + return R.ok(service.detail(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + + @Operation(summary = "详情和行政区划数据查询") + @PostMapping("/getDetailsAndAddvcdDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataLis()); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/IaCFlrvvlgController.java b/src/main/java/com/gunshi/project/ss/controller/IaCFlrvvlgController.java new file mode 100644 index 0000000..3acbae2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/IaCFlrvvlgController.java @@ -0,0 +1,134 @@ +package com.gunshi.project.ss.controller; + +import com.google.common.collect.Lists; +import com.gunshi.core.result.R; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.entity.vo.HomeIaCFlrvvlgVo; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.IaCFlrvvlg; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.IaCFlrvvlgService; +import com.gunshi.project.ss.service.StAddvcdDService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 重要沿河村落居民户调查成果表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "重要沿河村落居民户调查成果表") +@RestController +@RequestMapping(value="/iaCFlrvvlg") +public class IaCFlrvvlgController extends AbstractCommonFileController{ + + @Autowired + private IaCFlrvvlgService service; + + @Autowired + private StAddvcdDService stAddvcdDService; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody IaCFlrvvlg dto) { + if (Objects.isNull(stAddvcdDService.getById(dto.getAdcd()))) { + throw new RuntimeException("请输入正确的行政区划代码"); + } + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody IaCFlrvvlg dto) { + + if (Objects.isNull( service.getById(dto.getAvrcd()))){ + throw new RuntimeException("请输入正确的沿河村落居民户编码"); + } + if (Objects.isNull(stAddvcdDService.getById(dto.getAdcd()))) { + throw new RuntimeException("请输入正确的行政区划代码"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(stAddvcdDService.getById(id))) { + throw new RuntimeException("请输入正确的行政区划代码"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + + @Operation(summary = "详情和行政区划数据查询") + @PostMapping("/getDetailsAndAddvcdDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataLis()); + } + + + + @Operation(summary = "上传相关图片文件") + @PostMapping(path = "/setImgFile", consumes = "multipart/form-data") + public R setImgFile(@Parameter(description = "文件") @RequestPart("files") MultipartFile[] files) throws Exception { + + for (MultipartFile file : files) { + + String fileName = file.getOriginalFilename(); + String eicd = fileName.split("\\.")[0]; + + FileDescriptor fd = new FileDescriptor(); + fd.setBusinessType(getBusinessType()); + fd.setGroupId(getGroupId()); + fd.setUserId(1L); + fd.setAccessGroup(getService().getAccessGroup()); + fd.setFilePath(generateFilePath(getProperty().getAppCode(), getBusinessType(), 1L, getGroupId(), fileName)); + fd.setFileName(fileName); + fd.setFileLength(file.getSize()); + + getService().upload(fd, file.getInputStream()); + + FileAssociations fileAssociations = new FileAssociations(); + fileAssociations.setFileId(fd.getFileId()); + + fileService.saveFile(Lists.newArrayList(fileAssociations), getGroupId(), eicd); + } + + + return R.ok(); + } + + @Override + public String getGroupId() { + return "iaCFlrvvlg"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/IcWaterForecastController.java b/src/main/java/com/gunshi/project/ss/controller/IcWaterForecastController.java new file mode 100644 index 0000000..e96cce9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/IcWaterForecastController.java @@ -0,0 +1,60 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.gunshi.project.ss.entity.dto.icWaterForecastCaculateDto; +import com.gunshi.project.ss.entity.so.IcWaterForecastPageSo; +import com.gunshi.project.ss.model.IcWaterForecast; +import com.gunshi.project.ss.model.IcWaterForecastDetail; +import com.gunshi.project.ss.service.IcWaterForecastService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "来水预测") +@RestController +@RequestMapping(value="/icWaterForecast") +public class IcWaterForecastController { + + @Autowired + private IcWaterForecastService icWaterForecastService; + + @Operation(summary = "分页查询") + @PostMapping("/page") + public R> page(@RequestBody IcWaterForecastPageSo pageSo) { + return R.ok(icWaterForecastService.pageQuery(pageSo)); + } + + + @Operation(summary = "来水预测计算") + @PostMapping("/caculate") + public R> caculate(@RequestBody icWaterForecastCaculateDto dto) { + return R.ok(icWaterForecastService.caculate(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody IcWaterForecast dto) { + return R.ok(icWaterForecastService.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(icWaterForecastService.delData(id)); + } + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@RequestBody IcWaterForecast dto) { + return R.ok(icWaterForecastService.saveData(dto)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/InspectItemController.java b/src/main/java/com/gunshi/project/ss/controller/InspectItemController.java new file mode 100644 index 0000000..ef98744 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/InspectItemController.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.dto.InspectItemDto; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.model.InspectItem; +import com.gunshi.project.ss.service.InspectItemService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 描述: 巡检项 + * author: xusan + * date: 2024-08-29 09:58:10 + */ +@Tag(name = "巡检项") +@RestController +@RequestMapping(value="/inspectItem") +public class InspectItemController { + + @Autowired + private InspectItemService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody InspectItem dto) { + dto.setId(IdWorker.getId()); + dto.setStatus(0); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody InspectItem dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "启停") + @PostMapping("/startStop") + public R startStop(@RequestBody InspectItemDto dto) { + return R.ok(service.startStop(dto)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated AttCctvBasePage page) { + return R.ok(service.pageQuery(page)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/InspectPointController.java b/src/main/java/com/gunshi/project/ss/controller/InspectPointController.java new file mode 100644 index 0000000..e7a98e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/InspectPointController.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.InspectPoint; +import com.gunshi.project.ss.service.InspectPointService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 巡检点 + * author: xusan + * date: 2024-08-29 09:57:47 + */ +@Tag(name = "巡检点") +@RestController +@RequestMapping(value="/inspect/point") +public class InspectPointController { + + @Autowired + private InspectPointService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody InspectPoint dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody InspectPoint dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "列表") + @GetMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().orderByAsc(InspectPoint::getOrderIndex).list()); + } + + @Operation(summary = "列表(带巡检项)") + @GetMapping("/listWithItem") + public R> listWithItem() { + return R.ok(service.listWithItem()); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/InspectTaskController.java b/src/main/java/com/gunshi/project/ss/controller/InspectTaskController.java new file mode 100644 index 0000000..8994b8d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/InspectTaskController.java @@ -0,0 +1,94 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.InspectTaskPageSo; +import com.gunshi.project.ss.entity.so.InspectTaskSo; +import com.gunshi.project.ss.entity.vo.InspectTaskVo; +import com.gunshi.project.ss.common.model.InspectTask; +import com.gunshi.project.ss.service.InspectTaskService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 描述: 巡检任务 + * author: xusan + * date: 2024-08-29 14:21:15 + */ +@Tag(name = "巡检任务") +@RestController +@RequestMapping(value="/inspect/task") +public class InspectTaskController extends AbstractCommonFileController{ + + @Autowired + private InspectTaskService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody InspectTask dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody InspectTask dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated InspectTaskPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "开始巡检") + @GetMapping("/startInspect/{id}") + public R startInspect(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.startInspect(id)); + } + + @Operation(summary = "APP-保存/结束巡查") + @PostMapping("/finish") + public R finish(@RequestBody @Validated InspectTaskVo vo) { + return R.ok(service.finish(vo)); + } + + @Operation(summary = "APP-我的巡查任务") + @PostMapping("/list") + public R> list(@RequestBody @Validated InspectTaskSo so) { + return R.ok(service.listQuery(so)); + } + + @Operation(summary = "本月巡查记录") + @PostMapping("/month") + public R> month() { + return R.ok(service.month()); + } + + @Operation(summary = "本年巡查") + @PostMapping("/year") + public R year() { + return R.ok(service.year()); + } + + + @Override + public String getGroupId() { + return "inspectTask"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/InspectTaskDetailController.java b/src/main/java/com/gunshi/project/ss/controller/InspectTaskDetailController.java new file mode 100644 index 0000000..9045783 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/InspectTaskDetailController.java @@ -0,0 +1,62 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.InspectProblemPageSo; +import com.gunshi.project.ss.entity.vo.InspectProblemVo; +import com.gunshi.project.ss.entity.vo.InspectTaskDetailVo; +import com.gunshi.project.ss.common.model.InspectTaskDetail; +import com.gunshi.project.ss.service.InspectTaskDetailService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +/** + * 描述: 巡查信息 + * author: xusan + * date: 2024-08-29 14:21:45 + */ +@Tag(name = "巡查信息") +@RestController +@RequestMapping(value="/inspect/detail") +public class InspectTaskDetailController{ + + @Autowired + private InspectTaskDetailService service; + + @Operation(summary = "编辑详情") + @GetMapping("/getByTaskId") + public R> getByTaskId(@Schema(name = "taskId",description = "任务id") @RequestParam(name = "taskId") Long taskId) { + return R.ok(service.getByTaskId(taskId)); + } + + @Operation(summary = "巡查任务详情-巡查信息") + @GetMapping("/info") + public R> inspectInfo(@Schema(name = "taskId",description = "任务id") @RequestParam(name = "taskId") Long taskId) { + return R.ok(service.inspectInfo(taskId)); + } + + @Operation(summary = "巡检问题处理分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated InspectProblemPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "APP-处理") + @PostMapping("/handle") + public R handle(@RequestBody @Validated InspectProblemVo vo) { + return R.ok(service.handle(vo)); + } + + + @Operation(summary = "待处理问题清单") + @PostMapping("/handle/list") + public R> handelList() { + return R.ok(service.handelList()); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/InspectTaskTrackController.java b/src/main/java/com/gunshi/project/ss/controller/InspectTaskTrackController.java new file mode 100644 index 0000000..deb6aac --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/InspectTaskTrackController.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.InspectTaskTrack; +import com.gunshi.project.ss.service.InspectTaskTrackService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; +/** + * 描述: 巡查轨迹 + * author: xusan + * date: 2024-09-18 13:59:21 + */ +@Tag(name = "巡查轨迹") +@RestController +@RequestMapping(value="/inspectTaskTrack") +public class InspectTaskTrackController { + + @Autowired + private InspectTaskTrackService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody InspectTaskTrack dto) { + dto.setCreateTime(new Date()); + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@Schema(name = "taskId",description = "任务id") @RequestParam(name = "taskId") Long taskId) { + return R.ok(service.lambdaQuery().eq(InspectTaskTrack::getTaskId,taskId).orderByAsc(InspectTaskTrack::getCreateTime).list()); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskByBController.java b/src/main/java/com/gunshi/project/ss/controller/JcskByBController.java new file mode 100644 index 0000000..3f66f4b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskByBController.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.WaterDevicePageSo; +import com.gunshi.project.ss.common.model.JcskByB; +import com.gunshi.project.ss.service.WaterDeviceService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +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; + +@Tag(name = "白蚁监测设备") +@RestController +@RequestMapping(value="/jcskByB") +public class JcskByBController { + @Autowired + private WaterDeviceService service; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated WaterDevicePageSo page) { + return R.ok(service.pageQuery(page)); + } + +// @Operation(summary = "新增") +// public R insert(@Validated(Insert.class) @RequestBody JcskByB dto) { +// return R.ok(service.saveDate(dto)); +// } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskByBDController.java b/src/main/java/com/gunshi/project/ss/controller/JcskByBDController.java new file mode 100644 index 0000000..9632a96 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskByBDController.java @@ -0,0 +1,55 @@ +package com.gunshi.project.ss.controller;//package com.gunshi.project.xyt.controller; +// +//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +//import com.gunshi.core.result.R; +//import com.gunshi.project.xyt.entity.so.JcskByBDPageSo; +//import com.gunshi.project.xyt.model.JcskByB; +//import com.gunshi.project.xyt.model.JcskByBD; +//import com.gunshi.project.xyt.service.JcskByBDService; +//import com.gunshi.project.xyt.service.JcskByBService; +//import io.swagger.v3.oas.annotations.Operation; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.validation.annotation.Validated; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.List; +// +//public class JcskByBDController { +// +// +// @Autowired +// private JcskByBDService jcskByBDService; +// +// @Autowired +// private JcskByBService jcskByBService; +// +// +// @Operation(summary = "分页") +// @PostMapping("/page") +// public R> page(@RequestBody @Validated JcskByBDPageSo page){ +// Page res = jcskByBDService.pageQuery(page); +// return R.ok(res); +// } +// +// @Operation(summary = "列表") +// @GetMapping("/list") +// public R> list(){ +// List res = jcskByBDService.list(); +// return R.ok(res); +// } +// +// @Operation(summary = "获取白蚁机箱设备") +// @GetMapping("/list/byDevice") +// public R> getJcskByBD(){ +// return R.ok(jcskByBService.lambdaQuery().list()); +// } +// +// @Operation(summary = "获取所有设备编码") +// @GetMapping("/list/device") +// public R> listDevices(){ +// List res = jcskByBDService.listDevices(); +// return R.ok(res); +// } +// +//} diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskByRController.java b/src/main/java/com/gunshi/project/ss/controller/JcskByRController.java new file mode 100644 index 0000000..d7efc7f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskByRController.java @@ -0,0 +1,102 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.so.JcskByRPageSo; +import com.gunshi.project.ss.common.model.JcskByB; +import com.gunshi.project.ss.common.model.JcskByBD; +import com.gunshi.project.ss.common.model.JcskByR; +import com.gunshi.project.ss.model.JcskByRProcess; +import com.gunshi.project.ss.service.JcskByBDService; +import com.gunshi.project.ss.service.JcskByBService; +import com.gunshi.project.ss.service.JcskByRProcessService; +import com.gunshi.project.ss.service.JcskByRService; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +//@Tag(name = "白蚁监测数据") +//@RestController +//@RequestMapping(value="/termite/survey") +public class JcskByRController { + + + @Autowired + private JcskByRService service; + + @Autowired + private JcskByRProcessService jcskByRProcessService; + + @Autowired + private JcskByBService jcskByBService; + + @Operation(summary = "分页") + @PostMapping("/pageDetail") + public R> page(@RequestBody @Validated JcskByRPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "统计白蚁有无") + @PostMapping("/count") + public R> count(@RequestBody @Validated JcskByRPageSo page){ + page.getPageSo().setPageSize(1000000); + Map countMap = new HashMap<>(); + countMap.put("totalPoint",0l); + countMap.put("hasAnt",0l); + countMap.put("notAnt",0l); + countMap.put("noData",0l); + Map res = service.pageQueryCount(page,countMap); + return R.ok(res); + } + + @Operation(summary = "根据测点编号查询时间范围内的所有数据") + @PostMapping("/detail") + public R> detailList(@RequestBody @Validated JcskByRPageSo page){ + return R.ok(service.detailList(page)); + } + + + @Autowired + private JcskByBDService jcskByBDService; + + + @Operation(summary = "获取所有白蚁测点信息") + @PostMapping("/list/allOrder") + public R> listAllOrder(@RequestBody JcskByRPageSo page){ + return R.ok(jcskByBDService.listAll(page.getObDate())); + } + + @Operation(summary = "获取白蚁机箱设备") + @GetMapping("/list/byDevice") + public R> getJcskByBD(){ + return R.ok(jcskByBService.lambdaQuery().list()); + } + + @Operation(summary = "获取所有设备编码") + @GetMapping("/list/device") + public R> listDevices(){ + List res = jcskByBDService.listDevices(); + return R.ok(res); + } + + @Operation(summary = "处理") + @PostMapping("/process") + public R process(@RequestBody JcskByRProcess jcskByRProcess){ + Boolean flag = jcskByRProcessService.process(jcskByRProcess); + return R.ok(flag); + } + + @Operation(summary = "查询所有测点最新的一条数据") + @GetMapping("/listNewData") + public R> listNewData(@RequestParam(value = "deviceId",required = false) String deviceId){ + List res = service.listNewData(deviceId); + return R.ok(res); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskGnssBController.java b/src/main/java/com/gunshi/project/ss/controller/JcskGnssBController.java new file mode 100644 index 0000000..3f756c9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskGnssBController.java @@ -0,0 +1,99 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.so.JcskGnssBPageSo; +import com.gunshi.project.ss.common.model.vo.HomeJcskGnssBVo; +import com.gunshi.project.ss.common.model.JcskGnssB; +import com.gunshi.project.ss.service.JcskGnssBService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +@Tag(name = "位移设备Controller") +@RestController +@RequestMapping(value="/osmoticShiftDevice") +public class JcskGnssBController { + + @Autowired + private JcskGnssBService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskGnssB dto) { + if (Objects.nonNull(service.getById(dto.getCd()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody JcskGnssB dto) { + if (Objects.isNull(service.getById(dto.getCd()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskGnssBPageSo page) { + return R.ok(service.pageQuery(page)); + } + + + @Operation(summary = "详情和监测数据查询(暂无设备表,无法使用)") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } + + @Operation(summary = "根据id查询详细数据") + @GetMapping("/getDetailsById") + public R getDetailsById(@RequestParam(name = "id") String id) { + HomeJcskGnssBVo byId = service.getDetailsById(id); + return R.ok(byId); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.lambdaQuery() + .orderByAsc(JcskGnssB::getCd) + .list(); + list.stream().forEach(o ->{ + o.setStationCode(o.getCd()); + }); + service.checkStatus(list); + return R.ok(list); + } + + @Operation(summary = "获取位移的断面数据") + @GetMapping("/list/dm") + public R> listDm(){ + + List res = service.listDms(); + return R.ok(res); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskGnssRController.java b/src/main/java/com/gunshi/project/ss/controller/JcskGnssRController.java new file mode 100644 index 0000000..2b52c8a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskGnssRController.java @@ -0,0 +1,144 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.vo.JcskGnessListVo; +import com.gunshi.project.ss.common.model.vo.JcskGnssRHisVo; +import com.gunshi.project.ss.common.model.vo.OsmoticShiftValueVo2; +import com.gunshi.project.ss.entity.dto.ArtificialJcskGnssDeleteDto; +import com.gunshi.project.ss.common.model.so.JcskGnssRPageSo; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.common.model.JcskGnssB; +import com.gunshi.project.ss.common.model.JcskGnssR; +import com.gunshi.project.ss.service.JcskGnssBService; +import com.gunshi.project.ss.service.JcskGnssRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "位移R表") +@RestController +@RequestMapping(value="/osmoticShiftR") +public class JcskGnssRController { + + @Autowired + private JcskGnssRService service; + + @Autowired + private JcskGnssBService jcskGnssBService; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskGnssRPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "历史") + @PostMapping("/history") + public R> historyPage(@RequestBody @Validated JcskGnssRPageSo page) { + return R.ok(service.historyPage(page)); + } + + @Operation(summary = "人工分页") + @PostMapping("/artificial/page") + public R> artificialPage(@RequestBody @Validated JcskGnssRPageSo page) { + return R.ok(service.artificialPage(page)); + } + + @Operation(summary = "人工分页-导出") + @PostMapping("/artificial/export") + public void artificialExport(@RequestBody @Validated JcskGnssRPageSo page,HttpServletResponse response){ + service.artificialExport(page,response); + } + + + @Operation(summary = "新增") + @PostMapping("/artificial/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskGnssR dto) { +// // 通过时间戳去除毫秒 +// long currentTime = System.currentTimeMillis(); +// long seconds = currentTime / 1000; // 去掉毫秒部分 +// Date dateWithoutMillis = new Date(seconds * 1000); // 转回毫秒时间戳 +// dto.setTm(dateWithoutMillis); + boolean result = service.saveData(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "获取人工录入测点") + @GetMapping("/artificial/tree") + public R> artificialTree() { + List res = jcskGnssBService.artificialTree(); + return R.ok(res); + } + + + @Operation(summary = "修改") + @PostMapping("/artificial/update") + public R update(@Validated(Update.class) @RequestBody JcskGnssR dto) { + boolean update = service.updateData(dto); + return R.ok(update ? dto : null); + } + + @Operation(summary = "删除") + @PostMapping("/artificial/delete") + public R del(@RequestBody @Validated ArtificialJcskGnssDeleteDto dto) { + boolean delete = service.deleteData(dto); + return R.ok(delete); + } + + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + + @Operation(summary = "获取断面对应测点编号") + @GetMapping("/tree") + public R> getChAndCd() { + List res = service.getChAndCd(); + return R.ok(res); + } + + + @Operation(summary = "年度位移统计(表格)") + @PostMapping("/year/stat") + public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.yearStat(osmoticQuerySo)); + } + + @Operation(summary = "年度位移统计(全年度特征值统计)") + @PostMapping("/year/stat/value") + public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.yearStatValue(osmoticQuerySo)); + } + + @Operation(summary = "年度位移统计导出") + @PostMapping( "/year/stat/export") + public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + service.yearStatExport(osmoticQuerySo,response); + } + + @Operation(summary = "布置图-位移监测") + @GetMapping("/list/value") + public R> listValue() { + return R.ok(service.listValue()); + } + + @Operation(summary = "布置图-按测站查询位移监测数据") + @PostMapping("/detail/value") + public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { + return R.ok(service.detailValue(so)); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskSlBController.java b/src/main/java/com/gunshi/project/ss/controller/JcskSlBController.java new file mode 100644 index 0000000..6bdc1b1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskSlBController.java @@ -0,0 +1,98 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.so.JcskSlBPageSo; +import com.gunshi.project.ss.common.model.vo.HomeJcskSlBVo; +import com.gunshi.project.ss.common.model.JcskSlB; +import com.gunshi.project.ss.service.JcskSlBService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +@Tag(name = "渗压测力点-设备基础信息") +@RestController +@RequestMapping(value="/osmoticFlowDevice") +public class JcskSlBController { + @Autowired + private JcskSlBService service; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskSlBPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskSlB dto) { + if (Objects.nonNull(service.getById(dto.getMpcd()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + + dto.setDtuptm(LocalDateTime.now()); + boolean result = service.save(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody JcskSlB dto) { + if (Objects.isNull(service.getById(dto.getMpcd()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setDtuptm(null); + boolean result = service.updateById(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.lambdaQuery().list(); + list.stream().forEach(o ->{ + o.setStationCode(o.getDvcd()); + }); + return R.ok(list); + } + + + @Operation(summary = "详情和监测数据查询") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } + + @Operation(summary = "根据id查询详细数据") + @GetMapping("/getDetailsById") + public R getDetailsById(@RequestParam(name = "id") String id) { + HomeJcskSlBVo byId = service.getDetailsById(id.toString()); + return R.ok(byId); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskSlRController.java b/src/main/java/com/gunshi/project/ss/controller/JcskSlRController.java new file mode 100644 index 0000000..513b69d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskSlRController.java @@ -0,0 +1,70 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.so.JcskSlRPageSo; +import com.gunshi.project.ss.common.model.vo.JcskSlRHisVo; +import com.gunshi.project.ss.common.model.JcskSlR; +import com.gunshi.project.ss.service.JcskSlRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "渗流量(剔除异常)") +@RestController +@RequestMapping(value="/osmoticFlowR") +public class JcskSlRController { + + + @Autowired + private JcskSlRService service; + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskSlRPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "分页") + @PostMapping("/history") + public R> historyPage(@RequestBody @Validated JcskSlRPageSo page) { + return R.ok(service.historyPage(page)); + } + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskSlR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody JcskSlR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskSyBController.java b/src/main/java/com/gunshi/project/ss/controller/JcskSyBController.java new file mode 100644 index 0000000..2ee384c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskSyBController.java @@ -0,0 +1,108 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.so.JcskSyBPageSo; +import com.gunshi.project.ss.common.model.vo.HomeJcskSYBVo; +import com.gunshi.project.ss.common.model.JcskSyB; +import com.gunshi.project.ss.service.JcskSyBService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +@Tag(name = "测压管表") +@RestController +@RequestMapping(value="/osmoticPressDevice") +public class JcskSyBController extends AbstractCommonFileController { + + + @Autowired + private JcskSyBService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskSyB dto) { + if (Objects.nonNull(service.getById(dto.getMpcd()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + dto.setDtuptm(LocalDateTime.now()); + boolean result = service.save(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody JcskSyB dto) { + if (Objects.isNull(service.getById(dto.getMpcd()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setDtuptm(LocalDateTime.now()); + boolean result = service.updateById(dto); +// if (result){ +// fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); +// } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskSyBPageSo page) { + return R.ok(service.pageQuery(page)); + } + + + + @Operation(summary = "详情和监测数据查询") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } + + @Operation(summary = "根据id查询详细数据") + @GetMapping("/getDetailsById") + public R getDetailsById(@RequestParam(name = "id") String id) { + HomeJcskSYBVo byId = service.getDetailsById(id); + return R.ok(byId); + } + + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.lambdaQuery().list(); + list.stream().forEach(item -> { + item.setStationCode(item.getDvcd()); + }); + return R.ok(list); + } + + @Override + public String getGroupId() { + return "OsmoticPressDevice"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/JcskSyRController.java b/src/main/java/com/gunshi/project/ss/controller/JcskSyRController.java new file mode 100644 index 0000000..e0534ef --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/JcskSyRController.java @@ -0,0 +1,169 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; + +import com.gunshi.project.ss.common.model.JcskSyR; +import com.gunshi.project.ss.common.model.vo.JcskSyRHisVo; +import com.gunshi.project.ss.common.model.vo.JcskSyRVo; +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.entity.dto.ArtificialJcskSyDeleteDto; +import com.gunshi.project.ss.common.model.so.JcskSyRPageSo; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.service.JcskSyRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@Tag(name = "渗流压力水位") +@RestController +@RequestMapping(value="/osmoticPressR") +public class JcskSyRController { + @Autowired + private JcskSyRService service; + + @Operation(summary = "获取dvcd") + @GetMapping("/list/dvcd") + public R> listDvcd(){ + List res = service.listDvcd(); + return R.ok(res); + } + + @Operation(summary = "获取测站编码和测站编号") + @GetMapping("/list/stcdMpcd") + public R> listStcdMpcd(){ + return R.ok(service.listStcdMpcd()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated JcskSyRPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "人工分页") + @PostMapping("/artificial/page") + public R> artificialPage(@RequestBody @Validated JcskSyRPageSo page) { + return R.ok(service.artificialPage(page)); + } + + @Operation(summary = "人工分页-导出") + @PostMapping("/artificial/export") + public void artificialExport(@RequestBody @Validated JcskSyRPageSo page,HttpServletResponse response){ + service.artificialExport(page,response); + } + + @Operation(summary = "历史") + @PostMapping("/history") + public R> historyPage(@RequestBody @Validated JcskSyRPageSo page) { + return R.ok(service.historyPage(page)); + } + + + @Operation(summary = "新增") + @PostMapping("/artificial/insert") + public R insert(@Validated(Insert.class) @RequestBody JcskSyR dto) { +// // 通过时间戳去除毫秒 +// long currentTime = System.currentTimeMillis(); +// long seconds = currentTime / 1000; // 去掉毫秒部分 +// Date dateWithoutMillis = new Date(seconds * 1000); // 转回毫秒时间戳 +// dto.setTm(dateWithoutMillis); + boolean result = service.saveData(dto); + return R.ok(result ? dto : null); + } + + + @Operation(summary = "修改") + @PostMapping("/artificial/update") + public R update(@Validated(Update.class) @RequestBody JcskSyR dto) { + boolean update = service.updateData(dto); + return R.ok(update ? dto : null); + } + + @Operation(summary = "删除") + @PostMapping("/artificial/delete") + public R del(@RequestBody @Validated ArtificialJcskSyDeleteDto dto) { + boolean delete = service.deleteData(dto); + return R.ok(delete); + } + + @Operation(summary = "大屏-大坝安全监测统计") + @GetMapping("/stat") + public R> stat() { + return R.ok(service.stat()); + } + + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "布置图-渗压/渗流监测") + @GetMapping("/list/value") + public R> listValue(@Schema(name = "type",description = "类型(1渗压 2渗流)") @RequestParam("type") Integer type) { + return R.ok(service.listValue(type)); + } + + + + @Operation(summary = "布置图-按测站查询渗压/渗流监测数据") + @PostMapping("/detail/value") + public R> detailValue(@RequestBody @Validated OsmoticDetailQuerySo so) { + return R.ok(service.detailValue(so)); + } + + @Operation(summary = "测值查询(数据表)") + @PostMapping("/query/value") + public R> queryValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.queryValue(osmoticQuerySo,null)); + } + + @Operation(summary = "测值查询(多图单表)") + @PostMapping("/query/chart") + public R> queryChart(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.queryChart(osmoticQuerySo,null)); + } + + @Operation(summary = "浸润线查询") + @PostMapping("/infiltra/line") + public R> infiltraLine(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.infiltraLine(osmoticQuerySo)); + } + + @Operation(summary = "浸润线导出") + @PostMapping( "/export") + public void export(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + service.export(osmoticQuerySo,response); + } + + @Operation(summary = "年度渗压/渗流统计(表格)") + @PostMapping("/year/stat") + public R> yearStat(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.yearStat(osmoticQuerySo)); + } + + @Operation(summary = "年度渗压/渗流统计(全年度特征值统计)") + @PostMapping("/year/stat/value") + public R> yearStatValue(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo) { + return R.ok(service.yearStatValue(osmoticQuerySo)); + } + + @Operation(summary = "年度渗压/渗流统计导出") + @PostMapping( "/year/stat/export") + public void yearStatExport(@RequestBody @Validated OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + service.yearStatExport(osmoticQuerySo,response); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/MaintainServiceController.java b/src/main/java/com/gunshi/project/ss/controller/MaintainServiceController.java new file mode 100644 index 0000000..df2fa1f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/MaintainServiceController.java @@ -0,0 +1,67 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.MaintainPageSo; +import com.gunshi.project.ss.model.MaintainService; +import com.gunshi.project.ss.service.MaintainServiceService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 维修养护 + * author: xusan + * date: 2024-08-27 15:15:14 + */ +@Tag(name = "维修养护") +@RestController +@RequestMapping(value="/maintain/service") +public class MaintainServiceController extends AbstractCommonFileController{ + + @Autowired + private MaintainServiceService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody MaintainService dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody MaintainService dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody MaintainPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Override + public String getGroupId() { + return "maintainService"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/MentenceFarmerRecordController.java b/src/main/java/com/gunshi/project/ss/controller/MentenceFarmerRecordController.java new file mode 100644 index 0000000..4d956e1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/MentenceFarmerRecordController.java @@ -0,0 +1,118 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.MentenceFarmerRecordPageSo; +import com.gunshi.project.ss.model.HiddenInfo; +import com.gunshi.project.ss.model.MentenceFarmerRecord; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.HiddenInfoService; +import com.gunshi.project.ss.service.MentenceFarmerRecordService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "维护养护-日常养护记录") +@RestController +@RequestMapping(value="/mfr") +public class MentenceFarmerRecordController extends AbstractCommonFileController{ + + + @Autowired + private MentenceFarmerRecordService mentenceFarmerRecordService; + + @Autowired + private HiddenInfoService hiddenInfoService; + + + @Autowired + private FileAssociationsService fileService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody MentenceFarmerRecord dto, HttpServletRequest request) { + boolean result = mentenceFarmerRecordService.saveDate(dto); + if(result){ + fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); + for (HiddenInfo detail : dto.getDetails()) { + fileService.saveFile(detail.getFiles(), getGroupId(),detail.getId().toString()); + } + } + return R.ok(result ? dto : null); + } + + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody MentenceFarmerRecord dto) { + boolean flag = mentenceFarmerRecordService.update(dto); + if (flag) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + for (HiddenInfo detail : dto.getDetails()) { + fileService.saveFile(detail.getFiles(), getGroupId(),detail.getId().toString()); + } + } + return R.ok(flag ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + List res = mentenceFarmerRecordService.delete(id); + if(res != null){ + fileService.deleteFile(getGroupId(),id.toString()); + for (Long cid : res) { + fileService.deleteFile(getGroupId(),cid.toString()); + } + } + return R.ok(true); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody MentenceFarmerRecordPageSo pageSo) { + Page byPage = mentenceFarmerRecordService.pageQuery(pageSo); + if(!CollectionUtils.isEmpty(byPage.getRecords())){ + byPage.getRecords().forEach(o ->{ + + o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + ); + + List details = o.getDetails(); + details.forEach(detail -> { + detail.setFiles(fileService.getFiles(getGroupId(),detail.getId().toString())); + }); + }); + } + return R.ok(byPage); + } + + @Operation(description = "日志导出") + @PostMapping("/export") + public void export(@RequestBody MentenceFarmerRecordPageSo pageSo,HttpServletResponse response) { + pageSo.getPageSo().setPageSize(9999); + Page byPage = mentenceFarmerRecordService.pageQuery(pageSo); + List records = byPage.getRecords(); + mentenceFarmerRecordService.exportToExcel(records,response); + } + + + @Override + public String getGroupId() { + return "mentenceFarmerRecord"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/MentenceInfoCountController.java b/src/main/java/com/gunshi/project/ss/controller/MentenceInfoCountController.java new file mode 100644 index 0000000..58c2b07 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/MentenceInfoCountController.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.so.MentenceFarmerRecordPageSo; +import com.gunshi.project.ss.entity.vo.MentenceInfoCount12Vo; +import com.gunshi.project.ss.entity.vo.MentenceInfoCountVo; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.MentenceFarmerRecordService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@Tag(name = "维修养护-维护信息统计分析") +@RestController +@RequestMapping(value="/mic") +public class MentenceInfoCountController extends AbstractCommonFileController { + + + @Autowired + private MentenceFarmerRecordService mentenceFarmerRecordService; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody MentenceFarmerRecordPageSo pageSo) { + Page byPage = mentenceFarmerRecordService.pageInfoCountQuery(pageSo); + if(!CollectionUtils.isEmpty(byPage.getRecords())){ + byPage.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + )); + } + return R.ok(byPage); + } + + @Operation(summary = "根据时间统计 隐患 数目") + @PostMapping("/count12") + public R> count12(@RequestBody MonthRangeSo monthRangeSo){ + List list = mentenceFarmerRecordService.count12(monthRangeSo); + return R.ok(list); + } + + @Operation(summary = "根据时间统计 隐患类型 数目") + @PostMapping("/countType") + public R> countType(@RequestBody MonthRangeSo monthRangeSo){ + Map map = mentenceFarmerRecordService.countType(monthRangeSo); + return R.ok(map); + } + + @Operation(summary = "统计本年的隐患数") + @GetMapping("/countYear/{year}") + public R> countYear(@PathVariable("year") String year){ + Map map = mentenceFarmerRecordService.countYear(year); + return R.ok(map); + } + @Override + public String getGroupId() { + return "mentenceFarmerRecord"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/MentencePlanController.java b/src/main/java/com/gunshi/project/ss/controller/MentencePlanController.java new file mode 100644 index 0000000..f214d4f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/MentencePlanController.java @@ -0,0 +1,129 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.core.session.entity.SessionUser; +import com.gunshi.project.ss.entity.so.MentencePlanPageSo; +import com.gunshi.project.ss.model.MentencePlan; +import com.gunshi.project.ss.model.MentencePlanDetail; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.MentencePlanDetailService; +import com.gunshi.project.ss.service.MentencePlanService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import jakarta.servlet.http.HttpServletRequest; + +import java.io.Serializable; +import java.util.Objects; + +@Tag(name = "维护养护-维护计划") +@RestController +@RequestMapping(value="/mtpl") +public class MentencePlanController extends AbstractCommonFileController { + + @Autowired + private MentencePlanService mentencePlanService; + + @Autowired + private MentencePlanDetailService mentencePlanDetailService; + + @Autowired + private FileAssociationsService fileService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody MentencePlan dto, HttpServletRequest request) { + SessionUser sessionUser = checkLogin(request); + if(sessionUser == null){ + throw new IllegalArgumentException("未登录"); + } + Long userId = sessionUser.getUserId(); + dto.setCreateId(userId.toString()); + boolean flag = mentencePlanService.saveData(dto); + if(flag){ + fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); + } + return R.ok(dto); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody MentencePlan dto,HttpServletRequest request) { + SessionUser sessionUser = checkLogin(request); + if(sessionUser == null){ + throw new IllegalArgumentException("未登录"); + } +// Long userId = sessionUser.getUserId(); +// if(!userId.equals(dto.getCreateId())){ +// throw new IllegalArgumentException("对不起,您没有编辑的权限"); +// } + boolean flag = mentencePlanService.update(dto); + if (flag) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(flag ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id,HttpServletRequest request) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentencePlan::getId, id); + MentencePlan one = mentencePlanService.getOne(queryWrapper); + if(Objects.isNull(one)){ + throw new RuntimeException("该计划不存在"); + } + SessionUser sessionUser = checkLogin(request); + if(sessionUser == null){ + throw new IllegalArgumentException("未登录"); + } +// Long userId = sessionUser.getUserId(); +// if(!userId.equals(one.getCreateId())){ +// throw new IllegalArgumentException("对不起,您没有编辑的权限"); +// } + LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); + queryWrapperDetail.eq(MentencePlanDetail::getMentencePlanId, id); + //先删细节 + boolean remove = mentencePlanDetailService.remove(queryWrapperDetail); + if(remove){ + //再删主体 + mentencePlanService.removeById(id); + } + return R.ok(true); + } + + @Operation(summary = "审批") + @PostMapping("/approving") + public R approve(@Validated @RequestBody MentencePlan dto,HttpServletRequest request){ + mentencePlanService.approve(dto); + return R.ok(true); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody MentencePlanPageSo pageSo) { + Page byPlanPage = mentencePlanService.pageQuery(pageSo); + if(!CollectionUtils.isEmpty(byPlanPage.getRecords())){ + byPlanPage.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + )); + } + return R.ok(byPlanPage); + } + + @Override + public String getGroupId() { + return "mentencePlan"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/MentenceStController.java b/src/main/java/com/gunshi/project/ss/controller/MentenceStController.java new file mode 100644 index 0000000..b105e59 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/MentenceStController.java @@ -0,0 +1,130 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.MentenceStPageSo; +import com.gunshi.project.ss.model.MentenceSt; +import com.gunshi.project.ss.model.MentenceStDetail; +import com.gunshi.project.ss.service.MentenceStDetailService; +import com.gunshi.project.ss.service.MentenceStService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "维护养护-维护标准") +@RestController +@RequestMapping(value="/mtst") +public class MentenceStController { + + + @Autowired + private MentenceStService mentenceStService; + + @Autowired + private MentenceStDetailService mentenceStDetailService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody MentenceSt dto) { + + boolean result = mentenceStService.saveDate(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody MentenceSt dto) { + boolean result = mentenceStService.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = mentenceStService.deleteById(id); + return R.ok(b); + } + + @Operation(summary = "列表") + @GetMapping("/list") + public R> list() { + List list = mentenceStService.lambdaQuery().orderByAsc(MentenceSt::getCreateTime).list(); + return R.ok(list); + } + + + @Operation(summary = "维护项目新增") + @PostMapping("/detail/insert") + public R insert(@Validated(Insert.class) @RequestBody MentenceStDetail dto) { + dto.setId(IdWorker.getId()); + boolean result = mentenceStDetailService.save(dto); + return R.ok(result ? dto : null); + } + + + @Operation(summary = "维护项目修改") + @PostMapping("/detail/update") + public R detailUpdate(@Validated(Update.class) @RequestBody MentenceStDetail dto) { + boolean result = mentenceStDetailService.update(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "维护项目列表") + @GetMapping("/detail/list") + public R> detailList() { + List list = mentenceStDetailService.lambdaQuery().orderByAsc(MentenceStDetail::getOrder).list(); + return R.ok(list); + } + + + @Operation(summary = "维护项目删除") + @GetMapping("/detail/del/{id}") + public R detailDel(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = mentenceStDetailService.deleteById(id); + return R.ok(b); + } + + + @Operation(summary = "是否启用") + @GetMapping("/switch/{id}") + public R isEnable(@Schema(name = "id") @PathVariable("id") Serializable id) { + MentenceStDetail byId = mentenceStDetailService.getById(id); + if(byId == null) { + throw new RuntimeException("该数据不存在,请检查"); + } + Integer isEnable = byId.getIsEnable(); + if(isEnable > 0){ + byId.setIsEnable(0); + }else{ + byId.setIsEnable(1); + } + boolean result = mentenceStDetailService.updateById(byId); + return R.ok(result ? false : true); + } + + + //根据维护对象id,查询维护项目 + @Operation(summary = "根据维护对象id,查询维护项目") + @PostMapping("/detail/page") + public R> page(@RequestBody MentenceStPageSo dto) { + return R.ok(mentenceStDetailService.pageQuery(dto)); + } + + //查询养护对象 (可根据 防治点查询,也可以根据防治部位查询) + @Operation(summary = "查询防治部位(可根据 维护对象,也可以根据维护项目查询)") + @PostMapping("/tree") + public R> tree(@RequestBody MentenceStPageSo dto) { + List res = mentenceStService.tree(dto); + return R.ok(res); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/MentenceTemplateController.java b/src/main/java/com/gunshi/project/ss/controller/MentenceTemplateController.java new file mode 100644 index 0000000..56fb926 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/MentenceTemplateController.java @@ -0,0 +1,92 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.core.session.entity.SessionUser; +import com.gunshi.project.ss.entity.so.MentenceTemplatePageSo; +import com.gunshi.project.ss.model.MentenceTemplate; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.MentenceTemplateService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import java.io.Serializable; + + +@Tag(name = "维护养护-模板") +@RestController +@RequestMapping(value="/mt") +public class MentenceTemplateController extends AbstractCommonFileController { + + @Autowired + private MentenceTemplateService mentenceTemplateService; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody MentenceTemplate dto, HttpServletRequest request) { + SessionUser sessionUser = checkLogin(request); + if(sessionUser == null){ + throw new IllegalArgumentException("未登录"); + } + Long userId = sessionUser.getUserId(); + dto.setCreateId(userId.toString()); + boolean result = mentenceTemplateService.saveDate(dto); + if(result){ + fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); + } + return R.ok(result ? dto : null); + } + + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody MentenceTemplate dto) { + boolean flag = mentenceTemplateService.update(dto); + if (flag) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(flag ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentenceTemplate::getId, id); + boolean result = mentenceTemplateService.remove(queryWrapper); + if(result){ + fileService.deleteFile(getGroupId(),id.toString()); + } + return R.ok(true); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody MentenceTemplatePageSo pageSo) { + Page byPage = mentenceTemplateService.pageQuery(pageSo); + if(!CollectionUtils.isEmpty(byPage.getRecords())){ + byPage.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + )); + } + return R.ok(byPage); + } + + @Override + public String getGroupId() { + return "mentenceTemplate"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/MessageCenterController.java b/src/main/java/com/gunshi/project/ss/controller/MessageCenterController.java new file mode 100644 index 0000000..c102792 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/MessageCenterController.java @@ -0,0 +1,54 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.entity.so.MessageCenterPageSo; +import com.gunshi.project.ss.model.MessageCenter; +import com.gunshi.project.ss.service.MessageCenterService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 描述: 消息中心 + * author: xusan + * date: 2024-09-19 10:39:29 + */ +@Tag(name = "消息中心") +@RestController +@RequestMapping(value="/messageCenter") +public class MessageCenterController { + + @Autowired + private MessageCenterService service; + + @Operation(summary = "分页查询") + @PostMapping("/list/page") + public R> listPage(@Validated @RequestBody MessageCenterPageSo page) { + return R.ok(service.listPage(page)); + } + + @Operation(summary = "已读") + @PostMapping("/update") + public R update(@Validated @RequestBody MessageCenter dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "全部标注已读") + @GetMapping("/all/read") + public R allRead() { + return R.ok(service.allRead()); + } + + @Operation(summary = "APP-消息中心") + @PostMapping("/list") + public R> listMes(@Validated @RequestBody DateTimeRangeSo dateTimeRangeSo) { + return R.ok(service.listMes(dateTimeRangeSo)); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/OsmoticFlowDeviceController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticFlowDeviceController.java new file mode 100644 index 0000000..a2b03bb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/OsmoticFlowDeviceController.java @@ -0,0 +1,116 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.so.OsmoticDevicePage; +import com.gunshi.project.ss.entity.vo.HomeOsmoticFlowDeviceVo; +import com.gunshi.project.ss.model.OsmoticFlowDevice; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.OsmoticFlowDeviceService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 渗流设备表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +//@Tag(name = "渗流设备表") +//@RestController +//@RequestMapping(value="/osmoticFlowDevice") +public class OsmoticFlowDeviceController extends AbstractCommonFileController{ + + @Autowired + private OsmoticFlowDeviceService service; + + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody OsmoticFlowDevice dto) { + if (Objects.nonNull(service.getById(dto.getStationCode()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody OsmoticFlowDevice dto) { + if (Objects.isNull(service.getById(dto.getStationCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setCreateTime(null); + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated OsmoticDevicePage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getStationCode())) { + query.like(OsmoticFlowDevice::getStationCode, page.getStationCode()); + } + if (ObjectUtils.isNotNull(page.getDeviceCode())) { + query.like(OsmoticFlowDevice::getDeviceName, page.getDeviceCode()); + } + query.orderByDesc(OsmoticFlowDevice::getCreateTime); + + Page data = service.page(page.getPageSo().toPage(), query); + data.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getStationCode()) + )); + return R.ok(data); + } + + @Operation(summary = "详情和监测数据查询") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } + + @Override + public String getGroupId() { + return "OsmoticFlowDevice"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/OsmoticFlowRController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticFlowRController.java new file mode 100644 index 0000000..6aa9cca --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/OsmoticFlowRController.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.so.OsmoticQueryPageSo; +import com.gunshi.project.ss.model.OsmoticFlowR; +import com.gunshi.project.ss.service.OsmoticFlowRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 渗流监测记录表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +//@Tag(name = "渗流监测记录表") +//@RestController +//@RequestMapping(value="/osmoticFlowR") +public class OsmoticFlowRController { + + @Autowired + private OsmoticFlowRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody OsmoticFlowR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody OsmoticFlowR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody OsmoticQueryPageSo osmoticQueryPageSo) { + return R.ok(service.queryPage(osmoticQueryPageSo)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/OsmoticPressDeviceController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticPressDeviceController.java new file mode 100644 index 0000000..75835b6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/OsmoticPressDeviceController.java @@ -0,0 +1,117 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.so.OsmoticDevicePage; +import com.gunshi.project.ss.entity.vo.HomeOsmoticPressDeviceVo; +import com.gunshi.project.ss.model.OsmoticPressDevice; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.OsmoticPressDeviceService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 渗压设备表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +//@Tag(name = "渗压设备表") +//@RestController +//@RequestMapping(value="/osmoticPressDevice") +public class OsmoticPressDeviceController extends AbstractCommonFileController{ + + @Autowired + private OsmoticPressDeviceService service; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody OsmoticPressDevice dto) { + if (Objects.nonNull(service.getById(dto.getStationCode()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody OsmoticPressDevice dto) { + if (Objects.isNull(service.getById(dto.getStationCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setCreateTime(null); + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getStationCode()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated OsmoticDevicePage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + if (ObjectUtils.isNotNull(page.getStationCode())) { + query.like(OsmoticPressDevice::getStationCode, page.getStationCode()); + } + if (ObjectUtils.isNotNull(page.getDeviceCode())) { + query.like(OsmoticPressDevice::getDeviceName, page.getDeviceCode()); + } + + query.orderByDesc(OsmoticPressDevice::getCreateTime); + + Page data = service.page(page.getPageSo().toPage(), query); + data.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getStationCode()) + )); + return R.ok(data); + } + + + @Operation(summary = "详情和监测数据查询") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } + + @Override + public String getGroupId() { + return "OsmoticPressDevice"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticPressRController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticPressRController.java similarity index 100% rename from src/main/java/com/gunshi/project/hsz/controller/OsmoticPressRController.java rename to src/main/java/com/gunshi/project/ss/controller/OsmoticPressRController.java diff --git a/src/main/java/com/gunshi/project/ss/controller/OsmoticShiftDeviceController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticShiftDeviceController.java new file mode 100644 index 0000000..6300a11 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/OsmoticShiftDeviceController.java @@ -0,0 +1,80 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.HomeOsmoticShiftDeviceVo; +import com.gunshi.project.ss.model.OsmoticShiftDevice; +import com.gunshi.project.ss.service.OsmoticShiftDeviceService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 位移监测记录表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +//@Tag(name = "位移设备表") +//@RestController +//@RequestMapping(value="/osmoticShiftDevice") +public class OsmoticShiftDeviceController { + + @Autowired + private OsmoticShiftDeviceService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody OsmoticShiftDevice dto) { + if (Objects.nonNull(service.getById(dto.getStationCode()))) { + throw new IllegalArgumentException("当前编号已存在"); + } + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody OsmoticShiftDevice dto) { + if (Objects.isNull(service.getById(dto.getStationCode()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setCreateTime(null); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + + @Operation(summary = "详情和监测数据查询(暂无设备表,无法使用)") + @PostMapping("/getDetailsAndMonitoringDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataList()); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftRController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticShiftRController.java similarity index 100% rename from src/main/java/com/gunshi/project/hsz/controller/OsmoticShiftRController.java rename to src/main/java/com/gunshi/project/ss/controller/OsmoticShiftRController.java diff --git a/src/main/java/com/gunshi/project/ss/controller/OsmoticWarnRController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticWarnRController.java new file mode 100644 index 0000000..fc9bc3d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/OsmoticWarnRController.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.WarnPageSo; +import com.gunshi.project.ss.entity.so.WarnSo; +import com.gunshi.project.ss.entity.vo.OsmoticWarnVo; +import com.gunshi.project.ss.model.OsmoticWarnR; +import com.gunshi.project.ss.service.OsmoticWarnRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Map; + +/** + * 描述: 隐患预警记录表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "隐患预警记录表") +@RestController +@RequestMapping(value="/osmoticWarnR") +public class OsmoticWarnRController { + + @Autowired + private OsmoticWarnRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody OsmoticWarnR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody OsmoticWarnR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "统计") + @PostMapping("/stat") + public R> stat(@RequestBody WarnSo warnSo) { + return R.ok(service.stat(warnSo)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody WarnPageSo warnPageSo) { + return R.ok(service.queryPage(warnPageSo)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/OsmoticWarnRuleController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticWarnRuleController.java new file mode 100644 index 0000000..4682ac9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/OsmoticWarnRuleController.java @@ -0,0 +1,88 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.WarnRulePageSo; +import com.gunshi.project.ss.model.OsmoticWarnRule; +import com.gunshi.project.ss.service.OsmoticWarnRuleService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; +/** + * 描述: 预警规则配置表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "预警规则配置表") +@RestController +@RequestMapping(value="/osmoticWarnRule") +public class OsmoticWarnRuleController { + + @Autowired + private OsmoticWarnRuleService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody OsmoticWarnRule dto) { + checkParam(dto); + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + private void checkParam(OsmoticWarnRule dto) { + Long id = dto.getId(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(OsmoticWarnRule::getStationCode,dto.getStationCode()) + .eq(OsmoticWarnRule::getLevel,dto.getLevel()); + if(dto.getType() == 3){ + queryWrapper.eq(OsmoticWarnRule::getDirection,dto.getDirection()); + } + if(id != null){ + queryWrapper.ne(OsmoticWarnRule::getId,id); + } + if(service.count(queryWrapper ) > 0){ + throw new IllegalArgumentException("该测点已存在该类型的告警"); + } + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody OsmoticWarnRule dto) { + checkParam(dto); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody WarnRulePageSo warnRulePageSo) { + return R.ok(service.queryPage(warnRulePageSo)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/OsmoticWaterRController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticWaterRController.java new file mode 100644 index 0000000..5518937 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/OsmoticWaterRController.java @@ -0,0 +1,218 @@ +package com.gunshi.project.ss.controller; + +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.OsmoticWaterRVo; +import com.gunshi.project.ss.listener.OsmoticWaterRImportListener; +import com.gunshi.project.ss.model.OsmoticWaterR; +import com.gunshi.project.ss.model.OsmoticWaterRule; +import com.gunshi.project.ss.service.OsmoticWaterRService; +import com.gunshi.project.ss.service.OsmoticWaterRuleService; +import com.gunshi.project.ss.util.ConvertUtil; +import com.gunshi.project.ss.util.DateUtil; +import com.gunshi.project.ss.util.ExcelUtil; +import com.gunshi.project.ss.util.ResultJson; +import com.gunshi.project.ss.util.excel.ExcelResult; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Serializable; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 描述: 水质采样记录表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水质采样记录表") +@RestController +@RequestMapping(value="/osmoticWaterR") +public class OsmoticWaterRController { + + @Autowired + private OsmoticWaterRService service; + + @Autowired + private OsmoticWaterRuleService osmoticWaterRuleService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody OsmoticWaterR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody OsmoticWaterR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "获取最新一条数据") + @PostMapping("/getLastData") + public R> getLastData() { + Map resMap = new HashMap<>(); + QueryWrapper qw = new QueryWrapper<>(); + qw.orderBy(true, false, "tm").last(" limit 1"); + OsmoticWaterR osmoticWaterR = service.getOne(qw); + if(ObjectUtils.isNotEmpty(osmoticWaterR)){ + resMap = JSON.parseObject(JSON.toJSONString(osmoticWaterR), Map.class); + // 获取标准值 + List list = osmoticWaterRuleService.list(); + if(CollectionUtils.isNotEmpty(list)){ + for (OsmoticWaterRule rule : list){ + String code = rule.getCode(); + String codeStandard = code + "Standard"; + if(resMap.containsKey(code)){ + if("~".equals(rule.getCondition())){ + resMap.put(codeStandard, "(" + rule.getOne() + rule.getCondition() + rule.getTwo() + ")"); + } else { + String codeLevel = resMap.get(code + "Level").toString(); + if(codeLevel.contains("Ⅰ")){ + resMap.put(codeStandard, "(" + rule.getCondition() + rule.getOne() + ")"); + } else if (codeLevel.contains("Ⅱ")){ + resMap.put(codeStandard, "(" + rule.getCondition() + rule.getTwo() + ")"); + } else if (codeLevel.contains("Ⅲ")){ + resMap.put(codeStandard, "(" + rule.getCondition() + rule.getThree() + ")"); + } else if (codeLevel.contains("Ⅳ")){ + resMap.put(codeStandard, "(" + rule.getCondition() + rule.getFour() + ")"); + } else if (codeLevel.contains("Ⅴ")){ + resMap.put(codeStandard, "(" + rule.getCondition() + rule.getFive() + ")"); + } + } + } + } + } + } + return R.ok(resMap); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated OsmoticWaterR osmoticWaterR) { + QueryWrapper wrapper = new QueryWrapper() + .ge(ObjectUtils.isNotNull(osmoticWaterR.getStartTime()), "tm", osmoticWaterR.getStartTime()) + .le(ObjectUtils.isNotNull(osmoticWaterR.getEndTime()), "tm", osmoticWaterR.getEndTime()); + if(StringUtils.isNotBlank(osmoticWaterR.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(osmoticWaterR.getIsAsc()) ? false : osmoticWaterR.getIsAsc(), osmoticWaterR.getOrderField()); + } + return R.ok(service.list(wrapper)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated OsmoticWaterR osmoticWaterR) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ge(ObjectUtils.isNotNull(osmoticWaterR.getStartTime()), "tm", osmoticWaterR.getStartTime()) + .le(ObjectUtils.isNotNull(osmoticWaterR.getEndTime()), "tm", osmoticWaterR.getEndTime()); + if(StringUtils.isNotBlank(osmoticWaterR.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(osmoticWaterR.getIsAsc()) ? false : osmoticWaterR.getIsAsc(), osmoticWaterR.getOrderField()); + } + return R.ok(service.page(osmoticWaterR.getPageSo().toPage(), wrapper)); + } + + /** + * 获取导入模板 + */ + @Operation(summary = "获取导入模板") + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) { + ExcelUtil.exportExcel(new ArrayList<>(), "水质整编表", OsmoticWaterRVo.class, response, "水质整编表"); + } + + /** + * 导入数据 + * + * @param file 导入文件 + * + */ + @Operation(summary = "导入数据") + @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResultJson importData(@RequestPart("file") MultipartFile file) throws Exception { + ExcelResult result = ExcelUtil.importExcel(file.getInputStream(), OsmoticWaterRVo.class, new OsmoticWaterRImportListener()); + return ResultJson.ok(result.getAnalysis()); + } + + @Operation(summary = "导出") + @PostMapping("/exportOsmoticWaterRDataExcel") + @CrossOrigin + public void exportOsmoticWaterRDataExcel(@RequestBody @Validated OsmoticWaterR osmoticWaterR, HttpServletResponse response) { + String filename = "水质整编表"; + if (ObjectUtils.isNotEmpty(osmoticWaterR.getStartTime())) { + filename.concat("_").concat(DateUtil.convertDateToString(osmoticWaterR.getStartTime())); + } + if (ObjectUtils.isNotEmpty(osmoticWaterR.getStartTime())) { + filename.concat("_").concat(DateUtil.convertDateToString(osmoticWaterR.getEndTime())); + } + List vos = ConvertUtil.entityToVoList(this.list(osmoticWaterR).getData(), OsmoticWaterRVo.class); + ExcelUtil.exportExcel(vos, filename, OsmoticWaterRVo.class, response, "水质整编表"); + } + + + @Operation(summary = "文件下载") + @PostMapping("/downloadFile") + @CrossOrigin + public void downloadFile(HttpServletResponse response) throws IOException { + String filePath = "doc/2002年6月1日_GB3838-2002地表水环境质量标准.pdf"; + File file = new File(filePath); + if (!file.exists()) { + new FileNotFoundException("文件不存在!"); + } + response.setCharacterEncoding("utf-8"); + response.setContentType("application/octet-stream; charset=UTF-8"); + response.setHeader("content-disposition", "attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode("GB3838-2002地表水环境质量标准.pdf", "UTF-8")); + InputStream inputStream = null; + OutputStream outputStream = null; + try { + inputStream = this.getClass().getClassLoader().getResourceAsStream(filePath); + outputStream = response.getOutputStream(); + byte[] buffer = new byte[1024]; + int len = 0; + while ((len = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, len); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + inputStream.close(); + outputStream.close(); + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/OsmoticWaterRuleController.java b/src/main/java/com/gunshi/project/ss/controller/OsmoticWaterRuleController.java new file mode 100644 index 0000000..c04d3ed --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/OsmoticWaterRuleController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.OsmoticWaterRule; +import com.gunshi.project.ss.service.OsmoticWaterRuleService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 水质质量标准规则表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水质质量标准规则表") +@RestController +@RequestMapping(value="/osmoticWaterRule") +public class OsmoticWaterRuleController { + + @Autowired + private OsmoticWaterRuleService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody OsmoticWaterRule dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody OsmoticWaterRule dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/PersonnelPlanController.java b/src/main/java/com/gunshi/project/ss/controller/PersonnelPlanController.java new file mode 100644 index 0000000..c5fd011 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/PersonnelPlanController.java @@ -0,0 +1,295 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.PersonnelPlanPage; +import com.gunshi.project.ss.model.PersonnelPlan; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.PersonnelPlanService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.ruoyi.common.utils.poi.ExcelUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Tag(name = "培训计划表") +@RestController +@RequestMapping(value = "/personnelPlan") +public class PersonnelPlanController extends AbstractCommonFileController { + + + @Autowired + private PersonnelPlanService service; + + @Autowired + private FileAssociationsService fileService; + + @Override + public String getGroupId() { + return "personnelPlan"; + } + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody PersonnelPlan dto) { + + LambdaQueryChainWrapper query = service.lambdaQuery() + .eq(PersonnelPlan::getType, dto.getType()) + .eq(PersonnelPlan::getName, dto.getName()); + if (query.count() > 0) { + throw new IllegalArgumentException("当前培训主题培训班名称重复"); + } + + if (Objects.nonNull(dto.getStm()) && Objects.nonNull(dto.getEtm()) && dto.getStm().compareTo(dto.getEtm()) > 0) { + throw new IllegalArgumentException("开始时间不能大于结束时间"); + } + + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody PersonnelPlan dto) { + + LambdaQueryChainWrapper query = service.lambdaQuery() + .ne(PersonnelPlan::getId, dto.getId()) + .eq(PersonnelPlan::getType, dto.getType()) + .eq(PersonnelPlan::getName, dto.getName()); + if (query.count() > 0) { + throw new IllegalArgumentException("当前培训主题培训班名称重复"); + } + + if (Objects.nonNull(dto.getStm()) && Objects.nonNull(dto.getEtm()) && dto.getStm().compareTo(dto.getEtm()) > 0) { + throw new IllegalArgumentException("开始时间不能大于结束时间"); + } + + dto.setCreateTime(null); + dto.setCreateBy(null); + dto.setCreateName(null); + dto.setUpdateTime(new Date()); + boolean result = service.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(result ? dto : null); + } + + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean data = service.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return R.ok(data); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated PersonnelPlanPage dto) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + if (StringUtils.isNotBlank(dto.getName())){ + query.like(PersonnelPlan::getName, dto.getName()); + } + return R.ok(query + .eq(PersonnelPlan::getStatus, 1) + .list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated PersonnelPlanPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + Date stm = page.getStm(); + Date etm = page.getEtm(); + + if (Objects.nonNull(etm) && Objects.nonNull(stm)) { + query.nested(o -> o.between(PersonnelPlan::getStm, stm, etm).or().between(PersonnelPlan::getEtm, stm, etm)); + } else { + + if (Objects.nonNull(stm)) { + query.ge(PersonnelPlan::getStm, stm); + } + + if (Objects.nonNull(etm)) { + query.le(PersonnelPlan::getEtm, etm); + } + } + + + String name = page.getName(); + if (StringUtils.isNotBlank(name)) { + query.like(PersonnelPlan::getName, name); + } + + String applicant = page.getApplicant(); + if (StringUtils.isNotBlank(applicant)) { + query.like(PersonnelPlan::getApplicant, applicant); + } + query.orderByDesc(PersonnelPlan::getStm).orderByDesc(PersonnelPlan::getCreateTime); + Page data = service.page(page.getPageSo().toPage(), query); + data.getRecords().forEach(item -> + item.setFiles(fileService.getFiles(getGroupId(), item.getId().toString())) + ); + return R.ok(data); + } + + + @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @Operation(summary = "上传") + public R> uploading(@RequestPart("file") MultipartFile file) throws IOException { + + //判断文件是否有数据 + if (ObjectUtils.isEmpty(file) || file.getSize() <= 0) { + throw new IllegalArgumentException("上传文件为空"); + } + + ExcelUtil util = new ExcelUtil<>(PersonnelPlan.class); + + List plans = util.importExcel(file.getInputStream()); + + if (CollectionUtils.isNotEmpty(plans)) { + checkData(plans); + Date regDate = new Date(); + plans.forEach(o -> o.setId(IdWorker.getId()) + .setRegDate(regDate) + .setStatus(1) +// .setApplicant(SecurityUtils.getUsername()) + ); + boolean b = service.saveBatch(plans); + if (!b) { + throw new IllegalArgumentException("上传失败"); + } + } + + return R.ok(plans); + } + + /** + * 校验上传的数据 + * name type,stm ,etm , , addr, unit, content,numPeople,scope 不能为空 + * stm etm 进行时间格式校验 + */ + private void checkData(List list) { + if (CollectionUtils.isEmpty(list)) { + throw new IllegalArgumentException("上传数据为空"); + } + + int rowNumber = 1; + for (PersonnelPlan o : list) { + if (StringUtils.isBlank(o.getName())) { + throw new IllegalArgumentException("第" + rowNumber + "行的培训班名称不能为空"); + } + if (Objects.isNull(o.getType())) { + throw new IllegalArgumentException("第" + rowNumber + "行的培训主题不能为空"); + } + if (Objects.isNull(o.getStm())) { + throw new IllegalArgumentException("第" + rowNumber + "行的开始培训时间不能为空"); + } + if (Objects.isNull(o.getEtm())) { + throw new IllegalArgumentException("第" + rowNumber + "行的结束培训时间不能为空"); + } + if (StringUtils.isBlank(o.getAddr())) { + throw new IllegalArgumentException("第" + rowNumber + "行的培训地点不能为空"); + } + if (StringUtils.isBlank(o.getUnit())) { + throw new IllegalArgumentException("第" + rowNumber + "行的培训单位不能为空"); + } + if (StringUtils.isBlank(o.getContent())) { + throw new IllegalArgumentException("第" + rowNumber + "行的培训内容不能为空"); + } + if (o.getNumPeople() == null || o.getNumPeople() <= 0) { + throw new IllegalArgumentException("第" + rowNumber + "行的参训人数必须大于0"); + } + if (StringUtils.isBlank(o.getScope())) { + throw new IllegalArgumentException("第" + rowNumber + "行的培训范围不能为空"); + } + rowNumber++; + } + } + + @PostMapping("/download") + @Operation(summary = "下载") + public void download(@RequestBody PersonnelPlanPage page, HttpServletResponse response) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + Date stm = page.getStm(); + Date etm = page.getEtm(); + + if (Objects.nonNull(etm) && Objects.nonNull(stm)) { + query.nested(o -> o.between(PersonnelPlan::getStm, stm, etm).or().between(PersonnelPlan::getEtm, stm, etm)); + } else { + + if (Objects.nonNull(stm)) { + query.ge(PersonnelPlan::getStm, stm); + } + + if (Objects.nonNull(etm)) { + query.le(PersonnelPlan::getEtm, etm); + } + } + + + String name = page.getName(); + if (StringUtils.isNotBlank(name)) { + query.like(PersonnelPlan::getName, name); + } + + String applicant = page.getApplicant(); + if (StringUtils.isNotBlank(applicant)) { + query.like(PersonnelPlan::getApplicant, applicant); + } + query.orderByDesc(PersonnelPlan::getStm).orderByDesc(PersonnelPlan::getCreateTime); + + List list = service.list(query); + + ExcelUtil util = new ExcelUtil<>(PersonnelPlan.class); + + util.exportExcel(response, list, "培训计划"); + + } + + @GetMapping("/template") + @Operation(summary = "下载模板") + public void download(HttpServletResponse response) { + ExcelUtil util = new ExcelUtil<>(PersonnelPlan.class); + + util.importTemplateExcel(response, "培训计划"); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/PersonnelPlanLogController.java b/src/main/java/com/gunshi/project/ss/controller/PersonnelPlanLogController.java new file mode 100644 index 0000000..cee92c7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/PersonnelPlanLogController.java @@ -0,0 +1,267 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.PersonnelPlanLogPage; +import com.gunshi.project.ss.entity.vo.PersonnelPlanLogStatisticsVo; +import com.gunshi.project.ss.model.PersonnelPlan; +import com.gunshi.project.ss.model.PersonnelPlanLog; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.PersonnelPlanLogService; +import com.gunshi.project.ss.service.PersonnelPlanService; +import com.gunshi.project.ss.util.DateUtil; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.time.LocalDate; +import java.util.*; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Tag(name = "培训记录表") +@RestController +@RequestMapping(value = "/personnelPlanLog") +public class PersonnelPlanLogController extends AbstractCommonFileController{ + + + @Autowired + private PersonnelPlanLogService service; + + + @Autowired + private PersonnelPlanService planService; + + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody PersonnelPlanLog dto) { + + if (Objects.nonNull(dto.getStm()) && Objects.nonNull(dto.getEtm()) && dto.getStm().compareTo(dto.getEtm()) >= 0){ + throw new IllegalArgumentException("开始时间不能大于结束时间"); + } + + LambdaQueryChainWrapper query = service.lambdaQuery() + .eq(PersonnelPlanLog::getPlanDate, dto. getPlanDate()) + .eq(PersonnelPlanLog::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前培训日期标题名称重复"); + } + + if (Objects.nonNull(dto.getPlanId()) && planService.lambdaQuery().eq(PersonnelPlan::getId, dto.getPlanId()).count() == 0) { + throw new IllegalArgumentException("培训计划不存在"); + } + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + boolean result = service.save(dto); + + if (result){ + fileService.saveFile(dto.getFiles1(), getGroupId(), String.valueOf( dto.getId()),"1"); + fileService.saveFile(dto.getFiles2(), getGroupId(), String.valueOf( dto.getId()),"2"); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody PersonnelPlanLog dto) { + + if (Objects.nonNull(dto.getStm()) && Objects.nonNull(dto.getEtm()) && dto.getStm().compareTo(dto.getEtm()) >= 0){ + throw new IllegalArgumentException("开始时间不能大于结束时间"); + } + + LambdaQueryChainWrapper query = service.lambdaQuery() + .ne(PersonnelPlanLog::getId, dto.getId()) + .eq(PersonnelPlanLog::getPlanDate, dto. getPlanDate()) + .eq(PersonnelPlanLog::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前培训日期标题名称重复"); + } + if (Objects.nonNull(dto.getPlanId()) && planService.lambdaQuery().eq(PersonnelPlan::getId, dto.getPlanId()).count() == 0) { + throw new IllegalArgumentException("培训计划不存在"); + } + + dto.setCreateTime(null); + dto.setCreateBy(null); + dto.setCreateName(null); + dto.setUpdateTime(new Date()); + boolean result = service.updateById(dto); + if (result){ + fileService.saveFile(dto.getFiles1(), getGroupId(), String.valueOf( dto.getId()),"1"); + fileService.saveFile(dto.getFiles2(), getGroupId(), String.valueOf( dto.getId()),"2"); + } + return R.ok(result ? dto : null); + } + + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + @Operation(summary = "获取详情(包括文件信息)") + @GetMapping("/get/{id}") + public R get(@Schema(name = "id") @PathVariable("id") Serializable id) { + PersonnelPlanLog o = service.getById(id); + if (Objects.isNull(o)) { + throw new IllegalArgumentException("当前数据不存在"); + } + + o.setFiles1(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"1")); + o.setFiles2(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"2")); + return R.ok(o); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery() + .list()); + } + + @Operation(summary = "统计") + @GetMapping("/statistics/{year}") + public R statistics(@PathVariable("year") Integer year) { + if (year < 1970 || year > LocalDate.now().getYear()) { + throw new IllegalArgumentException("年份不合法"); + } + //plan planLog + Date stm = DateUtil.convertStringToDate(year + "-01-01 00:00:00"); + Date etm = DateUtil.convertStringToDate(year + "-12-31 23:59:59"); + List planLogs = service.lambdaQuery() + .between(PersonnelPlanLog::getPlanDate, stm, etm) + .list(); + List plans = planService.lambdaQuery() + .between(PersonnelPlan::getStm, stm, etm) + .list(); + + PersonnelPlanLogStatisticsVo vo = new PersonnelPlanLogStatisticsVo(); + +// Map map1 = Maps.newHashMap(); +// Calendar calendar = Calendar.getInstance(); +// int month = calendar.get(Calendar.MONTH) + 1; + if (CollectionUtils.isNotEmpty(planLogs)) { + + vo.setNumberOfPeriods1(planLogs.size()); + vo.setNumberOfPeriods2(plans.stream().mapToInt(PersonnelPlan::getNum).sum()); + vo.setPersonNum1(planLogs.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()); + vo.setPersonNum2(plans.stream() + .map( + item -> item.getNumPeople() * item.getNum() + ).mapToInt(Integer::intValue).sum() + ); + + Calendar calendar = Calendar.getInstance(); + List logStatPerMonth = new ArrayList<>(); + for (int i = 0; i < 12; i++) { + int month = i; //calendar的月份是从0开始 + List logsPerMonth = planLogs.stream().filter(log -> { + Date planDate = log.getPlanDate(); + calendar.setTime(planDate); + return month == calendar.get(Calendar.MONTH); + }).toList(); + + //month num1实际人数 num2实际期数 + PersonnelPlanLogStatisticsVo.EchartsData chartItem = new PersonnelPlanLogStatisticsVo.EchartsData(); + chartItem.setMonth(i + 1); //calendar的月份是从0开始 + chartItem.setNum1(logsPerMonth.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()); + chartItem.setNum2(logsPerMonth.size()); + + logStatPerMonth.add(chartItem); +// PersonnelPlanLogStatisticsVo.EchartsData echartsData1 = map1.get(i); +// if (Objects.isNull(echartsData1)) { +// echartsData1 = new PersonnelPlanLogStatisticsVo.EchartsData(); +// } +// int finalI = i; +// List list = planLogs.stream() +// .filter(item -> +// { +// calendar.setTime(item.getPlanDate()); +// return month == finalI; +// }) +// .toList(); +// +// echartsData1.setMonth(finalI) +// .setNum1(list.stream().mapToInt(PersonnelPlanLog::getNumPeople).sum()) +// .setNum2(list.size()); +// map1.put(i, echartsData1); + } + vo.setList1(logStatPerMonth); + } + + + return R.ok(vo); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated PersonnelPlanLogPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + Date stm = page.getStm(); + if (Objects.nonNull(stm)) { + query.ge(PersonnelPlanLog::getPlanDate, stm); + } + + Date etm = page.getEtm(); + if (Objects.nonNull(etm)) { + query.le(PersonnelPlanLog::getPlanDate, etm); + } + + Integer type = page.getType(); + if (Objects.nonNull(type)) { + query.eq(PersonnelPlanLog::getType, type); + } + + Long planId = page.getPlanId(); + if (Objects.nonNull(planId)) { + query.eq(PersonnelPlanLog::getPlanId, planId); + } + + String trainees = page.getTrainees(); + if (StringUtils.isNotBlank(trainees)) { + query.like(PersonnelPlanLog::getTrainees, trainees); + } + + String unit = page.getUnit(); + if (StringUtils.isNotBlank(unit)) { + query.like(PersonnelPlanLog::getUnit, unit); + } + + query.orderByDesc(PersonnelPlanLog::getPlanDate); + + Page data = service.page(page.getPageSo().toPage(), query); + data.getRecords().forEach(o -> { + o.setFiles1(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"1")); + o.setFiles2(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"2")); + }); + return R.ok(data); + } + + @Override + public String getGroupId() { + return "personnelPlanLog"; + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/PrePlaceController.java b/src/main/java/com/gunshi/project/ss/controller/PrePlaceController.java new file mode 100644 index 0000000..33b6ea6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/PrePlaceController.java @@ -0,0 +1,122 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.PrePlacePageSo; +import com.gunshi.project.ss.model.PrePlace; +import com.gunshi.project.ss.model.PrePlaceDetail; +import com.gunshi.project.ss.service.PrePlaceDetailService; +import com.gunshi.project.ss.service.PrePlaceService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "白蚁-防治点") +@RestController +@RequestMapping(value="/bypp") +public class PrePlaceController { + + @Autowired + private PrePlaceService prePlaceService; + + @Autowired + private PrePlaceDetailService prePlaceDetailService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody PrePlace dto) { + + boolean result = prePlaceService.saveData(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody PrePlace dto) { + boolean result = prePlaceService.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = prePlaceService.deleteById(id); + return R.ok(b); + } + + @Operation(summary = "列表") + @GetMapping("/list") + public R> list() { + List list = prePlaceService.lambdaQuery().orderByAsc(PrePlace::getCreateTime).list(); + return R.ok(list); + } + + + @Operation(summary = "防治部位新增") + @PostMapping("/detail/insert") + public R detailInsert(@Validated(Insert.class) @RequestBody PrePlaceDetail dto) { + boolean result = prePlaceDetailService.saveData(dto); + return R.ok(result ? dto:null); + } + + @Operation(summary = "防治部位修改") + @PostMapping("/detail/update") + public R detailUpdate(@Validated(Update.class) @RequestBody PrePlaceDetail dto) { + boolean result = prePlaceDetailService.update(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "防治部位列表") + @GetMapping("/detail/list") + public R> detailList() { + List list = prePlaceDetailService.lambdaQuery().orderByAsc(PrePlaceDetail::getOrder).list(); + return R.ok(list); + } + + @Operation(summary = "防治部位列表") + @PostMapping("/detail/page") + public R> detailList(@RequestBody PrePlacePageSo pageSo) { + return R.ok(prePlaceDetailService.pageQuery(pageSo)); + } + + + @Operation(summary = "防治部位删除") + @GetMapping("/detail/del/{id}") + public R detailDel(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = prePlaceDetailService.deleteById(id); + return R.ok(b); + } + + @Operation(summary = "是否启用") + @GetMapping("/switch/{id}") + public R isEnable(@Schema(name = "id") @PathVariable("id") Serializable id) { + PrePlaceDetail byId = prePlaceDetailService.getById(id); + if(byId == null) { + throw new RuntimeException("该数据不存在,请检查"); + } + Integer isEnable = byId.getIsEnable(); + if(isEnable > 0){ + byId.setIsEnable(0); + }else{ + byId.setIsEnable(1); + } + boolean result = prePlaceDetailService.updateById(byId); + return R.ok(result ? false : true); + } + + //查询防治部位 (可根据 防治点查询,也可以根据防治部位查询) + @Operation(summary = "查询防治部位(可根据 防治点查询,也可以根据防治部位查询)") + @PostMapping("/tree") + public R> tree(@RequestBody PrePlacePageSo dto) { + List res = prePlaceService.tree(dto); + return R.ok(res); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ProjectEventsController.java b/src/main/java/com/gunshi/project/ss/controller/ProjectEventsController.java new file mode 100644 index 0000000..5239a1d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ProjectEventsController.java @@ -0,0 +1,82 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.CommonDataPageSo; +import com.gunshi.project.ss.entity.vo.ProjectEventsVo; +import com.gunshi.project.ss.model.ProjectEvents; +import com.gunshi.project.ss.service.ProjectEventsService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +/** + * 描述: 工程大事记 + * author: wanyan + * date: 2024-08-20 17:40:37 + */ +@Tag(name = "工程大事记") +@RestController +@RequestMapping(value="/projectEvents") +public class ProjectEventsController extends AbstractCommonFileController{ + + @Autowired + private ProjectEventsService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ProjectEvents dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ProjectEvents dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated CommonDataPageSo so) { + return R.ok(service.queryList(so)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated CommonDataPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "全周期档案") + @PostMapping("/doc/page") + public R> filePage(@RequestBody @Validated CommonDataPageSo page) { + return R.ok(service.filePage(page)); + } + + @Operation(summary = "导出") + @PostMapping("/export") + public void export(@RequestBody @Validated CommonDataPageSo page, HttpServletResponse response) { + service.export(page,response); + } + + @Override + public String getGroupId() { + return "ProjectEvents"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ProjectSafeAnalyseController.java b/src/main/java/com/gunshi/project/ss/controller/ProjectSafeAnalyseController.java new file mode 100644 index 0000000..e389960 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ProjectSafeAnalyseController.java @@ -0,0 +1,123 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.entity.dto.ProjectSafeCalculateDto; +import com.gunshi.project.ss.entity.dto.ProjectSaveReportDto; +import com.gunshi.project.ss.entity.dto.SyRegressionDataDto; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import com.gunshi.project.ss.entity.vo.ProjectSafeCalculateVo; +import com.gunshi.project.ss.entity.vo.ProjectSaveReportVo; +import com.gunshi.project.ss.model.ForecastTask; +import com.gunshi.project.ss.model.SyRegressionData; +import com.gunshi.project.ss.service.ForecastResultsService; +import com.gunshi.project.ss.service.JcskSyRService; +import com.gunshi.project.ss.service.SyRegressionDataService; +import com.gunshi.project.ss.util.RegressionEquationFormatter; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +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; + +@Tag(name = "工程安全监测") +@RestController +@RequestMapping(value="/projectSafe") +public class ProjectSafeAnalyseController { + + + @Autowired + private JcskSyRService jcskSyRService; + + @Autowired + private SyRegressionDataService syRegressionDataService; + + @Autowired + private ForecastResultsService forecastResultsService; + + @Operation(summary = "多项式回归") + @PostMapping("/caculate") + public R calculate(@RequestBody ProjectSafeCalculateDto dto){ + ProjectSafeCalculateVo ans = jcskSyRService.calculate(dto); + return R.ok(ans); + } + + @Operation(summary = "多项式回归-导出") + @PostMapping("/caculate/export") + public void caculateExport(@RequestBody ProjectSafeCalculateDto dto, HttpServletResponse response){ + ProjectSafeCalculateVo ans = jcskSyRService.calculate(dto); + syRegressionDataService.export(dto.getDvcd(),ans,response); + } + + @Operation(summary = "预报") + @PostMapping("/report") + public R report(@RequestBody ProjectSaveReportDto projectSaveReportDto){ + ProjectSaveReportVo res = new ProjectSaveReportVo(); + ForecastTask forecastTask = projectSaveReportDto.getForecastTask(); + List voList = forecastResultsService.getHumanForecastResult(forecastTask); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setDvcd(projectSaveReportDto.getDvcd()); + syRegressionData.setOrder(projectSaveReportDto.getOrder()); + List queryReg = syRegressionDataService.queryData(syRegressionData);//获取方程组 + if(queryReg.isEmpty()){ + return R.ok(null); + } + //计算 + List datas = forecastResultsService.calculateY(queryReg.get(0),voList); + res.setDatas(datas); + String formatEquation = RegressionEquationFormatter.formatEquation(queryReg.get(0).getRegressionEquation()); + res.setRegression(formatEquation); + return R.ok(res); + } + + @Operation(summary = "预报-导出") + @PostMapping("/report/export") + public void reportExport(@RequestBody ProjectSaveReportDto projectSaveReportDto,HttpServletResponse response){ + ForecastTask forecastTask = projectSaveReportDto.getForecastTask(); + List voList = forecastResultsService.getHumanForecastResult(forecastTask); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setDvcd(projectSaveReportDto.getDvcd()); + syRegressionData.setOrder(projectSaveReportDto.getOrder()); + List queryReg = syRegressionDataService.queryData(syRegressionData);//获取方程组 + if(queryReg.isEmpty()){ + return; + } + //计算 + List res = forecastResultsService.calculateY(queryReg.get(0),voList); + String formatEquation = RegressionEquationFormatter.formatEquation(queryReg.get(0).getRegressionEquation()); + forecastResultsService.reportExport(res,formatEquation,projectSaveReportDto.getDvcd(),response); + } + + + + @Operation(summary = "保存多线程回归方程") + @PostMapping("/save") + public R save(@RequestBody SyRegressionDataDto dto){ + if(!dto.getList().isEmpty()){ + syRegressionDataService.saveBatch(dto.getList()); + } + return R.ok(true); + } + + @Operation(summary = "删除多线程回归方程") + @PostMapping("/del") + public R delete(@RequestBody SyRegressionDataDto dto){ + if(!dto.getList().isEmpty()){ + syRegressionDataService.removeBatchByIds(dto.getList()); + } + return R.ok(true); + } + + @Operation(summary = "查找多线程回归方程") + public R> list(@RequestBody SyRegressionData dto){ + List res = syRegressionDataService.queryData(dto); + return R.ok(res); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RainBasinDivisionController.java b/src/main/java/com/gunshi/project/ss/controller/RainBasinDivisionController.java new file mode 100644 index 0000000..df0050e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RainBasinDivisionController.java @@ -0,0 +1,62 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.annotation.Get; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.StPptnSo; +import com.gunshi.project.ss.entity.vo.CartogramVo; +import com.gunshi.project.ss.entity.vo.StPptnDetailsVo; +import com.gunshi.project.ss.entity.vo.StPptnVo; +import com.gunshi.project.ss.common.model.StPptnRReal; +import com.gunshi.project.ss.service.RainBasinDivisionService; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + + +@RestController +@RequestMapping("/attResBase") +@Tag(name = "雨情站详细信息查询接口") +public class RainBasinDivisionController { + + @Autowired + private RainBasinDivisionService rainBasinDivisionService; + + + @Post(path = "/rainBasinDivision/queryStStbprpPerHour/StcdAndStartTimeAndEndTime",summary = "根据测站编码查询时间段内每小时的雨量") + public R> queryStPptnPerHourByStcdAndStartTimeAndEndTime(@RequestBody @Validated StPptnSo stPptnSo){ + return R.ok(rainBasinDivisionService.queryStPptnPerHourByStcdAndStartTimeAndEndTime(stPptnSo)); + } + + @Post(path = "/rainBasinDivision/queryStStbprpPerHourChart/StcdAndStartTimeAndEndTime",summary = "根据测站编码查询时间段内每小时的雨量统计") + public R queryStPptnPerHourChartByStcdAndStartTimeAndEndTime(@RequestBody @Validated StPptnSo stPptnSo){ + return R.ok(rainBasinDivisionService.queryStPptnPerHourChartByStcdAndStartTimeAndEndTime(stPptnSo)); + } + + @Post(path = "/rainBasinDivision/queryStStbprpPerDay/StcdAndStartTimeAndEndTime",summary = "根据测站编码查询时间段内每天的雨量") + public R> queryStPptnPerDayByStcdAndStartTimeAndEndTime(@RequestBody @Validated StPptnSo stPptnSo){ + return R.ok(rainBasinDivisionService.queryStPptnPerDayByStcdAndStartTimeAndEndTime(stPptnSo).reversed()); + } + + @Post(path = "/rainBasinDivision/queryStStbprpPerDayChart/StcdAndStartTimeAndEndTime",summary = "根据测站编码查询时间段内每天的雨量统计") + public R queryStPptnPerDayChartChartByStcdAndStartTimeAndEndTime(@RequestBody @Validated StPptnSo stPptnSo){ + return R.ok(rainBasinDivisionService.queryStPptnPerDayChartChartByStcdAndStartTimeAndEndTime(stPptnSo)); + } + + @Get(path = "/rainBasinDivision/queryStPptnDetails/stcd",summary = "根据测站编码查询详细雨量情况") + public R queryStPptnDetailsByStcd(@RequestParam("stcd") @Parameter(description = "测站编码") String stcd){ + return R.ok(rainBasinDivisionService.queryStPptnDetailsByStcd(stcd)); + } + + @Post(path = "/maxRain",summary = "根据测站编码查询时间段内最大小时雨量") + public R maxRain(@RequestBody @Validated StPptnSo stPptnSo){ + return R.ok(rainBasinDivisionService.maxRain(stPptnSo)); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RealRainController.java b/src/main/java/com/gunshi/project/ss/controller/RealRainController.java new file mode 100644 index 0000000..dceb4ed --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RealRainController.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.RealRainBaseSo; +import com.gunshi.project.ss.entity.vo.RealRainListVo; +import com.gunshi.project.ss.service.RealRainService; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +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; + + +@RestController +@RequestMapping("/real/rain") +@Tag(name = "降雨信息查询接口") +@Data +public class RealRainController { + + @Autowired + private RealRainService realRainService; + + + @Post(path="/list", summary = "实时雨情-降雨信息-查询接口") + public R> getRealRainList(@RequestBody RealRainBaseSo realRainBaseSo) { + List list = realRainService.getRealRainList(realRainBaseSo); + return R.ok(list); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ResBriefController.java b/src/main/java/com/gunshi/project/ss/controller/ResBriefController.java new file mode 100644 index 0000000..5434289 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResBriefController.java @@ -0,0 +1,43 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.project.ss.model.ResBriefR; +import com.gunshi.project.ss.service.ResBriefRService; +import com.ruoyi.common.core.domain.R; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; +import java.util.List; + +/** + * @author lyf + * @since 2025-04-25 + */ +@Tag(name = "汛情简报接口") +@RestController +@RequestMapping(value="/resBrief") +public class ResBriefController { + @Autowired + private ResBriefRService resBriefRService; + + @GetMapping("/getResBriefList") + public R> getResBriefList( + @RequestParam(value = "startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate, + @RequestParam(value = "endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate + ) { + if (startDate.after(endDate)) { + return R.fail("开始日期不能大于结束日期"); + } + return R.ok(resBriefRService.getResBriefList(startDate, endDate)); + } + + @GetMapping("/execute") + public void executeSyncData(){ + resBriefRService.scheduledScan(); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ResFloodRoadController.java b/src/main/java/com/gunshi/project/ss/controller/ResFloodRoadController.java new file mode 100644 index 0000000..215212c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResFloodRoadController.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ResFloodRoad; +import com.gunshi.project.ss.service.ResFloodRoadService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 防汛道路 + * author: xusan + * date: 2024-11-14 10:37:15 + */ +@Tag(name = "防汛道路") +@RestController +@RequestMapping(value="/resFloodRoad") +public class ResFloodRoadController { + + @Autowired + private ResFloodRoadService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResFloodRoad dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResFloodRoad dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ResMangUnitController.java b/src/main/java/com/gunshi/project/ss/controller/ResMangUnitController.java new file mode 100644 index 0000000..e4df116 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResMangUnitController.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ResCodeSo; +import com.gunshi.project.ss.model.ResMangUnit; +import com.gunshi.project.ss.service.ResMangUnitService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 水库管理单位表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库管理单位表") +@RestController +@RequestMapping(value="/resMangUnit") +public class ResMangUnitController { + + @Autowired + private ResMangUnitService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResMangUnit dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResMangUnit dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@Validated @RequestBody ResCodeSo so) { + return R.ok(service.lambdaQuery().eq(ResMangUnit::getResCode,so.getResCode()).list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ResMonthEcoFlowController.java b/src/main/java/com/gunshi/project/ss/controller/ResMonthEcoFlowController.java new file mode 100644 index 0000000..a49da12 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResMonthEcoFlowController.java @@ -0,0 +1,88 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ResMonthEcoFlowListSo; +import com.gunshi.project.ss.model.ResMonthEcoFlow; +import com.gunshi.project.ss.service.ResMonthEcoFlowService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 水库月核定生态流量表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库月核定生态流量表") +@RestController +@RequestMapping(value="/resMonthEcoFlow") +public class ResMonthEcoFlowController { + + @Autowired + private ResMonthEcoFlowService service; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResMonthEcoFlow dto) { + dto.setModitime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResMonthEcoFlow dto) { + if (Objects.isNull(service.getById(dto.getId()))){ + throw new IllegalArgumentException("当前数据不存在"); + } + dto.setModitime(null); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "批量修改") + @PostMapping("/updates") + public R updates(@Validated(Update.class) @RequestBody List dto) { + + dto = dto.stream().map(x -> x.setModitime(new Date())).collect(Collectors.toList()); + boolean result = service.updateBatchById(dto); + + return R.ok(result); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))){ + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@Validated @RequestBody ResMonthEcoFlowListSo vo) { + LocalDateTime stm = LocalDateTime.of(vo.getYear(), 1, 1, 0, 0, 0); + LocalDateTime etm = LocalDateTime.of(vo.getYear(), 12, 31, 23, 59, 59); + return R.ok(service.lambdaQuery().between(ResMonthEcoFlow::getModitime,stm,etm).orderByAsc(ResMonthEcoFlow::getMonth).list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ResPersonController.java b/src/main/java/com/gunshi/project/ss/controller/ResPersonController.java new file mode 100644 index 0000000..ad0a8c3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResPersonController.java @@ -0,0 +1,115 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ResPersonPage; +import com.gunshi.project.ss.model.ResPerson; +import com.gunshi.project.ss.service.ResPersonService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Tag(name = "责任人表") +@RestController +@RequestMapping(value="/resPerson") +public class ResPersonController { + + + @Autowired + private ResPersonService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResPerson dto) { + + LambdaQueryChainWrapper query = service.lambdaQuery() + .eq(ResPerson::getType, dto.getType()) + .eq(ResPerson::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前责任类型名字重复"); + } + + dto.setCreateTime(new Date()); + dto.setId(IdWorker.getId()); + + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResPerson dto) { + + LambdaQueryChainWrapper query = service.lambdaQuery() + .ne(ResPerson::getId, dto.getId()) + .eq(ResPerson::getType, dto.getType()) + .eq(ResPerson::getName, dto.getName()); + if (query.count() > 0){ + throw new IllegalArgumentException("当前责任类型名字重复"); + } + dto.setCreateTime(null); + dto.setCreateBy(null); + dto.setCreateName(null); + dto.setUpdateTime(new Date()); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated ResPersonPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + Integer type = page.getType(); + if (Objects.nonNull(type)){ + query.eq(ResPerson::getType, type); + } + + String name = page.getName(); + if (StringUtils.isNotBlank(name)){ + query.like(ResPerson::getName, name); + } + + String contactInfo = page.getContactInfo(); + if (StringUtils.isNotBlank(contactInfo)){ + query.like(ResPerson::getContactInfo, contactInfo); + } + + return R.ok(service.page(page.getPageSo().toPage(),query)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ResPlanBController.java b/src/main/java/com/gunshi/project/ss/controller/ResPlanBController.java new file mode 100644 index 0000000..9f45677 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResPlanBController.java @@ -0,0 +1,119 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ResCodeSo; +import com.gunshi.project.ss.model.ResPlanB; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.ResPlanBService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 水库预案表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库预案表") +@RestController +@RequestMapping(value="/resPlanB") +public class ResPlanBController extends AbstractCommonFileController{ + + @Autowired + private ResPlanBService service; + + @Autowired + private FileAssociationsService fileService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResPlanB dto) { + dto.setId(IdWorker.getId()); + dto.setModitime(new Date()); + boolean result = service.save(dto); + + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf( dto.getId())); + } + + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResPlanB dto) { + if (Objects.isNull(service.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + if(dto.getFiles() != null && !dto.getFiles().isEmpty()){ + dto.setModitime(new Date()); + } + boolean result = service.updateById(dto); + + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf( dto.getId())); + } + + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = service.removeById(id); + + if (data){ + fileService.deleteFile(getGroupId(),id.toString()); + } + + return R.ok(data); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@Validated @RequestBody ResCodeSo so) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + if (StringUtils.isNotBlank(so.getResCode())){ + query.eq(ResPlanB::getResCode, so.getResCode()); + } + if (StringUtils.isNotBlank(so.getType())){ + query.eq(ResPlanB::getType, so.getType()); + } + query.orderByDesc(ResPlanB::getModitime); + List list = query.list(); + + if (CollectionUtils.isNotEmpty(list)){ + list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),String.valueOf( o.getId())))); + } + + return R.ok(list); + } +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + @Override + public String getGroupId() { + return "ResPlanB"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ResProjectImgController.java b/src/main/java/com/gunshi/project/ss/controller/ResProjectImgController.java new file mode 100644 index 0000000..704e88d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResProjectImgController.java @@ -0,0 +1,112 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ResCodeSo; +import com.gunshi.project.ss.model.ResProjectImg; +import com.gunshi.project.ss.service.AttResBaseService; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.ResProjectImgService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 水库工程图片 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库工程图片") +@RestController +@RequestMapping(value="/resProjectImg") +public class ResProjectImgController extends AbstractCommonFileController{ + + @Autowired + private ResProjectImgService service; + + @Autowired + private FileAssociationsService fileService; + + @Autowired + private AttResBaseService resService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResProjectImg dto) { + if (Objects.isNull(resService.getById(dto.getResCode()))){ + throw new RuntimeException("当前水库不存在"); + } + dto.setId(IdWorker.getId()); + dto.setModitime(new Date()); + boolean result = service.save(dto); + if (result){ + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf( dto.getId())); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResProjectImg dto) { + if (Objects.isNull(resService.getById(dto.getResCode()))){ + throw new RuntimeException("当前水库不存在"); + } + if (Objects.isNull(service.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = service.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf( dto.getId())); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = service.removeById(id); + + if (data){ + fileService.deleteFile(getGroupId(),id.toString()); + } + + return R.ok(data); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@Validated @RequestBody ResCodeSo so) { + List list = service.lambdaQuery().eq(ResProjectImg::getResCode, so.getResCode()) + .orderByAsc(ResProjectImg::getSortOn) + .orderByDesc(ResProjectImg::getModitime) + .list(); + if (CollectionUtils.isNotEmpty(list)){ + list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),String.valueOf( o.getId())))); + } + return R.ok(list); + } +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + @Override + public String getGroupId() { + return "ResProjectImg"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ResSafePersonBController.java b/src/main/java/com/gunshi/project/ss/controller/ResSafePersonBController.java new file mode 100644 index 0000000..3213d09 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResSafePersonBController.java @@ -0,0 +1,82 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ResCodeSo; +import com.gunshi.project.ss.model.ResSafePersonB; +import com.gunshi.project.ss.service.AttResBaseService; +import com.gunshi.project.ss.service.ResSafePersonBService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 水库责任体系表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库责任体系表") +@RestController +@RequestMapping(value="/resSafePersonB") +public class ResSafePersonBController { + + @Autowired + private ResSafePersonBService service; + + @Autowired + private AttResBaseService resService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResSafePersonB dto) { + if (Objects.isNull(resService.getById(dto.getResCode()))){ + throw new RuntimeException("当前水库不存在"); + } + dto.setModitime(new Date()); + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResSafePersonB dto) { + if (Objects.isNull(resService.getById(dto.getResCode()))){ + throw new RuntimeException("当前水库不存在"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))){ + throw new RuntimeException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@Validated @RequestBody ResCodeSo so) { + return R.ok(service.lambdaQuery().eq(ResSafePersonB::getResCode,so.getResCode()).list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ResTunnelController.java b/src/main/java/com/gunshi/project/ss/controller/ResTunnelController.java new file mode 100644 index 0000000..e871fec --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResTunnelController.java @@ -0,0 +1,58 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ResTunnel; +import com.gunshi.project.ss.service.ResTunnelService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 水库建筑物 - 放空洞/灌溉发电洞 + * author: xusan + * date: 2024-11-14 10:34:11 + */ +@Tag(name = "水库建筑物 - 放空洞/灌溉发电洞") +@RestController +@RequestMapping(value="/resTunnel") +public class ResTunnelController { + + @Autowired + private ResTunnelService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ResTunnel dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ResTunnel dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @GetMapping("/list") + public R> list(@Schema(name = "type",description = "类型(1放空洞 2灌溉发电洞)") @RequestParam(name = "type") Integer type) { + return R.ok(service.lambdaQuery().eq(ResTunnel::getType,type).list()); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ResWarnController.java b/src/main/java/com/gunshi/project/ss/controller/ResWarnController.java new file mode 100644 index 0000000..2f94d54 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ResWarnController.java @@ -0,0 +1,85 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.entity.so.WaterCommonSo; +import com.gunshi.project.ss.entity.vo.AttResBaseVo; +import com.gunshi.project.ss.entity.vo.ResWarnVo; +import com.gunshi.project.ss.entity.vo.ResWarningVo; +import com.gunshi.project.ss.mapper.AttResBaseMapper; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +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.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; + +@Tag(name = "水库建筑物 - 放空洞/灌溉发电洞") +@RestController +@RequestMapping(value="/current/situation") +public class ResWarnController { + + @Autowired + private AttResBaseMapper attResBaseMapper; + + @Operation(summary = "预警") + @PostMapping("/res/warn") + public R warn(@Validated(Insert.class) @RequestBody WaterCommonSo dto) { + ResWarnVo vo = new ResWarnVo(); + List attResBaseVos = attResBaseMapper.queryList2(); + List calFloodLevList = new ArrayList<>(); + + List desFloodLevList = new ArrayList<>(); + + List aboutAFsltdzList = new ArrayList<>(); + vo.setCalFloodLevList(calFloodLevList); + vo.setDesFloodLevList(desFloodLevList); + vo.setAboutAFsltdzList(aboutAFsltdzList); + Calendar now = Calendar.getInstance(); + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + now.set(Calendar.MILLISECOND, 0); + Date currentDate = now.getTime(); + for (AttResBaseVo attResBaseVo : attResBaseVos) { + Date tm = attResBaseVo.getTm(); + if(tm == null){ + continue; + } + //水位的最新采集时间不在24小时内 + if (tm.before(currentDate)) { + continue; + }else{ + BigDecimal rz = attResBaseVo.getRz(); + if(rz == null){ + continue; + } + ResWarningVo resWarningVo = new ResWarningVo(); + resWarningVo.setLttd(attResBaseVo.getLttd()); + resWarningVo.setLgtd(attResBaseVo.getLgtd()); + resWarningVo.setStnm(attResBaseVo.getStnm()); + resWarningVo.setStcd(attResBaseVo.getStcd()); + resWarningVo.setRz(rz); + if (attResBaseVo.getCalState() == 1) { + BigDecimal aboveCal = rz.subtract(attResBaseVo.getCalFloodLev()); + resWarningVo.setAfsltdz(aboveCal); + calFloodLevList.add(resWarningVo); + } else if (attResBaseVo.getDesState() == 1) { + BigDecimal aboveDes = rz.subtract(attResBaseVo.getDesFloodLev()); + resWarningVo.setAfsltdz(aboveDes); + desFloodLevList.add(resWarningVo); + } else if (attResBaseVo.getFlState() == 1) { + BigDecimal aboveFl = attResBaseVo.getAFsltdz().setScale(2, RoundingMode.HALF_UP); + resWarningVo.setAfsltdz(aboveFl); + aboutAFsltdzList.add(resWarningVo); + } + } + } + return R.ok(vo); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RescueGoodsBController.java b/src/main/java/com/gunshi/project/ss/controller/RescueGoodsBController.java new file mode 100644 index 0000000..ec8afba --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RescueGoodsBController.java @@ -0,0 +1,108 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.annotation.Get; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.entity.so.RescueGoodsPageSo; +import com.gunshi.project.ss.model.RescueGoodsB; +import com.gunshi.project.ss.model.RescueGoodsFile; +import com.gunshi.project.ss.model.RescueGoodsFileAutoDao; +import com.gunshi.project.ss.model.RescueGoodsFileAutoMapper; +import com.gunshi.project.ss.service.AbstractModelWithAttachService; +import com.gunshi.project.ss.service.RescueGoodsService; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/3/18 + * + * @author wanyan + * @version 1.0 + */ +@Tag(name = "抢险物资") +@RestController +@RequestMapping("/rescue/goods") +public class RescueGoodsBController extends AbstractCommonFileController implements + ICommonInsertWithAttach, + ICommonUpdateByIdWithAttach, + ICommonDeleteByIdWithAttach, + ICommonQueryAttach +{ + + + @Autowired + private RescueGoodsFileAutoDao fileAutoDao; + + @Autowired + private RescueGoodsService rescueGoodsService; + + + @Override + public void customSetFieldForUpdate(RescueGoodsB model) { + model.setTm(new Date()); + } + + @Override + public RescueGoodsFileAutoDao getAttachAutoDao() { + return fileAutoDao; + } + + @Override + public String getAttachBzIdName() { + return "goods_id"; + } + + @Override + public Long getId(Serializable id) { + return Long.valueOf(id.toString()); + } + + @Override + public AbstractModelWithAttachService getModelService() { + return rescueGoodsService; + } + + @Override + public void customSetFieldForInsert(RescueGoodsB model) { + long id = IdWorker.getId(); + model.setGoodsId(id); + model.setTm(new Date()); + } + + @Override + public String getGroupId() { + return "rescueGoodsB"; + } + + + /** + * 分页查询 + */ + @Post(path = "/page/query", summary = "分页查询") + public R> pageQuery(@RequestBody @Validated RescueGoodsPageSo RescueGoodsPageSo) { + return R.ok(rescueGoodsService.pageQuery(RescueGoodsPageSo)); + } + + /** + * 详情 + */ + @Get(path = "/detail", summary = "详情") + public R> detail(@Schema(name = "goodsId",description = "物资id") @RequestParam(name = "goodsId") Long goodsId) { + return R.ok(rescueGoodsService.detail(goodsId)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RescueTeamBController.java b/src/main/java/com/gunshi/project/ss/controller/RescueTeamBController.java new file mode 100644 index 0000000..9238d69 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RescueTeamBController.java @@ -0,0 +1,126 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.annotation.Get; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.RescueTeamPageSo; +import com.gunshi.project.ss.entity.vo.RescueTeamVo; +import com.gunshi.project.ss.model.RescueTeamB; +import com.gunshi.project.ss.model.RescueTeamBAutoMapper; +import com.gunshi.project.ss.model.RescueTeamFile; +import com.gunshi.project.ss.model.RescueTeamFileAutoDao; +import com.gunshi.project.ss.service.AbstractModelWithAttachService; +import com.gunshi.project.ss.service.RescueTeamService; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +/** + * 描述: 抢险队伍 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "抢险队伍") +@RestController +@RequestMapping("/rescue/team") +public class RescueTeamBController extends AbstractCommonFileController implements + ICommonInsertWithAttach, + ICommonUpdateByIdWithAttach, + ICommonDeleteByIdWithAttach, + ICommonQueryAttach +{ + + @Autowired + private RescueTeamBAutoMapper rescueTeamBAutoMapper; + + @Autowired + private RescueTeamFileAutoDao attachAutoDao; + + @Autowired + private RescueTeamService rescueTeamService; + + + @Override + public Long getId(Serializable id) { + return Long.valueOf(id.toString()); + } + + @Override + public void customSetFieldForUpdate(RescueTeamB model) { + model.setTm(new Date()); + rescueTeamService.updateDetailAndObj(model); + } + + @Override + public AbstractModelWithAttachService getModelService() { + return rescueTeamService; + } + + @Override + public void customSetFieldForInsert(RescueTeamB model) { + long teamId = IdWorker.getId(); + model.setTeamId(teamId); + model.setTm(new Date()); + rescueTeamService.saveDetailAndObj(model,teamId); + } + + @Override + public String getGroupId() { + return "rescueTeamB"; + } + + + /** + * 防汛准备-分页查询 + */ + @Post(path = "/page/query", summary = "防汛准备-分页查询") + public R> pageQuery(@RequestBody @Validated RescueTeamPageSo RescueTeamPageSo) { + return R.ok(rescueTeamService.pageQuery(RescueTeamPageSo)); + } + + + /** + * 列表查询 + */ + @Get(path = "/list", summary = "列表查询") + public R> list(@Schema(name = "teamName",description = "队伍名称") @RequestParam(name = "teamName",required = false) String teamName) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + if(StringUtils.isNotEmpty(teamName)){ + queryWrapper.like(RescueTeamB::getTeamName,teamName); + } + return R.ok(rescueTeamBAutoMapper.selectList(queryWrapper)); + } + + /** + * 详情 + */ + @Get(path = "/detail", summary = "详情") + public R detail(@Schema(name = "teamId",description = "队伍ID") @RequestParam(name = "teamId") Long teamId) { + return R.ok(rescueTeamService.detail(teamId)); + } + + @Get(path ="/delete/{id}", summary = "删除") + public R delete(@Schema(name = "teamId") @PathVariable("teamId") Long teamId) { + return R.ok(rescueTeamService.delete(teamId)); + } + + @Override + public RescueTeamFileAutoDao getAttachAutoDao() { + return attachAutoDao; + } + + @Override + public String getAttachBzIdName() { + return "team_id"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ReservoirWaterController.java b/src/main/java/com/gunshi/project/ss/controller/ReservoirWaterController.java new file mode 100644 index 0000000..72eee9d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ReservoirWaterController.java @@ -0,0 +1,172 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.annotation.Get; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StPptnR; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.entity.so.DataQueryCommonSo; +import com.gunshi.project.ss.entity.so.PicQuerySo; +import com.gunshi.project.ss.entity.so.ReservoirWaterCommonSo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.service.*; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.Calendar; +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@RestController +@RequestMapping("/reservoir/water") +@Tag(name = "水库水情") +public class ReservoirWaterController { + + + @Autowired + private ReservoirWaterService reservoirWaterService; + + @Autowired + private RealRainService realRainService; + + @Autowired + private StWaterRRealService stWaterRRealService; + + @Autowired + private ResMonthEcoFlowService resMonthEcoFlowService; + + @Autowired + private StRsvrRService stRsvrRService; + + @Autowired + private StPptnRService stPptnRService; + + @Autowired + private RiverWaterService riverWaterService; + + @Post(path = "/rz", summary = "水库水位") + public R rz(@RequestBody ReservoirWaterCommonSo reservoirWaterCommonSo) { + return R.ok(reservoirWaterService.rz(reservoirWaterCommonSo)); + } + + @Post(path = "/list", summary = "水库水情列表") + public R> list() { + return R.ok(reservoirWaterService.list()); + } + + + @Post(path = "/listV2", summary = "水库水情列表") + public R> listV2() { + return R.ok(reservoirWaterService.listV2()); + } + + @Post(path = "/listV22", summary = "供水能力分析-水库水情列表") + public R> listV22() { + return R.ok(reservoirWaterService.listV22()); + } + + @Get(path = "/image/channel", summary = "图像监测视角下拉") + public R> channel(@Schema(name = "resCode") @RequestParam("resCode") String resCode) { + return R.ok(reservoirWaterService.channel(resCode)); + } + + @Post(path = "/image/info", summary = "图片信息") + public R> imageInfo(@RequestBody @Validated PicQuerySo picQuerySo) { + return R.ok(reservoirWaterService.imageInfo(picQuerySo)); + } + + @Post(path = "/real/img", summary = "水库实时图像") + public R> realImg(@RequestBody ReservoirWaterCommonSo reservoirWaterCommonSo) { + return R.ok(reservoirWaterService.realImg(reservoirWaterCommonSo)); + } + + @Post(path = "/monitor/data", summary = "监测数据") + public R> monitorData(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) { + return R.ok(reservoirWaterService.monitorData(dataQueryCommonSo)); + } + + @Post(path = "/data", summary = "闸阀总览-库容曲线") + public R> data(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) { + dataQueryCommonSo.setStcd("232");//黑石咀水库 + return R.ok(reservoirWaterService.data(dataQueryCommonSo)); + } + + @Post(path = "/waterInfo", summary = "闸阀总览-库容曲线") + public R waterInfo(@RequestBody DataQueryCommonSo dataQueryCommonSo) { + AttResMonitorVo attResMonitorVo = new AttResMonitorVo(); + + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(StRsvrR::getStcd,dataQueryCommonSo.getStcd()).orderByDesc(StRsvrR::getTm).last(" limit 1"); + List list1 = stRsvrRService.list(qw); + if(CollectionUtils.isNotEmpty(list1)){ + attResMonitorVo.setRz(new BigDecimal(list1.get(0).getRz())); + attResMonitorVo.setTm(list1.get(0).getTm()); + } + LambdaQueryWrapper qw2= new LambdaQueryWrapper<>(); + qw2.eq(StPptnR::getStcd,dataQueryCommonSo.getStcd()).orderByDesc(StPptnR::getTm).last(" limit 1"); + List list3 = stPptnRService.list(qw2); + if(CollectionUtils.isNotEmpty(list3)){ + attResMonitorVo.setTodayRainNum(new BigDecimal(list3.get(0).getDrp())); + attResMonitorVo.setTodayRainNumTm(list3.get(0).getTm()); + } + + List list2 = stWaterRRealService.listRelated(); + if(CollectionUtils.isNotEmpty(list2)){ + // 获取当月核定流量 + ResMonthEcoFlow resMonthEcoFlow = resMonthEcoFlowService.getOne(new QueryWrapper().eq("month", Calendar.getInstance().get(Calendar.MONTH) + 1)); + if(ObjectUtils.isNotEmpty(resMonthEcoFlow)){ + for(StWaterRReal real : list2){ + real.setResMonthEcoFlow(resMonthEcoFlow); + } + } + StWaterRReal stWaterRReal = list2.stream().max((o1, o2) -> o1.getTm().compareTo(o2.getTm())).orElse(new StWaterRReal()); + attResMonitorVo.setOutPowerNum(stWaterRReal.getQ()); + attResMonitorVo.setOutPowerNumTm(stWaterRReal.getTm()); + } + return R.ok(attResMonitorVo); + } + + @Post(path = "/data/page", summary = "分页库容曲线") + public R> dataPage(@RequestBody @Validated PicQuerySo picQuerySo) { + return R.ok(reservoirWaterService.dataPage(picQuerySo)); + } + + @Get(path = "/detail", summary = "监测详细数据(下方表格)") + public R detail(@Schema(name = "stcd") @RequestParam("stcd") String stcd) { + AttRvMonitorDetailVo detail; + List riverStcd = riverWaterService.getRiverStcd(); + if(riverStcd.contains(stcd)){ + detail = riverWaterService.detail(stcd); + }else{ + detail = reservoirWaterService.detail(stcd); + } + return R.ok(detail); + } + + + @Post(path = "/listV3",summary = "获取溢洪道水位站") + public R> listV3(){ + return R.ok(reservoirWaterService.listV3()); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RiceRqWaterController.java b/src/main/java/com/gunshi/project/ss/controller/RiceRqWaterController.java new file mode 100644 index 0000000..f7d1f94 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RiceRqWaterController.java @@ -0,0 +1,93 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.gunshi.project.ss.entity.dto.RiceWaterCaculateDto; +import com.gunshi.project.ss.entity.so.RiceRqWaterPageSo; +import com.gunshi.project.ss.entity.vo.RiceRqWaterCaculateVo; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.service.RiceRqWaterService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "农业需水预测") +@RestController +@RequestMapping(value="/riceRqWater") +public class RiceRqWaterController { + + + + @Autowired + private RiceRqWaterService riceRqWaterService; + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated RiceRqWaterPageSo page) { + return R.ok(riceRqWaterService.pageQuery(page)); + } + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody RiceRqWater dto) { + return R.ok(riceRqWaterService.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody RiceRqWater dto) { + return R.ok(riceRqWaterService.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(riceRqWaterService.delData(id)); + } + + @Operation(summary = "阶段耗水量计算") + @PostMapping("/stage/caculate") + public R> stageCaculate(@RequestBody RiceWaterCaculateDto dto){ + List res = riceRqWaterService.stageCaculate(dto); + return R.ok(res); + } + + @Operation(summary = "综合计算") + @PostMapping("/caculate") + public R caculate(@RequestBody RiceWaterCaculateDto dto){ + RiceRqWaterCaculateVo res = riceRqWaterService.caculate(dto); + return R.ok(res); + } + + + @Operation(summary = "灌区用水量计算") + @PostMapping("/irrigation/caculate") + public R> irrigationCaculate(@RequestBody RiceWaterCaculateDto dto){ + List res = riceRqWaterService.irrigationCaculate(dto); + return R.ok(res); + } + + @Operation(summary = "灌区综合用水量计算-按月份计算") + @PostMapping("/irrigation/caculate/month") + public R> irrigationCaculateMonth(@RequestBody RiceWaterCaculateDto dto){ + List res = riceRqWaterService.irrigationComprehensiveCaculateMonth(dto); + return R.ok(res); + } + + @Operation(summary = "灌区综合用水量计算-按生长周期计算") + @PostMapping("/irrigation/caculate/cycle") + public R> irrigationCaculateCycle(@RequestBody RiceWaterCaculateDto dto){ + List res = riceRqWaterService.irrigationComprehensiveCaculateCycle(dto); + return R.ok(res); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RiceSupportBalanceController.java b/src/main/java/com/gunshi/project/ss/controller/RiceSupportBalanceController.java new file mode 100644 index 0000000..5e1e9d6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RiceSupportBalanceController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.dto.RiceSupportBalanceCaculateDto; +import com.gunshi.project.ss.entity.so.RiceSupportBalanceCaculateIcPageSo; +import com.gunshi.project.ss.entity.so.RiceSupportBalanceCaculatePageSo; +import com.gunshi.project.ss.entity.so.RiceSupportBalanceCaculateRcPageSo; +import com.gunshi.project.ss.model.IcWaterForecast; +import com.gunshi.project.ss.model.RiceRqWater; +import com.gunshi.project.ss.model.RiceSupportBalance; +import com.gunshi.project.ss.service.RiceSupportBalanceService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@Tag(name = "供需平衡分析") +@RestController +@RequestMapping(value="/riceSupportBalance") +public class RiceSupportBalanceController { + + @Autowired + private RiceSupportBalanceService riceSupportBalanceService; + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody RiceSupportBalanceCaculatePageSo page){ + Page res = riceSupportBalanceService.queryPage(page); + return R.ok(res); + } + + @Operation(summary = "删除") + @PostMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id){ + boolean flag = riceSupportBalanceService.delData(id); + return R.ok(flag); + } + + @Operation(summary = "计算") + @PostMapping("/insert") + public R caculate(@RequestBody RiceSupportBalanceCaculateDto dto){ + riceSupportBalanceService.caculateAndSave(dto); + return R.ok(true); + } + + @Operation(summary = "来水预测-分页查询,供需平衡版") + @PostMapping("/icpage") + public R> icPage(@RequestBody RiceSupportBalanceCaculateIcPageSo pageSo){ + Page page = riceSupportBalanceService.icPage(pageSo); + return R.ok(page); + } + + @Operation(summary = "农业需水-分页查询,供需平衡版") + @PostMapping("/rcpage") + public R> rcPage(@RequestBody RiceSupportBalanceCaculateRcPageSo pageSo){ + Page page = riceSupportBalanceService.rcPage(pageSo); + return R.ok(page); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RiskControlInfoController.java b/src/main/java/com/gunshi/project/ss/controller/RiskControlInfoController.java new file mode 100644 index 0000000..88da220 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RiskControlInfoController.java @@ -0,0 +1,59 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.model.RiskControlInfo; +import com.gunshi.project.ss.service.RiskControlInfoService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +/** + * 描述: 风险管控清单 + * author: xusan + * date: 2024-08-22 14:17:28 + */ +@Tag(name = "风险管控清单") +@RestController +@RequestMapping(value="/risk/info") +public class RiskControlInfoController extends AbstractCommonFileController{ + + @Autowired + private RiskControlInfoService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody RiskControlInfo dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody RiskControlInfo dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated AttCctvBasePage page) { + return R.ok(service.pageQuery(page)); + } + + + @Override + public String getGroupId() { + return "riskControlInfo"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/RiskControlMenuController.java b/src/main/java/com/gunshi/project/ss/controller/RiskControlMenuController.java new file mode 100644 index 0000000..d27a06c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RiskControlMenuController.java @@ -0,0 +1,56 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.RiskControlMenu; +import com.gunshi.project.ss.service.RiskControlMenuService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 风险管控目录 + * author: xusan + * date: 2024-08-22 14:16:35 + */ +@Tag(name = "风险管控目录") +@RestController +@RequestMapping(value="/risk/menu") +public class RiskControlMenuController { + + @Autowired + private RiskControlMenuService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody RiskControlMenu dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody RiskControlMenu dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "树") + @PostMapping("/tree") + public R> tree() { + return R.ok(service.tree()); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/RiverWaterController.java b/src/main/java/com/gunshi/project/ss/controller/RiverWaterController.java new file mode 100644 index 0000000..9218c24 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RiverWaterController.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.annotation.Get; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.DataQueryCommonSo; +import com.gunshi.project.ss.entity.vo.AttRiverNowDataVo; +import com.gunshi.project.ss.entity.vo.AttRvBaseVo; +import com.gunshi.project.ss.entity.vo.AttRvMonitorDetailVo; +import com.gunshi.project.ss.entity.vo.AttRvMonitorVo; +import com.gunshi.project.ss.model.StZqR; +import com.gunshi.project.ss.service.RiverWaterService; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/2/21 + * + * @author wanyan + * @version 1.0 + */ +@RestController +@RequestMapping("/river/water") +@Tag(name = "河道水情") +public class RiverWaterController { + + @Autowired + private RiverWaterService riverWaterService; + + @Get(path = "/get", summary = "河道水情上下游") + public R> get(@RequestParam("stcd") String stcd) { + return R.ok(riverWaterService.get(stcd)); + } + + @Get(path = "/list",summary = "河道水情上下游list(后端固定2个站点编号)") + public R> list() { + return R.ok(riverWaterService.list()); + } + + + @Get(path = "/zqrl", summary = "水位流量关系") + public R> zqrl(@Schema(name = "stcd") @RequestParam("stcd") String stcd) { + return R.ok(riverWaterService.zqr(stcd)); + } + + + @Post(path = "/monitor/data", summary = "数据查询-监测数据(上方表格)") + public R> monitorData(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) { + return R.ok(riverWaterService.monitorData(dataQueryCommonSo)); + } + + @Get(path = "/detail", summary = "数据查询-监测详细数据(下方表格)") + public R detail(@Schema(name = "stcd") @RequestParam("stcd") String stcd) { + return R.ok(riverWaterService.detail(stcd)); + } + + @Get(path = "/nowData",summary = "实时监测") + public R nowData(@RequestParam("stcd") String stcd) { + return R.ok(riverWaterService.nowData(stcd)); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RotaController.java b/src/main/java/com/gunshi/project/ss/controller/RotaController.java new file mode 100644 index 0000000..054605f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RotaController.java @@ -0,0 +1,104 @@ +package com.gunshi.project.ss.controller; + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.gunshi.core.annotation.Get; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.dto.RotaDto; +import com.gunshi.project.ss.entity.vo.RotaVo; +import com.gunshi.project.ss.listener.RotaImportListener; +import com.gunshi.project.ss.model.RotaB; +import com.gunshi.project.ss.service.RotaService; +import com.gunshi.project.ss.util.ExcelUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Description: + * Created by wanyan on 2024/3/25 + * + * @author wanyan + * @version 1.0 + */ +@RestController +@RequestMapping("/rota") +@Tag(name = "值班表") +public class RotaController { + + @Resource + private RotaService rotaService; + + + @Get(path = "/query", summary = "按年月查询") + public R>> query(@Schema(name = "yearMonth",description = "年月",example = "2024-03") @RequestParam(name = "yearMonth") String yearMonth) { + return R.ok(rotaService.query(yearMonth)); + } + + + @Post(path = "/edit/info", summary = "编辑值班信息") + public R editInfo(@RequestBody @Validated RotaDto rotaDto) { + return R.ok(rotaService.editInfo(rotaDto)); + } + + @Get(path = "/date/list", summary = "按年月日查询") + public R> dateList(@Schema(name = "rotaDate",description = "年月日",example = "2024-08-19") @RequestParam(name = "rotaDate") String rotaDate) { + return R.ok(rotaService.dateList(rotaDate)); + } + + /** + * 获取导入模板 + */ + @Operation(summary = "获取导入模板") + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) { + ExcelUtil.exportExcel(new ArrayList<>(), "值班表", RotaVo.class, response, "值班表"); + } + + /** + * 导入数据 + * + * @param file 导入文件 + * + */ + @Operation(summary = "导入数据") + @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R importData(@RequestPart("file") MultipartFile file) throws Exception { + //获取正确数据 + ArrayList successArrayList = new ArrayList<>(); + //获取错误数据 + ArrayList errorArrayList = new ArrayList<>(); + EasyExcel.read(file.getInputStream()) + .head(RotaVo.class) + .registerReadListener(new RotaImportListener( + // 监听器中doAfterAllAnalysed执行此方法;所有读取完成之后处理逻辑 + successArrayList::addAll, errorArrayList::addAll)) + // 设置sheet,默认读取第一个 + .sheet() + // 设置标题(字段列表)所在行数 + .headRowNumber(2) + .doRead(); + if(CollectionUtils.isNotEmpty(errorArrayList)){ + List errMsg = errorArrayList.stream().map(RotaVo::getErrorMsg).collect(Collectors.toList()); + return R.error(400,String.join(";",errMsg)); + } + if(CollectionUtils.isNotEmpty(successArrayList)){ + rotaService.saveImportData(successArrayList); + return R.ok(); + } + return R.ok(); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/RotaLogController.java b/src/main/java/com/gunshi/project/ss/controller/RotaLogController.java new file mode 100644 index 0000000..14e9ae6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/RotaLogController.java @@ -0,0 +1,76 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.RotaLogPageSo; +import com.gunshi.project.ss.model.RotaLog; +import com.gunshi.project.ss.service.RotaLogService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * Description: + * Created by wanyan on 2024/3/25 + * + * @author wanyan + * @version 1.0 + */ +@RestController +@RequestMapping("/rota/log") +@Tag(name = "值班日志") +public class RotaLogController { + + @Resource + private RotaLogService service; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody RotaLog dto) { + checkParam(dto); + dto.setId(IdWorker.getId()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody RotaLog dto) { + checkParam(dto); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.removeById(id)); + } + + private void checkParam(RotaLog dto) { + Long id = dto.getId(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(RotaLog::getRotaDate,dto.getRotaDate()); + if(id != null){ + queryWrapper.ne(RotaLog::getId,id); + } + if(service.count(queryWrapper ) > 0){ + throw new IllegalArgumentException("该日期已存在值班日志"); + } + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody RotaLogPageSo rotaLogPageSo) { + return R.ok(service.queryPage(rotaLogPageSo)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/SafetyAccidentRegController.java b/src/main/java/com/gunshi/project/ss/controller/SafetyAccidentRegController.java new file mode 100644 index 0000000..9ff17f6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SafetyAccidentRegController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.CommonDataPageSo2; +import com.gunshi.project.ss.model.SafetyAccidentReg; +import com.gunshi.project.ss.service.SafetyAccidentRegService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; + +/** + * 描述: 安全事故登记 + * author: xusan + * date: 2024-08-21 14:45:44 + */ +@Tag(name = "安全事故登记") +@RestController +@RequestMapping(value="/safety/accident/reg") +public class SafetyAccidentRegController extends AbstractCommonFileController { + + @Autowired + private SafetyAccidentRegService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SafetyAccidentReg dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SafetyAccidentReg dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody CommonDataPageSo2 page) { + return R.ok(service.pageQuery(page)); + } + + @Override + public String getGroupId() { + return "safetyAccidentReg"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/SafetyCheckController.java b/src/main/java/com/gunshi/project/ss/controller/SafetyCheckController.java new file mode 100644 index 0000000..971e488 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SafetyCheckController.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.CommonDataPageSo; +import com.gunshi.project.ss.model.SafetyCheck; +import com.gunshi.project.ss.service.SafetyCheckService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; + +/** + * 描述: 安全检查管理 + * author: wanyan + * date: 2024-08-20 17:40:37 + */ +@Tag(name = "安全检查管理") +@RestController +@RequestMapping(value="/safety/check") +public class SafetyCheckController extends AbstractCommonFileController{ + + @Autowired + private SafetyCheckService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SafetyCheck dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SafetyCheck dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated CommonDataPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Override + public String getGroupId() { + return "safetyCheck"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/SafetyHazardInvestController.java b/src/main/java/com/gunshi/project/ss/controller/SafetyHazardInvestController.java new file mode 100644 index 0000000..22bd11a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SafetyHazardInvestController.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.CommonDataPageSo; +import com.gunshi.project.ss.model.SafetyHazardInvest; +import com.gunshi.project.ss.service.SafetyHazardInvestService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; + +/** + * 描述: 安全隐患排查 + * author: wanyan + * date: 2024-08-20 17:40:37 + */ +@Tag(name = "安全隐患排查") +@RestController +@RequestMapping(value="/safety/hazard/invest") +public class SafetyHazardInvestController extends AbstractCommonFileController{ + + @Autowired + private SafetyHazardInvestService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SafetyHazardInvest dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SafetyHazardInvest dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated CommonDataPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Override + public String getGroupId() { + return "safetyHazardInvest"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/SafetyIdentifyController.java b/src/main/java/com/gunshi/project/ss/controller/SafetyIdentifyController.java new file mode 100644 index 0000000..ad21bac --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SafetyIdentifyController.java @@ -0,0 +1,62 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.db.dto.PageSo; +import com.gunshi.project.ss.model.SafetyIdentify; +import com.gunshi.project.ss.service.SafetyIdentifyService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +/** + * 描述: 安全鉴定台账 + * author: xusan + * date: 2024-08-21 14:45:44 + */ +@Tag(name = "安全鉴定台账") +@RestController +@RequestMapping(value="/safety/identify") +public class SafetyIdentifyController extends AbstractCommonFileController { + + @Autowired + private SafetyIdentifyService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SafetyIdentify dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SafetyIdentify dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody PageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Override + public String getGroupId() { + return "safetyIdentify"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/SafetyReinforcementController.java b/src/main/java/com/gunshi/project/ss/controller/SafetyReinforcementController.java new file mode 100644 index 0000000..3060d99 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SafetyReinforcementController.java @@ -0,0 +1,62 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.db.dto.PageSo; +import com.gunshi.project.ss.model.SafetyReinforcement; +import com.gunshi.project.ss.service.SafetyReinforcementService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +/** + * 描述: 除险加固台账 + * author: xusan + * date: 2024-08-22 11:27:44 + */ +@Tag(name = "除险加固台账") +@RestController +@RequestMapping(value="/safety/reinforcement") +public class SafetyReinforcementController extends AbstractCommonFileController{ + + @Autowired + private SafetyReinforcementService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SafetyReinforcement dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SafetyReinforcement dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody PageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Override + public String getGroupId() { + return "safetyReinforcement"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/ShpPlacementController.java b/src/main/java/com/gunshi/project/ss/controller/ShpPlacementController.java new file mode 100644 index 0000000..91e9163 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ShpPlacementController.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.HomeShpPlacementVo; +import com.gunshi.project.ss.model.ShpPlacement; +import com.gunshi.project.ss.service.ShpPlacementService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 安置点 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "安置点") +@RestController +@RequestMapping(value="/shpPlacement") +public class ShpPlacementController { + + @Autowired + private ShpPlacementService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody ShpPlacement dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody ShpPlacement dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + + + @Operation(summary = "详情和行政区划数据查询") + @PostMapping("/getDetailsAndAddvcdDataList") + public R> getDetailsAndMonitoringDataList() { + return R.ok(service.getDetailsAndMonitoringDataLis()); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/SoilMoistureController.java b/src/main/java/com/gunshi/project/ss/controller/SoilMoistureController.java new file mode 100644 index 0000000..f071fae --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SoilMoistureController.java @@ -0,0 +1,96 @@ +package com.gunshi.project.ss.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.annotation.Get; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.SoilMoisturePageSo; +import com.gunshi.project.ss.entity.vo.SoilMoistureVO; +import com.gunshi.project.ss.model.SoilMoistureData; +import com.gunshi.project.ss.model.SoilMoistureStation; +import com.gunshi.project.ss.service.SoilMoistureDataService; +import com.gunshi.project.ss.service.SoilMoistureStationService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 土壤墒情 + */ +@RestController +@RequestMapping("/soilMoisture") +@Tag(name = "土壤墒情") +public class SoilMoistureController { + + @Autowired + private SoilMoistureStationService soilMoistureStationService; + + @Autowired + private SoilMoistureDataService soilMoistureDataService; + + @Get(path = "/stationList", summary = "站点列表") + public R> listStation() { + List list = soilMoistureStationService.list(); + if(CollectionUtil.isEmpty(list)){ + return R.ok(list); + } + List collect = list.stream().peek(e -> { + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(SoilMoistureData::getStcd,e.getStcd()).orderByDesc(SoilMoistureData::getCreateTime).last(" limit 1"); + SoilMoistureData one = soilMoistureDataService.getOne(qw); + e.setTm(one.getCreateTime()); + e.setVal(one.getVal()); + }).collect(Collectors.toList()); + return R.ok(collect); + } + + @Post(path = "/page", summary = "分页") + public R> page(@RequestBody SoilMoisturePageSo page) { + return R.ok(soilMoistureDataService.pageQuery(page)); + } + + @GetMapping("/count/{stcd}") + public R count(@Schema(name = "stcd") @PathVariable("stcd") Serializable stcd) { + return R.ok(soilMoistureDataService.count(stcd.toString())); + } + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SoilMoistureData dto) { + boolean result = soilMoistureDataService.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SoilMoistureData dto) { + boolean result = soilMoistureDataService.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(soilMoistureDataService.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(soilMoistureDataService.lambdaQuery().list()); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StAddvcdDController.java b/src/main/java/com/gunshi/project/ss/controller/StAddvcdDController.java new file mode 100644 index 0000000..00aea6d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StAddvcdDController.java @@ -0,0 +1,73 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.annotation.Get; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.StAddvcdTreeVo; +import com.gunshi.project.ss.model.StAddvcdD; +import com.gunshi.project.ss.service.StAddvcdDService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 行政区划表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "行政区划表") +@RestController +@RequestMapping(value="/stAddvcdD") +public class StAddvcdDController { + + @Autowired + private StAddvcdDService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StAddvcdD dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StAddvcdD dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + /** + * 行政区划树 + */ + @Get(path = "/tree", summary = "行政区划树") + public R> tree(@Schema(description = "以根节点为基础,返回数据的深度,最低到组(自然村)") @RequestParam("level") String level) { + return R.ok(service.tree(level)); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StEvpoController.java b/src/main/java/com/gunshi/project/ss/controller/StEvpoController.java new file mode 100644 index 0000000..863de24 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StEvpoController.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.gunshi.project.ss.model.StEvpo; +import com.gunshi.project.ss.service.StEvpoService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "水库蒸发") +@RestController +@RequestMapping(value="/evpo") +public class StEvpoController { + + @Autowired + private StEvpoService stEvpoService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StEvpo dto) { + dto.setId(IdWorker.getId()); + boolean result = stEvpoService.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StEvpo dto) { + boolean result = stEvpoService.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(stEvpoService.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = stEvpoService.lambdaQuery().orderByAsc(StEvpo::getMonth).list(); + list.stream().forEach(o ->{ + o.setEvaporation(o.getEvaporation().setScale(2)); + }); + return R.ok(list); + } + + + @Operation(summary = "导出") + @PostMapping("/export") + public void export(HttpServletResponse response){ + stEvpoService.export(response); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StFlowRController.java b/src/main/java/com/gunshi/project/ss/controller/StFlowRController.java new file mode 100644 index 0000000..dc9e35a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StFlowRController.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +@Tag(name = "流量表") +@RestController +@RequestMapping(value="/stFlowR") +public class StFlowRController { + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StImgRController.java b/src/main/java/com/gunshi/project/ss/controller/StImgRController.java new file mode 100644 index 0000000..116e79e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StImgRController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.StImgR; +import com.gunshi.project.ss.service.StImgRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 图像历史表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "图像历史表") +@RestController +@RequestMapping(value="/stImgR") +public class StImgRController { + + @Autowired + private StImgRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StImgR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StImgR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StImgRRealController.java b/src/main/java/com/gunshi/project/ss/controller/StImgRRealController.java new file mode 100644 index 0000000..b37e384 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StImgRRealController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.StImgRReal; +import com.gunshi.project.ss.service.StImgRRealService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 图像表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "图像表") +@RestController +@RequestMapping(value="/stImgRReal") +public class StImgRRealController { + + @Autowired + private StImgRRealService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StImgRReal dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StImgRReal dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StImgWarnRController.java b/src/main/java/com/gunshi/project/ss/controller/StImgWarnRController.java new file mode 100644 index 0000000..d3b2331 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StImgWarnRController.java @@ -0,0 +1,65 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ImgWarnPageSo; +import com.gunshi.project.ss.model.StImgWarnR; +import com.gunshi.project.ss.service.StImgWarnRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: AI告警表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "AI告警表") +@RestController +@RequestMapping(value="/stImgWarnR") +public class StImgWarnRController { + + @Autowired + private StImgWarnRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StImgWarnR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StImgWarnR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody ImgWarnPageSo imgWarnPageSo) { + return R.ok(service.pageQuery(imgWarnPageSo)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StPptnRController.java b/src/main/java/com/gunshi/project/ss/controller/StPptnRController.java new file mode 100644 index 0000000..ac660be --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StPptnRController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StPptnR; +import com.gunshi.project.ss.service.StPptnRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 降水量表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "降水量表") +@RestController +@RequestMapping(value="/stPptnR") +public class StPptnRController { + + @Autowired + private StPptnRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StPptnR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StPptnR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StPptnRDController.java b/src/main/java/com/gunshi/project/ss/controller/StPptnRDController.java new file mode 100644 index 0000000..63085e3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StPptnRDController.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.StPptnRD; +import com.gunshi.project.ss.service.StPptnRDService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 降水量天表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "降水量天表") +@RestController +@RequestMapping(value="/stPptnRD") +public class StPptnRDController { + + @Autowired + private StPptnRDService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StPptnRD dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StPptnRD dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + @Operation(summary = "整编降雨历史降雨情况") + @PostMapping("/reorganizeStPptnRD") + public void reorganizeStPptnRD(@Schema(name = "stcdList", description = "站码列表") @RequestParam("stcdList") List stcdList, @Schema(name = "startDateStr", description = "开始时间") @RequestParam("startDateStr") String startDateStr) { + service.reorganizeStPptnRD(stcdList, startDateStr); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StPptnRHController.java b/src/main/java/com/gunshi/project/ss/controller/StPptnRHController.java new file mode 100644 index 0000000..0d30bf9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StPptnRHController.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.StPptnRH; +import com.gunshi.project.ss.service.StPptnRHService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 降雨量小时表 + * author: cxw + * date: 2024-09-02 09:34:31 + */ +@Tag(name = "降雨量小时表") +@RestController +@RequestMapping(value="/stPptnRH") +public class StPptnRHController { + + @Autowired + private StPptnRHService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StPptnRH dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StPptnRH dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StPptnRRealController.java b/src/main/java/com/gunshi/project/ss/controller/StPptnRRealController.java new file mode 100644 index 0000000..982b2e0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StPptnRRealController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StPptnRReal; +import com.gunshi.project.ss.service.StPptnRRealService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 降水量历史表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "降水量历史表") +@RestController +@RequestMapping(value="/stPptnRReal") +public class StPptnRRealController { + + @Autowired + private StPptnRRealService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StPptnRReal dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StPptnRReal dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.queryList()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StQxWarnRController.java b/src/main/java/com/gunshi/project/ss/controller/StQxWarnRController.java new file mode 100644 index 0000000..aa9c01e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StQxWarnRController.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.entity.vo.HomeWarnVo; +import com.gunshi.project.ss.model.StQxWarnR; +import com.gunshi.project.ss.service.StQxWarnRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 气象预警表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "气象预警表") +@RestController +@RequestMapping(value="/stQxWarnR") +public class StQxWarnRController { + + @Autowired + private StQxWarnRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StQxWarnR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StQxWarnR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody DateTimeRangeSo dateTimeRangeSo) { + return R.ok(service.lambdaQuery() + .ge(StQxWarnR::getTm,dateTimeRangeSo.getStart()).lt(StQxWarnR::getTm,dateTimeRangeSo.getEnd()).list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + + + @Operation(summary = "首页-告警") + @PostMapping("/home/warn") + public R homeWarn(@RequestBody DateTimeRangeSo dateTimeRangeSo) { + return R.ok(service.homeWarn(dateTimeRangeSo)); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StRiverRController.java b/src/main/java/com/gunshi/project/ss/controller/StRiverRController.java new file mode 100644 index 0000000..841082f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StRiverRController.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StRiverR; +import com.gunshi.project.ss.service.StRiverRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: + * author: cxw + * date: 2024-09-24 14:01:07 + */ +@Tag(name = "") +@RestController +@RequestMapping(value="/stRiverR") +public class StRiverRController { + + @Autowired + private StRiverRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StRiverR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StRiverR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StRiverRRealController.java b/src/main/java/com/gunshi/project/ss/controller/StRiverRRealController.java new file mode 100644 index 0000000..35997f4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StRiverRRealController.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StRiverRReal; +import com.gunshi.project.ss.service.StRiverRRealService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: + * author: cxw + * date: 2024-09-24 14:01:07 + */ +@Tag(name = "") +@RestController +@RequestMapping(value="/stRiverRReal") +public class StRiverRRealController { + + @Autowired + private StRiverRRealService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StRiverRReal dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StRiverRReal dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StRsvrRController.java b/src/main/java/com/gunshi/project/ss/controller/StRsvrRController.java new file mode 100644 index 0000000..e34e647 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StRsvrRController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.service.StRsvrRService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 水库历史水位表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库历史水位表") +@RestController +@RequestMapping(value="/stRsvrR") +public class StRsvrRController { + + @Autowired + private StRsvrRService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StRsvrR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StRsvrR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StRsvrRRealController.java b/src/main/java/com/gunshi/project/ss/controller/StRsvrRRealController.java new file mode 100644 index 0000000..39116dd --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StRsvrRRealController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StRsvrRReal; +import com.gunshi.project.ss.service.StRsvrRRealService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 水库水位实时数据表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水库水位实时数据表") +@RestController +@RequestMapping(value="/stRsvrRReal") +public class StRsvrRRealController { + + @Autowired + private StRsvrRRealService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StRsvrRReal dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StRsvrRReal dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StStbprpBController.java b/src/main/java/com/gunshi/project/ss/controller/StStbprpBController.java new file mode 100644 index 0000000..1faa5e2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StStbprpBController.java @@ -0,0 +1,137 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.HomeStStbprpBSo; +import com.gunshi.project.ss.entity.so.StStbprpBPage; +import com.gunshi.project.ss.entity.so.StStbprpBSo; +import com.gunshi.project.ss.entity.vo.HomeStStbprpBVo; +import com.gunshi.project.ss.entity.vo.StStatusListVo; +import com.gunshi.project.ss.entity.vo.StStatusVo; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.service.StStbprpBService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 测站基础信息表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "测站基础信息表") +@RestController +@RequestMapping(value="/stStbprpB") +public class StStbprpBController { + + @Autowired + private StStbprpBService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StStbprpB dto) { + if (Objects.nonNull(service.getById(dto.getStcd()))){ + throw new RuntimeException("测站编号已存在"); + } + dto.setModitime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StStbprpB dto) { + if (Objects.isNull(service.getById(dto.getStcd()))){ + throw new RuntimeException("当前数据不存在"); + } + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))){ + throw new RuntimeException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody StStbprpBSo dto) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + query + .eq(StStbprpB::getSttp,dto.getSttp()) + .eq(StStbprpB::getStcd,dto.getStcd()) + .like(StStbprpB::getStnm,dto.getStnm()) + .like(StStbprpB::getRvnm,dto.getRvnm()) + .like(StStbprpB::getHnnm,dto.getHnnm()) + .like(StStbprpB::getBsnm,dto.getBsnm()) + ; + return R.ok(query.list()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated StStbprpBPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getCode())) { + query.like(StStbprpB::getStcd, page.getCode()); + } + if (ObjectUtils.isNotNull(page.getName())) { + query.like(StStbprpB::getStnm, page.getName()); + } + if (ObjectUtils.isNotNull(page.getAgreement())) { + query.like(StStbprpB::getAgreement, page.getAgreement()); + } + query.orderByDesc(StStbprpB::getModitime); + return R.ok(service.page(page.getPageSo().toPage(), query)); + } + + @Operation(summary = "雨量站详情带雨量列表") + @PostMapping("/rainfallStationDetails/rainfallList") + public R> rainfallStationDetailsList(@RequestBody @Validated HomeStStbprpBSo dto) { + return R.ok(service.rainfallStationDetailsList(dto)); + } + + @Operation(summary = "水库站点详情带实时水位列表") + @PostMapping("/reservoirStationDetails/realTimeWaterLevelList") + public R> reservoirStationDetailsList() { + return R.ok(service.reservoirStationDetailsList()); + } + + @Operation(summary = "输/放水管流量站点详情带实时流量列表") + @PostMapping("/trafficSiteDetails/realTimeTrafficList") + public R> trafficStationDetailsList() { + return R.ok(service.flowStationDetailsList()); + } + + + @Operation(summary = "监测设备状态") + @PostMapping("/status/list") + public R statusList() { + return R.ok(service.statusList()); + } + + @Operation(summary = "雨情站点下拉") + @PostMapping("/rain/list") + public R> rainList() { + return R.ok(service.rainList()); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StStbprpBElemController.java b/src/main/java/com/gunshi/project/ss/controller/StStbprpBElemController.java new file mode 100644 index 0000000..8a6af2d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StStbprpBElemController.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StStbprpBElem; +import com.gunshi.project.ss.service.StStbprpBElemService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 测站监测值类型 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "测站监测值类型") +@RestController +@RequestMapping(value="/stStbprpBElem") +public class StStbprpBElemController { + + @Autowired + private StStbprpBElemService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StStbprpBElem dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StStbprpBElem dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.lambdaQuery().list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StStbprpCctvController.java b/src/main/java/com/gunshi/project/ss/controller/StStbprpCctvController.java new file mode 100644 index 0000000..f2a8193 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StStbprpCctvController.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.annotation.Get; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.StStbprpCctvVo; +import com.gunshi.project.ss.service.StStbprpCctvService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 站点与视频关系 + * Created by wanyan on 2024/4/9 + * + * @author wanyan + * @version 1.0 + */ +@RestController +@RequestMapping("/stbprp/cctv") +@Tag(name = "站点与视频关系") +public class StStbprpCctvController { + + + @Autowired + private StStbprpCctvService stStbprpCctvService; + + + + @Get(path = "/listByStcd/{stcd}", summary = "按stcd查询") + public R> listByStcd(@PathVariable("stcd") String stcd) { + return R.ok(stStbprpCctvService.listByStcd(stcd)); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StWaterRController.java b/src/main/java/com/gunshi/project/ss/controller/StWaterRController.java new file mode 100644 index 0000000..ecc841e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StWaterRController.java @@ -0,0 +1,183 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.entity.vo.StWaterRVo; +import com.gunshi.project.ss.model.ResMonthEcoFlow; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.model.StWaterR; +import com.gunshi.project.ss.service.ResMonthEcoFlowService; +import com.gunshi.project.ss.service.StStbprpBService; +import com.gunshi.project.ss.service.StWaterRService; +import com.gunshi.project.ss.util.ConvertUtil; +import com.gunshi.project.ss.util.DateUtil; +import com.gunshi.project.ss.util.ExcelUtil; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 供水量表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "供水量表") +@RestController +@RequestMapping(value="/stWaterR") +public class StWaterRController { + + @Autowired + private StWaterRService service; + + @Autowired + private ResMonthEcoFlowService resMonthEcoFlowService; + + @Autowired + private StStbprpBService stStbprpBService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StWaterR dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StWaterR dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated StWaterR stWaterR) { + QueryWrapper wrapper = new QueryWrapper() + .eq(StringUtils.isNotBlank(stWaterR.getStcd()), "stcd", stWaterR.getStcd()) + .ge(ObjectUtils.isNotNull(stWaterR.getStartTime()), "tm", stWaterR.getStartTime()) + .le(ObjectUtils.isNotNull(stWaterR.getEndTime()), "tm", stWaterR.getEndTime()); + if(StringUtils.isNotBlank(stWaterR.getOrderField())){ + wrapper.orderByDesc("tm"); + } + return R.ok(service.list(wrapper)); + } + + @Operation(summary = "获取月核定流量") + @GetMapping("/getResMonthEcoFlow") + public R> getResMonthEcoFlow(@Schema(name = "startTime", description = "开始时间") @RequestParam("startTime") String startTime, @Schema(name = "endTime", description = "开始时间") @RequestParam("endTime") String endTime) { + Map resMap = new HashMap<>(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.orderByAsc("month"); + if(StringUtils.isNotEmpty(startTime) && StringUtils.isNotEmpty(endTime)){ + List monthsBetweenDates = DateUtil.getMonthsBetweenDates(startTime, endTime); + wrapper.in("month", monthsBetweenDates); + } + List list = resMonthEcoFlowService.list(wrapper); + if(CollectionUtils.isNotEmpty(list)){ + resMap = list.stream().collect(Collectors.toMap(ResMonthEcoFlow::getMonth, ResMonthEcoFlow::getValue)); + } + return R.ok(resMap); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated StWaterR stWaterR) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(stWaterR.getStcd()), "stcd", stWaterR.getStcd()) + .ge(ObjectUtils.isNotNull(stWaterR.getStartTime()), "tm", stWaterR.getStartTime()) + .le(ObjectUtils.isNotNull(stWaterR.getEndTime()), "tm", stWaterR.getEndTime()); + if(StringUtils.isNotBlank(stWaterR.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterR.getIsAsc()) ? false : stWaterR.getIsAsc(), stWaterR.getOrderField()); + } + return R.ok(service.page(stWaterR.getPageSo().toPage(), wrapper)); + } + + @Operation(summary = "导出") + @PostMapping("/exportWaterRDataExcel") + @CrossOrigin + public void exportWaterRDataExcel(@RequestBody @Validated StWaterR stWaterR, HttpServletResponse response) { + String filename = "供水流量表" + DateUtil.convertDateToString(stWaterR.getStartTime()) + "_" + DateUtil.convertDateToString(stWaterR.getEndTime()); + List vos = ConvertUtil.entityToVoList(this.list(stWaterR).getData(), StWaterRVo.class); + ExcelUtil.exportExcel(vos, filename, StWaterRVo.class, response, "供水流量表"); + } + + @Operation(summary = "闸阀总览-供水统计") + @PostMapping("/stat") + public R> stat(@RequestBody @Validated DateTimeRangeSo dateTimeRangeSo) { + return R.ok(service.stat(dateTimeRangeSo)); + } + + + @Operation(summary = "生态流量监控-列表") + @PostMapping("/ecologyFlowList") + public R> ecologyFlowList(@RequestBody @Validated StWaterR stWaterR) { + List list = new ArrayList<>(); + // 查询生态(放水管流量站QQ) + StStbprpB stStbprpB = stStbprpBService.getOne(new QueryWrapper().eq("sttp", "QQ").last(" limit 1")); + if(ObjectUtils.isEmpty(stStbprpB) || StringUtils.isEmpty(stStbprpB.getStcd())){ + return R.ok(list); + } + QueryWrapper wrapper = new QueryWrapper() + .eq("stcd", stStbprpB.getStcd()) + .ge(ObjectUtils.isNotNull(stWaterR.getStartTime()), "tm", stWaterR.getStartTime()) + .le(ObjectUtils.isNotNull(stWaterR.getEndTime()), "tm", stWaterR.getEndTime()); + if(StringUtils.isNotBlank(stWaterR.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterR.getIsAsc()) ? false : stWaterR.getIsAsc(), stWaterR.getOrderField()); + } + list = service.list(wrapper); + List resMonthEcoFlows = resMonthEcoFlowService.list(); + if(CollectionUtils.isNotEmpty(list) && CollectionUtils.isNotEmpty(resMonthEcoFlows)){ + Map resMonthEcoFlowMap = resMonthEcoFlows.stream().collect(Collectors.toMap(ResMonthEcoFlow::getMonth, ResMonthEcoFlow::getValue)); + list.stream().forEach(w -> { + BigDecimal value = resMonthEcoFlowMap.get(w.getTm().getMonth() + 1); + w.setApprovalV(value); + w.setIsStandard(w.getQ().compareTo(value) >= 0 ? true : false); + }); + } + return R.ok(list); + } + + @Operation(summary = "生态流量监控-分页") + @PostMapping("/ecologyFlowPage") + public R> ecologyFlowPage(@RequestBody @Validated StWaterR stWaterR) { + // 查询生态(放水管流量站QQ) + StStbprpB stStbprpB = stStbprpBService.getOne(new QueryWrapper().eq("sttp", "QQ").last(" limit 1")); + if(ObjectUtils.isEmpty(stStbprpB) || StringUtils.isEmpty(stStbprpB.getStcd())){ + return R.ok(new Page<>()); + } + QueryWrapper wrapper = new QueryWrapper() + .eq("stcd", stStbprpB.getStcd()) + .ge(ObjectUtils.isNotNull(stWaterR.getStartTime()), "tm", stWaterR.getStartTime()) + .le(ObjectUtils.isNotNull(stWaterR.getEndTime()), "tm", stWaterR.getEndTime()); + if(StringUtils.isNotBlank(stWaterR.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterR.getIsAsc()) ? false : stWaterR.getIsAsc(), stWaterR.getOrderField()); + } + return R.ok(service.page(stWaterR.getPageSo().toPage(), wrapper)); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StWaterRRealController.java b/src/main/java/com/gunshi/project/ss/controller/StWaterRRealController.java new file mode 100644 index 0000000..91269ef --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StWaterRRealController.java @@ -0,0 +1,107 @@ +package com.gunshi.project.ss.controller; + +import java.io.Serializable; +import java.util.Calendar; +import java.util.List; + +import com.gunshi.project.ss.service.StWaterRService; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ResMonthEcoFlow; +import com.gunshi.project.ss.model.StWaterRReal; +import com.gunshi.project.ss.service.ResMonthEcoFlowService; +import com.gunshi.project.ss.service.StStbprpBService; +import com.gunshi.project.ss.service.StWaterRRealService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +/** + * 描述: 供水量实时表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "供水量实时表") +@RestController +@RequestMapping(value="/stWaterRReal") +public class StWaterRRealController { + + @Autowired + private StStbprpBService stStbprpBService; + + @Autowired + private StWaterRRealService service; + + @Autowired + private ResMonthEcoFlowService resMonthEcoFlowService; + + @Autowired + private StWaterRService stWaterRService; + + @Operation(summary = "根据测站编码查询实时供水量") + @PostMapping("/getByStcd/{stcd}") + public R getById(@Schema(name = "stcd", description = "测站编码")@PathVariable("stcd") @NotNull String stcd) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("stcd", stcd).orderBy(true, false, "tm"); + StWaterRReal result = service.getOne(qw); + // 获取当月核定流量 + if (ObjectUtils.isNotEmpty(result)) { + ResMonthEcoFlow resMonthEcoFlow = resMonthEcoFlowService.getOne( + new QueryWrapper().eq("month", Calendar.getInstance().get(Calendar.MONTH) + 1)); + result.setResMonthEcoFlow(resMonthEcoFlow); + } + return R.ok(result); + } + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StWaterRReal dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StWaterRReal dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + List list = service.listRelated(); + if(CollectionUtils.isNotEmpty(list)){ + // 获取当月核定流量 + ResMonthEcoFlow resMonthEcoFlow = resMonthEcoFlowService.getOne(new QueryWrapper().eq("month", Calendar.getInstance().get(Calendar.MONTH) + 1)); + if(ObjectUtils.isNotEmpty(resMonthEcoFlow)){ + for(StWaterRReal real : list){ + real.setResMonthEcoFlow(resMonthEcoFlow); + } + } + } + return R.ok(list); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StWaterRReorganizeController.java b/src/main/java/com/gunshi/project/ss/controller/StWaterRReorganizeController.java new file mode 100644 index 0000000..d863e66 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StWaterRReorganizeController.java @@ -0,0 +1,299 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.StWaterRRVo; +import com.gunshi.project.ss.entity.vo.StWaterRReorganizeVo; +import com.gunshi.project.ss.entity.vo.StWaterRReorganizeYearVo; +import com.gunshi.project.ss.model.StWaterRReorganize; +import com.gunshi.project.ss.service.StWaterRReorganizeService; +import com.gunshi.project.ss.util.ConvertUtil; +import com.gunshi.project.ss.util.DateUtil; +import com.gunshi.project.ss.util.ExcelUtil; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +/** + * 描述: 供水量整编表 + * author: cxw + * date: 2024-07-24 11:22:46 + */ +@Tag(name = "供水量整编表") +@RestController +@RequestMapping(value="/stWaterRReorganize") +public class StWaterRReorganizeController { + + @Autowired + private StWaterRReorganizeService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StWaterRReorganize dto) { + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StWaterRReorganize dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.removeById(id)); + } + +// @Operation(summary = "列表") +// @PostMapping("/list") +// public R> list(@RequestBody @Validated StWaterRReorganize stWaterRReorganize) { +// String searchType = stWaterRReorganize.getSearchType(); +// String groupBy = ""; +// if("2".equals(searchType)){ +// groupBy = "LEFT(tm, 10)"; +// } else if("3".equals(searchType)){ +// groupBy = "LEFT(tm, 7)"; +// } else if("4".equals(searchType)){ +// groupBy = "LEFT(tm, 4)"; +// } else { +// groupBy = "LEFT(tm, 13)"; +// } +// QueryWrapper wrapper = new QueryWrapper() +// .select(groupBy + " tm,ROUND( AVG ( ecology_q ), 2 ) ecology_q,SUM ( ecology_v ) ecology_v,ROUND( AVG ( life_q ), 2 ) life_q,SUM ( life_v ) life_v,SUM ( sum_v ) sum_v") +// .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) +// .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) +// .groupBy(groupBy); +// if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ +// wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), stWaterRReorganize.getOrderField()); +// } +// List list = service.list(wrapper); +// if(CollectionUtils.isNotEmpty(list)){ +// for(StWaterRReorganize dto : list){ +// dto.setSumV(dto.getEcologyV().add(dto.getLifeV())); +// } +// } +// return R.ok(list); +// } +// +// @Operation(summary = "分页") +// @PostMapping("/page") +// public R> page(@RequestBody @Validated StWaterRReorganize stWaterRReorganize) { +// String searchType = stWaterRReorganize.getSearchType(); +// String groupBy = ""; +// if("2".equals(searchType)){ +// groupBy = "LEFT(tm, 10)"; +// } else if("3".equals(searchType)){ +// groupBy = "LEFT(tm, 7)"; +// } else if("4".equals(searchType)){ +// groupBy = "LEFT(tm, 4)"; +// } else { +// groupBy = "LEFT(tm, 13)"; +// } +// QueryWrapper wrapper = new QueryWrapper() +// .select(groupBy + " tm,ROUND( AVG ( ecology_q ), 2 ) ecology_q,SUM ( ecology_v ) ecology_v,ROUND( AVG ( life_q ), 2 ) life_q,SUM ( life_v ) life_v,SUM ( sum_v ) sum_v") +// .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) +// .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) +// .groupBy(groupBy); +// if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ +// wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), stWaterRReorganize.getOrderField()); +// } +// Page page = service.page(stWaterRReorganize.getPageSo().toPage(), wrapper); +// if(CollectionUtils.isNotEmpty(page.getRecords())){ +// for(StWaterRReorganize dto : page.getRecords()){ +// dto.setSumV(dto.getEcologyV().add(dto.getLifeV())); +// } +// } +// return R.ok(page); +// } + + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody @Validated StWaterRReorganize stWaterRReorganize) { + String searchType = stWaterRReorganize.getSearchType(); + String groupBy = ""; + if("2".equals(searchType)){ + groupBy = "LEFT(tm, 10)"; // 按天分组 + } else if("3".equals(searchType)){ + groupBy = "LEFT(tm, 7)"; // 按月分组 + } else if("4".equals(searchType)){ + groupBy = "LEFT(tm, 4)"; // 按年分组 + } else { + groupBy = "LEFT(tm, 13)"; // 默认按小时分组 + } + + QueryWrapper wrapper = new QueryWrapper() + .select(groupBy + " tm," + + "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + + "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + + "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") + .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) + .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) + .groupBy(groupBy); + + if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), + stWaterRReorganize.getOrderField()); + } + + List list = service.list(wrapper); + + // 计算总量(如果需要的话) + if(CollectionUtils.isNotEmpty(list)){ + for(StWaterRReorganize dto : list){ + // 如果需要计算总量,可以在这里添加 + dto.setSumV(dto.getMci1V().add(dto.getMci2V()).add(dto.getEcologyV())); + } + } + return R.ok(list); + } + + @Operation(summary = "供水统计-右边四项统计") + @PostMapping("/count") + public R count(@RequestBody @Validated StWaterRReorganize stWaterRReorganize ){ + String searchType = stWaterRReorganize.getSearchType(); + String groupBy = ""; + if("2".equals(searchType)){ + groupBy = "LEFT(tm, 10)"; // 按天分组 + } else if("3".equals(searchType)){ + groupBy = "LEFT(tm, 7)"; // 按月分组 + } else if("4".equals(searchType)){ + groupBy = "LEFT(tm, 4)"; // 按年分组 + } else { + groupBy = "LEFT(tm, 13)"; // 默认按小时分组 + } + + QueryWrapper wrapper = new QueryWrapper() + .select(groupBy + " tm," + + "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + + "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + + "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") + .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) + .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) + .groupBy(groupBy); + + if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), + stWaterRReorganize.getOrderField()); + } + + List list = service.list(wrapper); + StWaterRRVo vo = new StWaterRRVo(); + for (StWaterRReorganize entity : list) { + vo.setMci1VSum(vo.getMci2VSum().add(entity.getMci1V())); + vo.setMci2VSum(vo.getMci2VSum().add(entity.getMci2V())); + vo.setEcologyVSum(vo.getEcologyVSum().add(entity.getEcologyV())); + } + return R.ok(vo); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated StWaterRReorganize stWaterRReorganize) { + String searchType = stWaterRReorganize.getSearchType(); + String groupBy = ""; + if("2".equals(searchType)){ + groupBy = "LEFT(tm, 10)"; // 按天分组 + } else if("3".equals(searchType)){ + groupBy = "LEFT(tm, 7)"; // 按月分组 + } else if("4".equals(searchType)){ + groupBy = "LEFT(tm, 4)"; // 按年分组 + } else { + groupBy = "LEFT(tm, 13)"; // 默认按小时分组 + } + + QueryWrapper wrapper = new QueryWrapper() + .select(groupBy + " tm," + + "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + + "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + + "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") + .ge(ObjectUtils.isNotNull(stWaterRReorganize.getStartTime()), "tm", stWaterRReorganize.getStartTime()) + .le(ObjectUtils.isNotNull(stWaterRReorganize.getEndTime()), "tm", stWaterRReorganize.getEndTime()) + .groupBy(groupBy); + + if(StringUtils.isNotBlank(stWaterRReorganize.getOrderField())){ + wrapper.orderBy(true, ObjectUtils.isEmpty(stWaterRReorganize.getIsAsc()) ? false : stWaterRReorganize.getIsAsc(), + stWaterRReorganize.getOrderField()); + } + + Page page = service.page(stWaterRReorganize.getPageSo().toPage(), wrapper); + + // 计算总量(如果需要的话) + if(CollectionUtils.isNotEmpty(page.getRecords())){ + for(StWaterRReorganize dto : page.getRecords()){ + //水量小计 + dto.setSumV(dto.getMci1V() == null?BigDecimal.ZERO:dto.getMci1V().add(dto.getMci2V() == null? BigDecimal.ZERO:dto.getMci2V()).add(dto.getEcologyV() == null?BigDecimal.ZERO:dto.getEcologyV())); + } + } + return R.ok(page); + } + + + @Operation(summary = "供水水方数据导出") + @PostMapping("/exportWaterRReorganizeDataExcel") + @CrossOrigin + public void exportWaterRReorganizeDataExcel(@RequestBody @Validated StWaterRReorganize stWaterRReorganize, HttpServletResponse response) { + String searchType = stWaterRReorganize.getSearchType(); + String start = DateUtil.convertDateToMDSString(stWaterRReorganize.getStartTime()); + String end = DateUtil.convertDateToMDSString(stWaterRReorganize.getEndTime()); + if("2".equals(searchType)){ + start = start.substring(0, 10); + end = end.substring(0, 10); + } else if("3".equals(searchType)){ + start = start.substring(0, 7); + end = end.substring(0, 7); + } else if("4".equals(searchType)){ + start = start.substring(0, 4); + end = end.substring(0, 4); + } else { + start = start.substring(0, 13); + end = end.substring(0, 13); + } + String filename = "供水水方表" + start + "_" + end; + List vos = ConvertUtil.entityToVoList(this.list(stWaterRReorganize).getData(), StWaterRReorganizeVo.class); + ExcelUtil.exportExcel(vos, filename, StWaterRReorganizeVo.class, response, "供水水方表"); + } + + @Operation(summary = "统计分析") + @PostMapping("/getYearStatisticAnalysis") + public R> getYearStatisticAnalysis(@Schema(name = "year", description = "年度") @RequestParam("year") int year) { + List resList = new ArrayList<>(); + service.getYearStatisticAnalysis(year, resList); + return R.ok(resList); + } + + @Operation(summary = "统计分析数据导出") + @PostMapping("/exportYearStatisticAnalysisExcel") + @CrossOrigin + public void exportYearStatisticAnalysisExcel(@Schema(name = "year", description = "年度") @RequestParam("year") int year, HttpServletResponse response) { + String filename = year + "年度统计分析"; + List resList = new ArrayList<>(); + service.getYearStatisticAnalysis(year, resList); + ExcelUtil.exportExcel(resList, filename, StWaterRReorganizeYearVo.class, response, "统计分析"); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/StZqrlBController.java b/src/main/java/com/gunshi/project/ss/controller/StZqrlBController.java new file mode 100644 index 0000000..7dab2e4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StZqrlBController.java @@ -0,0 +1,162 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.dto.StZqrlBDto; +import com.gunshi.project.ss.entity.vo.StZqrlBCount24Vo; +import com.gunshi.project.ss.entity.vo.StZqrlBCountVo; +import com.gunshi.project.ss.entity.vo.StZqrlBVo; +import com.gunshi.project.ss.model.AttResBase; +import com.gunshi.project.ss.model.StZqrlB; +import com.gunshi.project.ss.service.AttResBaseService; +import com.gunshi.project.ss.service.StStbprpBService; +import com.gunshi.project.ss.service.StZqrlBService; +import com.gunshi.project.ss.service.StZvarlBService; +import com.gunshi.project.ss.common.validate.markers.Delete; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 水位流量关系曲线表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "水位流量关系曲线表") +@RestController +@RequestMapping(value="/stZqrlB") +public class StZqrlBController { + + @Autowired + private StZqrlBService service; + + @Autowired + private AttResBaseService resBaseService; + + @Autowired + private StStbprpBService stStbprpBService; + + @Autowired + private StZvarlBService stZvarlBService; + + + @Post(path = "/flowList", summary = "曲线数据") + public R> flowList(@RequestBody StZqrlBDto obj) { + return R.ok(stStbprpBService.flowList(obj)); + } + + @GetMapping(path = "/count/{stcd}") + @Schema(description = "实时数据") + public R count(@Schema(name = "stcd") @PathVariable("stcd") Serializable stcd) { + return R.ok(stStbprpBService.count(stcd)); + } + + + @GetMapping(path = "/count24/{stcd}") + public R count24(@Schema(name = "stcd") @PathVariable("stcd") Serializable stcd) { + return R.ok(stStbprpBService.count24(stcd)); + } + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StZqrlB dto) { + if (StringUtils.isNotBlank(dto.getResCode())){ + AttResBase one = resBaseService.list().get(0); +// if (Objects.isNull(one)){ +// throw new IllegalArgumentException("水库编码不存在"); +// } + if (StringUtils.isBlank(dto.getStcd())){ + dto.setStcd(one.getStcd()); + } + } + if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ + throw new IllegalArgumentException("测站编码不存在"); + } + + if (service.lambdaQuery() + .eq(StZqrlB::getStcd, dto.getStcd()) + .eq(StZqrlB::getZ, dto.getZ()) + .eq(StZqrlB::getQ, dto.getQ()) + .count() > 0) { + throw new IllegalArgumentException("当前数据已存在"); + } + dto.setId(IdWorker.getId()); + dto.setModitime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StZqrlB dto) { + if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ + throw new IllegalArgumentException("测站编码不存在"); + } + + if (service.lambdaQuery() + .eq(StZqrlB::getStcd, dto.getStcd()) + .eq(StZqrlB::getZ, dto.getZ()) + .eq(StZqrlB::getQ, dto.getQ()) + .ne(StZqrlB::getId,dto.getId()) + .count() > 0) { + throw new IllegalArgumentException("当前数据已存在"); + } + + + + boolean result = service.lambdaUpdate() + .set(StZqrlB::getZ, dto.getZ()) + .set(StZqrlB::getQ, dto.getQ()) + .eq(StZqrlB::getId, dto.getId()) + .update(); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @PostMapping("/del") + public R del(@Validated(Delete.class) @RequestBody StZqrlB dto) { + if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ + throw new IllegalArgumentException("测站编码不存在"); + } + if (service.lambdaQuery() + .eq(StZqrlB::getId, dto.getId()) + .count() == 0) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.lambdaUpdate() + .eq(StZqrlB::getId, dto.getId()) + .remove() ); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody StZqrlB dto) { + LambdaQueryChainWrapper q = service.lambdaQuery().orderByAsc(StZqrlB::getZ); +// String stcd = dto.getStcd(); +// if (StringUtils.isNotBlank(stcd)){ +// q.eq(StZqrlB::getStcd, stcd); +// } + return R.ok(q.list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StZvarlBController.java b/src/main/java/com/gunshi/project/ss/controller/StZvarlBController.java new file mode 100644 index 0000000..bbd665a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StZvarlBController.java @@ -0,0 +1,132 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.AttResBase; +import com.gunshi.project.ss.model.StZvarlB; +import com.gunshi.project.ss.service.AttResBaseService; +import com.gunshi.project.ss.service.StStbprpBService; +import com.gunshi.project.ss.service.StZvarlBService; +import com.gunshi.project.ss.common.validate.markers.Delete; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +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.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 库( 湖)容曲线表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "库( 湖)容曲线表") +@RestController +@RequestMapping(value="/stZvarlB") +public class StZvarlBController { + + @Autowired + private StZvarlBService service; + + @Autowired + private AttResBaseService resBaseService; + + @Autowired + private StStbprpBService stStbprpBService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody StZvarlB dto) { + if (StringUtils.isNotBlank(dto.getResCode())){ + AttResBase one = resBaseService.lambdaQuery().eq(AttResBase::getResCode, dto.getResCode()).one(); + if (Objects.isNull(one)){ + throw new IllegalArgumentException("水库编码不存在"); + } + if (StringUtils.isBlank(dto.getStcd())){ + dto.setStcd(one.getStcd()); + } + } + if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ + throw new IllegalArgumentException("测站编码不存在"); + } + if (service.lambdaQuery() + .eq(StZvarlB::getStcd, dto.getStcd()) + .eq(StZvarlB::getRz, dto.getRz()) + .eq(StZvarlB::getW, dto.getW()) + .count() > 0) { + throw new IllegalArgumentException("当前数据已存在"); + } + dto.setId(IdWorker.getId()); + dto.setModitime(new Date()); + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody StZvarlB dto) { + if (StringUtils.isNotBlank(dto.getStcd()) && Objects.isNull(stStbprpBService.getById(dto.getStcd()))){ + throw new IllegalArgumentException("测站编码不存在"); + } + + + if (service.lambdaQuery() + .eq(StZvarlB::getStcd, dto.getStcd()) + .eq(StZvarlB::getRz, dto.getRz()) + .eq(StZvarlB::getW, dto.getW()) + .ne(StZvarlB::getId, dto.getId()) + .count() > 0) { + throw new IllegalArgumentException("当前数据已存在"); + } + + + boolean result = service.lambdaUpdate() + .set(StZvarlB::getRz, dto.getRz()) + .set(StZvarlB::getW, dto.getW()) + .set(StZvarlB::getWsfa, dto.getWsfa()) + .eq(StZvarlB::getId, dto.getId()) + .update(); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @PostMapping("/del") + public R del(@Validated(Delete.class) @RequestBody StZvarlB dto) { + if (service.lambdaQuery() + .eq(StZvarlB::getId, dto.getId()) + .count() == 0) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.lambdaUpdate() + .eq(StZvarlB::getId, dto.getId()) + .remove() ); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list(@RequestBody StZvarlB dto) { + LambdaQueryChainWrapper q = service.lambdaQuery().orderByAsc(StZvarlB::getRz); + String stcd = dto.getStcd(); + if (StringUtils.isNotBlank(stcd)){ + q.eq(StZvarlB::getStcd, stcd); + } + return R.ok(q.list()); + } + +// @Operation(summary = "分页") +// @PostMapping("/page") + public R> page() { + return R.ok(service.page(null,null)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/StatisticsController.java b/src/main/java/com/gunshi/project/ss/controller/StatisticsController.java new file mode 100644 index 0000000..95ffda7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/StatisticsController.java @@ -0,0 +1,93 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.project.ss.entity.so.StatisticsQuerySo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.service.StatisticsService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +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: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "报图报表") +@RestController +@RequestMapping(value="/statistics") +public class StatisticsController{ + + @Autowired + private StatisticsService service; + + @Operation(summary = "时段降雨日报表") + @PostMapping("/sdJyRb") + public R> sdJyRb(@Validated @RequestBody DateRangeSo dateRangeSo) { + return R.ok(service.sdJyRb(dateRangeSo)); + } + + @Operation(summary = "时段降雨日报表导出") + @PostMapping( "/sdJyRb/export") + public void export(@RequestBody @Validated DateRangeSo dateRangeSo, HttpServletResponse response) { + service.sdJyRbExport(dateRangeSo,response); + } + + @Operation(summary = "时段水位日报表") + @PostMapping("/sdSwRb") + public R> sdSwRb(@Validated @RequestBody DateRangeSo dateRangeSo) { + return R.ok(service.sdSwRb(dateRangeSo)); + } + + @Operation(summary = "时段水位日报表导出") + @PostMapping("/sdSwRb/export") + public void sdSwRbExport(@Validated @RequestBody DateRangeSo dateRangeSo, HttpServletResponse response) { + service.sdSwRbExport(dateRangeSo,response); + } + + @Operation(summary = "日降雨年报表(上方表格)") + @PostMapping("/rjyNb") + public R> rjyNb(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo) { + return R.ok(service.rjyNb(statisticsQuerySo,null)); + } + + @Operation(summary = "日降雨年报表(下方统计)") + @PostMapping("/rjyNb/stat") + public R rjyNbStat(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo) { + return R.ok(service.rjyNbStat(statisticsQuerySo)); + } + + @Operation(summary = "日降雨年报表导出") + @PostMapping("/rjyNb/export") + public void rjyNbExport(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo, HttpServletResponse response) { + service.rjyNbExport(statisticsQuerySo,response); + } + + @Operation(summary = "日均水位年报表(上方表格)") + @PostMapping("/rjswNb") + public R> rjswNb(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo) { + return R.ok(service.rjswNb(statisticsQuerySo)); + } + + @Operation(summary = "日均水位年报表(下方统计)") + @PostMapping("/rjswNb/stat") + public R rjswNbStat(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo) { + return R.ok(service.rjswNbStat(statisticsQuerySo)); + } + + @Operation(summary = "日均水位年报表导出") + @PostMapping("/rjswNb/export") + public void rjswNbExport(@Validated @RequestBody StatisticsQuerySo statisticsQuerySo, HttpServletResponse response) { + service.rjswNbExport(statisticsQuerySo,response); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/SyDataCheckRuleController.java b/src/main/java/com/gunshi/project/ss/controller/SyDataCheckRuleController.java new file mode 100644 index 0000000..e003d77 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SyDataCheckRuleController.java @@ -0,0 +1,60 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.gunshi.project.ss.entity.so.SyDataCheckRulePageSo; +import com.gunshi.project.ss.model.SyDataCheckRule; +import com.gunshi.project.ss.service.SyDataCheckRuleService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Objects; + +@Tag(name = "渗压数据清洗规则") +@RestController +@RequestMapping(value="/syDataCheckRule") +public class SyDataCheckRuleController { + + @Autowired + private SyDataCheckRuleService syDataCheckRuleService; + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated SyDataCheckRulePageSo page) { + return R.ok(syDataCheckRuleService.pageQuery(page)); + } + + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SyDataCheckRule dto) { + return R.ok(syDataCheckRuleService.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SyDataCheckRule dto) { + return R.ok(syDataCheckRuleService.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(syDataCheckRuleService.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(syDataCheckRuleService.removeById(id)); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/SysDictBController.java b/src/main/java/com/gunshi/project/ss/controller/SysDictBController.java new file mode 100644 index 0000000..6ce013c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SysDictBController.java @@ -0,0 +1,135 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import com.gunshi.project.ss.model.SysDictB; +import com.gunshi.project.ss.service.SysDictBService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 系统字典表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "系统字典表") +@RestController +@RequestMapping(value="/sysDictB") +public class SysDictBController { + + @Autowired + private SysDictBService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SysDictB dto) { + + if (StringUtils.isNotBlank(dto.getDictNm())){ + if (service.lambdaQuery().eq(SysDictB::getDictNm,dto.getDictNm()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + } + if (Objects.nonNull(dto.getPid()) && !"0".equals(dto.getPid()) ){ + if (service.lambdaQuery().eq(SysDictB::getId,dto.getPid()) + .count() == 0) { + throw new IllegalArgumentException("当父级不存在"); + } + } + if (null == dto.getPid()){ + dto.setPid(0L); + } + dto.setCreateTm(new Date()); + dto.setId(IdWorker.getId()); + + boolean result = service.save(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SysDictB dto) { + + if (StringUtils.isNotBlank(dto.getDictNm())){ + if (service.lambdaQuery().eq(SysDictB::getDictNm,dto.getDictNm()) + .ne(SysDictB::getId,dto.getId()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + } + if (Objects.nonNull(dto.getPid()) && !"0".equals(dto.getPid()) ){ + if (service.lambdaQuery().eq(SysDictB::getId,dto.getPid()) + .count() == 0) { + throw new IllegalArgumentException("当父级不存在"); + } + } + dto.setTm(new Date()); + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "列表 通过父id查子项") + @PostMapping("/list") + public R> list(@RequestBody SysDictB dto) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + Long pid = dto.getPid(); + if (Objects.nonNull(pid)){ + query.eq(SysDictB::getPid, pid); + } + return R.ok(query.list()); + } + + @Operation(summary = "列表 通过父编码查子项") + @GetMapping("/listByCd") + public R> listByCd(@Schema(name = "dictCd",description = "父编码") @RequestParam(name = "dictCd") String dictCd) { + return R.ok(service.listByCd(dictCd)); + } + + @Operation(summary = "分页 只查父项") + @PostMapping("/page") + public R> page(@RequestBody GenericPageParams page) { + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + + Page data = service.page(page.getPageSo().toPage(), queryWrapper.eq(SysDictB::getPid,0L)); + + data.getRecords().forEach( o-> o.setChildren(service.lambdaQuery().eq(SysDictB::getPid,o.getId()).list())); + + return R.ok(data); + } + + @Operation(summary = "树") + @GetMapping("/tree") + public R> tree() { + return R.ok(service.tree()); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/SzCaseController.java b/src/main/java/com/gunshi/project/ss/controller/SzCaseController.java new file mode 100644 index 0000000..5b38581 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SzCaseController.java @@ -0,0 +1,272 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Maps; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.SzCasePage; +import com.gunshi.project.ss.entity.vo.SzCaseStatisticsVo; +import com.gunshi.project.ss.model.SzCase; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.SzCaseService; +import com.gunshi.project.ss.util.DateUtil; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.compress.utils.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 案件登记表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "案件登记表") +@RestController +@RequestMapping(value="/szCase") +public class SzCaseController extends AbstractCommonFileController{ + + @Autowired + private SzCaseService service; + + @Autowired + private FileAssociationsService fileService; + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SzCase dto) { + + if (service.lambdaQuery().eq(SzCase::getCaseName,dto.getCaseName()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + + dto.setCreateTime(new Date()); + dto.setId(IdWorker.getId()); + + boolean result = service.save(dto); + + + if (result){ + fileService.saveFile(dto.getFiles1(), getGroupId(), String.valueOf( dto.getId()),"1"); + fileService.saveFile(dto.getFiles2(), getGroupId(), String.valueOf( dto.getId()),"2"); + fileService.saveFile(dto.getFiles3(), getGroupId(), String.valueOf( dto.getId()),"3"); + fileService.saveFile(dto.getFiles4(), getGroupId(), String.valueOf( dto.getId()),"4"); + fileService.saveFile(dto.getFiles5(), getGroupId(), String.valueOf( dto.getId()),"5"); + fileService.saveFile(dto.getFiles6(), getGroupId(), String.valueOf( dto.getId()),"6"); + fileService.saveFile(dto.getFiles7(), getGroupId(), String.valueOf( dto.getId()),"7"); + fileService.saveFile(dto.getFiles8(), getGroupId(), String.valueOf( dto.getId()),"8"); + fileService.saveFile(dto.getFiles9(), getGroupId(), String.valueOf( dto.getId()),"9"); + } + + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SzCase dto) { + + + if (service.lambdaQuery() + .ne(SzCase::getId,dto.getId()) + .eq(SzCase::getCaseName,dto.getCaseName()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + + dto.setCreateTime(null); + dto.setCreateBy(null); + dto.setCreateName(null); + dto.setUpdateTime(new Date()); + boolean result = service.updateById(dto); + + if (result){ + fileService.saveFile(dto.getFiles1(), getGroupId(), String.valueOf( dto.getId()),"1"); + fileService.saveFile(dto.getFiles2(), getGroupId(), String.valueOf( dto.getId()),"2"); + fileService.saveFile(dto.getFiles3(), getGroupId(), String.valueOf( dto.getId()),"3"); + fileService.saveFile(dto.getFiles4(), getGroupId(), String.valueOf( dto.getId()),"4"); + fileService.saveFile(dto.getFiles5(), getGroupId(), String.valueOf( dto.getId()),"5"); + fileService.saveFile(dto.getFiles6(), getGroupId(), String.valueOf( dto.getId()),"6"); + fileService.saveFile(dto.getFiles7(), getGroupId(), String.valueOf( dto.getId()),"7"); + fileService.saveFile(dto.getFiles8(), getGroupId(), String.valueOf( dto.getId()),"8"); + fileService.saveFile(dto.getFiles9(), getGroupId(), String.valueOf( dto.getId()),"9"); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated SzCasePage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + if (Objects.nonNull(page.getCaseType())){ + query.eq(SzCase::getCaseType, page.getCaseType()); + } + + if (Objects.nonNull(page.getCaseName())){ + query.like(SzCase::getCaseName, page.getCaseName()); + } + + if (Objects.nonNull(page.getCaseId())){ + query.like(SzCase::getCaseId, page.getCaseId()); + } + + if (Objects.nonNull(page.getStm())){ + query.ge(SzCase::getCreateTime, page.getStm()); + } + + if (Objects.nonNull(page.getEtm())){ + query.le(SzCase::getCreateTime, page.getEtm()); + } + + query.orderByDesc(SzCase::getCreateTime); + return R.ok(service.page(page.getPageSo().toPage(),query)); + } + + @Operation(summary = "获取详情(包含文件)") + @GetMapping("/get/{id}") + public R getFiles(@Schema(name = "id") @PathVariable("id") Serializable id) { + SzCase o = service.getById(id); + if (Objects.isNull(o)) { + throw new IllegalArgumentException("当前数据不存在"); + } + + o.setFiles1(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"1")); + o.setFiles2(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"2")); + o.setFiles3(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"3")); + o.setFiles4(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"4")); + o.setFiles5(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"5")); + o.setFiles6(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"6")); + o.setFiles7(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"7")); + o.setFiles8(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"8")); + o.setFiles9(fileService.getFiles(getGroupId(),String.valueOf(o.getId()),"9")); + + return R.ok(o); + } + + @Operation(summary = "案件统计") + @PostMapping("/statistics/{num}") + public R> statistics( + @Schema(name = "统计类型 0:案件来源,1:案件类型,2:执行类型") @PathVariable("num") Integer num, + @RequestBody @Validated SzCasePage page) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + + if (Objects.nonNull(page.getStm())){ + query.ge(SzCase::getCreateTime, page.getStm()); + } + + if (Objects.nonNull(page.getEtm())){ + query.le(SzCase::getCreateTime, page.getEtm()); + } + + List vos = Lists.newArrayList(); + + List list = query.list(); + + if (CollectionUtils.isNotEmpty(list)){ + Map sourceCount = Maps.newHashMap(); + switch (num){ + case 0:{ // 案件来源 + sourceCount = list.stream() + .filter(o -> Objects.nonNull(o.getCaseSource())) + .collect(Collectors.groupingBy(SzCase::getCaseSource, Collectors.counting())); + break; + } + case 1:{ // 案件类型 + sourceCount = list.stream() + .filter(o -> Objects.nonNull(o.getCaseType())) + .collect(Collectors.groupingBy(SzCase::getCaseType, Collectors.counting())); + break; + } + case 2:{ // 执行类型 + sourceCount = list.stream() + .filter(o -> Objects.nonNull(o.getCaseImplementation())) + .collect(Collectors.groupingBy(SzCase::getCaseImplementation, Collectors.counting())); + break; + } + default:break; + } + + sourceCount.forEach((k,v) -> vos.add(new SzCaseStatisticsVo(null,k,v.intValue()))); + } + + return R.ok(vos); + } + + @Operation(summary = "案件数量趋势") + @GetMapping("/statisticsNum/{year}") + public R> statisticsNum(@Schema(name = "年份") @PathVariable("year") Integer year) { + LambdaQueryChainWrapper query = service.lambdaQuery(); + + query.ge(SzCase::getCreateTime, DateUtil.beginOfYearToDate(year)); + + query.le(SzCase::getCreateTime, DateUtil.endOfYearToDate(year)); + + List vos = Lists.newArrayList(); + + List list = query.list(); + + Calendar calendar = Calendar.getInstance(); + for (int i = 0; i < 12; i++) { + int month = i; + long cnt = list.stream().filter(item -> { + calendar.setTime(item.getCreateTime()); + return month == calendar.get(Calendar.MONTH); + }).count(); + vos.add(new SzCaseStatisticsVo(month + 1,null,Integer.valueOf(String.valueOf(cnt)))); + } +// +// Calendar calendar = Calendar.getInstance(); +// int currYear = calendar.get(Calendar.YEAR); +// int month = calendar.get(Calendar.MONTH) + 1; +// if(year.intValue() != currYear){ +// calendar.set(Calendar.YEAR,year); +// month = 12; +// } +// final int finalMonth = month; +// for (int i = 1; i <= finalMonth; i++) { +// int finalI = i; +// long count = 0; +// if(CollectionUtils.isNotEmpty(list)){ +// count = list.stream() +// .filter(item -> +// { +// calendar.setTime(item.getCaseDate()); +// return finalMonth == finalI; +// }) +// .count(); +// } +// vos.add(new SzCaseStatisticsVo(i,null,Integer.valueOf(String.valueOf(count)))); +// } + + return R.ok(vos); + } + + @Override + public String getGroupId() { + return "szCase"; + } + public String getGroupId(Integer num) { + return getGroupId() + num; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/SzRegulatoryFrameworkController.java b/src/main/java/com/gunshi/project/ss/controller/SzRegulatoryFrameworkController.java new file mode 100644 index 0000000..5a7f2b9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SzRegulatoryFrameworkController.java @@ -0,0 +1,146 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.SzRegulatoryFrameworkPage; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.SzRegulatoryFramework; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.SzRegulatoryFrameworkService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 案件登记表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "制度管理表") +@RestController +@RequestMapping(value = "/SzRegulatoryFramework") +public class SzRegulatoryFrameworkController extends AbstractCommonFileController { + + @Autowired + private SzRegulatoryFrameworkService service; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SzRegulatoryFramework dto) { + + if (service.lambdaQuery().eq(SzRegulatoryFramework::getName, dto.getName()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + + dto.setCreateTime(new Date()); + dto.setId(IdWorker.getId()); + dto.setUploadDate(new Date()); + dto.setUpdateTime(new Date()); + dto.setMinUpTime(new Date()); + boolean result = service.save(dto); + + + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SzRegulatoryFramework dto) { + + + if (service.lambdaQuery() + .ne(SzRegulatoryFramework::getId, dto.getId()) + .eq(SzRegulatoryFramework::getName, dto.getName()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + dto.setCreateBy(null); + dto.setCreateName(null); + dto.setUpdateTime(new Date()); + dto.setCreateTime(null); + boolean result = service.updateById(dto); + + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated SzRegulatoryFrameworkPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + + if (Objects.nonNull(page.getType())) { + query.eq(SzRegulatoryFramework::getType, page.getType()); + } + + if (Objects.nonNull(page.getName())) { + query.like(SzRegulatoryFramework::getName, page.getName()); + } + + if (Objects.nonNull(page.getFillUnit())) { + query.like(SzRegulatoryFramework::getFillUnit, page.getFillUnit()); + } + + if (Objects.nonNull(page.getStm())) { + query.ge(SzRegulatoryFramework::getReleaseDate, page.getStm()); + } + + if (Objects.nonNull(page.getEtm())) { + query.le(SzRegulatoryFramework::getReleaseDate, page.getEtm()); + } + + query.orderByDesc(SzRegulatoryFramework::getUpdateTime); + Page data = service.page(page.getPageSo().toPage(), query); + data.getRecords().forEach(item -> { + List files = fileService.getFiles(getGroupId(), String.valueOf(item.getId())); + if(CollectionUtils.isNotEmpty(files)){ + Date minDate = files.stream() + .map(FileAssociations::getTm) // 提取每个对象的 tm 字段 + .min(Date::compareTo).orElse(null); // 找到最小的 Date + item.setMinUpTime(minDate); + } + item.setFiles(files); + }); + return R.ok(data); + } + + + + @Override + public String getGroupId() { + return "SzRegulatoryFramework"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/SzRuleByLawController.java b/src/main/java/com/gunshi/project/ss/controller/SzRuleByLawController.java new file mode 100644 index 0000000..862a1cb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SzRuleByLawController.java @@ -0,0 +1,179 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.SzRuleByLawPage; +import com.gunshi.project.ss.model.SzRuleByLaw; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.SzRuleByLawService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Calendar; +import java.util.Date; +import java.util.Objects; + +/** + * 描述: 法律法规管理表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "法律法规管理表") +@RestController +@RequestMapping(value = "/SzRuleByLaw") +public class SzRuleByLawController extends AbstractCommonFileController { + + @Autowired + private SzRuleByLawService service; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SzRuleByLaw dto) { + + if (service.lambdaQuery().eq(SzRuleByLaw::getName, dto.getName()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + + if (CollectionUtils.isNotEmpty(dto.getFiles())){ + dto.setUploadDate(new Date()); + } + boolean result = service.save(dto); + + + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SzRuleByLaw dto) { + + + if (service.lambdaQuery() + .ne(SzRuleByLaw::getId, dto.getId()) + .eq(SzRuleByLaw::getName, dto.getName()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + + dto.setCreateTime(null); + dto.setCreateBy(null); + dto.setCreateName(null); + dto.setUpdateTime(new Date()); + + if (CollectionUtils.isNotEmpty(dto.getFiles())){ + dto.setUploadDate(new Date()); + } + + boolean result = service.updateById(dto); + + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated SzRuleByLawPage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + Calendar calendar=Calendar.getInstance(); + + if (Objects.nonNull(page.getType())) { + query.eq(SzRuleByLaw::getType, page.getType()); + } + + if (Objects.nonNull(page.getName())) { + query.like(SzRuleByLaw::getName, page.getName()); + } + + if (Objects.nonNull(page.getFillUnit())) { + query.like(SzRuleByLaw::getFillUnit, page.getFillUnit()); + } + + if (Objects.nonNull(page.getTimeliness())) { + query.eq(SzRuleByLaw::getTimeliness, page.getTimeliness()); + } + + if (Objects.nonNull(page.getStmAd())) { + query.ge(SzRuleByLaw::getCreateTime, page.getStmAd()); + } + + Date etmAd = page.getEtmAd(); + if (Objects.nonNull(etmAd)) { + calendar.setTime(etmAd); + calendar.set(Calendar.HOUR,23); + calendar.set(Calendar.MINUTE,59); + calendar.set(Calendar.SECOND,59); + query.le(SzRuleByLaw::getCreateTime, calendar.getTime()); + } + + if (Objects.nonNull(page.getStmIm())) { + query.ge(SzRuleByLaw::getImplementationDate, page.getStmIm()); + } + + Date etmIm = page.getEtmIm(); + if (Objects.nonNull(etmIm)) { + calendar.setTime(etmIm); + calendar.set(Calendar.HOUR,23); + calendar.set(Calendar.MINUTE,59); + calendar.set(Calendar.SECOND,59); + query.le(SzRuleByLaw::getImplementationDate, calendar.getTime()); + } + + if (Objects.nonNull(page.getStmUd())) { + query.ge(SzRuleByLaw::getCreateTime, page.getStmUd()); + } + + Date etmUd = page.getEtmUd(); + if (Objects.nonNull(etmUd)) { + calendar.setTime(etmUd); + calendar.set(Calendar.HOUR,23); + calendar.set(Calendar.MINUTE,59); + calendar.set(Calendar.SECOND,59); + query.le(SzRuleByLaw::getCreateTime, calendar.getTime()); + } + + query.orderByDesc(SzRuleByLaw::getCreateTime); + Page data = service.page(page.getPageSo().toPage(), query); + data.getRecords() + .forEach(item -> item.setFiles(fileService.getFiles(getGroupId(), String.valueOf(item.getId())))); + return R.ok(data); + } + + + @Override + public String getGroupId() { + return "SzRuleByLaw"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/SzTreatmentBasisController.java b/src/main/java/com/gunshi/project/ss/controller/SzTreatmentBasisController.java new file mode 100644 index 0000000..3c16ba5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/SzTreatmentBasisController.java @@ -0,0 +1,154 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.SzTreatmentBasis; +import com.gunshi.project.ss.service.SzTreatmentBasisService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 案件登记表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "处理依据表") +@RestController +@RequestMapping(value="/szTreatmentBasis") +public class SzTreatmentBasisController{ + + @Autowired + private SzTreatmentBasisService service; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody SzTreatmentBasis dto) { + + if (service.lambdaQuery().eq(SzTreatmentBasis::getLegalName,dto.getLegalName()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + + if (Objects.isNull(dto.getPId())){ + dto.setPId(0L); + } + + dto.setCreateTime(new Date()); + dto.setId(IdWorker.getId()); + + if (dto.getStatus() == 0) { + dto.setDisplay(0); + } else { + dto.setDisplay(1); + } + + boolean result = service.save(dto); + + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody SzTreatmentBasis dto) { + + + if (service.lambdaQuery() + .ne(SzTreatmentBasis::getId,dto.getId()) + .eq(SzTreatmentBasis::getLegalName,dto.getLegalName()) + .count() > 0) { + throw new IllegalArgumentException("当前名称已存在"); + } + + dto.setCreateTime(null); + dto.setCreateBy(null); + dto.setCreateName(null); + dto.setUpdateTime(new Date()); + if (dto.getStatus() == 0) { + dto.setDisplay(0); + } else { + dto.setDisplay(1); + } + boolean result = service.updateById(dto); + + return R.ok(result ? dto : null); + } + + @Operation(summary = "获取详情") + @GetMapping("/get/{id}") + public R get(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.getById(id)); + } + + @Operation(summary = "获取树") + @GetMapping("/get/tree") + public R> getTree() { + List list = service.list(); + if (CollectionUtils.isEmpty(list)){ + return R.ok(list); + } + Map> listMap = list.stream().collect(Collectors.groupingBy(SzTreatmentBasis::getPId)); + + list.forEach(o -> o.setChildren(listMap.get(o.getId()))); + List parentList = list.stream() + .filter(o -> 0L == o.getPId()) + .collect(Collectors.toList()); + + return R.ok(parentList); + } + + @Operation(summary = "获取树-不显示禁用的") + @GetMapping("/get/treeFiltered") + public R> getTreeFiltered() { + List list = service.list(); + if (CollectionUtils.isEmpty(list)){ + return R.ok(list); + } + Map> listMap = list.stream().collect(Collectors.groupingBy(SzTreatmentBasis::getPId)); + + list.forEach(o -> o.setChildren(listMap.get(o.getId()))); + List parentList = list.stream() + .filter(o -> 0L == o.getPId()) + .collect(Collectors.toList()); + + parentList.forEach(this::trim); + parentList.removeIf(node -> CollectionUtils.isEmpty(node.getChildren()) && (Integer.valueOf(0).equals(node.getDisplay()) || node.getDisplay() == null)); + + return R.ok(parentList); + } + + private boolean trim(SzTreatmentBasis node) { + List children = node.getChildren(); + boolean isMiddleNode = false; + if (CollectionUtils.isNotEmpty(children)) { + isMiddleNode = true; + children.removeIf(this::trim); + } + //没有子节点的节点,且display是0,是末端节点;没有子节点的节点,且曾经有过子节点,是中间节点 + //末端节点的display是0就删,中间节点没有子节点就删 + return CollectionUtils.isEmpty(children) && (isMiddleNode || Integer.valueOf(0).equals(node.getDisplay())); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + if (Objects.isNull(service.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + return R.ok(service.removeById(id)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/TermiteAdverController.java b/src/main/java/com/gunshi/project/ss/controller/TermiteAdverController.java new file mode 100644 index 0000000..022e929 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/TermiteAdverController.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.mapper.TermiteSurveyMapper; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 描述: 白蚁防治宣传 + * author: xusan + * date: 2024-08-28 10:29:58 + */ +@Tag(name = "白蚁防治宣传资料") +@RestController +@RequestMapping(value="/termite/adver") +public class TermiteAdverController extends AbstractCommonFileController{ + + @Autowired + private TermiteSurveyMapper termiteSurveyMapper; + + @Operation(summary = "宣传资料") + @GetMapping("/list") + public R> list() { + return R.ok(termiteSurveyMapper.queryFileList(getGroupId())); + } + + + @Override + public String getGroupId() { + return "termiteAdver"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/TermiteAdverPicController.java b/src/main/java/com/gunshi/project/ss/controller/TermiteAdverPicController.java new file mode 100644 index 0000000..46dc3a9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/TermiteAdverPicController.java @@ -0,0 +1,54 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.TermiteAdverPic; +import com.gunshi.project.ss.service.TermiteAdverPicService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +/** + * 描述: 白蚁防治宣传图片墙 + * author: xusan + * date: 2024-08-29 17:33:09 + */ +@Tag(name = "白蚁防治宣传图片墙") +@RestController +@RequestMapping(value="/termite/pic") +public class TermiteAdverPicController extends AbstractCommonFileController{ + + @Autowired + private TermiteAdverPicService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody TermiteAdverPic dto) { + return R.ok(service.saveData(dto)); + } + + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.queryList()); + } + + + @Override + public String getGroupId() { + return "termiteAdverPic"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/TermiteSurveyController.java b/src/main/java/com/gunshi/project/ss/controller/TermiteSurveyController.java new file mode 100644 index 0000000..06c209a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/TermiteSurveyController.java @@ -0,0 +1,133 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.TermiteSurveyPageSo; +import com.gunshi.project.ss.model.TermiteSurvey; +import com.gunshi.project.ss.model.TermiteSurveyDetail; +import com.gunshi.project.ss.service.TermiteSurveyDetailService; +import com.gunshi.project.ss.service.TermiteSurveyService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 白蚁普查 + * author: xusan + * date: 2024-08-28 10:29:58 + */ +@Tag(name = "白蚁普查") +@RestController +@RequestMapping(value="/termite/survey") +public class TermiteSurveyController extends AbstractCommonFileController{ + + @Autowired + private TermiteSurveyService service; + @Autowired + private TermiteSurveyDetailService termiteSurveyDetailService; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody TermiteSurvey dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody TermiteSurvey dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.delData(id)); + } + + @Operation(summary = "详情") + @GetMapping("/detail/{id}") + public R detail(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.detail(id)); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated TermiteSurveyPageSo page) { + return R.ok(service.pageQuery(page)); + } + + @Operation(summary = "分页") + @PostMapping("/pageDetail") + public R> pageDetail(@RequestBody @Validated TermiteSurveyPageSo page) { + return R.ok(termiteSurveyDetailService.pageQuery(page)); + } + + @Operation(summary = "统计") + @PostMapping("/count") + public R> count(@RequestBody @Validated TermiteSurveyPageSo page) { + page.getPageSo().setPageSize(1000000); + Page termiteSurveyPage = termiteSurveyDetailService.pageQuery(page); + List records = termiteSurveyPage.getRecords(); + Map countMap = new HashMap<>(); + countMap.put("totalPoint",0l); + countMap.put("hasAnt",0l); + countMap.put("notAnt",0l); + countMap.put("noData",0l); + if(CollectionUtils.isEmpty(records)){ + return R.ok(countMap); + } + + page.getPageSo().setPageSize(1000000); + page.setPileNumber(null); + page.setSearchDate(null); + Page totalPage = termiteSurveyDetailService.pageQuery(page); + + if(CollectionUtils.isNotEmpty(totalPage.getRecords())){ + //所有点 去除空的 + long pileNumberCount = totalPage.getRecords().stream() + //.map(TermiteSurveyDetail::getPileNumber).filter(e -> StringUtils.isNotEmpty(e)) + .collect(Collectors.toSet()).stream().count(); + countMap.put("totalPoint", pileNumberCount); + } + + + //有危害 && 未处置 + long harmNumCount = records.stream() + .filter(e-> Objects.nonNull(e.getIsHarm()) && Objects.nonNull(e.getIsHandle()) + && e.getIsHarm().intValue() > 0 && e.getIsHandle().intValue()!=1).count(); + countMap.put("hasAnt", harmNumCount); + + //无危害 || (有危害&& 以处置) + long handleNummCount = records.stream() + .filter(e-> Objects.nonNull(e.getIsHarm()) && Objects.nonNull(e.getIsHandle()) + && (e.getIsHarm().intValue() == 0 || e.getIsHarm().intValue() > 0 && e.getIsHandle().intValue()==1)).count(); + + countMap.put("notAnt", handleNummCount); + + //无数据 + long count = records.stream().filter(e -> Objects.isNull(e.getIsHandle()) || e.getIsHandle().intValue() == 0).count(); + countMap.put("noData",count); + + return R.ok(countMap); + } + + + + @Override + public String getGroupId() { + return "termiteSurvey"; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/TyYearRainfallController.java b/src/main/java/com/gunshi/project/ss/controller/TyYearRainfallController.java new file mode 100644 index 0000000..7ac8dd1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/TyYearRainfallController.java @@ -0,0 +1,62 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.TyYearRainfallPageSo; +import com.gunshi.project.ss.entity.vo.TyYearRainfallVo; +import com.gunshi.project.ss.service.TyYearRainfallService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +/** + * 描述: 典型年降雨资料表 + * author: xusan + * date: 2024-07-08 17:40:37 + */ +@Tag(name = "典型年降雨资料表") +@RestController +@RequestMapping(value="/tyYearRainfall") +public class TyYearRainfallController { + + @Autowired + private TyYearRainfallService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody TyYearRainfallVo dto) { + return R.ok(service.saveData(dto)); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody TyYearRainfallVo dto) { + return R.ok(service.updateData(dto)); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Long id) { + return R.ok(service.removeData(id)); + } + + @Operation(summary = "列表") + @PostMapping("/list") + public R> list() { + return R.ok(service.queryList()); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> pageQuery(@RequestBody TyYearRainfallPageSo tyYearRainfallPageSo) { + return R.ok(service.pageQuery(tyYearRainfallPageSo)); + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/controller/WarningRuleController.java b/src/main/java/com/gunshi/project/ss/controller/WarningRuleController.java new file mode 100644 index 0000000..109161a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/WarningRuleController.java @@ -0,0 +1,110 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.gunshi.project.ss.entity.so.WarningRulePageSo; +import com.gunshi.project.ss.model.WarningRule; +import com.gunshi.project.ss.model.WarningRuleInfo; +import com.gunshi.project.ss.service.HisWaterDataService; +import com.gunshi.project.ss.service.StStbprpBService; +import com.gunshi.project.ss.service.WarningRuleInfoService; +import com.gunshi.project.ss.service.WarningRuleService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "预警规则") +@RestController +@RequestMapping(value="/warningRule") +public class WarningRuleController extends AbstractCommonFileController { + + @Autowired + private WarningRuleService warningRuleService; + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody @Validated WarningRulePageSo page) { + return R.ok(warningRuleService.pageQuery(page)); + } + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@RequestBody @Validated WarningRule dto, HttpServletRequest request) { +// SessionUser sessionUser = checkLogin(request); +// if(sessionUser == null){ +// throw new IllegalArgumentException("未登录"); +// } +// Long userId = sessionUser.getUserId(); +// dto.setCreateName(userId.toString()); + return R.ok(warningRuleService.saveData(dto)); + } + + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody WarningRule dto) { + boolean result = warningRuleService.updateData(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = warningRuleService.deleteById(id); + return R.ok(b); + } + + + @Autowired + private WarningRuleInfoService warningRuleInfoService; + + @Operation(summary = "预警信息分页") + @PostMapping("/info/page") + public R> infoPage(@RequestBody @Validated WarningRulePageSo page) { + return R.ok(warningRuleInfoService.pageQuery(page)); + } + + //获取水位站测点 + @Operation(summary = "获取水位站测点") + @GetMapping("/getRsvrStcd") + public R> gerRsvrOrRiverStcd(){ + return R.ok(stStbprpBService.getRsvrStations()); + } + + //获取降雨量测点 + + @Autowired + private StStbprpBService stStbprpBService; + + @Operation(summary = "获取降雨量测点") + @GetMapping("/getRainStcd") + public R> gerRainStcd(){ + return R.ok(stStbprpBService.getPptnStations()); + } + + @Autowired + private HisWaterDataService hisWaterDataService; + + @Operation(summary = "获取年份") + @GetMapping("/getYear") + public R> getYear(){ + return R.ok(hisWaterDataService.getYearList()); + } + + @Override + public String getGroupId() { + return "warningRule"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/WaterAlarmController.java b/src/main/java/com/gunshi/project/ss/controller/WaterAlarmController.java new file mode 100644 index 0000000..a7cdbe1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/WaterAlarmController.java @@ -0,0 +1,88 @@ +package com.gunshi.project.ss.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.entity.so.WaterAlarmPageSo; +import com.gunshi.project.ss.entity.vo.WaterAlarmCount; +import com.gunshi.project.ss.entity.vo.WaterAlarmTypeCount; +import com.gunshi.project.ss.model.WaterAlarm; +import com.gunshi.project.ss.service.WaterAlarmService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "水情告警") +@RestController +@RequestMapping(value="/waterAlarm") +public class WaterAlarmController { + + @Autowired + private WaterAlarmService service; + + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody WaterAlarm dto) { + boolean result = service.saveData(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody WaterAlarm dto) { + boolean result = service.updateById(dto); + return R.ok(result ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + boolean b = service.removeById(id); + return R.ok(b); + } + + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody WaterAlarmPageSo pageSo) { + return R.ok(service.queryPage(pageSo)); + } + + @Operation(summary = "列表") + @GetMapping("/list") + public List list() { + List list = service.lambdaQuery().list(); + return list; + } + + @Operation(summary = "根据年份进行统计柱形图") + @GetMapping("/count12") + public R> count12(@RequestParam(value = "year") Integer year){ + List counts = service.count12(year); + return R.ok(counts); + } + + @Operation(summary = "根据年份进行统计圆饼图") + @GetMapping("/countTypeByYear") + public R> countTypeByYear(@RequestParam(value = "year") Integer year){ + List res = service.countTypeByYear(year); + return R.ok(res); + } + + @Operation(summary = "获取河道和水库站点") + @GetMapping("/listStation") + public R> listStation(){ + return R.ok(service.listStation()); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/WaterCountAnalysisController.java b/src/main/java/com/gunshi/project/ss/controller/WaterCountAnalysisController.java new file mode 100644 index 0000000..3c3c4e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/WaterCountAnalysisController.java @@ -0,0 +1,49 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.result.R; +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.project.ss.entity.vo.WaterAnalysisVo; +import com.gunshi.project.ss.entity.vo.WaterCapacityAnalysisVo; +import com.gunshi.project.ss.model.WaterDispatch; +import com.gunshi.project.ss.service.WaterCountAnalysisService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; + +@Tag(name = "水资源调度-统计分析") +@RestController +@RequestMapping(value="/wca") +public class WaterCountAnalysisController { + + + @Autowired + private WaterCountAnalysisService waterCountAnalysisService; + + + @Operation(summary = "供水分析") + @GetMapping("/waterSupplyAnalysis") + public R> waterSupplyAnalysis(@RequestParam("id") Serializable id) { + + List res = waterCountAnalysisService.waterSupplyAnalysis(id); + return R.ok(res); + } + + + @Operation(summary = "调度执行分析") + @GetMapping("/waterDispatchAnalysis") + public R> waterDispatchAnalysis(@RequestParam("year") Serializable year) { + List res = waterCountAnalysisService.waterDispatchAnalysis(year); + return R.ok(res); + } + + @Operation(summary = "水库蓄水量分析") + @PostMapping("/waterCapacityAnalysis") + public R> waterCapacityAnalysis(@RequestBody DateRangeSo dateRangeSo) { + List res = waterCountAnalysisService.waterCapacityAnalysis(dateRangeSo); + return R.ok(res); + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/WaterDispatchController.java b/src/main/java/com/gunshi/project/ss/controller/WaterDispatchController.java new file mode 100644 index 0000000..59026ec --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/WaterDispatchController.java @@ -0,0 +1,122 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.WaterDispatchPageSo; +import com.gunshi.project.ss.entity.vo.WdCountVo; +import com.gunshi.project.ss.model.WaterDispatch; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.WaterDispatchService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.Objects; + +@Tag(name = "水量调度") +@RestController +@RequestMapping(value="/waterDis") +public class WaterDispatchController extends AbstractCommonFileController { + + @Autowired + private WaterDispatchService waterDispatchService; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody WaterDispatch dto) { + dto.setId(IdWorker.getId()); + boolean flag = waterDispatchService.saveData(dto); + if(flag){ + fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); + } + return R.ok(dto); + } + + @Operation(summary = "下发") + @GetMapping("/distribute/{id}") + public R distribute(@PathVariable("id") String id) { + WaterDispatch byId = waterDispatchService.getById(id); + if(byId == null){ + throw new IllegalArgumentException("抱歉,该调度不存在,无法下发"); + } + byId.setExeStatus(2); + boolean flag = waterDispatchService.updateById(byId); + return R.ok(flag); + } + + @Operation(summary = "反馈") + @PostMapping("/feedback") + public R feedback(@RequestBody WaterDispatch dto, HttpServletRequest request) { + boolean flag = waterDispatchService.feedBack(dto); + if(flag){ + fileService.saveFile(dto.getResFiles(),getResGroupId(),dto.getId().toString()); + } + return R.ok(dto); + } + + @Operation(summary = "更新") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody WaterDispatch dto) { + boolean flag = waterDispatchService.update(dto); + if(flag){ + fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); + } + return R.ok(dto); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + WaterDispatch byId = waterDispatchService.getById(id); + if(Objects.isNull(byId)){ + throw new IllegalArgumentException("该计划不存在"); + } + boolean flag = waterDispatchService.removeById(id); + if(flag){ + fileService.deleteFile(getGroupId(),byId.getId().toString()); + fileService.deleteFile(getResGroupId(),byId.getId().toString()); + } + return R.ok(true); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody WaterDispatchPageSo pageSo) { + Page res = waterDispatchService.pageQuery(pageSo); + if(!CollectionUtils.isEmpty(res.getRecords())){ + res.getRecords().stream().forEach(o ->{ + o.setFiles(fileService.getFiles(getGroupId(),o.getId().toString())); + o.setResFiles(fileService.getFiles2(getResGroupId(),o.getId().toString())); + }); + } + return R.ok(res); + } + + @Operation(summary = "统计当年完成调度次数") + @GetMapping("/count") + public R getCount(){ + WdCountVo vo = waterDispatchService.getCount(); + return R.ok(vo); + } + + @Override + public String getGroupId() { + return "waterDispatch"; + } + + public String getResGroupId(){ + return "waterDispatchRes"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/controller/WeatherController.java b/src/main/java/com/gunshi/project/ss/controller/WeatherController.java new file mode 100644 index 0000000..a7a5c87 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/WeatherController.java @@ -0,0 +1,45 @@ +package com.gunshi.project.ss.controller; + +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.ShortWeatherSo; +import com.gunshi.project.ss.entity.so.WeatherSo; +import com.gunshi.project.ss.entity.vo.ForeRainVo; +import com.gunshi.project.ss.service.ForecastService; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +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; + +/** + * Description: + * Created by wanyan on 2024/3/11 + * + * @author wanyan + * @version 1.0 + */ +@RestController +@RequestMapping("/weather") +@Tag(name = "天气预报") +public class WeatherController { + + + @Resource + private ForecastService forecastService; + + + @Post(path = "/fore", summary = "24小时") + public R> fore(@RequestBody WeatherSo weatherSo) { + return R.ok(forecastService.fore(weatherSo)); + } + + + @Post(path = "/short/fore", summary = "短临预报") + public R> shortFore(@RequestBody ShortWeatherSo weatherSo) { + return R.ok(forecastService.shortFore(weatherSo)); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/XlPlanController.java b/src/main/java/com/gunshi/project/ss/controller/XlPlanController.java new file mode 100644 index 0000000..e13b490 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/XlPlanController.java @@ -0,0 +1,100 @@ +package com.gunshi.project.ss.controller; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.so.XlPlanPageSo; +import com.gunshi.project.ss.model.XlPlan; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.XlPlanService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +@RestController +@RequestMapping("/xlPlan") +@Tag(name = "兴利计划") +public class XlPlanController extends AbstractCommonFileController { + + @Autowired + private XlPlanService xlPlanService; + + @Autowired + private FileAssociationsService fileService; + + @Operation(summary = "新增") + @PostMapping("/insert") + public R insert(@Validated(Insert.class) @RequestBody XlPlan dto) { + dto.setId(IdWorker.getId()); + boolean flag = xlPlanService.saveData(dto); + if(flag){ + fileService.saveFile(dto.getFiles(),getGroupId(),dto.getId().toString()); + } + return R.ok(dto); + } + + @Operation(summary = "修改") + @PostMapping("/update") + public R update(@Validated(Update.class) @RequestBody XlPlan dto) { + + boolean flag = xlPlanService.update(dto); + + if (flag) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return R.ok(flag ? dto : null); + } + + @Operation(summary = "删除") + @GetMapping("/del/{id}") + public R del(@Schema(name = "id") @PathVariable("id") Serializable id) { + XlPlan byId = xlPlanService.getById(id); + if(Objects.isNull(byId)){ + throw new IllegalArgumentException("该计划不存在"); + } + boolean flag = xlPlanService.removeById(id); + if(flag){ + fileService.deleteFile(getGroupId(),byId.getId().toString()); + } + return R.ok(true); + } + + @Operation(summary = "分页") + @PostMapping("/page") + public R> page(@RequestBody XlPlanPageSo pageSo) { + Page res = xlPlanService.pageQuery(pageSo); + if(!CollectionUtils.isEmpty(res.getRecords())){ + res.getRecords().forEach(o -> o.setFiles( + fileService.getFiles(getGroupId(),o.getId().toString()) + )); + } + return R.ok(res); + } + + + @Operation(summary = "列表") + @GetMapping("/list") + public R> list() { + List list = xlPlanService.lambdaQuery().list(); + if(!CollectionUtils.isEmpty(list)){ + list.forEach(o -> o.setFiles(fileService.getFiles(getGroupId(),o.getId().toString()))); + } + return R.ok(list); + } + + + @Override + public String getGroupId() { + return "xlPlan"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/entity/MyConstant.java b/src/main/java/com/gunshi/project/ss/entity/MyConstant.java new file mode 100644 index 0000000..c3e2862 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/MyConstant.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity; + +/** + * @author xusan + * @date 2023/4/27 9:41 + */ +public class MyConstant { + + public static final String + + // 删除 + DEL = "0", + + // 未删除 + REC = "1"; + + /** + * 数据-数据服务运维员 角色编码 + */ + public static final String ROLE_PUSH = "data_zh_om"; + public static final String REDIS_KEY = "hsz:"; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/RiceSupportMidCaculate.java b/src/main/java/com/gunshi/project/ss/entity/RiceSupportMidCaculate.java new file mode 100644 index 0000000..3dc4dad --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/RiceSupportMidCaculate.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.entity; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 供需平衡分析参数计算中间值实体类 + */ +@Data +public class RiceSupportMidCaculate { + + private String name;//灌溉生长周期 + + private LocalDateTime startTime;// 开始时间 + private LocalDateTime endTime;//结束时间 + + private BigDecimal irrigationUse;//灌溉用水万m³ + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/SkSyncData.java b/src/main/java/com/gunshi/project/ss/entity/SkSyncData.java new file mode 100644 index 0000000..2d54037 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/SkSyncData.java @@ -0,0 +1,18 @@ +package com.gunshi.project.ss.entity; + + +import com.gunshi.project.ss.model.StPptnRD; +import lombok.Data; + +import java.util.List; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/2/23 + */ + +@Data +public class SkSyncData { + List stPptnRD; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/SkSyncResp.java b/src/main/java/com/gunshi/project/ss/entity/SkSyncResp.java new file mode 100644 index 0000000..d4faf3b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/SkSyncResp.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.entity; + +import lombok.Data; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/2/26 + */ +@Data +public class SkSyncResp { + SkSyncData data; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/SyncDataReq.java b/src/main/java/com/gunshi/project/ss/entity/SyncDataReq.java new file mode 100644 index 0000000..53263fc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/SyncDataReq.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity; + +import lombok.Data; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/2/20 + */ + +@Data +public class SyncDataReq { + /** + * 抽取的行政区划编码 6位 + */ + private String adcd; + /** + * 抽取的开始时间 格式 yyyy-MM-dd + */ + private String startDate; + /** + * 抽取的结束时间 格式 yyyy-MM-dd + */ + private String endDate; + /** + * 抽取的类型 QX SW SK SH + */ + private String type; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/ArtificialJcskGnssDeleteDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/ArtificialJcskGnssDeleteDto.java new file mode 100644 index 0000000..fa7941c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/ArtificialJcskGnssDeleteDto.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.entity.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +public class ArtificialJcskGnssDeleteDto { + + + private String cd; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date tm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/ArtificialJcskSyDeleteDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/ArtificialJcskSyDeleteDto.java new file mode 100644 index 0000000..e195277 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/ArtificialJcskSyDeleteDto.java @@ -0,0 +1,18 @@ +package com.gunshi.project.ss.entity.dto; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +public class ArtificialJcskSyDeleteDto { + + private String stcd; + + private String mpcd; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date mstm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/BusinessRuleDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/BusinessRuleDto.java new file mode 100644 index 0000000..cdcb424 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/BusinessRuleDto.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.entity.dto; + + +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class BusinessRuleDto extends GenericPageParams { + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date stm; + + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date etm; + + + @Schema(description = "规则名称") + private String name; + + @Schema(description = "规则类型 1 水资源调度,2 防洪调度,3 工程安全,4 应急抢险,5 其他") + private Integer type; + + @Schema(description = "状态") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/DispatchSchemeDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/DispatchSchemeDto.java new file mode 100644 index 0000000..f1a354b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/DispatchSchemeDto.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.entity.dto; + +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.dto.PageSo; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class DispatchSchemeDto extends GenericPageParams { + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date stm; + + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date etm; + + + @Schema(description = "方案名称") + private String name; + + @Schema(description = "调度类型 1 防洪调度,2 兴利调度,3 生态调度,4 应急调度,5 其他") + private Integer type; + + @Schema(description = "状态") + private Integer status; + + PageSo pageSo = new PageSo(); + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/ExportCommonDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/ExportCommonDto.java new file mode 100644 index 0000000..5865144 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/ExportCommonDto.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.entity.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class ExportCommonDto { + + private List ids; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/InspectItemDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/InspectItemDto.java new file mode 100644 index 0000000..5f6db32 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/InspectItemDto.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 用户启停参数 + * Created by wanyan on 2024/1/22 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class InspectItemDto { + + @Schema(description = "id") + private Long id; + + @Schema(description = "状态(0启用 1停用)") + private Integer status; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSafeCalculateDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSafeCalculateDto.java new file mode 100644 index 0000000..41cf08e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSafeCalculateDto.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.entity.dto; + +import com.gunshi.db.dto.DateTimeRangeSo; +import lombok.Data; + +@Data +public class ProjectSafeCalculateDto { + + + private DateTimeRangeSo dateTimeRangeSo;//时间范围 + + private String dvcd;//测点编号 +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSafetyDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSafetyDto.java new file mode 100644 index 0000000..7ea84fb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSafetyDto.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.entity.dto; + + +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class ProjectSafetyDto extends GenericPageParams { + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date stm; + + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = DateFormatString.YYYY_MM_DD) + private Date etm; + + + @Schema(description = "标题") + private String name; + + @Schema(description = "知识库类型 ") + private String type; + + @Schema(description = "状态") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSaveReportDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSaveReportDto.java new file mode 100644 index 0000000..0a4254a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/ProjectSaveReportDto.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.entity.dto; + + +import com.gunshi.project.ss.model.ForecastTask; +import lombok.Data; + +@Data +public class ProjectSaveReportDto { + + private ForecastTask forecastTask; + + private String dvcd; + + private Integer order; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/RiceSupportBalanceCaculateDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/RiceSupportBalanceCaculateDto.java new file mode 100644 index 0000000..2915857 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/RiceSupportBalanceCaculateDto.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.entity.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class RiceSupportBalanceCaculateDto { + + + + + private String planName;//方案名称 + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime;//开始时间 + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime;//结束时间 + + private Long icId;//来水方案Id + + private Long rqId;//需水方案Id + + private BigDecimal ecoQ;//生态最小径流(单位m³/s) + + private String createName;//创建人 + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/RiceWaterCaculateDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/RiceWaterCaculateDto.java new file mode 100644 index 0000000..2117314 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/RiceWaterCaculateDto.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.entity.dto; + +import com.gunshi.project.ss.model.RiceGrowConfig; +import com.gunshi.project.ss.model.RiceWaterKi; +import lombok.Data; + +import java.util.List; + +@Data +public class RiceWaterCaculateDto { + + private List riceWaterKis;//灌水定额配置 + + private RiceGrowConfig riceGrowConfig;//水稻生长参数配置表 +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/RotaDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/RotaDto.java new file mode 100644 index 0000000..6510dc8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/RotaDto.java @@ -0,0 +1,38 @@ +package com.gunshi.project.ss.entity.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 值班表人员参数 + * Created by wanyan on 2024/3/25 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class RotaDto { + + /** + * 日期 + */ + @Schema(description="日期",example = "2024-03-25") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + @NotNull(message = "日期不能为空") + private Date rotaDate; + + /** + * 是否节假日(0否 1是) + */ + @Schema(description="是否节假日(0否 1是)") + private Integer isHoliday; + + @Schema(description = "值班人员") + private List userDtoList; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/RotaUserDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/RotaUserDto.java new file mode 100644 index 0000000..0af56a7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/RotaUserDto.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 值班表参数 + * Created by wanyan on 2024/3/25 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class RotaUserDto { + + /** + * 类型(1带班领导 2值班人员) + */ + @Schema(description="类型(1带班领导 2值班人员)") + private Integer rotaType; + + /** + * 用户id + */ + @Schema(description="用户id") + private Long userId; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/SqlRequest.java b/src/main/java/com/gunshi/project/ss/entity/dto/SqlRequest.java new file mode 100644 index 0000000..973fa80 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/SqlRequest.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.entity.dto; + + +import lombok.Data; + +@Data +public class SqlRequest { + private String sql; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/StGateRDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/StGateRDto.java new file mode 100644 index 0000000..aecb8b3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/StGateRDto.java @@ -0,0 +1,19 @@ +package com.gunshi.project.ss.entity.dto; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class StGateRDto { + + private String stcd; + + private BigDecimal gtop; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime tm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/StZqrlBDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/StZqrlBDto.java new file mode 100644 index 0000000..e91c139 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/StZqrlBDto.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.dto; + +import com.gunshi.db.dto.DateTimeRangeSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 用户启停参数 + * Created by wanyan on 2024/1/22 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class StZqrlBDto { + + private String stcd; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateSo; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/SyRegressionDataDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/SyRegressionDataDto.java new file mode 100644 index 0000000..421bebd --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/SyRegressionDataDto.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.entity.dto; + +import com.gunshi.project.ss.model.SyRegressionData; +import lombok.Data; + +import java.util.List; + +@Data +public class SyRegressionDataDto { + + + List list; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/dto/icWaterForecastCaculateDto.java b/src/main/java/com/gunshi/project/ss/entity/dto/icWaterForecastCaculateDto.java new file mode 100644 index 0000000..1edde3d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/dto/icWaterForecastCaculateDto.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.dto; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class icWaterForecastCaculateDto { + + //预测开始时间(用于长期预测) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; + + //预测结束时间(用于长期预测) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; + + //典型年降雨量(用于长期预测) + private Integer year; + + //预测小时(用于短期预测) + private Integer hours; + + private Integer type; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/enums/AlarmTypeEnum.java b/src/main/java/com/gunshi/project/ss/entity/enums/AlarmTypeEnum.java new file mode 100644 index 0000000..ee47a99 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/enums/AlarmTypeEnum.java @@ -0,0 +1,137 @@ +package com.gunshi.project.ss.entity.enums; + +import lombok.Getter; + +/** + * 防汛预警类型枚举 + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@Getter +public enum AlarmTypeEnum { + + /** + * 水库超汛限 + */ + RESERVOIR_OVER_FLOOD_LIMIT("RESERVOIR_OVER_FLOOD_LIMIT", "水库超汛限", "水库水位超过汛限水位", 1, "水库"), + + /** + * 水库超设计 + */ + RESERVOIR_OVER_DESIGN("RESERVOIR_OVER_DESIGN", "水库超设计", "水库水位超过设计洪水位", 2, "水库"), + + /** + * 水库超校核 + */ + RESERVOIR_OVER_CHECK("RESERVOIR_OVER_CHECK", "水库超校核", "水库水位超过校核洪水位", 3, "水库"), + + /** + * 河道超警戒 + */ + RIVER_OVER_WARNING("RIVER_OVER_WARNING", "河道超警戒", "河道水位超过警戒水位", 4, "河道"), + + /** + * 河道超保证 + */ + RIVER_OVER_GUARANTEE("RIVER_OVER_GUARANTEE", "河道超保证", "河道水位超过保证水位", 5, "河道"); + + /** + * 枚举编码 + */ + private final String code; + + /** + * 枚举名称 + */ + private final String name; + + /** + * 描述信息 + */ + private final String description; + + /** + * 预警等级 + */ + private final Integer level; + + /** + * 预警类型(水库/河道) + */ + private final String category; + + AlarmTypeEnum(String code, String name, String description, Integer level, String category) { + this.code = code; + this.name = name; + this.description = description; + this.level = level; + this.category = category; + } + + /** + * 根据编码获取枚举 + */ + public static AlarmTypeEnum getByCode(String code) { + for (AlarmTypeEnum value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + /** + * 根据名称获取枚举 + */ + public static AlarmTypeEnum getByName(String name) { + for (AlarmTypeEnum value : values()) { + if (value.getName().equals(name)) { + return value; + } + } + return null; + } + + /** + * 判断是否为水库相关预警 + */ + public boolean isReservoirWarning() { + return "水库".equals(this.category); + } + + /** + * 判断是否为河道相关预警 + */ + public boolean isRiverWarning() { + return "河道".equals(this.category); + } + + /** + * 获取所有水库预警类型 + */ + public static AlarmTypeEnum[] getReservoirWarnings() { + return new AlarmTypeEnum[]{ + RESERVOIR_OVER_FLOOD_LIMIT, + RESERVOIR_OVER_DESIGN, + RESERVOIR_OVER_CHECK + }; + } + + /** + * 获取所有河道预警类型 + */ + public static AlarmTypeEnum[] getRiverWarnings() { + return new AlarmTypeEnum[]{ + RIVER_OVER_WARNING, + RIVER_OVER_GUARANTEE + }; + } + + + @Override + public String toString() { + return this.name + "(" + this.code + ") - " + this.description; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/enums/IndicatorTypeEnum.java b/src/main/java/com/gunshi/project/ss/entity/enums/IndicatorTypeEnum.java new file mode 100644 index 0000000..213ef89 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/enums/IndicatorTypeEnum.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.entity.enums; + +import lombok.Getter; + +@Getter +public enum IndicatorTypeEnum { + + REAL_WATER_LEVEL("REAL_WATER_LEVEL", "实时水位"), + PEAK_FLOW("PEAK_FLOW", "预报洪峰流量"), + RAINFALL("RAINFALL", "降雨量"), + WATER_STORAGE("WATER_STORAGE", "蓄水量"), + FORECAST_RAINFALL("FORECAST_RAINFALL", "预报降雨量"); + + private final String code; + private final String description; + + IndicatorTypeEnum(String code, String description) { + this.code = code; + this.description = description; + } + + public static IndicatorTypeEnum getByCode(String code) { + for (IndicatorTypeEnum type : values()) { + if (type.getCode().equals(code)) { + return type; + } + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/enums/OperatorEnum.java b/src/main/java/com/gunshi/project/ss/entity/enums/OperatorEnum.java new file mode 100644 index 0000000..07a35ed --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/enums/OperatorEnum.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.enums; + +import lombok.Getter; + +@Getter +public enum OperatorEnum { + + GREATER_THAN(">", "大于"), + GREATER_EQUAL(">=", "大于等于"), + LESS_THAN("<", "小于"), + LESS_EQUAL("<=", "小于等于"); + + private final String symbol; + private final String description; + + OperatorEnum(String symbol, String description) { + this.symbol = symbol; + this.description = description; + } + + public static OperatorEnum getBySymbol(String symbol) { + for (OperatorEnum operator : values()) { + if (operator.getSymbol().equals(symbol)) { + return operator; + } + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/enums/RelationTypeEnum.java b/src/main/java/com/gunshi/project/ss/entity/enums/RelationTypeEnum.java new file mode 100644 index 0000000..420b7d6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/enums/RelationTypeEnum.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.entity.enums; + +import lombok.Getter; + +@Getter +public enum RelationTypeEnum { + + AND("AND", "且"), + OR("OR", "或"); + + private final String code; + private final String description; + + RelationTypeEnum(String code, String description) { + this.code = code; + this.description = description; + } + + public static RelationTypeEnum getByCode(String code) { + for (RelationTypeEnum type : values()) { + if (type.getCode().equals(code)) { + return type; + } + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/enums/SysFileType.java b/src/main/java/com/gunshi/project/ss/entity/enums/SysFileType.java new file mode 100644 index 0000000..4ca087d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/enums/SysFileType.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.entity.enums; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * @author xusan + * @date 2022/7/14 16:55 + * 系统业务文件类型 对应 file_associations.type + */ +public enum SysFileType { + + SFT000("0", "水库基本信息-工程基础信息-工程特性表"), + SFT001("1", "水库基本信息-设计图纸和资料"), + SFT099("99", ""); + + + private String name; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + private SysFileType(String name, String value) { + this.name = name; + this.value = value; + } + + public static Map map() { + Map map = new HashMap<>(); + SysFileType[] values = SysFileType.values(); + for (SysFileType e : values) { + map.put(e.getValue(), e); + } + return map; + } + + public static Map mapName() { + Map map = new HashMap<>(); + SysFileType[] values = SysFileType.values(); + for (SysFileType e : values) { + map.put(e.getName(), e); + } + return map; + } + + public static SysFileType getByValue(String value) { + if (Objects.isNull(value)) return null; + return map().get(value); + } + + public static SysFileType getByName(String name) { + if (StringUtils.isEmpty(name)) return null; + return mapName().get(name); + } +} diff --git a/src/main/java/com/gunshi/project/ss/entity/enums/WarningTypeEnum.java b/src/main/java/com/gunshi/project/ss/entity/enums/WarningTypeEnum.java new file mode 100644 index 0000000..6d7b8d8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/enums/WarningTypeEnum.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.entity.enums; + +import lombok.Getter; + +@Getter +public enum WarningTypeEnum { + + FLOOD("FLOOD", "洪水预警"), + DROUGHT("DROUGHT", "干旱预警"); + + private final String code; + private final String description; + + WarningTypeEnum(String code, String description) { + this.code = code; + this.description = description; + } + + public static WarningTypeEnum getByCode(String code) { + for (WarningTypeEnum type : values()) { + if (type.getCode().equals(code)) { + return type; + } + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/so/AlarmSetPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/AlarmSetPageSo.java new file mode 100644 index 0000000..602832b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/AlarmSetPageSo.java @@ -0,0 +1,18 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class AlarmSetPageSo { + + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "测点编号") + private String stcd; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/AssessTaskPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/AssessTaskPageSo.java new file mode 100644 index 0000000..5cc0fb9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/AssessTaskPageSo.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "考核任务分页查询对象") +public class AssessTaskPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="时段") + private DateRangeSo dateRangeSo; + + @Schema(description="考核任务名称") + private String taskName; + + @Schema(description="任务状态(0未启动 1评分中 2审核中 3已审核 5已作废);整改状态(0未整改 1已整改)") + private Integer status; + + @Schema(description="当前登录人id") + private Long userId; + + @Schema(description="整改对象") + private String objectUserName; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/AttCctvBasePage.java b/src/main/java/com/gunshi/project/ss/entity/so/AttCctvBasePage.java new file mode 100644 index 0000000..ccee9d1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/AttCctvBasePage.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/17. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class AttCctvBasePage extends GeneralDataPage{ + + /** + * menu_id + */ + @Schema(description="menu_id") + private Long menuId; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/BroadcastWarnPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/BroadcastWarnPageSo.java new file mode 100644 index 0000000..026b5db --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/BroadcastWarnPageSo.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "广播告警分页查询对象") +public class BroadcastWarnPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="时段") + private DateTimeRangeSo timeRangeSo; + + @Schema(description="站点id") + private Long stationId; + + @Schema(description="告警内容") + private String warnContent; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ByLogPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ByLogPageSo.java new file mode 100644 index 0000000..5e7b169 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ByLogPageSo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.so; + + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class ByLogPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="防治日期时段") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description = "日志名称") + private String logNmae; + + @Schema(description = "防治部位") + private String preDetailName; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ByPlanPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ByPlanPageSo.java new file mode 100644 index 0000000..d0f50e1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ByPlanPageSo.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class ByPlanPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "计划名称") + private String planName; + + @Schema(description = "防治部位") + private String preDetailName; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/CommonDataPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/CommonDataPageSo.java new file mode 100644 index 0000000..b6f980f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/CommonDataPageSo.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "分页查询对象") +public class CommonDataPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="名称") + private String name; + + @Schema(description = "时间范围") + private DateRangeSo dateSo; + + @Schema(description = "类型(1大事记 2调度记录 3维修养护 4安全鉴定 5除险加固 6白蚁普查)") + private List types; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/CommonDataPageSo2.java b/src/main/java/com/gunshi/project/ss/entity/so/CommonDataPageSo2.java new file mode 100644 index 0000000..078cb82 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/CommonDataPageSo2.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "分页查询对象") +public class CommonDataPageSo2 { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="名称") + private String name; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateSo; + + @Schema(description = "类型(1大事记 2调度记录 3维修养护 4安全鉴定 5除险加固 6白蚁普查)") + private List types; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/DataQueryCommonSo.java b/src/main/java/com/gunshi/project/ss/entity/so/DataQueryCommonSo.java new file mode 100644 index 0000000..32652e3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/DataQueryCommonSo.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +/** + * + * Created by wanyan on 2024/2/2. + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "查询条件") +public class DataQueryCommonSo { + + @Schema(description="测站编码") + @NotEmpty(message = "测站编码不可为空") + private String stcd; + + @Schema(description = "开始时间") + @NotEmpty(message = "开始时间不能为空") + @Pattern(regexp = "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "时间格式应为:yyyy-MM-dd HH:mm:ss") + private String stm; + + @Schema(description = "结束时间") + @NotEmpty(message = "结束时间不能为空") + @Pattern(regexp = "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "时间格式应为:yyyy-MM-dd HH:mm:ss") + private String etm; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/DispatchRecordPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/DispatchRecordPageSo.java new file mode 100644 index 0000000..1a5b5c2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/DispatchRecordPageSo.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "分页查询对象") +public class DispatchRecordPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="操作人名称") + private String opUserName; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateTimeSo; + + @Schema(description="状态(0执行中 1完成)") + private Integer status; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ForecastDispatchPlanPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ForecastDispatchPlanPageSo.java new file mode 100644 index 0000000..8b5b3e2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ForecastDispatchPlanPageSo.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class ForecastDispatchPlanPageSo { + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + private String planName; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/GateHisPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/GateHisPageSo.java new file mode 100644 index 0000000..397660a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/GateHisPageSo.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "开关历史分页查询对象") +public class GateHisPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="时段") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description="闸阀ID") + @NotEmpty(message = "闸阀代码不可为空") + private String valveCode; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/GateValveCctvRelPage.java b/src/main/java/com/gunshi/project/ss/entity/so/GateValveCctvRelPage.java new file mode 100644 index 0000000..e6d9c21 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/GateValveCctvRelPage.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/19. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GateValveCctvRelPage extends GenericPageParams { + + /** + * 闸阀编号 + */ + @Schema(description="闸阀编号名称") + private String valveName; + + /** + * 视频点 + */ + @Schema(description="视频点名称") + private String indexName; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/GeneralDataPage.java b/src/main/java/com/gunshi/project/ss/entity/so/GeneralDataPage.java new file mode 100644 index 0000000..b1a42d9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/GeneralDataPage.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: 数据通用查询 + * Created by XuSan on 2024/7/17. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GeneralDataPage extends GenericPageParams { + + /** + * 代码 + */ + @Schema(description="代码") + private String code; + + /** + * 名称 + */ + @Schema(description="名称") + private String name; + + /** + * 类型 + */ + @Schema(description="类型") + private String type; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/HisWaterDataPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/HisWaterDataPageSo.java new file mode 100644 index 0000000..0299bb0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/HisWaterDataPageSo.java @@ -0,0 +1,17 @@ +package com.gunshi.project.ss.entity.so; + + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class HisWaterDataPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/HomeStStbprpBSo.java b/src/main/java/com/gunshi/project/ss/entity/so/HomeStStbprpBSo.java new file mode 100644 index 0000000..c50bccf --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/HomeStStbprpBSo.java @@ -0,0 +1,41 @@ +package com.gunshi.project.ss.entity.so; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; + + +/** + * TODO + * + * @ClassName StPptnSo + * @Author Huang Qianxiang + * @Date 2024/2/21 14:20 + */ +@Data +@Schema(description = "首页站点查询参数") +public class HomeStStbprpBSo { + + + /** + * 开始时间 + */ + @Schema(description = "开始时间") + @NotNull(message = "开始时间不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date stm; + + /** + * 结束时间 + */ + @Schema(description="结束时间") + @NotNull(message = "结束时间不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date etm; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ISCAIEventPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ISCAIEventPageSo.java new file mode 100644 index 0000000..8ae68cc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ISCAIEventPageSo.java @@ -0,0 +1,54 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@Schema(description = "海康AI事件分页Dto") +public class ISCAIEventPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Schema(description = "开始时间") + private LocalDateTime startTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Schema(description = "结束时间") + private LocalDateTime endTime; + + + /* + 事件等级,1-低,2-中,3-高 + */ + @Schema(description = "事件等级 1-低,2-中,3-高") + private Integer eventLevel; + + + /* + 事件处理状态,0-未处理,1-已处理 + */ + @Schema(description = "事件处理状态 0-未处理,1-已处理") + private Integer handleStatus; + + + /* + 事件类型名称 + */ + @Schema(description = "事件类型名称") + private String eventTypeName; + + /* + 事件源名称 + */ + @Schema(description = "事件源名称") + private String resName; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/IcWaterForecastPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/IcWaterForecastPageSo.java new file mode 100644 index 0000000..afa7be4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/IcWaterForecastPageSo.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class IcWaterForecastPageSo { + + private String planName; + + private Integer type; + + private DateTimeRangeSo dateTimeRangeSo; + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ImgWarnPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ImgWarnPageSo.java new file mode 100644 index 0000000..8fc600e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ImgWarnPageSo.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "AI告警分页查询对象") +public class ImgWarnPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "告警时间") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description="index_code") + private String indexCode; + + @Schema(description="告警类型(1人员闯入 2工程车辆识别 3漂浮物识别 4游泳识别)") + private Integer type; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/InspectProblemPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/InspectProblemPageSo.java new file mode 100644 index 0000000..76db09c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/InspectProblemPageSo.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "分页查询对象") +public class InspectProblemPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="巡查人id") + @NotNull(message = "巡查人id不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long inspectUserId; + + @Schema(description="是否处理(0否 1是)") + private Integer isHandle; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateTimeRangeSo; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/InspectTaskPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/InspectTaskPageSo.java new file mode 100644 index 0000000..5bf76ff --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/InspectTaskPageSo.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "分页查询对象") +public class InspectTaskPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="创建人id") + @NotNull(message = "创建人id不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long createUserId; + + @Schema(description="状态(0未完成 1进行中 2已完成)") + private Integer status; + + @Schema(description="任务类型(1日常巡查 2特别检查 3汛前巡检)") + private Integer taskType; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateTimeRangeSo; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/InspectTaskSo.java b/src/main/java/com/gunshi/project/ss/entity/so/InspectTaskSo.java new file mode 100644 index 0000000..1797ac9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/InspectTaskSo.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.db.dto.DateRangeSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "巡检任务查询对象") +public class InspectTaskSo { + + + @Schema(description="巡查人id") + @NotNull(message = "巡查人id不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long inspectUserId; + + @Schema(description = "时间范围") + private DateRangeSo dateRangeSo; + + @Schema(description = "状态") + private List statusList; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/MaintainPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/MaintainPageSo.java new file mode 100644 index 0000000..949d6e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/MaintainPageSo.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "分页查询对象") +public class MaintainPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="管护类型(1溢洪道淸障 2除草除杂 3设备养护 4环境清洁 5危险提示 6其他)") + private Integer maintainType; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateTimeSo; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/MentenceFarmerRecordPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/MentenceFarmerRecordPageSo.java new file mode 100644 index 0000000..32054e5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/MentenceFarmerRecordPageSo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class MentenceFarmerRecordPageSo { + + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "维护对象主键ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long mentenceStId; + + @Schema(description = "维护项目Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mentenceStDetailId; + + @Schema(description = "状态") + private Integer status; + + @Schema(description = "时间范围") + private DateTimeRangeSo dateTimeSo; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/MentencePlanPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/MentencePlanPageSo.java new file mode 100644 index 0000000..7075837 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/MentencePlanPageSo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + + +@Data +@Schema(description = "分页查询对象") +public class MentencePlanPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "年度") + private String year; + + + @Schema(description = "计划名称") + private String planName; + + @Schema(description = "审批状态 0 待审批 1 未通过 2 已通过 ") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/MentenceStPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/MentenceStPageSo.java new file mode 100644 index 0000000..0ba71f3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/MentenceStPageSo.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class MentenceStPageSo { + + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "维护标注名称") + private String stName; + + @Schema(description = "维护项目名称") + private String stDetailName; + + @Schema(description = "维护对象id") + @JsonSerialize(using = ToStringSerializer.class) + private Long stId; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/MentenceTemplatePageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/MentenceTemplatePageSo.java new file mode 100644 index 0000000..2acf196 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/MentenceTemplatePageSo.java @@ -0,0 +1,19 @@ +package com.gunshi.project.ss.entity.so; + + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class MentenceTemplatePageSo { + + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "模板名称") + private String name; + + @Schema(description = "模板类型") + private Integer type; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/MessageCenterPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/MessageCenterPageSo.java new file mode 100644 index 0000000..de43022 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/MessageCenterPageSo.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "消息中心分页查询对象") +public class MessageCenterPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="主题") + private String title; + + @Schema(description="发布人名字") + private String publishUserName; + + @Schema(description="接收人id") + @NotNull(message = "接收人id不可为空") + private Long receiveUserId; + + @Schema(description="是否已读(0否 1是)") + @NotNull(message = "是否已读不可为空") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/PersonnelPlanLogPage.java b/src/main/java/com/gunshi/project/ss/entity/so/PersonnelPlanLogPage.java new file mode 100644 index 0000000..db612dc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/PersonnelPlanLogPage.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class PersonnelPlanLogPage extends GenericPageParams { + + + /** + * 名字 + */ + @Schema(description="培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") + private Integer type; + + /** + * 参训人员 + */ + @Schema(description="参训人员") + private String trainees; + + /** + * 主办单位 + */ + @Schema(description="主办单位") + private String unit; + + /** + * 培训计划 + */ + @Schema(description="培训计划id") + private Long planId; + + /** + * 开始培训时间 + */ + @Schema(description="培训日期开始时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stm; + + /** + * 结束培训时间 + */ + @Schema(description="培训日期结束时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/PersonnelPlanPage.java b/src/main/java/com/gunshi/project/ss/entity/so/PersonnelPlanPage.java new file mode 100644 index 0000000..09c37a4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/PersonnelPlanPage.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class PersonnelPlanPage extends GenericPageParams { + + /** + * 联系方式 + */ + @Schema(description="填报人") + private String applicant; + + /** + * 名字 + */ + @Schema(description="培训班名称") + private String name; + + /** + * 开始培训时间 + */ + @Schema(description="开始培训时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stm; + + /** + * 结束培训时间 + */ + @Schema(description="结束培训时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/PicQuerySo.java b/src/main/java/com/gunshi/project/ss/entity/so/PicQuerySo.java new file mode 100644 index 0000000..c8f44be --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/PicQuerySo.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +/** + * + * Created by wanyan on 2024/2/2. + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "查询条件") +public class PicQuerySo { + + @Schema(description="水库编码") + private String resCode; + + @Schema(description="测站编码") + private String stcd; + + @Schema(description = "开始时间") + @NotEmpty(message = "开始时间不能为空") + @Pattern(regexp = "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "时间格式应为:yyyy-MM-dd HH:mm:ss") + private String stm; + + @Schema(description = "结束时间") + @NotEmpty(message = "结束时间不能为空") + @Pattern(regexp = "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s+(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "时间格式应为:yyyy-MM-dd HH:mm:ss") + private String etm; + + @Schema(description="分页参数") + private PageSo pageSo; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/PrePlacePageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/PrePlacePageSo.java new file mode 100644 index 0000000..e917465 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/PrePlacePageSo.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class PrePlacePageSo { + + + @Schema(description = "分页参数") + private PageSo pageSo; + + private String preName; + + private String preDetailName; + + private String preId; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RainfallAnalysisSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RainfallAnalysisSo.java new file mode 100644 index 0000000..24f577d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RainfallAnalysisSo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.util.List; + +/** + * TODO + * + * @ClassName RainfallAnalysisSo + * @Author Huang Qianxiang + * @Date 2024/3/12 16:33 + */ +@Data +public class RainfallAnalysisSo { + + @Schema(description="频率统计中时间段范围类型 1:1小时 3:3小时 6:6小时 12:12小时 24:24小时") + private Integer timeType; + + @Schema(description="来源 只能是SH SW SK QX这4种") + @Size(min = 1, message = "来源不能为空") + private List source; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RealRainBaseSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RealRainBaseSo.java new file mode 100644 index 0000000..d7462c7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RealRainBaseSo.java @@ -0,0 +1,43 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.util.List; + + +@Data +public class RealRainBaseSo { + @Schema(description="开始时间 格式:yyyy-MM-dd HH:mm:ss") + @NotBlank(message = "开始时间不能为空") + private String stm; + + @Schema(description="结束时间 格式:yyyy-MM-dd HH:mm:ss") + @NotBlank(message = "结束时间不能为空") + private String etm; + + @Schema(description="行政区划15位") + private String adcd; + + @Schema(description="流域编码") + private String basCode; + + @Schema(description="来源 只能是SH SW SK QX这4种") + @Size(min = 1, message = "来源不能为空") + private List source; + + @Schema(description="查询类型 1:量级统计 2:频率统计 3:流域降雨 4:区域降雨") + private Integer queryType; + + @Schema(description="频率统计中时间段范围类型 1:1小时 3:3小时 6:6小时 12:12小时 24:24小时") + private Integer timeType; + + @Schema(description = "站点模糊查询参数") + private String stArg; + + @Schema(description="APP中雨情排序 1:按昨日降雨降序 2:按时段雨量降序") + private Integer orderType = 2; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ResCodeSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ResCodeSo.java new file mode 100644 index 0000000..99cdced --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ResCodeSo.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * Description: + * Created by XuSan on 2024/7/15. + * + * @author XuSan + * @version 1.0 + */ +@Data +@Schema(description = "水库代码查询对象") +public class ResCodeSo { + + + /** + * 水库代码 + */ + @Schema(description="水库代码") + @NotBlank(message = "水库代码不能为空") + private String resCode; + + /** + * 水库代码 + */ + @Schema(description="类型(1防汛预案 2调度规程)") + private String type; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ResMonthEcoFlowListSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ResMonthEcoFlowListSo.java new file mode 100644 index 0000000..c885133 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ResMonthEcoFlowListSo.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by XuSan on 2024/7/15. + * + * @author XuSan + * @version 1.0 + */ +@Data +@Schema(description = "水库月核定生态流量列表查询对象") +public class ResMonthEcoFlowListSo { + + @NotNull(message = "年度不能为空") + @Schema(description = "年度") + private Integer year; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ResPersonPage.java b/src/main/java/com/gunshi/project/ss/entity/so/ResPersonPage.java new file mode 100644 index 0000000..d845af5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ResPersonPage.java @@ -0,0 +1,38 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/17. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class ResPersonPage extends GenericPageParams { + + + /** + * 联系方式 + */ + @Schema(description="联系方式") + private String contactInfo; + + /** + * 名字 + */ + @Schema(description="名字") + private String name; + + /** + * 类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术 + */ + @Schema(description="类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术") + private Integer type; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RescueGoodsPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RescueGoodsPageSo.java new file mode 100644 index 0000000..0b4d2f5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RescueGoodsPageSo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "抢险物资分页查询对象") +public class RescueGoodsPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="物资名称") + private String goodsName; + + @Schema(description = "排序字段") + private String sortField; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RescueTeamPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RescueTeamPageSo.java new file mode 100644 index 0000000..47269fb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RescueTeamPageSo.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "抢险队伍分页查询对象") +public class RescueTeamPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="队伍名称") + private String teamName; + + @Schema(description = "时间范围") + private DateRangeSo dateSo; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ReservoirWaterCommonSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ReservoirWaterCommonSo.java new file mode 100644 index 0000000..db567cb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ReservoirWaterCommonSo.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +/** + * + * Created by wanyan on 2024/2/2. + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "水库代码查询条件") +public class ReservoirWaterCommonSo { + + @Schema(description="水库代码") + @NotEmpty(message = "水库代码不可为空") + private String resCode; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RiceRqWaterPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RiceRqWaterPageSo.java new file mode 100644 index 0000000..3cf8fa2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RiceRqWaterPageSo.java @@ -0,0 +1,19 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import lombok.Data; + + +@Data +public class RiceRqWaterPageSo { + + + private PageSo pageSo; + + //方案名称 + private String planName; + + + //相似年 + private Integer year; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculateIcPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculateIcPageSo.java new file mode 100644 index 0000000..ebdc9c2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculateIcPageSo.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.dto.PageSo; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class RiceSupportBalanceCaculateIcPageSo { + + + private PageSo pageSo; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; // 开始时间 + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; // 结束时间 + + private String icplanName; // 计划名称 + + private Integer type; // 类型 0 长期 1短期 +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculatePageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculatePageSo.java new file mode 100644 index 0000000..8a1ad72 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculatePageSo.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.dto.PageSo; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class RiceSupportBalanceCaculatePageSo { + + + private PageSo pageSo; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; // 开始时间 + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; // 结束时间 + + private String planName; // 计划名称 + + private Integer type; // 类型 0 长期 1短期 +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculateRcPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculateRcPageSo.java new file mode 100644 index 0000000..7e365e0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RiceSupportBalanceCaculateRcPageSo.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.dto.PageSo; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class RiceSupportBalanceCaculateRcPageSo { + + + private PageSo pageSo; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; // 开始时间 + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; // 结束时间 + + private String rcplanName; // 计划名称 + + private Integer type; // 类型 0 长期 1短期 +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/RotaLogPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/RotaLogPageSo.java new file mode 100644 index 0000000..40b173e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/RotaLogPageSo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "值班日志分页查询对象") +public class RotaLogPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "时间范围") + private DateRangeSo dateSo; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/ShortWeatherSo.java b/src/main/java/com/gunshi/project/ss/entity/so/ShortWeatherSo.java new file mode 100644 index 0000000..5419d60 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/ShortWeatherSo.java @@ -0,0 +1,18 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + + +@Data +public class ShortWeatherSo { + + + @Schema(description = "时间点(格式YYYYMMDDHHmm,mm只能取00和30)", example = "202402251100") + @NotEmpty(message = "时间点不能为空") + @Pattern(regexp = "^20[0-9]{6}[0-2][0-9]00|20[0-9]{6}[0-2][0-9]30", message = "时间格式应为:YYYYMMDDHHmm其中mm只能取00和30") + private String tm; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/SoilMoisturePageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/SoilMoisturePageSo.java new file mode 100644 index 0000000..691fceb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/SoilMoisturePageSo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * + */ +@Data +@Schema(description = "考核任务分页查询对象") +public class SoilMoisturePageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="时段") + private DateRangeSo dateRangeSo; + + + @Schema(description="stcd") + private String stcd; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/StPptnSo.java b/src/main/java/com/gunshi/project/ss/entity/so/StPptnSo.java new file mode 100644 index 0000000..42222b6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/StPptnSo.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.entity.so; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + + +/** + * TODO + * + * @ClassName StPptnSo + * @Author Huang Qianxiang + * @Date 2024/2/21 14:20 + */ +@Data +@Schema(description = "雨量站降雨量查询参数") +public class StPptnSo { + + + /** + * 测站名称 + */ + @Schema(description = "测站名称") + private String stnm; + + /** + * 时间段 + */ + @Schema(description = "时间段") + private Integer timeQuantum; + + /** + * 测站编码 + */ + @Schema(description="测站编码") + private String stcd; + + /** + * 选择的起始时间 + */ + @Schema(description = "选择的起始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date startTime; + + /** + * 选择的结束时间 + */ + @Schema(description = "选择的结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date endTime; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/StStbprpBPage.java b/src/main/java/com/gunshi/project/ss/entity/so/StStbprpBPage.java new file mode 100644 index 0000000..af2ebfd --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/StStbprpBPage.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/17. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class StStbprpBPage extends GeneralDataPage{ + /** + * 归属协议 + */ + @Schema(description="归属协议") + private String agreement; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/StStbprpBSo.java b/src/main/java/com/gunshi/project/ss/entity/so/StStbprpBSo.java new file mode 100644 index 0000000..4a180e1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/StStbprpBSo.java @@ -0,0 +1,56 @@ +package com.gunshi.project.ss.entity.so; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + + +/** + * TODO + * + * @ClassName StPptnSo + * @Author Huang Qianxiang + * @Date 2024/2/21 14:20 + */ +@Data +@Schema(description = "站点查询参数") +public class StStbprpBSo { + + + /** + * 测站名称 + */ + @Schema(description = "测站名称") + private String stnm; + + /** + * 测站编码 + */ + @Schema(description="测站编码") + private String stcd; + + /** + * 河流名称 + */ + @Schema(description="河流名称") + private String rvnm; + + /** + * 水系名称 + */ + @Schema(description="水系名称") + private String hnnm; + + /** + * 流域名称 + */ + @Schema(description="流域名称") + private String bsnm; + + + /** + * 站类,PP=雨量站,RR=水库水位站,ZQ=河道水位站,TX=图像站 + */ + @Schema(description="站类,PP=雨量站,RR=水库水位站,ZQ=河道水位站,TX=图像站") + private String sttp; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/StatisticsQuerySo.java b/src/main/java/com/gunshi/project/ss/entity/so/StatisticsQuerySo.java new file mode 100644 index 0000000..413a100 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/StatisticsQuerySo.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "报表统计查询对象") +public class StatisticsQuerySo { + + @Schema(description="年份") + private Integer year; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/SyDataCheckRulePageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/SyDataCheckRulePageSo.java new file mode 100644 index 0000000..0692c7d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/SyDataCheckRulePageSo.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.entity.so; + + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class SyDataCheckRulePageSo { + + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + private String dvcd; + + private String dm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/SzCasePage.java b/src/main/java/com/gunshi/project/ss/entity/so/SzCasePage.java new file mode 100644 index 0000000..bf340ac --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/SzCasePage.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SzCasePage extends GenericPageParams { + + @Schema(description="案件类型 0:违建,1:毁林垦荒,2:筑坝拦汊,3:填占库容,4:违法取水,5:其他") + private Integer caseType; + + @Schema(description="案件名称") + private String caseName; + + @Schema(description="案件编号") + private String caseId; + + @Schema(description="开始时间 格式:yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date stm; + + @Schema(description="结束时间 格式:yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date etm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/SzRegulatoryFrameworkPage.java b/src/main/java/com/gunshi/project/ss/entity/so/SzRegulatoryFrameworkPage.java new file mode 100644 index 0000000..49be156 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/SzRegulatoryFrameworkPage.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SzRegulatoryFrameworkPage extends GenericPageParams { + + @Schema(description="制度类型 0:党支部工作制度,1:行政工作制度,2:部门工作制度,3:安全管理制度,4:工程管理制度,5:技术规程,6:岗位责任制") + private Integer type; + + @Schema(description="标题") + private String name; + + @Schema(description="发布单位") + private String fillUnit; + + @Schema(description="开始时间 格式:yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date stm; + + @Schema(description="结束时间 格式:yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date etm; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/SzRuleByLawPage.java b/src/main/java/com/gunshi/project/ss/entity/so/SzRuleByLawPage.java new file mode 100644 index 0000000..3f5a3d9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/SzRuleByLawPage.java @@ -0,0 +1,84 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SzRuleByLawPage extends GenericPageParams { + + @Schema(description="法律性质 0:宪法,1:法律,2:行政法规,3:督察法规,4:司法解释,5:地方性法规") + private Integer type; + + @Schema(description="标题") + private String name; + + @Schema(description="制定机关") + private String fillUnit; + + + /** + * 公布日期开始时间 + */ + @Schema(description="公布日期开始时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stmAd; + + /** + * 公布日期结束时间 + */ + @Schema(description="公布日期结束时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etmAd; + + + /** + * 施行日期开始时间 + */ + @Schema(description="施行日期开始时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stmIm; + + /** + * 施行日期结束时间 + */ + @Schema(description="施行日期结束时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etmIm; + + + /** + * 上传时间开始时间 + */ + @Schema(description="上传时间开始时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stmUd; + + /** + * 施行日期结束时间 + */ + @Schema(description="施行日期结束时间 格式:yyyy-MM-dd") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etmUd; + + + /** + * 时效性 + */ + @Schema(description="时效性 0:尚未生效,1:有效,2:已修改,3:已废止") + private Integer timeliness; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/TermiteSurveyPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/TermiteSurveyPageSo.java new file mode 100644 index 0000000..963ae02 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/TermiteSurveyPageSo.java @@ -0,0 +1,45 @@ +package com.gunshi.project.ss.entity.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.sql.Date; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "白蚁普查分页查询对象") +public class TermiteSurveyPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="年份") + private String year; + + @Schema(description="危害情况(0无危害 1有危害)") + private Integer isHarm; + + @Schema(description = "监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date searchDate; + + @Schema(description = "监测点") + private String pileNumber; + + @Schema(description="普查类型(1日常检查排查 2定期普查 3专项调查)") + private Integer surveyType; + + @Schema(description="普查方式(1人工排查法 2引诱法 3仪器探测法 4其它)") + private Integer surveyWay; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/TyYearRainfallPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/TyYearRainfallPageSo.java new file mode 100644 index 0000000..4d194f8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/TyYearRainfallPageSo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "典型年降雨分页查询对象") +public class TyYearRainfallPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="丰平枯(1枯 2偏枯 3平 4偏丰 5丰)") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WarnPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WarnPageSo.java new file mode 100644 index 0000000..ad4a6f8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WarnPageSo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Schema(description = "隐患预警分页查询对象") +public class WarnPageSo extends WarnSo{ + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WarnRulePageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WarnRulePageSo.java new file mode 100644 index 0000000..4604679 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WarnRulePageSo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "预警规则配置分页查询对象") +public class WarnRulePageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="告警类型(1渗压监测 2渗流监测 3位移监测)") + private Integer type; + + @Schema(description="测点编号") + private String stationCode; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WarnSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WarnSo.java new file mode 100644 index 0000000..9a4d43b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WarnSo.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.DateTimeRangeSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "隐患预警查询对象") +public class WarnSo { + + @Schema(description = "时间段") + private DateTimeRangeSo dateTimeRangeSo; + + @Schema(description="告警类型(1渗压监测 2渗流监测 3位移监测)") + private Integer type; + + @Schema(description="测点编号") + private String stationCode; + + @Schema(description="告警级别(1黄色 2红色)") + private Integer level; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WarningRulePageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WarningRulePageSo.java new file mode 100644 index 0000000..845a74d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WarningRulePageSo.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.so; + + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class WarningRulePageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + private String ruleName; + + private String warningType; + + private DateTimeRangeSo dateTimeRangeSo; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WaterAlarmPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WaterAlarmPageSo.java new file mode 100644 index 0000000..b4351d7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WaterAlarmPageSo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.entity.so; + + +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class WaterAlarmPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "测点编号") + private String stcd; + + @Schema(description = "告警类型") + private Integer type; + + @Schema(description = "测点名称") + private String name; + + @Schema(description="告警时间段") + private DateTimeRangeSo timeRangeSo; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WaterCommonSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WaterCommonSo.java new file mode 100644 index 0000000..1eb149c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WaterCommonSo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * 水情查询条件 + * Created by wanyan on 2024/3/11 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class WaterCommonSo { + + @Schema(description ="来源") + private List sources; + + @Schema(description ="站点名称或编码") + private String args; + + @Schema(description ="行政区划编码(仅APP乡镇用户需要传参)") + private String adcd; + + @Schema(description ="预警类型(仅APP需要传参,水库(1超校核 2超设计 3超讯限) 河道(1超危险 2超警戒))") + private List types; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WaterDevicePageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WaterDevicePageSo.java new file mode 100644 index 0000000..b5940fb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WaterDevicePageSo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.entity.so; + + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "分页查询对象") +public class WaterDevicePageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "设备编码") + private String code; + + @Schema(description = "设备名称") + private String name; + + @Schema(description = "接入站点编码") + private String mnNo; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WaterDispatchPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WaterDispatchPageSo.java new file mode 100644 index 0000000..24c8731 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WaterDispatchPageSo.java @@ -0,0 +1,19 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class WaterDispatchPageSo { + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description = "调度名称") + private String name; + + @Schema(description = "执行状态") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/WeatherSo.java b/src/main/java/com/gunshi/project/ss/entity/so/WeatherSo.java new file mode 100644 index 0000000..21055b0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/WeatherSo.java @@ -0,0 +1,18 @@ +package com.gunshi.project.ss.entity.so; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + + +@Data +public class WeatherSo { + + + @Schema(description = "时间点(tm格式YYYYMMDDHH,HH只能取08和20)",example = "2023062908") + @NotEmpty(message = "时间点不能为空") + @Pattern(regexp = "^20[0-9]{6}08|20[0-9]{6}20", message = "时间格式应为:YYYYMMDDHH其中HH只能为08或20") + private String tm; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/so/XlPlanPageSo.java b/src/main/java/com/gunshi/project/ss/entity/so/XlPlanPageSo.java new file mode 100644 index 0000000..7382839 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/so/XlPlanPageSo.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.entity.so; + +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class XlPlanPageSo { + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + + @Schema(description = "计划名称") + private String name; + + @Schema(description = "计划类型") + private Integer type; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AiWarningVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AiWarningVo.java new file mode 100644 index 0000000..8e004d3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AiWarningVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AiWarningVo { + + @Schema(description = "视频点名称") + private String stnm; + + @Schema(description = "告警时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime warningTime; + + private BigDecimal lgtd; + + private BigDecimal lttd; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ApiVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ApiVo.java new file mode 100644 index 0000000..058b4f8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ApiVo.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class ApiVo { + + @Schema(description = "开始时间, 格式应为:yyyy-MM-dd HH:mm:ss", example = "2023-06-15 08:00:00") + private String startTime; + + @Schema(description = "结束时间, 格式应为:yyyy-MM-dd HH:mm:ss", example = "2023-06-15 08:00:00") + private String endTime; + + @Schema(description = "页数", example = "1") + private Integer pageNumber = 1; + + @Schema(description = "条数", example = "10") + private Integer pageSize = 10; + + @Schema(description = "过滤条件", example = "[]") + private List filter; + + @AllArgsConstructor + @NoArgsConstructor + @Data + public static class Filter { + + @Schema(description = "查询列名 publishUnit:发布单位,warnSignalType:类型,warnSignalLevel:级别", example = "publishUnit") + private String name; + + @Schema(description = "查询类型", example = "like") + private String condition; + + @Schema(description = "值", example = "%1%") + private String description; + + } +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AssessRatingVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AssessRatingVo.java new file mode 100644 index 0000000..6858d4d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AssessRatingVo.java @@ -0,0 +1,42 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.model.AssessIndicatorRating; +import com.gunshi.project.ss.model.AssessTeamRating; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class AssessRatingVo extends AssessTeamRating { + + @Schema(description="考核类目id") + @JsonSerialize(using = ToStringSerializer.class) + private Long categoryId; + + @Schema(description="考核类目名称") + private String name; + + @Schema(description="指标名称") + private String indicatorName; + + @Schema(description="标准分数") + private Integer standardScore; + + @Schema(description="指标得分") + private BigDecimal indicatorScore; + + @Schema(description="考核成员id") + @JsonSerialize(using = ToStringSerializer.class) + private Long teamUserId; + + @Schema(description="考核成员") + private String teamUserName; + + @Schema(description = "评分细则") + private List indicatorRatings; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AssessRectifyVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AssessRectifyVo.java new file mode 100644 index 0000000..7d9a412 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AssessRectifyVo.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.model.AssessTeamRating; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class AssessRectifyVo extends AssessTeamRating { + + @Schema(description="考核类目id") + @JsonSerialize(using = ToStringSerializer.class) + private Long categoryId; + + @Schema(description="考核类目名称") + private String name; + + @Schema(description="指标名称") + private String indicatorName; + + @Schema(description="任务名称") + private String taskName; + + @Schema(description="考核对象id") + @JsonSerialize(using = ToStringSerializer.class) + private Long objectUserId; + + @Schema(description="考核对象") + private String objectUserName; + + @Schema(description="考核等级(1优秀 2良好 3合格)") + private Integer assessLevel; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AssessResultVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AssessResultVo.java new file mode 100644 index 0000000..3790f60 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AssessResultVo.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ExcelIgnoreUnannotated +public class AssessResultVo { + + @ExcelProperty({"考核对象"}) + @ColumnWidth(15) + private String objectUserName; + + @ExcelProperty({"考核类目"}) + @ColumnWidth(15) + private String categoryName; + + @ExcelProperty({"指标名称"}) + @ColumnWidth(15) + private String indicatorName; + + @ExcelProperty({"扣分"}) + private BigDecimal deductScore; + + @ExcelProperty({"考核得分"}) + @ColumnWidth(15) + private BigDecimal resScore; + + + @ExcelIgnore + @JsonSerialize(using = ToStringSerializer.class) + private Long objectId; + + @ExcelIgnore + @JsonSerialize(using = ToStringSerializer.class) + private Long indicatorId; + + @ExcelIgnore + private Integer standardScore; + + @ExcelIgnore + private BigDecimal assessScore; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AssessScoreVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AssessScoreVo.java new file mode 100644 index 0000000..79913e4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AssessScoreVo.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.AssessTeamRating; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class AssessScoreVo { + + @Schema(description="任务Id") + private Long taskId; + + @Schema(description="总分") + private BigDecimal score; + + @Schema(description="评分信息") + private List ratings; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AttResBaseVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AttResBaseVo.java new file mode 100644 index 0000000..a217cc8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AttResBaseVo.java @@ -0,0 +1,250 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 水库水情 + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class AttResBaseVo { + + /** + * 测站编码 + */ + @Schema(description = "测站编码") + private String stcd; + + /** + * 测站名称 + */ + @Schema(description = "测站名称") + private String stnm; + + /** + * 站类 + */ + @Schema(description = "站类(RR水库水文站 ZQ,ZP河道水文站)") + private String sttp; + + /** + * 来源 + */ + @Schema(description = "来源") + private String source; + + /** + * 水库代码 + */ + @Schema(description = "水库代码") + private String resCode; + + /** + * 经度 + */ + @Schema(description = "经度") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @Schema(description = "纬度") + private BigDecimal lttd; + + /** + * 行政区划代码 + */ + @Schema(description="行政区划代码") + private String adcd; + + /** + * 行政区划名称 + */ + @Schema(description="行政区划名称") + private String adnm; + + /** + * 站址 + */ + @Schema(description="站址") + private String stlc; + + + /** + * 主汛期防洪限制水位 + */ + @Schema(description = "主汛期防洪限制水位") + private BigDecimal flLowLimLev; + + /** + * 总库容 + */ + @Schema(description = "总库容") + private BigDecimal totCap; + + /** + * 流域名称 + */ + @Schema(description="流域名称") + private String lyname; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 监测水位 + */ + @Schema(description="监测水位") + private BigDecimal rz; + + @Schema(description="坝址控制流域面积") + private BigDecimal watShedArea; + + /** + * 超讯限 + */ + @Schema(description="超讯限") + private BigDecimal aFsltdz; + + /** + * 水位涨跌情况 + */ + @Schema(description="水位涨跌情况(0无变化 1涨 2跌)") + private Integer state; + + /** + * 设计洪水位 + */ + @Schema(description="设计洪水位") + private BigDecimal desFloodLev; + + /** + * 校核洪水位 + */ + @Schema(description = "校核洪水位") + private BigDecimal calFloodLev; + + + /** + * 正常蓄水位 + */ + @Schema(description = "正常蓄水位") + private BigDecimal normWatLev; + + + /** + * 死水位 + */ + @Schema(description = "死水位") + private BigDecimal deadLev; + + + /** + * 坝顶高程 + */ + @Schema(description = "坝顶高程") + private BigDecimal crestElev; + + @Schema(description="死库容") + private BigDecimal deadCap; + + /** + * 兴利库容 + */ + @Schema(description = "兴利库容") + private BigDecimal benResCap; + + /** + * 水库当前库容 + */ + @Schema(description = "水库当前库容") + private BigDecimal nowCap; + + + /** + * 雨量时间 + */ + @Schema(description="雨量时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date drpTm; + + /** + * 小时雨量 + */ + @Schema(description="小时雨量") + private BigDecimal h1; + + /** + * 3小时雨量 + */ + @Schema(description="3小时雨量") + private BigDecimal h3; + + /** + * 6小时雨量 + */ + @Schema(description="6小时雨量") + private BigDecimal h6; + + /** + * 12小时雨量 + */ + @Schema(description="12小时雨量") + private BigDecimal h12; + + + /** + * 24小时雨量 + */ + @Schema(description="24小时雨量") + private BigDecimal h24; + + /** + * 今日雨量 + */ + @Schema(description="今日雨量") + private BigDecimal today; + + @Schema(description = "是否超校核水位(0否 1是)") + private Integer calState; + + @Schema(description = "是否超设计水位(0否 1是)") + private Integer desState; + + @Schema(description = "是否超汛限水位(0否 1是)") + private Integer flState; + + @Schema(description = "建站日期") + private String esstym; + + @Schema(description = "灌溉流量 (m³/s)") + private BigDecimal irrigationFlowSum; + + @Schema(description = "灌溉时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date irrigationFlowTm; + + @Schema(description = "生态供水流量 (m³/s)") + private BigDecimal ecologyFlow; + + @Schema(description = "生态供水时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date ecologyFlowTm; + + @Schema(description = "状态 0 离线 1在线") + private Integer status; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AttResMonitorVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AttResMonitorVo.java new file mode 100644 index 0000000..038bd2a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AttResMonitorVo.java @@ -0,0 +1,83 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 水库监测数据 + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AttResMonitorVo { + + /** + * 测站编码 + */ + @Schema(description = "测站编码") + private String stcd; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 雨量 + */ + @Schema(description="雨量") + private BigDecimal drp; + + /** + * 监测水位 + */ + @Schema(description="监测水位") + private BigDecimal rz; + + /** + * 库容 + */ + @Schema(description="库容") + private BigDecimal w; + + /** + * 今日雨量 + */ + @Schema(description="今日雨量") + private BigDecimal todayRainNum; + + /** + * 今日雨量 + */ + @Schema(description="今日雨量") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date todayRainNumTm; + + /** + * 灌溉发电流量 + */ + @Schema(description="灌溉发电流量") + private BigDecimal outPowerNum; + + /** + * 灌溉发电流量 + */ + @Schema(description="灌溉发电流量") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date outPowerNumTm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AttRiverNowDataVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AttRiverNowDataVo.java new file mode 100644 index 0000000..ad3d744 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AttRiverNowDataVo.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.gunshi.project.ss.common.model.StPptnRReal; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class AttRiverNowDataVo extends StPptnRReal { + + @Schema(description = "水位上报时间") + private Date waterTm; + + @Schema(description = "监测水位") + private BigDecimal rz; + + + @Schema(description = "警戒水位") + private BigDecimal waterAlarm; + + @Schema(description = "监测水位差值") + private BigDecimal waterAlarmGap; + + @Schema(description = "保证水位") + private BigDecimal waterPromise; + + @Schema(description = "保证水位差值") + private BigDecimal waterPromiseGap; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AttRvBaseVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AttRvBaseVo.java new file mode 100644 index 0000000..bbf1191 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AttRvBaseVo.java @@ -0,0 +1,175 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 河道水情 + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class AttRvBaseVo { + + /** + * 测站编码 + */ + @Schema(description = "测站编码") + private String stcd; + + /** + * 测站名称 + */ + @Schema(description = "测站名称") + private String stnm; + + /** + * 站类 + */ + @Schema(description = "站类(RR水库水文站 ZQ,ZP河道水文站)") + private String sttp; + + /** + * 来源 + */ + @Schema(description = "来源") + private String source; + + /** + * 经度 + */ + @Schema(description = "经度") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @Schema(description = "纬度") + private BigDecimal lttd; + + /** + * 行政区划代码 + */ + @Schema(description="行政区划代码") + private String adcd; + + /** + * 行政区划名称 + */ + @Schema(description="行政区划名称") + private String adnm; + + + /** + * 河流名称 + */ + @Schema(description = "河流名称") + private String rvnm; + + /** + * 流域名称 + */ + @Schema(description="流域名称") + private String lyname; + + /** + * 站址 + */ + @Schema(description="站址") + private String stlc; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 水位涨跌情况 + */ + @Schema(description="水位涨跌情况(0无变化 1涨 2跌)") + private Integer state; + + /** + * 监测水位 + */ + @Schema(description="监测水位") + private BigDecimal z; + + @Schema(description="警戒水位") + private BigDecimal wrz; + + @Schema(description="保证水位") + private BigDecimal grz; + + /** + * 图片路径 + */ + @Schema(description = "图片路径") + private String imgPath; + + @Schema(description="是否超保证水位(0否 1是)") + private Integer gstate; + + @Schema(description="是否超警戒水位(0否 1是)") + private Integer wstate; + + @Schema(description = "建站日期") + private String esstym; + + /** + * 小时雨量 + */ + @Schema(description="小时雨量") + private BigDecimal h1; + + /** + * 3小时雨量 + */ + @Schema(description="3小时雨量") + private BigDecimal h3; + + /** + * 6小时雨量 + */ + @Schema(description="6小时雨量") + private BigDecimal h6; + + /** + * 12小时雨量 + */ + @Schema(description="12小时雨量") + private BigDecimal h12; + + + /** + * 24小时雨量 + */ + @Schema(description="24小时雨量") + private BigDecimal h24; + + /** + * 今日雨量 + */ + @Schema(description="今日雨量") + private BigDecimal today; + + + /** + * 死水位 + */ + @Schema(description = "死水位 写死") + private BigDecimal deadLev; + + + @Schema(description = "状态 0 离线 1在线") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AttRvMonitorDetailVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AttRvMonitorDetailVo.java new file mode 100644 index 0000000..9db5301 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AttRvMonitorDetailVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 河道监测数据(下方表格) + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class AttRvMonitorDetailVo extends StPptnDetailsVo { + + @Schema(description="24小时水位变幅(m)") + private BigDecimal rzDiff; + + @Schema(description="本年最高水位(m)") + private BigDecimal maxRz; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/AttRvMonitorVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/AttRvMonitorVo.java new file mode 100644 index 0000000..71f86e8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/AttRvMonitorVo.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 河道监测数据 + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AttRvMonitorVo { + + /** + * 测站编码 + */ + @Schema(description = "测站编码") + private String stcd; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 雨量 + */ + @Schema(description="雨量") + private BigDecimal drp; + + /** + * 监测水位 + */ + @Schema(description="监测水位") + private BigDecimal z; + + /** + * 实测流量 + */ + @Schema(description="实测流量") + private BigDecimal q; + + /** + * 转换流量 + */ + @Schema(description="转换流量") + private BigDecimal tq; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/CameraOnlineVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/CameraOnlineVo.java new file mode 100644 index 0000000..89e1193 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/CameraOnlineVo.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/7/26 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class CameraOnlineVo { + + @Schema(description="摄像头code") + private String indexCode; + + @Schema(description="在线状态,0离线,1在线") + private Integer online; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/CartogramVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/CartogramVo.java new file mode 100644 index 0000000..963c450 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/CartogramVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * TODO + * + * @ClassName CartogramVo + * @Author Huang Qianxiang + * @Date 2024/3/26 14:24 + */ +@Data +public class CartogramVo { + + @Schema(description = "时间") + private List time; + + @Schema(description = "实测") + private List actual; + + @Schema(description = "累计") + private List total; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/CctvControlVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/CctvControlVo.java new file mode 100644 index 0000000..e967335 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/CctvControlVo.java @@ -0,0 +1,45 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/7/26 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class CctvControlVo { + + @Schema(description="摄像头code") + private String indexCode; + + @Schema(description="动作(0开始 1停止)") + private Integer action; + + @Schema(description="云台速度") + private Integer speed; + + @Schema(description="命令(LEFT 左转\n" + + "RIGHT右转\n" + + "UP 上转\n" + + "DOWN 下转\n" + + "ZOOM_IN 焦距变大\n" + + "ZOOM_OUT 焦距变小\n" + + "LEFT_UP 左上\n" + + "LEFT_DOWN 左下\n" + + "RIGHT_UP 右上\n" + + "RIGHT_DOWN 右下\n" + + "FOCUS_NEAR 焦点前移\n" + + "FOCUS_FAR 焦点后移\n" + + "IRIS_ENLARGE 光圈扩大\n" + + "IRIS_REDUCE 光圈缩小\n" + + "WIPER_SWITCH 接通雨刷开关\n" + + "START_RECORD_TRACK 开始记录运行轨迹\n" + + "STOP_RECORD_TRACK 停止记录运行轨迹\n" + + "START_TRACK 开始运行轨迹\n" + + "STOP_TRACK 停止运行轨迹;)") + private String command; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/DispatchRecordVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/DispatchRecordVo.java new file mode 100644 index 0000000..067818e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/DispatchRecordVo.java @@ -0,0 +1,62 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@ExcelIgnoreUnannotated +public class DispatchRecordVo { + + @Schema(description="调度开始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @ExcelProperty({"调度开始时间"}) + @ColumnWidth(20) + @DateTimeFormat(DateFormatString.YYYY_MM_DD_HH_MM_SS) + private Date startTime; + + @Schema(description="调度结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @ExcelProperty({"调度结束时间"}) + @ColumnWidth(20) + @DateTimeFormat(DateFormatString.YYYY_MM_DD_HH_MM_SS) + private Date endTime; + + @Schema(description="状态(0执行中 1完成)") + @ExcelIgnore + private Integer status; + + @ExcelProperty({"调度原因"}) + @ColumnWidth(50) + private String dispatchReason; + + @Schema(description="调度详情") + @ExcelProperty({"调度详情"}) + @ColumnWidth(50) + private String dispatchDetail; + + @Schema(description="操作人") + @ExcelProperty({"操作人"}) + private String opUserName; + + @Schema(description="调度状态") + @ExcelProperty({"调度状态"}) + private String statusName; + + public void setStatus(Integer status){ + this.status = status; + if (this.status == 0) { + this.statusName = "执行中"; + } else if (this.status == 1) { + this.statusName = "完成"; + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/DmDvcdVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/DmDvcdVo.java new file mode 100644 index 0000000..24581e5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/DmDvcdVo.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class DmDvcdVo { + + @Schema(description = "断面") + private String dm; + + @Schema(description = "断面编码") + private List dvcd; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainStatVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainStatVo.java new file mode 100644 index 0000000..b5ecce6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainStatVo.java @@ -0,0 +1,43 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 天气预报-流域统计 + * Created by wanyan on 2024/3/13 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class ForeRainStatVo { + + @Schema(description = "id") + private String id; + + @Schema(description = "名称") + private String name; + + @Schema(description = "雨量") + private Double drp; + + @Schema(description="经度") + private BigDecimal lgtd; + + @Schema(description="纬度") + private BigDecimal lttd; + + @JsonIgnore + private List meshrainVos; + + @Schema(description = "逐小时雨量") + private List timeRainVos; + + @JsonIgnore + private String geom; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainTimeVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainTimeVo.java new file mode 100644 index 0000000..56ce5e4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainTimeVo.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 天气预报-水库统计 + * Created by wanyan on 2024/3/13 + * + * @author wanyan + * @version 1.0 + */ +@Data +@Builder +public class ForeRainTimeVo { + + @Schema(description = "时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + + @Schema(description = "雨量") + private BigDecimal drp; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainVo.java new file mode 100644 index 0000000..0ad6daa --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ForeRainVo.java @@ -0,0 +1,42 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +@Data +public class ForeRainVo { + private String stcd; + + @Schema(description = "测站名称") + private String stnm; + + private String lgtd; + + private String lttd; + + @Schema(description = "1h(mm)") + private BigDecimal h1; + + @Schema(description = "3h(mm)") + private BigDecimal h3; + + @Schema(description = "6h(mm)") + private BigDecimal h6; + + @Schema(description = "12h(mm)") + private BigDecimal h12; + + @Schema(description = "24h(mm)") + private Double h24; + + @Schema(description = "2h(mm)") + private Double h2; + + @Schema(description = "逐小时雨量") + private List timeRainVos; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ForecastResultVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ForecastResultVo.java new file mode 100644 index 0000000..0746306 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ForecastResultVo.java @@ -0,0 +1,120 @@ +package com.gunshi.project.ss.entity.vo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** +*@description 预测结果VO +*@author cxw +*@classname ForecastResultVo.java +*@create 2024-07-31, 周三, 11:05:04 +*/ +@Schema(description="预测结果VO") +@Data +public class ForecastResultVo { + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 预测入库流量 + */ + @Schema(description="预测入库流量") + private BigDecimal ycRkQValue; + + /** + * 实际入库流量 + */ + @Schema(description="实际入库流量") + private BigDecimal realRkQValue; + + /** + * 预测出库流量 + */ + @Schema(description="预测出库流量") + private BigDecimal ycCkQValue; + + /** + * 实际出库流量 + */ + @Schema(description="实际出库流量") + private BigDecimal realCkQValue; + + /** + * 预测水库水位 + */ + @Schema(description="预测水库水位") + private BigDecimal ycSwHValue; + + /** + * 实际水库水位 + */ + @Schema(description="实际水库水位") + private BigDecimal realSwHValue; + + /** + * 水位:预测-实测 + */ + @Schema(description="水位:预测-实测") + private BigDecimal swHDValue; + + /** + * 降雨 + */ + @Schema(description="降雨") + private BigDecimal drp; + + /** + * 是否是预测雨量(0:真实 1:预测) + */ + @Schema(description="是否是预测雨量(0:真实 1:预测)") + private String ispreDrp; + + /** + * 径流深 + */ + @Schema(description="径流深") + private BigDecimal r; + + /** + * 主汛期防洪限制水位 + */ + @Schema(description="主汛期防洪限制水位") + private BigDecimal flLowLimLev; + + /** + * 当前堰顶高度预警值 + */ + @Schema(description="当前堰顶高度预警值") + private BigDecimal currentYdgdyjz; + + /** + * 土壤含水量 + */ + @Schema(description="土壤含水量") + private BigDecimal pa; + + /** + * 水库当前库容 + */ + @Schema(description = "水库当前库容") + private BigDecimal nowCap; + + /** + * 累积R + */ + @Schema(description = "累积R") + private BigDecimal rSum; + + /** + * 累积P + */ + @Schema(description = "累积P") + private BigDecimal pSum = BigDecimal.ZERO; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/GateMonitorDataVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/GateMonitorDataVo.java new file mode 100644 index 0000000..91e8581 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/GateMonitorDataVo.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class GateMonitorDataVo { + + @Schema(description = "水闸编号") + private String gateCode; + + @Schema(description = "测站") + private String stcd; + + @Schema(description = "类型(1闸前水位站 2闸后水位站 3流量站)") + private Integer type; + + @Schema(description = "时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + @Schema(description = "值") + private BigDecimal value; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/GateStautsVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/GateStautsVo.java new file mode 100644 index 0000000..55ffd5d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/GateStautsVo.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * Description: + * Created by wanyan on 2024/7/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class GateStautsVo { + + @Schema(description="闸阀ID") + @ExcelIgnore + private String valveCode; + + /** + * 闸阀名称 + */ + @Schema(description="闸阀名称") + @ExcelProperty({"闸阀名称"}) + @ColumnWidth(20) + private String valveName; + + + @Schema(description="开关状态") + @ExcelProperty({"开关状态"}) + @ColumnWidth(20) + private String status; + + /** + * 操作时间 + */ + @Schema(description="操作时间") + @ExcelProperty({"操作时间"}) + @ColumnWidth(25) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + @Schema(description = "监测时间是否离当前时间超过2小时(0否 1是)") + @ExcelIgnore + private Integer flag = 0; + + @Schema(description="是否可手动控制") + @ExcelIgnore + private Boolean manualOperation; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/GateValveCctvRelVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/GateValveCctvRelVo.java new file mode 100644 index 0000000..ebdf884 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/GateValveCctvRelVo.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.GateValveCctvRel; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/19. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GateValveCctvRelVo extends GateValveCctvRel { + /** + * 闸阀名称 + */ + @Schema(description="闸阀名称") + private String valveName; + + /** + * id + */ + @Schema(description="摄像头id") + private Long indexId; + + + /** + * 摄像头名称 + */ + @Schema(description="摄像头名称") + private String name; + + @Schema(description="类型(1球机 2枪机)") + private Integer type; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/GateValveOplogVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/GateValveOplogVo.java new file mode 100644 index 0000000..db733f0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/GateValveOplogVo.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * Description: + * Created by wanyan on 2024/7/19 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class GateValveOplogVo { + + @Schema(description="闸阀ID") + @ExcelIgnore + private String valveCode; + + /** + * 闸阀名称 + */ + @Schema(description="闸阀名称") + @ExcelProperty({"闸阀名称"}) + @ColumnWidth(20) + private String valveName; + + /** + * 操作人 + */ + @Schema(description="操作人") + @ExcelProperty({"操作人"}) + private String opUserName; + + /** + * 操作时间 + */ + @Schema(description="操作时间") + @ExcelProperty({"操作时间"}) + @ColumnWidth(25) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + @Schema(description="操作内容") + @ExcelProperty({"操作内容"}) + @ColumnWidth(20) + private String opContent; + + @Schema(description="设定开度") + @ExcelProperty({"设定开度"}) + private String status; + + @Schema(description="操作前开度") + @ExcelProperty({"操作前开度"}) + private String beforeStatus; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/GnssCdAndCdVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/GnssCdAndCdVo.java new file mode 100644 index 0000000..6c0113d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/GnssCdAndCdVo.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.entity.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class GnssCdAndCdVo { + + private String ch; + + private List childrens; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HisWaterDataVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HisWaterDataVo.java new file mode 100644 index 0000000..d0bf02b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HisWaterDataVo.java @@ -0,0 +1,14 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.HisWaterData; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class HisWaterDataVo extends HisWaterData{ + + private List children; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCBsnssinfoVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCBsnssinfoVo.java new file mode 100644 index 0000000..d18d93c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCBsnssinfoVo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.IaCBsnssinfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/10. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class HomeIaCBsnssinfoVo extends IaCBsnssinfo { + + /** + * 行政区划名 + */ + @Schema(description="行政区划名") + private String adnm; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCDanadVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCDanadVo.java new file mode 100644 index 0000000..6e86a54 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCDanadVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.IaCDanad; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/10. + * + * @author XuSan + * @version 1.0 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class HomeIaCDanadVo extends IaCDanad { + + /** + * 行政区划名 + */ + @Schema(description="行政区划名") + private String adnm; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCFlrvvlgVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCFlrvvlgVo.java new file mode 100644 index 0000000..ca8d1c6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeIaCFlrvvlgVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.IaCFlrvvlg; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/10. + * + * @author XuSan + * @version 1.0 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class HomeIaCFlrvvlgVo extends IaCFlrvvlg { + + /** + * 行政区划名 + */ + @Schema(description="行政区划名") + private String adnm; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticFlowDeviceVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticFlowDeviceVo.java new file mode 100644 index 0000000..4b81748 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticFlowDeviceVo.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.model.OsmoticFlowDevice; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/7/10. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class HomeOsmoticFlowDeviceVo extends OsmoticFlowDevice { + + + /** + * 管水位 + */ + @Schema(description="流量") + private String q; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticPressDeviceVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticPressDeviceVo.java new file mode 100644 index 0000000..6c34a6b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticPressDeviceVo.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.model.OsmoticPressDevice; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** +* 描述: 渗压设备表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@EqualsAndHashCode(callSuper = true) +@Data +public class HomeOsmoticPressDeviceVo extends OsmoticPressDevice { + + /** + * 管水位 + */ + @Schema(description="管水位") + private String value; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticShiftDeviceVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticShiftDeviceVo.java new file mode 100644 index 0000000..e285182 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeOsmoticShiftDeviceVo.java @@ -0,0 +1,49 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.model.OsmoticShiftDevice; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/7/10. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class HomeOsmoticShiftDeviceVo extends OsmoticShiftDevice { + + /** + * x方向 + */ + @Schema(description="x方向") + private String x; + + /** + * y方向 + */ + @Schema(description="y方向") + private String y; + + /** + * h方向 + */ + @Schema(description="h方向") + private String h; + + /** + * 监测时间 + */ + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeShpPlacementVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeShpPlacementVo.java new file mode 100644 index 0000000..5dbaf13 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeShpPlacementVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.ShpPlacement; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Description: + * Created by XuSan on 2024/7/10. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class HomeShpPlacementVo extends ShpPlacement { + + /** + * 行政区划名 + */ + @Schema(description="行政区划名") + private String adnm; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeStStbprpBVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeStStbprpBVo.java new file mode 100644 index 0000000..836306d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeStStbprpBVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.common.model.StStbprpB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * Description: + * Created by XuSan on 2024/7/10. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class HomeStStbprpBVo extends StStbprpB { + + + /** + * 数据 + */ + @Schema(description="数据") + private BigDecimal v; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/HomeWarnVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/HomeWarnVo.java new file mode 100644 index 0000000..a6a661b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/HomeWarnVo.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * Description: + * Created by wanyan on 2024/7/17 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class HomeWarnVo { + + + @Schema(description = "水库预警") + private Map> skWarningVoMap; + + @Schema(description = "河道预警") + private Map> riverWarningVoMap; + + @Schema(description = "大坝安全监测预警") + private Map> osmoticWarnVoMap; + + @Schema(description = "AI告警监测") + private Map> aiWarnVoMap; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/InspectProblemVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/InspectProblemVo.java new file mode 100644 index 0000000..3f699d6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/InspectProblemVo.java @@ -0,0 +1,54 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.common.model.InspectTaskDetail; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class InspectProblemVo extends InspectTaskDetail { + + @Schema(description="任务标题") + private String taskTitle; + + @Schema(description="巡查点名称") + private String name; + + @Schema(description="巡检项描述") + private String itemDesc; + + @Schema(description="巡查人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long inspectUserId; + + @Schema(description="巡查人") + private String inspectUserName; + + @Schema(description="巡查完成时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date finishTime; + + @Schema(description = "巡查图片") + private List inspectPics; + + @Schema(description = "巡查视频") + private List inspectVideos; + + @Schema(description = "处理图片") + private List handlePics; + + @Schema(description = "处理视频") + private List handleVideos; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/InspectTaskDetailVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/InspectTaskDetailVo.java new file mode 100644 index 0000000..316072a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/InspectTaskDetailVo.java @@ -0,0 +1,44 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.common.model.InspectTaskDetail; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class InspectTaskDetailVo extends InspectTaskDetail { + + @Schema(description="巡查点名称") + private String name; + + @Schema(description="巡检项描述") + private String itemDesc; + + @Schema(description="巡检项问题描述") + private String itemProblemDesc; + + @Schema(description="处理建议") + private String handleSuggestion; + + @Schema(description="子集") + private List children; + + @Schema(description = "巡查图片") + private List inspectPics; + + @Schema(description = "巡查视频") + private List inspectVideos; + + @Schema(description = "处理图片") + private List handlePics; + + @Schema(description = "处理视频") + private List handleVideos; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/InspectTaskVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/InspectTaskVo.java new file mode 100644 index 0000000..c504e55 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/InspectTaskVo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.hibernate.validator.constraints.Range; + +import java.util.List; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class InspectTaskVo { + + @Schema(description="任务状态") + @Range(min = 1,max = 2) + @NotNull(message = "任务状态不可为空") + private Integer status; + + @Schema(description="巡查信息") + private List list; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/MentenceInfoCount12Vo.java b/src/main/java/com/gunshi/project/ss/entity/vo/MentenceInfoCount12Vo.java new file mode 100644 index 0000000..f1fe512 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/MentenceInfoCount12Vo.java @@ -0,0 +1,11 @@ +package com.gunshi.project.ss.entity.vo; + +import lombok.Data; + +@Data +public class MentenceInfoCount12Vo { + + private String month; + + private Integer hiddenCount; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/MentenceInfoCountVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/MentenceInfoCountVo.java new file mode 100644 index 0000000..4df4900 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/MentenceInfoCountVo.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.HiddenInfo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "维护信息统计分析") +public class MentenceInfoCountVo extends HiddenInfo { + + @Schema(description = "维护对象名称") + private String mentenceStName; + + @Schema(description = "维护项目Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mentenceStId; + + @Schema(description = "维护项目名称") + private String mentenceStDetailName; + + @Schema(description = "维护对象Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mentenceStDetailId; + + @Schema(description = "维护人Id") + @JsonSerialize(using = ToStringSerializer.class) + private String mentencePersonId; + + @Schema(description = "维护人名称") + private String mentencePersonName; + + private List files; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/MeshrainVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/MeshrainVo.java new file mode 100644 index 0000000..767e4da --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/MeshrainVo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * Description: + * Created by wanyan on 2024/3/13 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class MeshrainVo { + + @Schema(description = "水库/河流/行政区划编码") + private String code; + + @Schema(description = "行号") + private Integer rownum; + + @Schema(description = "列号") + private Integer colnum; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/NbStatVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/NbStatVo.java new file mode 100644 index 0000000..b402179 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/NbStatVo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class NbStatVo { + + @Schema(description="月份") + private String month; + + @Schema(description="最高") + private String max; + + @Schema(description="最高日期") + private String maxDate; + + @Schema(description="最低") + private String min; + + @Schema(description="最低日期") + private String minDate; + + @Schema(description="平均") + private String avg; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartDetailVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartDetailVo.java new file mode 100644 index 0000000..5e07351 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartDetailVo.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * + * Created by wanyan on 2024/3/13 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class OsmoticChartDetailVo { + + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + + /** + * 管水位 + */ + @Schema(description="管水位") + private BigDecimal value; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartVo.java new file mode 100644 index 0000000..5c4d5e3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartVo.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/7/9 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class OsmoticChartVo { + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String stationCode; + + /** + * 最大值 + */ + @Schema(description="最大值") + private BigDecimal maxValue; + + /** + * 最大值时间 + */ + @Schema(description="最大值时间") + private String maxTm; + + /** + * 最小值 + */ + @Schema(description="最小值") + private BigDecimal minValue; + + /** + * 最小值时间 + */ + @Schema(description="最小值时间") + private String minTm; + + /** + * 变幅 + */ + @Schema(description="变幅") + private BigDecimal diff; + + @Schema(description = "数据") + private List detailVos; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartVo2.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartVo2.java new file mode 100644 index 0000000..ce0e73d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticChartVo2.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class OsmoticChartVo2 { + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String cd; + + /** + * 最大值 + */ + @Schema(description="最大值") + private BigDecimal maxValue; + + /** + * 最大值时间 + */ + @Schema(description="最大值时间") + private String maxTm; + + /** + * 最小值 + */ + @Schema(description="最小值") + private BigDecimal minValue; + + /** + * 最小值时间 + */ + @Schema(description="最小值时间") + private String minTm; + + /** + * 变幅 + */ + @Schema(description="变幅") + private BigDecimal diff; + + @Schema(description = "数据") + private List detailVos; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticPressVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticPressVo.java new file mode 100644 index 0000000..d3f7d29 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticPressVo.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Description: + * Created by wanyan on 2024/7/9 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class OsmoticPressVo { + + @Schema(description="测点编码") + private String stationCode; + + @Schema(description = "断面名称") + private String profileName; + + @Schema(description="监测时间") + private String tm; + + @Schema(description="监测值") + private BigDecimal value; + + @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") + private Integer flag = 0; + + @Schema(description = "是否超过预警(0否 1是)") + private Integer status = 0; + + private BigDecimal lttd; + + private BigDecimal lgtd; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftListVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftListVo.java new file mode 100644 index 0000000..6f6da0b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftListVo.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Description: + * Created by wanyan on 2024/7/9 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class OsmoticShiftListVo { + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String stationCode; + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + @Schema(description = "监测时间是否离当前时间超过2天(0否 1是)") + private Integer flag = 0; + + /** + * x方向 + */ + @Schema(description="x方向") + private BigDecimal x; + + @Schema(description = "x方向是否超过预警(0否 1是)") + private Integer xStatus = 0; + + /** + * y方向 + */ + @Schema(description="y方向") + private BigDecimal y; + + @Schema(description = "y方向是否超过预警(0否 1是)") + private Integer yStatus = 0; + + /** + * h方向 + */ + @Schema(description="h方向") + private BigDecimal h; + + @Schema(description = "h方向是否超过预警(0否 1是)") + private Integer hStatus = 0; + + @JsonIgnore + private String direction; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftValueVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftValueVo.java new file mode 100644 index 0000000..ed2ecc4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftValueVo.java @@ -0,0 +1,54 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Description: + * Created by wanyan on 2024/7/9 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class OsmoticShiftValueVo { + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String stationCode; + + /** + * x方向 + */ + @Schema(description="x方向") + private BigDecimal x; + + /** + * y方向 + */ + @Schema(description="y方向") + private BigDecimal y; + + /** + * h方向 + */ + @Schema(description="h方向") + private BigDecimal h; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftVo.java new file mode 100644 index 0000000..4a21872 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftVo.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/7/9 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class OsmoticShiftVo{ + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + @Schema(description="测值") + private List list; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftVo2.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftVo2.java new file mode 100644 index 0000000..6fa5cbc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticShiftVo2.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.common.model.vo.OsmoticShiftValueVo2; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class OsmoticShiftVo2 { + + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + @Schema(description="测值") + private List list; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticStationVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticStationVo.java new file mode 100644 index 0000000..e3652ba --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticStationVo.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.common.model.vo.StRzVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/7/9 + * + * @author wanyan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class OsmoticStationVo extends StRzVo { + + @Schema(description = "结果分析(0异常 1正常)") + private Integer status = 1; + + @Schema(description="测值") + private List list; + + @Schema(description = "降雨量") + private BigDecimal drp; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticStationVo2.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticStationVo2.java new file mode 100644 index 0000000..9882a62 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticStationVo2.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.common.model.vo.OsmoticValueVo2; +import com.gunshi.project.ss.common.model.vo.StRzVo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class OsmoticStationVo2 extends StRzVo { + + @Schema(description = "结果分析(0异常 1正常)") + private Integer status = 1; + + @Schema(description="测值") + private List list; + + @Schema(description = "降雨量") + private BigDecimal drp; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticValueVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticValueVo.java new file mode 100644 index 0000000..f5309ba --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticValueVo.java @@ -0,0 +1,44 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * + * Created by wanyan on 2024/3/13 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class OsmoticValueVo { + + /** + * 时间 + */ + @Schema(description="时间") + private String tm; + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String stationCode; + + /** + * 管水位 + */ + @Schema(description="管水位") + private BigDecimal value; + + /** + * 库水位 + */ + @Schema(description="库水位") + private BigDecimal rz; + + @Schema(description = "结果分析(0异常 1正常)") + private Integer status = 1; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticWarnVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticWarnVo.java new file mode 100644 index 0000000..bf5130b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticWarnVo.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.model.OsmoticWarnRule; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Description: + * Created by wanyan on 2024/7/9 + * + * @author wanyan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class OsmoticWarnVo extends OsmoticWarnRule { + /** + * 主键 + */ + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 测点编号 + */ + @Schema(description="测点编号") + private String stationCode; + + /** + * 预警规则id + */ + @Schema(description="预警规则id") + private Long ruleId; + + /** + * 监测值 + */ + @Schema(description="监测值") + private BigDecimal value; + + /** + * 预警时间 + */ + @Schema(description="预警时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 监测类型(1渗压 2渗流 3位移) + */ + @Schema(description="监测类型(1渗压 2渗流 3位移)") + private Integer type; + + @Schema(description = "预警描述") + private String direction; + + @Schema(description = "预警等级") + private String warnLevel; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticWaterRVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticWaterRVo.java new file mode 100644 index 0000000..79f4156 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/OsmoticWaterRVo.java @@ -0,0 +1,209 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import lombok.Data; + +import java.util.Date; + +/** + * @author cxw + * @description: (描述这个类或者方法的作用) + * @classname OsmoticWaterRVo.java + * @create 2024-07-10, 星期三, 10:46:43 + */ +@Data +@ExcelIgnoreUnannotated +public class OsmoticWaterRVo { + private static final long serialVersionUID = 1L; + /** + * 采集时间 + */ + @ExcelProperty({"${title}", "时间"}) + @ColumnWidth(15) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 水温 + */ + @ExcelProperty({"${title}", "水温(℃)"}) + private String temp; + + /** + * PH + */ + @ExcelProperty({"${title}", "PH(mg/L)"}) + private String ph; + + /** + * 溶解氧 + */ + @ExcelProperty({"${title}", "溶解氧(mg/L)"}) + private String bod; + + /** + * 高锰酸钾指数 + */ + @ExcelProperty({"${title}", "高锰酸钾指数(mg/L)"}) + private String mn; + + /** + * 化学需氧量 + */ + @ExcelProperty({"${title}", "化学需氧量(mg/L)"}) + private String codcr; + + /** + * 五日生化需氧量 + */ + @ExcelProperty({"${title}", "五日生化需氧量(mg/L)"}) + private String bod5; + + /** + * 氨氮 + */ + @ExcelProperty({"${title}", "氨氮(mg/L)"}) + private String nh3n; + + /** + * 总磷 + */ + @ExcelProperty({"${title}", "总磷(mg/L)"}) + private String tp; + + /** + * 总氮 + */ + @ExcelProperty({"${title}", "总氮(mg/L)"}) + private String tn; + + /** + * 铜 + */ + @ExcelProperty({"${title}", "铜(mg/L)"}) + private String cu; + + /** + * 锌 + */ + @ExcelProperty({"${title}", "锌(mg/L)"}) + private String zn; + + /** + * 氟化物 + */ + @ExcelProperty({"${title}", "氟化物(mg/L)"}) + private String f; + + /** + * 硒 + */ + @ExcelProperty({"${title}", "硒(mg/L)"}) + private String se; + + /** + * 砷 + */ + @ExcelProperty({"${title}", "砷(mg/L)"}) + private String arsenic; + + /** + * 汞 + */ + @ExcelProperty({"${title}", "汞(mg/L)"}) + private String hg; + + /** + * 镉 + */ + @ExcelProperty({"${title}", "镉(mg/L)"}) + private String cd; + + /** + * 铬 + */ + @ExcelProperty({"${title}", "铬(mg/L)"}) + private String cr; + + /** + * 铅 + */ + @ExcelProperty({"${title}", "铅(mg/L)"}) + private String pb; + + /** + * 氰化物 + */ + @ExcelProperty({"${title}", "氰化物(mg/L)"}) + private String cn; + + /** + * 挥发酚 + */ + @ExcelProperty({"${title}", "挥发酚(mg/L)"}) + private String vlph; + + /** + * 石油类 + */ + @ExcelProperty({"${title}", "石油类(mg/L)"}) + private String oil; + + /** + * 阴离子表面活性剂 + */ + @ExcelProperty({"${title}", "阴离子表面活性剂(mg/L)"}) + private String las; + + /** + * 硫化物 + */ + @ExcelProperty({"${title}", "硫化物(mg/L)"}) + private String s; + + /** + * 大肠菌群数 + */ + @ExcelProperty({"${title}", "大肠菌群数(mg/L)"}) + private String tcg; + + /** + * 浊度 + */ + @ExcelProperty({"${title}", "浊度(NTU)"}) + private String turb; + + /** + * 电导率 + */ + @ExcelProperty({"${title}", "电导率(μs/cm)"}) + private String cond; + + /** + * 高锰酸盐 + */ + @ExcelProperty({"${title}", "高锰酸盐(mg/L)"}) + private String codmn; + + /** + * 叶绿素 + */ + @ExcelProperty({"${title}", "叶绿素(ug/L)"}) + private String chla; + + /** + * 水质类别 + */ + @ExcelProperty({"${title}", "水质类别"}) + private String level; + + /** + * 污染物及超标倍数 + */ + @ExcelProperty({"${title}", "污染物及超标倍数"}) + private String paem; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/PersonnelPlanLogStatisticsVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/PersonnelPlanLogStatisticsVo.java new file mode 100644 index 0000000..07874d5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/PersonnelPlanLogStatisticsVo.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Tag(name = "人员计划日志统计") +@Data +public class PersonnelPlanLogStatisticsVo { + + @Schema(description="实际期数") + private Integer numberOfPeriods1; + + @Schema(description="计划期数") + private Integer numberOfPeriods2; + + @Schema(description="实际人次") + private Integer personNum1; + + @Schema(description="计划人次") + private Integer personNum2; + + + @Schema(description="期数图表数据") + private List list1; + + + @Schema(description="人次图表数据") + private List list2; + + + @Accessors(chain = true) // chain = true 实现链式调用 + @Data + public static class EchartsData{ + @Schema(description="月份") + private Integer month; + +// @Schema(description="实际数据") + @Schema(description="实际人数") + private Integer num1 = 0; + +// @Schema(description="计划数据") + @Schema(description="实际期数") + private Integer num2 = 0; + + @Deprecated + @Schema(description="完成率") + private BigDecimal rate = BigDecimal.ZERO; + } +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/PrePlaceTreeVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/PrePlaceTreeVo.java new file mode 100644 index 0000000..f5258c9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/PrePlaceTreeVo.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.model.PrePlaceDetail; +import lombok.Data; + +import java.util.List; + +@Data +public class PrePlaceTreeVo { + + @JsonSerialize(using = ToStringSerializer.class) + private Long preId; + + private String preName; + + + private List details; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ProfilePressTreeVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ProfilePressTreeVo.java new file mode 100644 index 0000000..b3263bf --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ProfilePressTreeVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/7/10 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class ProfilePressTreeVo { + + @Schema(description="断面编号") + private String profileCode; + + @Schema(description="断面名称") + private String profileName; + + @Schema(description = "测点") + private List children; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ProjectEventsVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ProjectEventsVo.java new file mode 100644 index 0000000..a724ddb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ProjectEventsVo.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.model.FileAssociations; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@ExcelIgnoreUnannotated +public class ProjectEventsVo { + + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + @ExcelIgnore + private Long id; + + @Schema(description="发生日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + @ExcelProperty({"发生日期"}) + @ColumnWidth(20) + @DateTimeFormat(DateFormatString.YYYY_MM_DD) + private Date eventsDate; + + @Schema(description="类型(1大事记 2调度指令 3维修养护 4安全鉴定 5除险加固 6白蚁普查)") + @ExcelIgnore + private Integer type; + + @Schema(description="类型") + @ExcelProperty({"类型"}) + private String typeName; + + @Schema(description="事件内容描述") + @ExcelProperty({"事件内容描述"}) + @ColumnWidth(100) + private String eventsDesc; + + @TableField(exist = false) + @Schema(description = "文件集合") + @ExcelIgnore + private List files; + + + public void setType(Integer type){ + this.type = type; + if (this.type == 1) { + this.typeName = "大事记"; + } else if (this.type == 2) { + this.typeName = "调度记录"; + } else if (this.type == 3) { + this.typeName = "维修养护"; + }else if (this.type == 4) { + this.typeName = "安全鉴定"; + }else if (this.type == 5) { + this.typeName = "除险加固"; + }else if (this.type == 6) { + this.typeName = "白蚁普查"; + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ProjectSafeCalculateVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ProjectSafeCalculateVo.java new file mode 100644 index 0000000..a61b1a8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ProjectSafeCalculateVo.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectSafeCalculateVo { + + private String one; + + private String two; + + private String three; + + private String four; + + private List datas; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ProjectSaveReportVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ProjectSaveReportVo.java new file mode 100644 index 0000000..768b543 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ProjectSaveReportVo.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import lombok.Data; + +import java.util.List; + +@Data +public class ProjectSaveReportVo { + + private String regression; + + private List datas; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/QXWarningVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/QXWarningVo.java new file mode 100644 index 0000000..d3a136b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/QXWarningVo.java @@ -0,0 +1,52 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class QXWarningVo { + + @Schema(description = "是否播放报警声音") + private Boolean play; + + @Schema(description = "生成时间") + private String createTime; + + @Schema(description = "发布时间") + private String publishTime; + + @Schema(description = "起始时间") + private String startTime; + + @Schema(description = "终止时间") + private String endTime; + + @Schema(description = "发布单位") + private String publishUnit; + + @Schema(description = "预警类型") + private String warnSignalType; + + @Schema(description = "预警级别") + private String warnSignalLevel; + + @Schema(description = "区县名称") + private String cnnm; + + @Schema(description = "市名称") + private String ctnm; + + @Schema(description = "预警内容") + private String content; + + @Schema(description = "状态") + private String status; + + @Schema(description = "预警信息id") + private Integer warnid; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RainfallAnalysisVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RainfallAnalysisVo.java new file mode 100644 index 0000000..22df267 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RainfallAnalysisVo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * TODO + * + * @ClassName RainfallAnalysisVo + * @Author Huang Qianxiang + * @Date 2024/3/12 16:24 + */ +@Data +public class RainfallAnalysisVo { + private String stcd; + private String stnm; + private String stlc; + private Double drp; + private String adcd; + private String adnm; + private String basCode; + private String basName; + private String lgtd; + private String lttd; + private String source; + @Schema(description = "降雨分析等级 0: 暴雨 1: 大暴雨 2: 特大暴雨 3: 50年一遇以上 4: 100年一遇以上") + private Integer level; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RealRainListVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RealRainListVo.java new file mode 100644 index 0000000..2075451 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RealRainListVo.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + + +@Data +public class RealRainListVo { + private String stcd; + private String sttp; + private String stnm; + private String stlc; + @Schema(description = "时段雨量(mm)") + private Double drp; + private String adcd; + private String adnm; + private String resCode; + private String resName; + + private String lgtd; + private String lttd; + @Schema(description = "0 离线 1 在线") + private Integer status; + + @Schema(description="降雨量级 0:无降雨 1:小雨 2:中雨 3:大雨 4:暴雨 5:大暴雨 6:特大暴雨") + private Integer rainTag; + @Schema(description = "站点类型") + private String sType; + + + + public void setDrp(Double drp){ + this.drp = drp; + if (this.drp == 0) { + this.rainTag = 0; + } else if (this.drp > 0 && this.drp < 10) { + this.rainTag = 1; + } else if (this.drp >= 10 && this.drp < 25) { + this.rainTag = 2; + } else if (this.drp >= 25 && this.drp < 50) { + this.rainTag = 3; + } else if (this.drp >= 50 && this.drp < 100) { + this.rainTag = 4; + } else if (this.drp >= 100 && this.drp < 250) { + this.rainTag = 5; + } else if (this.drp >= 250) { + this.rainTag = 6; + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RealRainStatListVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RealRainStatListVo.java new file mode 100644 index 0000000..eae1b67 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RealRainStatListVo.java @@ -0,0 +1,44 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * @author Sun Lejun + * @version 1.0 + * @date 2024/3/11 + */ + +@Data +public class RealRainStatListVo { + private String stcd; + private String sttp; + private String stnm; + private String stlc; + private Double h1; + private Double h3; + private Double h6; + private Double h12; + private Double h24; + private Date tm; + private String adcd; + private String adnm; + private String basCode; + private String basName; + private String lgtd; + private String lttd; + private String source; + @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") + private Integer freqH1; + @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") + private Integer freqH3; + @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") + private Integer freqH6; + @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") + private Integer freqH12; + @Schema(description="重现期频率 1:5~10年一遇 2:10~20年一遇 3:20~50年一遇 4:50~100年一遇 5:超100年一遇") + private Integer freqH24; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ResBriefVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ResBriefVo.java new file mode 100644 index 0000000..a3f0d2e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ResBriefVo.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.ResBriefR; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author lyf + * @since 2025-04-25 + */ +@Data +public class ResBriefVo extends ResBriefR { + + + @Data + public static class PptnVo { + private String stcd; + private String stnm; + private BigDecimal drp24Sum; + private BigDecimal drp24Max; + private Date maxTm; + } + + @Data + public static class RsvrVo { + private String stcd; + private String stnm; + private BigDecimal rz8; + private BigDecimal rzYesterday8; + private BigDecimal w; + } +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ResWarnVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ResWarnVo.java new file mode 100644 index 0000000..527ab16 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ResWarnVo.java @@ -0,0 +1,19 @@ +package com.gunshi.project.ss.entity.vo; + + +import lombok.Data; + +import java.util.List; + +@Data +public class ResWarnVo { + + + private List calFloodLevList; + + private List desFloodLevList; + + private List aboutAFsltdzList; + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ResWarningVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ResWarningVo.java new file mode 100644 index 0000000..0b41e30 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ResWarningVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ResWarningVo { + + @Schema(description = "站点编码") + private String stcd; + + @Schema(description = "站点名称") + private String stnm; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + + private BigDecimal afsltdz; + + private BigDecimal rz; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RescueTeamVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RescueTeamVo.java new file mode 100644 index 0000000..3d85c7b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RescueTeamVo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.RescueTeamB; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +@EqualsAndHashCode(callSuper = true) +@Data +public class RescueTeamVo extends RescueTeamB { + + /** + * 人员总数 + */ + @Schema(description="人员总数") + private Integer personCount; + + /** + * 是否有效 + */ + @Schema(description = "是否有效(0 否 1 是)") + private Integer isValid; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RiceRqWaterCaculateVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RiceRqWaterCaculateVo.java new file mode 100644 index 0000000..a5bb171 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RiceRqWaterCaculateVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.gunshi.project.ss.model.RiceGrowConfig; +import com.gunshi.project.ss.model.RiceWaterForecastCycle; +import com.gunshi.project.ss.model.RiceWaterForecastMonth; +import com.gunshi.project.ss.model.RiceWaterKi; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class RiceRqWaterCaculateVo { + + + private List riceWaterKis;// 灌水定额配置 + + private List riceWaterForecastCycles;//周期数据 + + private List riceWaterForecastMonths;//月份数据 + + private BigDecimal irrigationCycleTotalUse;//按年份统计总水量 + + private BigDecimal irrigationMonthTotalUse;//按月份统计总水量 + + private RiceGrowConfig riceGrowConfig;//水稻生长参数配置表 +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RiverWarningVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RiverWarningVo.java new file mode 100644 index 0000000..322e6a8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RiverWarningVo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RiverWarningVo { + @Schema(description = "站点编码") + private String stcd; + + @Schema(description = "站点名称") + private String stnm; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "告警内容") + private String rzWarn; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RjswNbStatVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RjswNbStatVo.java new file mode 100644 index 0000000..844c5de --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RjswNbStatVo.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class RjswNbStatVo { + + @Schema(description="最高水位") + private BigDecimal max; + + @Schema(description="最低水位") + private BigDecimal min; + + @Schema(description="平均水位") + private BigDecimal avg; + + @Schema(description = "统计数据") + private List list; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RjswNbVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RjswNbVo.java new file mode 100644 index 0000000..1c5491e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RjswNbVo.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +@Data +@ExcelIgnoreUnannotated +public class RjswNbVo{ + + + @ExcelProperty({"${title}","日期"}) + @ColumnWidth(15) + private String theme; + + @ExcelProperty({"${title}","日期"}) + @ColumnWidth(15) + private String date; + + @ExcelProperty({"${title}","一月"}) + private String drpM1; + + + @ExcelProperty({"${title}","二月"}) + private String drpM2; + + + @ExcelProperty({"${title}","三月"}) + private String drpM3; + + + @ExcelProperty({"${title}","四月"}) + private String drpM4; + + + @ExcelProperty({"${title}","五月"}) + private String drpM5; + + + @ExcelProperty({"${title}","六月"}) + private String drpM6; + + + @ExcelProperty({"${title}","七月"}) + private String drpM7; + + + @ExcelProperty({"${title}","八月"}) + private String drpM8; + + + @ExcelProperty({"${title}","九月"}) + private String drpM9; + + + @ExcelProperty({"${title}","十月"}) + private String drpM10; + + + @ExcelProperty({"${title}","十一月"}) + private String drpM11; + + + @ExcelProperty({"${title}","十二月"}) + private String drpM12; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RjyNbStatVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RjyNbStatVo.java new file mode 100644 index 0000000..33a4e75 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RjyNbStatVo.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class RjyNbStatVo { + + @Schema(description="降水量") + private BigDecimal drpSum; + + @Schema(description="降雨日数") + private Long dayCount; + + @Schema(description = "统计数据") + private List list; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RjyNbVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RjyNbVo.java new file mode 100644 index 0000000..80b4da6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RjyNbVo.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +@Data +@ExcelIgnoreUnannotated +public class RjyNbVo { + + + @ExcelProperty({"${title}","日期"}) + @ColumnWidth(15) + private String date; + + @ExcelProperty({"${title}","一月"}) + private String drpM1; + + + @ExcelProperty({"${title}","二月"}) + private String drpM2; + + + @ExcelProperty({"${title}","三月"}) + private String drpM3; + + + @ExcelProperty({"${title}","四月"}) + private String drpM4; + + + @ExcelProperty({"${title}","五月"}) + private String drpM5; + + + @ExcelProperty({"${title}","六月"}) + private String drpM6; + + + @ExcelProperty({"${title}","七月"}) + private String drpM7; + + + @ExcelProperty({"${title}","八月"}) + private String drpM8; + + + @ExcelProperty({"${title}","九月"}) + private String drpM9; + + + @ExcelProperty({"${title}","十月"}) + private String drpM10; + + + @ExcelProperty({"${title}","十一月"}) + private String drpM11; + + + @ExcelProperty({"${title}","十二月"}) + private String drpM12; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RotaVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RotaVo.java new file mode 100644 index 0000000..7fc1a8f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RotaVo.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.util.excel.LengthValid; +import lombok.Data; + +import java.util.Date; + + +@Data +@ExcelIgnoreUnannotated +public class RotaVo { + private static final long serialVersionUID = 1L; + + /** + * 值班开始时间 + */ + @ExcelProperty({"${title}","值班开始时间"}) + @ColumnWidth(25) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stm; + + /** + * 值班结束时间 + */ + @ExcelProperty({"${title}","值班结束时间"}) + @ColumnWidth(25) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etm; + + /** + * 值班领导手机号 + */ + @LengthValid(length = 11,msg = "值班领导手机号长度不等于11!") + @ColumnWidth(25) + @ExcelProperty({"${title}","值班领导手机号"}) + private String leaderPhone; + + /** + * 值班人员手机号 + */ + @LengthValid(length = 11,msg = "值班人员手机号长度不等于11!") + @ColumnWidth(25) + @ExcelProperty({"${title}","值班人员手机号"}) + private String dutyPhone; + + private String errorMsg; + + private Long leaderUserId; + + private Long dutyUserId; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/RsvrComplexVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/RsvrComplexVo.java new file mode 100644 index 0000000..88284e3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/RsvrComplexVo.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.entity.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author lyf + * @since 2025-04-08 + */ +@Data +@NoArgsConstructor +@RequiredArgsConstructor(staticName = "of") +public class RsvrComplexVo { + @NonNull + public BigDecimal rz; + @NonNull + public Date tm; + /** + * 水位查表流量 + */ + public BigDecimal q; + /** + * spilled volume 溢洪量,根据流量和时间乘算 + */ + public BigDecimal sv; + /** + * 水位查表库容 + */ + public BigDecimal w; + + public BigDecimal totalSv; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/SKWarningVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/SKWarningVo.java new file mode 100644 index 0000000..13b0894 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/SKWarningVo.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.entity.vo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SKWarningVo { + + @Schema(description = "站点编码") + private String stcd; + + @Schema(description = "站点名称") + private String stnm; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "告警内容") + private String rzWarn; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/SdJyRbVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/SdJyRbVo.java new file mode 100644 index 0000000..531c160 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/SdJyRbVo.java @@ -0,0 +1,176 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ExcelIgnoreUnannotated +public class SdJyRbVo { + + + /** + * 日期 + */ + @ExcelProperty({"${title}","日期"}) + @ColumnWidth(15) + private String date; + + /** + * 第9小时降水量 + */ + @ExcelProperty({"${title}","9时"}) + private BigDecimal drpH9; + + /** + * 第10小时降水量 + */ + @ExcelProperty({"${title}","10时"}) + private BigDecimal drpH10; + + /** + * 第11小时降水量 + */ + @ExcelProperty({"${title}","11时"}) + private BigDecimal drpH11; + + /** + * 第12小时降水量 + */ + @ExcelProperty({"${title}","12时"}) + private BigDecimal drpH12; + + /** + * 第13小时降水量 + */ + @ExcelProperty({"${title}","13时"}) + private BigDecimal drpH13; + + /** + * 第14小时降水量 + */ + @ExcelProperty({"${title}","14时"}) + private BigDecimal drpH14; + + /** + * 第15小时降水量 + */ + @ExcelProperty({"${title}","15时"}) + private BigDecimal drpH15; + + /** + * 第16小时降水量 + */ + @ExcelProperty({"${title}","16时"}) + private BigDecimal drpH16; + + /** + * 第17小时降水量 + */ + @ExcelProperty({"${title}","17时"}) + private BigDecimal drpH17; + + /** + * 第18小时降水量 + */ + @ExcelProperty({"${title}","18时"}) + private BigDecimal drpH18; + + /** + * 第19小时降水量 + */ + @ExcelProperty({"${title}","19时"}) + private BigDecimal drpH19; + + /** + * 第20小时降水量 + */ + @ExcelProperty({"${title}","20时"}) + private BigDecimal drpH20; + + /** + * 第21小时降水量 + */ + @ExcelProperty({"${title}","21时"}) + private BigDecimal drpH21; + + /** + * 第22小时降水量 + */ + @ExcelProperty({"${title}","22时"}) + private BigDecimal drpH22; + + /** + * 第23小时降水量 + */ + @ExcelProperty({"${title}","23时"}) + private BigDecimal drpH23; + + /** + * 第24小时降水量 + */ + @ExcelProperty({"${title}","24时"}) + private BigDecimal drpH24; + + + /** + * 第1小时降水量 + */ + @ExcelProperty({"${title}","1时"}) + private BigDecimal drpH1; + + /** + * 第2小时降水量 + */ + @ExcelProperty({"${title}","2时"}) + private BigDecimal drpH2; + + /** + * 第3小时降水量 + */ + @ExcelProperty({"${title}","3时"}) + private BigDecimal drpH3; + + /** + * 第4小时降水量 + */ + @ExcelProperty({"${title}","4时"}) + private BigDecimal drpH4; + + /** + * 第5小时降水量 + */ + @ExcelProperty({"${title}","5时"}) + private BigDecimal drpH5; + + /** + * 第6小时降水量 + */ + @ExcelProperty({"${title}","6时"}) + private BigDecimal drpH6; + + /** + * 第7小时降水量 + */ + @ExcelProperty({"${title}","7时"}) + private BigDecimal drpH7; + + /** + * 第8小时降水量 + */ + @ExcelProperty({"${title}","8时"}) + private BigDecimal drpH8; + + /** + * 日降水量 + */ + @ExcelProperty({"${title}","日累计"}) + @ColumnWidth(15) + private BigDecimal drpD; + + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/SdSwRbVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/SdSwRbVo.java new file mode 100644 index 0000000..f0d69f6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/SdSwRbVo.java @@ -0,0 +1,176 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ExcelIgnoreUnannotated +public class SdSwRbVo { + + + /** + * 日期 + */ + @ExcelProperty({"${title}","日期"}) + @ColumnWidth(15) + private String date; + + /** + * 第0小时水位 + */ + @ExcelProperty({"${title}","0时"}) + private BigDecimal rzH24; + + + /** + * 第1小时水位 + */ + @ExcelProperty({"${title}","1时"}) + private BigDecimal rzH1; + + /** + * 第2小时水位 + */ + @ExcelProperty({"${title}","2时"}) + private BigDecimal rzH2; + + /** + * 第3小时水位 + */ + @ExcelProperty({"${title}","3时"}) + private BigDecimal rzH3; + + /** + * 第4小时水位 + */ + @ExcelProperty({"${title}","4时"}) + private BigDecimal rzH4; + + /** + * 第5小时水位 + */ + @ExcelProperty({"${title}","5时"}) + private BigDecimal rzH5; + + /** + * 第6小时水位 + */ + @ExcelProperty({"${title}","6时"}) + private BigDecimal rzH6; + + /** + * 第7小时水位 + */ + @ExcelProperty({"${title}","7时"}) + private BigDecimal rzH7; + + /** + * 第8小时水位 + */ + @ExcelProperty({"${title}","8时"}) + private BigDecimal rzH8; + + /** + * 第9小时水位 + */ + @ExcelProperty({"${title}","9时"}) + private BigDecimal rzH9; + + /** + * 第10小时水位 + */ + @ExcelProperty({"${title}","10时"}) + private BigDecimal rzH10; + + /** + * 第11小时水位 + */ + @ExcelProperty({"${title}","11时"}) + private BigDecimal rzH11; + + /** + * 第12小时水位 + */ + @ExcelProperty({"${title}","12时"}) + private BigDecimal rzH12; + + /** + * 第13小时水位 + */ + @ExcelProperty({"${title}","13时"}) + private BigDecimal rzH13; + + /** + * 第14小时水位 + */ + @ExcelProperty({"${title}","14时"}) + private BigDecimal rzH14; + + /** + * 第15小时水位 + */ + @ExcelProperty({"${title}","15时"}) + private BigDecimal rzH15; + + /** + * 第16小时水位 + */ + @ExcelProperty({"${title}","16时"}) + private BigDecimal rzH16; + + /** + * 第17小时水位 + */ + @ExcelProperty({"${title}","17时"}) + private BigDecimal rzH17; + + /** + * 第18小时水位 + */ + @ExcelProperty({"${title}","18时"}) + private BigDecimal rzH18; + + /** + * 第19小时水位 + */ + @ExcelProperty({"${title}","19时"}) + private BigDecimal rzH19; + + /** + * 第20小时水位 + */ + @ExcelProperty({"${title}","20时"}) + private BigDecimal rzH20; + + /** + * 第21小时水位 + */ + @ExcelProperty({"${title}","21时"}) + private BigDecimal rzH21; + + /** + * 第22小时水位 + */ + @ExcelProperty({"${title}","22时"}) + private BigDecimal rzH22; + + /** + * 第23小时水位 + */ + @ExcelProperty({"${title}","23时"}) + private BigDecimal rzH23; + + + + /** + * 日平均 + */ + @ExcelProperty({"${title}","平均"}) + @ColumnWidth(15) + private BigDecimal rzAvg; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/SoilMoistureVO.java b/src/main/java/com/gunshi/project/ss/entity/vo/SoilMoistureVO.java new file mode 100644 index 0000000..9bb448e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/SoilMoistureVO.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class SoilMoistureVO { + + private String stcd; + + private BigDecimal currVal; + + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + private BigDecimal nearWeekValMax; + private BigDecimal nearWeekValMin; + + private BigDecimal nearMonthValMax; + private BigDecimal nearMonthValMin; + + private BigDecimal nearThreeMonthValMax; + private BigDecimal nearThreeMonthValMin; + + private BigDecimal nearSixMonthValMax; + private BigDecimal nearSixMonthValMin; + + private BigDecimal nearYearValMax; + private BigDecimal nearYearValMin; + + private BigDecimal currWeekValMax; + private BigDecimal currWeekValMin; + + private BigDecimal currMonthValMax; + private BigDecimal currMonthValMin; + + private BigDecimal currYearValMax; + private BigDecimal currYearValMin; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StAddvcdTreeVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StAddvcdTreeVo.java new file mode 100644 index 0000000..69c2936 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StAddvcdTreeVo.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.StAddvcdD; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/4/7 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class StAddvcdTreeVo extends StAddvcdD { + + @Schema(description = "行政区划数组") + private List children; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StFlowRVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StFlowRVo.java new file mode 100644 index 0000000..6eca59b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StFlowRVo.java @@ -0,0 +1,58 @@ +package com.gunshi.project.ss.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.project.ss.model.ResMonthEcoFlow; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 水厂流量表 (灌溉流量/水厂流量) + */ + +@Data +public class StFlowRVo { + + @TableId(value = "id") + @Schema(description = "Id") + private Long id; + + + @TableField(value = "stcd") + @Schema(description = "站点编码") + private String stcd; + + @TableField(value = "tm") + @Schema(description = "观测时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime tm; + + @TableField(value = "inq") + private BigDecimal inq; + + @TableField(value = "q") + @Schema(description = "流量") + private BigDecimal q; + + @TableField(value = "otq") + private BigDecimal otq; + + @TableField(value = "crtime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime crtime; + + @Schema(description = "水量") + @TableField(exist = false) + private BigDecimal v; + + @Schema(description = "站点类型") + @TableField(exist = false) + private String sttp; + + @TableField(exist = false) + private ResMonthEcoFlow resMonthEcoFlow; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StPptnDetailsVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StPptnDetailsVo.java new file mode 100644 index 0000000..00a703a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StPptnDetailsVo.java @@ -0,0 +1,46 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.StPptnRReal; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * TODO + * + * @ClassName StPptnDetailsVo + * @Author Huang Qianxiang + * @Date 2024/2/23 10:53 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class StPptnDetailsVo extends StPptnRReal { + + @Schema(description="昨日降雨量") + private BigDecimal yesterdayDrp; + + @Schema(description="本月降雨量") + private BigDecimal monthDrp; + + @Schema(description="本年降雨量") + private BigDecimal yearDrp; + + @Schema(description="本年降雨天数") + private Long yearDrpDay; + + @Schema(description="本年天数") + private Long yearDay; + + @Schema(description="本年最大日雨量") + private BigDecimal maxDrp; + + @Schema(description="本年最大日雨量时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date maxDrpTime; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StPptnVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StPptnVo.java new file mode 100644 index 0000000..f00b3b9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StPptnVo.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * TODO + * + * @ClassName StPptnVo + * @Author Huang Qianxiang + * @Date 2024/2/23 9:51 + */ +@Data +public class StPptnVo { + + /** + * 时段降雨量对应的时间 + */ + @Schema(description = "时段降雨量对应的时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date time; + + /** + * 选择时段降雨量 + */ + @Schema(description = "选择时段降雨量") + private BigDecimal sumDrp; + + @Schema(description = "时间格式化字符串") + private String timeStr; + + @Schema(description = "个数") + private Integer count; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StRsvrVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StRsvrVo.java new file mode 100644 index 0000000..9526d20 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StRsvrVo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.common.model.StRsvrR; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 水库水情 + * Created by wanyan on 2024/2/20 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class StRsvrVo { + + @Schema(description = "汛限水位") + private BigDecimal flLowLimLev; + + @Schema(description = "库水位") + private List list; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StStatusListVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StStatusListVo.java new file mode 100644 index 0000000..d53ef94 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StStatusListVo.java @@ -0,0 +1,49 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class StStatusListVo { + + @Schema(description = "在线个数") + private Integer onlineCount; + + @Schema(description = "离线个数") + private Integer offLineCount; + + @Schema(description = "报到率") + private BigDecimal reportPercentage; + + + @Schema(description = "雨量站") + private List rainStationList; + + + @Schema(description = "水库水位站") + private List rsvrStationList; + + + @Schema(description = "河道水位站") + private List riverStationList; + + + @Schema(description = "流量站") + private List flowStationList; + + @Schema(description = "视频站") + private List cctvStationList; + + @Schema(description = "渗压") + private List syStationList; + + @Schema(description = "渗流") + private List slStationList; + + @Schema(description = "位移") + private List wyStationList; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StStatusVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StStatusVo.java new file mode 100644 index 0000000..17829f5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StStatusVo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class StStatusVo { + + @Schema(description = "最后数据时间") + private String tm; + + @Schema(description = "测站编码") + private String stcd; + + @Schema(description = "测站名称") + private String stnm; + + @Schema(description = "经度") + private BigDecimal lgtd; + + @Schema(description = "纬度") + private BigDecimal lttd; + + @Schema(description = "状态 0 离线 1在线") + private Integer status; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StStbprpCctvVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StStbprpCctvVo.java new file mode 100644 index 0000000..60e04ac --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StStbprpCctvVo.java @@ -0,0 +1,18 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.StStbprpCctv; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class StStbprpCctvVo extends StStbprpCctv { + + @Schema(description="站点名称") + private String stnm; + + @Schema(description="视频名称") + private String name; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRRVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRRVo.java new file mode 100644 index 0000000..4978f26 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRRVo.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class StWaterRRVo extends GenericPageParams { + + @TableField(exist = false) + @Schema(description = "干渠1灌溉供水总合计") + private BigDecimal mci1VSum = BigDecimal.ZERO; + + + @TableField(exist = false) + @Schema(description = "干渠2灌溉供水总合计") + private BigDecimal mci2VSum = BigDecimal.ZERO; + + @TableField(exist = false) + @Schema(description = "生态供水合计") + private BigDecimal ecologyVSum = BigDecimal.ZERO; + + @TableField(exist = false) + @Schema(description = "供水总合计") + private BigDecimal totalSum = BigDecimal.ZERO; + + +// List list; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRReorganizeVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRReorganizeVo.java new file mode 100644 index 0000000..40379f9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRReorganizeVo.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.entity.vo; + +import java.math.BigDecimal; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; + +import lombok.Data; + +/** +*@description +*@author cxw +*@classname StWaterRReorganizeVo.java +*@create 2024-07-24, 周三, 11:51:01 +*/ +@Data +@ExcelIgnoreUnannotated +public class StWaterRReorganizeVo { + + @ExcelProperty({"${title}", "时间"}) + @ColumnWidth(15) + private String tm; + + /** + * 流量(生态供水) + */ + @ExcelProperty({"${title}", "生态供水", "流量(m³/s)"}) + private BigDecimal ecologyQ; + + /** + * 水量(生态供水) + */ + @ExcelProperty({"${title}", "生态供水", "水量(万m³)"}) + private BigDecimal ecologyV; + + /** + * 干渠灌溉流量1 + */ + @ExcelProperty({"${title}", "干渠灌溉流量1", "流量(m³/s)"}) + private BigDecimal mci1Q; + + /** + * 干渠灌溉水量1 + */ + @ExcelProperty({"${title}", "干渠灌溉水量1", "水量(万m³)"}) + private BigDecimal mci1V; + + /** + * 干渠灌溉流量1 + */ + @ExcelProperty({"${title}", "干渠灌溉流量2", "流量(m³/s)"}) + private BigDecimal mci2Q; + + /** + * 干渠灌溉水量1 + */ + @ExcelProperty({"${title}", "干渠灌溉水量2", "水量(万m³)"}) + private BigDecimal mci2V; + + /** + * 水量小计 + */ + @ExcelProperty({"${title}", "小计(万m³)"}) + private BigDecimal sumV; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRReorganizeYearVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRReorganizeYearVo.java new file mode 100644 index 0000000..e944a55 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRReorganizeYearVo.java @@ -0,0 +1,166 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** +*@description +*@author cxw +*@classname StWaterRReorganizeYearVo.java +*@create 2024-07-24, 周三, 14:28:34 +*/ +@Data +@ExcelIgnoreUnannotated +public class StWaterRReorganizeYearVo { + + @Schema(description="时间") + @ExcelProperty({"${title}", "时间"}) + private String tm; + + /** + * 年度占比(干渠灌溉1) + */ + @Schema(description="年度占比(干渠灌溉1)") + @ExcelProperty({"${title}", "干渠灌溉1", "年度占比"}) + private String mci1YearRateV; + + /** + * 水量(干渠灌溉1) + */ + @Schema(description="水量(干渠灌溉1)") + @ExcelProperty({"${title}", "干渠灌溉1", "水量"}) + private String mci1V; + + /** + * 同比(干渠灌溉1) + */ + @Schema(description="同比(干渠灌溉1)") + @ExcelProperty({"${title}", "干渠灌溉1", "同比"}) + private String mci1YoyV; + + /** + * 环比(干渠灌溉1) + */ + @Schema(description="环比(干渠灌溉1)") + @ExcelProperty({"${title}", "干渠灌溉1", "环比"}) + private String mci1QoqV; + + /** + * 年度占比(干渠灌溉2) + */ + @Schema(description="年度占比(干渠灌溉2)") + @ExcelProperty({"${title}", "干渠灌溉2", "年度占比"}) + private String mci2YearRateV; + + /** + * 水量(干渠灌溉2) + */ + @Schema(description="水量(干渠灌溉2)") + @ExcelProperty({"${title}", "干渠灌溉2", "水量"}) + private String mci2V; + + /** + * 同比(干渠灌溉2) + */ + @Schema(description="同比(干渠灌溉2)") + @ExcelProperty({"${title}", "干渠灌溉2", "同比"}) + private String mci2YoyV; + + /** + * 环比(干渠灌溉2) + */ + @Schema(description="环比(干渠灌溉2)") + @ExcelProperty({"${title}", "干渠灌溉2", "环比"}) + private String mci2QoqV; + + /** + * 年度占比(生态供水) + */ + @Schema(description="年度占比(生态供水)") + @ExcelProperty({"${title}", "生态供水", "年度占比"}) + private String ecologyYearRateV; + + /** + * 水量(生态供水) + */ + @Schema(description="水量(生态供水)") + @ExcelProperty({"${title}", "生态供水", "水量"}) + private String ecologyV; + + /** + * 同比(生态供水) + */ + @Schema(description="同比(生态供水)") + @ExcelProperty({"${title}", "生态供水", "同比"}) + private String ecologyYoyV; + + /** + * 环比(生态供水) + */ + @Schema(description="环比(生态供水)") + @ExcelProperty({"${title}", "生态供水", "环比"}) + private String ecologyQoqV; + +// @Schema(description="时间") +// @ExcelProperty({"${title}", "时间"}) +// private String tm; +// +// /** +// * 年度占比(生态供水) +// */ +// @Schema(description="年度占比(生态供水)") +// @ExcelProperty({"${title}", "生态供水", "年度占比"}) +// private String ecologyYearRateV; +// +// /** +// * 水量(生态供水) +// */ +// @Schema(description="水量(生态供水)") +// @ExcelProperty({"${title}", "生态供水", "水量"}) +// private String ecologyV; +// +// /** +// * 同比(生态供水) +// */ +// @Schema(description="同比(生态供水)") +// @ExcelProperty({"${title}", "生态供水", "同比"}) +// private String ecologyYoyV; +// +// /** +// * 环比(生态供水) +// */ +// @Schema(description="环比(生态供水)") +// @ExcelProperty({"${title}", "生态供水", "环比"}) +// private String ecologyQoqV; +// +// /** +// * 年度占比(生活供水) +// */ +// @Schema(description="年度占比(生活供水)") +// @ExcelProperty({"${title}", "生活供水", "年度占比"}) +// private String lifeYearRateV; +// +// /** +// * 水量(生活供水) +// */ +// @Schema(description="水量(生活供水)") +// @ExcelProperty({"${title}", "生活供水", "水量"}) +// private String lifeV; +// +// /** +// * 同比(生活供水) +// */ +// @Schema(description="同比(生活供水)") +// @ExcelProperty({"${title}", "生活供水", "同比"}) +// private String lifeYoyV; +// +// /** +// * 环比(生活供水) +// */ +// @Schema(description="环比(生活供水)") +// @ExcelProperty({"${title}", "生活供水", "环比"}) +// private String lifeQoqV; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRVo.java new file mode 100644 index 0000000..f08797d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StWaterRVo.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.entity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author cxw + * @description: (描述这个类或者方法的作用) + * @classname StWaterRVo.java + * @create 2024-07-10, 星期三, 10:26:04 + */ +@Data +@ExcelIgnoreUnannotated +public class StWaterRVo { + + @ExcelProperty({"${title}", "站码"}) + @ColumnWidth(15) + private String stcd; + + @ExcelProperty({"${title}", "时间"}) + @ColumnWidth(15) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + @ExcelProperty({"${title}", "流量(m³/s)"}) + private BigDecimal q; + + @ExcelProperty({"${title}", "水量(m³)"}) + private BigDecimal v; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBCount24Vo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBCount24Vo.java new file mode 100644 index 0000000..1587be5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBCount24Vo.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class StZqrlBCount24Vo { + private String stcd; + + private BigDecimal currWaterLevel; + + private BigDecimal flowNum; + + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + private BigDecimal sum24; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBCountVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBCountVo.java new file mode 100644 index 0000000..16bae57 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBCountVo.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class StZqrlBCountVo { + @Schema(description = "站点编码") + private String stcd; + + @Schema(description = "当前溢洪流量") + private BigDecimal val; //溢洪流量 + + @Schema(description = "当日溢洪流量") + private BigDecimal currDayValSum; //当日溢洪流量 + + @Schema(description = "数据更新时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @Schema(description = "当月溢洪流量") + private BigDecimal currMonthSum;// 当月溢洪流量 + + @Schema(description = "当年溢洪流量") + private BigDecimal currYearSum; // 当年溢洪流量 + + @Schema(description = "本年溢洪次数") + private Long currYearCount; // 本年溢洪次数 + + @Schema(description = "本年单次最大溢洪量") + private BigDecimal currYearMaxVal; // 本年单次最大溢洪量 + + @Schema(description = "最大溢洪量时间段") + private String maxOverflowPeriod; // 本年最大溢洪量时间段 + + + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBVo.java new file mode 100644 index 0000000..aa42ed5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StZqrlBVo.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class StZqrlBVo { + + private String stcd; + + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + //水位 + private BigDecimal waterLevel; + + //溢洪量 + private BigDecimal flowNum; + + //库容 + private BigDecimal boxNum; + + + @Schema(description="累计溢洪量") + @TableField(exist = false) + private BigDecimal qtotal; + + public LocalDateTime getModitimeAsLocalDateTime() { + if (tm == null) { + return null; + } + return tm.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/StatusCountVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/StatusCountVo.java new file mode 100644 index 0000000..6ff849e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/StatusCountVo.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.entity.vo; + +import lombok.Data; + +@Data +public class StatusCountVo { + private Integer status; + private Integer count; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/SyStcdMpcdVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/SyStcdMpcdVo.java new file mode 100644 index 0000000..ac16afe --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/SyStcdMpcdVo.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.entity.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class SyStcdMpcdVo { + + private String stcd; + + private List mpcdList; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/SzCaseStatisticsVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/SzCaseStatisticsVo.java new file mode 100644 index 0000000..8d2db6e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/SzCaseStatisticsVo.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SzCaseStatisticsVo { + + @Schema(description="月份") + private Integer month; + + @Schema(description="类型") + private Integer type; + + @Schema(description="数量") + private Integer count; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/TyYearRainfallVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/TyYearRainfallVo.java new file mode 100644 index 0000000..3d61d12 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/TyYearRainfallVo.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.entity.vo; + +import com.gunshi.project.ss.model.TyYearRainfall; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/7/15 + * + * @author wanyan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class TyYearRainfallVo extends TyYearRainfall { + + @Schema(description = "月降雨量") + private List list; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/UserRoleVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/UserRoleVo.java new file mode 100644 index 0000000..ca9071a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/UserRoleVo.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.entity.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class UserRoleVo { + + List docSysRoles; + + List docSysDeptUsers; +} + + diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/WarningData.java b/src/main/java/com/gunshi/project/ss/entity/vo/WarningData.java new file mode 100644 index 0000000..124864e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/WarningData.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * @Author xusan + * @Date 2023/7/4 10:28 + * @Notes + **/ +@Data +public class WarningData { + + @Schema(description = "服务名") + private String effectArea; + + @Schema(description = "预警信息列表") + private List typeList; + + + @Data + public static class TypeList { + + @Schema(description = "预警信息详情") + private List warnList; + + @Schema(description = "预警信号") + private String type; + + } + + @Data + public static class Warning { + + @Schema(description = "ID") + private int id; + + @Schema(description = "创建时间") + private String createTime; + + @Schema(description = "发布时间") + private String publishTime; + + @Schema(description = "预警开始时间") + private String startTime; + + @Schema(description = "预警结束时间") + private String endTime; + + @Schema(description = "预警类型") + private String warnSignalType; + + @Schema(description = "预警级别") + private String warnSignalLevel; + + @Schema(description = "预警地区") + private String effectArea; + + @Schema(description = "发布单位") + private String publishUnit; + + @Schema(description = "预警内容") + private String content; + + } +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/WaterAlarmCount.java b/src/main/java/com/gunshi/project/ss/entity/vo/WaterAlarmCount.java new file mode 100644 index 0000000..b702cac --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/WaterAlarmCount.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.entity.vo; + +import lombok.Data; + +@Data +public class WaterAlarmCount { + + private String year; + + private String month; + + private String alarmCount; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/WaterAlarmTypeCount.java b/src/main/java/com/gunshi/project/ss/entity/vo/WaterAlarmTypeCount.java new file mode 100644 index 0000000..4e7fb05 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/WaterAlarmTypeCount.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.entity.vo; + +import lombok.Data; + +@Data +public class WaterAlarmTypeCount { + + private Integer year; + + private Integer type; + + private Integer count; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/WaterAnalysisVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/WaterAnalysisVo.java new file mode 100644 index 0000000..3531695 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/WaterAnalysisVo.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.entity.vo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class WaterAnalysisVo { + + + @Schema(description = "用水类型 0灌溉 1生态") + private Integer type; + + @Schema(description = "计划供水量") + private BigDecimal planSupply; + + @Schema(description = "实际供水量") + private BigDecimal realSupply; + + @Schema(description = "偏差量") + private BigDecimal gapSupply; + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/WaterCapacityAnalysisVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/WaterCapacityAnalysisVo.java new file mode 100644 index 0000000..702a48d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/WaterCapacityAnalysisVo.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class WaterCapacityAnalysisVo { + + @Schema(description = "时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date tm; + + @Schema(description = "蓄水量") + private BigDecimal cap; + + @Schema(description = "变化率") + private BigDecimal rate; +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/WdCountVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/WdCountVo.java new file mode 100644 index 0000000..1a59c34 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/WdCountVo.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "水量调度年度完成次数返回Vo") +public class WdCountVo { + + @Schema(description = "年份") + private String year; + + @Schema(description = "完成数量") + private Integer count; +} diff --git a/src/main/java/com/gunshi/project/ss/grb/RainGrib2Layer.java b/src/main/java/com/gunshi/project/ss/grb/RainGrib2Layer.java new file mode 100644 index 0000000..334eb20 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/grb/RainGrib2Layer.java @@ -0,0 +1,155 @@ +package com.gunshi.project.ss.grb; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Description: + * Created by wanyan on 2024/2/23 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class RainGrib2Layer { + + @Schema(description = "tmRange") + private TmRange tmRange; + + @Schema(description = "data") + public BigDecimal[][] data; + + @Schema(description = "图片base64数据") + private String base64; + + @Schema(description = "x1") + private BigDecimal x1; + + @Schema(description = "x2") + private BigDecimal x2; + + @Schema(description = "y1") + private BigDecimal y1; + + @Schema(description = "y2") + private BigDecimal y2; + + @Schema(description = "dw") + private BigDecimal dw; + + @Schema(description = "dh") + private BigDecimal dh; + + @Schema(description = "nw") + private int nw; + + @Schema(description = "nh") + private int nh; + +// public RainGrib2Layer createSubset(Double bx1, Double by1, Double bx2, Double by2) { +// int ix1 = 0, ix2 = nw - 1, iy1 = 0, iy2 = nh - 1; +// if (bx1 != null && bx1 > x1) { +// ix1 = (int)((nw - 1) * (bx1 - x1) / (x2 - x1)); +// } +// if (by1 != null && by1 > y1) { +// iy1 = (int)((nh - 1) * (by1 - y1) / (y2 - y1)); +// } +// if (bx2 != null && bx2 < x2) { +// ix2 = (int)Math.ceil((nw - 1) * (bx2 - x1) / (x2 - x1)); +// } +// if (by2 != null && by2 < y2) { +// iy2 = (int)Math.ceil((nh - 1) * (by2 - y1) / (y2 - y1)); +// } +// +// RainGrib2Layer ret = new RainGrib2Layer(); +// +// ret.tmRange = (TmRange) tmRange.clone(); +// ret.x1 = x1 + ix1 * dw; +// ret.y1 = y1 + iy1 * dh; +// ret.x2 = x1 + ix2 * dw; +// ret.y2 = y1 + iy2 * dh; +// ret.nw = ix2 - ix1 + 1; +// ret.nh = iy2 - iy1 + 1; +// ret.dw = dw; +// ret.dh = dh; +// ret.data = new float[ret.nh][ret.nw]; +// for (int iy = iy1; iy <= iy2; iy += 1) { +// for (int ix = ix1; ix <= ix2; ix += 1) { +// ret.data[iy - iy1][ix - ix1] = data[iy][ix]; +// } +// } +// +// return ret; +// } +// +// boolean setContent(Grib2FrameParams frame, Grib2LayerParams layer, byte[] bin) { +// if (layer.calDataLen() != bin.length) { +// return false; +// } +// +// x1 = frame.x1; +// x2 = frame.x2; +// y1 = frame.y1; +// y2 = frame.y2; +// nw = frame.nw; +// nh = frame.nh; +// dw = frame.dw; +// dh = frame.dh; +// tmRange = (TmRange) layer.tmRange.clone(); +// data = new float[nh][nw]; +// +// float decimalScale = layer.getDecimalScale(); +// float binaryScale = layer.getBinaryScale(); +// +// boolean constValue = layer.numBits == 0; +// float RValue = layer.R; +// +// try { +// BitInputStream bis = new BitInputStream(new ByteArrayInputStream(bin),null); +// for (int iy = 0; iy < nh; iy++) { +// for (int ix = 0; ix < nw; ix++) { +// if (constValue) { +// data[iy][ix] = RValue; +// } else { +// long v = bis.readBits(layer.numBits); +// double value = decimalScale * (layer.R + v * binaryScale); +// +// data[iy][ix] = (float)value; +// } +// } +// } +// bis.close(); +// return true; +// } catch (Exception e) { +// e.printStackTrace(); +// return false; +// } +// } +// +// @Override +// public Object clone() { +// RainGrib2Layer ret = new RainGrib2Layer(); +// +// ret.tmRange = (TmRange) tmRange.clone(); +// ret.x1 = x1; +// ret.y1 = y1; +// ret.x2 = x2; +// ret.y2 = y2; +// ret.nw = nw; +// ret.nh = nh; +// ret.dw = dw; +// ret.dh = dh; +// ret.data = new float[nh][nw]; +// for (int iy = 0; iy < nh; iy += 1) { +// for (int ix = 0; ix < nw; ix += 1) { +// ret.data[iy][ix] = data[iy][ix]; +// } +// } +// +// return ret; +// } + + +} diff --git a/src/main/java/com/gunshi/project/ss/grb/TmRange.java b/src/main/java/com/gunshi/project/ss/grb/TmRange.java new file mode 100644 index 0000000..9ba1e9e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/grb/TmRange.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.grb; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * Description: + * Created by wanyan on 2024/2/23 + * + * @author wanyan + * @version 1.0 + */ +@Data +public class TmRange { + + public static final String TM_FORMAT = "yyyyMMddHH"; + + public static final String TM_FORMAT_RADAR = "yyyyMMddHHmm"; + + @Schema(description = "startTm") + private Date startTm; + + @Schema(description = "offset") + private int offset; + + @Schema(description = "interval") + private int interval; + + @Schema(description = "tm1") + private Date tm1; + + @Schema(description = "tm2") + private Date tm2; + + @Schema(description = "key") + private String key; + + + @Override + public Object clone() { + TmRange ret = new TmRange(); + ret.startTm = (Date)startTm.clone(); + ret.offset = offset; + ret.tm1 = (Date)tm1.clone(); + ret.tm2 = (Date)tm2.clone(); + ret.interval = interval; + ret.key = key; + return ret; + } + +} diff --git a/src/main/java/com/gunshi/project/ss/listener/OsmoticWaterRImportListener.java b/src/main/java/com/gunshi/project/ss/listener/OsmoticWaterRImportListener.java new file mode 100644 index 0000000..329cb68 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/listener/OsmoticWaterRImportListener.java @@ -0,0 +1,85 @@ +package com.gunshi.project.ss.listener; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.gunshi.project.ss.entity.vo.OsmoticWaterRVo; +import com.gunshi.project.ss.model.OsmoticWaterR; +import com.gunshi.project.ss.service.OsmoticWaterRService; +import com.gunshi.project.ss.util.ConvertUtil; +import com.gunshi.project.ss.util.ServiceException; +import com.gunshi.project.ss.util.excel.ExcelListener; +import com.gunshi.project.ss.util.excel.ExcelResult; +import com.gunshi.project.ss.util.spring.SpringUtils; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * @Author Hiram + * @Date 2023/03/14 10:23 + */ +@Slf4j +public class OsmoticWaterRImportListener extends AnalysisEventListener implements ExcelListener { + + private final OsmoticWaterRService osmoticWaterRService; + private int successNum = 0; + private int failureNum = 0; + private final StringBuilder successMsg = new StringBuilder(); + private final StringBuilder failureMsg = new StringBuilder(); + + public OsmoticWaterRImportListener() { + this.osmoticWaterRService = SpringUtils.getBean(OsmoticWaterRService.class); + } + + + /** + * 使用表格导入数据 + * @param osmoticWaterRVo + * @param analysisContext + */ + @Override + public void invoke(OsmoticWaterRVo osmoticWaterRVo, AnalysisContext analysisContext) { + OsmoticWaterR osmoticWaterR = ConvertUtil.entityToVo(osmoticWaterRVo, OsmoticWaterR.class); + osmoticWaterR.setId(IdWorker.getId()); + this.osmoticWaterRService.save(osmoticWaterR); + successNum++; +// successMsg.append("
").append(successNum).append("监测仪数据导入成功"); + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + + } + + /** + * 导入结果 + * @return + */ + @Override + public ExcelResult getExcelResult() { + return new ExcelResult() { + + @Override + public String getAnalysis() { + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条"); + } + return successMsg.toString(); + } + + @Override + public List getList() { + return null; + } + + @Override + public List getErrorList() { + return null; + } + }; + } +} diff --git a/src/main/java/com/gunshi/project/ss/listener/RotaImportListener.java b/src/main/java/com/gunshi/project/ss/listener/RotaImportListener.java new file mode 100644 index 0000000..cfae9d4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/listener/RotaImportListener.java @@ -0,0 +1,173 @@ +package com.gunshi.project.ss.listener; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.exception.ExcelDataConvertException; +import com.google.common.collect.Lists; +import com.gunshi.project.ss.entity.vo.RotaVo; +import com.gunshi.project.ss.service.RotaService; +import com.gunshi.project.ss.util.excel.LengthValid; +import com.gunshi.project.ss.util.spring.SpringUtils; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; + +import java.lang.reflect.Field; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +/** + * 读取excel数据 + */ +@Slf4j +public class RotaImportListener extends AnalysisEventListener { + + private final RotaService rotaService; + + + /**临时存储正常数据集合*/ + private List successDataList = Lists.newArrayList(); + + /**临时存错误储数据集合*/ + private List errorDataList = Lists.newArrayList(); + + /**自定义消费者函数接口用于自定义监听器中数据组装*/ + private final Consumer> successConsumer; + + private final Consumer> errorConsumer; + + public RotaImportListener(Consumer> successConsumer, Consumer> errorConsumer) { + this.successConsumer = successConsumer; + this.errorConsumer = errorConsumer; + this.rotaService = SpringUtils.getBean(RotaService.class); + } + + /**手机号格式异常日志处理*/ + @Override + public void onException(Exception exception, AnalysisContext context) { + log.error("异常信息:{}", exception.getMessage()); + // 如果是某一个单元格的转换异常 能获取到具体行号,如果要获取头的信息 配合invokeHeadMap使用 + if (exception instanceof ExcelDataConvertException) { + ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception; + log.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(), excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData()); + }else if (exception instanceof IllegalArgumentException){ + throw new IllegalArgumentException(exception.getMessage()); + } + } + + /** + * 在这里进行模板的判断 + * @param headMap 存放着导入表格的表头,键是索引,值是名称 + * @param context + */ + @Override + public void invokeHeadMap(Map headMap, AnalysisContext context) { + //只校验第三行表头是否正确 + Integer rowNum = context.getCurrentRowNum(); + if (rowNum == 2) { + // 获取数据实体的字段列表 + Field[] fields = RotaVo.class.getDeclaredFields(); + // 遍历字段进行判断 + for (Field field : fields) { + // 获取当前字段上的ExcelProperty注解信息 + ExcelProperty fieldAnnotation = field.getAnnotation(ExcelProperty.class); + // 判断当前字段上是否存在ExcelProperty注解 + if (fieldAnnotation != null) { + String value = fieldAnnotation.value()[1]; + // 存在ExcelProperty注解则根据注解的value值到表格中对比是否存在对应的表头 + if(!headMap.containsValue(value)){ + // 如果表格不包含模版类字段中的表头,则抛出异常不再往下执行 + throw new RuntimeException("模板错误,请检查导入模板"); + } + } + } + } + } + + + /**每行读取监听触发逻辑*/ + @SneakyThrows + @Override + public void invoke(RotaVo rotaVo, AnalysisContext analysisContext) { + //获取总行数 + Integer rowNumber = analysisContext.readSheetHolder().getApproximateTotalRowNumber(); + //行数 + int row = analysisContext.readRowHolder().getRowIndex() + 1; + log.info("第" + row + "行数据进行处理"); + // 手机号格式校验 + if(validParam(rotaVo,row)){ + successDataList.add(rotaVo); + }else{ + errorDataList.add(rotaVo); + } + } + + private Boolean validParam(RotaVo rotaVo, int row) throws IllegalAccessException { + // 参数校验 + Field[] fields = rotaVo.getClass().getDeclaredFields(); + Boolean flag = true; + String msg = ""; + for (Field field : fields) { + //设置可访问 + field.setAccessible(true); + //判断字段是否添加校验 + boolean valid = field.isAnnotationPresent(LengthValid.class); + if (valid) { + String name = field.getName(); + + //获取注解信息 + LengthValid annotation = field.getAnnotation(LengthValid.class); + int cell = 4; + if("leaderPhone".equals(name)){ + cell = 3; + } + //行数列数 + msg += "第" + row + "行的第" + cell + "列:"; + //值 + String value = (String) field.get(rotaVo); + System.out.println("value = "+value); + if(value.length() != annotation.length()){ + //错误信息 + msg += annotation.msg(); + flag = false; + } + Long userId = rotaService.checkPhone(value); + if(userId == null){ + //错误信息 + String err = "手机号"+value+"未找到对应的系统用户,请先核实用户手机号再进行模板导入!"; + msg += err; + flag = false; + }else{ + if(cell == 3){ + rotaVo.setLeaderUserId(userId); + }else { + rotaVo.setDutyUserId(userId); + } + } + } + rotaVo.setErrorMsg(msg); + } + return flag; + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + if (CollectionUtils.isNotEmpty(successDataList)) { + successConsumer.accept(successDataList); + } + if (CollectionUtils.isNotEmpty(errorDataList)) { + errorConsumer.accept(errorDataList); + } + } + + /** + *监听器的hasNext()方法时没有注意到默认返回的是false,导致一进监听器就判断已经没有下一条记录,直接跳出监听器,然后导入就完成,也不会报错,改成返回true即可解决 + */ + @Override + public boolean hasNext(AnalysisContext analysisContext) { + return true; + } +} + diff --git a/src/main/java/com/gunshi/project/ss/mapper/AlarmSetMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AlarmSetMapper.java new file mode 100644 index 0000000..7a9e12d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AlarmSetMapper.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.model.AlarmSet; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface AlarmSetMapper extends BaseMapper { + + @Select( + """ + +""" + ) + AlarmSet queryByStcd(@Param("stcd") String stcd); + + @Select(""" + select t1.* from st_stbprp_b t1 + join st_stbprp_b_elem t2 + on t1.stcd = t2.stcd + where t2.elem = 'z' +""") + List listStation(); + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/AppVersionRecordMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AppVersionRecordMapper.java new file mode 100644 index 0000000..5a473eb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AppVersionRecordMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AppVersionRecord; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: APP版本记录 + * author: xusan + * date: 2024-11-12 10:14:50 + */ +@Mapper +public interface AppVersionRecordMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessCategoryMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessCategoryMapper.java new file mode 100644 index 0000000..e850749 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessCategoryMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AssessCategory; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 考核类目 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Mapper +public interface AssessCategoryMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessIndicatorMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessIndicatorMapper.java new file mode 100644 index 0000000..4490e28 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessIndicatorMapper.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.model.AssessIndicator; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: 考核指标 + * author: xusan + * date: 2024-09-03 17:46:56 + */ +@Mapper +public interface AssessIndicatorMapper extends BaseMapper { + + @Select(""" + + """) + Page choosePage(Page page,@Param("obj") AttCctvBasePage page1); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessIndicatorRatingMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessIndicatorRatingMapper.java new file mode 100644 index 0000000..431c172 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessIndicatorRatingMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AssessIndicatorRating; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 考核指标评分细则 + * author: xusan + * date: 2024-09-03 17:47:17 + */ +@Mapper +public interface AssessIndicatorRatingMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessObjectMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessObjectMapper.java new file mode 100644 index 0000000..156fae8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessObjectMapper.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AssessObject; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 考核对象 + * author: xusan + * date: 2024-09-05 14:19:30 + */ +@Mapper +public interface AssessObjectMapper extends BaseMapper { + + @Select(""" + + """) + List queryObjectByTaskId(@Param("taskId") Long taskId); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessObjectRatingMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessObjectRatingMapper.java new file mode 100644 index 0000000..0dad72b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessObjectRatingMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AssessObjectRating; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 考核对象指标得分详情 + * author: xusan + * date: 2024-09-10 10:44:14 + */ +@Mapper +public interface AssessObjectRatingMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessTaskMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessTaskMapper.java new file mode 100644 index 0000000..2062df7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessTaskMapper.java @@ -0,0 +1,149 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.so.AssessTaskPageSo; +import com.gunshi.project.ss.entity.vo.AssessResultVo; +import com.gunshi.project.ss.model.AssessIndicator; +import com.gunshi.project.ss.model.AssessObject; +import com.gunshi.project.ss.model.AssessTask; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 考核任务 + * author: xusan + * date: 2024-09-05 14:19:04 + */ +@Mapper +public interface AssessTaskMapper extends BaseMapper { + + @Select(""" + + """) + List queryIndicators(@Param("templateId") Long templateId); + + @Select(""" + + """) + Page myTodo(Page page,@Param("obj") AssessTaskPageSo page1); + + @Select(""" + + """) + Page myDone(Page page,@Param("obj") AssessTaskPageSo page1,@Param("taskIds") List taskIds); + + @Select(""" + + """) + List selectObject(@Param("taskId") Long id,@Param("userId") Long userId); + + @Select(""" + + """) + List result(@Param("taskId") Long id); + + @Select(""" + + """) + List myDoneTask(@Param("userId") Long userId); + + @Select(""" + + """) + List resultStat(@Param("obj") MonthRangeSo monthRangeSo); + + @Select(""" + + """) + Page listPage(Page page,@Param("obj") AssessTaskPageSo page1); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessTeamMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessTeamMapper.java new file mode 100644 index 0000000..20f8306 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessTeamMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AssessTeam; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 考核组成员 + * author: xusan + * date: 2024-09-05 14:19:47 + */ +@Mapper +public interface AssessTeamMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessTeamRatingMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessTeamRatingMapper.java new file mode 100644 index 0000000..93e032d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessTeamRatingMapper.java @@ -0,0 +1,96 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.so.AssessTaskPageSo; +import com.gunshi.project.ss.entity.vo.AssessRatingVo; +import com.gunshi.project.ss.entity.vo.AssessRectifyVo; +import com.gunshi.project.ss.model.AssessTeamRating; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 考核评分详情 + * author: xusan + * date: 2024-09-05 14:20:04 + */ +@Mapper +public interface AssessTeamRatingMapper extends BaseMapper { + + @Select(""" + + """) + List scoreDetail(@Param("teamId") Long teamId); + + @Select(""" + + """) + List scoreByObjectId(@Param("objectId") Long objectId); + + @Select(""" + + """) + Page listPage(Page page,@Param("obj") AssessTaskPageSo page1); + + @Select(""" + + """) + List rectifyStat(@Param("obj") MonthRangeSo monthRangeSo); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessTemplateIndicatorRelMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessTemplateIndicatorRelMapper.java new file mode 100644 index 0000000..34ec59b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessTemplateIndicatorRelMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AssessTemplateIndicatorRel; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 模板关联指标 + * author: xusan + * date: 2024-09-04 13:43:05 + */ +@Mapper +public interface AssessTemplateIndicatorRelMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AssessTemplateMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AssessTemplateMapper.java new file mode 100644 index 0000000..f5b5e1f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AssessTemplateMapper.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AssessIndicator; +import com.gunshi.project.ss.model.AssessTemplate; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 考核模板 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Mapper +public interface AssessTemplateMapper extends BaseMapper { + + @Select(""" + + """) + List queryIndicators(@Param("id") Long id); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttCctvBaseMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttCctvBaseMapper.java new file mode 100644 index 0000000..ce8f3b3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttCctvBaseMapper.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AttCctvBase; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 视频基本信息表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttCctvBaseMapper extends BaseMapper { + + + @Select(""" + select t1.*,t2.name as menuName + from att_cctv_base t1 + left join cctv_b_menu t2 on t1.menu_id = t2.id + order by t2.order_index asc +""") + List queryList(); + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttDamBaseMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttDamBaseMapper.java new file mode 100644 index 0000000..a9f5422 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttDamBaseMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AttDamBase; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 大坝表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttDamBaseMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttDamProfileMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttDamProfileMapper.java new file mode 100644 index 0000000..3207550 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttDamProfileMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AttDamProfile; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 监测断面信息表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttDamProfileMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttGateBMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttGateBMapper.java new file mode 100644 index 0000000..1585db1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttGateBMapper.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.GateMonitorDataVo; +import com.gunshi.project.ss.model.AttGateB; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 水闸基本情况调查表 + * author: xusan + * date: 2024-09-26 10:44:06 + */ +@Mapper +public interface AttGateBMapper extends BaseMapper { + + @Select(""" + + """) + List dataList(@Param("gateCode") String gateCode); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttGateValveMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttGateValveMapper.java new file mode 100644 index 0000000..1641c6d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttGateValveMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AttGateValve; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 闸阀信息表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttGateValveMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttMeaWeirMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttMeaWeirMapper.java new file mode 100644 index 0000000..73db673 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttMeaWeirMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AttMeaWeir; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 量水堰表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttMeaWeirMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttResBaseMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttResBaseMapper.java new file mode 100644 index 0000000..3197e7c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttResBaseMapper.java @@ -0,0 +1,335 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.entity.so.DataQueryCommonSo; +import com.gunshi.project.ss.entity.so.PicQuerySo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.model.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 描述: 水库基本信息表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttResBaseMapper extends BaseMapper { + @Select(""" + + """) + List queryList(); + + @Select(""" + + """) + List queryListV2(); + + @Select(""" + + """) + List drpData(@Param("obj") DataQueryCommonSo dataQueryCommonSo); + + @Select(""" + + """) + List rzData(@Param("obj") DataQueryCommonSo dataQueryCommonSo); + + @Select(""" + + """) + List realImg(@Param("resCode") String resCode); + + @Select(""" + + """) + List queryRzList(@Param("stcd") String stcd, @Param("stm") String startTime, @Param("etm") String endTime); + + @Select(""" + + """) + AttResMonitorVo latestRz(@Param("stcd") String stcd); + + + @Select(""" + + """) + BigDecimal oldRz(@Param("stcd") String stcd,@Param("type") Integer type, @Param("dateTime") Date dateTime,@Param("nowTime") Date nowTime); + + @Select(""" + + """) + BigDecimal queryMaxRzByStcdAndTime(@Param("stcd") String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime); + + @Select(""" + + """) + BigDecimal queryRiverMaxRz(@Param("stcd") String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime); + + @Select(""" + + """) + List channel(@Param("resCode") String resCode); + + @Select(""" + + """) + Page imageInfo(@Param("page") Page page ,@Param("obj") PicQuerySo picQuerySo); + + @Select(""" + + """) + List queryWaterList(); + + @Select(""" + + """) + List drp(@Param("obj") DataQueryCommonSo dataQueryCommonSo); + + @Select(""" + + """) + List rz(@Param("obj") DataQueryCommonSo dataQueryCommonSo); + + @Select(""" + + """) + AttRvMonitorVo newRz(@Param("stcd") String stcd); + + @Select(""" + + """) + Page rzDataPage(Page page,@Param("obj") PicQuerySo picQuerySo); + + @Select(""" + select * from public.dam_brief_r dbr + where 1=1 + and date=#{todayStr} + order by date desc + limit 1; + """) + ResBriefVo getBrief(String todayStr); + + @Select(""" + select * from public.dam_brief_r dbr + where 1=1 + and date between #{startDate} and #{endDate} + order by date desc + """) + List getBriefList(String startDate, String endDate); + + +// @Select(""" +// select t.stcd,t.stnm,t.lgtd as lgtd, +// t.lttd as lttd,t.sttp,t.adcd,t.rvnm,t.stlc,t.source,t.esstym,s.tm,s.z,s.q,sad.adnm, +// srb.wrz,srb.grz,srb.invrz,srb.invrztm,sprr.h1,sprr.h3,sprr.h6,sprr.h12,sprr.h24,sprr.today +// from public.st_stbprp_b t +// left join public.st_river_r_real s on t.stcd = s.stcd +// left join public.st_addvcd_d sad on t.adcd = sad.adcd +// left join public.st_rvfcch_b srb on t.stcd = srb.stcd +// left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd +// where t.sttp = 'ZZ' and t.stcd = #{stcd} +//""") +// List queryWaterListByStcd(@Param("stcd") String stcd); + + @Select(""" + select t.stcd,t.stnm,t.lgtd as lgtd, + t.lttd as lttd,t.sttp,t.adcd,t.rvnm,t.stlc,t.source,t.esstym,s.tm,s.z as z,s.q,sad.adnm, + srb.warn_water_level as wrz,srb.promise_water_level as grz,sprr.h1,sprr.h3,sprr.h6,sprr.h12,sprr.h24,sprr.today + from public.st_stbprp_b t + left join public.st_river_r_real s on t.stcd = s.stcd + left join public.st_addvcd_d sad on t.adcd = sad.adcd + left join public.alarm_set srb on t.stcd = srb.stcd + left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd + where t.stcd = #{stcd} +""") + List queryWaterListByStcd(@Param("stcd") String stcd); + + + @Select(""" + select t.stcd,t.stnm,t.lgtd as lgtd, + t.lttd as lttd,t.sttp,t.adcd,t.rvnm,t.stlc,t.source,t.esstym,s.tm,s.z as z,s.q,sad.adnm, + srb.warn_water_level as wrz,srb.promise_water_level as grz,sprr.h1,sprr.h3,sprr.h6,sprr.h12,sprr.h24, + sprr.today,arb.dead_lev as deadLev + from public.st_stbprp_b t + left join public.st_river_r_real s on t.stcd = s.stcd + left join public.st_addvcd_d sad on t.adcd = sad.adcd + left join public.alarm_set srb on t.stcd = srb.stcd + left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd + left join public.att_res_base arb on 1=1 + left join public.st_stbprp_b_elem stbe on t.stcd = stbe.stcd + where stbe.elem = 'z' +""") + //TODO 站点需要更改 + List queryWaterListUpAndLow(); + + @Select(""" + select t1.stcd from st_stbprp_b t1 + join st_stbprp_b_elem t2 + on t1.stcd = t2.stcd + where t2.elem = 'z' +""") + List getRiverStcd(); + + @Select(""" + select t1.stcd,t1.stnm,t1.lgtd lgtd,t1.lttd lttd,t1.source,t1.sttp,t1.stlc,t1.adcd,t1.esstym from st_stbprp_b t1 + where t1.stcd = #{stcd} +""") + List queryYhd(@Param("stcd") String stcd); + + + @Select(""" + select t.stcd,t.stnm,t.lgtd lgtd,t.lttd lttd,t.source,t.sttp,t.stlc,t.adcd,t.esstym,s.res_code,s.fl_low_lim_lev, + s.tot_cap,s.ben_res_cap,s.norm_wat_lev,s.crest_elev,s.des_flood_lev,s.dead_lev,s.cal_flood_lev,s.wat_shed_area,s.dead_cap,sad.adnm, + m.tm,m.rz,(m.rz-s.fl_low_lim_lev) as aFsltdz,sprr.tm as drpTm,sprr.h1,sprr.h3,sprr.h6,sprr.h12,sprr.h24,sprr.today, + case when s.cal_flood_lev is not null and m.rz-s.cal_flood_lev >= 0 then 1 else 0 end as calState, + case when s.des_flood_lev is not null and m.rz-s.des_flood_lev >= 0 then 1 else 0 end as desState, + case when s.fl_low_lim_lev is not null and m.rz-s.fl_low_lim_lev >= 0 then 1 else 0 end as flState + from public.st_stbprp_b t + left join public.att_res_base s on 1=1 + left join public.st_addvcd_d sad on t.adcd = sad.adcd + left join public.st_rsvr_r_real m on t.stcd = m.stcd + left join public.st_pptn_r_real sprr on t.stcd = sprr.stcd + join public.st_stbprp_b_elem stbe on t.stcd = stbe.stcd + where stbe.elem ='rz' + order by aFsltdz desc nulls last +""") + List queryList2(); + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttResBuildingMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttResBuildingMapper.java new file mode 100644 index 0000000..632b5b7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttResBuildingMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.*; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水库基本信息表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttResBuildingMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttSpillwayBaseMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttSpillwayBaseMapper.java new file mode 100644 index 0000000..2d58109 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttSpillwayBaseMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AttSpillwayBase; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 溢洪道 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttSpillwayBaseMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/AttWaterItemMapper.java b/src/main/java/com/gunshi/project/ss/mapper/AttWaterItemMapper.java new file mode 100644 index 0000000..18a3f59 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/AttWaterItemMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.AttWaterItem; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水质整编展示项目表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface AttWaterItemMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/BroadcastStationMapper.java b/src/main/java/com/gunshi/project/ss/mapper/BroadcastStationMapper.java new file mode 100644 index 0000000..b811003 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/BroadcastStationMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.BroadcastStation; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: + * author: xusan + * date: 2024-09-25 10:12:34 + */ +@Mapper +public interface BroadcastStationMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/BroadcastTemplateMapper.java b/src/main/java/com/gunshi/project/ss/mapper/BroadcastTemplateMapper.java new file mode 100644 index 0000000..8b5ebfd --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/BroadcastTemplateMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.BroadcastTemplate; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: + * author: xusan + * date: 2024-09-25 10:12:13 + */ +@Mapper +public interface BroadcastTemplateMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/BroadcastWarnMapper.java b/src/main/java/com/gunshi/project/ss/mapper/BroadcastWarnMapper.java new file mode 100644 index 0000000..62b560e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/BroadcastWarnMapper.java @@ -0,0 +1,41 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.BroadcastWarnPageSo; +import com.gunshi.project.ss.model.BroadcastWarn; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: + * author: xusan + * date: 2024-09-25 10:12:51 + */ +@Mapper +public interface BroadcastWarnMapper extends BaseMapper { + + @Select(""" + + """) + Page pageQuery(Page page,@Param("obj") BroadcastWarnPageSo page1); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ByLogDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ByLogDetailMapper.java new file mode 100644 index 0000000..3c6e690 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ByLogDetailMapper.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.so.ByLogPageSo; +import com.gunshi.project.ss.model.ByLogDetail; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.io.Serializable; +import java.util.List; + +@Mapper +public interface ByLogDetailMapper extends BaseMapper { + + @Select(""" + +""") + List selectDetail(@Param("logId") Long id,@Param("dto") ByLogPageSo pageSo); + + @Select(""" + select t1.id,t1.by_log_id,t1.pre_place_detail_id as ppdi,t1.pre_method,t1.pre_effect,t1.pre_person_id, + t2.detail_name as ppdn,t3.id as ppi,t3.pre_name as ppn + from by_log_detail t1 + join pre_place_detail t2 + on t1.pre_place_detail_id = t2.id + join pre_place t3 + on t2.pre_id = t3.id + where t1.by_log_id = #{logId} +""") + List selectDetailList(@Param("logId") Long id); + + + @Select(""" + select count(*) from by_log_detail t1 where t1.pre_place_detail_id = #{id} +""") + int selectByPPDi(@Param("id") Serializable id); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ByLogMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ByLogMapper.java new file mode 100644 index 0000000..da86f17 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ByLogMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ByLog; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ByLogMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ByPlanDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ByPlanDetailMapper.java new file mode 100644 index 0000000..7e84bfd --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ByPlanDetailMapper.java @@ -0,0 +1,38 @@ +package com.gunshi.project.ss.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.so.ByPlanPageSo; +import com.gunshi.project.ss.model.ByPlanDetail; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.io.Serializable; +import java.util.List; + +@Mapper +public interface ByPlanDetailMapper extends BaseMapper { + @Select(""" + +""") + List selectList(@Param("planId")String planId, @Param("dto") ByPlanPageSo dto); + + + @Select(""" + select count(*) + from by_plan_detail t + where t.pre_place_detail_id = #{id} +""") + int selectByPPDI(@Param("id") Serializable id); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ByPlanMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ByPlanMapper.java new file mode 100644 index 0000000..6c18588 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ByPlanMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ByPlan; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ByPlanMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/BzDictRelMapper.java b/src/main/java/com/gunshi/project/ss/mapper/BzDictRelMapper.java new file mode 100644 index 0000000..ee5e20e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/BzDictRelMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.BzDictRel; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 业务关联字典 + * author: xusan + * date: 2024-08-28 10:05:21 + */ +@Mapper +public interface BzDictRelMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/CctvBMenuMapper.java b/src/main/java/com/gunshi/project/ss/mapper/CctvBMenuMapper.java new file mode 100644 index 0000000..4a91010 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/CctvBMenuMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.CctvBMenu; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 视频点目录 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface CctvBMenuMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/DispatchRecordMapper.java b/src/main/java/com/gunshi/project/ss/mapper/DispatchRecordMapper.java new file mode 100644 index 0000000..9b86ed4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/DispatchRecordMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.DispatchRecord; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 调度记录 + * author: xusan + * date: 2024-10-09 09:56:28 + */ +@Mapper +public interface DispatchRecordMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/FileAssociationsMapper.java b/src/main/java/com/gunshi/project/ss/mapper/FileAssociationsMapper.java new file mode 100644 index 0000000..9fdae79 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/FileAssociationsMapper.java @@ -0,0 +1,126 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.FileAssociations; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 文件关联业务表 + * author: xusan + * date: 2024-07-17 10:09:40 + */ +@Mapper +public interface FileAssociationsMapper extends BaseMapper { + + @Select(""" + + """) + List getFiles(@Param("tableName") String tableName,@Param("businessId") String businessId); + + @Select(""" + + """) + List getFiles2(@Param("tableName") String tableName,@Param("businessId") String businessId); + + + + + @Select(""" + + """) + List getFiles1(@Param("tableName") String tableName,@Param("businessId") String businessId,@Param("type") String type); + + @Select(""" + + """) + List queryFileList(@Param("businessId") String businessId,@Param("tableName") String tableName,@Param("type") String type); + + @Select(""" + + """) + List getFilesByIds(@Param("ids") List ids); + + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchCommandMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchCommandMapper.java new file mode 100644 index 0000000..fb4f271 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchCommandMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastDispatchCommand; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 调度指令表 + * author: xusan + * date: 2024-12-19 + */ +@Mapper +public interface ForecastDispatchCommandMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchPlanMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchPlanMapper.java new file mode 100644 index 0000000..e9fc06a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchPlanMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastDispatchPlan; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 调度方案主表 + * author: xusan + * date: 2024-12-19 + */ +@Mapper +public interface ForecastDispatchPlanMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchResultMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchResultMapper.java new file mode 100644 index 0000000..0c76252 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastDispatchResultMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import com.gunshi.project.ss.model.ForecastDispatchResult; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 调度结果表 + * author: xusan + * date: 2024-12-19 + */ +@Mapper +public interface ForecastDispatchResultMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastKMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastKMapper.java new file mode 100644 index 0000000..800750f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastKMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastK; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预报_前期影响雨量折减系数表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Mapper +public interface ForecastKMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastPPaRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastPPaRMapper.java new file mode 100644 index 0000000..2b8bb5b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastPPaRMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastPPaR; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预报_降雨径流关系表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Mapper +public interface ForecastPPaRMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastPaMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastPaMapper.java new file mode 100644 index 0000000..785deac --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastPaMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastPa; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预报_土壤含水量表 + * author: cxw + * date: 2024-08-02 12:23:07 + */ +@Mapper +public interface ForecastPaMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastProjectMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastProjectMapper.java new file mode 100644 index 0000000..aedc4c2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastProjectMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastProject; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预报_预测方案管理表 + * author: cxw + * date: 2024-08-05 11:41:45 + */ +@Mapper +public interface ForecastProjectMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastResultsMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastResultsMapper.java new file mode 100644 index 0000000..9b55083 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastResultsMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastResults; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预报_预测结果表 + * author: cxw + * date: 2024-08-05 11:41:45 + */ +@Mapper +public interface ForecastResultsMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastTaskMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastTaskMapper.java new file mode 100644 index 0000000..51bf47b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastTaskMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastTask; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预报_预测自动任务管理表 + * author: cxw + * date: 2024-08-05 11:41:45 + */ +@Mapper +public interface ForecastTaskMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastUMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastUMapper.java new file mode 100644 index 0000000..76950c7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastUMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastU; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预报_时段单位线表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Mapper +public interface ForecastUMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ForecastUseparamMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ForecastUseparamMapper.java new file mode 100644 index 0000000..67a1c9b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ForecastUseparamMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ForecastUseparam; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预报_通用参数管理 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Mapper +public interface ForecastUseparamMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/GatePoreMapper.java b/src/main/java/com/gunshi/project/ss/mapper/GatePoreMapper.java new file mode 100644 index 0000000..6a5f8b4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/GatePoreMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.GatePore; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 闸孔信息表 + * author: xusan + * date: 2024-09-26 10:44:57 + */ +@Mapper +public interface GatePoreMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/GateValveCctvRelMapper.java b/src/main/java/com/gunshi/project/ss/mapper/GateValveCctvRelMapper.java new file mode 100644 index 0000000..3b7f6fe --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/GateValveCctvRelMapper.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.GateValveCctvRelPage; +import com.gunshi.project.ss.entity.vo.GateValveCctvRelVo; +import com.gunshi.project.ss.model.GateValveCctvRel; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 闸阀关联视频点 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface GateValveCctvRelMapper extends BaseMapper { + + @Select(""" + + """) + Page pages(@Param("page") Page page,@Param("obj") GateValveCctvRelPage obj); + + @Select(""" + + """) + List queryList(@Param("valveCode") String valveCode); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/GateValveRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/GateValveRMapper.java new file mode 100644 index 0000000..184701e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/GateValveRMapper.java @@ -0,0 +1,55 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.GateHisPageSo; +import com.gunshi.project.ss.entity.vo.GateStautsVo; +import com.gunshi.project.ss.model.GateValveR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 闸阀开关历史表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface GateValveRMapper extends BaseMapper { + + @Select(""" + + """) + Page pageQuery(Page page,@Param("obj") GateHisPageSo so); + + @Select(""" + + """) + List hisList(@Param("obj") GateHisPageSo so); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/GateValveRealMapper.java b/src/main/java/com/gunshi/project/ss/mapper/GateValveRealMapper.java new file mode 100644 index 0000000..95ffe3a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/GateValveRealMapper.java @@ -0,0 +1,83 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.GateHisPageSo; +import com.gunshi.project.ss.entity.vo.GateStautsVo; +import com.gunshi.project.ss.entity.vo.GateValveOplogVo; +import com.gunshi.project.ss.model.GateValveReal; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 描述: 闸阀开关表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface GateValveRealMapper extends BaseMapper { + + @Select(""" + + """) + List gateStatusList(); + + @Select(""" + + """) + BigDecimal realQ(@Param("valveCode") String valveCode); + + @Select(""" + + """) + Page logPage(Page page,@Param("obj") GateHisPageSo so); + + @Select(""" + + """) + List logList(@Param("obj") GateHisPageSo so); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/HiddenInfoMapper.java b/src/main/java/com/gunshi/project/ss/mapper/HiddenInfoMapper.java new file mode 100644 index 0000000..deb1009 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/HiddenInfoMapper.java @@ -0,0 +1,74 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.vo.MentenceInfoCount12Vo; +import com.gunshi.project.ss.entity.vo.StatusCountVo; +import com.gunshi.project.ss.model.HiddenInfo; +import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface HiddenInfoMapper extends BaseMapper { + + @Select(""" + +""") + List selectCount12(@Param("dto") MonthRangeSo monthRangeSo); + + + @Select(""" + +""") + @MapKey("status") + List selectCountType(@Param("dto") MonthRangeSo monthRangeSo); + + @Select(""" + WITH all_status AS ( + SELECT 0 AS status UNION + SELECT 1 AS status + ) + SELECT + a.status, + COALESCE(COUNT(h.id), 0) AS count + FROM all_status a + LEFT JOIN hidden_info h + ON a.status = h.status + AND TO_CHAR(h.found_time, 'YYYY') = #{year} + GROUP BY a.status + ORDER BY a.status; +""") + @MapKey("status") + List countYear(@Param("year") String year); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/HisWaterDataMapper.java b/src/main/java/com/gunshi/project/ss/mapper/HisWaterDataMapper.java new file mode 100644 index 0000000..fb41a7e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/HisWaterDataMapper.java @@ -0,0 +1,44 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.dto.ExportCommonDto; +import com.gunshi.project.ss.entity.so.HisWaterDataPageSo; +import com.gunshi.project.ss.entity.vo.HisWaterDataVo; +import com.gunshi.project.ss.model.HisWaterData; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface HisWaterDataMapper extends BaseMapper { + + @Select(""" + select * from his_water_data where type = 1 + order by year desc +""") + Page queryPage(Page page, @Param("obj") HisWaterDataPageSo queryWrapper); + + @Select(""" + +""") + List selectYearList(@Param("dto") ExportCommonDto dto); + + @Select(""" + select year from his_water_data where type = 1 + order by year desc +""") + List selectYear(); + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ISCAIEventMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ISCAIEventMapper.java new file mode 100644 index 0000000..1a8c283 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ISCAIEventMapper.java @@ -0,0 +1,13 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ISCAIEvent; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author lyf + * @since 2025-11-04 + */ +@Mapper +public interface ISCAIEventMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/IaCBsnssinfoMapper.java b/src/main/java/com/gunshi/project/ss/mapper/IaCBsnssinfoMapper.java new file mode 100644 index 0000000..75157d0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/IaCBsnssinfoMapper.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.HomeIaCBsnssinfoVo; +import com.gunshi.project.ss.model.IaCBsnssinfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 防治区企事业单位汇总表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface IaCBsnssinfoMapper extends BaseMapper { + + @Select(""" + + """) + List getDetailsAndMonitoringDataLis(); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/IaCDanadMapper.java b/src/main/java/com/gunshi/project/ss/mapper/IaCDanadMapper.java new file mode 100644 index 0000000..6d419d2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/IaCDanadMapper.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.HomeIaCDanadVo; +import com.gunshi.project.ss.model.IaCDanad; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 危险区基本情况调查成果汇总表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface IaCDanadMapper extends BaseMapper { + + + @Select(""" + + """) + List getDetailsAndMonitoringDataLis(); + + @Select(""" + + """) + HomeIaCDanadVo detail(@Param("id") String id); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/IaCFlrvvlgMapper.java b/src/main/java/com/gunshi/project/ss/mapper/IaCFlrvvlgMapper.java new file mode 100644 index 0000000..b00548c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/IaCFlrvvlgMapper.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.HomeIaCFlrvvlgVo; +import com.gunshi.project.ss.model.IaCFlrvvlg; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 重要沿河村落居民户调查成果表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface IaCFlrvvlgMapper extends BaseMapper { + + + @Select(""" + + """) + List getDetailsAndMonitoringDataLis(); + + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/IcWaterForecastDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/IcWaterForecastDetailMapper.java new file mode 100644 index 0000000..f643476 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/IcWaterForecastDetailMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.IcWaterForecastDetail; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface IcWaterForecastDetailMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/IcWaterForecastMapper.java b/src/main/java/com/gunshi/project/ss/mapper/IcWaterForecastMapper.java new file mode 100644 index 0000000..0c28ce7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/IcWaterForecastMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.IcWaterForecast; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface IcWaterForecastMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/InspectItemMapper.java b/src/main/java/com/gunshi/project/ss/mapper/InspectItemMapper.java new file mode 100644 index 0000000..247deb4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/InspectItemMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.InspectItem; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 巡检项 + * author: xusan + * date: 2024-08-29 09:58:10 + */ +@Mapper +public interface InspectItemMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/InspectPointMapper.java b/src/main/java/com/gunshi/project/ss/mapper/InspectPointMapper.java new file mode 100644 index 0000000..cd4b5e7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/InspectPointMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.InspectPoint; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 巡检点 + * author: xusan + * date: 2024-08-29 09:57:48 + */ +@Mapper +public interface InspectPointMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/InspectTaskDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/InspectTaskDetailMapper.java new file mode 100644 index 0000000..609eddd --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/InspectTaskDetailMapper.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.InspectProblemPageSo; +import com.gunshi.project.ss.entity.vo.InspectProblemVo; +import com.gunshi.project.ss.entity.vo.InspectTaskDetailVo; +import com.gunshi.project.ss.common.model.InspectTaskDetail; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 巡查信息 + * author: xusan + * date: 2024-08-29 14:21:45 + */ +@Mapper +public interface InspectTaskDetailMapper extends BaseMapper { + + @Select(""" + + """) + List inspectInfo(@Param("id") Long id); + + @Select(""" + + """) + Page pageQuery(Page page,@Param("obj") InspectProblemPageSo page1); + + @Select(""" + + """) + List handleList(); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/InspectTaskMapper.java b/src/main/java/com/gunshi/project/ss/mapper/InspectTaskMapper.java new file mode 100644 index 0000000..418ab11 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/InspectTaskMapper.java @@ -0,0 +1,93 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.InspectTaskPageSo; +import com.gunshi.project.ss.common.model.InspectTask; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 巡检任务 + * author: xusan + * date: 2024-08-29 14:21:15 + */ +@Mapper +public interface InspectTaskMapper extends BaseMapper { + + @Select(""" + + """) + Page pageQuery(Page page,@Param("obj") InspectTaskPageSo pageSo); + + @Select(""" + select count(is_handle) as handleNum from inspect_task_detail where is_handle = 0 + AND task_id = #{taskId} + GROUP BY task_id +""") + Integer countIsHandle(@Param("taskId") Long taskId); + + + @Select(""" + select count(is_normal) as problemNum from inspect_task_detail where is_normal = 0 + AND task_id = #{taskId} + GROUP BY task_id +""") + Integer countIsNormal(@Param("taskId") Long taskId); + + @Select(""" + + """) + List month(@Param("month") String monthValue); + + @Select(""" + + """) + Integer year(@Param("year") String year); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/InspectTaskTrackMapper.java b/src/main/java/com/gunshi/project/ss/mapper/InspectTaskTrackMapper.java new file mode 100644 index 0000000..22f9f63 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/InspectTaskTrackMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.InspectTaskTrack; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 巡查轨迹 + * author: xusan + * date: 2024-09-18 13:59:21 + */ +@Mapper +public interface InspectTaskTrackMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/JcskByBDMapper.java b/src/main/java/com/gunshi/project/ss/mapper/JcskByBDMapper.java new file mode 100644 index 0000000..81dfa42 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/JcskByBDMapper.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.JcskByBD; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface JcskByBDMapper extends BaseMapper { + + @Select(""" + select device_id + from jcsk_by_b_d group by device_id +""") + List listDevices(); + + + @Select(""" + SELECT t3.*, t1.status +FROM jcsk_by_b_d t3 +left JOIN ( + SELECT * + FROM ( + SELECT *, + ROW_NUMBER() OVER (PARTITION BY "order" ORDER BY ob_date DESC) as rn + FROM jcsk_by_r + WHERE ob_date::date = #{obDate} + ) tmp + WHERE rn = 1 +) t1 ON t3."order" = t1."order" +ORDER BY t1.status DESC, t1.ob_date DESC; +""") + List listAll(@Param("obDate") Date obDate); + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/JcskByInspectTaskMapper.java b/src/main/java/com/gunshi/project/ss/mapper/JcskByInspectTaskMapper.java new file mode 100644 index 0000000..be176e8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/JcskByInspectTaskMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.JcskByInspectTask; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface JcskByInspectTaskMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/JcskByRProcessMapper.java b/src/main/java/com/gunshi/project/ss/mapper/JcskByRProcessMapper.java new file mode 100644 index 0000000..c33cce7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/JcskByRProcessMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.JcskByRProcess; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface JcskByRProcessMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/JcskGnssREightAmMapper.java b/src/main/java/com/gunshi/project/ss/mapper/JcskGnssREightAmMapper.java new file mode 100644 index 0000000..76e144b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/JcskGnssREightAmMapper.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.JcskGnssREightAm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface JcskGnssREightAmMapper extends BaseMapper { + + @Select(""" + select t1.* + from jcsk_gnss_r_8am t1 join ( + select cd, max(tm) as tm + from jcsk_gnss_r_8am + GROUP BY cd + ) t2 on t1.cd = t2.cd and t1.tm = t2.tm; +""") + List queryNewDataTime(); + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/JcskSlREightAmMapper.java b/src/main/java/com/gunshi/project/ss/mapper/JcskSlREightAmMapper.java new file mode 100644 index 0000000..3d602ba --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/JcskSlREightAmMapper.java @@ -0,0 +1,19 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.JcskSlREightAm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface JcskSlREightAmMapper extends BaseMapper { + @Select(""" + select t1.* + from jcsk_sl_r_8am t1 + join (select stcd,mpcd,max(mstm) as mstm from jcsk_sl_r_8am GROUP BY stcd,mpcd) as t2 + on t1.mstm = t2.mstm and t1.stcd = t2.stcd and t1.mpcd = t2.mpcd; +""") + List queryNewDataTime(); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/JcskSyREightAmMapper.java b/src/main/java/com/gunshi/project/ss/mapper/JcskSyREightAmMapper.java new file mode 100644 index 0000000..c6a378b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/JcskSyREightAmMapper.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.JcskSyREightAm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface JcskSyREightAmMapper extends BaseMapper { + + @Select(""" +select t1.* +from jcsk_sy_r_8am t1 +join (select stcd,mpcd,max(mstm) as mstm from jcsk_sy_r_8am GROUP BY stcd,mpcd) as t2 +on t1.mstm = t2.mstm and t1.stcd = t2.stcd and t1.mpcd = t2.mpcd; +""") + List queryNewDataTime(); + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/MaintainServiceMapper.java b/src/main/java/com/gunshi/project/ss/mapper/MaintainServiceMapper.java new file mode 100644 index 0000000..96fe892 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/MaintainServiceMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.MaintainService; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 维修养护 + * author: xusan + * date: 2024-08-27 15:15:14 + */ +@Mapper +public interface MaintainServiceMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/MentenceFarmerRecordMapper.java b/src/main/java/com/gunshi/project/ss/mapper/MentenceFarmerRecordMapper.java new file mode 100644 index 0000000..eec8d0e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/MentenceFarmerRecordMapper.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.MentenceFarmerRecordPageSo; +import com.gunshi.project.ss.entity.vo.MentenceInfoCountVo; +import com.gunshi.project.ss.model.MentenceFarmerRecord; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface MentenceFarmerRecordMapper extends BaseMapper { + + + @Select(""" + +""") + Page pageQuery(Page page,@Param(value = "dto") MentenceFarmerRecordPageSo pageSo); + + @Select(""" + +""") + Page pageInfoCountQuery(Page page,@Param("dto") MentenceFarmerRecordPageSo pageSo); + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/MentencePlanDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/MentencePlanDetailMapper.java new file mode 100644 index 0000000..0de0f6a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/MentencePlanDetailMapper.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.MentencePlanDetail; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface MentencePlanDetailMapper extends BaseMapper { + + @Select(""" + select t1.*,t2.name as mentenceStDetailName,t3.id as mentenceStId,t3.st_name as mentenceStName from + mentence_plan_detail t1 + left join mentence_st_detail t2 + on t1.mentence_st_detail_id = t2.id and t2.is_enable = 0 + left join mentence_st t3 + on t2.mentence_st_id = t3.id + where t1.mentence_plan_id = #{id} +""") + List selectDetail(@Param("id") Long id); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/MentencePlanMapper.java b/src/main/java/com/gunshi/project/ss/mapper/MentencePlanMapper.java new file mode 100644 index 0000000..fcc0acb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/MentencePlanMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.MentencePlan; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MentencePlanMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/MentenceStDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/MentenceStDetailMapper.java new file mode 100644 index 0000000..67c5f00 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/MentenceStDetailMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.MentenceStDetail; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MentenceStDetailMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/MentenceStMapper.java b/src/main/java/com/gunshi/project/ss/mapper/MentenceStMapper.java new file mode 100644 index 0000000..6178599 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/MentenceStMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.MentenceSt; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MentenceStMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/MentenceTemplateMapper.java b/src/main/java/com/gunshi/project/ss/mapper/MentenceTemplateMapper.java new file mode 100644 index 0000000..b184bf1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/MentenceTemplateMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.MentenceTemplate; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MentenceTemplateMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/MessageCenterMapper.java b/src/main/java/com/gunshi/project/ss/mapper/MessageCenterMapper.java new file mode 100644 index 0000000..b76838d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/MessageCenterMapper.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.MessageCenter; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 消息中心 + * author: xusan + * date: 2024-09-19 10:39:29 + */ +@Mapper +public interface MessageCenterMapper extends BaseMapper { + + @Select(""" + + """) + List queryUserIds(); + + @Select(""" + + """) + List queryTodayMes(@Param("date") String date,@Param("type") Integer type); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OriginMessageMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OriginMessageMapper.java new file mode 100644 index 0000000..df660f5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OriginMessageMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.OriginMessage; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface OriginMessageMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticFlowDeviceMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticFlowDeviceMapper.java new file mode 100644 index 0000000..316d7eb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticFlowDeviceMapper.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.HomeOsmoticFlowDeviceVo; +import com.gunshi.project.ss.model.OsmoticFlowDevice; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 渗流设备表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface OsmoticFlowDeviceMapper extends BaseMapper { + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticFlowRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticFlowRMapper.java new file mode 100644 index 0000000..e0cffea --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticFlowRMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.OsmoticFlowR; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 渗流监测记录表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface OsmoticFlowRMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticPressDeviceMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticPressDeviceMapper.java new file mode 100644 index 0000000..9878241 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticPressDeviceMapper.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.HomeOsmoticPressDeviceVo; +import com.gunshi.project.ss.model.OsmoticPressDevice; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 渗压设备表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface OsmoticPressDeviceMapper extends BaseMapper { + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticPressRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticPressRMapper.java new file mode 100644 index 0000000..c9ce847 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticPressRMapper.java @@ -0,0 +1,219 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; +import com.gunshi.project.ss.common.model.so.OsmoticQueryPageSo; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.entity.vo.OsmoticPressVo; +import com.gunshi.project.ss.entity.vo.OsmoticValueVo; +import com.gunshi.project.ss.common.model.vo.StRzVo; +import com.gunshi.project.ss.model.OsmoticPressR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 渗压监测记录表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface OsmoticPressRMapper extends BaseMapper { + + @Select(""" + + """) + Page queryPage(Page page,@Param("obj") OsmoticQueryPageSo osmoticQueryPageSo); + + @Select(""" + + """) + List queryRz(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); + + @Select(""" + + """) + List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List queryLineRz(@Param("obj") OsmoticQuerySo osmoticQuerySo,@Param("stcd") String stcd); + + @Select(""" + + """) + List queryLineValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List queryWarn(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List queryDrp(@Param("year") Integer year,@Param("stcd") String stcd); + + @Select(""" + + """) + List listValue(); + + @Select(""" + + """) + List flowListValue(); + + @Select(""" + + """) + List detailValue(@Param("obj") OsmoticDetailQuerySo so); + + @Select(""" + + """) + List listValue2(); + + @Select(""" + + """) + List flowListValue2(); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticShiftDeviceMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticShiftDeviceMapper.java new file mode 100644 index 0000000..de77b64 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticShiftDeviceMapper.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.HomeOsmoticShiftDeviceVo; +import com.gunshi.project.ss.model.OsmoticShiftDevice; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 位移监测记录表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface OsmoticShiftDeviceMapper extends BaseMapper { + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticShiftRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticShiftRMapper.java new file mode 100644 index 0000000..3d1c467 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticShiftRMapper.java @@ -0,0 +1,99 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.common.model.vo.OsmoticShiftListVo2; +import com.gunshi.project.ss.entity.vo.OsmoticShiftListVo; +import com.gunshi.project.ss.entity.vo.OsmoticShiftValueVo; +import com.gunshi.project.ss.model.OsmoticShiftR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 位移监测记录表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface OsmoticShiftRMapper extends BaseMapper { + + @Select(""" + + """) + List queryValue(@Param("obj") OsmoticQuerySo osmoticQuerySo); + + @Select(""" + + """) + List listValue(); + + @Select(""" + + """) + List queryWarn(@Param("obj") OsmoticQuerySo so); + + @Select(""" + + """) + List detailValue(@Param("obj") OsmoticDetailQuerySo so); + + @Select(""" + + """) + List listValue2(); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticWarnRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticWarnRMapper.java new file mode 100644 index 0000000..a0def4c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticWarnRMapper.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.WarnPageSo; +import com.gunshi.project.ss.entity.vo.OsmoticWarnVo; +import com.gunshi.project.ss.model.OsmoticWarnR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: 隐患预警记录表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface OsmoticWarnRMapper extends BaseMapper { + + @Select(""" + + """) + Page queryPage(Page page, @Param("obj") WarnPageSo warnPageSo); + + @Select(""" + +""") + OsmoticWarnR queryMaxTmByType(@Param("type") Integer type); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticWarnRuleMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticWarnRuleMapper.java new file mode 100644 index 0000000..c395db2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticWarnRuleMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.OsmoticWarnRule; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 预警规则配置表 + * author: xusan + * date: 2024-07-08 15:44:07 + */ +@Mapper +public interface OsmoticWarnRuleMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticWaterRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticWaterRMapper.java new file mode 100644 index 0000000..8e1e8ec --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticWaterRMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.OsmoticWaterR; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水质采样记录表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface OsmoticWaterRMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/OsmoticWaterRuleMapper.java b/src/main/java/com/gunshi/project/ss/mapper/OsmoticWaterRuleMapper.java new file mode 100644 index 0000000..0afc03c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/OsmoticWaterRuleMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.OsmoticWaterRule; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水质质量标准规则表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface OsmoticWaterRuleMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/PersonnelPlanLogMapper.java b/src/main/java/com/gunshi/project/ss/mapper/PersonnelPlanLogMapper.java new file mode 100644 index 0000000..dd9b071 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/PersonnelPlanLogMapper.java @@ -0,0 +1,14 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.PersonnelPlanLog; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +public interface PersonnelPlanLogMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/PersonnelPlanMapper.java b/src/main/java/com/gunshi/project/ss/mapper/PersonnelPlanMapper.java new file mode 100644 index 0000000..88e00f6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/PersonnelPlanMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.PersonnelPlan; +import org.apache.ibatis.annotations.Mapper; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Mapper +public interface PersonnelPlanMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/PrePlaceDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/PrePlaceDetailMapper.java new file mode 100644 index 0000000..44e3837 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/PrePlaceDetailMapper.java @@ -0,0 +1,19 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.PrePlaceDetail; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.io.Serializable; + +@Mapper +public interface PrePlaceDetailMapper extends BaseMapper { + + + @Select(""" + select count(*) from pre_place_detail t where t.pre_id = #{id} +""") + int selectByPreId(@Param("id") Serializable id); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/PrePlaceMapper.java b/src/main/java/com/gunshi/project/ss/mapper/PrePlaceMapper.java new file mode 100644 index 0000000..edb2091 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/PrePlaceMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.PrePlace; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface PrePlaceMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ProjectEventsMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ProjectEventsMapper.java new file mode 100644 index 0000000..c6032fe --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ProjectEventsMapper.java @@ -0,0 +1,125 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.so.CommonDataPageSo; +import com.gunshi.project.ss.entity.vo.ProjectEventsVo; +import com.gunshi.project.ss.model.ProjectEvents; +import com.gunshi.project.ss.model.TermiteSurvey; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface ProjectEventsMapper extends BaseMapper { + + @Select(""" + + """) + List eventList(@Param("obj") CommonDataPageSo page); + + @Select(""" + + """) + List maintainList(@Param("obj") CommonDataPageSo page); + + @Select(""" + + """) + List safetyList(@Param("obj") CommonDataPageSo page); + + @Select(""" + + """) + List reinforceList(@Param("obj") CommonDataPageSo page); + + @Select(""" + + """) + List termiteList(@Param("obj") CommonDataPageSo page); + + @Select(""" + + """) + List queryTermiteDetail(@Param("id") Long id); + + @Select(""" + + """) + List dispatchList(@Param("obj") CommonDataPageSo page); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RealRainMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RealRainMapper.java new file mode 100644 index 0000000..e2e2e62 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RealRainMapper.java @@ -0,0 +1,143 @@ +package com.gunshi.project.ss.mapper; + +import com.gunshi.project.ss.entity.vo.ForeRainVo; +import com.gunshi.project.ss.entity.vo.RealRainListVo; +import com.gunshi.project.ss.entity.vo.RealRainStatListVo; +import com.gunshi.project.ss.entity.vo.StPptnVo; +import com.gunshi.project.ss.model.StPptnRD; +import com.gunshi.project.ss.common.model.StPptnRReal; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + + +@Mapper +public interface RealRainMapper { + @Select(""" + + """) + List getRealRainList(@Param("stm") String stm, @Param("etm") String etm); + + + @Select(""" + + """) + List queryStPptnPerHourByStcdAndStartTimeAndEndTime(@Param("stcd") String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime); + + @Select(""" + + """) + StPptnRD getStPptnRD(@Param("stcd") String stcd, @Param("tm") Date tm, @Param("year") Integer year); + + @Select(""" + + """) + StPptnRD getMaxOfYear(@Param("stcd") String stcd, @Param("year") Integer year); + + @Select(""" + + """) + Long getRainOfDayInYear(@Param("stcd") String stcd, @Param("year") Integer year); + + @Select(""" + + """) + StPptnRReal queryPptnByStcd(@Param("stcd") String stcd); + + @Select(""" + + """) + List querySttpList(); + + + List getRealRainStatList(@Param("adcd") String adcd, @Param("basCode") String basCode, @Param("source") String source, @Param("stm") String stm, @Param("etm") String etm); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ResFloodRoadMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ResFloodRoadMapper.java new file mode 100644 index 0000000..e1df09e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ResFloodRoadMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ResFloodRoad; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 防汛道路 + * author: xusan + * date: 2024-11-14 10:37:15 + */ +@Mapper +public interface ResFloodRoadMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ResMangUnitMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ResMangUnitMapper.java new file mode 100644 index 0000000..3830e5a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ResMangUnitMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ResMangUnit; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水库管理单位表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface ResMangUnitMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ResMonthEcoFlowMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ResMonthEcoFlowMapper.java new file mode 100644 index 0000000..8dd6346 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ResMonthEcoFlowMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ResMonthEcoFlow; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水库月核定生态流量表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface ResMonthEcoFlowMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ResPersonMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ResPersonMapper.java new file mode 100644 index 0000000..3346a99 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ResPersonMapper.java @@ -0,0 +1,14 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ResPerson; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +public interface ResPersonMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/ResPlanBMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ResPlanBMapper.java new file mode 100644 index 0000000..1da45dd --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ResPlanBMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ResPlanB; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水库预案表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface ResPlanBMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ResProjectImgMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ResProjectImgMapper.java new file mode 100644 index 0000000..e29fcae --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ResProjectImgMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ResProjectImg; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水库工程图片 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface ResProjectImgMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ResSafePersonBMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ResSafePersonBMapper.java new file mode 100644 index 0000000..c94e30e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ResSafePersonBMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ResSafePersonB; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水库责任体系表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface ResSafePersonBMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ResTunnelMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ResTunnelMapper.java new file mode 100644 index 0000000..0e28287 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ResTunnelMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.ResTunnel; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水库建筑物 - 放空洞/灌溉发电洞 + * author: xusan + * date: 2024-11-14 10:34:12 + */ +@Mapper +public interface ResTunnelMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RescueGoodsMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RescueGoodsMapper.java new file mode 100644 index 0000000..702ab52 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RescueGoodsMapper.java @@ -0,0 +1,42 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.entity.so.RescueGoodsPageSo; +import com.gunshi.project.ss.model.RescueGoodsB; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface RescueGoodsMapper extends BaseMapper { + + + @Select(""" + + """) + Page pageQuery(@Param("page") Page page,@Param("obj") RescueGoodsPageSo RescueGoodsPageSo); + + @Select(""" + + """) + List detail(@Param("goodsId") Long goodsId); + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RescueTeamBMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RescueTeamBMapper.java new file mode 100644 index 0000000..f2dd125 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RescueTeamBMapper.java @@ -0,0 +1,41 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.RescueTeamPageSo; +import com.gunshi.project.ss.entity.vo.RescueTeamVo; +import com.gunshi.project.ss.model.RescueTeamB; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: 抢险队伍 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface RescueTeamBMapper extends BaseMapper { + @Select(""" + + """) + Page pageQuery(@Param("page") Page page, @Param("obj") RescueTeamPageSo rescueTeamPageSo); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RescueTeamDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RescueTeamDetailMapper.java new file mode 100644 index 0000000..81fc0dc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RescueTeamDetailMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RescueTeamDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 抢险队伍明细 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface RescueTeamDetailMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RescueTeamFileMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RescueTeamFileMapper.java new file mode 100644 index 0000000..b1dae78 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RescueTeamFileMapper.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.model.RescueTeamFile; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 抢险队伍-附件 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface RescueTeamFileMapper extends BaseMapper { + @Select(""" + + """) + List queryFiles(@Param("teamId") Long teamId); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiceGrowConfigMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiceGrowConfigMapper.java new file mode 100644 index 0000000..523d949 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiceGrowConfigMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiceGrowConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水稻生长配置 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Mapper +public interface RiceGrowConfigMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiceIrrigationUseMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiceIrrigationUseMapper.java new file mode 100644 index 0000000..03c75a1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiceIrrigationUseMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiceIrrigationUse; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水稻灌溉用水 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Mapper +public interface RiceIrrigationUseMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiceRqWaterMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiceRqWaterMapper.java new file mode 100644 index 0000000..6cef864 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiceRqWaterMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiceRqWater; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水稻需水主表 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Mapper +public interface RiceRqWaterMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiceSupportBalanceDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiceSupportBalanceDetailMapper.java new file mode 100644 index 0000000..54d55ff --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiceSupportBalanceDetailMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiceSupportBalanceDetail; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface RiceSupportBalanceDetailMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiceSupportBalanceMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiceSupportBalanceMapper.java new file mode 100644 index 0000000..f3074e8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiceSupportBalanceMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiceSupportBalance; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface RiceSupportBalanceMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiceWaterForecastCycleMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiceWaterForecastCycleMapper.java new file mode 100644 index 0000000..54faf95 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiceWaterForecastCycleMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiceWaterForecastCycle; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水稻水分预测周期 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Mapper +public interface RiceWaterForecastCycleMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiceWaterForecastMonthMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiceWaterForecastMonthMapper.java new file mode 100644 index 0000000..9291bd8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiceWaterForecastMonthMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiceWaterForecastMonth; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水稻水分预测月份 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Mapper +public interface RiceWaterForecastMonthMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiceWaterKiMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiceWaterKiMapper.java new file mode 100644 index 0000000..fc7f66f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiceWaterKiMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiceWaterKi; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水稻水分需水模系数 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Mapper +public interface RiceWaterKiMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiskControlInfoMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiskControlInfoMapper.java new file mode 100644 index 0000000..b11dfe9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiskControlInfoMapper.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.BzDictRel; +import com.gunshi.project.ss.model.RiskControlInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 风险管控清单 + * author: xusan + * date: 2024-08-22 14:17:28 + */ +@Mapper +public interface RiskControlInfoMapper extends BaseMapper { + + @Select(""" + + """) + List queryRelList(@Param("ids") List ids); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RiskControlMenuMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RiskControlMenuMapper.java new file mode 100644 index 0000000..fe1f641 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RiskControlMenuMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RiskControlMenu; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 风险管控目录 + * author: xusan + * date: 2024-08-22 14:16:35 + */ +@Mapper +public interface RiskControlMenuMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RotaBMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RotaBMapper.java new file mode 100644 index 0000000..4199773 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RotaBMapper.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.RotaB; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface RotaBMapper extends BaseMapper { + + + @Select(""" + + """) + List query(@Param("yearMonth") String yearMonth); + + @Select(""" + + """) + List dateList(@Param("rotaDate") String rotaDate); + + @Select(""" + + """) + Long queryUser(@Param("value") String value); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/RotaLogMapper.java b/src/main/java/com/gunshi/project/ss/mapper/RotaLogMapper.java new file mode 100644 index 0000000..65ebf5d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/RotaLogMapper.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.RotaLogPageSo; +import com.gunshi.project.ss.model.RotaLog; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface RotaLogMapper extends BaseMapper { + + @Select(""" + + """) + Page queryPage(Page page,@Param("obj") RotaLogPageSo rotaLogPageSo); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/SafetyAccidentRegMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SafetyAccidentRegMapper.java new file mode 100644 index 0000000..9f72061 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SafetyAccidentRegMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SafetyAccidentReg; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 安全事故登记 + * author: xusan + * date: 2024-08-21 15:44:55 + */ +@Mapper +public interface SafetyAccidentRegMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/SafetyCheckMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SafetyCheckMapper.java new file mode 100644 index 0000000..b8e0f60 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SafetyCheckMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SafetyCheck; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SafetyCheckMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/SafetyHazardInvestMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SafetyHazardInvestMapper.java new file mode 100644 index 0000000..8c8c89d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SafetyHazardInvestMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SafetyHazardInvest; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SafetyHazardInvestMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/SafetyIdentifyMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SafetyIdentifyMapper.java new file mode 100644 index 0000000..dd68e50 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SafetyIdentifyMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SafetyIdentify; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 安全鉴定台账 + * author: xusan + * date: 2024-08-21 14:45:44 + */ +@Mapper +public interface SafetyIdentifyMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/SafetyReinforcementMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SafetyReinforcementMapper.java new file mode 100644 index 0000000..93e0953 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SafetyReinforcementMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SafetyReinforcement; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 除险加固台账 + * author: xusan + * date: 2024-08-22 11:27:44 + */ +@Mapper +public interface SafetyReinforcementMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/ShpPlacementMapper.java b/src/main/java/com/gunshi/project/ss/mapper/ShpPlacementMapper.java new file mode 100644 index 0000000..7b010a7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/ShpPlacementMapper.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.HomeShpPlacementVo; +import com.gunshi.project.ss.model.ShpPlacement; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 安置点 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface ShpPlacementMapper extends BaseMapper { + + @Select(""" + + """) + List getDetailsAndMonitoringDataList(); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/SoilMoistureDataMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SoilMoistureDataMapper.java new file mode 100644 index 0000000..f12b3fb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SoilMoistureDataMapper.java @@ -0,0 +1,12 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SoilMoistureData; +import org.apache.ibatis.annotations.Mapper; + +/** + */ +@Mapper +public interface SoilMoistureDataMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/SoilMoistureStationMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SoilMoistureStationMapper.java new file mode 100644 index 0000000..93ae428 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SoilMoistureStationMapper.java @@ -0,0 +1,12 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SoilMoistureStation; +import org.apache.ibatis.annotations.Mapper; + +/** + */ +@Mapper +public interface SoilMoistureStationMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/StAddvcdDMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StAddvcdDMapper.java new file mode 100644 index 0000000..b47c80f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StAddvcdDMapper.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StAddvcdD; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: 行政区划表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StAddvcdDMapper extends BaseMapper { + + @Select(""" + + """) + StAddvcdD selectByAdcd(@Param("adcd") String adcd); + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/StEvpoMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StEvpoMapper.java new file mode 100644 index 0000000..540b59e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StEvpoMapper.java @@ -0,0 +1,7 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StEvpo; + +public interface StEvpoMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StFlowRVoMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StFlowRVoMapper.java new file mode 100644 index 0000000..0651648 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StFlowRVoMapper.java @@ -0,0 +1,43 @@ +package com.gunshi.project.ss.mapper; + +import com.gunshi.project.ss.entity.vo.StFlowRVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface StFlowRVoMapper { + + + @Select(""" + select t1.sttp,t2.* from + st_stbprp_b t1 + join (SELECT id, stcd, tm, inq, q, otq, crtime + FROM ( + SELECT *, + ROW_NUMBER() OVER (PARTITION BY stcd ORDER BY tm DESC) as rn + FROM st_flow_r + ) t + WHERE rn = 1) t2 on t1.stcd = t2.stcd +""") + List listNewData(); + + @Select(""" + select DISTINCT stcd from st_flow_r +""") + List listStcds(); + + @Select(""" + + """) + List getDataByStcdAndTm(@Param("stcd") String stcd, @Param("tm") Date tm); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StImgRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StImgRMapper.java new file mode 100644 index 0000000..1b38fd5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StImgRMapper.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StImgR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 图像历史表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StImgRMapper extends BaseMapper { + + @Select(""" + SELECT stb.stcd, + r.tm stm + FROM public.st_stbprp_b stb + LEFT JOIN (SELECT * + FROM (SELECT *, ROW_NUMBER() OVER ( PARTITION BY stcd ORDER BY tm DESC ) AS rn FROM public.st_img_r) subquery + WHERE subquery.rn = 1) r ON stb.stcd = r.stcd + WHERE stb.source = 'SK' + """) + List getStcdLastImgData(); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StImgRRealMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StImgRRealMapper.java new file mode 100644 index 0000000..071b483 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StImgRRealMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StImgRReal; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 图像表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StImgRRealMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/StImgWarnRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StImgWarnRMapper.java new file mode 100644 index 0000000..0bb0d8f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StImgWarnRMapper.java @@ -0,0 +1,42 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.ImgWarnPageSo; +import com.gunshi.project.ss.model.StImgWarnR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: AI告警表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StImgWarnRMapper extends BaseMapper { + + @Select(""" + + """) + Page pageQuery(Page page,@Param("obj") ImgWarnPageSo imgWarnPageSo); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/StPptnRDMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StPptnRDMapper.java new file mode 100644 index 0000000..6613c1a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StPptnRDMapper.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StPptnRD; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 描述: + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StPptnRDMapper extends BaseMapper { + + List getStcdLastPptnDayData(); + + StPptnRD getMaxData(@Param("stcd") String stcd); + + List reorganizePptnRDData(@Param("stcd") String stcd, @Param("maxData") StPptnRD maxData); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StPptnRHMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StPptnRHMapper.java new file mode 100644 index 0000000..5b56dab --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StPptnRHMapper.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.vo.StRzVo; +import com.gunshi.project.ss.model.StPptnRD; +import com.gunshi.project.ss.model.StPptnRH; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 描述: 降雨量小时表 + * author: cxw + * date: 2024-09-02 09:34:31 + */ +@Mapper +public interface StPptnRHMapper extends BaseMapper { + + List queryList(@Param("start") String start,@Param("end") String end); + + List queryRzList(@Param("start") String start,@Param("end") String end); + + List queryDayDrp(@Param("year") Integer year); + + List reorganizePptnRHData(@Param("stcd") String stcd, @Param("maxData") StPptnRH maxData); + + StPptnRH getMaxData(String stcd); + + List queryDayRz(@Param("year") String year); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StQxWarnRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StQxWarnRMapper.java new file mode 100644 index 0000000..dbf9fec --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StQxWarnRMapper.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.entity.vo.OsmoticWarnVo; +import com.gunshi.project.ss.model.StQxWarnR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 气象预警表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StQxWarnRMapper extends BaseMapper { + + @Select(""" + + """) + List queryOsmoticWarn(@Param("obj") DateTimeRangeSo dateTimeRangeSo); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/StStbprpCctvMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StStbprpCctvMapper.java new file mode 100644 index 0000000..8f6090d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StStbprpCctvMapper.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.entity.vo.StStbprpCctvVo; +import com.gunshi.project.ss.model.StStbprpCctv; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/4/9 + * + * @author wanyan + * @version 1.0 + */ +public interface StStbprpCctvMapper extends BaseMapper { + + + @Select(""" + + """) + List listByStcd(@Param("stcd") String stcd); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StWaterFlowMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StWaterFlowMapper.java new file mode 100644 index 0000000..7fba951 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StWaterFlowMapper.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StWaterFlow; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface StWaterFlowMapper extends BaseMapper { + + + @Select(""" + select * from st_water_flow t1 + where t1.stcd = #{stcd} + order by t1.z asc +""") + List selectListByStcd(@Param("stcd") String stcd); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StWaterRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StWaterRMapper.java new file mode 100644 index 0000000..ff04270 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StWaterRMapper.java @@ -0,0 +1,45 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.model.StWaterR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 供水量表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StWaterRMapper extends BaseMapper { + + @Select(""" + + """) + List stat(@Param("obj") DateTimeRangeSo dateTimeRangeSo); + + @Select(""" + select t1.* from st_water_r t1 + join + (select stcd,max(tm) as max_tm from st_water_r GROUP BY stcd) t2 + on t1.stcd = t2.stcd and t1.tm = t2.max_tm ; +""") + List getStcdLastWaterData(); + + @Select(""" + select * from st_water_r where stcd = #{stcd} order by tm desc limit 1 +""") + StWaterR selectNewDataByStcd(String stcd); + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/StWaterRRealMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StWaterRRealMapper.java new file mode 100644 index 0000000..664d188 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StWaterRRealMapper.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StWaterRReal; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 供水量实时表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StWaterRRealMapper extends BaseMapper { + + List listRelated(); + + @Select(""" + select * from st_water_r_real +""") + List listNewData(); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StWaterRReorganizeMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StWaterRReorganizeMapper.java new file mode 100644 index 0000000..3b3c729 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StWaterRReorganizeMapper.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StWaterRReorganize; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 描述: 供水量整编表 + * author: cxw + * date: 2024-07-24 11:22:46 + */ +@Mapper +public interface StWaterRReorganizeMapper extends BaseMapper { + + + + List getWaterSupplyerYeaarOrMonth(@Param("type") Integer type,@Param("date") String date); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StZqRMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StZqRMapper.java new file mode 100644 index 0000000..d587fa9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StZqRMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StZqR; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface StZqRMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/StZqrlBMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StZqrlBMapper.java new file mode 100644 index 0000000..90130dc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StZqrlBMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StZqrlB; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 水位流量关系曲线表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StZqrlBMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/StZvarlBMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StZvarlBMapper.java new file mode 100644 index 0000000..d2dcd74 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StZvarlBMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.StZvarlB; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 库( 湖)容曲线表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface StZvarlBMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/StbprpBVoMapper.java b/src/main/java/com/gunshi/project/ss/mapper/StbprpBVoMapper.java new file mode 100644 index 0000000..5f27866 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/StbprpBVoMapper.java @@ -0,0 +1,139 @@ +package com.gunshi.project.ss.mapper; +import com.gunshi.project.ss.entity.vo.StStatusVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import com.gunshi.project.ss.entity.dto.StZqrlBDto; +import com.gunshi.project.ss.entity.so.HomeStStbprpBSo; +import com.gunshi.project.ss.entity.vo.HomeStStbprpBVo; +import com.gunshi.project.ss.entity.vo.StZqrlBVo; +import java.util.List; + +/** + * @author lyf + * @since 2025-11-04 + */ +@Mapper +public interface StbprpBVoMapper { + @Select(""" + + """) + List rainfallStationDetailsList(@Param("dto") HomeStStbprpBSo dto); + + @Select(""" + + """) + List reservoirStationDetailsList(); + + @Select(""" + + """) + List flowStationDetailsList(); + + @Select(""" + + """) + List realRainList(); + + @Select(""" + + """) + List rzList(); + + @Select(""" + + """) + List imgList(); + + @Select(""" + + """) + List rainList(); + + // @Select("") + @Select(""" + + """) + List flowList(@Param("obj") StZqrlBDto obj); + + @Select(""" + + """) + List zList(); + + + @Select(""" + select t1.stcd,t1.stnm,t2.tm,t1,lgtd,t1.lttd from + st_stbprp_b t1 + left join st_water_r_real t2 + on t1.stcd = t2.stcd + where t1.stcd in ('1112','1113','1114') +""") + List flowStationList(); + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/SyDataCheckRuleMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SyDataCheckRuleMapper.java new file mode 100644 index 0000000..6e06547 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SyDataCheckRuleMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SyDataCheckRule; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SyDataCheckRuleMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/SyRegressionDataMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SyRegressionDataMapper.java new file mode 100644 index 0000000..7cb3d91 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SyRegressionDataMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SyRegressionData; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SyRegressionDataMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/SysDictBMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SysDictBMapper.java new file mode 100644 index 0000000..dcf1294 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SysDictBMapper.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SysDictB; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 系统字典表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface SysDictBMapper extends BaseMapper { + + @Select(""" + + """) + List listByCd(@Param("dictCd") String dictCd); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/SzCaseMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SzCaseMapper.java new file mode 100644 index 0000000..5beb834 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SzCaseMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SzCase; +import org.apache.ibatis.annotations.Mapper; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Mapper +public interface SzCaseMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/SzRegulatoryFrameworkMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SzRegulatoryFrameworkMapper.java new file mode 100644 index 0000000..630ce7b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SzRegulatoryFrameworkMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SzRegulatoryFramework; +import org.apache.ibatis.annotations.Mapper; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Mapper +public interface SzRegulatoryFrameworkMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/SzRuleByLawMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SzRuleByLawMapper.java new file mode 100644 index 0000000..a099422 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SzRuleByLawMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SzRuleByLaw; +import org.apache.ibatis.annotations.Mapper; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Mapper +public interface SzRuleByLawMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/SzTreatmentBasisMapper.java b/src/main/java/com/gunshi/project/ss/mapper/SzTreatmentBasisMapper.java new file mode 100644 index 0000000..e569119 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/SzTreatmentBasisMapper.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.SzTreatmentBasis; +import org.apache.ibatis.annotations.Mapper; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Mapper +public interface SzTreatmentBasisMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/TermiteAdverPicMapper.java b/src/main/java/com/gunshi/project/ss/mapper/TermiteAdverPicMapper.java new file mode 100644 index 0000000..bddd7da --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/TermiteAdverPicMapper.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.TermiteAdverPic; +import org.apache.ibatis.annotations.Mapper; + +/** + * 描述: 白蚁防治宣传图片墙 + * author: xusan + * date: 2024-08-29 17:33:09 + */ +@Mapper +public interface TermiteAdverPicMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/TermiteSurveyDetailMapper.java b/src/main/java/com/gunshi/project/ss/mapper/TermiteSurveyDetailMapper.java new file mode 100644 index 0000000..5183222 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/TermiteSurveyDetailMapper.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.TermiteSurveyPageSo; +import com.gunshi.project.ss.model.TermiteSurveyDetail; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: 白蚁普查明细 + * author: xusan + * date: 2024-08-28 10:25:17 + */ +@Mapper +public interface TermiteSurveyDetailMapper extends BaseMapper { + + @Select(""" + + """) + Page pageQuery(Page page,@Param("obj") TermiteSurveyPageSo page1); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/TermiteSurveyMapper.java b/src/main/java/com/gunshi/project/ss/mapper/TermiteSurveyMapper.java new file mode 100644 index 0000000..7aee85f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/TermiteSurveyMapper.java @@ -0,0 +1,60 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.entity.so.TermiteSurveyPageSo; +import com.gunshi.project.ss.model.TermiteSurvey; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 描述: 白蚁普查 + * author: xusan + * date: 2024-08-28 10:29:58 + */ +@Mapper +public interface TermiteSurveyMapper extends BaseMapper { + + @Select(""" + + """) + Page pageQuery(Page page,@Param("obj") TermiteSurveyPageSo page1); + + @Select(""" + + """) + List queryFileList(@Param("groupId") String groupId); + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/TyYearRainfallMapper.java b/src/main/java/com/gunshi/project/ss/mapper/TyYearRainfallMapper.java new file mode 100644 index 0000000..95ca479 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/TyYearRainfallMapper.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.TyYearRainfallPageSo; +import com.gunshi.project.ss.entity.vo.TyYearRainfallVo; +import com.gunshi.project.ss.model.TyYearRainfall; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * 描述: 典型年降雨资料表 + * author: xusan + * date: 2024-07-08 15:44:08 + */ +@Mapper +public interface TyYearRainfallMapper extends BaseMapper { + + @Select(""" + + """) + Page pageQuery(Page page,@Param("obj") TyYearRainfallPageSo tyYearRainfallPageSo); +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/WarningConditionMapper.java b/src/main/java/com/gunshi/project/ss/mapper/WarningConditionMapper.java new file mode 100644 index 0000000..cc806ae --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/WarningConditionMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.WarningCondition; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WarningConditionMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/WarningRuleInfoMapper.java b/src/main/java/com/gunshi/project/ss/mapper/WarningRuleInfoMapper.java new file mode 100644 index 0000000..e587c50 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/WarningRuleInfoMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.WarningRuleInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WarningRuleInfoMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/WarningRuleMapper.java b/src/main/java/com/gunshi/project/ss/mapper/WarningRuleMapper.java new file mode 100644 index 0000000..f2e73fe --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/WarningRuleMapper.java @@ -0,0 +1,10 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import com.gunshi.project.ss.model.WarningRule; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WarningRuleMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/mapper/WaterAlarmMapper.java b/src/main/java/com/gunshi/project/ss/mapper/WaterAlarmMapper.java new file mode 100644 index 0000000..cad72ee --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/WaterAlarmMapper.java @@ -0,0 +1,80 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.entity.vo.WaterAlarmCount; +import com.gunshi.project.ss.entity.vo.WaterAlarmTypeCount; +import com.gunshi.project.ss.model.WaterAlarm; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface WaterAlarmMapper extends BaseMapper { + + @Select(""" + WITH months AS ( + SELECT + #{year} AS year, + LPAD(series::text, 2, '0') AS month + FROM generate_series(1, 12) AS series + ) + SELECT + m.year, + m.month, + COALESCE(COUNT(wa.alarm_time), 0) AS alarmCount + FROM + months m + LEFT JOIN + water_alarm wa ON m.year = EXTRACT(YEAR FROM wa.alarm_time) + AND m.month = TO_CHAR(wa.alarm_time, 'MM') + AND EXTRACT(YEAR FROM wa.alarm_time) = #{year} + GROUP BY + m.year, m.month + ORDER BY + m.month ASC; + """) + List count12(@Param("year") Integer year); + + + @Select(""" + SELECT + EXTRACT(YEAR FROM alarm_time)::INTEGER AS year, + alarm_type as type, + COUNT(id) as count + FROM + water_alarm + WHERE + EXTRACT(YEAR FROM alarm_time) = #{year} + AND alarm_type IS NOT NULL + GROUP BY + -- 按“年份+告警类型”分组,确保统计维度唯一 + EXTRACT(YEAR FROM alarm_time), + alarm_type + ORDER BY + alarm_type ASC; +""") + List countTypeByYear(@Param("year") Integer year); + + + @Select(""" + select t.* from water_alarm t + where t.stcd = #{stcd} + order by t.alarm_time desc + limit 1 +""") + WaterAlarm selectByStcdNew(@Param("stcd") String stcd); + + + @Select(""" + select t1.* from st_stbprp_b t1 + join st_stbprp_b_elem t2 + on t1.stcd = t2.stcd + where t2.elem in ('rz','z') +""") + List listStation(); + + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/WaterDataTermitesMapper.java b/src/main/java/com/gunshi/project/ss/mapper/WaterDataTermitesMapper.java new file mode 100644 index 0000000..9f2b961 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/WaterDataTermitesMapper.java @@ -0,0 +1,185 @@ +package com.gunshi.project.ss.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import com.gunshi.project.ss.common.model.so.JcskByRPageSo; +import com.gunshi.project.ss.common.model.JcskByR; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + + +@Mapper +public interface WaterDataTermitesMapper extends BaseMapper { + + + /** + * 这段sql需求是 + * 查询某一天的白蚁数据,然后按测点进行分组,分组之后某一组数据内,如果status全部为0,表示没有白蚁,那么就取最新的那条数据即可 + * 如果某一组数据内 stauts有为1的,就是出现了白蚁的,那么就取最新的那一条有白蚁的数据 + * ROW_NUMBER 窗口函数的作用是根据order进行分组,当status为1时,优先显示,如果没有status为1的情况,那么就不管,同时按ob_date进行降序排列 + * 这样每次取到的数据,如果这一天之内某个测点(order)都没有status为1的数据,那么就去这个测站最新的那一条数据 + * 如果这一天之内某个测点(order)有status为1的数据,那么就去这个测点这一天之内status为1的最新的那一条数据 + * @param page + * @param jcskByRPageSo + * @return + */ + @Select(""" + +""") + Page pageQuery(Page page, @Param("obj") JcskByRPageSo jcskByRPageSo); + + + /** + * 这段sql,就是查询所有时间的,相当于上面那段sql的所有时间数据加起来 + * @param page + * @param queryWrapper + * @return + */ + @Select(""" + +""") + Page pageQueryWithNoDate(Page page, @Param("obj") JcskByRPageSo queryWrapper); + + + /** + * 根据取每个测点某一天内最新的那条数据(不用管status状态) + * @param page + * @param page1 + * @return + */ + @Select(""" + +""") + Page query(Page page,@Param("obj") JcskByRPageSo page1); + + + @Select(""" + + """) + List queryHasAntList(@Param("start") Date start, @Param("end") Date end); + + + @Select(""" + +""") + Page queryWithNoDate(Page page,@Param("obj") JcskByRPageSo page1); + + + @Select(""" + +""") + List listNewData(@Param("deviceId") String deviceId); +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/WaterDeviceMapper.java b/src/main/java/com/gunshi/project/ss/mapper/WaterDeviceMapper.java new file mode 100644 index 0000000..579767f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/WaterDeviceMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.common.model.JcskByB; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WaterDeviceMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/WaterDispatchMapper.java b/src/main/java/com/gunshi/project/ss/mapper/WaterDispatchMapper.java new file mode 100644 index 0000000..5ad16f4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/WaterDispatchMapper.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.WaterDispatch; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface WaterDispatchMapper extends BaseMapper { + + + @Select(""" + SELECT COUNT(*) + FROM water_dispatch + WHERE EXTRACT(YEAR FROM dis_start) = #{year} + AND exe_status = 0 +""") + int countCompeleteByYear(@Param("year") int currYear); + +} diff --git a/src/main/java/com/gunshi/project/ss/mapper/XlPlanMapper.java b/src/main/java/com/gunshi/project/ss/mapper/XlPlanMapper.java new file mode 100644 index 0000000..9ed16cb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/mapper/XlPlanMapper.java @@ -0,0 +1,9 @@ +package com.gunshi.project.ss.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.model.XlPlan; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface XlPlanMapper extends BaseMapper { +} diff --git a/src/main/java/com/gunshi/project/ss/model/AlarmSet.java b/src/main/java/com/gunshi/project/ss/model/AlarmSet.java new file mode 100644 index 0000000..6de58c2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AlarmSet.java @@ -0,0 +1,90 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@TableName(value ="alarm_set") +public class AlarmSet implements Serializable{ + /** + * 报警设置实体类 + * + * @author + * @TableName alarm_set + */ + /** + * 主键 + */ + @TableId(value = "id") + @Schema(description = "主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 站点编码 + */ + @TableField(value = "stcd") + @Schema(description = "站点编码") + @NotNull(message = "站点编码不能为空",groups = {Insert.class, Update.class}) + private String stcd; + + + /** + * 站点编码 + */ + @TableField(value = "stnm") + @Schema(description = "站点编码") + private String stnm; + + /** + * 警戒水位 + */ + @TableField(value = "warn_water_level") + @Schema(description = "警戒水位") + @NotNull(message = "警戒水位",groups = {Insert.class, Update.class}) + private BigDecimal warnWaterLevel; + + /** + * 保证水位 + */ + @TableField(value = "promise_water_level") + @Schema(description = "保证水位") + @NotNull(message = "保证水位",groups = {Insert.class, Update.class}) + private BigDecimal promiseWaterLevel; + + /** + * 调查最高水位 + */ + @TableField(value = "max_level") + @Schema(description = "调查最高水位") + private BigDecimal maxLevel; + + /** + * 调查最高水位出现时间 + */ + @TableField(value = "max_level_time") + @Schema(description = "调查最高水位出现时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date maxLevelTime; + + /** + * 创建时间 + */ + @TableField(value = "create_date") + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createDate; +} diff --git a/src/main/java/com/gunshi/project/ss/model/AppVersionRecord.java b/src/main/java/com/gunshi/project/ss/model/AppVersionRecord.java new file mode 100644 index 0000000..f3b6a82 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AppVersionRecord.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: APP版本记录 +* author: xusan +* date: 2024-11-12 10:14:50 +*/ +@Schema(description="APP版本记录") +@Data +@TableName("public.app_version_record") +public class AppVersionRecord implements Serializable { + + public final static String thisTableName = "AppVersionRecord"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 版本号 + */ + @TableField(value="version") + @Schema(description="版本号") + @Size(max = 20,message = "版本号最大长度要小于 20") + private String version; + + /** + * 版本描述 + */ + @TableField(value="version_desc") + @Schema(description="版本描述") + private String versionDesc; + + /** + * url + */ + @TableField(value="url") + @Schema(description="地址") + private String url; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessCategory.java b/src/main/java/com/gunshi/project/ss/model/AssessCategory.java new file mode 100644 index 0000000..f7d8bad --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessCategory.java @@ -0,0 +1,58 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 考核类目 +* author: xusan +* date: 2024-09-03 17:46:29 +*/ +@Schema(description="考核类目") +@Data +@TableName("public.assess_category") +public class AssessCategory implements Serializable { + + public final static String thisTableName = "AssessCategory"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 名称 + */ + @TableField(value="name") + @Schema(description="名称") + @Size(max = 255,message = "名称最大长度要小于 255") + @NotBlank(message = "名称不能为空") + private String name; + + /** + * 排序 + */ + @TableField(value="order_index") + @Schema(description="排序") + private Integer orderIndex; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessIndicator.java b/src/main/java/com/gunshi/project/ss/model/AssessIndicator.java new file mode 100644 index 0000000..416ad90 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessIndicator.java @@ -0,0 +1,102 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** +* 描述: 考核指标 +* author: xusan +* date: 2024-09-03 17:46:55 +*/ +@Schema(description="考核指标") +@Data +@TableName("public.assess_indicator") +public class AssessIndicator implements Serializable { + + public final static String thisTableName = "AssessIndicator"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 考核类目id + */ + @TableField(value="category_id") + @Schema(description="考核类目id") + @JsonSerialize(using = ToStringSerializer.class) + private Long categoryId; + + @TableField(exist = false) + @Schema(description="考核类目名称") + private String name; + + /** + * 指标名称 + */ + @TableField(value="indicator_name") + @Schema(description="指标名称") + @Size(max = 100,message = "指标名称最大长度要小于 100") + private String indicatorName; + + /** + * 指标编码 + */ + @TableField(value="indicator_code") + @Schema(description="指标编码") + @Size(max = 100,message = "指标编码最大长度要小于 100") + private String indicatorCode; + + /** + * 标准分数 + */ + @TableField(value="standard_score") + @Schema(description="标准分数") + private Integer standardScore; + + /** + * 排序号 + */ + @TableField(value="order_index") + @Schema(description="排序号") + private Integer orderIndex; + + /** + * 状态(0启用 1停用) + */ + @TableField(value="status") + @Schema(description="状态(0启用 1停用)") + private Integer status; + + /** + * 是否被使用(0否 1是) + */ + @TableField(exist = false) + @Schema(description="是否被使用(0否 1是)") + private Integer isUsed; + + @TableField(exist = false) + @Schema(description = "评分细则") + private List indicatorRatings; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessIndicatorRating.java b/src/main/java/com/gunshi/project/ss/model/AssessIndicatorRating.java new file mode 100644 index 0000000..89fc86a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessIndicatorRating.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 考核指标评分细则 +* author: xusan +* date: 2024-09-03 17:47:16 +*/ +@Schema(description="考核指标评分细则") +@Data +@TableName("public.assess_indicator_rating") +public class AssessIndicatorRating implements Serializable { + + public final static String thisTableName = "AssessIndicatorRating"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 指标id + */ + @TableField(value="indicator_id") + @Schema(description="指标id") + @JsonSerialize(using = ToStringSerializer.class) + private Long indicatorId; + + /** + * 描述 + */ + @TableField(value="rating_desc") + @Schema(description="描述") + @Size(max = 500,message = "描述最大长度要小于 500") + private String ratingDesc; + + /** + * 标准分数 + */ + @TableField(value="standard_score") + @Schema(description="标准分数") + private Integer standardScore; + + /** + * 排序号 + */ + @TableField(value="order_index") + @Schema(description="排序号") + private Integer orderIndex; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessObject.java b/src/main/java/com/gunshi/project/ss/model/AssessObject.java new file mode 100644 index 0000000..34933ea --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessObject.java @@ -0,0 +1,94 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* 描述: 考核对象 +* author: xusan +* date: 2024-09-05 14:19:30 +*/ +@Schema(description="考核对象") +@Data +@TableName("public.assess_object") +public class AssessObject implements Serializable { + + public final static String thisTableName = "AssessObject"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 考核任务id + */ + @TableField(value="task_id") + @Schema(description="考核任务id") + @JsonSerialize(using = ToStringSerializer.class) + private Long taskId; + + /** + * 考核对象id + */ + @TableField(value="object_user_id") + @Schema(description="考核对象id") + @JsonSerialize(using = ToStringSerializer.class) + private Long objectUserId; + + /** + * 考核对象 + */ + @TableField(value="object_user_name") + @Schema(description="考核对象") + @Size(max = 100,message = "考核对象最大长度要小于 100") + private String objectUserName; + + /** + * 标准得分 + */ + @TableField(value="standard_score") + @Schema(description="标准得分") + private Integer standardScore; + + /** + * 考核得分 + */ + @TableField(value="assess_score") + @Schema(description="考核得分") + private BigDecimal assessScore; + + /** + * 考核等级(1优秀 2良好 3合格) + */ + @TableField(value="assess_level") + @Schema(description="考核等级(1优秀 2良好 3合格 4不合格)") + private Integer assessLevel; + + /** + * 状态(0未启动 1评分中 2已完成) + */ + @TableField(value="status") + @Schema(description="状态(0未启动 1评分中 2已完成)") + private Integer status; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessObjectRating.java b/src/main/java/com/gunshi/project/ss/model/AssessObjectRating.java new file mode 100644 index 0000000..0598036 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessObjectRating.java @@ -0,0 +1,63 @@ +package com.gunshi.project.ss.model; + + +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.math.BigDecimal; + +/** +* 描述: 考核对象指标得分详情 +* author: xusan +* date: 2024-09-10 10:44:14 +*/ +@Schema(description="考核对象指标得分详情") +@Data +@TableName("public.assess_object_rating") +public class AssessObjectRating implements Serializable { + + public final static String thisTableName = "AssessObjectRating"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + private Long id; + + /** + * 考核对象id + */ + @TableField(value="object_id") + @Schema(description="考核对象id") + private Long objectId; + + /** + * 考核指标id + */ + @TableField(value="indicator_id") + @Schema(description="考核指标id") + private Long indicatorId; + + /** + * 标准分数 + */ + @TableField(value="standard_score") + @Schema(description="标准分数") + private Integer standardScore; + + /** + * 考核得分 + */ + @TableField(value="assess_score") + @Schema(description="考核得分") + private BigDecimal assessScore; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessTask.java b/src/main/java/com/gunshi/project/ss/model/AssessTask.java new file mode 100644 index 0000000..9eb265e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessTask.java @@ -0,0 +1,145 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 考核任务 +* author: xusan +* date: 2024-09-05 14:19:04 +*/ +@Schema(description="考核任务") +@Data +@TableName("public.assess_task") +public class AssessTask implements Serializable { + + public final static String thisTableName = "AssessTask"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 考核任务名称 + */ + @TableField(value="task_name") + @Schema(description="考核任务名称") + @Size(max = 100,message = "考核任务名称最大长度要小于 100") + private String taskName; + + /** + * 考核频次(1年度 2季度 3月度) + */ + @TableField(value="task_freq") + @Schema(description="考核频次(1年度 2季度 3月度)") + private Integer taskFreq; + + /** + * 综合计算得分方式(1取最低 2平均) + */ + @TableField(value="score_way") + @Schema(description="综合计算得分方式(1取最低 2平均)") + private Integer scoreWay; + + /** + * 模板id + */ + @TableField(value="template_id") + @Schema(description="模板id") + @JsonSerialize(using = ToStringSerializer.class) + private Long templateId; + + @TableField(exist = false) + @Schema(description="模板信息") + private String templateName; + + /** + * 考核批次 + */ + @TableField(value="assess_batch") + @Schema(description="考核批次") + @Size(max = 100,message = "考核批次最大长度要小于 100") + private String assessBatch; + + /** + * 考核周期开始日期 + */ + @TableField(value="start_date") + @Schema(description="考核周期开始日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date startDate; + + /** + * 考核周期结束日期 + */ + @TableField(value="end_date") + @Schema(description="考核周期结束日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date endDate; + + /** + * 状态(0未启动 1评分中 2审核中 3已审核 4已作废) + */ + @TableField(value="status") + @Schema(description="状态(0未启动 1评分中 2审核中 3已审核 4已作废)") + private Integer status; + + /** + * 创建人id + */ + @TableField(value="create_user_id") + @Schema(description="创建人id") + private Long createUserId; + + /** + * 创建人名称 + */ + @TableField(value="create_user_name") + @Schema(description="创建人名称") + @Size(max = 100,message = "创建人名称最大长度要小于 100") + private String createUserName; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @TableField(exist = false) + @Schema(description = "考核组成员") + private List assessTeams; + + @TableField(exist = false) + @Schema(description = "考核对象") + private List assessObjects; + + @TableField(exist = false) + @Schema(description = "考核方案") + private List files; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessTeam.java b/src/main/java/com/gunshi/project/ss/model/AssessTeam.java new file mode 100644 index 0000000..154bc8c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessTeam.java @@ -0,0 +1,102 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* 描述: 考核组成员 +* author: xusan +* date: 2024-09-05 14:19:46 +*/ +@Schema(description="考核组成员") +@Data +@TableName("public.assess_team") +public class AssessTeam implements Serializable { + + public final static String thisTableName = "AssessTeam"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 考核对象id + */ + @TableField(value="task_id") + @Schema(description="考核任务id") + @JsonSerialize(using = ToStringSerializer.class) + private Long taskId; + + /** + * 考核对象id + */ + @TableField(value="object_id") + @Schema(description="考核对象id") + @JsonSerialize(using = ToStringSerializer.class) + private Long objectId; + + /** + * 考核成员id + */ + @TableField(value="team_user_id") + @Schema(description="考核成员id") + @JsonSerialize(using = ToStringSerializer.class) + private Long teamUserId; + + /** + * 考核成员 + */ + @TableField(value="team_user_name") + @Schema(description="考核成员") + @Size(max = 100,message = "考核成员最大长度要小于 100") + private String teamUserName; + + /** + * 标准得分 + */ + @TableField(value="standard_score") + @Schema(description="标准得分") + private Integer standardScore; + + /** + * 考核得分 + */ + @TableField(value="assess_score") + @Schema(description="考核得分") + private BigDecimal assessScore; + + /** + * 考核等级(1优秀 2良好 3合格) + */ + @TableField(value="assess_level") + @Schema(description="考核等级(1优秀 2良好 3合格)") + private Integer assessLevel; + + /** + * 状态(0未启动 1评分中 2已完成 9评分保存) + */ + @TableField(value="status") + @Schema(description="状态(0未启动 1评分中 2已完成 9评分保存)") + private Integer status; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessTeamRating.java b/src/main/java/com/gunshi/project/ss/model/AssessTeamRating.java new file mode 100644 index 0000000..163f589 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessTeamRating.java @@ -0,0 +1,138 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 考核评分详情 +* author: xusan +* date: 2024-09-05 14:20:03 +*/ +@Schema(description="考核评分详情") +@Data +@TableName("public.assess_team_rating") +public class AssessTeamRating implements Serializable { + + public final static String thisTableName = "AssessTeamRating"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 考核成员id + */ + @TableField(value="team_id") + @Schema(description="考核成员id") + @JsonSerialize(using = ToStringSerializer.class) + private Long teamId; + + /** + * 考核指标id + */ + @TableField(value="indicator_id") + @Schema(description="考核指标id") + @JsonSerialize(using = ToStringSerializer.class) + private Long indicatorId; + + /** + * 标准分数 + */ + @TableField(value="standard_score") + @Schema(description="标准分数") + private Integer standardScore; + + /** + * 考核得分 + */ + @TableField(value="assess_score") + @Schema(description="考核得分") + private BigDecimal assessScore; + + /** + * 是否需要整改(0否 1是) + */ + @TableField(value="is_need_rectify") + @Schema(description="是否需要整改(0否 1是)") + private Integer isNeedRectify; + + /** + * 问题描述 + */ + @TableField(value="problem_desc") + @Schema(description="问题描述") + @Size(max = 500,message = "问题描述最大长度要小于 500") + private String problemDesc; + + /** + * 整改要求 + */ + @TableField(value="rectify_requirement") + @Schema(description="整改要求") + @Size(max = 500,message = "整改要求最大长度要小于 500") + private String rectifyRequirement; + + /** + * 整改期限 + */ + @TableField(value="rectify_last_date") + @Schema(description="整改期限") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date rectifyLastDate; + + /** + * 整改状态(0未整改 1已整改) + */ + @TableField(value="rectify_status") + @Schema(description="整改状态(0未整改 1已整改)") + private Integer rectifyStatus; + + /** + * 完成日期 + */ + @TableField(value="finish_date") + @Schema(description="完成日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date finishDate; + + /** + * 整改说明 + */ + @TableField(value="rectify_desc") + @Schema(description="整改说明") + @Size(max = 500,message = "整改说明最大长度要小于 500") + private String rectifyDesc; + + @TableField(exist = false) + @Schema(description = "现场图片") + private List files; + + @TableField(exist = false) + @Schema(description = "整改附件") + private List rectifyFiles; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessTemplate.java b/src/main/java/com/gunshi/project/ss/model/AssessTemplate.java new file mode 100644 index 0000000..23ca8da --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessTemplate.java @@ -0,0 +1,129 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 考核模板 +* author: xusan +* date: 2024-09-04 13:42:39 +*/ +@Schema(description="考核模板") +@Data +@TableName("public.assess_template") +public class AssessTemplate implements Serializable { + + public final static String thisTableName = "AssessTemplate"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 模板名称 + */ + @TableField(value="template_name") + @Schema(description="模板名称") + @Size(max = 100,message = "模板名称最大长度要小于 100") + private String templateName; + + /** + * 考核频次(1年度 2季度 3月度) + */ + @TableField(value="template_freq") + @Schema(description="考核频次(1年度 2季度 3月度)") + private Integer templateFreq; + + /** + * 标准分数 + */ + @TableField(value="standard_score") + @Schema(description="标准分数") + private Integer standardScore; + + /** + * 优秀分 + */ + @TableField(value="excellent_score") + @Schema(description="优秀分") + private BigDecimal excellentScore; + + /** + * 良好分 + */ + @TableField(value="good_score") + @Schema(description="良好分") + private BigDecimal goodScore; + + /** + * 合格分 + */ + @TableField(value="pass_score") + @Schema(description="合格分") + private BigDecimal passScore; + + /** + * 状态(0启用 1停用) + */ + @TableField(value="status") + @Schema(description="状态(0启用 1停用)") + private Integer status; + + /** + * 创建人id + */ + @TableField(value="create_user_id") + @Schema(description="创建人id") + private Long createUserId; + + /** + * 创建人名称 + */ + @TableField(value="create_user_name") + @Schema(description="创建人名称") + @Size(max = 100,message = "创建人名称最大长度要小于 100") + private String createUserName; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + /** + * 是否被使用(0否 1是) + */ + @TableField(exist = false) + @Schema(description="是否被使用(0否 1是)") + private Integer isUsed; + + @TableField(exist = false) + @Schema(description = "关联的考核指标") + private List indicatorIds; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AssessTemplateIndicatorRel.java b/src/main/java/com/gunshi/project/ss/model/AssessTemplateIndicatorRel.java new file mode 100644 index 0000000..4f7e448 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AssessTemplateIndicatorRel.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 模板关联指标 +* author: xusan +* date: 2024-09-04 13:43:04 +*/ +@Schema(description="模板关联指标") +@Data +@TableName("public.assess_template_indicator_rel") +public class AssessTemplateIndicatorRel implements Serializable { + + public final static String thisTableName = "AssessTemplateIndicatorRel"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 模板id + */ + @TableField(value="template_id") + @Schema(description="模板id") + @JsonSerialize(using = ToStringSerializer.class) + private Long templateId; + + /** + * 指标id + */ + @TableField(value="indicator_id") + @Schema(description="指标id") + @JsonSerialize(using = ToStringSerializer.class) + private Long indicatorId; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttBasBase.java b/src/main/java/com/gunshi/project/ss/model/AttBasBase.java new file mode 100644 index 0000000..bfb632d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttBasBase.java @@ -0,0 +1,148 @@ +package com.gunshi.project.ss.model; + +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 jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 流域基础信息表 + */ +@Schema(description="流域基础信息表") +@Data +@TableName(value = "public.att_bas_base") +public class AttBasBase implements Serializable { + /** + * 流域代码 + */ + @TableId(value = "bas_code", type = IdType.INPUT) + @Schema(description="流域代码") + @Size(max = 18,message = "流域代码最大长度要小于 18") + @NotBlank(message = "流域代码不能为空") + private String basCode; + + /** + * 流域名称 + */ + @TableField(value = "bas_name") + @Schema(description="流域名称") + @Size(max = 100,message = "流域名称最大长度要小于 100") + private String basName; + + /** + * 左下角经度 + */ + @TableField(value = "low_left_long") + @Schema(description="左下角经度") + private BigDecimal lowLeftLong; + + /** + * 左下角纬度 + */ + @TableField(value = "low_left_lat") + @Schema(description="左下角纬度") + private BigDecimal lowLeftLat; + + /** + * 右上角经度 + */ + @TableField(value = "up_right_long") + @Schema(description="右上角经度") + private BigDecimal upRightLong; + + /** + * 右上角纬度 + */ + @TableField(value = "up_right_lat") + @Schema(description="右上角纬度") + private BigDecimal upRightLat; + + /** + * 跨界类型 未知 0 跨国并跨省 1 跨国 2 跨省 3 跨市 4 跨县 5 县界内 6 + */ + @TableField(value = "cr_over_type") + @Schema(description="跨界类型 未知 0 跨国并跨省 1 跨国 2 跨省 3 跨市 4 跨县 5 县界内 6") + @Size(max = 1,message = "跨界类型 未知 0 跨国并跨省 1 跨国 2 跨省 3 跨市 4 跨县 5 县界内 6最大长度要小于 1") + private String crOverType; + + /** + * 流域所属行政区 填名称 + */ + @TableField(value = "bas_ad_name") + @Schema(description="流域所属行政区 填名称") + @Size(max = 100,message = "流域所属行政区 填名称最大长度要小于 100") + private String basAdName; + + /** + * 流域级别 一级流域 1 二级流域 2 三级流域 3 四级流域 4 五级流域 5 六级流域 6 七级流域 7 + */ + @TableField(value = "bas_grad") + @Schema(description="流域级别 一级流域 1 二级流域 2 三级流域 3 四级流域 4 五级流域 5 六级流域 6 七级流域 7") + @Size(max = 1,message = "流域级别 一级流域 1 二级流域 2 三级流域 3 四级流域 4 五级流域 5 六级流域 6 七级流域 7最大长度要小于 1") + private String basGrad; + + /** + * 流域面积 km2 + */ + @TableField(value = "bas_area") + @Schema(description="流域面积 km2") + private BigDecimal basArea; + + /** + * 备注 + */ + @TableField(value = "note") + @Schema(description="备注") + @Size(max = 256,message = "备注最大长度要小于 256") + private String note; + + /** + * 记录生效时间 + */ + @TableField(value = "eff_date") + @Schema(description="记录生效时间") + private Date effDate; + + /** + * 记录失效时间 + */ + @TableField(value = "expr_date") + @Schema(description="记录失效时间") + private Date exprDate; + + private static final long serialVersionUID = 1L; + + public static final String COL_BAS_CODE = "bas_code"; + + public static final String COL_BAS_NAME = "bas_name"; + + public static final String COL_LOW_LEFT_LONG = "low_left_long"; + + public static final String COL_LOW_LEFT_LAT = "low_left_lat"; + + public static final String COL_UP_RIGHT_LONG = "up_right_long"; + + public static final String COL_UP_RIGHT_LAT = "up_right_lat"; + + public static final String COL_CR_OVER_TYPE = "cr_over_type"; + + public static final String COL_BAS_AD_NAME = "bas_ad_name"; + + public static final String COL_BAS_GRAD = "bas_grad"; + + public static final String COL_BAS_AREA = "bas_area"; + + public static final String COL_NOTE = "note"; + + public static final String COL_EFF_DATE = "eff_date"; + + public static final String COL_EXPR_DATE = "expr_date"; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttCctvBase.java b/src/main/java/com/gunshi/project/ss/model/AttCctvBase.java new file mode 100644 index 0000000..2921b4a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttCctvBase.java @@ -0,0 +1,142 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 视频基本信息表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="视频基本信息表") +@Data +@TableName("public.att_cctv_base") +public class AttCctvBase implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="id") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 序列号 + */ + @TableField(value="index_code") + @Schema(description="序列号") + @Size(max = 150,message = "序列号最大长度要小于 150") + @NotBlank(message = "序列号不能为空",groups = {Insert.class, Update.class}) + private String indexCode; + + /** + * 摄像头名称 + */ + @TableField(value="name") + @Schema(description="摄像头名称") + @Size(max = 150,message = "摄像头名称最大长度要小于 150") + private String name; + + /** + * ip端口 + */ + @TableField(value="ip_address") + @Schema(description="ip端口") + @Size(max = 20,message = "ip端口最大长度要小于 20") + private String ipAddress; + + /** + * 通道号 + */ + @TableField(value="chan") + @Schema(description="通道号") + @Size(max = 150,message = "通道号最大长度要小于 150") + private String chan; + + /** + * 类型(1球机 2枪机) + */ + @TableField(value="type") + @Schema(description="类型(1球机 2枪机)") + private Integer type; + + /** + * 建成日期 + */ + @TableField(value="build_date") + @Schema(description="建成日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date buildDate; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + private String lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + private String lttd; + + /** + * menu_id + */ + @TableField(value="menu_id") + @Schema(description="menu_id") + private Long menuId; + + /** + * menu_id + */ + @TableField(exist = false) + @Schema(description="所在区域") + private String menuName; + + /** + * 备注 + */ + @TableField(value="remark") + @Schema(description="备注") + @Size(max = 500,message = "备注最大长度要小于 500") + private String remark; + + /** + * create_time + */ + @TableField(value="create_time") + @Schema(description="create_time") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + + @Schema(description = "状态 0 离线 1在线") + private Integer status; + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttDamBase.java b/src/main/java/com/gunshi/project/ss/model/AttDamBase.java new file mode 100644 index 0000000..6b5ae0c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttDamBase.java @@ -0,0 +1,165 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Delete; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 大坝表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="大坝表") +@Data +@TableName("public.att_dam_base") +public class AttDamBase implements Serializable { + + + private static final long serialVersionUID = 1L; + /** + * 主键 + */ + @TableId(value="dam_code", type= IdType.AUTO) + @Schema(description="主键") + @Size(max = 32,message = "主键最大长度要小于 32") + @NotBlank(message = "主键不能为空",groups = { Update.class, Delete.class}) + private String damCode; + + /** + * 大坝名称 + */ + @TableField(value="dam_name") + @Schema(description="大坝名称") + @Size(max = 30,message = "大坝名称最大长度要小于 30") + private String damName; + + /** + * 水库编码 + */ + @TableField(value="res_code") + @Schema(description="水库编码") + @Size(max = 32,message = "水库编码最大长度要小于 32") + private String resCode; + + /** + * 是否主坝(0否 1是) + */ + @TableField(value="is_main") + @Schema(description="是否主坝(0否 1是 2拦洪坝)") + private Integer isMain; + + /** + * 建筑物型式 + */ + @TableField(value="build_type") + @Schema(description="建筑物型式") + @Size(max = 30,message = "建筑物型式最大长度要小于 30") + private String buildType; + + /** + * 地基特性 + */ + @TableField(value="found_character") + @Schema(description="地基特性") + @Size(max = 30,message = "地基特性最大长度要小于 30") + private String foundCharacter; + + /** + * 最大坝高(m) + */ + @TableField(value="dam_max_heig") + @Schema(description="最大坝高(m)") + private String damMaxHeig; + + /** + * 坝顶高程(m) + */ + @TableField(value="dam_top_elev") + @Schema(description="坝顶高程(m)") + private String damTopElev; + + /** + * 坝顶长度(m) + */ + @TableField(value="dam_top_len") + @Schema(description="坝顶长度(m)") + private String damTopLen; + + /** + * 坝顶宽度(m) + */ + @TableField(value="dam_top_wid") + @Schema(description="坝顶宽度(m)") + private String damTopWid; + + /** + * 防浪墙顶高程 + */ + @TableField(value="dam_wave_wall") + @Schema(description="防浪墙顶高程") + private String damWaveWall; + + /** + * 开工日期 + */ + @TableField(value="start_date") + @Schema(description="开工日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date startDate; + + /** + * 竣工日期 + */ + @TableField(value="end_date") + @Schema(description="竣工日期") + // @Size(max = 0,message = "竣工日期最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date endDate; + + /** + * 蓄水日期 + */ + @TableField(value="storage_date") + @Schema(description="蓄水日期") + // @Size(max = 0,message = "蓄水日期最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date storageDate; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + // @Size(max = 0,message = "创建时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @TableField(value="main_basic_intensity_of_an_earth_quake") + @Schema(description = "地震基本烈度") + private String mainBasicIntensityOfAnEarthQuake; + + @TableField(value="main_earthquake_acceleration") + @Schema(description = "地震峰值加速度") + private BigDecimal mainEarthquakeAcceleration;// 主坝-地震峰值加速度 + + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttDamProfile.java b/src/main/java/com/gunshi/project/ss/model/AttDamProfile.java new file mode 100644 index 0000000..50d464c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttDamProfile.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.model; + + +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 jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** +* 描述: 监测断面信息表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="监测断面信息表") +@Data +@TableName("public.att_dam_profile") +public class AttDamProfile implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 断面编号 + */ + @TableId(value="profile_code", type= IdType.AUTO) + @Schema(description="断面编号") + @Size(max = 100,message = "断面编号最大长度要小于 100") + @NotBlank(message = "断面编号不能为空") + private String profileCode; + + /** + * 断面名称 + */ + @TableField(value="profile_name") + @Schema(description="断面名称") + @Size(max = 200,message = "断面名称最大长度要小于 200") + private String profileName; + + /** + * 大坝编号 + */ + @TableField(value="dam_code") + @Schema(description="大坝编号") + @Size(max = 32,message = "大坝编号最大长度要小于 32") + private String damCode; + + /** + * 备注/描述 + */ + @TableField(value="remark") + @Schema(description="备注/描述") + @Size(max = 250,message = "备注/描述最大长度要小于 250") + private String remark; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttGateB.java b/src/main/java/com/gunshi/project/ss/model/AttGateB.java new file mode 100644 index 0000000..a70f00e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttGateB.java @@ -0,0 +1,405 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 水闸基本情况调查表 +* author: xusan +* date: 2024-09-26 10:44:05 +*/ +@Schema(description="水闸基本情况调查表") +@Data +@TableName("public.att_gate_b") +public class AttGateB implements Serializable { + + public final static String thisTableName = "AttGateB"; + + private static final long serialVersionUID = 1L; + + /** + * 水闸工程代码 + */ + @TableId(value="gate_code", type= IdType.AUTO) + @Schema(description="水闸工程代码") + @Size(max = 20,message = "水闸工程代码最大长度要小于 20") + @NotBlank(message = "水闸工程代码不能为空") + private String gateCode; + + /** + * 水闸名称 + */ + @TableField(value="gate_name") + @Schema(description="水闸名称") + @Size(max = 100,message = "水闸名称最大长度要小于 100") + @NotBlank(message = "水闸名称不能为空") + private String gateName; + + /** + * 管理单位 + */ + @TableField(value="eng_man_name") + @Schema(description="管理单位") + @Size(max = 255,message = "管理单位最大长度要小于 255") + private String engManName; + + /** + * 所属行政位置 + */ + @TableField(value="ad_namee") + @Schema(description="所属行政位置") + @Size(max = 255,message = "所属行政位置最大长度要小于 255") + private String adNamee; + + /** + * 所在渠道 + */ + @TableField(value="chan_name") + @Schema(description="所在渠道") + @Size(max = 255,message = "所在渠道最大长度要小于 255") + private String chanName; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + private BigDecimal lttd; + + /** + * 桩号 + */ + @TableField(value="bnch") + @Schema(description="桩号") + @Size(max = 12,message = "桩号最大长度要小于 12") + private String bnch; + + /** + * 闸孔数量 + */ + @TableField(value="gaor_num") + @Schema(description="闸孔数量") + private Integer gaorNum; + + /** + * 水闸类别:1分(泄)洪闸,2节制闸,3排(退)水闸,4引(进)水闸,5 挡潮闸,6 船闸,9其他 + */ + @TableField(value="waga_type") + @Schema(description="水闸类别:1分(泄)洪闸,2节制闸,3排(退)水闸,4引(进)水闸,5 挡潮闸,6 船闸,9其他") + @Size(max = 50,message = "水闸类别:1分(泄)洪闸,2节制闸,3排(退)水闸,4引(进)水闸,5 挡潮闸,6 船闸,9其他最大长度要小于 50") + private String wagaType; + + /** + * 闸门类型 + */ + @TableField(value="gate_tp") + @Schema(description="闸门类型") + @Size(max = 30,message = "闸门类型最大长度要小于 30") + private String gateTp; + + /** + * 闸门尺寸(m) + */ + @TableField(value="gate_size") + @Schema(description="闸门尺寸(m)") + @Size(max = 255,message = "闸门尺寸(m)最大长度要小于 255") + private String gateSize; + + /** + * 动力类型:1手动,2电动,3手电两用 + */ + @TableField(value="pwr_tp") + @Schema(description="动力类型:1手动,2电动,3手电两用") + @Size(max = 50,message = "动力类型:1手动,2电动,3手电两用最大长度要小于 50") + private String pwrTp; + + /** + * 启闭设备类型:1卷扬式,2螺杆式,3凹轮式,4涡轮式,5丝杆式 + */ + @TableField(value="hdgr_tp") + @Schema(description="启闭设备类型:1卷扬式,2螺杆式,3凹轮式,4涡轮式,5丝杆式") + @Size(max = 50,message = "启闭设备类型:1卷扬式,2螺杆式,3凹轮式,4涡轮式,5丝杆式最大长度要小于 50") + private String hdgrTp; + + /** + * 进口高程(m) + */ + @TableField(value="in_ele") + @Schema(description="进口高程(m)") + private BigDecimal inEle; + + /** + * 出口高程(m) + */ + @TableField(value="out_ele") + @Schema(description="出口高程(m)") + private BigDecimal outEle; + + /** + * 设计流量(m3/s) + */ + @TableField(value="dsfl") + @Schema(description="设计流量(m3/s)") + private BigDecimal dsfl; + + /** + * 实达流量(m3/s) + */ + @TableField(value="stfl") + @Schema(description="实达流量(m3/s)") + private BigDecimal stfl; + + /** + * 建成时间 + */ + @TableField(value="comp_date") + @Schema(description="建成时间") + @Size(max = 10,message = "建成时间最大长度要小于 10") + private String compDate; + + /** + * 更新或维修时间 + */ + @TableField(value="updser_date") + @Schema(description="更新或维修时间") + @Size(max = 10,message = "更新或维修时间最大长度要小于 10") + private String updserDate; + + /** + * 更新或维修原因 + */ + @TableField(value="updser_rsn") + @Schema(description="更新或维修原因") + @Size(max = 50,message = "更新或维修原因最大长度要小于 50") + private String updserRsn; + + /** + * 更新或维修投资 + */ + @TableField(value="updser_invst") + @Schema(description="更新或维修投资") + private BigDecimal updserInvst; + + /** + * 工程等别:1Ⅰ,2Ⅱ,3Ⅲ,4Ⅳ,5Ⅴ + */ + @TableField(value="eng_grad") + @Schema(description="工程等别:1Ⅰ,2Ⅱ,3Ⅲ,4Ⅳ,5Ⅴ") + @Size(max = 50,message = "工程等别:1Ⅰ,2Ⅱ,3Ⅲ,4Ⅳ,5Ⅴ最大长度要小于 50") + private String engGrad; + + /** + * 运行情况:1在用良好,2在用故障,3停用 + */ + @TableField(value="run_stat") + @Schema(description="运行情况:1在用良好,2在用故障,3停用") + @Size(max = 50,message = "运行情况:1在用良好,2在用故障,3停用最大长度要小于 50") + private String runStat; + + /** + * 备注 + */ + @TableField(value="note") + @Schema(description="备注") + @Size(max = 255,message = "备注最大长度要小于 255") + private String note; + + /** + * 起点经度 + */ + @TableField(value="start_long") + @Schema(description="起点经度") + private BigDecimal startLong; + + /** + * 起点纬度 + */ + @TableField(value="start_lat") + @Schema(description="起点纬度") + private BigDecimal startLat; + + /** + * 终点经度 + */ + @TableField(value="end_long") + @Schema(description="终点经度") + private BigDecimal endLong; + + /** + * 终点纬度 + */ + @TableField(value="end_lat") + @Schema(description="终点纬度") + private BigDecimal endLat; + + /** + * 水闸用途 + */ + @TableField(value="waga_use") + @Schema(description="水闸用途") + @Size(max = 255,message = "水闸用途最大长度要小于 255") + private String wagaUse; + + /** + * 取水水源类型:1水库,2湖泊,3河流,4其他 + */ + @TableField(value="wain_waso_type") + @Schema(description="取水水源类型:1水库,2湖泊,3河流,4其他") + @Size(max = 50,message = "取水水源类型:1水库,2湖泊,3河流,4其他最大长度要小于 50") + private String wainWasoType; + + /** + * 最大过闸流量(m3/s) + */ + @TableField(value="lock_disc") + @Schema(description="最大过闸流量(m3/s)") + private BigDecimal lockDisc; + + /** + * 装机功率(kw) + */ + @TableField(value="ins_pow") + @Schema(description="装机功率(kw)") + private BigDecimal insPow; + + /** + * 设计装机总容量(mw) + */ + @TableField(value="des_tot_ins_cap") + @Schema(description="设计装机总容量(mw)") + @Size(max = 255,message = "设计装机总容量(mw)最大长度要小于 255") + private String desTotInsCap; + + /** + * 工程建设情况:0未建,1在建,2已建 + */ + @TableField(value="eng_stat") + @Schema(description="工程建设情况:0未建,1在建,2已建") + @Size(max = 50,message = "工程建设情况:0未建,1在建,2已建最大长度要小于 50") + private String engStat; + + /** + * 开工时间 + */ + @TableField(value="start_date") + @Schema(description="开工时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date startDate; + + /** + * 归口管理部门:1水利部门,2电力部门,3农业部门,4 林业部门,5城建部门,6航运部门,7环保部门,9其他部门 + */ + @TableField(value="adm_dep") + @Schema(description="归口管理部门:1水利部门,2电力部门,3农业部门,4 林业部门,5城建部门,6航运部门,7环保部门,9其他部门") + @Size(max = 1,message = "归口管理部门:1水利部门,2电力部门,3农业部门,4 林业部门,5城建部门,6航运部门,7环保部门,9其他部门最大长度要小于 1") + private String admDep; + + /** + * 属性采集时间 + */ + @TableField(value="coll_date") + @Schema(description="属性采集时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date collDate; + + /** + * 属性更新时间 + */ + @TableField(value="upd_date") + @Schema(description="属性更新时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date updDate; + + /** + * 是否可控 0 否 1 是 + */ + @TableField(value="ctrl_type") + @Schema(description="是否可控 0 否 1 是") + private Integer ctrlType; + + /** + * 闸控代码 + */ + @TableField(value="stcd") + @Schema(description="闸控代码") + @Size(max = 10,message = "闸控代码最大长度要小于 10") + private String stcd; + + /** + * 独立密码 + */ + @TableField(value="ctrl_pass") + @Schema(description="独立密码") + @Size(max = 16,message = "独立密码最大长度要小于 16") + @NotBlank(message = "独立密码不能为空") + private String ctrlPass; + + /** + * max_hgt + */ + @TableField(value="max_hgt") + @Schema(description="max_hgt") + private BigDecimal maxHgt; + + /** + * min_hgt + */ + @TableField(value="min_hgt") + @Schema(description="min_hgt") + private BigDecimal minHgt; + + /** + * protocol + */ + @TableField(value="protocol") + @Schema(description="protocol") + @Size(max = 50,message = "protocol最大长度要小于 50") + private String protocol; + + /** + * plc控制版本,1自动令,2手动令,空非plc + */ + @TableField(value="plc_type") + @Schema(description="plc控制版本,1自动令,2手动令,空非plc") + private Integer plcType; + + /** + * sort_order + */ + @TableField(value="sort_order") + @Schema(description="sort_order") + private Integer sortOrder; + + /** + * 楚禹rtu摄像头数量 + */ + @TableField(value="camera_num") + @Schema(description="楚禹rtu摄像头数量") + private Integer cameraNum; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttGateValve.java b/src/main/java/com/gunshi/project/ss/model/AttGateValve.java new file mode 100644 index 0000000..184b891 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttGateValve.java @@ -0,0 +1,177 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 闸阀信息表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="闸阀信息表") +@Data +@TableName("public.att_gate_valve") +public class AttGateValve implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 闸阀编码 + */ + @TableId(value="valve_code", type= IdType.AUTO) + @Schema(description="闸阀编码") + @Size(max = 20,message = "闸阀编码最大长度要小于 32") + @NotBlank(message = "闸阀编码不能为空",groups = {Update.class}) + private String valveCode; + + /** + * 闸阀名称 + */ + @TableField(value="valve_name") + @Schema(description="闸阀名称") + @Size(max = 200,message = "闸阀名称最大长度要小于 200") + private String valveName; + + /** + * 所在位置 + */ + @TableField(value="gtlc") + @Schema(description="所在位置") + @Size(max = 200,message = "所在位置最大长度要小于 200") + private String gtlc; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + private String lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + private String lttd; + + /** + * 产品类型 dict_id + */ + @TableField(value="type") + @Schema(description="产品类型 dict_id") + private Long type; + + /** + * 产品型号 + */ + @TableField(value="model") + @Schema(description="产品型号") + @Size(max = 200,message = "产品型号最大长度要小于 200") + private String model; + + /** + * 产品规格 + */ + @TableField(value="spe") + @Schema(description="产品规格") + @Size(max = 200,message = "产品规格最大长度要小于 200") + private String spe; + + /** + * 结构长度 + */ + @TableField(value="len") + @Schema(description="结构长度") + @Size(max = 200,message = "结构长度最大长度要小于 200") + private String len; + /** + * 概化图X + */ + @TableField(value="img_x") + @Schema(description="概化图X") + @Size(max = 200,message = "概化图X最大长度要小于 200") + private String imgX; + + /** + * 概化图Y + */ + @TableField(value="img_y") + @Schema(description="概化图Y") + @Size(max = 200,message = "概化图Y最大长度要小于 200") + private String imgY; + + /** + * remark + */ + @TableField(value="remark") + @Schema(description="remark") + @Size(max = 250,message = "remark最大长度要小于 250") + private String remark; + + /** + * create_time + */ + @TableField(value="create_time") + @Schema(description="create_time") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + + /** + * 法兰尺寸 + */ + @TableField(value="flange_len") + @Schema(description="法兰尺寸") + @Size(max = 200,message = "法兰尺寸最大长度要小于 200") + private String flangeLen; + + /** + * 生产厂家 + */ + @TableField(value="manufacturer") + @Schema(description="生产厂家") + @Size(max = 200,message = "生产厂家最大长度要小于 200") + private String manufacturer; + + /** + * 联系电话 + */ + @TableField(value="contact_cell") + @Schema(description="联系电话") + @Size(max = 200,message = "联系电话最大长度要小于 200") + private String contactCell; + + /** + * 联系人 + */ + @TableField(value="contacts") + @Schema(description="联系人") + @Size(max = 200,message = "联系人最大长度要小于 200") + private String contacts; + + /** + * 是否可手动控制 + */ + @TableField(value="manual_operation") + @Schema(description="是否可手动控制") + private Boolean manualOperation; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttMeaWeir.java b/src/main/java/com/gunshi/project/ss/model/AttMeaWeir.java new file mode 100644 index 0000000..0fc7668 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttMeaWeir.java @@ -0,0 +1,135 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 量水堰表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="量水堰表") +@Data +@TableName("public.att_mea_weir") +public class AttMeaWeir implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="weir_code", type= IdType.AUTO) + @Schema(description="主键") + @Size(max = 32,message = "主键最大长度要小于 32") + @NotBlank(message = "主键不能为空",groups = {Update.class}) + private String weirCode; + + /** + * 量水堰名称 + */ + @TableField(value="weir_name") + @Schema(description="量水堰名称") + @Size(max = 30,message = "量水堰名称最大长度要小于 30") + private String weirName; + + /** + * 行政区划 + */ + @TableField(value="adcd") + @Schema(description="行政区划") + @Size(max = 100,message = "行政区划最大长度要小于 100") + private String adcd; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + private String lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + private String lttd; + + /** + * 设施类别 + */ + @TableField(value="type") + @Schema(description="设施类别") + private Integer type; + + /** + * 所在位置 + */ + @TableField(value="location") + @Schema(description="所在位置") + @Size(max = 300,message = "所在位置最大长度要小于 300") + private String location; + + /** + * 结构形式 + */ + @TableField(value="style") + @Schema(description="结构形式") + @Size(max = 100,message = "结构形式最大长度要小于 100") + private String style; + + /** + * 建成日期 + */ + @TableField(value="build_date") + @Schema(description="建成日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date buildDate; + + /** + * 设计流量 + */ + @TableField(value="des_q") + @Schema(description="设计流量") + // @Size(max = 0,message = "设计流量最大长度要小于 0") + private String desQ; + + /** + * 实达流量 + */ + @TableField(value="real_q") + @Schema(description="实达流量") + // @Size(max = 0,message = "实达流量最大长度要小于 0") + private String realQ; + + /** + * 备注 + */ + @TableField(value="remark") + @Schema(description="备注") + @Size(max = 500,message = "备注最大长度要小于 500") + private String remark; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + // @Size(max = 0,message = "创建时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttResBase.java b/src/main/java/com/gunshi/project/ss/model/AttResBase.java new file mode 100644 index 0000000..d48d9f7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttResBase.java @@ -0,0 +1,610 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 水库基本信息表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库基本信息表") +@Data +@TableName("public.att_res_base") +public class AttResBase implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 水库代码 + */ + @TableId(value="res_code", type= IdType.AUTO) + @Schema(description="水库代码") + @Size(max = 32,message = "水库代码最大长度要小于 32") + @NotBlank(message = "水库代码不能为空") + private String resCode; + + /** + * 水库名称 + */ + @TableField(value="res_name") + @Schema(description="水库名称") + @Size(max = 100,message = "水库名称最大长度要小于 100") + @NotBlank(message = "水库名称不能为空") + private String resName; + + /** + * 左下角经度 + */ + @TableField(value="low_left_long") + @Schema(description="左下角经度") + private BigDecimal lowLeftLong; + + /** + * 左下角纬度 + */ + @TableField(value="low_left_lat") + @Schema(description="左下角纬度") + private BigDecimal lowLeftLat; + + /** + * 右上角经度 + */ + @TableField(value="up_right_long") + @Schema(description="右上角经度") + private BigDecimal upRightLong; + + /** + * 右上角纬度 + */ + @TableField(value="up_right_lat") + @Schema(description="右上角纬度") + private BigDecimal upRightLat; + + /** + * 水库所在位置 + */ + @TableField(value="res_loc") + @Schema(description="水库所在位置") + @Size(max = 256,message = "水库所在位置最大长度要小于 256") + private String resLoc; + + /** + * 水库类型 山丘水库 1 平原水库 2 地下水库 3 + */ + @TableField(value="res_type") + @Schema(description="水库类型 山丘水库 1 平原水库 2 地下水库 3") + @Size(max = 1,message = "水库类型 山丘水库 1 平原水库 2 地下水库 3最大长度要小于 1") + private String resType; + + /** + * 工程等别 Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5 + */ + @TableField(value="eng_grad") + @Schema(description="工程等别 Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5") + @Size(max = 1,message = "工程等别 Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5最大长度要小于 1") + private String engGrad; + + /** + * 工程规模 大 (1)型 1 大 (2)型 2 中型 3 小 (1)型 4 小 (2)型 5 其他 9 + */ + @TableField(value="eng_scal") + @Schema(description="工程规模 大 (1)型 1 大 (2)型 2 中型 3 小 (1)型 4 小 (2)型 5 其他 9") + @Size(max = 1,message = "工程规模 大 (1)型 1 大 (2)型 2 中型 3 小 (1)型 4 小 (2)型 5 其他 9最大长度要小于 1") + private String engScal; + + /** + * 坝址控制流域面积 + */ + @TableField(value="wat_shed_area") + @Schema(description="坝址控制流域面积") + private BigDecimal watShedArea; + + /** + * 防洪高水位 + */ + @TableField(value="upp_lev_flco") + @Schema(description="防洪高水位") + private BigDecimal uppLevFlco; + + /** + * 正常蓄水位 + */ + @TableField(value="norm_wat_lev") + @Schema(description="正常蓄水位") + // @Size(max = 0,message = "正常蓄水位最大长度要小于 0") + private BigDecimal normWatLev; + + /** + * 正常蓄水位相应水面面积 + */ + @TableField(value="norm_pool_stag_area") + @Schema(description="正常蓄水位相应水面面积") + // @Size(max = 0,message = "正常蓄水位相应水面面积最大长度要小于 0") + private BigDecimal normPoolStagArea; + + /** + * 正常蓄水位相应库容 + */ + @TableField(value="norm_pool_stag_cap") + @Schema(description="正常蓄水位相应库容") + // @Size(max = 0,message = "正常蓄水位相应库容最大长度要小于 0") + private BigDecimal normPoolStagCap; + + /** + * 主汛期防洪限制水位 + */ + @TableField(value="fl_low_lim_lev") + @Schema(description="主汛期防洪限制水位") + private BigDecimal flLowLimLev; + + /** + * 防洪限制水位库容 + */ + @TableField(value="fl_low_lim_lev_cap") + @Schema(description="防洪限制水位库容") + // @Size(max = 0,message = "防洪限制水位库容最大长度要小于 0") + private BigDecimal flLowLimLevCap; + + /** + * 死水位 + */ + @TableField(value="dead_lev") + @Schema(description="死水位") + // @Size(max = 0,message = "死水位最大长度要小于 0") + private BigDecimal deadLev; + + /** + * 总库容 + */ + @TableField(value="tot_cap") + @Schema(description="总库容") + // @Size(max = 0,message = "总库容最大长度要小于 0") + private BigDecimal totCap; + + /** + * 兴利库容 + */ + @TableField(value="ben_res_cap") + @Schema(description="兴利库容") + // @Size(max = 0,message = "兴利库容最大长度要小于 0") + private BigDecimal benResCap; + + /** + * 死库容 + */ + @TableField(value="dead_cap") + @Schema(description="死库容") + // @Size(max = 0,message = "死库容最大长度要小于 0") + private BigDecimal deadCap; + + /** + * 调洪库容 + */ + @TableField(value="stor_fl_cap") + @Schema(description="调洪库容") + // @Size(max = 0,message = "调洪库容最大长度要小于 0") + private BigDecimal storFlCap; + + /** + * 防洪库容 + */ + @TableField(value="flco_cap") + @Schema(description="防洪库容") + // @Size(max = 0,message = "防洪库容最大长度要小于 0") + private BigDecimal flcoCap; + + /** + * 工程建设情况 在建 0 已建 1 + */ + @TableField(value="eng_stat") + @Schema(description="工程建设情况 在建 0 已建 1") + @Size(max = 1,message = "工程建设情况 在建 0 已建 1最大长度要小于 1") + private String engStat; + + /** + * 开工时间 + */ + @TableField(value="start_date") + @Schema(description="开工时间") + // @Size(max = 0,message = "开工时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date startDate; + + /** + * 建成时间 + */ + @TableField(value="comp_date") + @Schema(description="建成时间") + // @Size(max = 0,message = "建成时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date compDate; + + /** + * 归口管理部门 水利部门 1 电力部门 2 农业部门 3 林业部门 4 城建部门 5 航运部门 6 环保部门 7 其他部门 9 + */ + @TableField(value="adm_dep") + @Schema(description="归口管理部门 水利部门 1 电力部门 2 农业部门 3 林业部门 4 城建部门 5 航运部门 6 环保部门 7 其他部门 9") + @Size(max = 1,message = "归口管理部门 水利部门 1 电力部门 2 农业部门 3 林业部门 4 城建部门 5 航运部门 6 环保部门 7 其他部门 9最大长度要小于 1") + private String admDep; + + /** + * 备注 + */ + @TableField(value="note") + @Schema(description="备注") + @Size(max = 256,message = "备注最大长度要小于 256") + private String note; + + /** + * 记录生效时间 + */ + @TableField(value="eff_date") + @Schema(description="记录生效时间") + // @Size(max = 0,message = "记录生效时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date effDate; + + /** + * 记录失效时间 + */ + @TableField(value="expr_date") + @Schema(description="记录失效时间") + // @Size(max = 0,message = "记录失效时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date exprDate; + + /** + * 所在行政区划 行政区划名称 格式:省-市-县-镇 + */ + @TableField(value="adnm") + @Schema(description="所在行政区划 行政区划名称 格式:省-市-县-镇") + @Size(max = 256,message = "所在行政区划 行政区划名称 格式:省-市-县-镇最大长度要小于 256") + private String adnm; + + /** + * 所在流域 流域名称 + */ + @TableField(value="bas_name") + @Schema(description="所在流域 流域名称") + @Size(max = 256,message = "所在流域 流域名称最大长度要小于 256") + private String basName; + + /** + * 所在水系 水系名称 + */ + @TableField(value="ws_name") + @Schema(description="所在水系 水系名称") + @Size(max = 256,message = "所在水系 水系名称最大长度要小于 256") + private String wsName; + + /** + * 所在河流名称 + */ + @TableField(value="rv_name") + @Schema(description="所在河流名称") + @Size(max = 256,message = "所在河流名称最大长度要小于 256") + private String rvName; + + /** + * 注册时间 + */ + @TableField(value="reg_time") + @Schema(description="注册时间") + // @Size(max = 0,message = "注册时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date regTime; + + /** + * 注册登记号 + */ + @TableField(value="reg_sn") + @Schema(description="注册登记号") + @Size(max = 256,message = "注册登记号最大长度要小于 256") + private String regSn; + + /** + * 管理单位 管理单位名称 + */ + @TableField(value="manag_name") + @Schema(description="管理单位 管理单位名称") + @Size(max = 256,message = "管理单位 管理单位名称最大长度要小于 256") + private String managName; + + /** + * 高程基准面 基面名称 + */ + @TableField(value="elev_dat") + @Schema(description="高程基准面 基面名称") + @Size(max = 256,message = "高程基准面 基面名称最大长度要小于 256") + private BigDecimal elevDat; + + /** + * 水库功能 功能名称 + */ + @TableField(value="rsv_function") + @Schema(description="水库功能 功能名称") + @Size(max = 256,message = "水库功能 功能名称最大长度要小于 256") + private String rsvFunction; + + /** + * 溢洪道是否有闸 1:有 0:无 + */ + @TableField(value="spillway_gate") + @Schema(description="溢洪道是否有闸 1:有 0:无") + @Size(max = 1,message = "溢洪道是否有闸 1:有 0:无最大长度要小于 1") + private String spillwayGate; + + /** + * 校核洪水位 + */ + @TableField(value="cal_flood_lev") + @Schema(description="校核洪水位") + // @Size(max = 0,message = "校核洪水位最大长度要小于 0") + private BigDecimal calFloodLev; + + /** + * 设计洪水位 + */ + @TableField(value="des_flood_lev") + @Schema(description="设计洪水位") + // @Size(max = 0,message = "设计洪水位最大长度要小于 0") + private BigDecimal desFloodLev; + + /** + * 坝顶高程 + */ + @TableField(value="crest_elev") + @Schema(description="坝顶高程") + // @Size(max = 0,message = "坝顶高程最大长度要小于 0") + private BigDecimal crestElev; + + /** + * 最大坝高 + */ + @TableField(value="max_dam_heig") + @Schema(description="最大坝高") + // @Size(max = 0,message = "最大坝高最大长度要小于 0") + private BigDecimal maxDamHeig; + + /** + * 设计洪水位时最大下泄流量 + */ + @TableField(value="max_des_flood_flow") + @Schema(description="设计洪水位时最大下泄流量") + // @Size(max = 0,message = "设计洪水位时最大下泄流量最大长度要小于 0") + private BigDecimal maxDesFloodFlow; + + /** + * 校核洪水位时最大下泄流量 + */ + @TableField(value="max_cal_flood_flow") + @Schema(description="校核洪水位时最大下泄流量") + // @Size(max = 0,message = "校核洪水位时最大下泄流量最大长度要小于 0") + private BigDecimal maxCalFloodFlow; + + /** + * 下游河道安全流量 + */ + @TableField(value="ds_saft_flow") + @Schema(description="下游河道安全流量") + // @Size(max = 0,message = "下游河道安全流量最大长度要小于 0") + private BigDecimal dsSaftFlow; + + /** + * 工程概况 + */ + @TableField(value="proj_overview") + @Schema(description="工程概况") + @Size(max = 1000,message = "工程概况最大长度要小于 1000") + private String projOverview; + + /** + * 关联测站 + */ + @TableField(value="stcd") + @Schema(description="关联测站") + @Size(max = 18,message = "关联测站最大长度要小于 18") + private String stcd; + + /** + * 是否病险 1:病 + */ + @TableField(value="is_danger") + @Schema(description="是否病险 1:病 ") + // @Size(max = 0,message = "是否病险 1:病 最大长度要小于 0") + private Integer isDanger; + + /** + * 病险概况 + */ + @TableField(value="danger_overview") + @Schema(description="病险概况") + // @Size(max = 0,message = "病险概况最大长度要小于 0") + private BigDecimal dangerOverview; + + /** + * 重点水库 + */ + @TableField(value="is_important") + @Schema(description="重点水库") + // @Size(max = 0,message = "重点水库最大长度要小于 0") + private Integer isImportant; + + /** + * 经度 (°) + */ + @TableField(value="lgtd") + @Schema(description="经度 (°)") + // @Size(max = 0,message = "经度 (°)最大长度要小于 0") + private BigDecimal lgtd; + + /** + * 纬度 (°) + */ + @TableField(value="lttd") + @Schema(description="纬度 (°)") + // @Size(max = 0,message = "纬度 (°)最大长度要小于 0") + private BigDecimal lttd; + + /** + * geojson + */ + @TableField(value="geometry") + @Schema(description="geojson") + // @Size(max = 0,message = "geojson最大长度要小于 0") + private BigDecimal geometry; + + /** + * 是否有大坝安监数据 + */ + @TableField(value="has_wypress") + @Schema(description="是否有大坝安监数据") + // @Size(max = 0,message = "是否有大坝安监数据最大长度要小于 0") + private Integer hasWypress; + + /** + * adcd + */ + @TableField(value="adcd") + @Schema(description="adcd") + @Size(max = 255,message = "adcd最大长度要小于 255") + private String adcd; + + /** + * 堰顶高程,m + */ + @TableField(value="wcrstel") + @Schema(description="堰顶高程,m") + private BigDecimal wcrstel; + + /** + * feedPop + */ + @TableField(value="feed_pop") + @Schema(description="受益人口(人)") + private Integer feedPop; + + /** + * design_irr_area + */ + @TableField(value="design_irr_area") + @Schema(description="设计灌溉面积(亩)") + private BigDecimal designIrrArea; + + /** + * actual_irr_area + */ + @TableField(value="actual_irr_area") + @Schema(description="实际灌溉面积(亩)") + private BigDecimal actualIrrArea; + + /** + * actual_irr_area + */ + @TableField(value="benefit") + @Schema(description="供水效益") + private String benefit; + + /** + * 全流域面积 + */ + @TableField(value="bas_area") + @Schema(description="全流域面积") + private BigDecimal basArea; + + /** + * 坝址以上主河床长度 + */ + @TableField(value="wat_river_len") + @Schema(description="坝址以上主河床长度") + private BigDecimal watRiverLen; + + /** + * 坝址以上主河床坡降 + */ + @TableField(value="wat_river_slope") + @Schema(description="坝址以上主河床坡降") + private BigDecimal watRiverSlope; + + /** + * 多年平均降雨量(坝址处) + */ + @TableField(value="annual_avg_drp") + @Schema(description="多年平均降雨量(坝址处)") + private BigDecimal annualAvgDrp; + + /** + * 多年平均气温 + */ + @TableField(value="annual_avg_tem") + @Schema(description="多年平均气温") + private BigDecimal annualAvgTem; + + /** + * 保护人口(人) + */ + @TableField(value="protect_population") + @Schema(description="保护人口(人)") + private Double protectPopulation; + + /** + * 保护农田(亩) + */ + @TableField(value="protect_farmland") + @Schema(description="保护农田(亩)") + private Double protectFarmland; + + /** + * 地震基本烈度Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5 VI 6 + */ + @TableField(value="seismic_intensity") + @Schema(description="地震基本烈度Ⅰ 1 Ⅱ 2 Ⅲ 3 Ⅳ 4 Ⅴ 5 VI 6") + private Integer seismicIntensity; + + /** + * 地震动参数设计值 + */ + @TableField(value="seismic_parm") + @Schema(description="地震动参数设计值") + private BigDecimal seismicParm; + + /** + * 设计洪水标准及洪峰流量 + */ + @TableField(value="des_flood_peak_flow") + @Schema(description="设计洪水标准及洪峰流量") + private BigDecimal desFloodPeakFlow; + + /** + * 校核洪水标准及洪峰流量 + */ + @TableField(value="cal_flood_peak_flow") + @Schema(description="校核洪水标准及洪峰流量") + private BigDecimal calFloodPeakFlow; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + + @TableField(value="brief_tpl") + @JsonIgnore + private String briefTpl; +} diff --git a/src/main/java/com/gunshi/project/ss/model/AttResBuilding.java b/src/main/java/com/gunshi/project/ss/model/AttResBuilding.java new file mode 100644 index 0000000..11e18ae --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttResBuilding.java @@ -0,0 +1,109 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.IdType; +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.math.BigDecimal; + +/** +* 描述: 水库基本信息表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库基本信息表") +@Data +@TableName("public.att_res_building") +public class AttResBuilding implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 水库代码 + */ + @TableId(value = "id", type = IdType.INPUT) + private Integer id; + + // 主坝字段 (prefix: main_) 挡水建筑物(大坝) + private String mainType; // 主坝-坝型 建筑物型式 + private String mainFoundation; //主坝-地基特性 + private String mainBasicIntensityOfAnEarthQuake; //主坝-地震基本烈度 + private BigDecimal mainCrestElevation; // 主坝-坝顶高程(m) + private BigDecimal mainCrestLength; // 主坝-坝顶长度(m) + private BigDecimal mainCrestWidth; // 主坝-坝顶宽度(m) + private BigDecimal mainMaxHeight; // 主坝-最大坝高(m) + private BigDecimal mainEarthquakeAcceleration;// 主坝-地震峰值加速度 + private BigDecimal mainTopOfWaveBarrierElevation;// 主坝-防浪墙顶高程 + + // 副坝字段 (prefix: aux_) + private String auxType; // 副坝-坝型 + private BigDecimal auxCrestElevation; // 副坝-坝顶高程(m) + private BigDecimal auxCrestLength; // 副坝-坝顶长度(m) + private BigDecimal auxCrestWidth; // 副坝-坝顶宽度(m) + private BigDecimal auxMaxHeight; // 副坝-最大坝高(m) + + // 溢洪道字段 (prefix: spillway_) 泄水建筑物 + private String spillwayType; // 溢洪道-型式 + private String spillwayCrestType; // 溢洪道-堰顶型式 + private String spillwayFoundation; // 溢洪道-地基特性 + private BigDecimal spillwayCrestElevation; // 溢洪道-溢流堰顶高程(m) + private BigDecimal spillwayNetWidth; // 溢洪道-溢流堰净宽(m) + private String spillwayEnergyDissipation; // 溢洪道-消能型式 + private BigDecimal spillwayCheckFloodDischarge; // 溢洪道-校核洪水下泄流量(m³/s) + private BigDecimal spillwayDesignFloodDischarge; // 溢洪道-设计洪水下泄流量(m³/s) + private BigDecimal spillwayScouringDischarge; // 溢洪道-消能防冲下泄流量(m³/s) + private BigDecimal spillwayMaxSingleWidthFlow;//溢洪道-最大单宽流量 + + + // 灌溉发电洞字段 (prefix: irrigation_) + private String irrigationType; // 灌溉发电洞-型式 + private String irrigationLiningType; // 灌溉发电洞-衬砌型式 + private String irrigationFoundation; // 灌溉发电洞-地基特性 + private BigDecimal irrigationInletElevation; // 灌溉发电洞-进口底板高程(m) + private String irrigationCrossSection; // 灌溉发电洞-断面尺寸(m) + private BigDecimal irrigationLength; // 灌溉发电洞-洞长(m) + private BigDecimal irrigationDesignFlow; // 灌溉发电洞-设计流量(m³/s) + private String irrigationGateType; // 灌溉发电洞-进口闸门型式 + private String irrigationHoistType; // 灌溉发电洞-进口启闭机型式 + + // 放空洞字段 (prefix: emptying_) + private String emptyingType; // 放空洞-型式 + private String emptyingLiningType; // 放空洞-衬砌型式 + private String emptyingFoundation; // 放空洞-地基特性 + private BigDecimal emptyingInletElevation; // 放空洞-进口底板高程(m) + private String emptyingCrossSection; // 放空洞-断面尺寸(m) + private BigDecimal emptyingLength; // 放空洞-洞长(m) + private BigDecimal emptyingDesignFlow; // 放空洞-设计流量(m³/s) + private String emptyingGateType; // 放空洞-进口闸门型式 + private String emptyingHoistType; // 放空洞-进口启闭机型式 + + // 拦洪坝字段 (prefix: flood_control_) + private String floodControlType; // 拦洪坝-坝型 + private BigDecimal floodControlCrestElevation; // 拦洪坝-坝顶高程(m) + private BigDecimal floodControlCrestLength; // 拦洪坝-坝顶长度(m) + private BigDecimal floodControlCrestWidth; // 拦洪坝-坝顶宽度(m) + private BigDecimal floodControlMaxHeight; // 拦洪坝-最大坝高(m) + + // 防汛道路字段 (prefix: road_) + private BigDecimal roadLength; // 防汛道路-防汛路长度(m) + private BigDecimal roadWidth; // 防汛道路-路面宽度(m) + + //输水建筑物 (prefix: water_conveyance ) + private BigDecimal waterConveyanceFlow;//输水建筑物-设计流量 + private String waterConveyanceType;//输水建筑物-进水口形式 + private String waterConveyanceWaterIntakeType;//输水建筑物-取水方式 + private String waterConveyanceFoundation;//输水建筑物-地基特性 + private BigDecimal waterConveyanceInletBottomHigh;//输水建筑物-进口底槛高程 + private String waterConveyanceOrificeSize;//输水建筑物-孔口尺寸 + private String waterConveyanceGateType;//输水建筑物-闸门型式 + private Integer waterConveyanceHoistNum;//输水建筑物-启闭机型式容量及数量 + private String waterConveyanceTunnelType;//输水建筑物-引水隧洞型式 + private BigDecimal waterConveyanceLength;//输水建筑物-长度 + private String waterConveyanceLiningType;//输水建筑物-衬砌型式 +} + diff --git a/src/main/java/com/gunshi/project/ss/model/AttSpillwayBase.java b/src/main/java/com/gunshi/project/ss/model/AttSpillwayBase.java new file mode 100644 index 0000000..1ceb2eb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttSpillwayBase.java @@ -0,0 +1,141 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Delete; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 溢洪道 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="溢洪道") +@Data +@TableName("public.att_spillway_base") +public class AttSpillwayBase implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 溢洪道代码 + */ + @TableId(value="code", type= IdType.AUTO) + @Schema(description="溢洪道代码") + @Size(max = 32,message = "溢洪道代码最大长度要小于 32") + @NotBlank(message = "溢洪道代码不能为空",groups = { Update.class, Delete.class}) + private String code; + + /** + * 溢洪道名称 + */ + @TableField(value="name") + @Schema(description="溢洪道名称") + @Size(max = 30,message = "溢洪道名称最大长度要小于 30") + private String name; + + /** + * 型式 + */ + @TableField(value="build_type") + @Schema(description="型式") + @Size(max = 30,message = "型式最大长度要小于 30") + private String buildType; + + /** + * 堰顶型式 + */ + @TableField(value="crest_type") + @Schema(description="堰顶型式") + @Size(max = 30,message = "堰顶型式最大长度要小于 30") + private String crestType; + + /** + * 地基特性 + */ + @TableField(value="found_character") + @Schema(description="地基特性") + @Size(max = 30,message = "地基特性最大长度要小于 30") + private String foundCharacter; + + /** + * 堰顶高程(m) + */ + @TableField(value="crest_ele") + @Schema(description="堰顶高程(m)") + private String crestEle; + + /** + * 总净宽 + */ + @TableField(value="net_width") + @Schema(description="总净宽") + @Size(max = 30,message = "总净宽最大长度要小于 30") + private String netWidth; + + /** + * 消能方式 + */ + @TableField(value="elim_method") + @Schema(description="消能方式") + @Size(max = 18,message = "消能方式最大长度要小于 18") + private String elimMethod; + + /** + * 消能防冲流量 + */ + @TableField(value="elim_q") + @Schema(description="消能防冲流量") + private String elimQ; + + /** + * 最大单宽流量 + */ + @TableField(value="bwid_q") + @Schema(description="最大单宽流量") + private String bwidQ; + + /** + * 设计泄洪流量(m3/s) + */ + @TableField(value="des_q") + @Schema(description="设计泄洪流量(m3/s)") + private String desQ; + + /** + * 校核泄洪流量(m3/s) + */ + @TableField(value="cali_q") + @Schema(description="校核泄洪流量(m3/s)") + private String caliQ; + + /** + * 备注 + */ + @TableField(value="remark") + @Schema(description="备注") + @Size(max = 500,message = "备注最大长度要小于 500") + private String remark; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/AttWaterItem.java b/src/main/java/com/gunshi/project/ss/model/AttWaterItem.java new file mode 100644 index 0000000..0a12fb2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/AttWaterItem.java @@ -0,0 +1,88 @@ +package com.gunshi.project.ss.model; + + +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 jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 水质整编展示项目表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水质整编展示项目表") +@Data +@TableName("public.att_water_item") +public class AttWaterItem implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + private Long id; + + /** + * 字段名 + */ + @TableField(value="en_name") + @Schema(description="字段名") + @Size(max = 10,message = "字段名最大长度要小于 10") + private String enName; + + /** + * 中文名 + */ + @TableField(value="cn_name") + @Schema(description="中文名") + @Size(max = 10,message = "中文名最大长度要小于 10") + private String cnName; + + /** + * 单位 + */ + @TableField(value="unit") + @Schema(description="单位") + @Size(max = 10,message = "单位最大长度要小于 10") + private String unit; + + /** + * 是否显示 + */ + @TableField(value="is_show") + @Schema(description="是否显示(0 显示;1 隐藏)") + private String isShow; + + /** + * 是否启用 + */ + @TableField(value="is_enable") + @Schema(description="是否启用(0 启动;1 禁用)") + private String isEnable; + + /** + * 排序 + */ + @TableField(value="sort") + @Schema(description="排序") + private String sort; + + /** + * 是否比较(0 比较;1 不比较) + */ + @TableField(value="is_compare") + @Schema(description="是否比较(0 比较;1 不比较)") + private String isCompare; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/BroadcastStation.java b/src/main/java/com/gunshi/project/ss/model/BroadcastStation.java new file mode 100644 index 0000000..6281866 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/BroadcastStation.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 广播预警站 +* author: xusan +* date: 2024-09-25 10:19:15 +*/ +@Schema(description="广播预警站") +@Data +@TableName("public.broadcast_station") +public class BroadcastStation implements Serializable { + + public final static String thisTableName = "BroadcastStation"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 站点名称 + */ + @TableField(value="name") + @Schema(description="站点名称") + @Size(max = 100,message = "站点名称最大长度要小于 100") + @NotBlank(message = "站点名称不能为空") + private String name; + + /** + * 排序 + */ + @TableField(value="order_index") + @Schema(description="排序") + private Integer orderIndex; + + /** + * 独立密码 + */ + @TableField(value="ctrl_pass") + @Schema(description="独立密码") + @Size(max = 16,message = "独立密码最大长度要小于 16") + private String ctrlPass; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/BroadcastTemplate.java b/src/main/java/com/gunshi/project/ss/model/BroadcastTemplate.java new file mode 100644 index 0000000..a5dace4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/BroadcastTemplate.java @@ -0,0 +1,58 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 广播模板 +* author: xusan +* date: 2024-09-25 10:19:00 +*/ +@Schema(description="广播模板") +@Data +@TableName("public.broadcast_template") +public class BroadcastTemplate implements Serializable { + + public final static String thisTableName = "BroadcastTemplate"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 内容 + */ + @TableField(value="content") + @Schema(description="内容") + @Size(max = 500,message = "内容最大长度要小于 500") + @NotBlank(message = "内容不能为空") + private String content; + + /** + * 排序 + */ + @TableField(value="order_index") + @Schema(description="排序") + private Integer orderIndex; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/BroadcastWarn.java b/src/main/java/com/gunshi/project/ss/model/BroadcastWarn.java new file mode 100644 index 0000000..b0113ae --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/BroadcastWarn.java @@ -0,0 +1,99 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 广播预警信息 +* author: xusan +* date: 2024-09-25 10:17:53 +*/ +@Schema(description="广播预警信息") +@Data +@TableName("public.broadcast_warn") +public class BroadcastWarn implements Serializable { + + public final static String thisTableName = "BroadcastWarn"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 站点id + */ + @TableField(value="station_id") + @Schema(description="站点id") + @JsonSerialize(using = ToStringSerializer.class) + private Long stationId; + + @TableField(exist = false) + @Schema(description="站点名称") + private String name; + + @TableField(exist = false) + @Schema(description="站点id集合") + private List stationIds; + + /** + * 告警内容 + */ + @TableField(value="warn_content") + @Schema(description="告警内容") + @Size(max = 500,message = "告警内容最大长度要小于 500") + private String warnContent; + + /** + * 创建人id + */ + @TableField(value="create_user_id") + @Schema(description="创建人id") + private Long createUserId; + + /** + * 创建人名称 + */ + @TableField(value="create_user_name") + @Schema(description="创建人名称") + @Size(max = 100,message = "创建人名称最大长度要小于 100") + private String createUserName; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + /** + * 密码 + */ + @TableField(exist = false) + @Schema(description="密码") + private String ctrlPass; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ByLog.java b/src/main/java/com/gunshi/project/ss/model/ByLog.java new file mode 100644 index 0000000..a498b70 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ByLog.java @@ -0,0 +1,67 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@Schema(description="白蚁-日志记录") +@Data +@TableName("by_log") +public class ByLog { + + /** + * 主键 + */ + @TableId(value = "id") + @NotNull(message = "id不能为空",groups = Update.class) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "log_name") + @NotNull(message = "日志名称不能为空",groups = {Insert.class, Update.class}) + @Schema(description = "日志名称") + private String logName; + + @TableField(value = "pre_date") + @NotNull(message = "防治日期",groups = {Insert.class, Update.class}) + @Schema(description = "防治日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date preDate; + + @TableField(value = "fill_time") + @Schema(description = "填报时间 (自动生成)") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date fillTime; + + @TableField(value = "total_cost") + @Schema(description = "总花费") + private BigDecimal totalCost; + + + @TableField(value = "remark") + @Schema(description = "备注") + private String remark; + + + @TableField(exist = false) + private List details; + + + @TableField(exist = false) + private List files; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ByLogDetail.java b/src/main/java/com/gunshi/project/ss/model/ByLogDetail.java new file mode 100644 index 0000000..39b7371 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ByLogDetail.java @@ -0,0 +1,70 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description="白蚁-日志记录细节") +@Data +@TableName("by_log_detail") +public class ByLogDetail { + + /** + * 主键 + */ + @TableId(value = "id") + @NotNull(message = "id不能为空",groups = Update.class) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "by_log_id") + @NotNull(message = "日志id不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + @Schema(description = "日志id") + private Long byLogId; + + @TableField(value = "pre_place_detail_id") + @NotNull(message = "防治部位id不能为空",groups = {Insert.class, Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + @Schema(description = "防治部位id") + private Long ppdi; + + + @TableField(exist = false) + @Schema(description = "防治部位名称") + private String ppdn; + + @TableField(exist = false) + @Schema(description = "防治点id") + @JsonSerialize(using = ToStringSerializer.class) + private Long ppi; + + @TableField(exist = false) + @Schema(description = "防治点名称") + private String ppn; + + @TableField(exist = false) + @Schema(description = "防治人员") + private String prePerson; + + @TableField(value = "pre_person_id") + @Schema(description = "防治人员ID") + private String prePersonId; + + @TableField(value = "pre_method") + @Schema(description = "防治方法") + private String preMethod; + + + @TableField(value = "pre_effect") + @Schema(description = "防治效果") + private String preEffect; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ByPlan.java b/src/main/java/com/gunshi/project/ss/model/ByPlan.java new file mode 100644 index 0000000..d9ec993 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ByPlan.java @@ -0,0 +1,75 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@Schema(description="白蚁-计划管理") +@Data +@TableName("by_plan") +public class ByPlan { + + + /** + * 主键 + */ + @TableId(value = "id") + @NotNull(message = "id不能为空",groups = Update.class) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "plan_id") + @Schema(description = "计划编号") + @NotNull(message = "计划编号不能为空",groups = {Insert.class, Update.class}) + private String planId; + + @TableField(value = "plan_name") + @Schema(description = "计划名称") + private String planName; + + @TableField(value = "plan_date_start") + @Schema(description = "计划开始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date planDateStart; + + @TableField(value = "plan_date_end") + @Schema(description = "计划结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date planDateEnd; + + @TableField(value = "user_id") + @Schema(description = "用户id") + private String userId; + + @TableField(exist = false) + @Schema(description = "用户名称") + private String userName; + + @TableField(value = "predict_cost") + @Schema(description = "预算花费") + private BigDecimal predictCost; + + + @TableField(exist = false) + List byPlanDetail; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ByPlanDetail.java b/src/main/java/com/gunshi/project/ss/model/ByPlanDetail.java new file mode 100644 index 0000000..2940320 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ByPlanDetail.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description="白蚁-计划管理细节") +@Data +@TableName("by_plan_detail") +public class ByPlanDetail { + + /** + * 主键 + */ + @TableId(value = "id") + @NotNull(message = "id不能为空",groups = Update.class) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "plan_id") + @Schema(description = "计划编号") + @NotNull(message = "计划编号不能为空",groups = {Insert.class, Update.class}) + private String planId; + + @TableField(value = "pre_place_detail_id") + @Schema(description = "防治部位编号") + @NotNull(message = "防治部位编号",groups = {Insert.class, Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long ppdi; + + @TableField(exist = false) + @Schema(description = "防治部位名称 这个是给前端显示看的,不用传数据给后端") + private String ppdn; + + @TableField(exist = false) + @Schema(description = "防治点id 这个是给前端显示看的,不用传数据给后端") + @JsonSerialize(using = ToStringSerializer.class) + private Long ppi; + + @TableField(exist = false) + @Schema(description = "防治点名称 这个是给前端显示看的,不用传数据给后端") + private String ppn; + + @TableField(value = "pre_method") + @Schema(description = "防治方法") + private String preMethod; + + +} diff --git a/src/main/java/com/gunshi/project/ss/model/BzDictRel.java b/src/main/java/com/gunshi/project/ss/model/BzDictRel.java new file mode 100644 index 0000000..0d66b68 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/BzDictRel.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 业务关联字典 +* author: xusan +* date: 2024-08-28 10:05:20 +*/ +@Schema(description="业务关联字典") +@Data +@TableName("public.bz_dict_rel") +public class BzDictRel implements Serializable { + + public final static String thisTableName = "BzDictRel"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 业务id + */ + @TableField(value="business_id") + @Schema(description="业务id") + @JsonSerialize(using = ToStringSerializer.class) + private Long businessId; + + /** + * 字典id + */ + @TableField(value="sys_dict_id") + @Schema(description="字典id") + @JsonSerialize(using = ToStringSerializer.class) + private Long sysDictId; + + /** + * 业务类型 + */ + @TableField(value="group_id") + @Schema(description="业务类型") + @Size(max = 100,message = "业务类型最大长度要小于 100") + private String groupId; + + @TableField(exist = false) + @Schema(description = "字典名称") + private String dictNm; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/CctvBMenu.java b/src/main/java/com/gunshi/project/ss/model/CctvBMenu.java new file mode 100644 index 0000000..1476109 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/CctvBMenu.java @@ -0,0 +1,70 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** +* 描述: 视频点目录 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="视频点目录") +@Data +@TableName("public.cctv_b_menu") +public class CctvBMenu implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="id") + @NotNull(message = "id不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * parent_id + */ + @TableField(value="parent_id") + @Schema(description="parent_id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentId; + + /** + * name + */ + @TableField(value="name") + @Schema(description="name") + @Size(max = 255,message = "name最大长度要小于 255") + @NotBlank(message = "name不能为空") + private String name; + + /** + * 排序 + */ + @TableField(value="order_index") + @Schema(description="排序") + private Integer orderIndex; + + @TableField(exist = false) + @Schema(description="子集") + private List children; + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/CommCreate.java b/src/main/java/com/gunshi/project/ss/model/CommCreate.java new file mode 100644 index 0000000..33de535 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/CommCreate.java @@ -0,0 +1,51 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/25. + * + * @author XuSan + * @version 1.0 + */ +@Schema(description="新增公共模型") +@Data +public class CommCreate { + + + /** + * 创建人Id + */ + @TableField(value="create_by" ,updateStrategy = FieldStrategy.NOT_NULL) + @Schema(description="填报人Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long createBy; + + /** + * 创建人名字 + */ + @TableField(value="create_name" ,updateStrategy = FieldStrategy.NOT_NULL) + @Schema(description="填报人名字") + @Size(max = 30,message = "填报人名字最大长度要小于 30") + private String createName; + + /** + * 创建人时间 + */ + @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) + @TableField(value="create_time" ,updateStrategy = FieldStrategy.NOT_NULL) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/CommUpdate.java b/src/main/java/com/gunshi/project/ss/model/CommUpdate.java new file mode 100644 index 0000000..3929557 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/CommUpdate.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * Description: + * Created by XuSan on 2024/9/25. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="修改公共模型") +@Data +public class CommUpdate extends CommCreate{ + + + /** + * 更新人Id + */ + @TableField(value="update_by" ,updateStrategy = FieldStrategy.NOT_NULL) + @Schema(description="更新人Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long updateBy; + + /** + * 更新人名字 + */ + @TableField(value="update_name" ,updateStrategy = FieldStrategy.NOT_NULL) + @Schema(description="更新人名字") + @Size(max = 30,message = "更新人名字最大长度要小于 30") + private String updateName; + + /** + * 更新时间 + */ + @Schema(description="更新时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) + @TableField(value="update_time" ,updateStrategy = FieldStrategy.NOT_NULL) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date updateTime; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/DispatchRecord.java b/src/main/java/com/gunshi/project/ss/model/DispatchRecord.java new file mode 100644 index 0000000..0220527 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/DispatchRecord.java @@ -0,0 +1,110 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 调度记录 +* author: xusan +* date: 2024-10-09 09:56:28 +*/ +@Schema(description="调度记录") +@Data +@TableName("public.dispatch_record") +public class DispatchRecord implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "id不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 调度开始时间 + */ + @TableField(value="start_time") + @Schema(description="调度开始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date startTime; + + /** + * 调度结束时间 + */ + @TableField(value="end_time") + @Schema(description="调度结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date endTime; + + /** + * 状态(0执行中 1完成) + */ + @TableField(value="status") + @Schema(description="状态(0执行中 1完成)") + private Integer status; + + /** + * 操作人id + */ + @TableField(value="op_user_id") + @Schema(description="操作人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long opUserId; + + /** + * 操作人名称 + */ + @TableField(value="op_user_name") + @Schema(description="操作人名称") + @Size(max = 100,message = "操作人名称最大长度要小于 100") + private String opUserName; + + /** + * 调度原因 + */ + @TableField(value="dispatch_reason") + @Schema(description="调度原因") + @Size(max = 500,message = "dispatch_reason最大长度要小于 500") + private String dispatchReason; + + /** + * 调度详情 + */ + @TableField(value="dispatch_detail") + @Schema(description="调度详情") + @Size(max = 500,message = "dispatch_detail最大长度要小于 500") + private String dispatchDetail; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @TableField(exist = false) + @Schema(description = "附件") + private List files; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/FileAssociations.java b/src/main/java/com/gunshi/project/ss/model/FileAssociations.java new file mode 100644 index 0000000..120629a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/FileAssociations.java @@ -0,0 +1,115 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 文件关联业务表 +* author: xusan +* date: 2024-07-17 10:09:40 +*/ +@Schema(description="文件关联业务表") +@Data +@TableName("public.file_associations") +public class FileAssociations implements Serializable { + + public final static String thisTableName = "file_associations"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 业务id + */ + @TableField(value="business_id") + @Schema(description="业务id") + @NotBlank(message = "业务id不能为空") + private String businessId; + + /** + * 文件id + */ + @TableField(value="file_id") + @Schema(description="文件id") + @NotBlank(message = "文件id不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long fileId; + + /** + * 序号 + */ + @TableField(value="sort_on") + @Schema(description="序号") + private Integer sortOn; + + /** + * 时间戳 + */ + @TableField(value="tm") + @Schema(description="时间戳") + @NotBlank(message = "时间戳不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 业务表名 + */ + @TableField(value="table_name") + @Schema(description="业务表名") + @Size(max = 255,message = "业务表名最大长度要小于 255") + @NotBlank(message = "业务表名不能为空") + private String tableName; + /** + * 业务表名 + */ + @TableField(value="del") + @Size(max = 1,message = "删除标识最大长度要小于 2") + @Schema(description="删除标识1: 未删除,0:已删除") + @NotBlank(message = "删除标识不能为空") + private String del; + + + @TableField(value = "type") + @Schema(description = "业务文件类型 " + + "0:水库基本信息-工程基础信息-工程特性表," + + "1:水库基本信息-设计图纸和资料" + + "大坝 图片文件type:3 , 视频文件type:4") + private String type; + + + @TableField(exist = false) + @Schema(description = "文件路径") + private String filePath; + + @TableField(exist = false) + @Schema(description = "文件名称") + private String fileName; + + @TableField(exist = false) + @Schema(description = "文件大小 (byte)") + private String fileSize; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastDispatchCommand.java b/src/main/java/com/gunshi/project/ss/model/ForecastDispatchCommand.java new file mode 100644 index 0000000..9980bcb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastDispatchCommand.java @@ -0,0 +1,86 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 描述: 调度指令表 + * author: xusan + * date: 2024-12-19 + */ +@Schema(description = "调度指令表") +@Data +@TableName("public.forecast_dispatch_command") +public class ForecastDispatchCommand implements Serializable { + + public final static String THIS_TABLE_NAME = "forecast_dispatch_command"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @Schema(description = "主键") + @NotNull(message = "id不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 调度方案ID + */ + @TableField(value = "plan_id") + @Schema(description = "调度方案ID") + @NotNull(message = "调度方案ID不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long planId; + + /** + * 指令时间 + */ + @TableField(value = "command_time") + @Schema(description = "指令时间") + @NotNull(message = "指令时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime commandTime; + + /** + * 泄洪闸(0:关, 1:开) + */ + @TableField(value = "flood_gate") + @Schema(description = "泄洪闸(0:关, 1:开)") + private Integer floodGate; + + /** + * 节制闸(0:关, 1:开) + */ + @TableField(value = "control_gate") + @Schema(description = "节制闸(0:关, 1:开)") + private Integer controlGate; + + /** + * 分水闸(0:关, 1:开) + */ + @TableField(value = "diversion_gate") + @Schema(description = "分水闸(0:关, 1:开)") + private Integer diversionGate; + + /** + * 输水灌溉闸(0:关, 1:开) + */ + @TableField(value = "irrigation_gate") + @Schema(description = "输水灌溉闸(0:关, 1:开)") + private Integer irrigationGate; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastDispatchPlan.java b/src/main/java/com/gunshi/project/ss/model/ForecastDispatchPlan.java new file mode 100644 index 0000000..523e979 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastDispatchPlan.java @@ -0,0 +1,119 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 描述: 调度方案主表 + * author: xusan + * date: 2024-12-19 + */ +@Schema(description = "调度方案主表") +@Data +@TableName("public.forecast_dispatch_plan") +public class ForecastDispatchPlan implements Serializable { + + public final static String THIS_TABLE_NAME = "forecast_dispatch_plan"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @Schema(description = "主键") + @NotNull(message = "id不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 方案名称 + */ + @TableField(value = "plan_name") + @Schema(description = "方案名称") + @Size(max = 255, message = "方案名称最大长度要小于 255") + @NotNull(message = "方案名称不能为空") + private String planName; + + /** + * 洪水预报方案名称 + */ + @TableField(value = "forecast_plan_name") + @Schema(description = "方案名称") + @Size(max = 255, message = "方案名称最大长度要小于 255") + @NotNull(message = "方案名称不能为空") + private String forecastPlanName; + + /** + * 调度规程id + */ + @TableField(value = "res_plan_b_id") + @Schema(description = "调度规程id") + @JsonSerialize(using = ToStringSerializer.class) + private Long resPlanBId; + + @TableField(exist = false) + private String resPlanBName; + + /** + * 开始时间 + */ + @TableField(value = "start_time") + @Schema(description = "开始时间") + @NotNull(message = "开始时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTm; + + /** + * 结束时间 + */ + @TableField(value = "end_time") + @Schema(description = "结束时间") + @NotNull(message = "结束时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTm; + + /** + * 制定时间 + */ + @TableField(value = "create_time") + @Schema(description = "制定时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createTime; + + /** + * 制定人 + */ + @TableField(value = "creator") + @Schema(description = "制定人") + @Size(max = 100, message = "制定人最大长度要小于 100") + private String creator; + + /** + * 水库控制水位(m) + */ + @TableField(value = "reservoir_control_level") + @Schema(description = "水库控制水位(m)") + @NotNull(message = "水库控制水位不能为空") + private java.math.BigDecimal reservoirControlLevel; + + @TableField(exist = false) + private ForecastDispatchResult forecastDispatchResult; + + @TableField(exist = false) + private List forecastDispatchCommands; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastDispatchResult.java b/src/main/java/com/gunshi/project/ss/model/ForecastDispatchResult.java new file mode 100644 index 0000000..ffe6d85 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastDispatchResult.java @@ -0,0 +1,115 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 描述: 调度结果表 + * author: xusan + * date: 2024-12-19 + */ +@Schema(description = "调度结果表") +@Data +@TableName("public.forecast_dispatch_result") +public class ForecastDispatchResult implements Serializable { + + public final static String THIS_TABLE_NAME = "forecast_dispatch_result"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @Schema(description = "主键") + @NotNull(message = "id不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 调度方案ID + */ + @TableField(value = "plan_id") + @Schema(description = "调度方案ID") + @NotNull(message = "调度方案ID不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long planId; + + + + /** + * 最大入库流量(m³/s) + */ + @TableField(value = "max_inflow") + @Schema(description = "最大入库流量(m³/s)") + @NotNull(message = "最大入库流量不能为空") + private java.math.BigDecimal maxInflow; + + @TableField(value = "max_inflow_date") + @Schema(description = "最大入库流量时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime maxInflowDate; + + + + /** + * 总入库水量(万m³) + */ + @TableField(value = "total_inflow_volume") + @Schema(description = "总入库水量(万m³)") + private java.math.BigDecimal totalInflowVolume; + + /** + * 总出库水量(万m³) + */ + @TableField(value = "total_outflow_volume") + @Schema(description = "总出库水量(万m³)") + private java.math.BigDecimal totalOutflowVolume; + + /** + * 最高库水位(m) + */ + @TableField(value = "max_reservoir_level") + @Schema(description = "最高库水位(m)") + private java.math.BigDecimal maxReservoirLevel; + + @TableField(value = "max_reservoir_level_date") + @Schema(description = "最高库水位时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime maxReservoirLevelDate; + + /** + * 超汛限水位值(m) + */ + @TableField(value = "exceed_limit_value") + @Schema(description = "超汛限水位值(m)") + private java.math.BigDecimal exceedLimitValue; + + /** + * 超汛限开始时间 + */ + @TableField(value = "exceed_limit_start") + @Schema(description = "超汛限开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime exceedLimitStart; + + /** + * 超汛限结束时间 + */ + @TableField(value = "exceed_limit_end") + @Schema(description = "超汛限结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime exceedLimitEnd; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastK.java b/src/main/java/com/gunshi/project/ss/model/ForecastK.java new file mode 100644 index 0000000..5e8f470 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastK.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 预报_前期影响雨量折减系数表 +* author: cxw +* date: 2024-07-30 10:02:24 +*/ +@EqualsAndHashCode(callSuper = true) +@Schema(description="预报_前期影响雨量折减系数表") +@Data +@TableName("public.forecast_k") +public class ForecastK extends GenericPageParams implements Serializable { + + public final static String thisTableName = "ForecastK"; + + private static final long serialVersionUID = 1L; + + /** + * 月份 + */ + @TableId(value="month", type= IdType.NONE) + @Schema(description="月份") + private Integer month; + + /** + * k值 + */ + @TableField(value="k_value") + @Schema(description="k值") + private BigDecimal kValue; + + /** + * 创建时间 + */ + @TableField(value="chtm") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * 修改时间 + */ + @TableField(value="update_time") + @Schema(description="修改时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date updateTime; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastPPaR.java b/src/main/java/com/gunshi/project/ss/model/ForecastPPaR.java new file mode 100644 index 0000000..4830c6a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastPPaR.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* 描述: 预报_降雨径流关系表 +* author: cxw +* date: 2024-07-30 10:02:24 +*/ +@EqualsAndHashCode(callSuper = true) +@Schema(description="预报_降雨径流关系表") +@Data +@TableName("public.forecast_p_pa_r") +public class ForecastPPaR extends GenericPageParams implements Serializable { + + public final static String thisTableName = "ForecastPPaR"; + + private static final long serialVersionUID = 1L; + + /** + * r + */ + @TableField(value="r") + @Schema(description="r") + private BigDecimal r; + + /** + * psum + */ + @TableField(value="psum") + @Schema(description="psum") + private BigDecimal psum; + + /** + * rsum + */ + @TableField(value="rsum") + @Schema(description="rsum") + private BigDecimal rsum; + + /** + * pa + */ + @TableField(value="pa") + @Schema(description="pa") + private BigDecimal pa; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastPa.java b/src/main/java/com/gunshi/project/ss/model/ForecastPa.java new file mode 100644 index 0000000..eb101b7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastPa.java @@ -0,0 +1,97 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 预报_土壤含水量表 +* author: cxw +* date: 2024-08-02 12:23:07 +*/ +@Schema(description="预报_土壤含水量表") +@Data +@TableName("public.forecast_pa") +public class ForecastPa implements Serializable { + + public final static String thisTableName = "ForecastPa"; + + private static final long serialVersionUID = 1L; + + /** + * 测站编码 + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="测站编码") + @Size(max = 255,message = "测站编码最大长度要小于 255") + @NotBlank(message = "测站编码不能为空") + @NotNull(message = "测站编码不能为空") + private String stcd; + + /** + * 日期 + */ + @TableField(value="tm") + @Schema(description="日期") + @Size(max = 10,message = "日期最大长度要小于 10") + @NotBlank(message = "日期不能为空") + @NotNull(message = "日期不能为空") + private String tm; + + /** + * 蒸发率 + */ + @TableField(value="k") + @Schema(description="蒸发率") + private BigDecimal k; + + /** + * 昨天土壤含水量 + */ + @TableField(value="pa0") + @Schema(description="昨天土壤含水量") + private BigDecimal pa0; + + /** + * 最大初损值 + */ + @TableField(value="im") + @Schema(description="最大初损值") + private BigDecimal im; + + /** + * 昨天降雨值 + */ + @TableField(value="pt0") + @Schema(description="昨天降雨值") + private BigDecimal pt0; + + /** + * 当天土壤含水量 + */ + @TableField(value="pa") + @Schema(description="当天土壤含水量") + private BigDecimal pa; + + /** + * 入库时间 + */ + @TableField(value="chtm") + @Schema(description="入库时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastProject.java b/src/main/java/com/gunshi/project/ss/model/ForecastProject.java new file mode 100644 index 0000000..7b15f28 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastProject.java @@ -0,0 +1,187 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 预报_预测方案管理表 +* author: cxw +* date: 2024-08-05 11:41:45 +*/ +@EqualsAndHashCode(callSuper = true) +@Schema(description="预报_预测方案管理表") +@Data +@TableName("public.forecast_project") +public class ForecastProject extends GenericPageParams implements Serializable { + + public final static String thisTableName = "ForecastProject"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 预报任务名称 + */ + @TableField(value="name") + @Schema(description="预报任务名称") + @Size(max = 255,message = "预报任务名称最大长度要小于 255") + private String name; + + /** + * 类型(1:自动 2:手动) + */ + @TableField(value="type") + @Schema(description="类型(1:自动 2:手动)") + @Size(max = 1,message = "类型(1:自动 2:手动)最大长度要小于 1") + private String type; + + /** + * 预报时间 + */ + @TableField(value="forecast_tm") + @Schema(description="预报时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date forecastTm; + + /** + * 方案执行的当前时间 + */ + @TableField(value="project_tm") + @Schema(description="方案执行的当前时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date projectTm; + + /** + * 开始时间 + */ + @TableField(value="start_tm") + @Schema(description="开始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date startTm; + + /** + * 结束时间 + */ + @TableField(value="end_tm") + @Schema(description="结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date endTm; + + /** + * 操作人id + */ + @TableField(value="user_id") + @Schema(description="操作人id") + private String userId; + + /** + * 预见期(小时) + */ + @TableField(value="forecast_period") + @Schema(description="预见期(小时)") + private Integer forecastPeriod; + + /** + * 预热期(天) + */ + @TableField(value="forecast_warm") + @Schema(description="预热期(天)") + private Integer forecastWarm; + + /** + * 方案制作时间 + */ + @TableField(value="chtm") + @Schema(description="方案制作时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * 修改时间 + */ + @TableField(value="update_tm") + @Schema(description="修改时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date updateTm; + + /** + * 任务时间间隔(小时) + */ + @TableField(value="time_interval") + @Schema(description="任务时间间隔(小时)") + private BigDecimal timeInterval; + + /** + * 自动任务id(type为1时有值) + */ + @TableField(value="task_id") + @Schema(description="自动任务id(type为1时有值)") + private Long taskId; + + /** + * 预报结果voList + */ + @Schema(description = "预报结果voList") + @TableField(exist = false) + private List voList; + + /** + * 预报最高调洪水位(m) + */ + @Schema(description = "预报最高调洪水位(m)") + @TableField(exist = false) + private BigDecimal ycMaxSwH; + + /** + * 预报最大入库流量(m³/s) + */ + @Schema(description = "预报最大入库流量") + @TableField(exist = false) + private BigDecimal ycMaxRkQ; + + /** + * 预报最大下泄流量(m³/s) + */ + @Schema(description = "预报最大下泄流量(m³/s)") + @TableField(exist = false) + private BigDecimal ycMaxCkQ; + + /** + * 预报洪水总量(万m³) + */ + @Schema(description = "预报洪水总量(万m³)") + @TableField(exist = false) + private BigDecimal ycSumFlood; + + /** + * 预报洪水总量(万m³) + */ + @Schema(description = "入库水量(m³)") + @TableField(exist = false) + private BigDecimal rkVValue; +} diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastResults.java b/src/main/java/com/gunshi/project/ss/model/ForecastResults.java new file mode 100644 index 0000000..65ce9e6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastResults.java @@ -0,0 +1,157 @@ +package com.gunshi.project.ss.model; + + +import com.alibaba.fastjson2.annotation.JSONField; +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 预报_预测结果表 +* author: cxw +* date: 2024-08-05 11:41:45 +*/ +@EqualsAndHashCode(callSuper = true) +@Schema(description="预报_预测结果表") +@Data +@TableName("public.forecast_results") +public class ForecastResults extends GenericPageParams implements Serializable { + + public final static String thisTableName = "ForecastResults"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + private Long id; + + /** + * 时间 + */ + @TableField(value="tm") + @Schema(description="时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @JSONField(format = DateFormatString.YYYY_MM_DD_HH_MM_SS) + private Date tm; + + /** + * 预测入库流量 + */ + @TableField(value="yc_rk_q_value") + @Schema(description="预测入库流量") + private BigDecimal ycRkQValue; + + /** + * 实际入库流量 + */ + @TableField(value="real_rk_q_value") + @Schema(description="实际入库流量") + private BigDecimal realRkQValue; + + /** + * 预测出库流量 + */ + @TableField(value="yc_ck_q_value") + @Schema(description="预测出库流量") + private BigDecimal ycCkQValue; + + /** + * 实际出库流量 + */ + @TableField(value="real_ck_q_value") + @Schema(description="实际出库流量") + private BigDecimal realCkQValue; + + /** + * 预测水库水位 + */ + @TableField(value="yc_sw_h_value") + @Schema(description="预测水库水位") + private BigDecimal ycSwHValue; + + /** + * 实际水库水位 + */ + @TableField(value="real_sw_h_value") + @Schema(description="实际水库水位") + private BigDecimal realSwHValue; + + /** + * 降雨 + */ + @TableField(value="drp") + @Schema(description="降雨") + private BigDecimal drp; + + /** + * 是否是预测雨量(0:真实 1:预测) + */ + @TableField(value="ispre_drp") + @Schema(description="是否是预测雨量(0:真实 1:预测)") + private String ispreDrp; + + /** + * 径流深 + */ + @TableField(value="r") + @Schema(description="径流深") + private BigDecimal r; + + /** + * 方案id + */ + @TableField(value="project_id") + @Schema(description="方案id") + private Long projectId; + + /** + * 方案制作时间 + */ + @TableField(value="chtm") + @Schema(description="方案制作时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * 修改时间 + */ + @TableField(value="update_tm") + @Schema(description="修改时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date updateTm; + + /** + * 主汛期防洪限制水位 + */ + @TableField(value="fl_low_lim_lev") + @Schema(description="主汛期防洪限制水位") + private BigDecimal flLowLimLev; + + /** + * 当前堰顶高度预警值 + */ + @Schema(description="当前堰顶高度预警值") + private BigDecimal currentYdgdyjz; + + /** + * 土壤含水量 + */ + @TableField(value="pa") + @Schema(description="土壤含水量") + private BigDecimal pa; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastTask.java b/src/main/java/com/gunshi/project/ss/model/ForecastTask.java new file mode 100644 index 0000000..85d8f00 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastTask.java @@ -0,0 +1,156 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 预报_预测自动任务管理表 +* author: cxw +* date: 2024-08-05 11:41:44 +*/ +@EqualsAndHashCode(callSuper = true) +@Schema(description="预报_预测自动任务管理表") +@Data +@TableName("public.forecast_task") +public class ForecastTask extends GenericPageParams implements Serializable { + + public final static String thisTableName = "ForecastTask"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 预报任务名称 + */ + @TableField(value="name") + @Schema(description="预报任务名称") + @Size(max = 255,message = "预报任务名称最大长度要小于 255") + private String name; + + /** + * 操作人id + */ + @TableField(value="user_id") + @Schema(description="操作人id") + private String userId; + + @TableField(exist = false) + @Schema(description="操作人姓名") + private String userName; + + /** + * 预见期(小时) + */ + @TableField(value="forecast_period") + @Schema(description="预见期(小时)") + private Integer forecastPeriod; + + /** + * 预热期(天) + */ + @TableField(value="forecast_warm") + @Schema(description="预热期(天)") + private Integer forecastWarm; + + /** + * 方案制作时间 + */ + @TableField(value="chtm") + @Schema(description="方案制作时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * 修改时间 + */ + @TableField(value="update_tm") + @Schema(description="修改时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date updateTm; + + /** + * 任务状态(0:正常 1:暂停 2:删除) + */ + @TableField(value="status") + @Schema(description="任务状态(0:正常 1:暂停 2:删除)") + @Size(max = 1,message = "任务状态(0:正常 1:暂停 2:删除)最大长度要小于 1") + private String status; + + /** + * 任务时间间隔(小时) + */ + @TableField(value="time_interval") + @Schema(description="任务时间间隔(小时)") + private BigDecimal timeInterval; + + /** + * 选择的预报时间 + */ + @Schema(description = "选择的预报时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date forecastTime; + + /** + * 选择的执行当前时间 + */ + @Schema(description = "选择的执行当前时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date nowTime; + + /** + * 选择的起始时间 + */ + @Schema(description = "选择的起始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date startTime; + + /** + * 选择的结束时间 + */ + @Schema(description = "选择的结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date endTime; + + /** + * 上一次执行时间 + */ + @TableField(value="last_excute_tm") + @Schema(description="上一次执行时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date lastExcuteTm; + + /** + * 上一次结果保存时间 + */ + @TableField(value="last_resultsave_tm") + @Schema(description="上一次结果保存时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date lastResultsaveTm; +} diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastU.java b/src/main/java/com/gunshi/project/ss/model/ForecastU.java new file mode 100644 index 0000000..1536e0f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastU.java @@ -0,0 +1,67 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 预报_时段单位线表 +* author: cxw +* date: 2024-07-30 10:02:24 +*/ +@EqualsAndHashCode(callSuper = true) +@Schema(description="预报_时段单位线表") +@Data +@TableName("public.forecast_u") +public class ForecastU extends GenericPageParams implements Serializable { + + public final static String thisTableName = "ForecastU"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * u值 + */ + @TableField(value="u_value") + @Schema(description="u值") + private BigDecimal uValue; + + /** + * 创建时间 + */ + @TableField(value="chtm") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * 修改时间 + */ + @TableField(value="update_time") + @Schema(description="修改时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date updateTime; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ForecastUseparam.java b/src/main/java/com/gunshi/project/ss/model/ForecastUseparam.java new file mode 100644 index 0000000..4be9bc1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ForecastUseparam.java @@ -0,0 +1,121 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 预报_通用参数管理 +* author: cxw +* date: 2024-07-30 10:02:24 +*/ +@EqualsAndHashCode(callSuper = true) +@Schema(description="预报_通用参数管理") +@Data +@TableName("public.forecast_useparam") +public class ForecastUseparam extends GenericPageParams implements Serializable { + + public final static String thisTableName = "ForecastUseparam"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 参数名称 + */ + @TableField(value="param_name") + @Schema(description="参数名称") + @Size(max = 255,message = "参数名称最大长度要小于 255") + private String paramName; + + /** + * 参数名 + */ + @TableField(value="param_code") + @Schema(description="参数名") + @Size(max = 255,message = "参数名最大长度要小于 255") + private String paramCode; + + /** + * 参数值 + */ + @TableField(value="param_value") + @Schema(description="参数值") + @Size(max = 255,message = "参数值最大长度要小于 255") + private String paramValue; + + /** + * 参数排序 + */ + @TableField(value="param_sort") + @Schema(description="参数排序") + private Integer paramSort; + + /** + * 参数描述 + */ + @TableField(value="param_desc") + @Schema(description="参数描述") + @Size(max = 255,message = "参数描述最大长度要小于 255") + private String paramDesc; + + /** + * 创建时间 + */ + @TableField(value="chtm") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + + /** + * 修改时间 + */ + @TableField(value="update_time") + @Schema(description="修改时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date updateTime; + + /** + * 参数类型(1:普通类型,一对一;2:一对多,k;3:多对多,PPaR) + */ + @TableField(value="param_type") + @Schema(description="参数类型(1:普通类型,一对一;2:一对多;3多对多)") + private String paramType; + + /** + * 功能码(前端调用引导) + */ + @TableField(value="ability_code") + @Schema(description="功能码(前端调用引导)") + @Size(max = 255,message = "功能码最大长度要小于 255") + private String abilityCode; + + /** + * 备注 + */ + @TableField(value="remarks") + @Schema(description="备注") + @Size(max = 255,message = "备注最大长度要小于 255") + private String remarks; +} diff --git a/src/main/java/com/gunshi/project/ss/model/GatePore.java b/src/main/java/com/gunshi/project/ss/model/GatePore.java new file mode 100644 index 0000000..02a015b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/GatePore.java @@ -0,0 +1,134 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 闸孔信息表 +* author: xusan +* date: 2024-09-26 10:44:56 +*/ +@Schema(description="闸孔信息表") +@Data +@TableName("public.gate_pore") +public class GatePore implements Serializable { + + public final static String thisTableName = "GatePore"; + + private static final long serialVersionUID = 1L; + + /** + * stcd + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="stcd") + @Size(max = 16,message = "stcd最大长度要小于 16") + @NotBlank(message = "stcd不能为空") + private String stcd; + + /** + * 第几个闸门 + */ + @TableField(value="gate_number") + @Schema(description="第几个闸门") + private Integer gateNumber; + + /** + * 实际开度 + */ + @TableField(value="real_aperture") + @Schema(description="实际开度") + private BigDecimal realAperture; + + /** + * 设定开度 + */ + @TableField(value="set_aperture") + @Schema(description="设定开度") + private BigDecimal setAperture; + + /** + * 传感器水位 + */ + @TableField(value="sensor_lever") + @Schema(description="传感器水位") + private BigDecimal sensorLever; + + /** + * 海拔水位 + */ + @TableField(value="altitude_lever") + @Schema(description="海拔水位") + private BigDecimal altitudeLever; + + /** + * 闸门远控信号,如果是0,则不能通过指令控制 + */ + @TableField(value="remote_signal") + @Schema(description="闸门远控信号,如果是0,则不能通过指令控制") + private Integer remoteSignal; + + /** + * 闸门电源故障信号 + */ + @TableField(value="power_signal") + @Schema(description="闸门电源故障信号") + private Integer powerSignal; + + /** + * 闸门开闸中 + */ + @TableField(value="opening_signal") + @Schema(description="闸门开闸中") + private Integer openingSignal; + + /** + * 闸门关闸中 + */ + @TableField(value="closeing_signal") + @Schema(description="闸门关闸中") + private Integer closeingSignal; + + /** + * 闸门故障 + */ + @TableField(value="error_signal") + @Schema(description="闸门故障") + private Integer errorSignal; + + /** + * 闸门全开 + */ + @TableField(value="opened_signal") + @Schema(description="闸门全开") + private Integer openedSignal; + + /** + * 闸门全关 + */ + @TableField(value="closed_signal") + @Schema(description="闸门全关") + private Integer closedSignal; + + /** + * tm + */ + @TableField(value="tm") + @Schema(description="tm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/GateValveCctvRel.java b/src/main/java/com/gunshi/project/ss/model/GateValveCctvRel.java new file mode 100644 index 0000000..4cec7d7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/GateValveCctvRel.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 闸阀关联视频点 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="闸阀关联视频点") +@Data +@TableName("public.gate_valve_cctv_rel") +public class GateValveCctvRel implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="id") + @NotNull(message = "id不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 闸阀编号 + */ + @TableField(value="valve_code") + @Schema(description="闸阀编号") + @Size(max = 100,message = "闸阀编号最大长度要小于 100") + @NotBlank(message = "闸阀编号不能为空", groups = {Insert.class,Update.class}) + private String valveCode; + + /** + * 视频点 + */ + @TableField(value="index_code") + @Schema(description="视频点") + @Size(max = 100,message = "视频点最大长度要小于 100") + @NotBlank(message = "视频点不能为空", groups = {Insert.class,Update.class}) + private String indexCode; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/GateValveKey.java b/src/main/java/com/gunshi/project/ss/model/GateValveKey.java new file mode 100644 index 0000000..7510584 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/GateValveKey.java @@ -0,0 +1,44 @@ +package com.gunshi.project.ss.model; + + +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; + +/** +* 描述: 闸阀密码表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="闸阀密码表") +@Data +@TableName("public.gate_valve_key") +public class GateValveKey implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 闸阀编号 + */ + @TableId(value="valve_code", type= IdType.AUTO) + @Schema(description="闸阀编号") + private String valveCode; + + /** + * 密码 + */ + @TableField(value="key") + @Schema(description="密码") + private String key; + + @TableField(exist = false) + @Schema(description="开关状态") + private String status; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/GateValveOplog.java b/src/main/java/com/gunshi/project/ss/model/GateValveOplog.java new file mode 100644 index 0000000..cd55566 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/GateValveOplog.java @@ -0,0 +1,91 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 闸阀操作日志表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="闸阀操作日志表") +@Data +@TableName("public.gate_valve_oplog") +public class GateValveOplog implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 闸阀ID + */ + @TableField(value="valve_code") + @Schema(description="闸阀ID") + private String valveCode; + + /** + * 设定开度 + */ + @TableField(value="status") + @Schema(description="设定开度") + private String status; + + /** + * 操作前开度 + */ + @TableField(value="before_status") + @Schema(description="操作前开度") + private String beforeStatus; + + /** + * 操作内容 + */ + @TableField(value="op_content") + @Schema(description="操作内容") + private String opContent; + + /** + * 操作人id + */ + @TableField(value="op_user_id") + @Schema(description="操作人id") + private Long opUserId; + + /** + * 操作人 + */ + @TableField(value="op_user_name") + @Schema(description="操作人") + private String opUserName; + + /** + * 操作时间 + */ + @TableField(value="tm") + @Schema(description="操作时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/GateValveR.java b/src/main/java/com/gunshi/project/ss/model/GateValveR.java new file mode 100644 index 0000000..f384a09 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/GateValveR.java @@ -0,0 +1,55 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 闸阀开关历史表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="闸阀开关历史表") +@Data +@TableName("public.gate_valve_r") +public class GateValveR implements Serializable { + + + private static final long serialVersionUID = 1L; + + + /** + * 闸阀ID + */ + @MppMultiId + @TableField(value="valve_code") + @Schema(description="闸阀ID") + @Size(max = 20,message = "闸阀ID最大长度要小于 20") + private String valveCode; + + /** + * 开关状态 + */ + @TableField(value="status") + @Schema(description="开关状态") + private String status; + + /** + * 操作时间 + */ + @MppMultiId + @TableField(value="tm") + @Schema(description="操作时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/GateValveReal.java b/src/main/java/com/gunshi/project/ss/model/GateValveReal.java new file mode 100644 index 0000000..ecd7435 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/GateValveReal.java @@ -0,0 +1,54 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 闸阀开关表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="闸阀开关表") +@Data +@TableName("public.gate_valve_real") +public class GateValveReal implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 闸阀ID + */ + @MppMultiId + @TableField(value="valve_code") + @Schema(description="闸阀ID") + @Size(max = 20,message = "闸阀ID最大长度要小于 20") + private String valveCode; + + /** + * 开关状态 + */ + @TableField(value="status") + @Schema(description="开关状态") + private String status; + + /** + * 操作时间 + */ + @MppMultiId + @TableField(value="tm") + @Schema(description="操作时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/HiddenInfo.java b/src/main/java/com/gunshi/project/ss/model/HiddenInfo.java new file mode 100644 index 0000000..aa10d67 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/HiddenInfo.java @@ -0,0 +1,51 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@TableName("hidden_info") +@Data +public class HiddenInfo { + @TableId("id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField("mentence_farmer_record_id") + @Schema(description = "日常维护记录id") + private Long mentenceFarmerRecordId; + + @TableField("found_time") + @Schema(description = "隐患发现时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date foundTime; + + @TableField("hidden_desc") + @Schema(description = "隐患描述") + private String hiddenDesc; + + @TableField("status") + @Schema(description = "状态 0已处理 1未处理") + private Integer status; + + @TableField("resolve_method") + @Schema(description = "解决办法") + private String resolveMethod; + + @TableField("resolve_time") + @Schema(description = "解决时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date resolveTime; + + @TableField(exist = false) + private List files; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/HisWaterData.java b/src/main/java/com/gunshi/project/ss/model/HisWaterData.java new file mode 100644 index 0000000..506fe6a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/HisWaterData.java @@ -0,0 +1,42 @@ +package com.gunshi.project.ss.model; + + +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.math.BigDecimal; + +@Data +@TableName("his_water_data") +public class HisWaterData { + + @TableId(value = "id",type = IdType.AUTO) + private Long id; + + + @TableField("year") + @Schema(description = "年度") + private Integer year; + + @TableField("month") + @Schema(description = "月份") + private Integer month; + + @TableField("avg_water") + @Schema(description = "月份平均蓄水量") + private BigDecimal avgWater; + + + + /** + * 类型(1年 2月) + */ + @TableField(value="type") + @Schema(description="类型(1年 2月)") + private Integer type; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ISCAIEvent.java b/src/main/java/com/gunshi/project/ss/model/ISCAIEvent.java new file mode 100644 index 0000000..921d549 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ISCAIEvent.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.model; + +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 lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author lyf + * @since 2025-11-04 + */ +@Data +@TableName("isc_ai_event") +public class ISCAIEvent { + @TableId(value="id", type = IdType.INPUT) + private String id; + @TableField("json") + private String json; + + @TableField("starttime") + private LocalDateTime startTime; + @TableField("endtime") + private LocalDateTime endTime; + /* + 事件等级,1-低,2-中,3-高 + */ + @TableField("eventlevel") + private Integer eventLevel; + /* + 事件处理状态,0-未处理,1-已处理 + */ + @TableField("handlestatus") + private Integer handleStatus; + + /* + 事件类型名称 + */ + @TableField("eventtypename") + private String eventTypeName; + /* + 事件源名称 + */ + @TableField("resname") + private String resName; + /* + 事件源编号 + */ + @TableField("resindexcode") + private String resIndexCode; +} diff --git a/src/main/java/com/gunshi/project/ss/model/IaCBsnssinfo.java b/src/main/java/com/gunshi/project/ss/model/IaCBsnssinfo.java new file mode 100644 index 0000000..440bc24 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/IaCBsnssinfo.java @@ -0,0 +1,198 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 防治区企事业单位汇总表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="防治区企事业单位汇总表") +@Data +@TableName("public.ia_c_bsnssinfo") +public class IaCBsnssinfo implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 单位编码 + */ + @TableId(value="eicd", type= IdType.AUTO) + @Schema(description="单位编码") + @Size(max = 50,message = "单位编码最大长度要小于 50") + @NotBlank(message = "单位编码不能为空") + private String eicd; + + /** + * 单位名称 + */ + @TableField(value="name") + @Schema(description="单位名称") + @Size(max = 50,message = "单位名称最大长度要小于 50") + private String name; + + /** + * 小流域代码 + */ + @TableField(value="wscd") + @Schema(description="小流域代码") + @Size(max = 18,message = "小流域代码最大长度要小于 18") + private String wscd; + + /** + * 行政区划代码 + */ + @TableField(value="adcd") + @Schema(description="行政区划代码") + @Size(max = 15,message = "行政区划代码最大长度要小于 15") + @NotBlank(message = "行政区划代码不能为空") + private String adcd; + + /** + * 危险区代码 + */ + @TableField(value="dand") + @Schema(description="危险区代码") + @Size(max = 30,message = "危险区代码最大长度要小于 30") + private String dand; + + /** + * 经度 (°) + */ + @TableField(value="lgtd") + @Schema(description="经度 (°)") + // @Size(max = 0,message = "经度 (°)最大长度要小于 0") + private String lgtd; + + /** + * 纬度 (°) + */ + @TableField(value="lttd") + @Schema(description="纬度 (°)") + // @Size(max = 0,message = "纬度 (°)最大长度要小于 0") + private String lttd; + + /** + * 单位类别 1:事业单位,2:企业单位 + */ + @TableField(value="type") + @Schema(description="单位类别 1:事业单位,2:企业单位") + @Size(max = 1,message = "单位类别 1:事业单位,2:企业单位最大长度要小于 1") + private String type; + + /** + * 组织机构代码 + */ + @TableField(value="ocode") + @Schema(description="组织机构代码") + @Size(max = 30,message = "组织机构代码最大长度要小于 30") + private String ocode; + + /** + * 地址 + */ + @TableField(value="address") + @Schema(description="地址") + @Size(max = 50,message = "地址最大长度要小于 50") + private String address; + + /** + * 占地面积 (亩) + */ + @TableField(value="area") + @Schema(description="占地面积 (亩)") + // @Size(max = 0,message = "占地面积 (亩)最大长度要小于 0") + private String area; + + /** + * 在岗人数(人) + */ + @TableField(value="pcount") + @Schema(description="在岗人数(人)") + // @Size(max = 0,message = "在岗人数(人)最大长度要小于 0") + private Integer pcount; + + /** + * 房屋数量(座) + */ + @TableField(value="hcount") + @Schema(description="房屋数量(座)") + // @Size(max = 0,message = "房屋数量(座)最大长度要小于 0") + private Integer hcount; + + /** + * 固定资产(万元) + */ + @TableField(value="avalue") + @Schema(description="固定资产(万元)") + // @Size(max = 0,message = "固定资产(万元)最大长度要小于 0") + private String avalue; + + /** + * 年产值(万元) + */ + @TableField(value="ovalue") + @Schema(description="年产值(万元)") + // @Size(max = 0,message = "年产值(万元)最大长度要小于 0") + private String ovalue; + + /** + * 填写人姓名 + */ + @TableField(value="signer") + @Schema(description="填写人姓名") + @Size(max = 10,message = "填写人姓名最大长度要小于 10") + private String signer; + + /** + * 审核批次号 + */ + @TableField(value="audid") + @Schema(description="审核批次号") + @Size(max = 20,message = "审核批次号最大长度要小于 20") + private String audid; + + /** + * 审核状态 + */ + @TableField(value="status") + @Schema(description="审核状态") + @Size(max = 4,message = "审核状态最大长度要小于 4") + private String status; + + /** + * 备注 + */ + @TableField(value="comments") + @Schema(description="备注") + @Size(max = 200,message = "备注最大长度要小于 200") + private String comments; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/IaCDanad.java b/src/main/java/com/gunshi/project/ss/model/IaCDanad.java new file mode 100644 index 0000000..6cdaaf5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/IaCDanad.java @@ -0,0 +1,204 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 危险区基本情况调查成果汇总表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="危险区基本情况调查成果汇总表") +@Data +@TableName("public.ia_c_danad") +public class IaCDanad implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 危险区代码 + */ + @TableId(value="dand", type= IdType.AUTO) + @Schema(description="危险区代码") + @Size(max = 20,message = "危险区代码最大长度要小于 20") + @NotBlank(message = "危险区代码不能为空") + private String dand; + + /** + * 危险区名称 + */ + @TableField(value="name") + @Schema(description="危险区名称") + @Size(max = 50,message = "危险区名称最大长度要小于 50") + @NotBlank(message = "危险区名称不能为空") + private String name; + + /** + * 小流域代码 + */ + @TableField(value="wscd") + @Schema(description="小流域代码") + @Size(max = 50,message = "小流域代码最大长度要小于 50") + @NotBlank(message = "小流域代码不能为空") + private String wscd; + + /** + * 行政区划代码 + */ + @TableField(value="adcd") + @Schema(description="行政区划代码") + @Size(max = 15,message = "行政区划代码最大长度要小于 15") + @NotBlank(message = "行政区划代码不能为空") + private String adcd; + + /** + * 危险区内人口(人) + */ + @TableField(value="ptcount") + @Schema(description="危险区内人口(人)") + // @Size(max = 0,message = "危险区内人口(人)最大长度要小于 0") + private Integer ptcount; + + /** + * 危险区内总户数(户) + */ + @TableField(value="etcount") + @Schema(description="危险区内总户数(户)") + // @Size(max = 0,message = "危险区内总户数(户)最大长度要小于 0") + private Integer etcount; + + /** + * 危险区内ⅰ类经济户数(户) + */ + @TableField(value="ecount1") + @Schema(description="危险区内ⅰ类经济户数(户)") + // @Size(max = 0,message = "危险区内ⅰ类经济户数(户)最大长度要小于 0") + private Integer ecount1; + + /** + * 危险区内ⅱ类经济户数(户) + */ + @TableField(value="ecount2") + @Schema(description="危险区内ⅱ类经济户数(户)") + // @Size(max = 0,message = "危险区内ⅱ类经济户数(户)最大长度要小于 0") + private Integer ecount2; + + /** + * 危险区内ⅲ类经济户数(户) + */ + @TableField(value="ecount3") + @Schema(description="危险区内ⅲ类经济户数(户)") + // @Size(max = 0,message = "危险区内ⅲ类经济户数(户)最大长度要小于 0") + private Integer ecount3; + + /** + * 危险区内ⅳ类经济户数(户) + */ + @TableField(value="ecount4") + @Schema(description="危险区内ⅳ类经济户数(户)") + // @Size(max = 0,message = "危险区内ⅳ类经济户数(户)最大长度要小于 0") + private Integer ecount4; + + /** + * 危险区内总房屋数(座) + */ + @TableField(value="htcount") + @Schema(description="危险区内总房屋数(座)") + // @Size(max = 0,message = "危险区内总房屋数(座)最大长度要小于 0") + private Integer htcount; + + /** + * 危险区内ⅰ类房屋数(座) + */ + @TableField(value="hcount1") + @Schema(description="危险区内ⅰ类房屋数(座)") + // @Size(max = 0,message = "危险区内ⅰ类房屋数(座)最大长度要小于 0") + private Integer hcount1; + + /** + * 危险区内ⅱ类房屋数(座) + */ + @TableField(value="hcount2") + @Schema(description="危险区内ⅱ类房屋数(座)") + // @Size(max = 0,message = "危险区内ⅱ类房屋数(座)最大长度要小于 0") + private Integer hcount2; + + /** + * 危险区内ⅲ类房屋数(座) + */ + @TableField(value="hcount3") + @Schema(description="危险区内ⅲ类房屋数(座)") + // @Size(max = 0,message = "危险区内ⅲ类房屋数(座)最大长度要小于 0") + private Integer hcount3; + + /** + * 危险区内ⅳ类房屋数(座) + */ + @TableField(value="hcount4") + @Schema(description="危险区内ⅳ类房屋数(座)") + // @Size(max = 0,message = "危险区内ⅳ类房屋数(座)最大长度要小于 0") + private Integer hcount4; + + /** + * 填写人姓名 + */ + @TableField(value="signer") + @Schema(description="填写人姓名") + @Size(max = 50,message = "填写人姓名最大长度要小于 50") + private String signer; + + /** + * 审核批次号 + */ + @TableField(value="audid") + @Schema(description="审核批次号") + @Size(max = 20,message = "审核批次号最大长度要小于 20") + private String audid; + + /** + * 审核状态 + */ + @TableField(value="status") + @Schema(description="审核状态") + @Size(max = 1,message = "审核状态最大长度要小于 1") + private String status; + + /** + * 备注 + */ + @TableField(value="comments") + @Schema(description="备注") + @Size(max = 200,message = "备注最大长度要小于 200") + private String comments; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + + /** + * geojson + */ + @TableField(value="geometry") + @Schema(description="geojson") + // @Size(max = 0,message = "geojson最大长度要小于 0") + private String geometry; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/IaCFlrvvlg.java b/src/main/java/com/gunshi/project/ss/model/IaCFlrvvlg.java new file mode 100644 index 0000000..f0cb5cc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/IaCFlrvvlg.java @@ -0,0 +1,209 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 重要沿河村落居民户调查成果表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="重要沿河村落居民户调查成果表") +@Data +@TableName("public.ia_c_flrvvlg") +public class IaCFlrvvlg implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 沿河村落居民户编码 + */ + @TableId(value="avrcd", type= IdType.AUTO) + @Schema(description="沿河村落居民户编码") + @Size(max = 30,message = "沿河村落居民户编码最大长度要小于 30") + @NotBlank(message = "沿河村落居民户编码不能为空") + private String avrcd; + + /** + * 户主名称 + */ + @TableField(value="name") + @Schema(description="户主名称") + @Size(max = 50,message = "户主名称最大长度要小于 50") + private String name; + + /** + * 联系电话 + */ + @TableField(value="phone") + @Schema(description="联系电话") + private String phone; + + /** + * 行政区划代码 + */ + @TableField(value="adcd") + @Schema(description="行政区划代码") + @Size(max = 15,message = "行政区划代码最大长度要小于 15") + @NotBlank(message = "行政区划代码不能为空") + private String adcd; + + /** + * 小流域代码 + */ + @TableField(value="wscd") + @Schema(description="小流域代码") + @Size(max = 20,message = "小流域代码最大长度要小于 20") + private String wscd; + + /** + * 基准点经度 (°) + */ + @TableField(value="blgtd") + @Schema(description="基准点经度 (°) ") + // @Size(max = 0,message = "基准点经度 (°) 最大长度要小于 0") + private String blgtd; + + /** + * 基准点纬度 (°) + */ + @TableField(value="blttd") + @Schema(description="基准点纬度 (°) ") + // @Size(max = 0,message = "基准点纬度 (°) 最大长度要小于 0") + private String blttd; + + /** + * 基准点高程(m) + */ + @TableField(value="bele") + @Schema(description="基准点高程(m)") + // @Size(max = 0,message = "基准点高程(m)最大长度要小于 0") + private String bele; + + /** + * 家庭人口(人) + */ + @TableField(value="ptcount") + @Schema(description="家庭人口(人)") + // @Size(max = 0,message = "家庭人口(人)最大长度要小于 0") + private Integer ptcount; + + /** + * 建筑面积 + */ + @TableField(value="area") + @Schema(description="建筑面积") + // @Size(max = 0,message = "建筑面积最大长度要小于 0") + private String area; + + /** + * 建筑类型 住宅建筑类型分为4 类,1: 1 层住宅;2:2 层住宅;3:3 层住宅;4:3层以上住宅。 + */ + @TableField(value="btype") + @Schema(description="建筑类型 住宅建筑类型分为4 类,1: 1 层住宅;2:2 层住宅;3:3 层住宅;4:3层以上住宅。") + @Size(max = 6,message = "建筑类型 住宅建筑类型分为4 类,1: 1 层住宅;2:2 层住宅;3:3 层住宅;4:3层以上住宅。最大长度要小于 6") + private String btype; + + /** + * 结构形式 建筑根据承重的主要构件可分为 4 类,1:钢筋混凝土结构;2:混合结构;3:砖木结构;4:其他结构。 + */ + @TableField(value="stype") + @Schema(description="结构形式 建筑根据承重的主要构件可分为 4 类,1:钢筋混凝土结构;2:混合结构;3:砖木结构;4:其他结构。") + @Size(max = 7,message = "结构形式 建筑根据承重的主要构件可分为 4 类,1:钢筋混凝土结构;2:混合结构;3:砖木结构;4:其他结构。最大长度要小于 7") + private String stype; + + /** + * 宅基经度 (°) + */ + @TableField(value="lgtd") + @Schema(description="宅基经度 (°) ") + // @Size(max = 0,message = "宅基经度 (°) 最大长度要小于 0") + private String lgtd; + + /** + * 宅基纬度 (°) + */ + @TableField(value="lttd") + @Schema(description="宅基纬度 (°) ") + // @Size(max = 0,message = "宅基纬度 (°) 最大长度要小于 0") + private String lttd; + + /** + * 宅基高程(m) + */ + @TableField(value="hele") + @Schema(description="宅基高程(m)") + // @Size(max = 0,message = "宅基高程(m)最大长度要小于 0") + private String hele; + + /** + * 临水 村落居民住房是否邻近河边水流,“1”为“是”,“0”为“否”。 + */ + @TableField(value="bwater") + @Schema(description="临水 村落居民住房是否邻近河边水流,“1”为“是”,“0”为“否”。 ") + @Size(max = 8,message = "临水 村落居民住房是否邻近河边水流,“1”为“是”,“0”为“否”。 最大长度要小于 8") + private String bwater; + + /** + * 切坡 村落居民住房是否切山坡修建的,“1”为“是”,“0”为“否”。 + */ + @TableField(value="bhill") + @Schema(description="切坡 村落居民住房是否切山坡修建的,“1”为“是”,“0”为“否”。") + @Size(max = 9,message = "切坡 村落居民住房是否切山坡修建的,“1”为“是”,“0”为“否”。最大长度要小于 9") + private String bhill; + + /** + * 填写人姓名 + */ + @TableField(value="signer") + @Schema(description="填写人姓名") + @Size(max = 10,message = "填写人姓名最大长度要小于 10") + private String signer; + + /** + * 审核批次号 + */ + @TableField(value="audid") + @Schema(description="审核批次号") + @Size(max = 20,message = "审核批次号最大长度要小于 20") + private String audid; + + /** + * 审核状态 + */ + @TableField(value="status") + @Schema(description="审核状态") + @Size(max = 6,message = "审核状态最大长度要小于 6") + private String status; + + /** + * 备注 + */ + @TableField(value="comments") + @Schema(description="备注") + @Size(max = 200,message = "备注最大长度要小于 200") + private String comments; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/IcWaterForecast.java b/src/main/java/com/gunshi/project/ss/model/IcWaterForecast.java new file mode 100644 index 0000000..e1ec847 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/IcWaterForecast.java @@ -0,0 +1,101 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +@TableName(value = "ic_water_forecast") +public class IcWaterForecast implements Serializable { + + /** + * 主键 + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 方案名称 + */ + @TableField(value = "plan_name") + @Schema(description = "方案名称") + @NotNull(message = "方案名称不能为空", groups = {Insert.class, Update.class}) + private String planName; + + /** + * 预测开始时间 + */ + @TableField(value = "start_time") + @Schema(description = "预测开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime;//ps:这个地方你截取一下哈,长期的截到年月日,短期不用截 + + /** + * 预测结束时间 + */ + @TableField(value = "end_time") + @Schema(description = "预测结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime;//ps:这个地方你截取一下哈,长期的截到年月日,短期不用截 + + /** + * 预测来水量 + */ + @TableField(value = "forecast_water") + @Schema(description = "预测来水量") + private BigDecimal forecastWater; + + /** + * 制定时间 + */ + @TableField(value = "create_time") + @Schema(description = "制定时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createTime; + + /** + * 制定人 + */ + @TableField(value = "create_name") + @Schema(description = "制定人") + private String createName; + + /** + * 类型:0-长期预测,1-短期预测 + */ + @TableField(value = "type") + @Schema(description = "类型:0-长期预测,1-短期预测") + private Integer type; + + + /** + * 降雨相似年 + */ + @TableField(value = "year") + @Schema(description = "降雨相似年") + private Integer year; + + + @TableField(value = "hours") + @Schema(description = "小时") + private Integer hours; + + @TableField(exist = false) + private List details; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/IcWaterForecastDetail.java b/src/main/java/com/gunshi/project/ss/model/IcWaterForecastDetail.java new file mode 100644 index 0000000..f51c7f9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/IcWaterForecastDetail.java @@ -0,0 +1,52 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@TableName(value = "ic_water_forecast_detail") +public class IcWaterForecastDetail implements Serializable { + + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "ic_water_id") + @Schema(description = "来水预测表主键") + private Long icWaterId; + + @TableField(value = "start_time") + @Schema(description = "预测开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; + + @TableField(value = "end_time") + @Schema(description = "预测结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; + + @TableField(value = "forecast_time") + @Schema(description = "预测时间(短期)") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime forecastTime; + + @TableField(value = "forecast_water") + @Schema(description = "预测水量") + private BigDecimal forecastWater; + + @TableField(value = "month") + @Schema(description = "长期预测-数据对应月份") + private Integer month; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/InspectItem.java b/src/main/java/com/gunshi/project/ss/model/InspectItem.java new file mode 100644 index 0000000..703cae4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/InspectItem.java @@ -0,0 +1,86 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 巡检项 +* author: xusan +* date: 2024-08-29 09:58:09 +*/ +@Schema(description="巡检项") +@Data +@TableName("public.inspect_item") +public class InspectItem implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 巡检点id + */ + @TableField(value="point_id") + @Schema(description="巡检点id") + @JsonSerialize(using = ToStringSerializer.class) + private Long pointId; + + /** + * 巡检项描述 + */ + @TableField(value="item_desc") + @Schema(description="巡检项描述") + @Size(max = 500,message = "巡检项描述最大长度要小于 500") + private String itemDesc; + + /** + * 问题描述 + */ + @TableField(value="problem_desc") + @Schema(description="问题描述") + @Size(max = 500,message = "问题描述最大长度要小于 500") + private String problemDesc; + + /** + * 处理建议 + */ + @TableField(value="handle_suggestion") + @Schema(description="处理建议") + @Size(max = 500,message = "处理建议最大长度要小于 500") + private String handleSuggestion; + + /** + * 排序号 + */ + @TableField(value="order_index") + @Schema(description="排序号") + private Integer orderIndex; + + /** + * 状态(0启用 1停用) + */ + @TableField(value="status") + @Schema(description="状态(0启用 1停用)") + private Integer status; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/InspectPoint.java b/src/main/java/com/gunshi/project/ss/model/InspectPoint.java new file mode 100644 index 0000000..7150c8c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/InspectPoint.java @@ -0,0 +1,62 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** +* 描述: 巡检点 +* author: xusan +* date: 2024-08-29 09:57:47 +*/ +@Schema(description="巡检点") +@Data +@TableName("public.inspect_point") +public class InspectPoint implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 名称 + */ + @TableField(value="name") + @Schema(description="名称") + @Size(max = 255,message = "名称最大长度要小于 255") + @NotBlank(message = "名称不能为空") + private String name; + + /** + * 排序 + */ + @TableField(value="order_index") + @Schema(description="排序") + private Integer orderIndex; + + @TableField(exist = false) + @Schema(description = "巡检项") + private List children; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/InspectTaskTrack.java b/src/main/java/com/gunshi/project/ss/model/InspectTaskTrack.java new file mode 100644 index 0000000..ce2e335 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/InspectTaskTrack.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 巡查轨迹 +* author: xusan +* date: 2024-09-18 13:59:21 +*/ +@Schema(description="巡查轨迹") +@Data +@TableName("public.inspect_task_track") +public class InspectTaskTrack implements Serializable { + + public final static String thisTableName = "InspectTaskTrack"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 任务id + */ + @TableField(value="task_id") + @Schema(description="任务id") + @JsonSerialize(using = ToStringSerializer.class) + private Long taskId; + + /** + * 经度 (°) + */ + @TableField(value="lgtd") + @Schema(description="经度 (°)") + private BigDecimal lgtd; + + /** + * 纬度 (°) + */ + @TableField(value="lttd") + @Schema(description="纬度 (°)") + private BigDecimal lttd; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/JcskByInspectTask.java b/src/main/java/com/gunshi/project/ss/model/JcskByInspectTask.java new file mode 100644 index 0000000..ae04b39 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/JcskByInspectTask.java @@ -0,0 +1,54 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.db.annotation.IgnoreAutoMapperAndDao; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 巡检任务监测数据实体类 + * + * @author gunshiiot + * @TableName jcsk_by_inspect_task + */ +@Data +@TableName(value = "jcsk_by_inspect_task") +@IgnoreAutoMapperAndDao +public class JcskByInspectTask { + + /** + * 设备id + */ + @TableField("\"order\"") + @Schema(description = "设备id") + private String order; + + /** + * 巡检任务id + */ + @TableField("inspect_task_id") + @Schema(description = "巡检任务id") + private Long inspectTaskId; + + /** + * 监测时间 + */ + @TableField("ob_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间") + private Date obDate; + + /** + * 结束时间 + */ + @TableField("ob_resolve_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "结束时间") + private Date obResolveDate; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/JcskByRProcess.java b/src/main/java/com/gunshi/project/ss/model/JcskByRProcess.java new file mode 100644 index 0000000..a69802e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/JcskByRProcess.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.InspectTask; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName(value = "jcsk_by_r_process") +public class JcskByRProcess { + + + @TableField("\"order\"") + @Schema(description = "设备编号") + private String order; + + @TableField("ob_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间") + private Date obDate; + + @TableField("ob_resolve_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description = "监测时间 + hours之后的结束时间") + private Date obResolveDate; + + @TableField("hours") + @Schema(description = "间隔小时") + private Integer hours; + + @TableField(exist = false) + @Schema(description = "巡检任务实体类") + private InspectTask inspectTask; +} diff --git a/src/main/java/com/gunshi/project/ss/model/JcskGnssREightAm.java b/src/main/java/com/gunshi/project/ss/model/JcskGnssREightAm.java new file mode 100644 index 0000000..a21780e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/JcskGnssREightAm.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "荆楚水库-位移整编表") +@TableName("public.jcsk_gnss_r_8am") +public class JcskGnssREightAm { + + private String cd; + + + private String tm; + + + private BigDecimal de; + + private BigDecimal dn; + + private BigDecimal du; + + private String res_cd; + + private BigDecimal alt; +} diff --git a/src/main/java/com/gunshi/project/ss/model/JcskSlREightAm.java b/src/main/java/com/gunshi/project/ss/model/JcskSlREightAm.java new file mode 100644 index 0000000..44d233c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/JcskSlREightAm.java @@ -0,0 +1,74 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@TableName("jcsk_sl_r_8am") +public class JcskSlREightAm { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + + @TableField("stcd") + private String stcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime mstm; + + /** + * 温度,单位℃ + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流量,单位l/s + */ + @TableField("spqn") + private BigDecimal spqn; + + /** + * 标准水温渗流量,单位l/s + */ + @TableField("stspqn") + private BigDecimal stspqn; + + /** + * 创建时间 + */ + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTm; +} diff --git a/src/main/java/com/gunshi/project/ss/model/JcskSyREightAm.java b/src/main/java/com/gunshi/project/ss/model/JcskSyREightAm.java new file mode 100644 index 0000000..2213bba --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/JcskSyREightAm.java @@ -0,0 +1,78 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@TableName("jcsk_sy_r_8am") +public class JcskSyREightAm { + /** + * 水库代码 + */ + @TableField("rscd") + private String rscd; + + /** + * 测站编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 水工建筑物编号 + */ + @TableField("hycncd") + private String hycncd; + + /** + * 测点编号 + */ + @TableField("mpcd") + private String mpcd; + + /** + * 测量时间 + */ + @TableField("mstm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime mstm; + + /** + * 温度 + */ + @TableField("tm") + private BigDecimal tm; + + /** + * 渗流压力水位,单位m + */ + @TableField("spprwl") + private BigDecimal spprwl; + + /** + * 更新时间 + */ + @TableField("update_tm") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTm; + + @TableField(exist = false) + @Schema(description = "断面编码") + private String dm; + + + @TableField(exist = false) + @Schema(description = "断面名称") + private String dmName; + + + @TableField(exist = false) + @Schema(description = "dvcd") + private String dvcd; +} diff --git a/src/main/java/com/gunshi/project/ss/model/MaintainService.java b/src/main/java/com/gunshi/project/ss/model/MaintainService.java new file mode 100644 index 0000000..e6a7c9a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/MaintainService.java @@ -0,0 +1,90 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 维修养护 +* author: xusan +* date: 2024-08-27 15:15:13 +*/ +@Schema(description="维修养护") +@Data +@TableName("public.maintain_service") +public class MaintainService implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 上报时间 + */ + @TableField(value="report_time") + @Schema(description="上报时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date reportTime; + + /** + * 管护类型(1溢洪道淸障 2除草除杂 3设备养护 4环境清洁 5危险提示 6其他) + */ + @TableField(value="maintain_type") + @Schema(description="管护类型(1溢洪道淸障 2除草除杂 3设备养护 4环境清洁 5危险提示 6其他)") + private Integer maintainType; + + /** + * 内容 + */ + @TableField(value="maintain_content") + @Schema(description="内容") + @Size(max = 500,message = "内容最大长度要小于 500") + private String maintainContent; + + /** + * 上报人id + */ + @TableField(value="report_user_id") + @Schema(description="上报人id") + private Long reportUserId; + + /** + * 上报人 + */ + @TableField(value="report_user_name") + @Schema(description="上报人") + @Size(max = 50,message = "上报人最大长度要小于 50") + private String reportUserName; + + @TableField(exist = false) + @Schema(description = "现场图片") + private List pics; + + @TableField(exist = false) + @Schema(description = "现场视频") + private List videos; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/MentenceFarmerRecord.java b/src/main/java/com/gunshi/project/ss/model/MentenceFarmerRecord.java new file mode 100644 index 0000000..53b18d7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/MentenceFarmerRecord.java @@ -0,0 +1,75 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@TableName("mentence_farmer_record") +@Schema(description = "维修养护-日常养护") +@Data +public class MentenceFarmerRecord { + @TableId + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField("mentence_st_detail_id") + @Schema(description = "维护项目Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mentenceStDetailId; + + @TableField(exist = false) + @Schema(description = "维护项目名称") + private String mentenceStDetailName; + + @Schema(description = "维护对象Id") + @TableField("mentence_st_id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mentenceStId; + + @TableField(exist = false) + @Schema(description = "维护对象名称") + private String mentenceStName; + + + @TableField("mentence_person_id") + @Schema(description = "维护人员id") + private String mentencePersonId; + + @TableField(exist = false) + @Schema(description = "维护人员名称") + private String mentencePersonName; + + @TableField("mentence_time_begin") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Schema(description = "维护时间开始") + private Date mentenceTimeBegin; + + @TableField("mentence_time_end") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Schema(description = "维护时间结束") + private Date mentenceTimeEnd; + + @TableField("fill_time") + @Schema(description = "填报时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date fillTime; + + @TableField("mentence_context") + @Schema(description = "维护内容") + private String mentenceContext; + + + @TableField(exist = false) + private List files; + + @TableField(exist = false) + private List details; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/MentencePlan.java b/src/main/java/com/gunshi/project/ss/model/MentencePlan.java new file mode 100644 index 0000000..00f328a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/MentencePlan.java @@ -0,0 +1,76 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@TableName("mentence_plan") +@Schema(description = "维修养护-计划管理") +public class MentencePlan { + @TableId + @JsonSerialize(using = ToStringSerializer.class) + @NotNull(message = "id不能为空",groups = {Update.class}) + private Long id; + + @TableField("plan_name") + @NotNull(message = "计划名称不能为空", groups = {Insert.class, Update.class}) + @Schema(description = "计划名称") + private String planName; + + @TableField("plan_year") + @NotNull(message = "年份不能为空", groups = {Insert.class, Update.class}) + @Schema(description = "计划年份") + private String planYear; + + @TableField("plan_status") + @Schema(description = "审批状态 0 待审批 1 未通过 2 已通过 ") + private Integer planStatus; + + @TableField("create_id") + @Schema(description = "创建者id") + private String createId; + + @TableField(exist = false) + @Schema(description = "创建者名称") + private String createName; + + @TableField("create_date") + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createDate; + + @TableField("approve_opinion") + @Schema(description = "审批意见") + private String approveOpinion; + + @TableField("approve_person_id") + @Schema(description = "审批人id") + private String approvePersonId; + + @TableField(exist = false) + @Schema(description = "审批人名称") + private String approvePersonName; + + @TableField("remark") + @Schema(description = "备注") + private String remark; + + @TableField(exist = false) + private List details; + + @TableField(exist = false) + private List files; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/MentencePlanDetail.java b/src/main/java/com/gunshi/project/ss/model/MentencePlanDetail.java new file mode 100644 index 0000000..756d495 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/MentencePlanDetail.java @@ -0,0 +1,60 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "维修养护-计划管理细节") +@TableName("mentence_plan_detail") +public class MentencePlanDetail { + + @TableId("id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField("mentence_plan_id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mentencePlanId; + + @TableField("mentence_st_detail_id") + @Schema(description = "维护项目id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mentenceStDetailId; + + @TableField(exist = false) + @Schema(description = "维护项目名称") + private String mentenceStDetailName; + + @TableField(exist = false) + @Schema(description = "维护对象id") + private String mentenceStId; + + @TableField(exist = false) + @Schema(description = "维护对象名称") + private String mentenceStName; + + @TableField("plan_begin") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date planBegin; + + @TableField("plan_end") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date planEnd; + + @TableField("charge_person_id") + private String chargePersonId; + + @TableField(exist = false) + private String chargePersonName; + + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/MentenceSt.java b/src/main/java/com/gunshi/project/ss/model/MentenceSt.java new file mode 100644 index 0000000..fbe3cb5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/MentenceSt.java @@ -0,0 +1,41 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@TableName("mentence_st") +@Data +@Schema(description = "维护养护-维护标准") +public class MentenceSt { + @TableId("id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField("st_name") + @Schema(description = "维护对象名") + @NotNull(message = "维护对象名不能为空", groups = {Insert.class, Update.class}) + private String stName; + + + @TableField("create_time") + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + + @TableField(exist = false) + private List childrens; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/MentenceStDetail.java b/src/main/java/com/gunshi/project/ss/model/MentenceStDetail.java new file mode 100644 index 0000000..aa924b1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/MentenceStDetail.java @@ -0,0 +1,46 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@TableName("mentence_st_detail") +@Data +@Schema(description = "维护养护-维护标准细节") +public class MentenceStDetail { + @TableId + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField("mentence_st_id") + @Schema(description = "维护对象名id") + @NotNull(message = "维护对象名称Id不能为空",groups = {Insert.class, Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long mentenceStId; + + @TableField("name") + @Schema(description = "维护项目名称") + private String stDetailName; + + @TableField("context") + @Schema(description = "维护内容") + private String context; + + @TableField("_order") + @Schema(description = "排序号") + private Long order; + + @TableField("is_enable") + @Schema(description = "是否启用 0启用 1禁用") + private Integer isEnable; + + @TableField(exist = false) + private Boolean hasUse = false; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/MentenceTemplate.java b/src/main/java/com/gunshi/project/ss/model/MentenceTemplate.java new file mode 100644 index 0000000..956d1d7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/MentenceTemplate.java @@ -0,0 +1,49 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@Schema(description = "维修养护-模板") +@TableName("mentence_template") +public class MentenceTemplate { + @TableId + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField("name") + @Schema(description = "模板名称") + @NotNull(message = "模板名称不能为空", groups = {Insert.class, Update.class}) + private String name; + + @TableField("type") + @Schema(description = "模板类型 0 养护记录 1 验收记录") + @NotNull(message = "模板类型不能为空",groups = {Insert.class, Update.class}) + private Integer type; + + @TableField("create_id") + private String createId; + + @TableField("create_name") + private String createName; + + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + + @TableField(exist = false) + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/MessageCenter.java b/src/main/java/com/gunshi/project/ss/model/MessageCenter.java new file mode 100644 index 0000000..454a1f0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/MessageCenter.java @@ -0,0 +1,103 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 消息中心 +* author: xusan +* date: 2024-09-19 10:39:29 +*/ +@Schema(description="消息中心") +@Data +@TableName("public.message_center") +public class MessageCenter implements Serializable { + + public final static String thisTableName = "MessageCenter"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 主题 + */ + @TableField(value="title") + @Schema(description="主题") + @Size(max = 100,message = "主题最大长度要小于 100") + private String title; + + /** + * 发布人id + */ + @TableField(value="publish_user_id") + @Schema(description="发布人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long publishUserId; + + /** + * 发布人名字 + */ + @TableField(value="publish_user_name") + @Schema(description="发布人名字") + @Size(max = 100,message = "发布人名字最大长度要小于 100") + private String publishUserName; + + /** + * 发布时间 + */ + @TableField(value="publish_time") + @Schema(description="发布时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date publishTime; + + /** + * 内容 + */ + @TableField(value="content") + @Schema(description="内容") + @Size(max = 500,message = "内容最大长度要小于 500") + private String content; + + /** + * 接收人id + */ + @TableField(value="receive_user_id") + @Schema(description="接收人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long receiveUserId; + + /** + * 是否已读(0否 1是) + */ + @TableField(value="status") + @Schema(description="是否已读(0否 1是)") + private Integer status; + + /** + * 类型(1超校核 2超设计 3超汛限) + */ + @TableField(value="type") + @Schema(description="类型(1超校核 2超设计 3超汛限)") + private Integer type; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/OriginMessage.java b/src/main/java/com/gunshi/project/ss/model/OriginMessage.java new file mode 100644 index 0000000..0121b44 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OriginMessage.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * Description: + * Created by wanyan on 2024/8/2 + * + * @author wanyan + * @version 1.0 + */ +@Schema(description="原始报文表") +@Data +@TableName("public.origin_message") +public class OriginMessage { + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value="protocol") + @Schema(description="协议") + private String protocol; + + @TableField(value="address") + @Schema(description="设备地址") + private String address; + + @TableField(value="func_code") + @Schema(description="功能码") + private String funcCode; + + @TableField(value="data_time") + @Schema(description="数据时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date dataTime; + + @TableField(value="message") + @Schema(description="报文") + private String message; + + @TableField(value="tm") + @Schema(description="时间戳") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticFlowDevice.java b/src/main/java/com/gunshi/project/ss/model/OsmoticFlowDevice.java new file mode 100644 index 0000000..058aff4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticFlowDevice.java @@ -0,0 +1,200 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 渗流设备表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="渗流设备表") +@Data +@TableName("public.osmotic_flow_device") +public class OsmoticFlowDevice implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测点编号 + */ + @TableId(value="station_code", type= IdType.AUTO) + @Schema(description="测点编号") + @Size(max = 50,message = "测点编号最大长度要小于 50") + @NotBlank(message = "测点编号不能为空",groups = {Insert.class, Update.class}) + private String stationCode; + + /** + * 仪器编号 + */ + @TableField(value="device_code") + @Schema(description="仪器编号") + @Size(max = 50,message = "仪器编号最大长度要小于 50") + private String deviceCode; + + /** + * 仪器名称 + */ + @TableField(value="device_name") + @Schema(description="仪器名称") + @Size(max = 50,message = "仪器名称最大长度要小于 50") + private String deviceName; + + /** + * 仪器型号 + */ + @TableField(value="model") + @Schema(description="仪器型号") + @Size(max = 50,message = "仪器型号最大长度要小于 50") + private String model; + + /** + * 所属监测断面 + */ + @TableField(value="profile_code") + @Schema(description="所属监测断面") + @Size(max = 100,message = "所属监测断面最大长度要小于 100") + private String profileCode; + + /** + * 仪器厂家 + */ + @TableField(value="manufactor") + @Schema(description="仪器厂家") + @Size(max = 100,message = "仪器厂家最大长度要小于 100") + private String manufactor; + + /** + * 测量范围 + */ + @TableField(value="measuring_range") + @Schema(description="测量范围") + @Size(max = 100,message = "测量范围最大长度要小于 100") + private String measuringRange; + + /** + * 检验气温 + */ + @TableField(value="check_temp") + @Schema(description="检验气温") + // @Size(max = 0,message = "检验气温最大长度要小于 0") + private String checkTemp; + + /** + * 检验气压 + */ + @TableField(value="check_pre") + @Schema(description="检验气压") + // @Size(max = 0,message = "检验气压最大长度要小于 0") + private String checkPre; + + /** + * 检验日期 + */ + @TableField(value="check_date") + @Schema(description="检验日期") + // @Size(max = 0,message = "检验日期最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date checkDate; + + /** + * 灵敏度 + */ + @TableField(value="sensitivity") + @Schema(description="灵敏度") + // @Size(max = 0,message = "灵敏度最大长度要小于 0") + private String sensitivity; + + /** + * 绝缘电阻 + */ + @TableField(value="in_res") + @Schema(description="绝缘电阻") + // @Size(max = 0,message = "绝缘电阻最大长度要小于 0") + private String inRes; + + /** + * 耐水压 + */ + @TableField(value="wp") + @Schema(description="耐水压") + // @Size(max = 0,message = "耐水压最大长度要小于 0") + private String wp; + + /** + * 非直线度 + */ + @TableField(value="l") + @Schema(description="非直线度") + // @Size(max = 0,message = "非直线度最大长度要小于 0") + private String l; + + /** + * 不重复度 + */ + @TableField(value="r") + @Schema(description="不重复度") + // @Size(max = 0,message = "不重复度最大长度要小于 0") + private String r; + + /** + * 滞后 + */ + @TableField(value="h") + @Schema(description="滞后") + // @Size(max = 0,message = "滞后最大长度要小于 0") + private String h; + + /** + * 综合误差 + */ + @TableField(value="ec") + @Schema(description="综合误差") + // @Size(max = 0,message = "综合误差最大长度要小于 0") + private String ec; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + // @Size(max = 0,message = "经度最大长度要小于 0") + private String lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + // @Size(max = 0,message = "纬度最大长度要小于 0") + private String lttd; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticFlowR.java b/src/main/java/com/gunshi/project/ss/model/OsmoticFlowR.java new file mode 100644 index 0000000..f5a01f8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticFlowR.java @@ -0,0 +1,67 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 渗流监测记录表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="渗流监测记录表") +@Data +@TableName("public.osmotic_flow_r") +public class OsmoticFlowR implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测点编码 + */ + @TableField(value="station_code") + @MppMultiId + @Schema(description="测点编码") + private String stationCode; + + /** + * 监测时间 + */ + @MppMultiId + @TableField(value="tm") + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 通道号 + */ + @TableField(value="chan") + @Schema(description="通道号") + private String chan; + + /** + * 水深 + */ + @TableField(value="l") + @Schema(description="水深") + private BigDecimal l; + + /** + * 流量 + */ + @TableField(value="q") + @Schema(description="流量") + private BigDecimal q; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticPressDevice.java b/src/main/java/com/gunshi/project/ss/model/OsmoticPressDevice.java new file mode 100644 index 0000000..8a5b8f3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticPressDevice.java @@ -0,0 +1,237 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 渗压设备表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="渗压设备表") +@Data +@TableName("public.osmotic_press_device") +public class OsmoticPressDevice implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测点编号 + */ + @TableId(value="station_code", type= IdType.AUTO) + @Schema(description="测点编号") + @Size(max = 50,message = "测点编号最大长度要小于 50") + @NotBlank(message = "测点编号不能为空",groups = {Insert.class, Update.class}) + private String stationCode; + + /** + * 仪器编号 + */ + @TableField(value="device_code") + @Schema(description="仪器编号") + @Size(max = 50,message = "仪器编号最大长度要小于 50") + private String deviceCode; + + /** + * 仪器名称 + */ + @TableField(value="device_name") + @Schema(description="仪器名称") + @Size(max = 50,message = "仪器名称最大长度要小于 50") + private String deviceName; + + /** + * 仪器型号 + */ + @TableField(value="model") + @Schema(description="仪器型号") + @Size(max = 50,message = "仪器型号最大长度要小于 50") + private String model; + + /** + * 所属监测断面 + */ + @TableField(value="profile_code") + @Schema(description="所属监测断面") + @Size(max = 100,message = "所属监测断面最大长度要小于 100") + private String profileCode; + + /** + * 仪器厂家 + */ + @TableField(value="manufactor") + @Schema(description="仪器厂家") + @Size(max = 100,message = "仪器厂家最大长度要小于 100") + private String manufactor; + + /** + * 测量范围 + */ + @TableField(value="measuring_range") + @Schema(description="测量范围") + @Size(max = 100,message = "测量范围最大长度要小于 100") + private String measuringRange; + + /** + * 检验气温 + */ + @TableField(value="check_temp") + @Schema(description="检验气温") + // @Size(max = 0,message = "检验气温最大长度要小于 0") + private String checkTemp; + + /** + * 检验气压 + */ + @TableField(value="check_pre") + @Schema(description="检验气压") + // @Size(max = 0,message = "检验气压最大长度要小于 0") + private String checkPre; + + /** + * 无压读数 + */ + @TableField(value="no_pre") + @Schema(description="无压读数") + // @Size(max = 0,message = "无压读数最大长度要小于 0") + private String noPre; + + /** + * 检验日期 + */ + @TableField(value="check_date") + @Schema(description="检验日期") + // @Size(max = 0,message = "检验日期最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date checkDate; + + /** + * 灵敏度 + */ + @TableField(value="sensitivity") + @Schema(description="灵敏度") + // @Size(max = 0,message = "灵敏度最大长度要小于 0") + private BigDecimal sensitivity; + + /** + * 温度修正系数 + */ + @TableField(value="temp_cor_coe") + @Schema(description="温度修正系数") + // @Size(max = 0,message = "温度修正系数最大长度要小于 0") + private BigDecimal tempCorCoe; + + /** + * 温度实时测量值T + */ + @TableField(value="t") + @Schema(description="温度实时测量值T") + private BigDecimal t; + + /** + * 温度的基准值T₀ + */ + @TableField(value="t0") + @Schema(description="温度的基准值T₀") + private BigDecimal t0; + + /** + * 气压的基准值Q₀ + */ + @TableField(value="q0") + @Schema(description="气压的基准值Q₀") + private BigDecimal q0; + + /** + * 气压实时测量值Q + */ + @TableField(value="q") + @Schema(description="气压实时测量值Q") + private BigDecimal q; + + /** + * 非直线度 + */ + @TableField(value="l") + @Schema(description="非直线度") + // @Size(max = 0,message = "非直线度最大长度要小于 0") + private BigDecimal l; + + /** + * 不重复度 + */ + @TableField(value="r") + @Schema(description="不重复度") + // @Size(max = 0,message = "不重复度最大长度要小于 0") + private BigDecimal r; + + /** + * 滞后 + */ + @TableField(value="h") + @Schema(description="滞后") + // @Size(max = 0,message = "滞后最大长度要小于 0") + private BigDecimal h; + + /** + * 综合误差 + */ + @TableField(value="ec") + @Schema(description="综合误差") + // @Size(max = 0,message = "综合误差最大长度要小于 0") + private BigDecimal ec; + + /** + * 分辨力 + */ + @TableField(value="re") + @Schema(description="分辨力") + // @Size(max = 0,message = "分辨力最大长度要小于 0") + private BigDecimal re; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + // @Size(max = 0,message = "经度最大长度要小于 0") + private String lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + // @Size(max = 0,message = "纬度最大长度要小于 0") + private String lttd; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticPressR.java b/src/main/java/com/gunshi/project/ss/model/OsmoticPressR.java new file mode 100644 index 0000000..f024bee --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticPressR.java @@ -0,0 +1,90 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 渗压监测记录表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="渗压监测记录表") +@Data +@TableName("public.osmotic_press_r") +public class OsmoticPressR implements Serializable { + + + private static final long serialVersionUID = 1L; + + + /** + * 测点编码 + */ + @TableField(value="station_code") + @MppMultiId + @Schema(description="测点编码") + private String stationCode; + + /** + * 监测时间 + */ + @MppMultiId + @TableField(value="tm") + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 通道号 + */ + @TableField(value="chan") + @Schema(description="通道号") + private String chan; + + /** + * 管水位 + */ + @TableField(value="value") + @Schema(description="管水位") + private BigDecimal value; + + /** + * 渗压 + */ + @TableField(value="press") + @Schema(description="渗压") + private BigDecimal press; + + /** + * 振弦 + */ + @TableField(value="vib") + @Schema(description="振弦") + private BigDecimal vib; + + /** + * 温度 + */ + @TableField(value="temp") + @Schema(description="温度") + private BigDecimal temp; + + @TableField(exist = false) + @Schema(description = "断面名称") + private String profileName; + + @TableField(exist = false) + @Schema(description = "断面编号") + private String profileCode; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticShiftDevice.java b/src/main/java/com/gunshi/project/ss/model/OsmoticShiftDevice.java new file mode 100644 index 0000000..ef2cb76 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticShiftDevice.java @@ -0,0 +1,87 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 描述: 位移设备表 + * author: xusan + * date: 2024-07-08 17:34:26 + */ +@Schema(description="位移设备表") +@Data +@TableName("public.osmotic_shift_device") +public class OsmoticShiftDevice implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 测点编号 + */ + @TableId(value="station_code", type= IdType.AUTO) + @Schema(description="测点编号") + @Size(max = 50,message = "测点编号最大长度要小于 50") + @NotBlank(message = "测点编号不能为空",groups = {Insert.class, Update.class}) + private String stationCode; + + /** + * 仪器编号 + */ + @TableField(value="device_code") + @Schema(description="仪器编号") + @Size(max = 50,message = "仪器编号最大长度要小于 50") + private String deviceCode; + + /** + * 仪器名称 + */ + @TableField(value="device_name") + @Schema(description="仪器名称") + @Size(max = 50,message = "仪器名称最大长度要小于 50") + private String deviceName; + + /** + * 仪器型号 + */ + @TableField(value="model") + @Schema(description="仪器型号") + @Size(max = 50,message = "仪器型号最大长度要小于 50") + private String model; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + private BigDecimal lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + private BigDecimal lttd; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; +} diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticShiftR.java b/src/main/java/com/gunshi/project/ss/model/OsmoticShiftR.java new file mode 100644 index 0000000..3276624 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticShiftR.java @@ -0,0 +1,68 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 位移监测记录表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="位移监测记录表") +@Data +@TableName("public.osmotic_shift_r") +public class OsmoticShiftR implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测点编码 + */ + @TableField(value="station_code") + @MppMultiId + @Schema(description="测点编码") + private String stationCode; + + /** + * 监测时间 + */ + @MppMultiId + @TableField(value="tm") + @Schema(description="监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * x方向 + */ + @TableField(value="x") + @Schema(description="x方向") + private BigDecimal x; + + /** + * y方向 + */ + @TableField(value="y") + @Schema(description="y方向") + private BigDecimal y; + + /** + * h方向 + */ + @TableField(value="h") + @Schema(description="h方向") + private BigDecimal h; + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticWarnR.java b/src/main/java/com/gunshi/project/ss/model/OsmoticWarnR.java new file mode 100644 index 0000000..88bd35d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticWarnR.java @@ -0,0 +1,88 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 隐患预警记录表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="隐患预警记录表") +@Data +@TableName("public.osmotic_warn_r") +public class OsmoticWarnR implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + private Long id; + + /** + * 测点编号 + */ + @TableField(value="station_code") + @Schema(description="测点编号") + @Size(max = 32,message = "测点编号最大长度要小于 32") + private String stationCode; + + /** + * 预警规则id + */ + @TableField(value="rule_id") + @Schema(description="预警规则id") + private Long ruleId; + + /** + * 监测值 + */ + @TableField(value="value") + @Schema(description="监测值") + private BigDecimal value; + + /** + * 预警时间 + */ + @TableField(value="tm") + @Schema(description="预警时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 监测类型(1渗压 2渗流 3位移) + */ + @TableField(value="type") + @Schema(description="监测类型(1渗压 2渗流 3位移)") + private Integer type; + + /** + * 告警级别(1黄色 2红色) + */ + @TableField(value="level") + @Schema(description="告警级别(1黄色 2红色)") + private Integer level; + + @TableField(value = "resolve_suggest") + @Schema(description = "处理建议") + private String resolveSuggest; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticWarnRule.java b/src/main/java/com/gunshi/project/ss/model/OsmoticWarnRule.java new file mode 100644 index 0000000..940c827 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticWarnRule.java @@ -0,0 +1,202 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.Getter; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 预警规则配置表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="预警规则配置表") +@Data +@TableName("public.osmotic_warn_rule") +public class OsmoticWarnRule implements Serializable { + + @Getter + public enum Type { + PRESS(1), FLOW(2), SHIFT(3); + + private final int type; + + Type(int type) { + this.type = type; + } + + } + + @Getter + public enum Status { + DISABLE(0), ENABLE(1); + + private final int status; + + Status(int status) { + this.status = status; + } + } + + @Getter + public enum Relation { + AND(1), OR(2); + + private final int rel; + + Relation(int rel) { + this.rel = rel; + } + + public static Relation match(int rel) { + for (Relation value : values()) { + if (value.rel == rel) { + return value; + } + } + return null; + } + } + + public enum Condition { + GT(">"), GTE(">="), LT("<"), LTE("<="), EQ("="), NE("!="); + + private final String condition; + + Condition(String condition) { + this.condition = condition; + } + + public static Condition match(String condition) { + for (Condition value : values()) { + if (value.condition.equals(condition)) { + return value; + } + } + return null; + } + } + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 测点编号 + */ + @TableField(value="station_code") + @Schema(description="测点编号") + @Size(max = 32,message = "测点编号最大长度要小于 32") + @NotBlank(message = "测点编号不能为空") + private String stationCode; + + /** + * 告警类型(1渗压监测 2渗流监测 3位移监测) + */ + @TableField(value="type") + @Schema(description="告警类型(1渗压监测 2渗流监测 3位移监测)") + private Integer type; + + /** + * 告警级别(1黄色 2红色) + */ + @TableField(value="level") + @Schema(description="告警级别(1黄色 2红色)") + private Integer level; + + /** + * 校验规则描述 + */ + @TableField(value="rule_desc") + @Schema(description="校验规则描述") + @Size(max = 32,message = "校验规则描述最大长度要小于 32") + private String ruleDesc; + + /** + * 位移方向(x,y,z) + */ + @TableField(value="direction") + @Schema(description="位移方向(x,y,h)") + private String direction; + + /** + * condition_one + */ + @TableField(value="condition_one") + @Schema(description="condition_one") + @Size(max = 32,message = "condition_one最大长度要小于 32") + private String conditionOne; + + /** + * value_one + */ + @TableField(value="value_one") + @Schema(description="value_one") + private BigDecimal valueOne; + + /** + * condition_two + */ + @TableField(value="condition_two") + @Schema(description="condition_two") + @Size(max = 32,message = "condition_two最大长度要小于 32") + private String conditionTwo; + + /** + * 1且 2或 + */ + @TableField(value="condition") + @Schema(description="1且 2或") + private Integer condition; + + /** + * value_two + */ + @TableField(value="value_two") + @Schema(description="value_two") + private BigDecimal valueTwo; + + + @TableField(value = "resolve_suggest") + @Schema(description = "处理建议") + private String resolveSuggest; + + /** + * 是否启用(0否 1是) + */ + @TableField(value="status") + @Schema(description="是否启用(0否 1是)") + private BigDecimal status; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticWaterR.java b/src/main/java/com/gunshi/project/ss/model/OsmoticWaterR.java new file mode 100644 index 0000000..ab2f10c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticWaterR.java @@ -0,0 +1,501 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 水质采样记录表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水质采样记录表") +@Data +@TableName("public.osmotic_water_r") +@EqualsAndHashCode(callSuper = true) +public class OsmoticWaterR extends GenericPageParams implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + // @Size(max = 0,message = "主键最大长度要小于 0") + @NotNull(message = "主键不能为空") + private Long id; + + /** + * 采集时间 + */ + @TableField(value="tm") + @Schema(description="采集时间") + // @Size(max = 0,message = "采集时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 水温 + */ + @TableField(value="temp") + @Schema(description="水温") + // @Size(max = 0,message = "水温最大长度要小于 0") + private String temp; + + /** + * PH + */ + @TableField(value="ph") + @Schema(description="PH") + // @Size(max = 0,message = "PH最大长度要小于 0") + private String ph; + + /** + * 溶解氧 + */ + @TableField(value="bod") + @Schema(description="溶解氧") + // @Size(max = 0,message = "溶解氧最大长度要小于 0") + private String bod; + + /** + * 高锰酸钾指数 + */ + @TableField(value="mn") + @Schema(description="高锰酸钾指数") + // @Size(max = 0,message = "高锰酸钾指数最大长度要小于 0") + private String mn; + + /** + * 化学需氧量 + */ + @TableField(value="codcr") + @Schema(description="化学需氧量") + // @Size(max = 0,message = "化学需氧量最大长度要小于 0") + private String codcr; + + /** + * 五日生化需氧量 + */ + @TableField(value="bod5") + @Schema(description="五日生化需氧量") + // @Size(max = 0,message = "五日生化需氧量最大长度要小于 0") + private String bod5; + + /** + * 氨氮 + */ + @TableField(value="nh3n") + @Schema(description="氨氮") + // @Size(max = 0,message = "氨氮最大长度要小于 0") + private String nh3n; + + /** + * 总磷 + */ + @TableField(value="tp") + @Schema(description="总磷") + // @Size(max = 0,message = "总磷最大长度要小于 0") + private String tp; + + /** + * 总氮 + */ + @TableField(value="tn") + @Schema(description="总氮") + // @Size(max = 0,message = "总氮最大长度要小于 0") + private String tn; + + /** + * 铜 + */ + @TableField(value="cu") + @Schema(description="铜") + // @Size(max = 0,message = "铜最大长度要小于 0") + private String cu; + + /** + * 锌 + */ + @TableField(value="zn") + @Schema(description="锌") + // @Size(max = 0,message = "锌最大长度要小于 0") + private String zn; + + /** + * 氟化物 + */ + @TableField(value="f") + @Schema(description="氟化物") + // @Size(max = 0,message = "氟化物最大长度要小于 0") + private String f; + + /** + * 硒 + */ + @TableField(value="se") + @Schema(description="硒") + // @Size(max = 0,message = "硒最大长度要小于 0") + private String se; + + /** + * 砷 + */ + @TableField(value="arsenic") + @Schema(description="砷") + // @Size(max = 0,message = "砷最大长度要小于 0") + private String arsenic; + + /** + * 汞 + */ + @TableField(value="hg") + @Schema(description="汞") + // @Size(max = 0,message = "汞最大长度要小于 0") + private String hg; + + /** + * 镉 + */ + @TableField(value="cd") + @Schema(description="镉") + // @Size(max = 0,message = "镉最大长度要小于 0") + private String cd; + + /** + * 铬 + */ + @TableField(value="cr") + @Schema(description="铬") + // @Size(max = 0,message = "铬最大长度要小于 0") + private String cr; + + /** + * 铅 + */ + @TableField(value="pb") + @Schema(description="铅") + // @Size(max = 0,message = "铅最大长度要小于 0") + private String pb; + + /** + * 氰化物 + */ + @TableField(value="cn") + @Schema(description="氰化物 ") + // @Size(max = 0,message = "氰化物 最大长度要小于 0") + private String cn; + + /** + * 挥发酚 + */ + @TableField(value="vlph") + @Schema(description="挥发酚 ") + // @Size(max = 0,message = "挥发酚 最大长度要小于 0") + private String vlph; + + /** + * 石油类 + */ + @TableField(value="oil") + @Schema(description="石油类") + // @Size(max = 0,message = "石油类最大长度要小于 0") + private String oil; + + /** + * 阴离子表面活性剂 + */ + @TableField(value="las") + @Schema(description="阴离子表面活性剂 ") + // @Size(max = 0,message = "阴离子表面活性剂 最大长度要小于 0") + private String las; + + /** + * 硫化物 + */ + @TableField(value="s") + @Schema(description="硫化物") + // @Size(max = 0,message = "硫化物最大长度要小于 0") + private String s; + + /** + * 大肠菌群数 + */ + @TableField(value="tcg") + @Schema(description="大肠菌群数 ") + // @Size(max = 0,message = "大肠菌群数 最大长度要小于 0") + private String tcg; + + /** + * 浊度 + */ + @TableField(value="turb") + @Schema(description="浊度") + // @Size(max = 0,message = "浊度最大长度要小于 0") + private String turb; + + /** + * 电导率 + */ + @TableField(value="cond") + @Schema(description="电导率") + // @Size(max = 0,message = "电导率最大长度要小于 0") + private String cond; + + /** + * 高锰酸盐 + */ + @TableField(value="codmn") + @Schema(description="高锰酸盐") + // @Size(max = 0,message = "高锰酸盐最大长度要小于 0") + private String codmn; + + /** + * 叶绿素 + */ + @TableField(value="chla") + @Schema(description="叶绿素") + // @Size(max = 0,message = "叶绿素最大长度要小于 0") + private String chla; + + /** + * 水质类别 + */ + @TableField(value="level") + @Schema(description="水质类别") + @Size(max = 10,message = "水质类别最大长度要小于 10") + private String level; + /** + * 选择的起始时间 + */ + @Schema(description = "选择的起始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date startTime; + + /** + * 选择的结束时间 + */ + @Schema(description = "选择的结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date endTime; + + /** + * PH类别 + */ + @TableField(value = "ph_level") + @Schema(description = "PH类别") + private String phLevel; + + /** + * 溶解氧类别 + */ + @TableField(value = "bod_level") + @Schema(description = "溶解氧类别") + private String bodLevel; + + /** + * 高锰酸钾类别 + */ + @TableField(value = "mn_level") + @Schema(description = "高锰酸钾类别") + private String mnLevel; + + /** + * 水温类别 + */ + @TableField(value = "temp_level") + @Schema(description = "水温类别") + private String tempLevel; + + /** + * 化学需氧量类别 + */ + @TableField(value = "codcr_level") + @Schema(description = "化学需氧量类别") + private String codcrLevel; + + /** + * 五日生化需氧量类别 + */ + @TableField(value = "bod5_level") + @Schema(description = "五日生化需氧量类别") + private String bod5Level; + + /** + * 氨氮类别 + */ + @TableField(value = "nh3n_level") + @Schema(description = "氨氮类别") + private String nh3nLevel; + + /** + * 总磷类别 + */ + @TableField(value = "tp_level") + @Schema(description = "总磷类别") + private String tpLevel; + + /** + * 总氮类别 + */ + @TableField(value = "tn_level") + @Schema(description = "总氮类别") + private String tnLevel; + + /** + * 铜类别 + */ + @TableField(value = "cu_level") + @Schema(description = "铜类别") + private String cuLevel; + + /** + * 锌类别 + */ + @TableField(value = "zn_level") + @Schema(description = "锌类别") + private String znLevel; + + /** + * 氟化物类别 + */ + @TableField(value = "f_level") + @Schema(description = "氟化物类别") + private String fLevel; + + /** + * 硒类别 + */ + @TableField(value = "se_level") + @Schema(description = "硒类别") + private String seLevel; + + /** + * 砷类别 + */ + @TableField(value = "arsenic_level") + @Schema(description = "砷类别") + private String arsenicLevel; + + /** + * 汞类别 + */ + @TableField(value = "hg_level") + @Schema(description = "汞类别") + private String hgLevel; + + /** + * 镉类别 + */ + @TableField(value = "cd_level") + @Schema(description = "镉类别") + private String cdLevel; + + /** + * 铬类别 + */ + @TableField(value = "cr_level") + @Schema(description = "铬类别") + private String crLevel; + + /** + * 铅类别 + */ + @TableField(value = "pb_level") + @Schema(description = "铅类别") + private String pbLevel; + + /** + * 氰化物类别 + */ + @TableField(value = "cn_level") + @Schema(description = "氰化物类别") + private String cnLevel; + + /** + * 挥发酚类别 + */ + @TableField(value = "vlph_level") + @Schema(description = "挥发酚类别") + private String vlphLevel; + + /** + * 石油类类别 + */ + @TableField(value = "oil_level") + @Schema(description = "石油类类别") + private String oilLevel; + + /** + * 阴离子表面活性剂类别 + */ + @TableField(value = "las_level") + @Schema(description = "阴离子表面活性剂类别") + private String lasLevel; + + /** + * 硫化物类别 + */ + @TableField(value = "s_level") + @Schema(description = "硫化物类别") + private String sLevel; + + /** + * 大肠菌群数类别 + */ + @TableField(value = "tcg_level") + @Schema(description = "大肠菌群数类别") + private String tcgLevel; + + /** + * 浊度类别 + */ + @TableField(value = "turb_level") + @Schema(description = "浊度类别") + private String turbLevel; + + /** + * 电导率类别 + */ + @TableField(value = "cond_level") + @Schema(description = "电导率类别") + private String condLevel; + + /** + * 高锰酸盐类别 + */ + @TableField(value = "codmn_level") + @Schema(description = "高锰酸盐类别") + private String codmnLevel; + + /** + * 叶绿素类别 + */ + @TableField(value = "chla_level") + @Schema(description = "叶绿素类别") + private String chlaLevel; + + /** + * 污染物及超标倍数 + */ + @TableField(value = "paem") + @Schema(description = "污染物及超标倍数") + private String paem; +} diff --git a/src/main/java/com/gunshi/project/ss/model/OsmoticWaterRule.java b/src/main/java/com/gunshi/project/ss/model/OsmoticWaterRule.java new file mode 100644 index 0000000..f8fdf6c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/OsmoticWaterRule.java @@ -0,0 +1,93 @@ +package com.gunshi.project.ss.model; + + +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 jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +/** +* 描述: 水质质量标准规则表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水质质量标准规则表") +@Data +@TableName("public.osmotic_water_rule") +public class OsmoticWaterRule implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 项目编号 + */ + @TableId(value="code", type= IdType.AUTO) + @Schema(description="项目编号") + @Size(max = 20,message = "项目编号最大长度要小于 20") + @NotBlank(message = "项目编号不能为空") + private String code; + + /** + * 项目名称 + */ + @TableField(value="name") + @Schema(description="项目名称") + @Size(max = 20,message = "项目名称最大长度要小于 20") + private String name; + + /** + * 条件 + */ + @TableField(value="condition") + @Schema(description="条件") + @Size(max = 20,message = "条件最大长度要小于 20") + private String condition; + + /** + * I + */ + @TableField(value="one") + @Schema(description="I") + // @Size(max = 0,message = "I最大长度要小于 0") + private String one; + + /** + * II + */ + @TableField(value="two") + @Schema(description="II") + // @Size(max = 0,message = "II最大长度要小于 0") + private String two; + + /** + * III + */ + @TableField(value="three") + @Schema(description="III") + // @Size(max = 0,message = "III最大长度要小于 0") + private String three; + + /** + * IV + */ + @TableField(value="four") + @Schema(description="IV") + // @Size(max = 0,message = "IV最大长度要小于 0") + private String four; + + /** + * V + */ + @TableField(value="five") + @Schema(description="V") + // @Size(max = 0,message = "V最大长度要小于 0") + private String five; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/PersonnelPlan.java b/src/main/java/com/gunshi/project/ss/model/PersonnelPlan.java new file mode 100644 index 0000000..55b6e60 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/PersonnelPlan.java @@ -0,0 +1,216 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import com.ruoyi.common.annotation.Excel; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="培训计划表") +@Accessors(chain = true) // chain = true 实现链式调用 +@Data +@TableName("public.personnel_plan") +public class PersonnelPlan extends CommUpdate implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 培训班名称 + */ + @Excel(name = "培训班名称",sort = 1) + @TableField(value="name") + @Schema(description="培训班名称") + @Size(max = 30,message = "培训班名称最大长度要小于 30") + @NotBlank(message = "培训班名称不能为空",groups = {Insert.class, Update.class}) + private String name; + + /** + * 培训主题分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他 + */ + @TableField(value="type") + @Excel(name = "培训主题",sort = 2,readConverterExp = "1=水利,2=岗前培训,3=在岗培训,4=政治学习教育,5=其他") + @Schema(description="培训主题分类,1:水利,2:岗前培训,3:在岗培训,4:政治学习教育,5:其他") + @NotNull(message = "培训主题不能为空",groups = {Insert.class, Update.class}) + @Pattern(regexp = "^[0-4]$", message = "培训主题分类应为:1:水利,2:岗前培训,3:在岗培训,4:政治学习教育,5:其他") + private Integer type; + + /** + * 主办单位 + */ + @Excel(name = "主办单位",sort = 5) + @TableField(value="unit") + @Schema(description="主办单位") + @Size(max = 100,message = "主办单位最大长度要小于 100") + @NotBlank(message = "主办单位不能为空",groups = {Insert.class, Update.class}) + private String unit; + + /** + * 开始培训时间 + */ + @Excel(name = "开始培训时间",sort = 3,dateFormat = DateFormatString.YYYY_MM_DD) + @Schema(description="开始培训时间 格式:yyyy-MM-dd") + @NotNull(message = "开始培训时间不能为空") + @TableField(value="stm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date stm; + + /** + * 结束培训时间 + */ + @Excel(name = "结束培训时间",sort = 4,dateFormat = DateFormatString.YYYY_MM_DD) + @Schema(description="结束培训时间 格式:yyyy-MM-dd") + @NotNull(message = "结束培训时间不能为空") + @TableField(value="etm") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date etm; + + /** + * 培训天数(天) + */ + @Excel(name = "培训天数(天)",sort = 9) + @Schema(description="培训天数(天)") + @TableField(value="day") + private Integer day; + + /** + * 培训期数(期) + */ + @Excel(name = "培训期数(期)",sort = 8) + @Schema(description="培训期数(期)") + @TableField(value="num") + private Integer num; + + /** + * 培训地点 + */ + @Excel(name = "培训地点",sort = 7) + @Schema(description="培训地点") + @TableField(value="addr") + @Size(max = 200,message = "主办单位最大长度要小于 200") + @NotBlank(message = "培训地点不能为空",groups = {Insert.class, Update.class}) + private String addr; + + /** + * 培训内容 + */ + @Excel(name = "培训内容",sort = 6) + @Schema(description="培训内容") + @TableField(value="content") + @Size(max = 500,message = "培训内容最大长度要小于 500") + @NotBlank(message = "培训内容不能为空",groups = {Insert.class, Update.class}) + private String content; + + /** + * 培训范围 + */ + @Excel(name = "培训范围",sort = 10) + @Schema(description="培训范围") + @TableField(value="scope") + @Size(max = 500,message = "培训范围最大长度要小于 500") + @NotBlank(message = "培训范围不能为空",groups = {Insert.class, Update.class}) + private String scope; + + /** + * 参训人员 + */ + @Excel(name = "参训人员",sort = 11) + @Schema(description="参训人员") + @TableField(value="trainees") + @Size(max = 200,message = "参训人员最大长度要小于 200") + private String trainees; + + /** + * 参训人数(人) + */ + @Excel(name = "参训人数(人)",sort = 12) + @Schema(description="参训人数(人)") + @TableField(value="num_people") + @Size(max = 200,message = "参训人员最大长度要小于 200") + @NotNull(message = "参训人数不能为空",groups = {Insert.class, Update.class}) + private Integer numPeople; + + /** + * 联系人 + */ + @Excel(name = "联系人",sort = 13) + @Schema(description="联系人") + @TableField(value="contacts") + @Size(max = 50,message = "联系人最大长度要小于 50") + private String contacts; + + /** + * 联系电话 + */ + @Excel(name = "联系电话",sort = 14) + @Schema(description="联系电话") + @TableField(value="contact_number") + @Size(max = 30,message = "联系电话最大长度要小于 30") + private String contactNumber; + + /** + * 填报人 + */ + @Schema(description="填报人") + @TableField(value="applicant") + @Size(max = 50,message = "填报人最大长度要小于 50") + @Excel(name = "填报人",sort = 7) + private String applicant; + + /** + * 状态 + */ + @Schema(description="状态 0:无效 1:有效") + @TableField(value="status") + @Size(max = 2,message = "状态最大长度要小于 2") + @NotNull(message = "状态不能为空",groups = {Insert.class, Update.class}) + @Pattern(regexp = "^[0-1]$", message = "状态应为:0:无效 1:有效") + private Integer status; + + /** + * 登记日期 + */ + @Schema(description="登记日期") + @TableField(value="reg_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date regDate; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} diff --git a/src/main/java/com/gunshi/project/ss/model/PersonnelPlanLog.java b/src/main/java/com/gunshi/project/ss/model/PersonnelPlanLog.java new file mode 100644 index 0000000..8b0c894 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/PersonnelPlanLog.java @@ -0,0 +1,176 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="培训记录表") +@Data +@TableName("public.personnel_plan_log") +public class PersonnelPlanLog extends CommUpdate implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 培训计划主键 + */ + @TableField(value="plan_id") + @Schema(description="培训计划主键") + @JsonSerialize(using = ToStringSerializer.class) +// @NotNull(message = "培训计划不能为空",groups = {Insert.class, Update.class}) + private Long planId; + + /** + * 培训日期 + */ + @TableField(value="plan_date") + @Schema(description="培训日期 格式:yyyy-MM-dd") + @NotNull(message = "培训日期不能为空",groups = {Insert.class, Update.class}) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date planDate; + + /** + * 标题名称 + */ + @TableField(value="name") + @Schema(description="标题名称") + @Size(max = 30,message = "标题名称最大长度要小于 30") + @NotBlank(message = "标题名称不能为空",groups = {Insert.class, Update.class}) + private String name; + + /** + * 培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他 + */ + @TableField(value="type") + @Schema(description="培训分类,0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") + @Pattern(regexp = "^[0-4]$", message = "培训主题分类应为:0:水利,1:岗前培训,2:在岗培训,3:政治学习教育,4:其他") + private Integer type; + + + /** + * 开始培训时间 + */ + @Schema(description="培训时段开始时间 格式:HH:mm:ss") + @TableField(value="stm") + @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8") + private Date stm; + + /** + * 结束培训时间 + */ + @Schema(description="培训时段结束时间 格式:HH:mm:ss") + @TableField(value="etm") + @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8") + private Date etm; + + /** + * 培训时长(小时) + */ + @Schema(description="培训时长(小时)") + @TableField(value="hour") + private Integer hour; + + /** + * 培训地点 + */ + @Schema(description="培训地点") + @TableField(value="addr") + @Size(max = 200,message = "主办单位最大长度要小于 200") + @NotBlank(message = "培训地点不能为空",groups = {Insert.class, Update.class}) + private String addr; + + /** + * 主办单位 + */ + @TableField(value="unit") + @Schema(description="主办单位") + @Size(max = 100,message = "主办单位最大长度要小于 100") + @NotBlank(message = "主办单位不能为空",groups = {Insert.class, Update.class}) + private String unit; + + + /** + * 培训内容 + */ + @Schema(description="培训内容") + @TableField(value="content") + @Size(max = 500,message = "培训内容最大长度要小于 500") + @NotBlank(message = "培训内容不能为空",groups = {Insert.class, Update.class}) + private String content; + + /** + * 参训人员 + */ + @Schema(description="参训人员") + @TableField(value="trainees") + @Size(max = 200,message = "参训人员最大长度要小于 200") + private String trainees; + + /** + * 参训人数(人) + */ + @Schema(description="参训人数(人)") + @TableField(value="num_people") + @Size(max = 200,message = "参训人员最大长度要小于 200") + @NotNull(message = "参训人数不能为空",groups = {Insert.class, Update.class}) + private Integer numPeople; + + /** + * 填报人 + */ + @Schema(description="填报人") + @TableField(value="applicant") + @Size(max = 50,message = "填报人最大长度要小于 50") + private String applicant; + + /** + * 登记日期 + */ + @Schema(description="登记日期") + @TableField(value="reg_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date regDate; + + @TableField(exist = false) + @Schema(description = "签到培训表") + private List files1; + + @TableField(exist = false) + @Schema(description = "附件") + private List files2; +} diff --git a/src/main/java/com/gunshi/project/ss/model/PrePlace.java b/src/main/java/com/gunshi/project/ss/model/PrePlace.java new file mode 100644 index 0000000..941db9c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/PrePlace.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@TableName(value = "pre_place") +public class PrePlace { + + @TableId(value = "id") + @Schema(description = "主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + + @TableField(value = "pre_name") + @NotNull(message = "防治点不能为空", groups = {Insert.class, Update.class}) + private String preName; + + @TableField(value = "create_time") + private Date createTime; + + @TableField(exist = false) + private List childrens; +} diff --git a/src/main/java/com/gunshi/project/ss/model/PrePlaceDetail.java b/src/main/java/com/gunshi/project/ss/model/PrePlaceDetail.java new file mode 100644 index 0000000..1b769de --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/PrePlaceDetail.java @@ -0,0 +1,47 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@TableName(value = "pre_place_detail") +public class PrePlaceDetail { + + @TableId(value = "id") + @NotNull(message = "主键ID不能为空",groups = Update.class) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "detail_name") + @Schema(description = "防治部位") + @NotNull(message = "防治部位不能为空", groups = {Insert.class, Update.class}) + private String detailName; + + @TableField(value = "pre_id") + @Schema(description = "防治点id") + @NotNull(message = "防治点不能为空",groups = {Insert.class, Update.class}) + private Long preId; + + @TableField(value = "remark") + @Schema(description = "详细描述") + private String remark; + + @TableField(value = "_order") + @Schema(description = "排序号") + private Integer order; + + @TableField(value = "is_enable") + @Schema(description = "是否启用 0启用 1禁用") + private Integer isEnable; + + @TableField(exist = false) + private Boolean hasUse = false; +} diff --git a/src/main/java/com/gunshi/project/ss/model/ProjectEvents.java b/src/main/java/com/gunshi/project/ss/model/ProjectEvents.java new file mode 100644 index 0000000..09afd70 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ProjectEvents.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 工程大事记 + */ +@Schema(description="工程大事记") +@Data +@TableName(value = "public.project_events") +public class ProjectEvents implements Serializable { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.INPUT) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "name") + @Schema(description="名称") + @NotEmpty(message = "名称不可为空",groups = {Insert.class,Update.class}) + private String name; + + /** + * 发生日期 + */ + @TableField(value = "events_date") + @Schema(description="发生日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + @NotNull(message = "日期不能为空",groups = {Insert.class,Update.class}) + private Date eventsDate; + + /** + * 类型(1综合大事记 2专题大事记) + */ + @TableField(value = "events_type") + @Schema(description="类型(1综合大事记 2专题大事记)") + private Integer eventsType; + + + @TableField(value = "events_desc") + @Schema(description="事件内容描述") + @NotEmpty(message = "事件内容描述不可为空",groups = {Insert.class,Update.class}) + private String eventsDesc; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RegressionEquation.java b/src/main/java/com/gunshi/project/ss/model/RegressionEquation.java new file mode 100644 index 0000000..9c8d92b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RegressionEquation.java @@ -0,0 +1,132 @@ +package com.gunshi.project.ss.model; + +import lombok.Data; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; + +/** + * 线性回归方程实体类 + */ +@Data +public class RegressionEquation { + /** + * 方程阶数 + */ + private int order; + + /** + * 方程系数(从常数项到最高次项) + * 例如:对于二次方程 y = ax² + bx + c,coefficients = [c, b, a] + */ + private List coefficients; + + /** + * 相关系数 R² + */ + private BigDecimal rSquared; + + /** + * 数据点数 + */ + private int dataCount; + + /** + * 方程字符串表示 + */ + private String equationString; + + public RegressionEquation(int order, List coefficients, BigDecimal rSquared, int dataCount) { + this.order = order; + this.coefficients = coefficients; + this.rSquared = rSquared; + this.dataCount = dataCount; + this.equationString = generateEquationString(); + } + + /** + * 生成方程字符串(使用数学符号) + */ + private String generateEquationString() { + StringBuilder sb = new StringBuilder("y = "); + + for (int i = coefficients.size() - 1; i >= 0; i--) { + BigDecimal coeff = coefficients.get(i); + if (coeff.compareTo(BigDecimal.ZERO) == 0) { + continue; + } + + // 符号处理 + if (sb.length() > 4 && coeff.compareTo(BigDecimal.ZERO) > 0) { + sb.append(" + "); + } else if (sb.length() > 4 && coeff.compareTo(BigDecimal.ZERO) < 0) { + sb.append(" - "); + coeff = coeff.abs(); + } + + // 系数和变量 - 保留至少20位小数 + if (i == 0) { + // 常数项 - 保留至少20位小数 + sb.append(coeff.setScale(20, RoundingMode.HALF_UP).toPlainString()); + } else { + // 非常数项 - 保留至少20位小数 + if (coeff.compareTo(BigDecimal.ONE) != 0 && coeff.compareTo(BigDecimal.ONE.negate()) != 0) { + sb.append(coeff.setScale(20, RoundingMode.HALF_UP).toPlainString()); + } + sb.append("x"); + if (i > 1) { + // 使用Unicode上标数字 + sb.append(getSuperscript(i)); + } + } + } + + return sb.toString(); + } + + /** + * 获取数字的Unicode上标表示 + */ + private String getSuperscript(int number) { + String numStr = String.valueOf(number); + StringBuilder superscript = new StringBuilder(); + for (char c : numStr.toCharArray()) { + switch (c) { + case '0': superscript.append('⁰'); break; + case '1': superscript.append('¹'); break; + case '2': superscript.append('²'); break; + case '3': superscript.append('³'); break; + case '4': superscript.append('⁴'); break; + case '5': superscript.append('⁵'); break; + case '6': superscript.append('⁶'); break; + case '7': superscript.append('⁷'); break; + case '8': superscript.append('⁸'); break; + case '9': superscript.append('⁹'); break; + default: superscript.append(c); + } + } + return superscript.toString(); + } + + /** + * 根据x值预测y值 + */ + public BigDecimal predict(BigDecimal x) { + BigDecimal result = BigDecimal.ZERO; + BigDecimal xPower = BigDecimal.ONE; + + for (int i = 0; i < coefficients.size(); i++) { + result = result.add(coefficients.get(i).multiply(xPower)); + xPower = xPower.multiply(x); + } + + return result; + } + + + @Override + public String toString() { + return String.format("%s", equationString); + } +} diff --git a/src/main/java/com/gunshi/project/ss/model/ResBriefR.java b/src/main/java/com/gunshi/project/ss/model/ResBriefR.java new file mode 100644 index 0000000..2ca9855 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResBriefR.java @@ -0,0 +1,85 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author lyf + * @since 2025-04-25 + */ +@Data +@TableName("public.res_brief_r") +@Slf4j +public class ResBriefR { + @TableId(value="id", type= IdType.AUTO) + private Integer id; + @TableField + private BigDecimal drp24Sum; + @TableField + private String sumStnm; + @TableField + private BigDecimal drp24Max; + @TableField + private String maxStnm; + @TableField + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date maxTm; + @TableField + private BigDecimal rz8; + @TableField + private BigDecimal rzYesterday8; + @TableField + private BigDecimal w; + @TableField + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date date; + @TableField + //设计洪水位 + private BigDecimal flLowLimLev; + @TableField(exist = false) + private String brief; + + public String getBrief() { + + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日"); + SimpleDateFormat sdf2 = new SimpleDateFormat("dd日HH时"); + BigDecimal gap; + if (rz8 != null && rzYesterday8 != null) { + gap = rz8.subtract(rzYesterday8); + } else { + gap = null; + } + String dir; + if (gap != null && gap.compareTo(BigDecimal.ZERO) > 0) { + dir = "上涨"; + } else if (gap != null && gap.compareTo(BigDecimal.ZERO) < 0) { + dir = "下跌"; + } else { + dir = "上涨"; + } + return String.format("%s08时,过去24小时最大累计降雨量%smm(%s),最大点雨量%smm/h(%s,%s)。当前水库水位%sm(汛限水位%sm),较昨日%s%sm,库容达%s万m³", + date == null ? "" : sdf1.format(date), + drp24Sum == null ? "" : drp24Sum.setScale(1, RoundingMode.DOWN), + sumStnm == null ? "" : sumStnm, + drp24Max == null ? "" : drp24Max.setScale(1, RoundingMode.DOWN), + maxStnm == null ? "" : maxStnm, + maxTm == null ? "" : sdf2.format(maxTm), + rz8 == null ? "" : rz8.setScale(2, RoundingMode.DOWN), + flLowLimLev == null ? "" : flLowLimLev.setScale(0, RoundingMode.DOWN), + gap == null ? "" :dir, + gap == null ? "" : gap.setScale(2, RoundingMode.DOWN), + w == null ? "" : w.setScale(2, RoundingMode.DOWN) + ); + } +} diff --git a/src/main/java/com/gunshi/project/ss/model/ResFloodRoad.java b/src/main/java/com/gunshi/project/ss/model/ResFloodRoad.java new file mode 100644 index 0000000..80a8977 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResFloodRoad.java @@ -0,0 +1,70 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* 描述: 防汛道路 +* author: xusan +* date: 2024-11-14 10:37:15 +*/ +@Schema(description="防汛道路") +@Data +@TableName("public.res_flood_road") +public class ResFloodRoad implements Serializable { + + public final static String thisTableName = "ResFloodRoad"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 水库代码 + */ + @TableField(value="res_code") + @Schema(description="水库代码") + @Size(max = 32,message = "水库代码最大长度要小于 32") + private String resCode; + + /** + * 名称 + */ + @TableField(value="name") + @Schema(description="名称") + @Size(max = 30,message = "名称最大长度要小于 30") + private String name; + + /** + * 防汛路长度 + */ + @TableField(value="flood_road_len") + @Schema(description="防汛路长度") + private BigDecimal floodRoadLen; + + /** + * 路面宽度 + */ + @TableField(value="road_width") + @Schema(description="路面宽度") + @Size(max = 30,message = "路面宽度最大长度要小于 30") + private String roadWidth; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ResMangUnit.java b/src/main/java/com/gunshi/project/ss/model/ResMangUnit.java new file mode 100644 index 0000000..6a37fc9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResMangUnit.java @@ -0,0 +1,106 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 水库管理单位表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库管理单位表") +@Data +@TableName("public.res_mang_unit") +public class ResMangUnit implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + private Long id; + + /** + * 水库代码 + */ + @TableField(value="res_code") + @Schema(description="水库代码") + @Size(max = 32,message = "水库代码最大长度要小于 32") + @NotBlank(message = "水库代码不能为空") + private String resCode; + + /** + * 管理单位名称 + */ + @TableField(value="mang_unit_name") + @Schema(description="管理单位名称") + @Size(max = 50,message = "管理单位名称最大长度要小于 50") + private String mangUnitName; + + /** + * 单位性质(1公益林 2民间组织 3企业 4其他) + */ + @TableField(value="type") + @Schema(description="单位性质(1公益林 2民间组织 3企业 4其他)") + // @Size(max = 0,message = "单位性质(1公益林 2民间组织 3企业 4其他)最大长度要小于 0") + private Integer type; + + /** + * 职工人数 + */ + @TableField(value="person_num") + @Schema(description="职工人数") + // @Size(max = 0,message = "职工人数最大长度要小于 0") + private Integer personNum; + + /** + * 人员经费来源 + */ + @TableField(value="person_funds_source") + @Schema(description="人员经费来源") + // @Size(max = 0,message = "人员经费来源最大长度要小于 0") + private String personFundsSource; + + /** + * 维修养护经费来源 + */ + @TableField(value="repair_funds_source") + @Schema(description="维修养护经费来源") + // @Size(max = 0,message = "维修养护经费来源最大长度要小于 0") + private String repairFundsSource; + + /** + * 行政主管单位 + */ + @TableField(value="adm_unit") + @Schema(description="行政主管单位") + @Size(max = 50,message = "行政主管单位最大长度要小于 50") + private String admUnit; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ResMonthEcoFlow.java b/src/main/java/com/gunshi/project/ss/model/ResMonthEcoFlow.java new file mode 100644 index 0000000..4b0f32d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResMonthEcoFlow.java @@ -0,0 +1,79 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 水库月核定生态流量表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库月核定生态流量表") +@Data +@TableName("public.res_month_eco_flow") +@Accessors(chain = true) // chain = true 实现链式调用 +public class ResMonthEcoFlow implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + private Long id; + + /** + * 水库代码 + */ + @TableField(value="res_code") + @Schema(description="水库代码") + @Size(max = 32,message = "水库代码最大长度要小于 32",groups = {Update.class, Insert.class}) + @NotBlank(message = "水库代码不能为空",groups = {Update.class, Insert.class}) + private String resCode; + + /** + * 月份 + */ + @TableField(value="month") + @Schema(description="月份") + // @Size(max = 0,message = "月份最大长度要小于 0") + private Integer month; + + /** + * 流量 + */ + @TableField(value="value") + @Schema(description="流量") + // @Size(max = 0,message = "流量最大长度要小于 0") + private BigDecimal value; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ResPerson.java b/src/main/java/com/gunshi/project/ss/model/ResPerson.java new file mode 100644 index 0000000..9320eab --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResPerson.java @@ -0,0 +1,91 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="责任人表") +@Data +@TableName("public.res_person") +public class ResPerson extends CommUpdate implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 名字 + */ + @TableField(value="name") + @Schema(description="名字") + @Size(max = 30,message = "名字最大长度要小于 30") + @NotBlank(message = "姓名不能为空") + private String name; + + /** + * 类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术 + */ + @TableField(value="type") + @Schema(description="类型,0:行政,1:主管部门,2:管理单位,3:巡查,4:技术") + @NotNull(message = "责任类型不能为空") + private Integer type; + + /** + * 单位 + */ + @TableField(value="unit") + @Schema(description="单位") + @Size(max = 50,message = "单位最大长度要小于 50") + private String unit; + + /** + * 职务 + */ + @TableField(value="duty") + @Schema(description="职务") + @Size(max = 50,message = "职务最大长度要小于 50") + private String duty; + + /** + * 联系方式 + */ + @TableField(value="contact_info") + @Schema(description="联系方式") + @Size(max = 100,message = "联系方式最大长度要小于 100") + private String contactInfo; + + /** + * 职责范围 + */ + @TableField(value="duty_bound") + @Schema(description="职责范围") + @Size(max = 200,message = "职责范围最大长度要小于 200") + private String dutyBound; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/ResPlanB.java b/src/main/java/com/gunshi/project/ss/model/ResPlanB.java new file mode 100644 index 0000000..6437115 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResPlanB.java @@ -0,0 +1,125 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 水库预案表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库预案表") +@Data +@TableName("public.res_plan_b") +public class ResPlanB implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long id; + + /** + * 水库代码 + */ + @TableField(value="res_code") + @Schema(description="水库代码") + @Size(max = 32,message = "水库代码最大长度要小于 32") + @NotBlank(message = "水库代码不能为空") + private String resCode; + + /** + * 预案/调度规程名称 + */ + @TableField(value="plan_name") + @Schema(description="预案/调度规程名称") + @Size(max = 50,message = "预案/调度规程名称最大长度要小于 50") + private String planName; + + /** + * 编制时间 + */ + @TableField(value="prep_time") + @Schema(description="编制时间") + // @Size(max = 0,message = "编制时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date prepTime; + + /** + * 编制单位 + */ + @TableField(value="prep_org") + @Schema(description="编制单位") + @Size(max = 30,message = "编制单位最大长度要小于 30") + private String prepOrg; + + /** + * 批复时间 + */ + @TableField(value="appr_time") + @Schema(description="批复时间") + // @Size(max = 0,message = "批复时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date apprTime; + + /** + * 批复部门 + */ + @TableField(value="appr_org") + @Schema(description="批复部门") + @Size(max = 30,message = "批复部门最大长度要小于 30") + private String apprOrg; + + /** + * 文件id + */ + @TableField(value="file_id") + @Schema(description="文件id") + // @Size(max = 0,message = "文件id最大长度要小于 0") + private Long fileId; + + /** + * 类型(1防汛预案 2调度规程) + */ + @TableField(value="type") + @Schema(description="类型(1防汛预案 2调度规程)") + // @Size(max = 0,message = "类型(1防汛预案 2调度规程)最大长度要小于 0") + private Integer type; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ResProjectImg.java b/src/main/java/com/gunshi/project/ss/model/ResProjectImg.java new file mode 100644 index 0000000..664f9d8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResProjectImg.java @@ -0,0 +1,97 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 水库工程图片 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库工程图片") +@Data +@TableName("public.res_project_img") +public class ResProjectImg implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + // @Size(max = 0,message = "主键最大长度要小于 0") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 水库代码 + */ + @TableField(value="res_code") + @Schema(description="水库代码") + @Size(max = 32,message = "水库代码最大长度要小于 32") + @NotBlank(message = "水库代码不能为空") + private String resCode; + + /** + * 序号 + */ + @TableField(value="sort_on") + @Schema(description="序号") + // @Size(max = 0,message = "序号最大长度要小于 0") + private Integer sortOn; + + /** + * 工程图片类别 1:枢纽全景彩照 2:枢纽平面配置图 3:泄水建筑物设计图及现场图片 4:主坝设计图及现场照片 5:输水建筑物设计图及现场照片 9:其他图纸和照片 + */ + @TableField(value="proj_type") + @Schema(description="工程图片类别 1:枢纽全景彩照 2:枢纽平面配置图 3:泄水建筑物设计图及现场图片 4:主坝设计图及现场照片 5:输水建筑物设计图及现场照片 9:其他图纸和照片") + // @Size(max = 0,message = "工程图片类别 1:枢纽全景彩照 2:枢纽平面配置图 3:泄水建筑物设计图及现场图片 4:主坝设计图及现场照片 5:输水建筑物设计图及现场照片 9:其他图纸和照片最大长度要小于 0") + private Integer projType; + + /** + * 工程图片类别 1:枢纽全景彩照 2:枢纽平面配置图 3:泄水建筑物设计图及现场图片 4:主坝设计图及现场照片 5:输水建筑物设计图及现场照片 9:其他图纸和照片 + */ + @TableField(value="proj_type_str") + @Schema(description="工程图片类别 枢纽全景彩照 枢纽平面配置图 泄水建筑物设计图及现场图片 主坝设计图及现场照片 输水建筑物设计图及现场照片 其他图纸和照片") + private String projTypeStr; + + /** + * 文件id + */ + @TableField(value="file_id") + @Schema(description="文件id") + // @Size(max = 0,message = "文件id最大长度要小于 0") + private Long fileId; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ResSafePersonB.java b/src/main/java/com/gunshi/project/ss/model/ResSafePersonB.java new file mode 100644 index 0000000..8adee31 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResSafePersonB.java @@ -0,0 +1,111 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 水库责任体系表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水库责任体系表") +@Data +@TableName("public.res_safe_person_b") +public class ResSafePersonB implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + // @Size(max = 0,message = "主键最大长度要小于 0") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 水库代码 + */ + @TableField(value="res_code") + @Schema(description="水库代码") + @Size(max = 32,message = "水库代码最大长度要小于 32") + @NotBlank(message = "水库代码不能为空") + private String resCode; + + /** + * 责任人类型 1:行政责任人 2:技术责任人 3:巡查责任人 4:主管部门责任人 5:管理单位责任人 + */ + @TableField(value="rep_type") + @Schema(description="责任人类型 1:行政责任人 2:技术责任人 3:巡查责任人 4:主管部门责任人 5:管理单位责任人") + // @Size(max = 0,message = "责任人类型 1:行政责任人 2:技术责任人 3:巡查责任人 4:主管部门责任人 5:管理单位责任人最大长度要小于 0") + private Integer repType; + + /** + * 姓名 + */ + @TableField(value="person_name") + @Schema(description="姓名") + @Size(max = 20,message = "姓名最大长度要小于 20") + private String personName; + + /** + * 单位 + */ + @TableField(value="org_name") + @Schema(description="单位") + @Size(max = 20,message = "单位最大长度要小于 20") + private String orgName; + + /** + * 职务 + */ + @TableField(value="position") + @Schema(description="职务") + @Size(max = 20,message = "职务最大长度要小于 20") + private String position; + + /** + * 联系方式 + */ + @TableField(value="tel") + @Schema(description="联系方式") + @Size(max = 20,message = "联系方式最大长度要小于 20") + private String tel; + + /** + * 序号 + */ + @TableField(value="sort_on") + @Schema(description="序号") + // @Size(max = 0,message = "序号最大长度要小于 0") + private Integer sortOn; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ResTunnel.java b/src/main/java/com/gunshi/project/ss/model/ResTunnel.java new file mode 100644 index 0000000..5426a76 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ResTunnel.java @@ -0,0 +1,130 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* 描述: 水库建筑物 - 放空洞/灌溉发电洞 +* author: xusan +* date: 2024-11-14 10:34:11 +*/ +@Schema(description="水库建筑物 - 放空洞/灌溉发电洞") +@Data +@TableName("public.res_tunnel") +public class ResTunnel implements Serializable { + + public final static String thisTableName = "ResTunnel"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 水库代码 + */ + @TableField(value="res_code") + @Schema(description="水库代码") + @Size(max = 32,message = "水库代码最大长度要小于 32") + private String resCode; + + /** + * 建筑物名称 + */ + @TableField(value="name") + @Schema(description="建筑物名称") + @Size(max = 30,message = "建筑物名称最大长度要小于 30") + private String name; + + /** + * 型式 + */ + @TableField(value="build_type") + @Schema(description="型式") + @Size(max = 30,message = "型式最大长度要小于 30") + private String buildType; + + /** + * 衬砌型式 + */ + @TableField(value="lining_type") + @Schema(description="衬砌型式") + @Size(max = 30,message = "衬砌型式最大长度要小于 30") + private String liningType; + + /** + * 地基特性 + */ + @TableField(value="found_character") + @Schema(description="地基特性") + @Size(max = 30,message = "地基特性最大长度要小于 30") + private String foundCharacter; + + /** + * 进口底板高程(m) + */ + @TableField(value="inlet_ele") + @Schema(description="进口底板高程(m)") + private BigDecimal inletEle; + + /** + * 断面尺寸 + */ + @TableField(value="section_size") + @Schema(description="断面尺寸") + private BigDecimal sectionSize; + + /** + * 洞长 + */ + @TableField(value="tunnel_len") + @Schema(description="洞长") + private BigDecimal tunnelLen; + + /** + * 设计流量(m3/s) + */ + @TableField(value="des_q") + @Schema(description="设计流量(m3/s)") + private BigDecimal desQ; + + /** + * 进口闸门型式 + */ + @TableField(value="valve_type") + @Schema(description="进口闸门型式") + @Size(max = 30,message = "进口闸门型式最大长度要小于 30") + private String valveType; + + /** + * 进口启闭机型式 + */ + @TableField(value="oc_type") + @Schema(description="进口启闭机型式") + @Size(max = 18,message = "进口启闭机型式最大长度要小于 18") + private String ocType; + + /** + * 类型(1放空洞 2灌溉发电洞) + */ + @TableField(value="type") + @Schema(description="类型(1放空洞 2灌溉发电洞)") + private Integer type; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RescueGoodsB.java b/src/main/java/com/gunshi/project/ss/model/RescueGoodsB.java new file mode 100644 index 0000000..eae6d9f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RescueGoodsB.java @@ -0,0 +1,117 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.service.AbstractModelWithAttachService; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 抢险物资 + */ +@Schema(description="抢险物资") +@Data +@TableName(value = "public.rescue_goods_b") +public class RescueGoodsB implements Serializable, AbstractModelWithAttachService.GetFileIds { + /** + * 主键 + */ + @TableId(value = "goods_id", type = IdType.INPUT) + @Schema(description="主键") + @NotNull(message = "主键不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long goodsId; + + /** + * 物资名称 + */ + @TableField(value = "goods_name") + @Schema(description="物资名称") + @Size(max = 100,message = "物资名称最大长度要小于 100") + @NotEmpty(message = "物资名称不能为空", groups = {Insert.class, Update.class}) + private String goodsName; + + /** + * 物资类型(1抢险物资 2救生器材) + */ + @TableField(value = "goods_type") + @Schema(description="物资类型(1抢险物资 2救生器材)") + @NotNull(message = "物资类型不能为空", groups = {Insert.class, Update.class}) + private Integer goodsType; + + /** + * 规格 + */ + @TableField(value = "specs") + @Schema(description="规格") + private String specs; + + /** + * 单位(1个 2件 3米 4把 5台 6套 7副 8箱 9卷 10立方米 11平方米) + */ + @TableField(value = "unit") + @Schema(description="单位(1个 2件 3米 4把 5台 6套 7副 8箱 9卷 10立方米 11平方米)") + private Integer unit; + + /** + * 库存数量 + */ + @TableField(value = "store_quantity") + @Schema(description="库存数量") + @NotNull(message = "库存数量不能为空", groups = {Insert.class, Update.class}) + private BigDecimal storeQuantity; + + /** + * 存放地点 + */ + @TableField(value = "store_location") + @Schema(description="存放地点") + private String storeLocation; + + /** + * 联系人 + */ + @TableField(value = "contact_person") + @Schema(description="联系人") + @Size(max = 150,message = "联系人最大长度要小于 150", groups = {Insert.class, Update.class}) + private String contactPerson; + + /** + * 联系电话 + */ + @TableField(value = "phone") + @Schema(description="联系电话") + @Size(max = 20,message = "联系电话最大长度要小于 20", groups = {Insert.class, Update.class}) + private String phone; + + + /** + * 时间戳 + */ + @TableField(value = "tm") + @Schema(description="时间戳") + @NotNull(message = "时间戳不能为空") + private Date tm; + + @TableField(exist = false) + @Schema(description = "文件id集合") + private List fileIds; + + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RescueGoodsFile.java b/src/main/java/com/gunshi/project/ss/model/RescueGoodsFile.java new file mode 100644 index 0000000..338c7e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RescueGoodsFile.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 抢险物资-附件 + */ +@Schema(description="抢险物资-附件") +@Data +@TableName(value = "public.rescue_goods_file") +public class RescueGoodsFile implements Serializable { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.INPUT) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + private Long id; + + /** + * 抢险物资id + */ + @TableField(value = "goods_id") + @Schema(description="抢险物资id") + private Long goodsId; + + /** + * 文件id + */ + @TableField(value = "file_id") + @Schema(description="文件id") + @JsonSerialize(using = ToStringSerializer.class) + private Long fileId; + + /** + * 序号 + */ + @TableField(value = "sort_on") + @Schema(description="序号") + private Integer sortOn; + + /** + * 时间戳 + */ + @TableField(value = "tm") + @Schema(description="时间戳") + @NotNull(message = "时间戳不能为空") + private Date tm; + + private static final long serialVersionUID = 1L; + + public static final String COL_ID = "id"; + + public static final String COL_GOODS_ID = "goods_id"; + + public static final String COL_FILE_ID = "file_id"; + + public static final String COL_SORT_ON = "sort_on"; + + public static final String COL_TM = "tm"; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RescueTeamB.java b/src/main/java/com/gunshi/project/ss/model/RescueTeamB.java new file mode 100644 index 0000000..395b765 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RescueTeamB.java @@ -0,0 +1,151 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.service.AbstractModelWithAttachService; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 抢险队伍 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="抢险队伍") +@Data +@TableName("public.rescue_team_b") +public class RescueTeamB implements Serializable, AbstractModelWithAttachService.GetFileIds { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="team_id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long teamId; + + /** + * 队伍名称 + */ + @TableField(value="team_name") + @Schema(description="队伍名称") + @Size(max = 100,message = "队伍名称最大长度要小于 100") + private String teamName; + + /** + * 地址 + */ + @TableField(value="address") + @Schema(description="地址") + @Size(max = 150,message = "地址最大长度要小于 150") + private String address; + + /** + * 经度 (°) + */ + @TableField(value="lgtd") + @Schema(description="经度 (°)") + private BigDecimal lgtd; + + /** + * 纬度 (°) + */ + @TableField(value="lttd") + @Schema(description="纬度 (°)") + private BigDecimal lttd; + + /** + * 管理单位 + */ + @TableField(value="management_unit") + @Schema(description="管理单位") + @Size(max = 150,message = "管理单位最大长度要小于 150") + private String managementUnit; + + /** + * 队伍负责人 + */ + @TableField(value="team_leader") + @Schema(description="队伍负责人") + @Size(max = 150,message = "队伍负责人最大长度要小于 150") + private String teamLeader; + + /** + * 联系电话 + */ + @TableField(value="phone") + @Schema(description="联系电话") + @Size(max = 20,message = "联系电话最大长度要小于 20") + private String phone; + + /** + * 登记日期 + */ + @TableField(value="register_date") + @Schema(description="登记日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date registerDate; + + /** + * 有效期开始时间 + */ + @TableField(value="valid_start_date") + @Schema(description="有效期开始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date validStartDate; + + /** + * 有效期结束时间 + */ + @TableField(value="valid_end_date") + @Schema(description="有效期结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date validEndDate; + + /** + * 时间戳 + */ + @TableField(value="tm") + @Schema(description="时间戳") + @NotNull(message = "时间戳不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + @TableField(exist = false) + @Schema(description = "文件id集合") + private List fileIds; + + /** + * 文件上传数据 + */ + @Schema(description="文件上传数据") + @TableField(exist = false) + private List files; + + /** + * 队伍明细 + */ + @Schema(description="队伍明细") + @TableField(exist = false) + private List details; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RescueTeamDetail.java b/src/main/java/com/gunshi/project/ss/model/RescueTeamDetail.java new file mode 100644 index 0000000..1e5b771 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RescueTeamDetail.java @@ -0,0 +1,106 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 抢险队伍明细 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="抢险队伍明细") +@Data +@TableName("public.rescue_team_detail") +public class RescueTeamDetail implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="detail_id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long detailId; + + /** + * 队伍id + */ + @TableField(value="team_id") + @Schema(description="队伍id") + @JsonSerialize(using = ToStringSerializer.class) + private Long teamId; + + /** + * 姓名 + */ + @TableField(value="name") + @Schema(description="姓名") + @Size(max = 100,message = "姓名最大长度要小于 100") + private String name; + + /** + * 性别,F女,M男 + */ + @TableField(value="sex") + @Schema(description="性别,F女,M男") + @Size(max = 1,message = "性别,F女,M男最大长度要小于 1") + private String sex; + + /** + * 年龄 + */ + @TableField(value="age") + @Schema(description="年龄") + private Integer age; + + /** + * 工作单位 + */ + @TableField(value="work_unit") + @Schema(description="工作单位") + @Size(max = 150,message = "工作单位最大长度要小于 150") + private String workUnit; + + /** + * 职务 + */ + @TableField(value="duty") + @Schema(description="职务") + @Size(max = 20,message = "职务最大长度要小于 20") + private String duty; + + /** + * 联系方式 + */ + @TableField(value="phone") + @Schema(description="联系方式") + @Size(max = 20,message = "联系方式最大长度要小于 20") + private String phone; + + /** + * 时间戳 + */ + @TableField(value="tm") + @Schema(description="时间戳") + @NotNull(message = "时间戳不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RescueTeamFile.java b/src/main/java/com/gunshi/project/ss/model/RescueTeamFile.java new file mode 100644 index 0000000..acea251 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RescueTeamFile.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 抢险队伍-附件 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="抢险队伍-附件") +@Data +@TableName("public.rescue_team_file") +public class RescueTeamFile implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 抢险队伍id + */ + @TableField(value="team_id") + @Schema(description="抢险队伍id") + private Long teamId; + + /** + * 文件id + */ + @TableField(value="file_id") + @Schema(description="文件id") + @JsonSerialize(using = ToStringSerializer.class) + private Long fileId; + + /** + * 序号 + */ + @TableField(value="sort_on") + @Schema(description="序号") + private Integer sortOn; + + /** + * 时间戳 + */ + @TableField(value="tm") + @Schema(description="时间戳") + @NotNull(message = "时间戳不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiceGrowConfig.java b/src/main/java/com/gunshi/project/ss/model/RiceGrowConfig.java new file mode 100644 index 0000000..4743f09 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiceGrowConfig.java @@ -0,0 +1,106 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 水稻生长配置实体类 + * + * @author + * @TableName rice_grow_config + */ +@Data +@TableName(value = "rice_grow_config") +public class RiceGrowConfig implements Serializable { + + /** + * 主键 + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 降雨相似年 + */ + @TableField(value = "year") + @Schema(description = "降雨相似年") + private Integer year; + + /** + * 需水系数 + */ + @TableField(value = "α1") + @Schema(description = "需水系数") + private BigDecimal α1; + + /** + * 生长期水面蒸发量(mm) + */ + @TableField(value = "ed1") + @Schema(description = "生长期水面蒸发量(mm)") + private BigDecimal ed1; + + /** + * 渗漏强度 + */ + @TableField(value = "lk_intensity") + @Schema(description = "渗漏强度") + private BigDecimal lkIntensity; + + /** + * 泡田强度 + */ + @TableField(value = "ka_quota") + @Schema(description = "泡田定额") + private BigDecimal kaQuota; + + /** + * 灌区全部灌溉面积 + */ + @TableField(value = "s_area") + @Schema(description = "灌区全部灌溉面积") + private BigDecimal area; + + /** + * 主表id + */ + @TableField(value = "rice_water_id") + @Schema(description = "主表id") + @NotNull(message = "主表id不能为空", groups = {Insert.class, Update.class}) + private Long riceWaterId; + + /** + * 灌溉周期(天) + */ + @TableField(value = "cycle") + @Schema(description = "灌溉周期(天)") + private Integer cycle; + + /** + * 用水量(mm) + */ + @TableField(value = "water_use") + @Schema(description = "用水量(mm)") + private BigDecimal waterUse; + + /** + * 灌溉用水量(万m³) + */ + @TableField(value = "irrigation_use") + @Schema(description = "灌溉用水量(万m³)") + private BigDecimal irrigationUse; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiceIrrigationUse.java b/src/main/java/com/gunshi/project/ss/model/RiceIrrigationUse.java new file mode 100644 index 0000000..e88ed8b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiceIrrigationUse.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 水稻灌溉用水实体类 + * + * @author + * @TableName rice_irrigation_use + */ +@Data +@TableName(value = "rice_irrigation_use") +public class RiceIrrigationUse implements Serializable { + + /** + * 主键id + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 主表id + */ + @TableField(value = "rice_water_id") + @Schema(description = "主表id") + private Long riceWaterId; + + /** + * 月份 + */ + @TableField(value = "month") + @Schema(description = "月份") + @NotNull(message = "月份不能为空", groups = {Insert.class, Update.class}) + private Integer month; + + /** + * 灌溉用水量 + */ + @TableField(value = "irrigation_use") + @Schema(description = "用水量") + private BigDecimal irrigationUse; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiceRqWater.java b/src/main/java/com/gunshi/project/ss/model/RiceRqWater.java new file mode 100644 index 0000000..9730f66 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiceRqWater.java @@ -0,0 +1,85 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 水稻需水主表实体类 + * + * @author + * @TableName rice_rq_water + */ +@Data +@TableName(value = "rice_rq_water") +public class RiceRqWater implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 方案名称 + */ + @TableField(value = "plan_name") + @Schema(description = "方案名称") + @NotNull(message = "方案名称不能为空", groups = {Insert.class, Update.class}) + private String planName; + + /** + * 需水总量 + */ + @TableField(value = "req_water") + @Schema(description = "需水总量") + private BigDecimal reqWater; + + /** + * 制定时间 + */ + @TableField(value = "create_time") + @Schema(description = "制定时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createTime; + + /** + * 制定人 + */ + @TableField(value = "create_name") + @Schema(description = "制定人") + private String createName; + + @TableField(value = "year") + @Schema(description = "预测年度") + private Integer year; + + + @TableField(exist = false) + private RiceGrowConfig riceGrowConfig;//水稻生长参数配置表 + + @TableField(exist = false) + private List riceWaterKis;//灌水定额配置 + + @TableField(exist = false) + private List riceWaterForecastMonths;//需水预测-按月份 + + @TableField(exist = false) + private List riceWaterForecastCycles;//需水预测-按周期 +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiceSupportBalance.java b/src/main/java/com/gunshi/project/ss/model/RiceSupportBalance.java new file mode 100644 index 0000000..883a652 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiceSupportBalance.java @@ -0,0 +1,116 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +@TableName(value = "rice_support_balance") +public class RiceSupportBalance implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 方案名称 + */ + @TableField(value = "plan_name") + @Schema(description = "方案名称") + @NotNull(message = "方案名称不能为空", groups = {Insert.class, Update.class}) + private String planName; + + /** + * 开始时间 + */ + @TableField(value = "start_time") + @Schema(description = "开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; + + /** + * 结束时间 + */ + @TableField(value = "end_time") + @Schema(description = "结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; + + /** + * 状态:0-计算中,1-已完成 + */ + @TableField(value = "status") + @Schema(description = "状态:0-计算中,1-已完成 2-计算失败") + private Integer status; + + /** + * 总需水量(万m³) + */ + @TableField(value = "total_cost") + @Schema(description = "总需水量(万m³)") + private BigDecimal totalCost; + + /** + * 总计划供水量(万m³) + */ + @TableField(value = "total_plan") + @Schema(description = "总计划供水量(万m³)") + private BigDecimal totalPlan; + + /** + * 制定时间 + */ + @TableField(value = "create_time") + @Schema(description = "制定时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createTime; + + /** + * 制定人 + */ + @TableField(value = "create_name") + @Schema(description = "制定人") + private String createName; + + /** + * 农业需水主键 + */ + @TableField(value = "rice_water_id") + @Schema(description = "农业需水主键") + private Long riceWaterId; + + /** + * 来水预测主键 + */ + @TableField(value = "ic_water_id") + @Schema(description = "来水预测主键") + private Long icWaterId; + + @TableField(value = "fail_reason") + @Schema(description = "计算失败原因") + private String failReason; + + + @TableField(exist = false) + private List details; + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiceSupportBalanceDetail.java b/src/main/java/com/gunshi/project/ss/model/RiceSupportBalanceDetail.java new file mode 100644 index 0000000..778c72c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiceSupportBalanceDetail.java @@ -0,0 +1,77 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@TableName(value = "rice_support_balance_detail") +public class RiceSupportBalanceDetail implements Serializable { + + /** + * 主键ID + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 水稻支持平衡主表ID + */ + @TableField(value = "rice_support_id") + @Schema(description = "水稻支持平衡主表ID") + private Long riceSupportId; + + /** + * 时间 + */ + @TableField(value = "tm") + @Schema(description = "时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime tm; + + /** + * 灌溉水量(万m³)-需水量 + */ + @TableField(value = "irrigation_use") + @Schema(description = "灌溉水量(万m³)-需水量") + private BigDecimal irrigationUse; + + /** + * 灌溉水量(万m³)-计划供水量 + */ + @TableField(value = "irrigation_plan") + @Schema(description = "灌溉水量(万m³)-计划供水量") + private BigDecimal irrigationPlan; + + /** + * 生态水量(万m³)-需水量 + */ + @TableField(value = "eco_use") + @Schema(description = "生态水量(万m³)-需水量") + private BigDecimal ecoUse; + + /** + * 生态水量(万m³)-计划供水量 + */ + @TableField(value = "eco_plan") + @Schema(description = "生态水量(万m³)-计划供水量") + private BigDecimal ecoPlan; + + @TableField(exist = false) + private BigDecimal dailyTotalUse; + + @TableField(exist = false) + private BigDecimal dailyTotalPlan; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiceWaterForecastCycle.java b/src/main/java/com/gunshi/project/ss/model/RiceWaterForecastCycle.java new file mode 100644 index 0000000..c3abfff --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiceWaterForecastCycle.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 水稻水分预测周期实体类 + * + * @author + * @TableName rice_water_forecast_cycle + */ +@Data +@TableName(value = "rice_water_forecast_cycle") +public class RiceWaterForecastCycle implements Serializable { + + /** + * 主键id + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 主表id + */ + @TableField(value = "rice_water_id") + @Schema(description = "主表id") + private Long riceWaterId; + + /** + * 灌溉周期 + */ + @TableField(value = "rice_grow_stage") + @Schema(description = "灌溉周期") + @NotNull(message = "灌溉周期不能为空", groups = {Insert.class, Update.class}) + private String riceGrowStage; + + /** + * 灌溉周期排序 + */ + @TableField(value = "_order") + @Schema(description = "灌溉周期排序") + private Integer order; + + /** + * 灌溉用水量 + */ + @TableField(value = "irrigation_use") + @Schema(description = "灌溉用水量") + private BigDecimal irrigationUse; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiceWaterForecastMonth.java b/src/main/java/com/gunshi/project/ss/model/RiceWaterForecastMonth.java new file mode 100644 index 0000000..293a742 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiceWaterForecastMonth.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 水稻水分预测月份实体类 + * + * @author + * @TableName rice_water_forecast_month + */ +@Data +@TableName(value = "rice_water_forecast_month") +public class RiceWaterForecastMonth implements Serializable { + + /** + * 主键id + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 月份 + */ + @TableField(value = "month") + @Schema(description = "月份") + @NotNull(message = "月份不能为空", groups = {Insert.class, Update.class}) + private Integer month; + + /** + * 灌溉用水量 + */ + @TableField(value = "irrigation_use") + @Schema(description = "灌溉用水量") + private BigDecimal irrigationUse; + + /** + * 主表id + */ + @TableField(value = "rice_water_id") + @Schema(description = "主表id") + private Long riceWaterId; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiceWaterKi.java b/src/main/java/com/gunshi/project/ss/model/RiceWaterKi.java new file mode 100644 index 0000000..bb4c143 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiceWaterKi.java @@ -0,0 +1,89 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 水稻水分需水模系数实体类 + * + * @author + * @TableName rice_water_ki + */ +@Data +@TableName(value = "rice_water_ki") +public class RiceWaterKi implements Serializable { + + /** + * 主键 + */ + @TableId(value = "id",type = IdType.AUTO) + @Schema(description = "主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 主表id + */ + @TableField(value = "rice_water_id") + @Schema(description = "主表id") + private Long riceWaterId; + + /** + * 水稻生育阶段 + */ + @TableField(value = "rice_grow_stage") + @Schema(description = "水稻生育阶段") + @NotNull(message = "水稻生育阶段不能为空", groups = {Insert.class, Update.class}) + private String riceGrowStage; + + /** + * 开始日期 + */ + @TableField(value = "start_time") + @Schema(description = "开始日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime startTime; + + /** + * 结束日期 + */ + @TableField(value = "end_time") + @Schema(description = "结束日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime endTime; + + /** + * 阶段天数 + */ + @TableField(value = "days") + @Schema(description = "阶段天数") + private Integer days; + + /** + * 需水模系数 + */ + @TableField(value = "ki") + @Schema(description = "需水模系数") + private BigDecimal ki; + + /** + * 阶段耗水量(mm) + */ + @TableField(value = "water_rq_stage") + @Schema(description = "阶段耗水量(mm)") + private BigDecimal waterRqStage; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiskControlInfo.java b/src/main/java/com/gunshi/project/ss/model/RiskControlInfo.java new file mode 100644 index 0000000..3ff9b17 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiskControlInfo.java @@ -0,0 +1,111 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 风险管控清单 +* author: xusan +* date: 2024-08-22 14:17:27 +*/ +@Schema(description="风险管控清单") +@Data +@TableName("public.risk_control_info") +public class RiskControlInfo implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 目录id + */ + @TableField(value="menu_id") + @Schema(description="目录id") + @NotNull(message = "目录id不能为空",groups = {Insert.class,Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long menuId; + + /** + * 风险辨识名称 + */ + @TableField(value="name") + @Schema(description="风险辨识名称") + @Size(max = 255,message = "风险辨识名称最大长度要小于 255") + private String name; + + /** + * 风险等级(1低风险 2一般风险 3较大风险 4重大风险) + */ + @TableField(value="risk_level") + @Schema(description="风险等级(1低风险 2一般风险 3较大风险 4重大风险)") + private Integer riskLevel; + + /** + * 责任人id + */ + @TableField(value="reponser_id") + @Schema(description="责任人id") + private Long reponserId; + + /** + * 责任人 + */ + @TableField(value="reponser_name") + @Schema(description="责任人") + @Size(max = 100,message = "责任人最大长度要小于 100") + private String reponserName; + + /** + * 主要防范措施 + */ + @TableField(value="prevent_measure") + @Schema(description="主要防范措施") + @Size(max = 255,message = "主要防范措施最大长度要小于 255") + private String preventMeasure; + + /** + * 创建日期 + */ + @TableField(value="create_date") + @Schema(description="创建日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createDate; + + @TableField(exist = false) + @Schema(description = "可能导致的后果") + private List result; + + @TableField(exist = false) + @Schema(description = "现场图片") + private List files; + + @TableField("possible_result") + private String possibleResult; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RiskControlMenu.java b/src/main/java/com/gunshi/project/ss/model/RiskControlMenu.java new file mode 100644 index 0000000..9ca8ae2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RiskControlMenu.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** +* 描述: 风险管控目录 +* author: xusan +* date: 2024-08-22 14:16:34 +*/ +@Schema(description="风险管控目录") +@Data +@TableName("public.risk_control_menu") +public class RiskControlMenu implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 父id + */ + @TableField(value="parent_id") + @Schema(description="父id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentId; + + /** + * 名称 + */ + @TableField(value="name") + @Schema(description="名称") + @Size(max = 255,message = "名称最大长度要小于 255") + @NotBlank(message = "名称不能为空") + private String name; + + /** + * 排序 + */ + @TableField(value="order_index") + @Schema(description="排序") + private Integer orderIndex; + + + @TableField(exist = false) + @Schema(description="子集") + private List children; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RotaB.java b/src/main/java/com/gunshi/project/ss/model/RotaB.java new file mode 100644 index 0000000..afae3c5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RotaB.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 值班表 + */ +@Schema(description="值班表") +@Data +@TableName(value = "public.rota_b") +public class RotaB implements Serializable { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.INPUT) + @Schema(description="主键") + @NotNull(message = "主键不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 日期 + */ + @TableField(value = "rota_date") + @Schema(description="日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + @NotNull(message = "日期不能为空") + private Date rotaDate; + + /** + * 类型(1带班领导 2值班人员) + */ + @TableField(value = "rota_type") + @Schema(description="类型(1带班领导 2值班人员)") + private Integer rotaType; + + /** + * 用户id + */ + @TableField(value = "user_id") + @Schema(description="用户id") + @JsonSerialize(using = ToStringSerializer.class) + private Long userId; + + /** + * 是否节假日(0否 1是) + */ + @TableField(value = "is_holiday") + @Schema(description="是否节假日(0否 1是)") + private Integer isHoliday; + + + @Schema(description="用户姓名") + @TableField(exist = false) + private String userName; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/RotaLog.java b/src/main/java/com/gunshi/project/ss/model/RotaLog.java new file mode 100644 index 0000000..f78f2a7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/RotaLog.java @@ -0,0 +1,83 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 值班日志 + */ +@Schema(description="值班日志") +@Data +@TableName(value = "public.rota_log") +public class RotaLog implements Serializable { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.INPUT) + @Schema(description="主键") + @NotNull(message = "主键不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 日期 + */ + @TableField(value = "rota_date") + @Schema(description="日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + @NotNull(message = "日期不能为空", groups = {Insert.class, Update.class}) + private Date rotaDate; + + @TableField(value = "weather") + @Schema(description="天气") + private String weather; + + /** + * 带班领导id + */ + @TableField(value = "leader_user_id") + @Schema(description="带班领导id") + @JsonSerialize(using = ToStringSerializer.class) + private Long leaderUserId; + + @Schema(description="带班领导姓名") + @TableField(exist = false) + private String leaderUserName; + + /** + * 值班人员id + */ + @TableField(value = "duty_user_id") + @Schema(description="值班人员id") + @JsonSerialize(using = ToStringSerializer.class) + private Long dutyUserId; + + @Schema(description="值班人员姓名") + @TableField(exist = false) + private String dutyUserName; + + @TableField(value = "duty_situation") + @Schema(description="值班情况") + private String dutySituation; + + @TableField(value = "todo_list") + @Schema(description="待处理事项") + private String todoList; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SafetyAccidentReg.java b/src/main/java/com/gunshi/project/ss/model/SafetyAccidentReg.java new file mode 100644 index 0000000..8b75fdb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SafetyAccidentReg.java @@ -0,0 +1,137 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 安全事故登记 +* author: xusan +* date: 2024-08-21 15:44:54 +*/ +@Schema(description="安全事故登记") +@Data +@TableName("public.safety_accident_reg") +public class SafetyAccidentReg implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 事故名称 + */ + @TableField(value="name") + @Schema(description="事故名称") + @Size(max = 200,message = "事故名称最大长度要小于 200") + private String name; + + /** + * 事故发生时间 + */ + @TableField(value="accident_date") + @Schema(description="事故发生时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM, timezone = "GMT+8") + private Date accidentDate; + + /** + * 事故级别(1一般事故2较大事故3重大事故4特别重大事故) + */ + @TableField(value="accident_level") + @Schema(description="事故级别(1一般事故2较大事故3重大事故4特别重大事故)") + private Integer accidentLevel; + + /** + * 事故情况描述 + */ + @TableField(value="accident_desc") + @Schema(description="事故情况描述") + @Size(max = 500,message = "事故情况描述最大长度要小于 500") + private String accidentDesc; + + /** + * 直接经济损失(万元) + */ + @TableField(value="economic_losses") + @Schema(description="直接经济损失(万元)") + private BigDecimal economicLosses; + + /** + * 死亡人数 + */ + @TableField(value="dead_number") + @Schema(description="死亡人数") + private Integer deadNumber; + + /** + * 受伤人数 + */ + @TableField(value="injure_number") + @Schema(description="受伤人数") + private Integer injureNumber; + + /** + * 事故调查单位 + */ + @TableField(value="invest_org") + @Schema(description="事故调查单位") + @Size(max = 200,message = "事故调查单位最大长度要小于 200") + private String investOrg; + + /** + * 事故结案日期 + */ + @TableField(value="close_case_date") + @Schema(description="事故结案日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date closeCaseDate; + + /** + * 事故调查情况 + */ + @TableField(value="invest_desc") + @Schema(description="事故调查情况") + @Size(max = 500,message = "事故调查情况最大长度要小于 500") + private String investDesc; + + /** + * 处理结果 + */ + @TableField(value="handle_result") + @Schema(description="处理结果") + @Size(max = 500,message = "处理结果最大长度要小于 500") + private String handleResult; + + @TableField(exist = false) + @Schema(description = "现场图片") + private List accidentPic; + + @TableField(exist = false) + @Schema(description = "事故调查与处理资料") + private List accidentHandle; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SafetyCheck.java b/src/main/java/com/gunshi/project/ss/model/SafetyCheck.java new file mode 100644 index 0000000..96e40c9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SafetyCheck.java @@ -0,0 +1,83 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 安全检查管理 + */ +@Schema(description="安全检查管理") +@Data +@TableName(value = "public.safety_check") +public class SafetyCheck implements Serializable { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.INPUT) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "check_date") + @Schema(description="检查日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + @NotNull(message = "检查日期不能为空",groups = {Insert.class,Update.class}) + private Date checkDate; + + @TableField(value = "check_type") + @Schema(description="检查类型(1日常检查 2年度检查 3特别检查 4临时检查)") + private Integer checkType; + + @TableField(value = "name") + @Schema(description="名称") + @NotNull(message = "名称不能为空",groups = {Insert.class,Update.class}) + private String name; + + @TableField(value = "check_org") + @Schema(description="检查单位") + private String checkOrg; + + @TableField(value = "check_user") + @Schema(description="检查人员") + private String checkUser; + + @TableField(value = "check_content") + @Schema(description="主要检查内容") + private String checkContent; + + @TableField(value = "main_problem") + @Schema(description="发现的主要问题") + private String mainProblem; + + @TableField(value = "handle_suggestion") + @Schema(description="处理意见与建议") + private String handleSuggestion; + + @TableField(value = "recity_desc") + @Schema(description="问题整改情况") + private String recityDesc; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SafetyHazardInvest.java b/src/main/java/com/gunshi/project/ss/model/SafetyHazardInvest.java new file mode 100644 index 0000000..890f406 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SafetyHazardInvest.java @@ -0,0 +1,80 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 安排隐患排查 + */ +@Schema(description="安排隐患排查") +@Data +@TableName(value = "public.safety_hazard_invest") +public class SafetyHazardInvest implements Serializable { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.INPUT) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "hazard_desc") + @Schema(description="隐患描述") + @NotEmpty(message = "隐患描述不可为空",groups = {Insert.class,Update.class}) + private String hazardDesc; + + /** + * 隐患发现日期 + */ + @TableField(value = "hazard_date") + @Schema(description="隐患发现日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + @NotNull(message = "隐患发现日期不能为空",groups = {Insert.class,Update.class}) + private Date hazardDate; + + @TableField(value = "location_desc") + @Schema(description="事件内容描述") + private String locationDesc; + + @TableField(value = "recity_finish_date") + @Schema(description="整改完成时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date recityFinishDate; + + @TableField(value = "recity_desc") + @Schema(description="整改完成情况") + private String recityDesc; + + @TableField(value = "report_user_id") + @Schema(description="上报人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long reportUserId; + + @TableField(value = "report_user_name") + @Schema(description="上报人") + private String reportUserName; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SafetyIdentify.java b/src/main/java/com/gunshi/project/ss/model/SafetyIdentify.java new file mode 100644 index 0000000..5faa016 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SafetyIdentify.java @@ -0,0 +1,125 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 安全鉴定台账 +* author: xusan +* date: 2024-08-21 14:45:43 +*/ +@Schema(description="安全鉴定台账") +@Data +@TableName("public.safety_identify") +public class SafetyIdentify implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 鉴定日期 + */ + @TableField(value="identify_date") + @Schema(description="鉴定日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date identifyDate; + + /** + * 大坝安全评定类别(1一类坝 2二类坝 3三类坝) + */ + @TableField(value="identify_type") + @Schema(description="大坝安全评定类别(1一类坝 2二类坝 3三类坝)") + private Integer identifyType; + + /** + * 鉴定承担单位(1勘察设计2工程咨询3部门认定) + */ + @TableField(value="identify_org") + @Schema(description="鉴定承担单位") + @Size(max = 200,message = "鉴定承担单位最大长度要小于 200") + private String identifyOrg; + + /** + * 承担单位类型(1甲级2乙级3丙级4其他) + */ + @TableField(value="identify_org_type") + @Schema(description="承担单位类型(1勘察设计2工程咨询3部门认定)") + private Integer identifyOrgType; + + /** + * 承担单位资质 + */ + @TableField(value="identify_org_qua") + @Schema(description="承担单位资质(1甲级2乙级3丙级4其他)") + private Integer identifyOrgQua; + + /** + * 鉴定审定部门 + */ + @TableField(value="identify_audit_org") + @Schema(description="鉴定审定部门") + @Size(max = 200,message = "鉴定审定部门最大长度要小于 200") + private String identifyAuditOrg; + + /** + * 报告书印发日期 + */ + @TableField(value="report_print_date") + @Schema(description="报告书印发日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date reportPrintDate; + + /** + * 报告书印发文号 + */ + @TableField(value="report_print_number") + @Schema(description="报告书印发文号") + @Size(max = 100,message = "报告书印发文号最大长度要小于 100") + private String reportPrintNumber; + + /** + * 工程存在主要问题 + */ + @TableField(value="main_problem") + @Schema(description="工程存在主要问题") + @Size(max = 500,message = "工程存在主要问题最大长度要小于 500") + private String mainProblem; + + /** + * 安全鉴定结论 + */ + @TableField(value="identify_result") + @Schema(description="安全鉴定结论") + @Size(max = 500,message = "安全鉴定结论最大长度要小于 500") + private String identifyResult; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SafetyReinforcement.java b/src/main/java/com/gunshi/project/ss/model/SafetyReinforcement.java new file mode 100644 index 0000000..a6a8b20 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SafetyReinforcement.java @@ -0,0 +1,128 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 除险加固台账 +* author: xusan +* date: 2024-08-22 11:27:43 +*/ +@Schema(description="除险加固台账") +@Data +@TableName("public.safety_reinforcement") +public class SafetyReinforcement implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @NotNull(message = "主键不能为空",groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 组织方式(1地方自行组织 2中央规划) + */ + @TableField(value="organization_way") + @Schema(description="组织方式(1地方自行组织 2中央规划)") + @NotNull(message = "主键不能为空",groups = {Insert.class,Update.class}) + private Integer organizationWay; + + /** + * 工程状态(1施工中 2已完工) + */ + @TableField(value="project_status") + @Schema(description="工程状态(1施工中 2已完工)") + @NotNull(message = "工程状态不能为空",groups = {Insert.class,Update.class}) + private Integer projectStatus; + + /** + * 开工日期 + */ + @TableField(value="start_date") + @Schema(description="开工日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date startDate; + + /** + * 竣工日期 + */ + @TableField(value="finish_date") + @Schema(description="竣工日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date finishDate; + + /** + * 投运日期 + */ + @TableField(value="operation_date") + @Schema(description="投运日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date operationDate; + + /** + * 总投资(万元) + */ + @TableField(value="total_investment") + @Schema(description="总投资(万元)") + private BigDecimal totalInvestment; + + /** + * 设计单位 + */ + @TableField(value="design_org") + @Schema(description="设计单位") + @Size(max = 100,message = "设计单位最大长度要小于 100") + private String designOrg; + + /** + * 施工单位 + */ + @TableField(value="construct_org") + @Schema(description="施工单位") + @Size(max = 100,message = "施工单位最大长度要小于 100") + private String constructOrg; + + /** + * 监理单位 + */ + @TableField(value="control_org") + @Schema(description="监理单位") + @Size(max = 100,message = "监理单位最大长度要小于 100") + private String controlOrg; + + /** + * 主要建设内容 + */ + @TableField(value="construct_content") + @Schema(description="主要建设内容") + @Size(max = 500,message = "主要建设内容最大长度要小于 500") + private String constructContent; + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/ShpPlacement.java b/src/main/java/com/gunshi/project/ss/model/ShpPlacement.java new file mode 100644 index 0000000..1d11641 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/ShpPlacement.java @@ -0,0 +1,193 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 安置点 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="安置点") +@Data +@TableName("public.shp_placement") +public class ShpPlacement implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * gid + */ + @TableId(value="gid", type= IdType.AUTO) + @Schema(description="gid") + // @Size(max = 0,message = "gid最大长度要小于 0") + @NotNull(message = "gid不能为空") + private Integer gid; + + /** + * adcd + */ + @TableField(value="adcd") + @Schema(description="adcd") + @Size(max = 15,message = "adcd最大长度要小于 15") + private String adcd; + + /** + * pid + */ + @TableField(value="pid") + @Schema(description="pid") + @Size(max = 50,message = "pid最大长度要小于 50") + private String pid; + + /** + * name + */ + @TableField(value="name") + @Schema(description="name") + @Size(max = 50,message = "name最大长度要小于 50") + private String name; + + /** + * address + */ + @TableField(value="address") + @Schema(description="address") + @Size(max = 50,message = "address最大长度要小于 50") + private String address; + + /** + * lgtd + */ + @TableField(value="lgtd") + @Schema(description="lgtd") + // @Size(max = 0,message = "lgtd最大长度要小于 0") + private Double lgtd; + + /** + * lttd + */ + @TableField(value="lttd") + @Schema(description="lttd") + // @Size(max = 0,message = "lttd最大长度要小于 0") + private Double lttd; + + /** + * remark + */ + @TableField(value="remark") + @Schema(description="remark") + @Size(max = 200,message = "remark最大长度要小于 200") + private String remark; + + /** + * datestr + */ + @TableField(value="datestr") + @Schema(description="datestr") + @Size(max = 30,message = "datestr最大长度要小于 30") + private String datestr; + + /** + * isplot + */ + @TableField(value="isplot") + @Schema(description="isplot") + // @Size(max = 0,message = "isplot最大长度要小于 0") + private Long isplot; + + /** + * crtdate + */ + @TableField(value="crtdate") + @Schema(description="crtdate") + // @Size(max = 0,message = "crtdate最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date crtdate; + + /** + * crtuser + */ + @TableField(value="crtuser") + @Schema(description="crtuser") + @Size(max = 20,message = "crtuser最大长度要小于 20") + private String crtuser; + + /** + * picpath + */ + @TableField(value="picpath") + @Schema(description="picpath") + @Size(max = 100,message = "picpath最大长度要小于 100") + private String picpath; + + /** + * status + */ + @TableField(value="status") + @Schema(description="status") + // @Size(max = 0,message = "status最大长度要小于 0") + private Long status; + + /** + * cdefine1 + */ + @TableField(value="cdefine1") + @Schema(description="cdefine1") + @Size(max = 50,message = "cdefine1最大长度要小于 50") + private String cdefine1; + + /** + * population + */ + @TableField(value="population") + @Schema(description="population") + // @Size(max = 0,message = "population最大长度要小于 0") + private Integer population; + + /** + * dbver + */ + @TableField(value="dbver") + @Schema(description="dbver") + @Size(max = 20,message = "dbver最大长度要小于 20") + private String dbver; + + /** + * recordman + */ + @TableField(value="recordman") + @Schema(description="recordman") + @Size(max = 100,message = "recordman最大长度要小于 100") + private String recordman; + + /** + * zpid + */ + @TableField(value="zpid") + @Schema(description="zpid") + @Size(max = 30,message = "zpid最大长度要小于 30") + private String zpid; + + /** + * wscd + */ + @TableField(value="wscd") + @Schema(description="wscd") + @Size(max = 200,message = "wscd最大长度要小于 200") + private String wscd; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SoilMoistureData.java b/src/main/java/com/gunshi/project/ss/model/SoilMoistureData.java new file mode 100644 index 0000000..8cc2274 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SoilMoistureData.java @@ -0,0 +1,44 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* +*/ +@Schema(description="") +@Data +@TableName("public.soil_moisture_data") +public class SoilMoistureData implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + private String stcd; + private BigDecimal val; + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SoilMoistureStation.java b/src/main/java/com/gunshi/project/ss/model/SoilMoistureStation.java new file mode 100644 index 0000000..bc7abb6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SoilMoistureStation.java @@ -0,0 +1,55 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* +*/ +@Schema(description="") +@Data +@TableName("public.soil_moisture_station") +public class SoilMoistureStation implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + private String stcd; + private String stnm; + private BigDecimal lgtd; + private BigDecimal lttd; + private Integer status; + private String remark; + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @TableField(exist = false) + private BigDecimal val; + + @TableField(exist = false) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/StAddvcdD.java b/src/main/java/com/gunshi/project/ss/model/StAddvcdD.java new file mode 100644 index 0000000..694a994 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StAddvcdD.java @@ -0,0 +1,124 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 行政区划表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="行政区划表") +@Data +@TableName("public.st_addvcd_d") +public class StAddvcdD implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 行政区划编码 + */ + @TableId(value="adcd", type= IdType.AUTO) + @Schema(description="行政区划编码") + @Size(max = 15,message = "行政区划编码最大长度要小于 15") + @NotBlank(message = "行政区划编码不能为空") + private String adcd; + + /** + * 行政区划名称 + */ + @TableField(value="adnm") + @Schema(description="行政区划名称") + @Size(max = 200,message = "行政区划名称最大长度要小于 200") + @NotBlank(message = "行政区划名称不能为空") + private String adnm; + + /** + * 人口数 + */ + @TableField(value="population") + @Schema(description="人口数") + // @Size(max = 0,message = "人口数最大长度要小于 0") + private Integer population; + + /** + * 房屋数 + */ + @TableField(value="houses") + @Schema(description="房屋数") + // @Size(max = 0,message = "房屋数最大长度要小于 0") + private Integer houses; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + // @Size(max = 0,message = "经度最大长度要小于 0") + private String lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + // @Size(max = 0,message = "纬度最大长度要小于 0") + private String lttd; + + /** + * 时间戳 + */ + @TableField(value="tm") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @NotNull(message = "时间戳不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 总户数(户) + */ + @TableField(value="htcount") + @Schema(description="总户数(户)") + // @Size(max = 0,message = "总户数(户)最大长度要小于 0") + private Integer htcount; + + /** + * 土地面积 (km2) + */ + @TableField(value="ldarea") + @Schema(description="土地面积 (km2)") + // @Size(max = 0,message = "土地面积 (km2)最大长度要小于 0") + private String ldarea; + + /** + * 耕地面积(亩) + */ + @TableField(value="plarea") + @Schema(description="耕地面积(亩) ") + // @Size(max = 0,message = "耕地面积(亩) 最大长度要小于 0") + private Integer plarea; + + /** + * 防治区类型 确定行政区是否属于防治区和重点防治区,1:防治区;2:重点防治区。 + */ + @TableField(value="prevtp") + @Schema(description="防治区类型 确定行政区是否属于防治区和重点防治区,1:防治区;2:重点防治区。") + // @Size(max = 0,message = "防治区类型 确定行政区是否属于防治区和重点防治区,1:防治区;2:重点防治区。最大长度要小于 0") + private Integer prevtp; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/StEvpo.java b/src/main/java/com/gunshi/project/ss/model/StEvpo.java new file mode 100644 index 0000000..ea433d2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StEvpo.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description="水库蒸发") +@Data +@TableName("public.st_evpo") +public class StEvpo { + + + @TableId(value = "id") + @Schema(description = "Id") + private Long id; + + + @TableField(value = "month") + @Schema(description = "月份") + private Integer month; + + @TableField(value = "evaporation") + @Schema(description = "蒸发量") + @JsonSerialize(using = ToStringSerializer.class) // 或者自定义序列化器 + private BigDecimal evaporation; +} diff --git a/src/main/java/com/gunshi/project/ss/model/StImgR.java b/src/main/java/com/gunshi/project/ss/model/StImgR.java new file mode 100644 index 0000000..bf55434 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StImgR.java @@ -0,0 +1,87 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Schema +@Data +@TableName(value = "st_img_r") +@JsonIgnoreProperties(ignoreUnknown = true) +public class StImgR implements Serializable { + @TableField(value = "stcd") + @MppMultiId + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 20") + @NotBlank(message = "测站编码不能为空") + private String stcd; + + @MppMultiId + @TableField(value = "tm") + @Schema(description="时间") + @NotNull(message = "时间不能为为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + @TableField(value = "chtm") + @Schema(description="") + @NotNull(message = "不能为null") + private Date chtm; + + @TableField(value = "img_path") + @Schema(description="图片路径") + @Size(max = 256,message = "图片路径最大长度要小于 256") + @NotBlank(message = "图片路径不能为空") + private String imgPath; + + @TableField(value = "chid") + @Schema(description="") + @Size(max = 10,message = "最大长度要小于 10") + @NotBlank(message = "不能为空") + private String chid; + + @TableField(value = "\"source\"") + @Schema(description="") + @Size(max = 50,message = "最大长度要小于 50") + private String source; + + @TableField(value = "mtmcd") + @Schema(description="") + @Size(max = 20,message = "最大长度要小于 20") + private String mtmcd; + + private static final long serialVersionUID = 1L; + + public static final String COL_STCD = "stcd"; + + public static final String COL_TM = "tm"; + + public static final String COL_CHTM = "chtm"; + + public static final String COL_IMG_PATH = "img_path"; + + public static final String COL_CHID = "chid"; + + public static final String COL_SOURCE = "source"; + + public static final String COL_MTMCD = "mtmcd"; + + + + @TableField(exist = false) + private Date stm;// 同步的数据的开始时间 + + @TableField(exist = false) + private Date etm;// 同步的数据的结束时间 +} diff --git a/src/main/java/com/gunshi/project/ss/model/StImgRReal.java b/src/main/java/com/gunshi/project/ss/model/StImgRReal.java new file mode 100644 index 0000000..05710d3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StImgRReal.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.model; + +import java.io.Serializable; +import java.util.Date; + +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 com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +@Schema +@Data +@TableName(value = "st_img_r_real") +@JsonIgnoreProperties(ignoreUnknown = true) +public class StImgRReal implements Serializable { + + + @TableField(value="stcd") + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 20") + @NotBlank(message = "测站编码不能为空") + private String stcd; + + @TableField(value = "tm") + @Schema(description="") + @NotNull(message = "不能为null") + private Date tm; + + @TableField(value = "chtm") + @Schema(description="") + @NotNull(message = "不能为null") + private Date chtm; + + @TableField(value = "img_path") + @Schema(description="") + @Size(max = 256,message = "最大长度要小于 256") + @NotBlank(message = "不能为空") + private String imgPath; + + @TableId(value="chid", type = IdType.NONE) + @Schema(description="") + @Size(max = 10,message = "最大长度要小于 10") + @NotBlank(message = "不能为空") + private String chid; + + @TableField(value = "\"source\"") + @Schema(description="") + @Size(max = 50,message = "最大长度要小于 50") + private String source; + + private static final long serialVersionUID = 1L; + + public static final String COL_STCD = "stcd"; + + public static final String COL_TM = "tm"; + + public static final String COL_CHTM = "chtm"; + + public static final String COL_IMG_PATH = "img_path"; + + public static final String COL_CHID = "chid"; + + public static final String COL_SOURCE = "source"; +} diff --git a/src/main/java/com/gunshi/project/ss/model/StImgWarnR.java b/src/main/java/com/gunshi/project/ss/model/StImgWarnR.java new file mode 100644 index 0000000..85a89ed --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StImgWarnR.java @@ -0,0 +1,70 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: AI告警表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="AI告警表") +@Data +@TableName("public.st_img_warn_r") +public class StImgWarnR implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * index_code + */ + @MppMultiId + @TableField(value="index_code") + @Schema(description="index_code") + @Size(max = 150,message = "index_code最大长度要小于 150") + @NotBlank(message = "index_code不能为空") + private String indexCode; + + /** + * tm + */ + @MppMultiId + @TableField(value="tm") + @Schema(description="tm") + @NotNull(message = "tm不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * img_path + */ + @TableField(value="img_path") + @Schema(description="img_path") + @Size(max = 256,message = "img_path最大长度要小于 256") + private String imgPath; + + /** + * 告警类型(1人员闯入 2工程车辆识别 3漂浮物识别 4游泳识别) + */ + @TableField(value="type") + @Schema(description="告警类型(1人员闯入 2工程车辆识别 3漂浮物识别 4游泳识别)") + private Integer type; + + @TableField(exist = false) + @Schema(description = "摄像头名称") + private String name; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/StPptnRAverage.java b/src/main/java/com/gunshi/project/ss/model/StPptnRAverage.java new file mode 100644 index 0000000..778400c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StPptnRAverage.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.model; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.StPptnR; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 描述: 降水量表-面雨量 + */ +@Data +public class StPptnRAverage extends StPptnR { + + + /** + * 时段降水量 + */ + @Schema(description = "时段降水量") + private String drp; + + /** + * 时间 + */ + @Schema(description = "时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + public StPptnRAverage(Date tm, String drp) { + this.tm = tm; + this.drp = drp; + } +} diff --git a/src/main/java/com/gunshi/project/ss/model/StPptnRD.java b/src/main/java/com/gunshi/project/ss/model/StPptnRD.java new file mode 100644 index 0000000..2201e4d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StPptnRD.java @@ -0,0 +1,99 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="") +@Data +@TableName("public.st_pptn_r_d") +@JsonIgnoreProperties(ignoreUnknown = true) +public class StPptnRD implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测站编码 + */ + @MppMultiId + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 20") + @NotBlank(message = "测站编码不能为空") + private String stcd; + + /** + * 时间 + */ + @MppMultiId + @TableField(value="tm") + @Schema(description="时间") + // @Size(max = 0,message = "时间最大长度要小于 0") + @NotNull(message = "时间不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 时段降水量 + */ + @TableField(value="drp") + @Schema(description="时段降水量") + // @Size(max = 0,message = "时段降水量最大长度要小于 0") + private BigDecimal drp; + + /** + * year + */ + @MppMultiId + @TableField(value="year") + @Schema(description="year") + @NotNull(message = "year不能为空") + private Integer year; + + /** + * 前一天是否降雨(0无雨 1有降雨) + */ + @TableField(value="last_day_isdrp") + @Schema(description="last_day_isdrp") + private String lastDayIsdrp; + + /** + * 之前有无雨的连续天数 + */ + @TableField(value="isdrp_count") + @Schema(description="isdrp_count") + private Integer isdrpCount; + + @TableField(exist = false) + private Date stm;// 同步的数据的开始时间 + + @TableField(exist = false) + private String adcd; + + @TableField(exist = false) + private String day; + + @TableField(exist = false) + private String month; +} diff --git a/src/main/java/com/gunshi/project/ss/model/StPptnRH.java b/src/main/java/com/gunshi/project/ss/model/StPptnRH.java new file mode 100644 index 0000000..e2a2482 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StPptnRH.java @@ -0,0 +1,96 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 降雨量小时表 +* author: cxw +* date: 2024-09-02 09:34:31 +*/ +@Schema(description="降雨量小时表") +@Data +@TableName("public.st_pptn_r_h") +public class StPptnRH implements Serializable { + + public final static String thisTableName = "StPptnRH"; + + private static final long serialVersionUID = 1L; + + /** + * 测站编码 + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 20") + @NotBlank(message = "测站编码不能为空") + @NotNull(message = "测站编码不能为空") + private String stcd; + + /** + * 时间 + */ + @TableField(value="tm") + @Schema(description="时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 时段降水量 + */ + @TableField(value="drp") + @Schema(description="时段降水量") + private BigDecimal drp; + + /** + * 时段长 + */ + @TableField(value="intv") + @Schema(description="时段长") + private BigDecimal intv; + + /** + * 降水历时 + */ + @TableField(value="pdr") + @Schema(description="降水历时") + private BigDecimal pdr; + + /** + * 日降水量 + */ + @TableField(value="dyp") + @Schema(description="日降水量") + private BigDecimal dyp; + + /** + * 天气状况 + */ + @TableField(value="wth") + @Schema(description="天气状况") + @Size(max = 1,message = "天气状况最大长度要小于 1") + private String wth; + + /** + * 入库时间 + */ + @TableField(value="chtm") + @Schema(description="入库时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date chtm; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/StQxWarnR.java b/src/main/java/com/gunshi/project/ss/model/StQxWarnR.java new file mode 100644 index 0000000..21d8d5e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StQxWarnR.java @@ -0,0 +1,74 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 气象预警表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="气象预警表") +@Data +@TableName("public.st_qx_warn_r") +public class StQxWarnR implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="id") + // @Size(max = 0,message = "id最大长度要小于 0") + @NotNull(message = "id不能为空") + private Long id; + + /** + * tm + */ + @TableField(value="tm") + @Schema(description="tm") + // @Size(max = 0,message = "tm最大长度要小于 0") + @NotNull(message = "tm不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * title + */ + @TableField(value="title") + @Schema(description="title") + @Size(max = 200,message = "title最大长度要小于 200") + private String title; + + /** + * content + */ + @TableField(value="content") + @Schema(description="content") + @Size(max = 500,message = "content最大长度要小于 500") + private String content; + + /** + * level + */ + @TableField(value="level") + @Schema(description="level") + // @Size(max = 0,message = "level最大长度要小于 0") + private Integer level; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/StStbprpCctv.java b/src/main/java/com/gunshi/project/ss/model/StStbprpCctv.java new file mode 100644 index 0000000..8030d95 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StStbprpCctv.java @@ -0,0 +1,46 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; + +/** + * Description: 测站与视频监控关联表 + * Created by XuSan on 2024/3/5. + * + * @author XuSan + * @version 1.0 + */ +@Schema +@Data +@TableName(value = "public.st_stbprp_cctv") +public class StStbprpCctv implements Serializable { + + @TableId(value = "id", type = IdType.INPUT) + @Schema(description="主键id") + @NotNull(message = "主键不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @TableField(value = "stcd") + @Schema(description="测站编码") + @NotBlank(message = "测站编码不能为空", groups = {Insert.class,Update.class}) + private String stcd; + + @TableField(value = "cam_id") + @Schema(description="视频id") + @NotBlank(message = "视频id不能为空", groups = {Insert.class,Update.class}) + private String camId; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/StWaterFlow.java b/src/main/java/com/gunshi/project/ss/model/StWaterFlow.java new file mode 100644 index 0000000..36eef35 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StWaterFlow.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.model; + + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class StWaterFlow { + + @TableField("stcd") + private String stcd; + + + @TableField("z") + private BigDecimal z; + + + @TableField("flow") + private BigDecimal flow; +} diff --git a/src/main/java/com/gunshi/project/ss/model/StWaterR.java b/src/main/java/com/gunshi/project/ss/model/StWaterR.java new file mode 100644 index 0000000..2728cbe --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StWaterR.java @@ -0,0 +1,99 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 供水量表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="供水量表") +@Data +@TableName("public.st_water_r") +@EqualsAndHashCode(callSuper = true) +public class StWaterR extends GenericPageParams implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测站编码 + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 20") +// @NotBlank(message = "测站编码不能为空") + private String stcd; + + /** + * 时间 + */ + @TableField(value="tm") + @Schema(description="时间") + // @Size(max = 0,message = "时间最大长度要小于 0") +// @NotBlank(message = "时间不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 流量 + */ + @TableField(value="q") + @Schema(description="流量") + // @Size(max = 0,message = "流量最大长度要小于 0") + private BigDecimal q; + + /** + * 核定流量 + */ + @TableField(exist = false) + @Schema(description="核定流量") + private BigDecimal approvalV; + + /** + * 是否达标 + */ + @TableField(exist = false) + @Schema(description="是否达标") + private Boolean isStandard; + + /** + * 水量 + */ + @TableField(value="v") + @Schema(description="水量") + // @Size(max = 0,message = "水量最大长度要小于 0") + private BigDecimal v; + + + /** + * 选择的起始时间 + */ + @Schema(description = "选择的起始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date startTime; + + /** + * 选择的结束时间 + */ + @Schema(description = "选择的结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date endTime; +} diff --git a/src/main/java/com/gunshi/project/ss/model/StWaterRReal.java b/src/main/java/com/gunshi/project/ss/model/StWaterRReal.java new file mode 100644 index 0000000..b4d2059 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StWaterRReal.java @@ -0,0 +1,92 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 供水量实时表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="供水量实时表") +@Data +@TableName("public.st_water_r_real") +public class StWaterRReal implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 测站编码 + */ + @TableId(value="stcd", type= IdType.AUTO) + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 20") + @NotBlank(message = "测站编码不能为空") + private String stcd; + + /** + * 测站名称 + */ + @TableField(exist = false) + private String stnm; + + /** + * 时间 + */ + @TableField(value="tm") + @Schema(description="时间") + // @Size(max = 0,message = "时间最大长度要小于 0") + @NotNull(message = "时间不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 流量 + */ + @TableField(value="q") + @Schema(description="流量") + // @Size(max = 0,message = "流量最大长度要小于 0") + private BigDecimal q; + + /** + * 水量 + */ + @TableField(value="v") + @Schema(description="水量") + // @Size(max = 0,message = "水量最大长度要小于 0") + private String v; + + // 站类 + @TableField(exist = false) + private String sttp; + + // 月核定流量 + @TableField(exist = false) + private ResMonthEcoFlow resMonthEcoFlow; + + + @TableField(exist = false) + private BigDecimal lgtd; + + @TableField(exist = false) + private BigDecimal lttd; + + @TableField(exist = false) + @Schema(description = "0 离线 1 在线") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/model/StWaterRReorganize.java b/src/main/java/com/gunshi/project/ss/model/StWaterRReorganize.java new file mode 100644 index 0000000..1c4bd9c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StWaterRReorganize.java @@ -0,0 +1,119 @@ +package com.gunshi.project.ss.model; + + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.model.page.GenericPageParams; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** +* 描述: 供水量整编表 +* author: cxw +* date: 2024-07-24 11:22:46 +*/ +@EqualsAndHashCode(callSuper = true) +@Schema(description="供水量整编表") +@Data +@TableName("public.st_water_r_reorganize") +public class StWaterRReorganize extends GenericPageParams implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 时间(年月日 时) + */ + @TableId(value="tm", type= IdType.NONE) + @Schema(description="时间(年月日 时)") + @Size(max = 13,message = "时间(年月日 时)最大长度要小于 13") +// @NotBlank(message = "时间(年月日 时)不能为空") +// @NotNull(message = "时间(年月日 时)不能为空") + private String tm; + + /** + * 流量(生态供水) + */ + @TableField(value="ecology_q") + @Schema(description="流量(生态供水)") + private BigDecimal ecologyQ; + + /** + * 水量(生态供水) + */ + @TableField(value="ecology_v") + @Schema(description="水量(生态供水)") + private BigDecimal ecologyV; + + /** + * 干渠灌溉流量1 + */ + @TableField(value="mci1_q") + @Schema(description="流量(生活供水)") + private BigDecimal mci1Q; + + /** + * 干渠灌溉水量1 + */ + @TableField(value="mci1_v") + @Schema(description="水量(生活供水)") + private BigDecimal mci1V; + + + /** + * 干渠灌溉流量2 + */ + @TableField(value="mci2_q") + @Schema(description="流量(生活供水)") + private BigDecimal mci2Q; + + /** + * 干渠灌溉水量2 + */ + @TableField(value="mci2_v") + @Schema(description="水量(生活供水)") + private BigDecimal mci2V; + + /** + * 水量小计 + */ + @TableField(value="sum_v") + @Schema(description="水量小计") + private BigDecimal sumV; + + /** + * 查询时间类型 + */ + @Schema(description = "查询时间类型searchType:1-小时 2-日 3-月 4-年") + @TableField(exist = false) + @NotNull(message = "查询时间类型searchType不能为空") + private String searchType; + + /** + * 选择的起始时间 + */ + @Schema(description = "选择的起始时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date startTime; + + /** + * 选择的结束时间 + */ + @Schema(description = "选择的结束时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @TableField(exist = false) + private Date endTime; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/StZqR.java b/src/main/java/com/gunshi/project/ss/model/StZqR.java new file mode 100644 index 0000000..53ab192 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StZqR.java @@ -0,0 +1,80 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Delete; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 描述: 水位-流量 关系表 + * author: xusan + * date: 2024-07-08 17:34:26 + */ +@Schema(description="水位-流量 关系表") +@Data +@TableName("public.st_zq_r") +public class StZqR { + + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + + /** + * 测站编码 + */ + @TableField(value="stcd") + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 8") + @NotBlank(message = "测站编码不能为空") + private String stcd; + + /** + * 水位 + */ + @TableField(value="z") + @Schema(description="水位") + // @Size(max = 0,message = "水位最大长度要小于 0") + @NotNull(message = "水位不能为空",groups = {Insert.class, Update.class, Delete.class}) + private BigDecimal z; + + /** + * 流量 + */ + @TableField(value="q") + @Schema(description="流量") + // @Size(max = 0,message = "流量最大长度要小于 0") + @NotNull(message = "流量不能为空",groups = {Insert.class, Update.class, Delete.class}) + private BigDecimal q; + + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private LocalDateTime moditime; +} diff --git a/src/main/java/com/gunshi/project/ss/model/StZqrlB.java b/src/main/java/com/gunshi/project/ss/model/StZqrlB.java new file mode 100644 index 0000000..1486a47 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StZqrlB.java @@ -0,0 +1,134 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Delete; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; + +/** +* 描述: 水位流量关系曲线表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="水位流量关系曲线表") +@Data +@TableName("public.st_zqrl_b") +public class StZqrlB implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + /** + * 测站编码 + */ + @TableField(value="stcd") + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 8") + @NotBlank(message = "测站编码不能为空") + private String stcd; + + /** + * 曲线名称 + */ + @TableField(value="lnnm") + @Schema(description="曲线名称") + @Size(max = 30,message = "曲线名称最大长度要小于 30") + private String lnnm; + + /** + * 启用时间 + */ + @TableField(value="bgtm") + @Schema(description="启用时间") + // @Size(max = 0,message = "启用时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date bgtm; + + /** + * 点序号 + */ + @TableField(value="ptno") + @Schema(description="点序号") + // @Size(max = 0,message = "点序号最大长度要小于 0") + private Integer ptno; + + /** + * 水位 + */ + @TableField(value="z") + @Schema(description="水位") + // @Size(max = 0,message = "水位最大长度要小于 0") + @NotNull(message = "水位不能为空",groups = {Insert.class, Update.class, Delete.class}) + private BigDecimal z; + + /** + * 流量 + */ + @TableField(value="q") + @Schema(description="流量") + // @Size(max = 0,message = "流量最大长度要小于 0") + @NotNull(message = "流量不能为空",groups = {Insert.class, Update.class, Delete.class}) + private BigDecimal q; + + /** + * 备注 + */ + @TableField(value="comments") + @Schema(description="备注") + @Size(max = 200,message = "备注最大长度要小于 200") + private String comments; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + + + @Schema(description="水库代码") + @TableField(exist = false) + private String resCode; + + @Schema(description="流量和") + @TableField(exist = false) + private BigDecimal qtotal; + + // 新增方法获取LocalDateTime + public LocalDateTime getModitimeAsLocalDateTime() { + if (moditime == null) { + return null; + } + return moditime.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/StZvarlB.java b/src/main/java/com/gunshi/project/ss/model/StZvarlB.java new file mode 100644 index 0000000..51d3067 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/StZvarlB.java @@ -0,0 +1,115 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Delete; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** +* 描述: 库( 湖)容曲线表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="库( 湖)容曲线表") +@Data +@TableName("public.st_zvarl_b") +public class StZvarlB implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 测站编码 + */ + @TableField(value="stcd") + @Schema(description="测站编码") + @Size(max = 20,message = "测站编码最大长度要小于 8") + private String stcd; + + /** + * 施测时间 + */ + @TableField(value="mstm") + @Schema(description="施测时间") + // @Size(max = 0,message = "施测时间最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date mstm; + + /** + * 点序号 + */ + @TableField(value="ptno") + @Schema(description="点序号") + // @Size(max = 0,message = "点序号最大长度要小于 0") + private Integer ptno; + + /** + * 库水位 + */ + @TableField(value="rz") + @Schema(description="库水位") + @NotNull(message = "库水位不能为空",groups = {Insert.class, Update.class, Delete.class}) + private BigDecimal rz; + + /** + * 蓄水量 + */ + @TableField(value="w") + @Schema(description="蓄水量") + @NotNull(message = "蓄水量不能为空",groups = {Insert.class, Update.class, Delete.class}) + private BigDecimal w; + + /** + * 水面面积 + */ + @TableField(value="wsfa") + @Schema(description="水面面积") + // @Size(max = 0,message = "水面面积最大长度要小于 0") + private BigDecimal wsfa; + + /** + * 时间戳 + */ + @TableField(value="moditime") + @Schema(description="时间戳") + // @Size(max = 0,message = "时间戳最大长度要小于 0") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date moditime; + + /** + * 库容(万m³) + */ + @TableField(value="tot_cap") + @Schema(description="库容(万m³)") + // @Size(max = 0,message = "库容(万m³)最大长度要小于 0") + private BigDecimal totCap; + + @Schema(description="水库代码") + @TableField(exist = false) + private String resCode; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SyDataCheckRule.java b/src/main/java/com/gunshi/project/ss/model/SyDataCheckRule.java new file mode 100644 index 0000000..e3dc07a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SyDataCheckRule.java @@ -0,0 +1,74 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* 描述: 数据检查规则表 +* author: xusan +* date: 2024-12-19 10:00:00 +*/ +@Schema(description = "数据检查规则表") +@Data +@TableName("public.sy_data_check_rule") +public class SyDataCheckRule implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.AUTO) + @Schema(description = "id") + @NotNull(message = "id不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 测点编号 + */ + @TableField(value = "dvcd") + @Schema(description = "测点编号") + @NotBlank(message = "测点编号不能为空", groups = {Insert.class, Update.class}) + @Size(max = 255, message = "测点编号最大长度要小于 255") + private String dvcd; + + /** + * 库水位大于多少 + */ + @TableField(value = "rz") + @Schema(description = "库水位大于多少") + private BigDecimal rz; + + /** + * 渗压水位小于多少 + */ + @TableField(value = "sy_value") + @Schema(description = "渗压水位小于多少") + private BigDecimal syValue; + + /** + * 是否启用 0:否 1:是 + */ + @TableField(value = "is_available") + @Schema(description = "是否启用 0:否 1:是") + private Integer isAvailable; + + @TableField(value = "dm") + @Schema(description = "断面编码") + private String dm; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SyRegressionData.java b/src/main/java/com/gunshi/project/ss/model/SyRegressionData.java new file mode 100644 index 0000000..053d9f3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SyRegressionData.java @@ -0,0 +1,90 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** +* 描述: 回归方程数据表 +* author: xusan +* date: 2024-12-19 10:00:00 +*/ +@Schema(description = "回归方程数据表") +@Data +@TableName("public.sy_regression_data") +public class SyRegressionData implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.AUTO) + @Schema(description = "id") + @NotNull(message = "id不能为空", groups = {Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 测点编号 + */ + @TableField(value = "dvcd") + @Schema(description = "测点编号") + @NotBlank(message = "测点编号不能为空", groups = {Insert.class, Update.class}) + @Size(max = 50, message = "测点编号最大长度要小于 50") + private String dvcd; + + /** + * 开始时间 + */ + @TableField(value = "starttime") + @Schema(description = "开始时间") + @NotNull(message = "开始时间不能为空", groups = {Insert.class, Update.class}) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date startTime; + + /** + * 结束时间 + */ + @TableField(value = "endtime") + @Schema(description = "结束时间") + @NotNull(message = "结束时间不能为空", groups = {Insert.class, Update.class}) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date endTime; + + /** + * 回归方程 + */ + @TableField(value = "regressionequation") + @Schema(description = "回归方程") + private String regressionEquation; + + /** + * 排序(一阶-四阶) + */ + @TableField(value = "_order") + @Schema(description = "排序(一阶-四阶)") + private Integer order; + + + @TableField(value = "create_time") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SysDictB.java b/src/main/java/com/gunshi/project/ss/model/SysDictB.java new file mode 100644 index 0000000..d19af17 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SysDictB.java @@ -0,0 +1,115 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 系统字典表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="系统字典表") +@Data +@TableName("public.sys_dict_b") +public class SysDictB implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="ID") + // @Size(max = 0,message = "ID最大长度要小于 0") + @NotNull(message = "ID不能为空",groups = { Update.class}) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 字典名称 + */ + @TableField(value="dict_nm") + @Schema(description="字典名称") + @Size(max = 250,message = "字典名称最大长度要小于 250") + @NotBlank(message = "字典名称不能为空",groups = {Insert.class, Update.class}) + private String dictNm; + + /** + * 字典编码 + */ + @TableField(value="dict_cd") + @Schema(description="字典编码") + @Size(max = 250,message = "字典编码最大长度要小于 250") + @NotBlank(message = "字典编码不能为空",groups = {Insert.class, Update.class}) + private String dictCd; + + /** + * 父id + */ + @TableField(value="pid") + @Schema(description="父id") + // @Size(max = 0,message = "父id最大长度要小于 0") + @JsonSerialize(using = ToStringSerializer.class) + private Long pid; + + /** + * 排序字段 + */ + @TableField(value="sort_on") + @Schema(description="排序字段") + // @Size(max = 0,message = "排序字段最大长度要小于 0") +// @NotNull(message = "排序字段不能为空",groups = {Insert.class, Update.class}) + private Integer sortOn; + + /** + * 创建时间 + */ + @TableField(value="create_tm") + @Schema(description="创建时间") + // @Size(max = 0,message = "创建时间最大长度要小于 0") +// @NotNull(message = "创建时间不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTm; + + /** + * 修改时间 + */ + @TableField(value="tm") + @Schema(description="修改时间") + // @Size(max = 0,message = "修改时间最大长度要小于 0") +// @NotBlank(message = "修改时间不能为空") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date tm; + + /** + * 状态 1:启用 0:禁用 + */ + @TableField(value="status") + @Schema(description="状态 1:启用 0:禁用") + // @Size(max = 0,message = "状态 1:启用 0:禁用最大长度要小于 0") + private Integer status; + + + @TableField(exist = false) + @Schema(description="子集") + private List children; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/SzCase.java b/src/main/java/com/gunshi/project/ss/model/SzCase.java new file mode 100644 index 0000000..517d57e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SzCase.java @@ -0,0 +1,354 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="案件登记表") +@Data +@TableName("public.sz_case") +public class SzCase extends CommUpdate implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + +// /** +// * 填报人Id +// */ +// @TableField(value="create_by") +// @Schema(description="填报人Id") +// @NotNull(message = "填报人Id不能为空",groups = {Insert.class, Update.class}) +// @JsonSerialize(using = ToStringSerializer.class) +// private Long createBy; +// +// /** +// * 填报人名字 +// */ +// @TableField(value="create_name") +// @Schema(description="填报人名字") +// @Size(max = 30,message = "填报人名字最大长度要小于 30") +// @NotBlank(message = "填报人名字不能为空",groups = {Insert.class, Update.class}) +// private String createName; +// +// @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) +// @NotNull(message = "填报时间不能为空") +// @TableField(value="create_time") +// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") +// private Date createTime; + + /** + * 案件编号 + */ + @TableField(value="case_id") + @Schema(description="案件编号") + @Size(max = 50,message = "案件编号最大长度要小于 50") + private String caseId; + + /** + * 案件名称 + */ + @TableField(value="case_name") + @Schema(description="案件名称") + @Size(max = 50,message = "案件名称最大长度要小于 50") + @NotBlank(message = "案件名称不能为空",groups = {Insert.class, Update.class}) + private String caseName; + + /** + * 案件类型 + */ + @TableField(value="case_type") + @Schema(description="案件类型 0:违建,1:毁林垦荒,2:筑坝拦汊,3:填占库容,4:违法取水,5:其他") + @Size(max = 1,message = "案件类型最大长度为 1") + @NotNull(message = "案件类型不能为空",groups = {Insert.class, Update.class}) + private Integer caseType; + + /** + * 经度 + */ + @TableField(value="lgtd") + @Schema(description="经度") + private String lgtd; + + /** + * 纬度 + */ + @TableField(value="lttd") + @Schema(description="纬度") + private String lttd; + + /** + * 发现时间 + */ + @TableField(value="case_date") + @Schema(description="发现时间") + @NotNull(message = "发现时间不能为空",groups = {Insert.class, Update.class}) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date caseDate; + + /** + * 发现地点 + */ + @TableField(value="case_address") + @Schema(description="发现地点") + @NotBlank(message = "发现地点不能为空",groups = {Insert.class, Update.class}) + @Size(max = 100,message = "案件类型最大长度要小于 100") + private String caseAddress; + + /** + * 案件来源 + */ + @TableField(value="case_source") + @Schema(description="案件来源 0:巡查上报,1:自主发现,2:公共举报,3:电话举报,4:其他") + @NotNull(message = "案件来源不能为空",groups = {Insert.class, Update.class}) + @Size(max = 1,message = "案件类型最大长度要小于 2") + private Integer caseSource; + + /** + * 违法时间 + */ + @TableField(value="illegal_date") + @Schema(description="违法时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date illegalDate; + + + /** + * 当事人类型 + */ + @TableField(value="party_type") + @Schema(description="当事人类型 0:自然人,1:法人或其他组织,2:待定") + @NotNull(message = "当事人类型不能为空",groups = {Insert.class, Update.class}) + @Size(max = 1,message = "当事人类型最大长度要小于 2") + private Integer partyType; + + /** + * 当事人姓名 + */ + @TableField(value="party_name") + @Schema(description="当事人姓名") + @Size(max = 10,message = "当事人姓名最大长度要小于 10") + private String partyName; + + /** + * 身份证号 + */ + @TableField(value="id_number") + @Schema(description="身份证号") + @Size(max = 30,message = "身份证号最大长度要小于 30") + private String idNumber; + + /** + * 当事人住址 + */ + @TableField(value="party_addr") + @Schema(description="当事人住址") + @Size(max = 50,message = "当事人住址最大长度要小于 50") + private String partyAddr; + + /** + * 简要案情 + */ + @TableField(value="intro") + @Schema(description="简要案情") + @Size(max = 500,message = "简要案情最大长度要小于 500") + private String intro; + + /** + * 处理程序 + */ + @TableField(value="processor") + @Schema(description="处理程序 0:简易程序,1:一般程序") + @Size(max = 1,message = "处理程序最大长度要小于 2") + private Integer processor; + + /** + * 处理依据 + */ + @TableField(value="treatment_basis") + @Schema(description="处理依据") + @Size(max = 50,message = "处理程序最大长度要小于 50") + private String treatmentBasis; + + /** + * 处理措施 + */ + @TableField(value="treatment_measure") + @Schema(description="处理措施") + @Size(max = 50,message = "处理措施最大长度要小于 50") + private String treatmentMeasure; + + /** + * 移送处理情况 + */ + @TableField(value="transfer") + @Schema(description="移送处理情况 0:不移送,1:移送单位") + @Size(max = 1,message = "移送处理情况最大长度要小于 2") + private Integer transfer; + + /** + * 案件执行情况 + */ + @TableField(value="caseImplementation") + @Schema(description="案件执行情况 0:当事人自动履行,1:行政强制执行") + @Size(max = 1,message = "案件执行情况最大长度要小于 2") + private Integer caseImplementation; + + /** + * 自动履行情况 + */ + @TableField(value="performance") + @Schema(description="自动履行情况") + @Size(max = 500,message = "自动履行情况最大长度要小于 500") + private String performance; + + /** + * 伤亡人数(人) + */ + @TableField(value="casualties") + @Schema(description="伤亡人数(人)") + private Integer casualties; + + /** + * 直接损失金额(万元) + */ + @TableField(value="direct_loss_amount") + @Schema(description="直接损失金额(万元)") + private BigDecimal directLossAmount; + + /** + * 结案情况 + */ + @TableField(value="close_status") + @Schema(description="结案情况 0:正常结案,1:其他方式结案,2:未结案") + private Integer closeStatus; + + /** + * 结案时间 + */ + @TableField(value="close_date") + @Schema(description="结案时间 " + DateFormatString.YYYY_MM_DD_HH_MM_SS) + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date closeDate; + + /** + * 文件编号及名称 + */ + @TableField(value="doc_num_name") + @Schema(description="文件编号及名称 ") + @Size(max = 100,message = "文件编号及名称最大长度要小于 100") + private String docNumName; + + /** + * 督办单位类型 + */ + @TableField(value="unit_type") + @Schema(description="督办单位类型 0:上级督办,1:本级河长督办") + private Integer unitType; + + /** + * 督办单位名称 + */ + @TableField(value="unit_name") + @Schema(description="督办单位名称") + private String unitName; + + /** + * 行政复议情况 + */ + @TableField(value="administrative_reconsideration") + @Schema(description="行政复议情况 0:维护,1:变更,2:撤销,3:和解,4:调解") + private Integer administrativeReconsideration; + + /** + * 行政应诉情况 + */ + @TableField(value="administrative_response") + @Schema(description="行政复议情况 0:驳回原告诉讼,1:撤销,2:变更,3:确认违法,4:确认无效,5:其他") + private Integer administrativeResponse; + + /** + * 保管人员 + */ + @TableField(value="custodian") + @Schema(description="保管人员") + private String custodian; + + /** + * 保管地点 + */ + @TableField(value="storage_location") + @Schema(description="保管地点") + private String storageLocation; + + + @TableField(exist = false) + @Schema(description = "基本情况文件集合") + private List files1; + + @TableField(exist = false) + @Schema(description = "处理情况文件集合") + private List files2; + + @TableField(exist = false) + @Schema(description = "办案卷宗-立案文件集合") + private List files3; + + @TableField(exist = false) + @Schema(description = "办案卷宗-调查取证文件集合") + private List files4; + + @TableField(exist = false) + @Schema(description = "办案卷宗-审查处理文件集合") + private List files5; + + @TableField(exist = false) + @Schema(description = "办案卷宗-送达执行文件集合") + private List files6; + + @TableField(exist = false) + @Schema(description = "办案卷宗-结案文件集合") + private List files7; + + @TableField(exist = false) + @Schema(description = "历史影像及图片-整改前文件集合") + private List files8; + + @TableField(exist = false) + @Schema(description = "历史影像及图片-整改后文件集合") + private List files9; + +} diff --git a/src/main/java/com/gunshi/project/ss/model/SzRegulatoryFramework.java b/src/main/java/com/gunshi/project/ss/model/SzRegulatoryFramework.java new file mode 100644 index 0000000..1bc8ec6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SzRegulatoryFramework.java @@ -0,0 +1,154 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="制度管理表") +@Data + @TableName("public.sz_regulatory_framework") +public class SzRegulatoryFramework extends CommUpdate implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 标题 + */ + @TableField(value="name") + @Schema(description="标题") + @Size(max = 30,message = "标题最大长度要小于 30") + @NotBlank(message = "标题不能为空",groups = {Insert.class, Update.class}) + private String name; + + + /** + * 发布单位 + */ + @TableField(value="fill_unit") + @Schema(description="发布单位") + @Size(max = 50,message = "发布单位最大长度要小于 50") + private String fillUnit; + + /** + * 发布日期 + */ + @TableField(value="release_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + @Schema(description="发布日期") + private Date releaseDate; + + /** + * 制度类型 + */ + @TableField(value="type") + @Schema(description="制度类型 0:党支部工作制度,1:行政工作制度,2:部门工作制度,3:安全管理制度,4:工程管理制度,5:技术规程,6:岗位责任制") + @NotNull(message = "制度类型不能为空",groups = {Insert.class, Update.class}) + @Size(max = 1,message = "制度类型最大长度要小于 2") + private Integer type; + + + + /** + * 上传时间 + */ + @Schema(description="上传时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) + @TableField(value="upload_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date uploadDate; + + +// /** +// * 创建人Id +// */ +// @TableField(value="create_by") +// @Schema(description="填报人Id") +// @NotNull(message = "填报人Id不能为空",groups = {Insert.class, Update.class}) +// @JsonSerialize(using = ToStringSerializer.class) +// private Long createBy; +// +// /** +// * 创建人名字 +// */ +// @TableField(value="create_name") +// @Schema(description="填报人名字") +// @Size(max = 30,message = "填报人名字最大长度要小于 30") +// @NotBlank(message = "填报人名字不能为空",groups = {Insert.class, Update.class}) +// private String createName; +// +// /** +// * 创建人时间 +// */ +// @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) +// @NotNull(message = "填报时间不能为空") +// @TableField(value="create_time") +// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") +// private Date createTime; +// +// /** +// * 更新人Id +// */ +// @TableField(value="update_by") +// @Schema(description="更新人Id") +// @JsonSerialize(using = ToStringSerializer.class) +// private Long updateBy; +// +// /** +// * 更新人名字 +// */ +// @TableField(value="update_name") +// @Schema(description="更新人名字") +// @NotBlank(message = "更新人名字不能为空",groups = {Insert.class, Update.class}) +// private String updateName; +// +// /** +// * 更新时间 +// */ +// @Schema(description="更新时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) +// @TableField(value="update_time") +// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") +// private Date updateTime; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; + + @TableField(value = "min_up_time") + @Schema(description = "第一次上次时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date minUpTime; +} diff --git a/src/main/java/com/gunshi/project/ss/model/SzRuleByLaw.java b/src/main/java/com/gunshi/project/ss/model/SzRuleByLaw.java new file mode 100644 index 0000000..e4ca6dc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SzRuleByLaw.java @@ -0,0 +1,114 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Schema(description="法律法规管理表") +@Data +@TableName("public.sz_rule_by_law") +public class SzRuleByLaw extends CommUpdate implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 标题 + */ + @TableField(value="name") + @Schema(description="标题") + @Size(max = 30,message = "标题最大长度要小于 30") + @NotBlank(message = "标题不能为空",groups = {Insert.class, Update.class}) + private String name; + + /** + * 制定机关 + */ + @TableField(value="fill_unit") + @Schema(description="制定机关") + @Size(max = 50,message = "制定机关最大长度要小于 50") + private String fillUnit; + + /** + * 法律性质 + */ + @TableField(value="type") + @Schema(description="法律性质 0:宪法,1:法律,2:行政法规,3:督察法规,4:司法解释,5:地方性法规") + @NotNull(message = "法律性质不能为空",groups = {Insert.class, Update.class}) + @Size(max = 1,message = "法律性质最大长度要小于 2") + private Integer type; + + /** + * 时效性 + */ + @TableField(value="timeliness") + @Schema(description="时效性 0:尚未生效,1:有效,2:已修改,3:已废止") + @NotNull(message = "时效性不能为空",groups = {Insert.class, Update.class}) + @Size(max = 1,message = "时效性最大长度要小于 2") + private Integer timeliness; + + + /** + * 公布日期 + */ + @Schema(description="公布日期 格式:" + DateFormatString.YYYY_MM_DD) + @TableField(value="announcement_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date announcementDate; + + + + /** + * 施行日期 + */ + @Schema(description="施行日期 格式:" + DateFormatString.YYYY_MM_DD) + @TableField(value="implementation_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date implementationDate; + + /** + * 上传时间 + */ + @Schema(description="上传时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) + @TableField(value="upload_date") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date uploadDate; + + + @TableField(exist = false) + @Schema(description = "文件集合") + private List files; +} diff --git a/src/main/java/com/gunshi/project/ss/model/SzTreatmentBasis.java b/src/main/java/com/gunshi/project/ss/model/SzTreatmentBasis.java new file mode 100644 index 0000000..082b1d0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/SzTreatmentBasis.java @@ -0,0 +1,153 @@ +package com.gunshi.project.ss.model; + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Schema(description="处理依据表") +@Data +@TableName("public.sz_treatment_basis") +public class SzTreatmentBasis extends CommUpdate implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 节点id + */ + @TableField(value="p_id") + @Schema(description="节点id") + @JsonSerialize(using = ToStringSerializer.class) + private Long pId; + +// /** +// * 创建人Id +// */ +// @TableField(value="create_by") +// @Schema(description="填报人Id") +// @NotNull(message = "填报人Id不能为空",groups = {Insert.class, Update.class}) +// @JsonSerialize(using = ToStringSerializer.class) +// private Long createBy; +// +// /** +// * 创建人名字 +// */ +// @TableField(value="create_name") +// @Schema(description="填报人名字") +// @Size(max = 30,message = "填报人名字最大长度要小于 30") +// @NotBlank(message = "填报人名字不能为空",groups = {Insert.class, Update.class}) +// private String createName; +// +// /** +// * 创建人时间 +// */ +// @Schema(description="填报时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) +// @NotNull(message = "填报时间不能为空") +// @TableField(value="create_time") +// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") +// private Date createTime; + + /** + * 状态 + */ + @TableField(value="status") + @Schema(description="状态 0:启用,1:禁用") + @NotNull(message = "状态不能为空",groups = {Insert.class, Update.class}) + @Size(max = 1,message = "状态最大长度要小于 2") + private Integer status; + + /** + * 节点 + */ + @TableField(value="legal_name") + @Schema(description="法律名称") + @Size(max = 200,message = "法律名称最大长度要小于 200") + @NotBlank(message = "法律名称不能为空",groups = {Insert.class, Update.class}) + private String legalName; + + /** + * 法条内容 + */ + @TableField(value="legal_content") + @Schema(description="法条内容") + @Size(max = 2000,message = "法条内容最大长度要小于 2000") + private String legalContent; + + /** + * 违法行为描述 + */ + @TableField(value="violation_desc") + @Schema(description="违法行为描述") + @Size(max = 2000,message = "违法行为描述最大长度要小于 2000") + private String violationDesc; + + /** + * 处罚措施 + */ + @TableField(value="penalties") + @Schema(description="处罚措施") + @Size(max = 2000,message = "处罚措施最大长度要小于 2000") + private String penalties; + + @TableField(value="display") + @Schema(description="给需要不显示禁用的菜单项使用,0=不显示") + private Integer display; + +// /** +// * 更新人Id +// */ +// @TableField(value="update_by") +// @Schema(description="更新人Id") +// @NotNull(message = "更新人Id不能为空",groups = {Insert.class, Update.class}) +// @JsonSerialize(using = ToStringSerializer.class) +// private Long updateBy; +// +// /** +// * 更新人名字 +// */ +// @TableField(value="update_name") +// @Schema(description="更新人名字") +// @Size(max = 30,message = "更新人名字最大长度要小于 30") +// private String updateName; +// +// /** +// * 更新时间 +// */ +// @Schema(description="更新时间 格式:" + DateFormatString.YYYY_MM_DD_HH_MM_SS) +// @TableField(value="update_time") +// @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") +// private Date updateTime; + + + @TableField(exist = false) + @Schema(description = "子集") + private List children; +} diff --git a/src/main/java/com/gunshi/project/ss/model/TermiteAdverPic.java b/src/main/java/com/gunshi/project/ss/model/TermiteAdverPic.java new file mode 100644 index 0000000..39037ee --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/TermiteAdverPic.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** +* 描述: 白蚁防治宣传图片墙 +* author: xusan +* date: 2024-08-29 17:33:08 +*/ +@Schema(description="白蚁防治宣传图片墙") +@Data +@TableName("public.termite_adver_pic") +public class TermiteAdverPic implements Serializable { + + public final static String thisTableName = "TermiteAdverPic"; + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 图片标题 + */ + @TableField(value="pic_title") + @Schema(description="图片标题") + @Size(max = 50,message = "图片标题最大长度要小于 50") + private String picTitle; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @TableField(exist = false) + @Schema(description = "图片") + private FileAssociations pic; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/TermiteSurvey.java b/src/main/java/com/gunshi/project/ss/model/TermiteSurvey.java new file mode 100644 index 0000000..9090912 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/TermiteSurvey.java @@ -0,0 +1,99 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** +* 描述: 白蚁普查 +* author: xusan +* date: 2024-08-28 10:29:58 +*/ +@Schema(description="白蚁普查") +@Data +@TableName("public.termite_survey") +public class TermiteSurvey implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 上报时间 + */ + @TableField(value="report_date") + @Schema(description="上报时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date reportDate; + + /** + * 普查类型(1日常检查排查 2定期普查 3专项调查) + */ + @TableField(value="survey_type") + @Schema(description="普查类型(1日常检查排查 2定期普查 3专项调查)") + private Integer surveyType; + + /** + * 普查方式(1人工排查法 2引诱法 3仪器探测法 4其它) + */ + @TableField(value="survey_way") + @Schema(description="普查方式(1人工排查法 2引诱法 3仪器探测法 4其它)") + private Integer surveyWay; + + /** + * 上报人id + */ + @TableField(value="report_user_id") + @Schema(description="上报人id") + @JsonSerialize(using = ToStringSerializer.class) + private Long reportUserId; + + /** + * 上报人 + */ + @TableField(value="report_user_name") + @Schema(description="上报人") + @Size(max = 50,message = "上报人最大长度要小于 50") + private String reportUserName; + + /** + * 创建时间 + */ + @TableField(value="create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @TableField(exist = false) + @Schema(description = "白蚁危害处数") + private Integer harmNum = 0; + + @TableField(exist = false) + @Schema(description = "已处置处数") + private Integer handleNum = 0; + + @TableField(exist = false) + @Schema(description = "明细") + private List details; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/TermiteSurveyDetail.java b/src/main/java/com/gunshi/project/ss/model/TermiteSurveyDetail.java new file mode 100644 index 0000000..6040a0b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/TermiteSurveyDetail.java @@ -0,0 +1,144 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** +* 描述: 白蚁普查明细 +* author: xusan +* date: 2024-08-28 10:25:17 +*/ +@Schema(description="白蚁普查明细") +@Data +@TableName("public.termite_survey_detail") +public class TermiteSurveyDetail implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="主键") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 普查id + */ + @TableField(value="survey_id") + @Schema(description="普查id") + @JsonSerialize(using = ToStringSerializer.class) + private Long surveyId; + + /** + * 部位 + */ + @TableField(value="position") + @Schema(description="部位") + @Size(max = 50,message = "部位最大长度要小于 50") + private String position; + + /** + * 危害情况(0 无危害 1有危害) + */ + @TableField(value="is_harm") + @Schema(description="危害情况(0 无危害 1有危害)") + private Integer isHarm; + + /** + * 桩号 + */ + @TableField(value="pile_number") + @Schema(description="桩号") + @Size(max = 50,message = "桩号最大长度要小于 50") + private String pileNumber; + + /** + * 普查长度(m) + */ + @TableField(value="survey_len") + @Schema(description="普查长度(m)") + private BigDecimal surveyLen; + + /** + * 是否致险(0否 1是) + */ + @TableField(value="is_danger") + @Schema(description="是否致险(0否 1是)") + private Integer isDanger; + + /** + * 渗漏处数 + */ + @TableField(value="leakage") + @Schema(description="渗漏处数") + private Integer leakage; + + /** + * 穿坝处数 + */ + @TableField(value="dam_cross") + @Schema(description="穿坝处数") + private Integer damCross; + + /** + * 跌窝处数 + */ + @TableField(value="fall_nest") + @Schema(description="跌窝处数") + private Integer fallNest; + + /** + * 是否已处置(0否 1是) + */ + @TableField(value="is_handle") + @Schema(description="是否已处置(0否 1是)") + private Integer isHandle; + + /** + * 处置情况说明 + */ + @TableField(value="handle_desc") + @Schema(description="处置情况说明") + @Size(max = 500,message = "处置情况说明最大长度要小于 500") + private String handleDesc; + + @TableField(exist = false) + @Schema(description = "活动迹象") + private List actSign; + + @TableField(exist = false) + @Schema(description = "现场图片") + private List pics; + + @TableField(exist = false) + @Schema(description = "现场视频") + private List videos; + + @TableField(exist = false) + @Schema(description = "监测时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date reportDate; + + @TableField(exist = false) + @Schema(description = "记录时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/TyYearRainfall.java b/src/main/java/com/gunshi/project/ss/model/TyYearRainfall.java new file mode 100644 index 0000000..b815ab6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/TyYearRainfall.java @@ -0,0 +1,74 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* 描述: 典型年降雨资料表 +* author: xusan +* date: 2024-07-08 17:34:26 +*/ +@Schema(description="典型年降雨资料表") +@Data +@TableName("public.ty_year_rainfall") +public class TyYearRainfall implements Serializable { + + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value="id", type= IdType.AUTO) + @Schema(description="id") + @NotNull(message = "id不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 类型(1年 2月) + */ + @TableField(value="type") + @Schema(description="类型(1年 2月)") + private Integer type; + + /** + * 年 + */ + @TableField(value="year") + @Schema(description="年") + private Integer year; + + /** + * 月 + */ + @TableField(value="month") + @Schema(description="月") + private Integer month; + + /** + * 降雨量 + */ + @TableField(value="drp") + @Schema(description="降雨量") + private BigDecimal drp; + + /** + * 丰平枯(1枯 2偏枯 3平 4偏丰 5丰) + */ + @TableField(value="status") + @Schema(description="丰平枯(1枯 2偏枯 3平 4偏丰 5丰)") + private Integer status; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/WarningCondition.java b/src/main/java/com/gunshi/project/ss/model/WarningCondition.java new file mode 100644 index 0000000..0da1e54 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/WarningCondition.java @@ -0,0 +1,87 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import java.math.BigDecimal; + +/** + * 预警规则-预警指标表 + */ +@Data +@TableName("warning_condition") +public class WarningCondition { + + /** + * 主键ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 规则ID + */ + @TableField("rule_id") + private Long ruleId; + + /** + * 条件排序字段 + */ + @TableField("_order") + private Integer order; + + /** + * 预警指标类型 + * 实时水位 REAL_WATER_LEVEL + * 预报洪峰流量 PEAK_FLOW + * 降雨量 RAINFALL + * 蓄水量 WATER_STORAGE + * 预报降雨量 FORECAST_RAINFALL + */ + @TableField("indicator_type") + private String indicatorType; + + /** + * 预警类型:FLOOD-洪水预警,DROUGHT-干旱预警 + */ + @TableField("warning_type") + private String warningType; + + /** + * 测点编码 + */ + @TableField("stcd") + private String stcd; + + /** + * 比较运算符 + */ + @TableField("_operator") + private String operator; + + /** + * 阈值 + */ + @TableField("threshold_value") + private BigDecimal thresholdValue; + + /** + * 时长/时段(小时) + */ + @TableField("duration_hours") + private Integer durationHours; + + /** + * 与前一个条件的关系:AND-且,OR-或(最后一个条件为空) + */ + @TableField("relation_type") + private String relationType; + + @TableField("warning_level") + private Integer warningLevel; + + @TableField("year") + private String year; + + @TableField(exist = false) + private Boolean isEnjoy = false;//该预警规则是否满足条件,默认不满足 +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/WarningRule.java b/src/main/java/com/gunshi/project/ss/model/WarningRule.java new file mode 100644 index 0000000..55a1c22 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/WarningRule.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 预警规则主表 + */ +@Data +@TableName("warning_rule") +public class WarningRule { + + /** + * 主键ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + + /** + * 规则名称 + */ + @TableField("rule_name") + private String ruleName; + + /** + * 预警类型:FLOOD-洪水预警,DROUGHT-干旱预警 + */ + @TableField("warning_type") + private String warningType; + + /** + * 状态:0-未启用,1-启用 + */ + @TableField("status") + private Integer status; + + /** + * 创建人 + */ + @TableField("create_name") + private String createName; + + /** + * 创建时间 + */ + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + + @TableField("warning_level") + private Integer warningLevel; + + /** + * 预警条件列表 + */ + @TableField(exist = false) + private List conditions; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/WarningRuleInfo.java b/src/main/java/com/gunshi/project/ss/model/WarningRuleInfo.java new file mode 100644 index 0000000..3bee5a8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/WarningRuleInfo.java @@ -0,0 +1,67 @@ +package com.gunshi.project.ss.model; + + +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 com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@TableName("warning_rule_info") +public class WarningRuleInfo { + + /** + * 主键ID + */ + @TableId(type = IdType.AUTO) + private Long id; + + @TableField("rule_id") + private Long ruleId; + + /** + * 规则名称 + */ + @TableField("rule_name") + private String ruleName; + + /** + * 预警类型:FLOOD-洪水预警,DROUGHT-干旱预警 + */ + @TableField("warning_type") + private String warningType; + + + /** + * 创建人 + */ + @TableField("create_name") + private String createName; + + /** + * 创建时间 + */ + @TableField("create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @TableField("rule_info") + private String ruleInfo; + + @TableField("warning_level") + private Integer warningLevel; + + /** + * 预警条件列表 + */ + @TableField(exist = false) + private List conditions; + + @TableField("status") + private Integer status; +} diff --git a/src/main/java/com/gunshi/project/ss/model/WaterAlarm.java b/src/main/java/com/gunshi/project/ss/model/WaterAlarm.java new file mode 100644 index 0000000..8d955c8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/WaterAlarm.java @@ -0,0 +1,77 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 水情告警实体类 + * + * @author gunshi + * @version 1.0 + */ +@Data +@TableName("water_alarm") +@Schema(description = "水情告警信息") +public class WaterAlarm { + + /** + * 主键ID + */ + @TableId(value = "id") + @Schema(description = "主键ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 站点编码 + */ + @Schema(description = "站点编码") + private String stcd; + + /** + * 站点名称 + */ + @Schema(description = "站点名称") + private String stnm; + + /** + * 告警类型 + * 1-水库超汛限, 2-水库超设计, 3-水库超校核, 4-河道超警戒, 5-河道超保证 + */ + @Schema(description = "告警类型 1-水库超汛限, 2-水库超设计, 3-水库超校核, 4-河道超警戒, 5-河道超保证") + private Integer alarmType; + + /** + * 监测值 + */ + @Schema(description = "监测值") + private BigDecimal curValue; + + /** + * 告警值 + */ + @Schema(description = "告警值") + private BigDecimal alarmValue; + + /** + * 超告警值 + */ + @Schema(description = "超告警值") + private BigDecimal overValue; + + /** + * 告警时间 + */ + @Schema(description = "告警时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date alarmTime; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/WaterDispatch.java b/src/main/java/com/gunshi/project/ss/model/WaterDispatch.java new file mode 100644 index 0000000..ce692e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/WaterDispatch.java @@ -0,0 +1,143 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 调度指令-实体类 + */ +@Data +@TableName("water_dispatch") +@Schema(description = "调度指令-实体类") +public class WaterDispatch { + + /** + * 主键ID + */ + @TableId("id") + @Schema(description = "主键ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + + @TableField("is_distribute") + @Schema(description = "是否下发 0 是 1 否") + private Integer isDistribute; + + + @TableField("dis_year") + private String disYear; + + /** + * 调度指令名称 + */ + @TableField("name") + @Schema(description = "调度指令名称") + @NotNull(message = "调度指令名称不能为空", groups = {Insert.class, Update.class}) + private String name; + + /** + * 调度开始时间 + */ + @TableField("dis_start") + @Schema(description = "调度开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @NotNull(message = "调度开始时间不能为空", groups = {Insert.class, Update.class}) + private Date disStart; + + /** + * 调度结束时间 + */ + @TableField("dis_end") + @Schema(description = "调度结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @NotNull(message = "调度结束时间不能为空", groups = {Insert.class, Update.class}) + private Date disEnd; + + /** + * 调度详细 + */ + @TableField("dis_detial") + @Schema(description = "调度详细") + private String disDetial; + + /** + * 执行人员id + */ + @TableField("exe_person_id") + @Schema(description = "执行人员id") + private String exePersonId; + + /** + * 执行人员名称 + */ + @TableField(exist = false) + @Schema(description = "执行人员名称") + private String exePersonName; + + /** + * 执行状态 0完成 1待下发 2执行中 + */ + @TableField("exe_status") + @Schema(description = "执行状态 0完成 1待下发 2执行中") + private Integer exeStatus; + + /** + * 填报时间 + */ + @TableField("fill_time") + @Schema(description = "填报时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date fillTime; + + /** + * 执行结果反馈 + */ + @TableField("res_fb") + @Schema(description = "执行结果反馈") + private String resFb; + + @TableField("res_person_id") + @Schema(description = "反馈人员id") + private String resPersonId; + + @TableField("res_person_name") + @Schema(description = "反馈人员名称") + private String resPersonName; + + @TableField("res_tm") + @Schema(description = "反馈时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date resTm; + + /** + * 是否完成 0是 1否 + */ + @TableField("is_compelete") + @Schema(description = "是否完成 0是 1否") + private Integer isCompelete; + + /** + * 文件关联列表(非数据库字段) + */ + @TableField(exist = false) + @Schema(description = "文件列表") + private List files; + + + @TableField(exist = false) + @Schema(description = "反馈文件列表") + private List resFiles; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/model/XlPlan.java b/src/main/java/com/gunshi/project/ss/model/XlPlan.java new file mode 100644 index 0000000..fd1e7ea --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/model/XlPlan.java @@ -0,0 +1,125 @@ +package com.gunshi.project.ss.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.project.ss.common.validate.markers.Insert; +import com.gunshi.project.ss.common.validate.markers.Update; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 计划表实体类 + */ +@Data +@TableName("xl_plan") +@Schema(description = "兴利计划-实体类") +public class XlPlan { + + @TableField(exist = false) + public final Integer MONTH = 0; + + @TableField(exist = false) + public final Integer YEAR = 1; + + /** + * 主键ID + */ + @TableId("id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 计划名称 + */ + @TableField("plan_name") + @Schema(description = "计划名称") + @NotNull(message = "计划名称不能为空",groups = {Insert.class, Update.class}) + private String planName; + + /** + * 计划类型 0月度 1年度 + */ + @TableField("plan_type") + @Schema(description = "计划类型 0月度 1 年度") + @NotNull(message = "请选择计划类型",groups = {Insert.class, Update.class}) + private Integer planType; + + /** + * 计划年份/月份 + */ + @TableField("plan_date") + @Schema(description = "计划年份/月份") + @NotNull(message = "计划年份/月份请选择",groups = {Insert.class, Update.class}) + private String planDate; + + /** + * 灌溉计划供水量(万) + */ + @TableField("gg_water") + @Schema(description = "灌溉计划供水量(万)") + private BigDecimal ggWater; + + /** + * 生态计划供水量(万) + */ + @TableField("st_water") + @Schema(description = "生态计划供水量") + private BigDecimal stWater; + + /** + * 计划开始日期 + */ + @TableField("plan_begin") + @Schema(description = "计划开始日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date planBegin; + + /** + * 计划结束日期 + */ + @TableField("plan_end") + @Schema(description = "计划结束日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date planEnd; + + /** + * 计划编制单位 + */ + @TableField("bzdw_plan") + @Schema(description = "编制计划单位") + private String bzdwPlan; + + /** + * 编制日期 + */ + @TableField("bz_date") + @Schema(description = "编制日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date bzDate; + + + @TableField("fill_date") + @Schema(description = "填报时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date fillDate; + + /** + * 说明 + */ + @TableField("remark") + @Schema(description = "说明") + private String remark; + + + @TableField(exist = false) + private List files; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/schedule/SchedulerConfig.java b/src/main/java/com/gunshi/project/ss/schedule/SchedulerConfig.java new file mode 100644 index 0000000..a027715 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/schedule/SchedulerConfig.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.schedule; + + +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; + +/** + * @author cxw + * @description quartz配置 + * @classname SchedulerConfig.java + * @create 2024-07-30, 星期二, 9:41:34 + */ +@Configuration +public class SchedulerConfig implements SchedulingConfigurer { + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + // 注意:这里配置的是Spring的@Scheduled任务,而不是Quartz的Scheduler + // 对于Quartz,你通常不需要在这里做任何配置,除非你有特殊需求 + } +} diff --git a/src/main/java/com/gunshi/project/ss/schedule/TaskGroupHandler.java b/src/main/java/com/gunshi/project/ss/schedule/TaskGroupHandler.java new file mode 100644 index 0000000..1419c5d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/schedule/TaskGroupHandler.java @@ -0,0 +1,131 @@ +package com.gunshi.project.ss.schedule; + +import com.gunshi.project.ss.model.ForecastTask; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.quartz.CronScheduleBuilder; +import org.quartz.CronTrigger; +import org.quartz.JobBuilder; +import org.quartz.JobDataMap; +import org.quartz.JobDetail; +import org.quartz.JobKey; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.TriggerBuilder; +import org.quartz.TriggerKey; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.GetMapping; + +import java.math.BigDecimal; + + +/** + * @author cxw + * @description 定时任务动态操作 + * @classname TaskGroupHandler.java + * @create 2024-07-30, 星期二, 9:42:04 + */ +@Component +@Slf4j +public class TaskGroupHandler { + + @Resource + private Scheduler scheduler; + + /** + * 新增定时任务 + * @param jobId + */ + public void addCronJob(String jobId, ForecastTask forecastTask) { + try { + TriggerKey triggerKey = TriggerKey.triggerKey(jobId, "FloodForecast"); + + //构建job信息 + JobDetail job = JobBuilder.newJob(TaskGroupJob.class).withIdentity(jobId, "FloodForecast") + .withDescription("任务组编排").build(); + JobDataMap jobDataMap = job.getJobDataMap(); + jobDataMap.put("jobId", jobId); + jobDataMap.put("forecastTask", forecastTask); + //CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("cron的表达式"); + String cronExpression = ""; + // 小于1,就是0.5小时,转为分钟 + if(forecastTask.getTimeInterval().compareTo(BigDecimal.ONE) < 0){ + cronExpression = "0 0/" + Integer.valueOf(forecastTask.getTimeInterval().multiply(new BigDecimal(60)).setScale(0).toString()) + " * * * ?"; + }else if(forecastTask.getTimeInterval().compareTo(new BigDecimal(24)) == 0){ + cronExpression = "0 0 0 * * ?"; // 每天0点执行 + } else { + cronExpression = "0 0 */" + Integer.valueOf(forecastTask.getTimeInterval().setScale(0).toString()) + " * * ?"; + } + CronTrigger trigger = TriggerBuilder.newTrigger() + .withIdentity(triggerKey) + .startNow() + .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionFireAndProceed()) + .build(); + + //SimpleScheduleBuilder.simpleSchedule().withRepeatCount(0).withIntervalInSeconds(20)//每隔多少秒执行一次; withRepeatCount 设置重复的次数 + //.startNow().withSchedule(cronScheduleBuilder) + //交由Scheduler安排触发 + scheduler.scheduleJob(job, trigger); + if(!scheduler.isStarted()){ + scheduler.start(); + } + log.info("添加定时任务成功, startJob:{}", jobId); + } catch (SchedulerException e) { + log.error("添加定时任务异常, jobId:{}", jobId, e); + throw new RuntimeException(e); + } + } + + /** + * 删除任务 + * @param jobId + * @return + */ + public void removeCronJob(String jobId) { + try { + // TriggerKey 定义了trigger的名称和组别 ,通过任务名和任务组名获取TriggerKey + TriggerKey triggerKey = TriggerKey.triggerKey(jobId,"FloodForecast"); + // 停止触发器 + scheduler.resumeTrigger(triggerKey); + // 移除触发器 + scheduler.unscheduleJob(triggerKey); + // 移除任务 + scheduler.deleteJob(JobKey.jobKey(jobId,"FloodForecast")); + log.info("删除定时任务成功, jobId:{}", jobId); + } catch (SchedulerException e) { + log.error("删除定时任务异常, jobId:{}", jobId, e); + } + } + + /** + * 暂停定时任务 + * @param jobId + */ + public void pauseJob(String jobId) { + try { + JobKey jobKey = JobKey.jobKey(jobId,"FloodForecast"); + // 暂停任务 + scheduler.pauseJob(jobKey); + log.info("暂停定时任务成功, jobId:{}", jobId); + } catch (SchedulerException e) { + log.error("暂停定时任务异常, jobId:{}", jobId, e); + } + } + + /** + * 继续定时任务 + * @param jobId + */ + @GetMapping("/resumeJob") + public void resumeJob(String jobId) { + try { + // 通过任务名和任务组名获取jobKey + JobKey jobKey = JobKey.jobKey(jobId,"FloodForecast"); + // 继续任务 + scheduler.resumeJob(jobKey); + log.info("继续定时任务成功, jobId:{}", jobId); + } catch (SchedulerException e) { + log.error("继续定时任务异常, jobId:{}", jobId, e); + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJob.java b/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJob.java new file mode 100644 index 0000000..037d341 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJob.java @@ -0,0 +1,137 @@ +package com.gunshi.project.ss.schedule; + +import cn.hutool.core.map.MapUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import com.gunshi.project.ss.model.AttResBase; +import com.gunshi.project.ss.model.ForecastProject; +import com.gunshi.project.ss.model.ForecastTask; +import com.gunshi.project.ss.model.ForecastUseparam; +import com.gunshi.project.ss.service.AttResBaseService; +import com.gunshi.project.ss.service.ForecastProjectService; +import com.gunshi.project.ss.service.ForecastResultsService; +import com.gunshi.project.ss.service.ForecastTaskService; +import com.gunshi.project.ss.service.ForecastUseparamService; +import lombok.extern.slf4j.Slf4j; +import org.quartz.Job; +import org.quartz.JobDataMap; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author cxw + * @description 实现具体逻辑 + * @classname TaskGroupJob.java + * @create 2024-07-30, 星期二, 9:43:17 + */ +@Component +@Slf4j +public class TaskGroupJob implements Job { + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + private static SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm:00"); + + private static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyyMMddHHmm"); + + @Autowired + private ForecastResultsService forecastResultsService; + + @Autowired + private ForecastUseparamService forecastUseparamService; + + @Autowired + private AttResBaseService attResBaseService; + + @Autowired + private ForecastProjectService forecastProjectService; + @Autowired + private ForecastTaskService forecastTaskService; + + @Override + public void execute(JobExecutionContext context) { + Date nowDate = new Date(); + JobDataMap jdMap = context.getJobDetail().getJobDataMap(); + String jobId = (String) jdMap.get("jobId"); + ForecastTask forecastTask = (ForecastTask) jdMap.get("forecastTask"); + log.info("{}----TaskGroupJob-计划执行开始===>jobId:{}", sdf.format(nowDate), jobId); + forecastTask.setLastExcuteTm(nowDate); + try { + // 根据执行时间、预热期、预见期获取对应的预报、开始、结束时间 + Date nowTime = sdfMinute.parse(sdfMinute.format(nowDate)); + Date forecastTime = nowTime; + Date startTime; + Date endTime; + Integer forecastPeriod = forecastTask.getForecastPeriod();// 预见期:小时 + Integer forecastWarm = forecastTask.getForecastWarm();// 预热期:天 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(nowTime); + // 预报时间就是当前时间 + forecastTask.setNowTime(nowTime); + forecastTask.setForecastTime(nowTime); + // 预热期:往前推 天 + calendar.add(calendar.DATE, - forecastWarm); + startTime = calendar.getTime(); + forecastTask.setStartTime(startTime); + // 预见期:先恢复,再往后推 小时 + calendar.setTime(nowTime); + calendar.add(calendar.HOUR_OF_DAY, forecastPeriod); + endTime = calendar.getTime(); + forecastTask.setEndTime(endTime); + List voList = forecastResultsService.autoFloodForecast(forecastTask); + // 符合条件就保存到数据库 + if (CollectionUtils.isNotEmpty(voList)) { + Map map = forecastUseparamService.getMap(new QueryWrapper().eq("param_code", "ydgdyjz"));// 获取安全值 + AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>());// 获取堰顶高程 + if (MapUtil.isNotEmpty(map) && ObjectUtils.isNotEmpty(attResBase) && ObjectUtils.isNotEmpty(attResBase.getWcrstel())) { + BigDecimal ydgdyjz = new BigDecimal(map.get("param_value").toString()); + BigDecimal wcrstel = attResBase.getWcrstel(); + Boolean isSave = false; + for (ForecastResultVo vo : voList) { + // 当计算的预报最高水位离堰顶高程小于此安全值,或者超过堰顶高度的值时,发送系统内消息提示。同时自动滚动预报保存方案结果 + if ((vo.getYcSwHValue().add(ydgdyjz)).compareTo(wcrstel) > 0) { + isSave = true; + break; + } + } + if (isSave) { + ForecastProject forecastProject = new ForecastProject(); + forecastProject.setId(IdWorker.getId()); + forecastProject.setName("未来" + forecastPeriod + "小时洪水预报-".concat(sdfTime.format(nowTime))); + forecastProject.setType("1"); + forecastProject.setForecastTm(forecastTime); + forecastProject.setProjectTm(nowTime); + forecastProject.setStartTm(startTime); + forecastProject.setEndTm(endTime); + forecastProject.setUserId("1_系统"); + forecastProject.setForecastPeriod(forecastPeriod); + forecastProject.setForecastWarm(forecastWarm); + forecastProject.setTimeInterval(forecastTask.getTimeInterval()); + forecastProject.setTaskId(forecastTask.getId()); + forecastProject.setVoList(voList); + boolean save = forecastProjectService.save(forecastProject); + if (save) { + forecastProjectService.saveForecastResults(forecastProject); + forecastTask.setLastResultsaveTm(nowDate); + } + } + } + } + forecastTaskService.updateById(forecastTask); + } catch (Exception e) { + throw new RuntimeException(e); + } + log.info("{}----TaskGroupJob-计划执行结束===>jobId:{}", sdf.format(new Date()), jobId); + } +} diff --git a/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJobRunner.java b/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJobRunner.java new file mode 100644 index 0000000..54d986e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJobRunner.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.schedule; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.gunshi.project.ss.model.ForecastTask; +import com.gunshi.project.ss.service.ForecastTaskService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author cxw + * @description 任务预热,预先加载数据库已经配置好的任务 + * @classname TaskGroupJobRunner.java + * @create 2024-07-30, 星期二, 9:42:39 + */ +@Component +@Slf4j +@Profile("prod") +public class TaskGroupJobRunner implements CommandLineRunner { + + @Resource + private TaskGroupHandler taskGroupHandler; + + @Autowired + private ForecastTaskService forecastTaskService; + + @Override + public void run(String... args) { + // 初始加载数据库里状态为正常的定时任务 + List taskList = forecastTaskService.list(new QueryWrapper().eq("status", "0")); + if (CollectionUtils.isNotEmpty(taskList)) { + Map jobMap = taskList.stream() + .collect(Collectors.toMap(ForecastTask::getId, Function.identity(), (key1, key2)->key2)); + for (Map.Entry entry : jobMap.entrySet()) { + taskGroupHandler.addCronJob(String.valueOf(entry.getKey()), entry.getValue()); + } + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/AbstractModelWithAttachService.java b/src/main/java/com/gunshi/project/ss/service/AbstractModelWithAttachService.java new file mode 100644 index 0000000..ee9fd56 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AbstractModelWithAttachService.java @@ -0,0 +1,81 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.db.dao.BaseDao; +import com.gunshi.db.dao.IMapper; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; + +/** + * 类描述 + * + * @author lyf + * @version 1.0.0 + * @since 2024-03-19 + */ +public abstract class AbstractModelWithAttachService, AutoDao extends BaseDao, + AttachModel, AttachModelAutoMapper extends IMapper, AttachModelAutoDao extends BaseDao> { + abstract AutoDao getAutoDao(); + + abstract AttachModelAutoDao getAttachFileAutoDao(); + + abstract List createAttachList(Model model); + + + abstract Object getModelId(Model model); + + public abstract String getAttachBzIdName(); + + @Transactional + public boolean save(Model model) { + List attachList = createAttachList(model); + if (attachList != null) { + getAttachFileAutoDao().saveBatch(attachList); + } + + return getAutoDao().save(model); + } + + @Transactional + public boolean updateById(Model model) { + List attachList = getAttachFileAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), getModelId(model))); + getAttachFileAutoDao().removeByIds(attachList); + + attachList = createAttachList(model); + getAttachFileAutoDao().saveBatch(attachList); + + return getAutoDao().updateById(model); + } + + @Transactional + public boolean removeById(Serializable id) { + List attachList = getAttachFileAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), id)); + getAttachFileAutoDao().removeByIds(attachList); + + return getAutoDao().removeById(id); + } + + public Model getById(Serializable id) { + return getAutoDao().getById(id); + } + + public Page getPage(Page page) { + return getAutoDao().page(page); + } + + public AttachModel getAttachByAttachId(Serializable attachId) { + return getAttachFileAutoDao().getById(attachId); + } + + public List getAttachListByModelId(Serializable modelId) { + return getAttachFileAutoDao().list(new QueryWrapper().eq(getAttachBzIdName(), modelId)); + } + + + public interface GetFileIds { + List getFileIds(); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/AlarmSetService.java b/src/main/java/com/gunshi/project/ss/service/AlarmSetService.java new file mode 100644 index 0000000..3b9c1bc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AlarmSetService.java @@ -0,0 +1,58 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.entity.so.AlarmSetPageSo; +import com.gunshi.project.ss.mapper.AlarmSetMapper; +import com.gunshi.project.ss.model.AlarmSet; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AlarmSetService extends ServiceImpl { + public Page queryPage(AlarmSetPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (page.getStcd() != null) { + queryWrapper.eq(AlarmSet::getStcd, page.getStcd()); + } + queryWrapper.orderByDesc(AlarmSet::getCreateDate); + Page alarmSetPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + return alarmSetPage; + } + + public boolean saveData(AlarmSet dto) { + dto.setId(IdWorker.getId()); + dto.setCreateDate(new Date()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AlarmSet::getStcd, dto.getStcd()); + AlarmSet alarmSet = this.baseMapper.selectOne(queryWrapper); + if(alarmSet != null){ + throw new IllegalArgumentException("对不起,该站点的告警设置已存在,请勿重复添加"); + } + return save(dto); + } + + public List listStation() { + return this.baseMapper.listStation(); + } + + public boolean updateInfo(AlarmSet dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.ne(AlarmSet::getId, dto.getId()); + queryWrapper.eq(AlarmSet::getStcd, dto.getStcd()); + AlarmSet alarmSet = this.baseMapper.selectOne(queryWrapper); + if(alarmSet != null){ + throw new IllegalArgumentException("对不起站点:" + dto.getStcd() +"已存在"); + } + return updateById(dto); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/AppVersionRecordService.java b/src/main/java/com/gunshi/project/ss/service/AppVersionRecordService.java new file mode 100644 index 0000000..443ee92 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AppVersionRecordService.java @@ -0,0 +1,46 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AppVersionRecordMapper; +import com.gunshi.project.ss.model.AppVersionRecord; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.Date; +import java.util.List; + +/** + * 描述: APP版本记录 + * author: xusan + * date: 2024-11-12 10:14:50 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AppVersionRecordService extends ServiceImpl +{ + + public boolean insertData(String version,String versionDesc,String url) { + AppVersionRecord record = new AppVersionRecord(); + record.setId(IdWorker.getId()); + record.setVersion(version); + record.setVersionDesc(versionDesc); + record.setUrl(url); + record.setCreateTime(new Date()); + return this.baseMapper.insert(record) > 0; + } + + public AppVersionRecord getLatest() { + AppVersionRecord record = null; + List list = this.lambdaQuery().orderByDesc(AppVersionRecord::getCreateTime).list(); + if(!CollectionUtils.isEmpty(list)){ + record = list.get(0); + } + return record; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessCategoryService.java b/src/main/java/com/gunshi/project/ss/service/AssessCategoryService.java new file mode 100644 index 0000000..9f1d505 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessCategoryService.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AssessCategoryMapper; +import com.gunshi.project.ss.mapper.AssessIndicatorMapper; +import com.gunshi.project.ss.model.AssessCategory; +import com.gunshi.project.ss.model.AssessIndicator; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.Objects; + +/** + * 描述: 考核类目 + * author: xusan + * date: 2024-09-03 17:46:30 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessCategoryService extends ServiceImpl +{ + + @Autowired + private AssessIndicatorMapper indicatorMapper; + + public AssessCategory saveData(AssessCategory dto) { + dto.setId(IdWorker.getId()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderBy(true, false, "order_index"); + AssessCategory lastOne = super.getOne(queryWrapper, false); + int order = 0; + if (lastOne == null) { + order = 1; + } else { + order = lastOne.getOrderIndex() + 1; + } + dto.setOrderIndex(order); + this.save(dto); + return dto; + } + + public AssessCategory updateData(AssessCategory dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + this.updateById(dto); + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + //判断是否关联指标 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(AssessIndicator::getCategoryId,id); + if(indicatorMapper.selectCount(wrapper) > 0){ + throw new IllegalArgumentException("请先删除关联的考核指标"); + } + return this.removeById(id); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessIndicatorRatingService.java b/src/main/java/com/gunshi/project/ss/service/AssessIndicatorRatingService.java new file mode 100644 index 0000000..d805601 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessIndicatorRatingService.java @@ -0,0 +1,47 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AssessIndicatorRatingMapper; +import com.gunshi.project.ss.model.AssessIndicatorRating; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 考核指标评分细则 + * author: xusan + * date: 2024-09-03 17:47:17 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessIndicatorRatingService extends ServiceImpl +{ + + public void saveRating(List indicatorRatings,Long id) { + indicatorRatings.stream().forEach(o->{ + o.setId(IdWorker.getId()); + o.setIndicatorId(id); + }); + this.saveBatch(indicatorRatings); + } + + public void updateRating(List indicatorRatings, Long id) { + delRating(id); + saveRating(indicatorRatings,id); + } + + public void delRating(Long indicatorId) { + this.remove(new QueryWrapper().eq("indicator_id",indicatorId)); + } + + public List queryRatingList(List ids) { + return this.list(new QueryWrapper().in("indicator_id",ids)); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessIndicatorService.java b/src/main/java/com/gunshi/project/ss/service/AssessIndicatorService.java new file mode 100644 index 0000000..86511c9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessIndicatorService.java @@ -0,0 +1,122 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.dto.InspectItemDto; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.mapper.AssessIndicatorMapper; +import com.gunshi.project.ss.mapper.AssessTemplateIndicatorRelMapper; +import com.gunshi.project.ss.model.AssessIndicator; +import com.gunshi.project.ss.model.AssessIndicatorRating; +import com.gunshi.project.ss.model.AssessTemplateIndicatorRel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 考核指标 + * author: xusan + * date: 2024-09-03 17:46:56 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessIndicatorService extends ServiceImpl { + @Autowired + private AssessIndicatorRatingService indicatorRatingService; + + @Autowired + private AssessTemplateIndicatorRelMapper relMapper; + + public String startStop(InspectItemDto dto) { + Integer status = dto.getStatus(); + AssessIndicator indicator = super.getById(dto.getId()); + if (indicator == null) { + throw new IllegalArgumentException("当前数据不存在"); + } + indicator.setStatus(status); + boolean flag = super.updateById(indicator); + if (flag) { + return status == 0 ? "启用成功" : "禁用成功"; + } + return status == 0 ? "启用失败" : "禁用失败"; + } + + public Page pageQuery(AttCctvBasePage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getMenuId())) { + query.eq(AssessIndicator::getCategoryId, page.getMenuId()); + } + query.orderByAsc(AssessIndicator::getStatus).orderByAsc(AssessIndicator::getOrderIndex); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null && res.getRecords().size() > 0) { + fillUsedInfo(res.getRecords()); + fillRating(res.getRecords()); + } + return res; + } + + private void fillUsedInfo(List records) { + List ids = records.stream().map(AssessIndicator::getId).collect(Collectors.toList()); + List list = relMapper.selectList(new QueryWrapper().in("indicator_id", ids)); + Map map = list.stream().collect(Collectors.groupingBy(AssessTemplateIndicatorRel::getIndicatorId, Collectors.counting())); + for (AssessIndicator record : records) { + record.setIsUsed(map.containsKey(record.getId()) ? 1 : 0); + } + } + + public void fillRating(List records) { + List ids = records.stream().map(AssessIndicator::getId).collect(Collectors.toList()); + List relList = indicatorRatingService.queryRatingList(ids); + Map> map = relList.stream().collect(Collectors.groupingBy(AssessIndicatorRating::getIndicatorId)); + for (AssessIndicator record : records) { + record.setIndicatorRatings(map.get(record.getId())); + } + } + + public AssessIndicator saveData(AssessIndicator dto) { + dto.setId(IdWorker.getId()); + dto.setStatus(0); + this.save(dto); + indicatorRatingService.saveRating(dto.getIndicatorRatings(),dto.getId()); + return dto; + } + + public AssessIndicator updateData(AssessIndicator dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + this.updateById(dto); + indicatorRatingService.updateRating(dto.getIndicatorRatings(),dto.getId()); + return dto; + } + + public Boolean delData(Long id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + Long count = relMapper.selectCount(new QueryWrapper().eq("indicator_id", id)); + if(count > 0){ + throw new IllegalArgumentException("该考核指标已被使用,不可删除"); + } + indicatorRatingService.delRating(id); + return this.removeById(id); + } + + public Page choosePage(AttCctvBasePage page) { + return this.baseMapper.choosePage(page.getPageSo().toPage(),page); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessObjectRatingService.java b/src/main/java/com/gunshi/project/ss/service/AssessObjectRatingService.java new file mode 100644 index 0000000..0f01ef4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessObjectRatingService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AssessObjectRatingMapper; +import com.gunshi.project.ss.model.AssessObjectRating; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 考核对象指标得分详情 + * author: xusan + * date: 2024-09-10 10:44:14 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessObjectRatingService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessObjectService.java b/src/main/java/com/gunshi/project/ss/service/AssessObjectService.java new file mode 100644 index 0000000..ddcba06 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessObjectService.java @@ -0,0 +1,80 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AssessObjectMapper; +import com.gunshi.project.ss.model.AssessObject; +import com.gunshi.project.ss.model.AssessTeam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 描述: 考核对象 + * author: xusan + * date: 2024-09-05 14:19:30 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessObjectService extends ServiceImpl +{ + @Autowired + private AssessTeamService assessTeamService; + + public void saveObject(List assessObjects,List assessTeams, Long taskId) { + List teams = new ArrayList<>(); + assessObjects.stream().forEach(o->{ + long objectId = IdWorker.getId(); + o.setId(objectId); + o.setTaskId(taskId); + o.setStatus(0); + for(int i =0 ;i ().eq("task_id",taskId)); + this.remove(new QueryWrapper().eq("task_id",taskId)); + } + + public void updateObject(List assessObjects,List assessTeams, Long taskId) { + this.delObject(taskId); + this.saveObject(assessObjects,assessTeams,taskId); + } + + public List getObject(Long taskId) { + List list = this.list(new QueryWrapper().eq("task_id",taskId)); + return list; + } + + public List getTeam(Long taskId) { + List list = assessTeamService.list(new QueryWrapper().eq("task_id",taskId)); + return list; + } + + public void updateTeams(List teams) { + assessTeamService.updateBatchById(teams); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessTaskService.java b/src/main/java/com/gunshi/project/ss/service/AssessTaskService.java new file mode 100644 index 0000000..a391aed --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessTaskService.java @@ -0,0 +1,272 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.so.AssessTaskPageSo; +import com.gunshi.project.ss.entity.vo.AssessResultVo; +import com.gunshi.project.ss.mapper.AssessObjectRatingMapper; +import com.gunshi.project.ss.mapper.AssessTaskMapper; +import com.gunshi.project.ss.mapper.AssessTemplateMapper; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.ExcelUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 考核任务 + * author: xusan + * date: 2024-09-05 14:19:04 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessTaskService extends ServiceImpl +{ + @Autowired + private AssessObjectService assessObjectService; + + @Autowired + private FileAssociationsService fileService; + + @Autowired + private AssessTemplateMapper templateMapper; + + @Autowired + private AssessObjectRatingMapper objectRatingMapper; + + @Autowired + private AssessTeamRatingService teamRatingService; + + @Autowired + private MessageCenterService messageCenterService; + + public AssessTask saveData(AssessTask dto) { + dto.setId(IdWorker.getId()); + dto.setStatus(0); + dto.setCreateTime(new Date()); + assessObjectService.saveObject(dto.getAssessObjects(),dto.getAssessTeams(),dto.getId()); + this.save(dto); + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + return dto; + } + + public String getGroupId() { + return "assessTask"; + } + + public Boolean delData(Long id) { + AssessTask task = this.getById(id); + if (Objects.isNull(task)) { + throw new IllegalArgumentException("当前数据不存在"); + } + if(task.getStatus() != 0){ + throw new IllegalArgumentException("只能删除未启动的考核任务"); + } + fileService.deleteFile(getGroupId(),id.toString()); + assessObjectService.delObject(id); + return this.removeById(id); + } + + public AssessTask updateData(AssessTask dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + assessObjectService.updateObject(dto.getAssessObjects(),dto.getAssessTeams(),dto.getId()); + } + return dto; + } + + public AssessTask detail(Long id) { + AssessTask task = this.getById(id); + AssessTemplate template = templateMapper.selectById(task.getTemplateId()); + task.setTemplateName(template.getTemplateName()); + task.setFiles(fileService.getFiles(getGroupId(),id.toString())); + List team = assessObjectService.getTeam(id); + task.setAssessTeams(team.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(AssessTeam::getTeamUserId))),ArrayList::new))); + task.setAssessObjects(assessObjectService.getObject(id)); + return task; + } + + public Page listPage(AssessTaskPageSo page) { + Page res = this.baseMapper.listPage(page.getPageSo().toPage(), page); + if (res.getRecords() != null && res.getRecords().size() > 0) { + for (AssessTask record : res.getRecords()) { + record.setAssessObjects(assessObjectService.getObject(record.getId())); + } + } + return res; + } + + public String start(Long id) { + AssessTask task = this.getById(id); + task.setStatus(1); + this.updateById(task); + //任务中的考核对象 + List objects = assessObjectService.getObject(id); + objects.stream().forEach(o->o.setStatus(1)); + assessObjectService.updateBatchById(objects); + //任务中的考核成员 + List teams = assessObjectService.getTeam(id); + teams.stream().forEach(o->o.setStatus(1)); + assessObjectService.updateTeams(teams); + //考核指标 + List ratings = new ArrayList<>(); + List teamUserIds = teams.stream().map(AssessTeam::getTeamUserId).distinct().collect(Collectors.toList()); + List messages = teamUserIds.stream().map(o->{ + MessageCenter center = new MessageCenter(); + center.setPublishUserId(task.getCreateUserId()); + center.setPublishUserName(task.getCreateUserName()); + center.setReceiveUserId(o); + center.setTitle("评分任务"); + center.setContent("您收到一条考核评分任务的提醒:"+task.getTaskName()+",请及时处理。"); + return center; + }).collect(Collectors.toList()); + List indicatorIds = this.baseMapper.queryIndicators(task.getTemplateId()); + for(AssessTeam team : teams){ + for(AssessIndicator indicator : indicatorIds){ + AssessTeamRating rating = new AssessTeamRating(); + rating.setId(IdWorker.getId()); + rating.setTeamId(team.getId()); + rating.setIndicatorId(indicator.getId()); + rating.setStandardScore(indicator.getStandardScore()); + ratings.add(rating); + } + } + teamRatingService.saveBatch(ratings); + messageCenterService.insertMessage(messages); + List list = new ArrayList<>(); + for(AssessObject object : objects){ + for(AssessIndicator indicator : indicatorIds){ + AssessObjectRating objectRating = new AssessObjectRating(); + objectRating.setId(IdWorker.getId()); + objectRating.setObjectId(object.getId()); + objectRating.setIndicatorId(indicator.getId()); + objectRating.setStandardScore(indicator.getStandardScore()); + list.add(objectRating); + } + } + teamRatingService.saveObjectRating(list); + return "启动成功"; + } + + public Page myTodo(AssessTaskPageSo page) { + Page res = this.baseMapper.myTodo(page.getPageSo().toPage(),page); + if (res.getRecords() != null && res.getRecords().size() > 0) { + fillObject(res.getRecords(),page.getUserId()); + } + return res; + } + + private void fillObject(List records,Long userId) { + for (AssessTask record : records) { + List list = this.baseMapper.selectObject(record.getId(),userId); + record.setAssessObjects(list); + } + } + + public Page myDone(AssessTaskPageSo page) { + List taskIds = this.baseMapper.myDoneTask(page.getUserId()); + if (CollectionUtils.isEmpty(taskIds)) { + return null; + } + Page res = this.baseMapper.myDone(page.getPageSo().toPage(), page,taskIds); + if (res.getRecords() != null && res.getRecords().size() > 0) { + fillObject(res.getRecords(),page.getUserId()); + } + return res; + } + + public String pass(Long id) { + AssessTask task = this.getById(id); + task.setStatus(3); + this.updateById(task); + return "审核通过"; + } + + public String cancel(Long id) { + AssessTask task = this.getById(id); + task.setStatus(4); + this.updateById(task); + return "作废成功"; + } + + public String reject(Long id) { + AssessTask task = this.getById(id); + task.setStatus(1); + this.updateById(task); + //任务中的考核对象 + List objects = assessObjectService.getObject(id); + objects.stream().forEach(o->o.setStatus(9)); + assessObjectService.updateBatchById(objects); + List objectIds = objects.stream().map(AssessObject::getId).collect(Collectors.toList()); + objectRatingMapper.delete(new QueryWrapper().in("object_id",objectIds)); + //任务中的考核成员 + List teams = assessObjectService.getTeam(id); + teams.stream().forEach(o->o.setStatus(1)); + assessObjectService.updateTeams(teams); + return "驳回评分成功"; + } + + public List result(Long id) { + List list = this.baseMapper.result(id); + list.stream().forEach(o->o.setDeductScore(new BigDecimal(o.getStandardScore()).subtract(o.getAssessScore()))); + return list.stream().filter(o->o.getDeductScore().compareTo(new BigDecimal(0)) > 0).collect(Collectors.toList()); + } + + public void resultExport(Long id, HttpServletResponse response) { + List list = this.result(id); + ExcelUtil.exportExcel(list,"考核结果",AssessResultVo.class,1,new int[]{0,4},response,"考核结果"); + } + + public List resultStat(MonthRangeSo monthRangeSo) { + List list = this.baseMapper.resultStat(monthRangeSo); + if (CollectionUtils.isNotEmpty(list)) { + for (AssessTask record : list) { + record.setAssessObjects(assessObjectService.getObject(record.getId())); + } + } + return list; + } + + public Map levelStat(MonthRangeSo monthRangeSo) { + List list = this.resultStat(monthRangeSo); + if(CollectionUtils.isEmpty(list)){ + return new HashMap<>(); + } + List objectList = list.stream().map(AssessTask::getAssessObjects).flatMap(List::stream).collect(Collectors.toList()); + Map collect = objectList.stream().collect(Collectors.groupingBy(AssessObject::getAssessLevel, Collectors.counting())); + if(!collect.containsKey(1)){ + //表示优秀的为0 + collect.put(1,0L); + } + if(!collect.containsKey(2)){ + //表示良好的为0 + collect.put(2,0L); + } + if(!collect.containsKey(3)){ + //表示合格的为0 + collect.put(3,0L); + } + if(!collect.containsKey(4)){ + //表示不合格的为0 + collect.put(4,0L); + } + return collect; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessTeamRatingService.java b/src/main/java/com/gunshi/project/ss/service/AssessTeamRatingService.java new file mode 100644 index 0000000..289d452 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessTeamRatingService.java @@ -0,0 +1,253 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.so.AssessTaskPageSo; +import com.gunshi.project.ss.entity.vo.AssessRatingVo; +import com.gunshi.project.ss.entity.vo.AssessRectifyVo; +import com.gunshi.project.ss.entity.vo.AssessScoreVo; +import com.gunshi.project.ss.mapper.*; +import com.gunshi.project.ss.model.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 考核评分详情 + * author: xusan + * date: 2024-09-05 14:20:04 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessTeamRatingService extends ServiceImpl { + @Autowired + private FileAssociationsService fileService; + + @Autowired + private AssessObjectMapper objectMapper; + + @Autowired + private AssessTaskMapper taskMapper; + + @Autowired + private AssessTeamMapper teamMapper; + + @Autowired + private AssessTemplateMapper templateMapper; + + @Autowired + private AssessObjectRatingService assessObjectRatingService; + + @Autowired + private AssessIndicatorRatingService indicatorRatingService; + + public Boolean saveScore(AssessScoreVo vo) { + return commonScore(vo, 9); + } + + private Boolean commonScore(AssessScoreVo vo, Integer status) { + List ratings = vo.getRatings(); + Long teamId = ratings.get(0).getTeamId(); + this.delData(teamId); + for (AssessTeamRating rating : ratings) { + rating.setId(IdWorker.getId()); + rating.setRectifyStatus(0); + fileService.save(rating.getFiles(), rating.getId().toString(), getGroupId(), getScoreType()); + } + AssessTask task = taskMapper.selectById(vo.getTaskId()); + //更新该考核人员对考核对象的状态为已评分 + AssessTeam assessTeam = teamMapper.selectById(teamId); + assessTeam.setStatus(status); + //获取模板信息 + AssessTemplate template = templateMapper.selectById(task.getTemplateId()); + //根据总得分计算等级 + Integer level = calcLevel(template, vo.getScore()); + assessTeam.setAssessScore(vo.getScore()); + assessTeam.setAssessLevel(level); + teamMapper.updateById(assessTeam); + Boolean res = this.saveBatch(ratings); + if (status == 2) { + updateObjectAndTask(assessTeam.getObjectId(), vo.getTaskId(), template, task); + } + return res; + } + + public Boolean score(AssessScoreVo vo) { + return commonScore(vo, 2); + } + + private void delData(Long teamId) { + List teamRatings = this.list(new QueryWrapper().eq("team_id", teamId)); + if (CollectionUtils.isNotEmpty(teamRatings)) { + List ratingIds = teamRatings.stream().map(AssessTeamRating::getId).map(Objects::toString).collect(Collectors.toList()); + fileService.remove(new QueryWrapper().in("business_id", ratingIds)); + this.remove(new QueryWrapper().eq("team_id", teamId)); + } + } + + private Integer calcLevel(AssessTemplate template, BigDecimal score) { + BigDecimal excellentScore = template.getExcellentScore(); + BigDecimal goodScore = template.getGoodScore(); + BigDecimal passScore = template.getPassScore(); + if (score.compareTo(excellentScore) >= 0) { + return 1; + } else if (score.compareTo(goodScore) >= 0 && score.compareTo(excellentScore) < 0) { + return 2; + } else if (score.compareTo(passScore) >= 0 && score.compareTo(goodScore) < 0) { + return 3; + } else { + return 4; + } + } + + private void updateObjectAndTask(Long objectId, Long taskId, AssessTemplate template, AssessTask task) { + //先判断该次评分是否是该考核对象的最后一次评分 + //如果为最后一次评分,就要计算该考核对象的最终得分 + List teams = teamMapper.selectList(new QueryWrapper().eq("object_id", objectId).eq("task_id", taskId)); + List finishTeams = teams.stream().filter(o -> o.getStatus() == 2).collect(Collectors.toList()); + if (teams.size() == finishTeams.size()) { + Integer scoreWay = task.getScoreWay(); + List teamIds = finishTeams.stream().map(AssessTeam::getId).collect(Collectors.toList()); + BigDecimal assessScore = calcScore(scoreWay, teamIds, objectId); + Integer level = calcLevel(template, assessScore); + AssessObject object = objectMapper.selectById(objectId); + object.setStatus(2); + object.setAssessScore(assessScore); + object.setAssessLevel(level); + objectMapper.updateById(object); + //判断该考核任务是否存在未打分的对象,不存在则更新考核任务的状态为已完成 + Long taskCount = objectMapper.selectCount(new QueryWrapper().eq("task_id", taskId).eq("status", 1)); + if (taskCount == 0) { + task.setStatus(2); + taskMapper.updateById(task); + } + } + } + + private BigDecimal calcScore(Integer scoreWay, List teamIds, Long objectId) { + assessObjectRatingService.remove(new QueryWrapper().eq("object_id", objectId)); + final BigDecimal[] score = {new BigDecimal(0)}; + List ratings = this.list(new QueryWrapper().in("team_id", teamIds)); + Map> map = ratings.stream().collect(Collectors.groupingBy(AssessTeamRating::getIndicatorId, Collectors.mapping(AssessTeamRating::getAssessScore, Collectors.toList()))); + Map> standardMap = ratings.stream().collect(Collectors.groupingBy(AssessTeamRating::getIndicatorId, Collectors.mapping(AssessTeamRating::getStandardScore, Collectors.toList()))); + List list = new ArrayList<>(); + map.entrySet().forEach(o -> { + List value = o.getValue(); + AssessObjectRating objectRating = new AssessObjectRating(); + objectRating.setId(IdWorker.getId()); + objectRating.setObjectId(objectId); + objectRating.setIndicatorId(o.getKey()); + objectRating.setStandardScore(standardMap.get(o.getKey()).get(0)); + if (scoreWay == 1) { + BigDecimal val = value.stream().min(BigDecimal::compareTo).get(); + objectRating.setAssessScore(val); + score[0] = score[0].add(val); + } else { + BigDecimal vide = value.stream().reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(value.size()), 2, RoundingMode.HALF_UP); + objectRating.setAssessScore(vide); + score[0] = score[0].add(vide); + } + list.add(objectRating); + }); + assessObjectRatingService.saveBatch(list); + return score[0]; + } + + public void saveObjectRating(List list) { + assessObjectRatingService.saveBatch(list); + } + + public String getGroupId() { + return "assessTeamRating"; + } + + public String getScoreType() { + return "assessScore"; + } + + public String getRectifyType() { + return "assessRectify"; + } + + public List doDetail(Long teamId) { + List list = this.baseMapper.scoreDetail(teamId); + fillRating(list); + return list; + } + + + public Map> scoreDetail(Long objectId) { + List list = this.baseMapper.scoreByObjectId(objectId); + fillRating(list); + return list.stream().collect(Collectors.groupingBy(AssessTeamRating::getIndicatorId)); + } + + private void fillRating(List list) { + List relList = indicatorRatingService.queryRatingList(list.stream().map(AssessRatingVo::getIndicatorId).distinct().collect(Collectors.toList())); + Map> map = relList.stream().collect(Collectors.groupingBy(AssessIndicatorRating::getIndicatorId)); + for (AssessRatingVo vo : list) { + vo.setIndicatorRatings(map.get(vo.getIndicatorId())); + if (vo.getIsNeedRectify() != null && vo.getIsNeedRectify() == 1) { + vo.setFiles(fileService.queryFileList(vo.getId().toString(), getGroupId(), getScoreType())); + } + } + } + + public Page listPage(AssessTaskPageSo page) { + /* 若以后需要根据当前登录人查询,则取消注释 + SecurityContext context = SecurityContextHolder.getContext(); + Authentication auth = context.getAuthentication(); + Object principal = auth.getPrincipal(); + log.info("principal is {}", principal); + LoginUser loginUser = (LoginUser) principal; + SysUser user = loginUser.getUser(); + boolean admin = SecurityUtils.isAdmin(user.getUserId()); + if (!admin) { + page.setUserId(user.getUserId()); + } + */ + Page res = this.baseMapper.listPage(page.getPageSo().toPage(), page); + if (res.getRecords() != null && res.getRecords().size() > 0) { + for (AssessRectifyVo record : res.getRecords()) { + record.setFiles(fileService.queryFileList(record.getId().toString(), getGroupId(), getScoreType())); + record.setRectifyFiles(fileService.queryFileList(record.getId().toString(), getGroupId(), getRectifyType())); + } + } + return res; + } + + public String rectify(AssessTeamRating rating) { + rating.setRectifyStatus(1); + this.updateById(rating); + fileService.save(rating.getRectifyFiles(), rating.getId().toString(), getGroupId(), getRectifyType()); + return "整改成功"; + } + + public Map rectifyStat(MonthRangeSo monthRangeSo) { + List list = this.baseMapper.rectifyStat(monthRangeSo); + Map collect = list.stream().collect(Collectors.groupingBy(AssessTeamRating::getRectifyStatus, Collectors.counting())); + if(!collect.containsKey(0)){ + collect.put(0,0L); + } + if(!collect.containsKey(1)){ + collect.put(1,0L); + } + return collect; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessTeamService.java b/src/main/java/com/gunshi/project/ss/service/AssessTeamService.java new file mode 100644 index 0000000..43e64a4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessTeamService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AssessTeamMapper; +import com.gunshi.project.ss.model.AssessTeam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 考核组成员 + * author: xusan + * date: 2024-09-05 14:19:47 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessTeamService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessTemplateIndicatorRelService.java b/src/main/java/com/gunshi/project/ss/service/AssessTemplateIndicatorRelService.java new file mode 100644 index 0000000..25cdc76 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessTemplateIndicatorRelService.java @@ -0,0 +1,47 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AssessTemplateIndicatorRelMapper; +import com.gunshi.project.ss.model.AssessTemplateIndicatorRel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 描述: 模板关联指标 + * author: xusan + * date: 2024-09-04 13:43:05 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessTemplateIndicatorRelService extends ServiceImpl +{ + + public void saveRel(List indicatorIds, Long id) { + List list = indicatorIds.stream().map(o -> { + AssessTemplateIndicatorRel rel = new AssessTemplateIndicatorRel(); + rel.setId(IdWorker.getId()); + rel.setTemplateId(id); + rel.setIndicatorId(o); + return rel; + }).collect(Collectors.toList()); + this.saveBatch(list); + } + + public void delRel(Long templateId) { + this.remove(new QueryWrapper().eq("template_id",templateId)); + } + + public void updateRel(List indicatorIds, Long id) { + this.delRel(id); + this.saveRel(indicatorIds,id); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AssessTemplateService.java b/src/main/java/com/gunshi/project/ss/service/AssessTemplateService.java new file mode 100644 index 0000000..dd47ae1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AssessTemplateService.java @@ -0,0 +1,125 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.dto.InspectItemDto; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.mapper.AssessTaskMapper; +import com.gunshi.project.ss.mapper.AssessTemplateMapper; +import com.gunshi.project.ss.model.AssessIndicator; +import com.gunshi.project.ss.model.AssessTask; +import com.gunshi.project.ss.model.AssessTemplate; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 考核模板 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AssessTemplateService extends ServiceImpl +{ + @Autowired + private AssessTemplateIndicatorRelService relService; + + @Autowired + private AssessIndicatorService indicatorService; + + @Autowired + private AssessTaskMapper taskMapper; + + public AssessTemplate saveData(AssessTemplate dto) { + dto.setId(IdWorker.getId()); + dto.setStatus(0); + dto.setCreateTime(new Date()); + this.save(dto); + relService.saveRel(dto.getIndicatorIds(),dto.getId()); + return dto; + } + + public AssessTemplate updateData(AssessTemplate dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + this.updateById(dto); + relService.updateRel(dto.getIndicatorIds(),dto.getId()); + return dto; + } + + public Boolean delData(Long id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + relService.delRel(id); + return this.removeById(id); + + } + + public Page pageQuery(AttCctvBasePage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getName())) { + query.like(AssessTemplate::getTemplateName, page.getName()); + } + query.orderByAsc(AssessTemplate::getStatus).orderByDesc(AssessTemplate::getCreateTime); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null && res.getRecords().size() > 0) { + fillUsedInfo(res.getRecords()); + } + return res; + } + + private void fillUsedInfo(List records) { + List ids = records.stream().map(AssessTemplate::getId).collect(Collectors.toList()); + List list = taskMapper.selectList(new QueryWrapper().in("template_id", ids)); + Map map = list.stream().collect(Collectors.groupingBy(AssessTask::getTemplateId, Collectors.counting())); + for (AssessTemplate record : records) { + record.setIsUsed(map.containsKey(record.getId()) ? 1 : 0); + } + } + + public String startStop(InspectItemDto dto) { + Integer status = dto.getStatus(); + AssessTemplate template = super.getById(dto.getId()); + if (template == null) { + throw new IllegalArgumentException("当前数据不存在"); + } + template.setStatus(status); + boolean flag = super.updateById(template); + if (flag) { + return status == 0 ? "启用成功" : "禁用成功"; + } + return status == 0 ? "启用失败" : "禁用失败"; + } + + public List queryIndicators(Long id) { + List list = this.baseMapper.queryIndicators(id); + if(CollectionUtils.isEmpty(list)){ + return list; + } + indicatorService.fillRating(list); + return list; + } + + public List listByType(Integer templateFreq) { + return this.list(new QueryWrapper().eq("template_freq",templateFreq).eq("status",0)); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttCctvBaseService.java b/src/main/java/com/gunshi/project/ss/service/AttCctvBaseService.java new file mode 100644 index 0000000..589b5d0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttCctvBaseService.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AttCctvBaseMapper; +import com.gunshi.project.ss.model.AttCctvBase; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 视频基本信息表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttCctvBaseService extends ServiceImpl +{ + + public List queryList() { + return this.baseMapper.queryList(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttDamBaseService.java b/src/main/java/com/gunshi/project/ss/service/AttDamBaseService.java new file mode 100644 index 0000000..04f692d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttDamBaseService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AttDamBaseMapper; +import com.gunshi.project.ss.model.AttDamBase; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 大坝表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttDamBaseService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttDamProfileService.java b/src/main/java/com/gunshi/project/ss/service/AttDamProfileService.java new file mode 100644 index 0000000..71941eb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttDamProfileService.java @@ -0,0 +1,55 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.ProfilePressTreeVo; +import com.gunshi.project.ss.mapper.AttDamProfileMapper; +import com.gunshi.project.ss.model.AttDamProfile; +import com.gunshi.project.ss.util.MyBeanUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 监测断面信息表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttDamProfileService extends ServiceImpl +{ + @Resource + private JcskSyBService jcskSyBService; + + @Resource + private JcskSlBService jcskSlBService; + + @Resource + private JcskGnssBService jcskGnssBService; + + + public List tree() { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByAsc(AttDamProfile::getProfileCode); + List list = this.list(queryWrapper); + List res = MyBeanUtil.collectionCopy(list,ProfilePressTreeVo.class); + for(ProfilePressTreeVo vo : res){ + List childrensy = jcskSyBService.getDvcdByProfileCode(vo.getProfileCode()); + vo.setChildren(childrensy); + //List pressList = pressDeviceAutoDao.list(new LambdaQueryWrapper() +// .eq(OsmoticPressDevice::getProfileCode, vo.getProfileCode()).orderByAsc(OsmoticPressDevice::getStationCode)); +// vo.setChildren(pressList.stream().map(OsmoticPressDevice::getStationCode).sorted().collect(Collectors.toList())); + } + return res; + } + + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttGateBService.java b/src/main/java/com/gunshi/project/ss/service/AttGateBService.java new file mode 100644 index 0000000..fd3f90f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttGateBService.java @@ -0,0 +1,51 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.GateMonitorDataVo; +import com.gunshi.project.ss.mapper.AttGateBMapper; +import com.gunshi.project.ss.model.AttGateB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 水闸基本情况调查表 + * author: xusan + * date: 2024-09-26 10:44:06 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttGateBService extends ServiceImpl +{ + @Autowired + private FileAssociationsService fileService; + + public List queryList() { + List list = this.list(); + if(CollectionUtils.isNotEmpty(list)){ + fillAttach(list); + } + return list; + } + + private void fillAttach(List list) { + for (AttGateB record : list) { + record.setFiles(fileService.getFiles(getGroupId(),record.getGateCode())); + } + } + + private String getGroupId() { + return "attGateB"; + } + + public List dataList(String gateCode) { + return this.baseMapper.dataList(gateCode); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttGateValveService.java b/src/main/java/com/gunshi/project/ss/service/AttGateValveService.java new file mode 100644 index 0000000..b35f4fb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttGateValveService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AttGateValveMapper; +import com.gunshi.project.ss.model.AttGateValve; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 闸阀信息表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttGateValveService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttMeaWeirService.java b/src/main/java/com/gunshi/project/ss/service/AttMeaWeirService.java new file mode 100644 index 0000000..a3ddb18 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttMeaWeirService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AttMeaWeirMapper; +import com.gunshi.project.ss.model.AttMeaWeir; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 量水堰表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttMeaWeirService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttResBaseService.java b/src/main/java/com/gunshi/project/ss/service/AttResBaseService.java new file mode 100644 index 0000000..bb656b9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttResBaseService.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AttResBaseMapper; +import com.gunshi.project.ss.model.AttResBase; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库基本信息表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttResBaseService extends ServiceImpl { + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttResBuildingService.java b/src/main/java/com/gunshi/project/ss/service/AttResBuildingService.java new file mode 100644 index 0000000..89466c6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttResBuildingService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AttResBuildingMapper; +import com.gunshi.project.ss.model.AttResBuilding; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库基本信息表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttResBuildingService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttSpillwayBaseService.java b/src/main/java/com/gunshi/project/ss/service/AttSpillwayBaseService.java new file mode 100644 index 0000000..a014971 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttSpillwayBaseService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AttSpillwayBaseMapper; +import com.gunshi.project.ss.model.AttSpillwayBase; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 溢洪道 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttSpillwayBaseService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/AttWaterItemService.java b/src/main/java/com/gunshi/project/ss/service/AttWaterItemService.java new file mode 100644 index 0000000..2b3a9f2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/AttWaterItemService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.AttWaterItemMapper; +import com.gunshi.project.ss.model.AttWaterItem; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水质整编展示项目表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class AttWaterItemService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/BroadcastStationService.java b/src/main/java/com/gunshi/project/ss/service/BroadcastStationService.java new file mode 100644 index 0000000..5741000 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/BroadcastStationService.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.BroadcastStationMapper; +import com.gunshi.project.ss.model.BroadcastStation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 广播预警站 + * author: xusan + * date: 2024-09-25 10:19:15 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class BroadcastStationService extends ServiceImpl +{ + + public BroadcastStation saveData(BroadcastStation dto) { + dto.setId(IdWorker.getId()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderBy(true, false, "order_index"); + BroadcastStation lastOne = super.getOne(queryWrapper, false); + int order = 0; + if (lastOne == null) { + order = 1; + } else { + order = lastOne.getOrderIndex() + 1; + } + dto.setOrderIndex(order); + this.save(dto); + return dto; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/BroadcastTemplateService.java b/src/main/java/com/gunshi/project/ss/service/BroadcastTemplateService.java new file mode 100644 index 0000000..624a21d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/BroadcastTemplateService.java @@ -0,0 +1,40 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.BroadcastTemplateMapper; +import com.gunshi.project.ss.model.BroadcastTemplate; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 广播模板 + * author: xusan + * date: 2024-09-25 10:19:00 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class BroadcastTemplateService extends ServiceImpl +{ + + public BroadcastTemplate saveData(BroadcastTemplate dto) { + dto.setId(IdWorker.getId()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderBy(true, false, "order_index"); + BroadcastTemplate lastOne = super.getOne(queryWrapper, false); + int order = 0; + if (lastOne == null) { + order = 1; + } else { + order = lastOne.getOrderIndex() + 1; + } + dto.setOrderIndex(order); + this.save(dto); + return dto; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/BroadcastWarnService.java b/src/main/java/com/gunshi/project/ss/service/BroadcastWarnService.java new file mode 100644 index 0000000..6496875 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/BroadcastWarnService.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.BroadcastWarnPageSo; +import com.gunshi.project.ss.mapper.BroadcastStationMapper; +import com.gunshi.project.ss.mapper.BroadcastWarnMapper; +import com.gunshi.project.ss.model.BroadcastStation; +import com.gunshi.project.ss.model.BroadcastWarn; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 描述: 广播预警信息 + * author: xusan + * date: 2024-09-25 10:17:54 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class BroadcastWarnService extends ServiceImpl +{ + @Autowired + private BroadcastStationMapper stationMapper; + + public Page pageQuery(BroadcastWarnPageSo page) { + return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); + } + + public Boolean saveData(BroadcastWarn dto) { + String ctrlPass = dto.getCtrlPass(); + List stationIds = dto.getStationIds(); + BroadcastStation broadcastStation = stationMapper.selectById(stationIds.get(0)); + if(!ctrlPass.equals(broadcastStation.getCtrlPass())){ + throw new IllegalArgumentException("密码不正确"); + } + List list = stationIds.stream().map(stationId->{ + BroadcastWarn warn = new BroadcastWarn(); + BeanUtils.copyProperties(dto,warn); + warn.setId(IdWorker.getId()); + warn.setStationId(stationId); + warn.setCreateTime(new Date()); + return warn; + }).collect(Collectors.toList()); + return this.saveBatch(list); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ByLogDetailService.java b/src/main/java/com/gunshi/project/ss/service/ByLogDetailService.java new file mode 100644 index 0000000..94e4a68 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ByLogDetailService.java @@ -0,0 +1,16 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ByLogDetailMapper; +import com.gunshi.project.ss.model.ByLogDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ByLogDetailService extends ServiceImpl { + +} diff --git a/src/main/java/com/gunshi/project/ss/service/ByLogService.java b/src/main/java/com/gunshi/project/ss/service/ByLogService.java new file mode 100644 index 0000000..2dcc79c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ByLogService.java @@ -0,0 +1,390 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.ByLogPageSo; +import com.gunshi.project.ss.mapper.ByLogDetailMapper; +import com.gunshi.project.ss.mapper.ByLogMapper; +import com.gunshi.project.ss.model.*; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysUserMapper; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.executor.BatchResult; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.IOException; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ByLogService extends ServiceImpl { + + @Autowired + private ByLogDetailMapper byLogDetailMapper; + + @Autowired + private SysUserMapper sysUserMapper; + + + public boolean update(ByLog dto) { + ByLog byId = getById(dto.getId()); + if(Objects.isNull(byId)){ + throw new IllegalArgumentException("该日志不存在,请检查"); + } + boolean save = updateById(dto); + List byLogDetails = dto.getDetails(); + byLogDetails.forEach(detail -> { + detail.setId(IdWorker.getId()); + detail.setByLogId(dto.getId()); + }); + LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); + //先删除,再新增 + queryWrapper2.eq(ByLogDetail::getByLogId, dto.getId()); + int delete = byLogDetailMapper.delete(queryWrapper2); + List insert = byLogDetailMapper.insert(byLogDetails); + return true; + } + + public Page pageQuery(ByLogPageSo pageSo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(pageSo.getLogNmae())){ + queryWrapper.like(ByLog::getLogName, pageSo.getLogNmae()); + } + if(pageSo.getDateTimeRangeSo() != null){ + queryWrapper.ge(ByLog::getPreDate,pageSo.getDateTimeRangeSo().getStart()); + queryWrapper.le(ByLog::getPreDate,pageSo.getDateTimeRangeSo().getEnd()); + } + queryWrapper.orderByDesc(ByLog::getPreDate); + Page byLogPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); + List records = byLogPage.getRecords(); + Iterator iterator = records.iterator(); + while(iterator.hasNext()){ + //这么做的原因是因为,没有做字段冗余,设计存在缺陷T.T(my question,I am badly boy 后面维护的人看见这段代码应该想打死我吧,) + ByLog record = iterator.next(); + //如果细节数据没有,那么主体数据也就不用显示,调用remove方法 + List query = byLogDetailMapper.selectDetail(record.getId(),pageSo); + if(query.isEmpty()){ + iterator.remove(); + continue; + } + //这里要显示全部数据 + List details = byLogDetailMapper.selectDetail(record.getId(), null); + for (ByLogDetail detail : details) { + if(detail.getPrePersonId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(detail.getPrePersonId())); + if(sysUser != null){ + detail.setPrePerson(sysUser.getNickName()); + } + } + } + record.setDetails(details); + } + return byLogPage; + } + + public List selectByIds(List ids) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(ByLog::getId, ids); + List byLogs = this.baseMapper.selectList(queryWrapper); + byLogs.stream().forEach(o ->{ + List details = byLogDetailMapper.selectDetailList(o.getId()); + for (ByLogDetail detail : details) { + if(detail.getPrePersonId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(detail.getPrePersonId())); + if(sysUser != null){ + detail.setPrePerson(sysUser.getNickName()); + } + } + } + o.setDetails(details); + }); + return byLogs; + } + // 核心导出方法(无冗余) + public void exportToExcel(List byLogs, HttpServletResponse response) { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("白蚁防治日志"); + + // 1. 合并创建所有样式(原5个样式方法→1个) + StyleGroup styles = createAllStyles(workbook); + + // 2. 创建标题行(逻辑不变) + createHeaderRow(sheet, styles.headerStyle); + + // 3. 填充数据(序号计数器直接在循环内维护,减少参数传递) + fillDataWithMerge(sheet, styles, byLogs); + + // 4. 调整列宽(逻辑不变) + adjustColumnWidth(sheet); + + // 5. 响应处理(逻辑不变) + String fileName = "白蚁-日志管理" + System.currentTimeMillis(); + try { + setResponseHeaders(response, fileName); + workbook.write(response.getOutputStream()); + workbook.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public boolean saveData(ByLog dto) { + dto.setId(IdWorker.getId()); + List byLogDetails = dto.getDetails(); + byLogDetails.forEach(detail -> { + detail.setId(IdWorker.getId()); + detail.setByLogId(dto.getId()); + }); + boolean save = save(dto); + List insert = byLogDetailMapper.insert(byLogDetails); + return true; + } + + + private static class StyleGroup { + CellStyle headerStyle; + CellStyle dataStyle; + CellStyle detailStyle; + CellStyle dateStyle; + CellStyle dateTimeStyle; // 原分散创建,现在统一封装 + + StyleGroup(CellStyle headerStyle, CellStyle dataStyle, CellStyle detailStyle, + CellStyle dateStyle, CellStyle dateTimeStyle) { + this.headerStyle = headerStyle; + this.dataStyle = dataStyle; + this.detailStyle = detailStyle; + this.dateStyle = dateStyle; + this.dateTimeStyle = dateTimeStyle; + } + } + + // 统一创建所有样式(原createHeaderStyle/createDataStyle等合并) + private StyleGroup createAllStyles(Workbook workbook) { + // 1. 基础数据样式 + CellStyle dataStyle = workbook.createCellStyle(); + dataStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中 + dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); //垂直剧中 + //为单元格添加 上 下 左 右 细边框 + dataStyle.setBorderBottom(BorderStyle.THIN); + dataStyle.setBorderTop(BorderStyle.THIN); + dataStyle.setBorderLeft(BorderStyle.THIN); + dataStyle.setBorderRight(BorderStyle.THIN); + + // 2. 表头样式 + CellStyle headerStyle = workbook.createCellStyle(); + headerStyle.cloneStyleFrom(dataStyle); + Font headerFont = workbook.createFont(); + headerFont.setBold(true);//字体加粗 + headerFont.setFontHeightInPoints((short) 12); //字体大小 + headerStyle.setFont(headerFont); + //表头背景颜色 + headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + + // 3. 详情样式 + CellStyle detailStyle = workbook.createCellStyle(); + detailStyle.cloneStyleFrom(dataStyle); + detailStyle.setAlignment(HorizontalAlignment.LEFT); + detailStyle.setWrapText(true); // 自动换行 + + // 4. 日期样式 + CreationHelper createHelper = workbook.getCreationHelper(); + CellStyle dateStyle = workbook.createCellStyle(); + dateStyle.cloneStyleFrom(dataStyle); + dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd")); + + // 5. 日期时间样式 + CellStyle dateTimeStyle = workbook.createCellStyle(); + dateTimeStyle.cloneStyleFrom(dataStyle); + dateTimeStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss")); + + return new StyleGroup(headerStyle, dataStyle, detailStyle, dateStyle, dateTimeStyle); + } + + private void createHeaderRow(Sheet sheet, CellStyle headerStyle) { + Row headerRow = sheet.createRow(0); + String[] headers = { + "序号", "日志名称", "防治日期", "填报时间", "总费用(元)", "备注", + "防治部位", "防治点", "防治人员", "防治方法", "防治效果" + }; + for (int i = 0; i < headers.length; i++) { + Cell cell = headerRow.createCell(i);//创建表头单元格 + cell.setCellValue(headers[i]);//单元格复制 + cell.setCellStyle(headerStyle);//应用表头样式 + } + } + + private void fillDataWithMerge(Sheet sheet, StyleGroup styles, List dataList) { + int currentRow = 1; + int logSerialNumber = 1; // 序号 + + for (ByLog log : dataList) {//遍历日志信息 + //获取当前日志细节(用于后续单元格合并) + int detailCount = log.getDetails() != null ? log.getDetails().size() : 0; + // 计算需要合并的单元格行数 + int rowSpan = Math.max(detailCount, 1); + Row row = sheet.createRow(currentRow); + // 1. 序号 + Cell cell0 = row.createCell(0); + cell0.setCellValue(logSerialNumber); + cell0.setCellStyle(styles.dataStyle); + //判断是否需要合并单元格 + if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 0, 0)); + + // 2. 日志名称 + Cell cell1 = row.createCell(1); + cell1.setCellValue(log.getLogName() != null ? log.getLogName() : ""); + cell1.setCellStyle(styles.dataStyle); + if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 1, 1)); + + // 3. 防治日期 + Cell cell2 = row.createCell(2); + if (log.getPreDate() != null) { + cell2.setCellValue(log.getPreDate()); + cell2.setCellStyle(styles.dateStyle); + } else { + cell2.setCellValue(""); + cell2.setCellStyle(styles.dataStyle); + } + if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 2, 2)); + + // 4. 填报时间 + Cell cell3 = row.createCell(3); + if (log.getFillTime() != null) { + cell3.setCellValue(log.getFillTime()); + cell3.setCellStyle(styles.dateTimeStyle); // 精简:不再临时创建样式 + } else { + cell3.setCellValue(""); + cell3.setCellStyle(styles.dataStyle); + } + if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 3, 3)); + + // 5. 总费用 + Cell cell4 = row.createCell(4); + CellStyle currencyStyle = sheet.getWorkbook().createCellStyle(); + currencyStyle.cloneStyleFrom(styles.dataStyle); + currencyStyle.setDataFormat((short) 0x27); // 货币格式 + if (log.getTotalCost() != null) { + cell4.setCellValue(log.getTotalCost().doubleValue()); + } else { + cell4.setCellValue(0); + } + cell4.setCellStyle(currencyStyle); + if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 4, 4)); + Cell cell5 = row.createCell(5); + cell5.setCellValue(log.getRemark() != null ? log.getRemark() : ""); + cell5.setCellStyle(styles.dataStyle); + if (rowSpan > 1) sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow + rowSpan - 1, 5, 5)); + + //填充日志详细数据 + if (detailCount > 0) { + fillDetailInfo(row, log.getDetails().get(0), styles.detailStyle); + for (int i = 1; i < detailCount; i++) { + Row detailRow = sheet.createRow(currentRow + i); + for (int col = 0; col <= 5; col++) { + Cell emptyCell = detailRow.createCell(col); + emptyCell.setCellValue(""); + if (col == 2) { + emptyCell.setCellStyle(styles.dateStyle); // 防治日期列:用日期样式 + } else if (col == 3) { + emptyCell.setCellStyle(styles.dateTimeStyle); // 填报时间列:用日期时间样式 + } else if (col == 4) { + emptyCell.setCellStyle(currencyStyle); // 总费用列:用货币样式 + } else { + emptyCell.setCellStyle(styles.dataStyle); // 其他列:用基础数据样式 + } + } + fillDetailInfo(detailRow, log.getDetails().get(i), styles.detailStyle); + } + } else { + for (int i = 6; i <= 10; i++) { + Cell cell = row.createCell(i); + cell.setCellValue(""); + cell.setCellStyle(styles.detailStyle); + } + } + + currentRow += rowSpan; + logSerialNumber++; // 序号自增 + } + } + + private void fillDetailInfo(Row row, ByLogDetail detail, CellStyle style) { + createCell(row, 6, detail.getPpdn(), style); // 防治部位 + createCell(row, 7, detail.getPpn(), style); // 防治点 + createCell(row, 8, detail.getPrePerson(), style); // 防治人员 + createCell(row, 9, detail.getPreMethod(), style); // 防治方法 + createCell(row, 10, detail.getPreEffect(), style); // 防治效果 + } + + private void createCell(Row row, int column, Object value, CellStyle style) { + Cell cell = row.createCell(column); + if (value == null) { + cell.setCellValue(""); + } else if (value instanceof String) { + cell.setCellValue((String) value); + } else if (value instanceof Number) { + // 精简:合并Long/Integer处理(Number是它们的父类) + cell.setCellValue(value.toString()); + } else if (value instanceof BigDecimal) { + cell.setCellValue(((BigDecimal) value).doubleValue()); + } else if (value instanceof Date) { + cell.setCellValue((Date) value); + // 日期样式统一(复用StyleGroup逻辑,此处简化) + CellStyle dateCellStyle = row.getSheet().getWorkbook().createCellStyle(); + dateCellStyle.cloneStyleFrom(style); + dateCellStyle.setDataFormat(row.getSheet().getWorkbook().getCreationHelper() + .createDataFormat().getFormat("yyyy-MM-dd")); + cell.setCellStyle(dateCellStyle); + } else { + cell.setCellValue(value.toString()); + } + cell.setCellStyle(style); + } + + // 列宽调整(逻辑不变) + private void adjustColumnWidth(Sheet sheet) { + int[] columnWidths = { + 8 * 256, // 序号 + 25 * 256, // 日志名称 + 15 * 256, // 防治日期 + 25 * 256, // 填报时间 + 15 * 256, // 总费用 + 30 * 256, // 备注 + 20 * 256, // 防治部位 + 20 * 256, // 防治点 + 15 * 256, // 防治人员 + 20 * 256, // 防治方法 + 15 * 256 // 防治效果 + }; + for (int i = 0; i < columnWidths.length; i++) { + sheet.setColumnWidth(i, columnWidths[i]); + } + } + + // 响应头设置(逻辑不变) + private void setResponseHeaders(HttpServletResponse response, String fileName) throws IOException { + String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8) + .replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", + "attachment; filename=\"" + encodedFileName + ".xlsx\""); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ByPlanDetailService.java b/src/main/java/com/gunshi/project/ss/service/ByPlanDetailService.java new file mode 100644 index 0000000..04901a9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ByPlanDetailService.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ByPlanDetailMapper; +import com.gunshi.project.ss.model.ByPlanDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ByPlanDetailService extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/ss/service/ByPlanService.java b/src/main/java/com/gunshi/project/ss/service/ByPlanService.java new file mode 100644 index 0000000..c3401c6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ByPlanService.java @@ -0,0 +1,106 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.ByPlanPageSo; +import com.gunshi.project.ss.mapper.ByPlanDetailMapper; +import com.gunshi.project.ss.mapper.ByPlanMapper; +import com.gunshi.project.ss.model.ByPlan; +import com.gunshi.project.ss.model.ByPlanDetail; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysUserMapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.executor.BatchResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Iterator; +import java.util.List; +import java.util.Objects; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ByPlanService extends ServiceImpl { + + @Autowired + private ByPlanDetailMapper byPlanDetailMapper; + + @Autowired + private ByPlanDetailService byPlanDetailService; + + @Autowired + private SysUserMapper sysUserMapper; + + public boolean update(ByPlan dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ByPlan::getPlanId, dto.getPlanId()); + ByPlan one = getOne(queryWrapper); + if(Objects.isNull(one)){ + throw new RuntimeException("该计划不存在,请检查"); + } + boolean save = updateById(dto); + List byPlanDetail = dto.getByPlanDetail(); + if(byPlanDetail == null || byPlanDetail.isEmpty()){ + throw new IllegalArgumentException("防止部位至少需要一条数据"); + } + byPlanDetail.forEach(detail -> { + detail.setId(IdWorker.getId()); + detail.setPlanId(dto.getPlanId()); + }); + LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); + //先删除,再新增 + queryWrapper2.eq(ByPlanDetail::getPlanId, dto.getPlanId()); + int delete = byPlanDetailMapper.delete(queryWrapper2); + List insert = byPlanDetailMapper.insert(byPlanDetail); + return true; + } + + public Page pageQuery(ByPlanPageSo dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(dto.getPlanName())){ + queryWrapper.like(ByPlan::getPlanName,dto.getPlanName()); + } + queryWrapper.orderByDesc(ByPlan::getPlanDateStart); + Page byPlanPage = baseMapper.selectPage(dto.getPageSo().toPage(), queryWrapper); + List records = byPlanPage.getRecords(); + Iterator iterator = records.iterator(); + while(iterator.hasNext()){ + ByPlan entity = iterator.next(); + List query = byPlanDetailMapper.selectList(entity.getPlanId(),dto); + //如果preDetailName不为空的情况下,且details为空,那么就去掉这个主数据 + if (!StringUtils.isBlank(dto.getPreDetailName()) && query.isEmpty()) { + iterator.remove(); + continue; + } + List details = byPlanDetailMapper.selectList(entity.getPlanId(), null); + entity.setByPlanDetail(details); + //根据用户id查询用户名称 + if(entity.getUserId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(entity.getUserId())); + if(sysUser != null){ + entity.setUserName(sysUser.getNickName()); + } + } + } + return byPlanPage; + } + + public boolean saveData(ByPlan dto) { + dto.setId(IdWorker.getId()); + List byPlanDetail = dto.getByPlanDetail(); + boolean save = save(dto); + byPlanDetail.forEach(detail -> { + detail.setId(IdWorker.getId()); + }); + if(save){ + byPlanDetailService.saveBatch(byPlanDetail); + } + return true; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/BzDictRelService.java b/src/main/java/com/gunshi/project/ss/service/BzDictRelService.java new file mode 100644 index 0000000..1a0bdce --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/BzDictRelService.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.BzDictRelMapper; +import com.gunshi.project.ss.model.BzDictRel; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 业务关联字典 + * author: xusan + * date: 2024-08-28 10:05:21 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class BzDictRelService extends ServiceImpl +{ + public void saveRel(List result, Long id,String groupId) { + if (CollectionUtils.isNotEmpty(result)) { + result.stream().forEach(rel->{ + rel.setId(IdWorker.getId()); + if(id != null){ + rel.setBusinessId(id); + } + rel.setGroupId(groupId); + }); + this.saveBatch(result); + } + } + + public void deleteRel(Long id) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(BzDictRel::getBusinessId,id); + this.remove(queryWrapper); + } + + public void updateRel(List result, Long id,String groupId) { + deleteRel(id); + saveRel(result,id,groupId); + } + + public void removeByBzIds(List detailIds) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.in(BzDictRel::getBusinessId,detailIds); + this.remove(queryWrapper); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/CctvBMenuService.java b/src/main/java/com/gunshi/project/ss/service/CctvBMenuService.java new file mode 100644 index 0000000..b089354 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/CctvBMenuService.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.CctvBMenuMapper; +import com.gunshi.project.ss.model.CctvBMenu; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 视频点目录 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class CctvBMenuService extends ServiceImpl +{ + + public List tree() { + List list = list(); + if (CollectionUtils.isEmpty(list)){ + return list; + } + + Map> listMap = list.stream().collect(Collectors.groupingBy(CctvBMenu::getParentId)); + + list.forEach(o -> o.setChildren(listMap.get(o.getId()))); + List parentList = list.stream().filter(o -> 0L == o.getParentId()).collect(Collectors.toList()); + return sorted(parentList); + } + + + private List sorted( List tree) { + + List sorteds = null; + + if (CollectionUtils.isNotEmpty(tree)){ + sorteds = tree.stream().sorted(Comparator.comparing(CctvBMenu::getOrderIndex) + ).collect(Collectors.toList()); + sorteds.forEach(o->{ + o.setChildren(sorted(o.getChildren())); + }); + } + + return sorteds; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/CurrentFormAnalysisService.java b/src/main/java/com/gunshi/project/ss/service/CurrentFormAnalysisService.java new file mode 100644 index 0000000..395b28d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/CurrentFormAnalysisService.java @@ -0,0 +1,106 @@ +package com.gunshi.project.ss.service; + +import cn.hutool.core.bean.BeanUtil; +import com.gunshi.project.ss.entity.so.RainfallAnalysisSo; +import com.gunshi.project.ss.entity.so.RealRainBaseSo; +import com.gunshi.project.ss.entity.vo.RainfallAnalysisVo; +import com.gunshi.project.ss.entity.vo.RealRainListVo; +import com.gunshi.project.ss.entity.vo.RealRainStatListVo; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * TODO + * + * @ClassName CurrentFormAnalysisService + * @Author Huang Qianxiang + * @Date 2024/3/12 16:19 + */ +@Service +@Slf4j +public class CurrentFormAnalysisService { + @Resource + private RealRainService realRainService; + + + /** + * 当前形势分析-降雨分析 + * @param rainfallAnalysisSo + * @return + */ + public Map> rainfallAnalysis(RainfallAnalysisSo rainfallAnalysisSo){ + + Date etm = new Date(); + Date stm = new Date(etm.getTime() - rainfallAnalysisSo.getTimeType() * 60 * 60*1000); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String etmStr = df.format(etm); + String stmStr = df.format(stm); + + RealRainBaseSo realRainBaseSo = new RealRainBaseSo(); + realRainBaseSo.setStm(stmStr); + realRainBaseSo.setEtm(etmStr); + realRainBaseSo.setSource(rainfallAnalysisSo.getSource()); + realRainBaseSo.setTimeType(rainfallAnalysisSo.getTimeType()); + + List realRainList = realRainService.getRealRainList(realRainBaseSo); + + realRainList = realRainList.stream().filter(t -> Objects.nonNull(t.getRainTag())).collect(Collectors.toList()); + + List analysisVos = new ArrayList<>(); + for (RealRainListVo realRainListVo : realRainList) { + RainfallAnalysisVo rainfallAnalysisVo = new RainfallAnalysisVo(); + BeanUtil.copyProperties(realRainListVo,rainfallAnalysisVo); + // 4 + if (realRainListVo.getRainTag() >= 4){ + rainfallAnalysisVo.setLevel(realRainListVo.getRainTag()-4); + analysisVos.add(rainfallAnalysisVo); + } + } + + Map> map = realRainService.getRealRainStatLevel(realRainBaseSo); + + List realRainStatListVos = new ArrayList<>(); + if (map.get(4) != null){ + realRainStatListVos.addAll(map.get(4)); + } + if (map.get(5) != null){ + realRainStatListVos.addAll(map.get(5)); + } + + for (RealRainStatListVo realRainStatListVo : realRainStatListVos) { + RainfallAnalysisVo rainfallAnalysisVo = new RainfallAnalysisVo(); + BeanUtil.copyProperties(realRainStatListVo,rainfallAnalysisVo); + if (rainfallAnalysisSo.getTimeType() == 3) { + rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH3()); + } else if (rainfallAnalysisSo.getTimeType() == 6) { + rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH6()); + } else if (rainfallAnalysisSo.getTimeType() == 12) { + rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH12()); + } else if (rainfallAnalysisSo.getTimeType() == 24) { + rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH24()); + } else { + rainfallAnalysisVo.setLevel(realRainStatListVo.getFreqH1()); + } + analysisVos.add(rainfallAnalysisVo); + } + + Map> map1 = analysisVos.stream().collect( + Collectors.groupingBy(RainfallAnalysisVo::getLevel, Collectors.toList()) + ); + + for (int i = 0; i <= 4; i++) { + if (map1.get(i) == null){ + map1.put(i, Lists.newArrayList()); + } + } + return map1; + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/service/DeptempService.java b/src/main/java/com/gunshi/project/ss/service/DeptempService.java new file mode 100644 index 0000000..fa6d760 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/DeptempService.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.service; + +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysDeptMapper; +import com.ruoyi.system.mapper.SysUserMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 描述: APP版本记录 + * author: xusan + * date: 2024-11-12 10:14:50 + */ +@Service +@Slf4j +public class DeptempService{ + @Autowired + private SysDeptMapper deptMapper; + + @Autowired + private SysUserMapper userMapper; + + public List selectUserList(SysUser user) + { + return userMapper.selectUserList(user); + } + + public List selectDeptList(SysDept dept) + { + return deptMapper.selectDeptList(dept); + } + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/DispatchRecordService.java b/src/main/java/com/gunshi/project/ss/service/DispatchRecordService.java new file mode 100644 index 0000000..64c0dc3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/DispatchRecordService.java @@ -0,0 +1,127 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +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.gunshi.project.ss.entity.so.DispatchRecordPageSo; +import com.gunshi.project.ss.entity.vo.DispatchRecordVo; +import com.gunshi.project.ss.mapper.DispatchRecordMapper; +import com.gunshi.project.ss.model.DispatchRecord; +import com.gunshi.project.ss.util.ExcelUtil; +import com.gunshi.project.ss.util.MyBeanUtil; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysUserMapper; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 调度记录 + * author: xusan + * date: 2024-10-09 09:56:28 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class DispatchRecordService extends ServiceImpl +{ + @Autowired + private FileAssociationsService fileService; + + @Autowired + private SysUserMapper sysUserMapper; + + public Page pageQuery(DispatchRecordPageSo page) { + Page res = this.page(page.getPageSo().toPage(), commonWrapper(page)); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + for (DispatchRecord record : res.getRecords()) { + if(record.getOpUserId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(record.getOpUserId()); + if(sysUser != null){ + record.setOpUserName(sysUser.getNickName()); + } + } + } + } + return res; + } + + private void fillAttach(List ret) { + for (DispatchRecord record : ret) { + record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); + } + } + + private LambdaQueryWrapper commonWrapper(DispatchRecordPageSo page){ + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + if(StringUtils.isNotEmpty(page.getOpUserName())){ + wrapper.like(DispatchRecord::getOpUserName,page.getOpUserName()); + } + if(page.getStatus() != null){ + wrapper.eq(DispatchRecord::getStatus,page.getStatus()); + } + if(page.getDateTimeSo() != null && page.getDateTimeSo().getStart() != null){ + wrapper.gt(DispatchRecord::getStartTime,page.getDateTimeSo().getStart()); + } + if(page.getDateTimeSo() != null && page.getDateTimeSo().getEnd() != null){ + wrapper.lt(DispatchRecord::getStartTime,page.getDateTimeSo().getEnd()); + } + wrapper.orderByDesc(DispatchRecord::getStartTime); + return wrapper; + } + + public void export(DispatchRecordPageSo page, HttpServletResponse response) { + List list = this.list(commonWrapper(page)); + for (DispatchRecord record : list) { + if(record.getOpUserId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(record.getOpUserId()); + if(sysUser != null){ + record.setOpUserName(sysUser.getNickName()); + } + } + } + List dispatchRecordVos = MyBeanUtil.collectionCopy(list, DispatchRecordVo.class); + ExcelUtil.exportExcel(dispatchRecordVos,"调度指令", DispatchRecordVo.class,response,"调度指令"); + } + + public DispatchRecord saveData(DispatchRecord dto) { + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + this.save(dto); + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + return dto; + } + + public String getGroupId() { + return "dispatchRecord"; + } + + public DispatchRecord updateData(DispatchRecord dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public Boolean delData(List ids) { + fileService.removeByBzIds(ids.stream().map(Objects::toString).collect(Collectors.toList())); + return this.removeBatchByIds(ids); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/FileAssociationsService.java b/src/main/java/com/gunshi/project/ss/service/FileAssociationsService.java new file mode 100644 index 0000000..64838a6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/FileAssociationsService.java @@ -0,0 +1,252 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.FileAssociationsMapper; +import com.gunshi.project.ss.model.FileAssociations; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.compress.utils.Lists; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static com.gunshi.project.ss.entity.MyConstant.*; + + +/** + * 描述: 文件关联业务表 + * author: xusan + * date: 2024-07-17 10:09:40 + */ +@Slf4j +@Service +@Transactional +public class FileAssociationsService extends ServiceImpl { + + private static final String THIS_REDIS_KEY = REDIS_KEY + FileAssociations.thisTableName + ":"; + + @CacheEvict(value = THIS_REDIS_KEY, key = "#p1 +':*'", allEntries = true) + public void saveFile(List files, String tableName, String businessId) { + if (CollectionUtils.isEmpty(files)) { + log.info("fileIds is null!"); + } + + // 查询是否添加 + List dbList = this.lambdaQuery() + .eq(FileAssociations::getTableName, tableName) + .eq(FileAssociations::getBusinessId, businessId) + .eq(FileAssociations::getDel, REC) + .list(); + + if (CollectionUtils.isNotEmpty(dbList)) { + Set fileIds = dbList.stream().map(FileAssociations::getFileId) + .collect(Collectors.toSet()); + // 删除已添加数据, 删除重复数据 删除不成功即新数据 + files = files.stream() + .filter(fileAssociations -> !fileIds.remove(fileAssociations.getFileId())) + .collect(Collectors.toList()); + +// if (CollectionUtils.isNotEmpty(files)) { + + // 删除 + if (CollectionUtils.isNotEmpty(fileIds) && this.lambdaUpdate() + .set(FileAssociations::getDel, DEL) + .eq(FileAssociations::getTableName, tableName) + .eq(FileAssociations::getBusinessId, businessId) + .in(FileAssociations::getFileId, fileIds) + .update()) { + log.info("delete file {} success!", fileIds); + } + +// } + } + + + // 做新增 + if (CollectionUtils.isNotEmpty(files)) { + + files.forEach(fileId -> { + fileId.setId(IdWorker.getId()); + fileId.setTableName(tableName); + fileId.setBusinessId(businessId); + }); + + if (!this.saveBatch(files)) { + log.error("save file error!"); + } + + } + + } + + @CacheEvict(value = THIS_REDIS_KEY, key = "#p1 +':*'", allEntries = true) + public void saveFile(List files, String tableName, String businessId, String type) { + if (CollectionUtils.isEmpty(files)) { + log.info("fileIds is null!"); + files = Lists.newArrayList(); + } + + // 查询是否添加 + List dbList = this.lambdaQuery() + .eq(FileAssociations::getTableName, tableName) + .eq(FileAssociations::getBusinessId, businessId) + .eq(FileAssociations::getType, type) + .eq(FileAssociations::getDel, REC) + .list(); + + if (CollectionUtils.isNotEmpty(dbList)) { + Set fileIds = dbList.stream().map(FileAssociations::getFileId) + .collect(Collectors.toSet()); + // 删除已添加数据, 删除重复数据 删除不成功即新数据 + files = files.stream() + .filter(fileAssociations -> !fileIds.remove(fileAssociations.getFileId())) + .collect(Collectors.toList()); + +// if (CollectionUtils.isNotEmpty(files)) { + + // 删除 + if (CollectionUtils.isNotEmpty(fileIds) && this.lambdaUpdate() + .set(FileAssociations::getDel, DEL) + .eq(FileAssociations::getTableName, tableName) + .eq(FileAssociations::getBusinessId, businessId) + .eq(FileAssociations::getType, type) + .in(FileAssociations::getFileId, fileIds) + .update()) { + log.info("delete file {} success!", fileIds); + } + +// } + } + + + // 做新增 + if (CollectionUtils.isNotEmpty(files)) { + + files.forEach(fileId -> { + fileId.setId(IdWorker.getId()); + fileId.setTableName(tableName); + fileId.setType(type); + fileId.setBusinessId(businessId); + }); + + if (!this.saveBatch(files)) { + log.error("save file error!"); + } + + } + + } + + + @CacheEvict(value = THIS_REDIS_KEY, key = "#p1 +':*'", allEntries = true) + public void saveFileNotDel(List files, String tableName, String businessId, String type) { + + // 查询是否添加 + List dbList = this.lambdaQuery() + .eq(FileAssociations::getTableName, tableName) + .eq(FileAssociations::getBusinessId, businessId) + .eq(FileAssociations::getType, type) + .eq(FileAssociations::getDel, REC) + .list(); + + if (CollectionUtils.isEmpty(files) && CollectionUtils.isNotEmpty(dbList)) { + log.info("fileIds is null!"); + Set fileIds = dbList.stream().map(FileAssociations::getFileId) + .collect(Collectors.toSet()); + // 删除 + if (this.lambdaUpdate() + .set(FileAssociations::getDel, DEL) + .eq(FileAssociations::getTableName, tableName) + .eq(FileAssociations::getBusinessId, businessId) + .eq(FileAssociations::getType, type) + .in(FileAssociations::getFileId, fileIds) + .update()) { + log.info("delete file {} success!", fileIds); + return; + } + } + + + // 做新增 + if (CollectionUtils.isNotEmpty(files)) { + + files.forEach(fileId -> { + fileId.setId(IdWorker.getId()); + fileId.setTableName(tableName); + fileId.setType(type); + fileId.setBusinessId(businessId); + }); + + if (!this.saveBatch(files)) { + log.error("save file error!"); + } + + } + + } + + @CacheEvict(value = THIS_REDIS_KEY, key = "#p0 +':*'", allEntries = true) + public void deleteFile(String tableName, String businessId) { + // 删除 + if (this.lambdaUpdate() + .set(FileAssociations::getDel, DEL) + .eq(FileAssociations::getTableName, tableName) + .eq(FileAssociations::getBusinessId, businessId) + .update()) { + log.info("delete file {} success!", businessId); + } + } + + @Cacheable(value = THIS_REDIS_KEY, key = "#p0 +':'+ #p1", unless = "false") + public List getFiles(String tName, String bId) { + return this.baseMapper.getFiles(tName,bId); + } + + public List getFiles2(String tName, String bId) { + return this.baseMapper.getFiles2(tName,bId); + } + + + @Cacheable(value = THIS_REDIS_KEY, key = "#p0 +':'+ #p1 +':'+ #p2", unless = "false") + public List getFiles(String tName, String bId,String num) { + return this.baseMapper.getFiles1(tName,bId,num); + } + + public void save(List attachList,String businessId, String tableName,String type) { + if (attachList != null && !attachList.isEmpty()) { + for (FileAssociations attach : attachList) { + attach.setId(IdWorker.getId()); + if(StringUtils.isNotEmpty(businessId)){ + attach.setBusinessId(businessId); + } + attach.setTableName(tableName); + attach.setType(type); + } + this.saveBatch(attachList); + } + } + + public boolean removeByBzIdAndType(String businessId, String tableName,String type) { + return this.remove(new QueryWrapper().eq("business_id", businessId).eq("table_name", tableName).eq("type",type)); + } + + public List queryFileList(String businessId, String tableName,String type) { + return this.baseMapper.queryFileList(businessId,tableName,type); + } + + public boolean removeByBzIds(List businessIds) { + return this.remove(new QueryWrapper().in("business_id", businessIds)); + } + + public List getFilesByIds(List ids) { + return this.baseMapper.getFilesByIds(ids); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastDispatchCommandService.java b/src/main/java/com/gunshi/project/ss/service/ForecastDispatchCommandService.java new file mode 100644 index 0000000..c46fd96 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastDispatchCommandService.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ForecastDispatchCommandMapper; +import com.gunshi.project.ss.model.ForecastDispatchCommand; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 调度指令表 + * author: xusan + * date: 2024-12-19 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastDispatchCommandService extends ServiceImpl { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastDispatchPlanService.java b/src/main/java/com/gunshi/project/ss/service/ForecastDispatchPlanService.java new file mode 100644 index 0000000..7f41fa1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastDispatchPlanService.java @@ -0,0 +1,453 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.ForecastDispatchPlanPageSo; +import com.gunshi.project.ss.mapper.ForecastDispatchPlanMapper; +import com.gunshi.project.ss.model.ForecastDispatchCommand; +import com.gunshi.project.ss.model.ForecastDispatchPlan; +import com.gunshi.project.ss.model.ForecastDispatchResult; +import com.gunshi.project.ss.model.ResPlanB; +import com.ruoyi.common.utils.StringUtils; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.*; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * 描述: 调度方案主表 + * author: xusan + * date: 2024-12-19 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastDispatchPlanService extends ServiceImpl { + + @Autowired + private ForecastDispatchPlanMapper forecastDispatchPlanMapper; + + @Autowired + private ForecastDispatchResultService forecastDispatchResultService; + + @Autowired + private ForecastDispatchCommandService forecastDispatchCommandService; + + @Autowired + private ResPlanBService resPlanBService; + + public Page pageDetail(ForecastDispatchPlanPageSo pageSo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(pageSo.getPlanName())){ + queryWrapper.like(ForecastDispatchPlan::getPlanName, pageSo.getPlanName()); + } + queryWrapper.orderByDesc(ForecastDispatchPlan::getCreateTime); + Page forecastDispatchPlanPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); + for (ForecastDispatchPlan record : forecastDispatchPlanPage.getRecords()) { + List forecastDispatchCommandList = forecastDispatchCommandService.lambdaQuery().eq(ForecastDispatchCommand::getPlanId, record.getId()).list(); + record.setForecastDispatchCommands(forecastDispatchCommandList); + ForecastDispatchResult forecastDispatchResult = forecastDispatchResultService.lambdaQuery().eq(ForecastDispatchResult::getPlanId, record.getId()).one(); + record.setForecastDispatchResult(forecastDispatchResult); + if(record.getResPlanBId() != null){ + ResPlanB byId = resPlanBService.getById(record.getResPlanBId()); + if(byId != null){ + record.setResPlanBName(byId.getPlanName()); + } + } + } + + return forecastDispatchPlanPage; + } + + public List selectByIds(List ids) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(ForecastDispatchPlan::getId, ids); + List forecastDispatchPlans = this.baseMapper.selectList(queryWrapper); + for (ForecastDispatchPlan record : forecastDispatchPlans) { + List forecastDispatchCommandList = forecastDispatchCommandService.lambdaQuery().eq(ForecastDispatchCommand::getPlanId, record.getId()).list(); + record.setForecastDispatchCommands(forecastDispatchCommandList); + ForecastDispatchResult forecastDispatchResult = forecastDispatchResultService.lambdaQuery().eq(ForecastDispatchResult::getPlanId, record.getId()).one(); + record.setForecastDispatchResult(forecastDispatchResult); + if(record.getResPlanBId() != null){ + ResPlanB byId = resPlanBService.getById(record.getResPlanBId()); + if(byId != null){ + record.setResPlanBName(byId.getPlanName()); + } + } + } + return forecastDispatchPlans; + } + + public Boolean deleteById(Serializable id) { + boolean flag = removeById(id); + if(flag){ + LambdaQueryWrapper eq1 = new LambdaQueryWrapper<>(); + eq1.eq(ForecastDispatchResult::getPlanId, id); + boolean remove = forecastDispatchResultService.remove(eq1); + LambdaQueryWrapper eq2 = new LambdaQueryWrapper<>(); + eq2.eq(ForecastDispatchCommand::getPlanId, id); + boolean remove2 = forecastDispatchCommandService.remove(eq2); + } + return true; + } + + public Boolean saveData(ForecastDispatchPlan dto) { + ForecastDispatchResult forecastDispatchResult = dto.getForecastDispatchResult(); + List forecastDispatchCommands = dto.getForecastDispatchCommands(); + save(dto); + forecastDispatchResult.setPlanId(dto.getId()); + forecastDispatchCommands.stream().forEach(o ->{ + o.setPlanId(dto.getId()); + }); + forecastDispatchResultService.save(forecastDispatchResult); + forecastDispatchCommandService.saveBatch(forecastDispatchCommands); + return true; + } + public void export(List page, HttpServletResponse response) { + // 创建临时目录 + String tempDir = System.getProperty("java.io.tmpdir") + File.separator + "export_" + UUID.randomUUID(); + File dir = new File(tempDir); + if (!dir.exists()) { + dir.mkdirs(); + } + + List excelFiles = new ArrayList<>(); + + try { + // 为每个方案创建Excel文件 + for (int i = 0; i < page.size(); i++) { + ForecastDispatchPlan plan = page.get(i); + File excelFile = createExcelForPlan(plan, tempDir, i + 1); + excelFiles.add(excelFile); + } + + // 创建ZIP压缩包 + String zipFileName = "调度方案数据导出_" + + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + ".zip"; + + // 设置响应头 + response.setContentType("application/zip"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", + "attachment;filename*=utf-8''" + URLEncoder.encode(zipFileName, "UTF-8").replaceAll("\\+", "%20")); + + // 创建ZIP输出流 + ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); + + // 将Excel文件添加到ZIP + for (File excelFile : excelFiles) { + ZipEntry zipEntry = new ZipEntry(excelFile.getName()); + zos.putNextEntry(zipEntry); + + try (FileInputStream fis = new FileInputStream(excelFile)) { + byte[] buffer = new byte[1024]; + int len; + while ((len = fis.read(buffer)) > 0) { + zos.write(buffer, 0, len); + } + } + zos.closeEntry(); + } + + zos.close(); + + } catch (Exception e) { + log.error("导出Excel失败", e); + throw new RuntimeException("导出失败"); + } finally { + // 清理临时文件 + for (File file : excelFiles) { + if (file.exists()) { + file.delete(); + } + } + if (dir.exists()) { + dir.delete(); + } + } + } + + /** + * 为单个调度方案创建Excel文件 + */ + private File createExcelForPlan(ForecastDispatchPlan plan, String tempDir, int index) throws IOException { + // 创建Excel工作簿 + Workbook workbook = new XSSFWorkbook(); + + // 创建单元格样式 + CellStyle headerStyle = createHeaderStyle(workbook); + CellStyle dataStyle = createDataStyle(workbook); + CellStyle titleStyle = createTitleStyle(workbook); + + // 创建Sheet + String sheetName = "调度方案"; + Sheet sheet = workbook.createSheet(sheetName); + + int currentRow = 0; + + // 1. 导出调度方案基本信息 + currentRow = exportPlanBasicInfo(sheet, currentRow, plan, titleStyle, dataStyle); + + // 2. 导出调度结果 + currentRow = exportPlanResult(sheet, currentRow, plan, headerStyle, dataStyle); + + // 3. 导出调度指令 + currentRow = exportPlanCommands(sheet, currentRow, plan, headerStyle, dataStyle); + + // 生成文件名 + String fileName = plan.getPlanName(); + File excelFile = new File(tempDir, fileName + ".xlsx"); + + // 写入文件 + try (FileOutputStream fos = new FileOutputStream(excelFile)) { + workbook.write(fos); + } + + workbook.close(); + + return excelFile; + } + + + /** + * 导出调度方案基本信息(保持原有逻辑) + */ + private int exportPlanBasicInfo(Sheet sheet, int startRow, ForecastDispatchPlan plan, CellStyle titleStyle, CellStyle dataStyle) { + // 方案标题 + Row titleRow = sheet.createRow(startRow++); + Cell titleCell = titleRow.createCell(0); + titleCell.setCellValue("调度方案:" + getStringValue(plan.getPlanName())); + titleCell.setCellStyle(titleStyle); + + // 合并单元格(标题跨5列) + sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), 0, 4)); + + // 基本信息表头 + Row headerRow = sheet.createRow(startRow++); + String[] headers = {"开始时间", "结束时间", "制定时间", "制定人", "水库控制水位(m)"}; + for (int i = 0; i < headers.length; i++) { + Cell cell = headerRow.createCell(i); + cell.setCellValue(headers[i]); + cell.setCellStyle(dataStyle); + sheet.setColumnWidth(i, 5000); + } + + // 基本信息数据 + Row dataRow = sheet.createRow(startRow++); + int colNum = 0; + dataRow.createCell(colNum++).setCellValue(formatDateTime(plan.getStartTm())); + dataRow.createCell(colNum++).setCellValue(formatDateTime(plan.getEndTm())); + dataRow.createCell(colNum++).setCellValue(formatDateTime(plan.getCreateTime())); + dataRow.createCell(colNum++).setCellValue(getStringValue(plan.getCreator())); + dataRow.createCell(colNum).setCellValue(plan.getReservoirControlLevel() != null ? + plan.getReservoirControlLevel().doubleValue() : 0); + + // 设置数据行样式 + for (int i = 0; i < headers.length; i++) { + if (dataRow.getCell(i) != null) { + dataRow.getCell(i).setCellStyle(dataStyle); + } + } + + return startRow; + } + + /** + * 导出调度结果(保持原有逻辑) + */ + private int exportPlanResult(Sheet sheet, int startRow, ForecastDispatchPlan plan, CellStyle headerStyle, CellStyle dataStyle) { + ForecastDispatchResult result = plan.getForecastDispatchResult(); + if (result == null) { + return startRow; + } + + // 结果标题 + Row resultTitleRow = sheet.createRow(startRow++); + Cell resultTitleCell = resultTitleRow.createCell(0); + resultTitleCell.setCellValue("调度结果"); + resultTitleCell.setCellStyle(headerStyle); + + // 合并单元格(结果标题跨7列) + sheet.addMergedRegion(new CellRangeAddress(resultTitleRow.getRowNum(), resultTitleRow.getRowNum(), 0, 6)); + + // 结果表头 + Row resultHeaderRow = sheet.createRow(startRow++); + String[] resultHeaders = { + "最大入库流量(m³/s)", "总入库水量(万m³)", "总出库水量(万m³)", + "最高库水位(m)", "超汛限水位值(m)", "超汛限开始时间", "超汛限结束时间" + }; + for (int i = 0; i < resultHeaders.length; i++) { + Cell cell = resultHeaderRow.createCell(i); + cell.setCellValue(resultHeaders[i]); + cell.setCellStyle(headerStyle); + sheet.setColumnWidth(i, 5000); + } + + // 结果数据 + Row resultDataRow = sheet.createRow(startRow++); + int colNum = 0; + resultDataRow.createCell(colNum++).setCellValue(result.getMaxInflow() != null ? + result.getMaxInflow() + "(" + result.getMaxInflowDate().toString() + ")": ""); + resultDataRow.createCell(colNum++).setCellValue(result.getTotalInflowVolume() != null ? + result.getTotalInflowVolume().doubleValue() : 0); + resultDataRow.createCell(colNum++).setCellValue(result.getTotalOutflowVolume() != null ? + result.getTotalOutflowVolume().doubleValue() : 0); + resultDataRow.createCell(colNum++).setCellValue(result.getMaxReservoirLevel() != null ? + result.getMaxReservoirLevel() +"(" + result.getMaxReservoirLevelDate().toString() +")" : ""); + resultDataRow.createCell(colNum++).setCellValue(result.getExceedLimitValue() != null ? + result.getExceedLimitValue().doubleValue() : 0); + resultDataRow.createCell(colNum++).setCellValue(formatDateTime(result.getExceedLimitStart())); + resultDataRow.createCell(colNum).setCellValue(formatDateTime(result.getExceedLimitEnd())); + + // 设置数据行样式 + for (int i = 0; i < resultHeaders.length; i++) { + if (resultDataRow.getCell(i) != null) { + resultDataRow.getCell(i).setCellStyle(dataStyle); + } + } + + return startRow; + } + + /** + * 导出调度指令(保持原有逻辑) + */ + private int exportPlanCommands(Sheet sheet, int startRow, ForecastDispatchPlan plan, CellStyle headerStyle, CellStyle dataStyle) { + List commands = plan.getForecastDispatchCommands(); + if (commands == null || commands.isEmpty()) { + return startRow; + } + + // 指令标题 + Row commandTitleRow = sheet.createRow(startRow++); + Cell commandTitleCell = commandTitleRow.createCell(0); + commandTitleCell.setCellValue("调度指令"); + commandTitleCell.setCellStyle(headerStyle); + + // 合并单元格(指令标题跨5列) + sheet.addMergedRegion(new CellRangeAddress(commandTitleRow.getRowNum(), commandTitleRow.getRowNum(), 0, 4)); + + // 指令表头 + Row commandHeaderRow = sheet.createRow(startRow++); + String[] commandHeaders = { + "指令时间", "泄洪闸", "节制闸", "分水闸", "输水灌溉闸" + }; + for (int i = 0; i < commandHeaders.length; i++) { + Cell cell = commandHeaderRow.createCell(i); + cell.setCellValue(commandHeaders[i]); + cell.setCellStyle(headerStyle); + sheet.setColumnWidth(i, 5000); + } + + // 指令数据 + for (ForecastDispatchCommand command : commands) { + Row commandDataRow = sheet.createRow(startRow++); + int colNum = 0; + commandDataRow.createCell(colNum++).setCellValue(formatDateTime(command.getCommandTime())); + commandDataRow.createCell(colNum++).setCellValue(getGateStatus(command.getFloodGate())); + commandDataRow.createCell(colNum++).setCellValue(getGateStatus(command.getControlGate())); + commandDataRow.createCell(colNum++).setCellValue(getGateStatus(command.getDiversionGate())); + commandDataRow.createCell(colNum).setCellValue(getGateStatus(command.getIrrigationGate())); + + // 设置数据行样式 + for (int i = 0; i < commandHeaders.length; i++) { + if (commandDataRow.getCell(i) != null) { + commandDataRow.getCell(i).setCellStyle(dataStyle); + } + } + } + + return startRow; + } + + /** + * 创建标题样式(保持原有逻辑) + */ + private CellStyle createTitleStyle(Workbook workbook) { + CellStyle style = workbook.createCellStyle(); + Font font = workbook.createFont(); + font.setBold(true); + font.setFontHeightInPoints((short) 14); + style.setFont(font); + return style; + } + + /** + * 创建表头样式(保持原有逻辑) + */ + private CellStyle createHeaderStyle(Workbook workbook) { + CellStyle style = workbook.createCellStyle(); + Font font = workbook.createFont(); + font.setBold(true); + font.setFontHeightInPoints((short) 12); + style.setFont(font); + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setBorderTop(BorderStyle.THIN); + style.setBorderBottom(BorderStyle.THIN); + style.setBorderLeft(BorderStyle.THIN); + style.setBorderRight(BorderStyle.THIN); + return style; + } + + /** + * 创建数据样式(保持原有逻辑) + */ + private CellStyle createDataStyle(Workbook workbook) { + CellStyle style = workbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.LEFT); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setBorderTop(BorderStyle.THIN); + style.setBorderBottom(BorderStyle.THIN); + style.setBorderLeft(BorderStyle.THIN); + style.setBorderRight(BorderStyle.THIN); + return style; + } + + /** + * 格式化时间(保持原有逻辑) + */ + private String formatDateTime(LocalDateTime dateTime) { + if (dateTime == null) { + return ""; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + return dateTime.format(formatter); + } + + /** + * 获取字符串值(保持原有逻辑) + */ + private String getStringValue(String value) { + return value == null ? "" : value; + } + + /** + * 获取闸门状态文字(保持原有逻辑) + */ + private String getGateStatus(Integer status) { + if (status == null) { + return "关"; + } + return status == 1 ? "开" : "关"; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastDispatchResultService.java b/src/main/java/com/gunshi/project/ss/service/ForecastDispatchResultService.java new file mode 100644 index 0000000..28260d0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastDispatchResultService.java @@ -0,0 +1,20 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ForecastDispatchResultMapper; +import com.gunshi.project.ss.model.ForecastDispatchResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 调度结果表 + * author: xusan + * date: 2024-12-19 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastDispatchResultService extends ServiceImpl { + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastKService.java b/src/main/java/com/gunshi/project/ss/service/ForecastKService.java new file mode 100644 index 0000000..8edaf06 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastKService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ForecastKMapper; +import com.gunshi.project.ss.model.ForecastK; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 预报_前期影响雨量折减系数表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastKService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastPPaRService.java b/src/main/java/com/gunshi/project/ss/service/ForecastPPaRService.java new file mode 100644 index 0000000..cd1b4d3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastPPaRService.java @@ -0,0 +1,151 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ForecastPPaRMapper; +import com.gunshi.project.ss.model.ForecastPPaR; +import com.gunshi.project.ss.model.ForecastUseparam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 预报_降雨径流关系表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastPPaRService extends ServiceImpl +{ + + @Autowired + private ForecastUseparamService forecastUseparamService; + + /** + * @description: 获取列表 + * @return: java.util.List + * @auther: cxw + * @date: 2024-08-07, 周三, 11:11:42 + */ + public List handleList() { + List PPaRList = new ArrayList<>(); + // 获取Im值,限制pa + BigDecimal Im; + Map paramMap = forecastUseparamService.getMap(new QueryWrapper().eq("param_code", "Im")); + if (paramMap != null && paramMap.size() > 0) { + Im = new BigDecimal(paramMap.get("param_value").toString()); + } else { + Im = BigDecimal.valueOf(120.0); + } + List forecastPPaRList = this.list(); + if (CollectionUtils.isNotEmpty(forecastPPaRList)) { + BigDecimal maxPa = forecastPPaRList.stream().map(ForecastPPaR::getPa).reduce(BigDecimal.ZERO, BigDecimal::max); + List pList = forecastPPaRList.stream().map(ForecastPPaR::getPsum).distinct().sorted().collect(Collectors.toList()); + List paList = forecastPPaRList.stream().map(ForecastPPaR::getPa).distinct().sorted().collect(Collectors.toList()); + Map rSumMap = forecastPPaRList.stream().collect(Collectors.toMap(k -> k.getPsum() + "-" + k.getPa(), value -> value.getRsum())); + // 如果pa最大值超过了Im,截取到Im的 + if (maxPa.compareTo(Im) > 0) { + paList = paList.stream().filter(bd -> bd.compareTo(Im) <= 0).collect(Collectors.toList()); + } + List sList = new ArrayList<>(); + // 先添加第一行的Pa + sList.add("P/R/Pa"); + sList.addAll(paList.stream().map(BigDecimal::toString).collect(Collectors.toList())); + PPaRList.add(sList.toArray(new String[0])); + for (int i = 0; i < pList.size(); i++) { + sList = new ArrayList<>(); + BigDecimal p = pList.get(i); + for (int j = 0; j < paList.size(); j++) { + BigDecimal pa = paList.get(j); + // 每次添加rSum时,先添加p + if (j == 0) { + sList.add(String.valueOf(p)); + } + sList.add(rSumMap.get(p + "-" + pa).stripTrailingZeros().toString()); + } + PPaRList.add(sList.toArray(new String[0])); + } + } + return PPaRList; + } + + /** + * @description: 处理批量保存 + * @param PPaRList + * @return: boolean + * @auther: cxw + * @date: 2024-08-06, 周二, 15:29:29 + */ + public boolean handleSaveBatch(List PPaRList) { + Boolean ret = false; + List paStr = new ArrayList<>(); + List pStr = new ArrayList<>(); + Map rSumMap = new HashMap<>(); + // 行 + for (int i = 0; i < PPaRList.size(); i++) { + String[] paArr = PPaRList.get(i); + String p = ""; + // 列 + for (int j = 0; j < paArr.length; j++) { + String pa = ""; + // 第一行:pa + if(i == 0 && j > 0){ + pa = paArr[j]; + paStr.add(pa); + } + // 第一列:p + if(i > 0 && j == 0){ + p = paArr[j]; + pStr.add(p); + } + // rSumMap:key=P-Pa + if (i > 0 && j > 0) { + rSumMap.put(p + "-" + paStr.get(j - 1), new BigDecimal(paArr[j])); + } + } + } + // 组装数据 + if (paStr.size() > 0 && pStr.size() > 0 && rSumMap.size() > 0) { + List forecastPPaRList = new ArrayList<>(); + // 外层pa + for (String pa : paStr) { + // 循环一次pa,r需要重置 + BigDecimal r = BigDecimal.ZERO; + BigDecimal lastRSum = BigDecimal.ZERO; + // 内层p + for (String p : pStr) { + ForecastPPaR forecastPPaR = new ForecastPPaR(); + BigDecimal rSum = rSumMap.get(p + "-" + pa); + forecastPPaR.setRsum(rSum.stripTrailingZeros()); + forecastPPaR.setPsum(new BigDecimal(p).stripTrailingZeros()); + // 循环累减 + r = rSum.subtract(lastRSum); + // 赋值 + lastRSum = rSum; + forecastPPaR.setR(r.stripTrailingZeros()); + forecastPPaR.setPa(new BigDecimal(pa).stripTrailingZeros()); + forecastPPaRList.add(forecastPPaR); + } + } + if (forecastPPaRList.size() > 0) { + // 先全部删除 + this.remove(new QueryWrapper<>()); + ret = this.saveBatch(forecastPPaRList); + } + } + return ret; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastPaService.java b/src/main/java/com/gunshi/project/ss/service/ForecastPaService.java new file mode 100644 index 0000000..a9203fb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastPaService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ForecastPaMapper; +import com.gunshi.project.ss.model.ForecastPa; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 预报_土壤含水量表 + * author: cxw + * date: 2024-08-02 12:23:07 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastPaService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastProjectService.java b/src/main/java/com/gunshi/project/ss/service/ForecastProjectService.java new file mode 100644 index 0000000..65f7950 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastProjectService.java @@ -0,0 +1,287 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import com.gunshi.project.ss.mapper.ForecastProjectMapper; +import com.gunshi.project.ss.model.ForecastProject; +import com.gunshi.project.ss.model.ForecastResults; +import com.itextpdf.io.font.PdfEncodings; +import com.itextpdf.kernel.colors.DeviceRgb; +import com.itextpdf.kernel.events.Event; +import com.itextpdf.kernel.events.IEventHandler; +import com.itextpdf.kernel.events.PdfDocumentEvent; +import com.itextpdf.kernel.font.PdfFont; +import com.itextpdf.kernel.font.PdfFontFactory; +import com.itextpdf.kernel.geom.PageSize; +import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.kernel.pdf.canvas.PdfCanvas; +import com.itextpdf.layout.Document; +import com.itextpdf.layout.element.Cell; +import com.itextpdf.layout.element.Paragraph; +import com.itextpdf.layout.element.Table; +import com.itextpdf.layout.properties.UnitValue; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.zip.ZipOutputStream; + +/** + * 描述: 预报_预测方案管理表 + * author: cxw + * date: 2024-08-05 11:41:45 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastProjectService extends ServiceImpl +{ + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Autowired + private ForecastResultsService forecastResultsService; + + /** + * @description: 保存预报结果 + * @param forecastProject + * @return: void + * @auther: cxw + * @date: 2024-08-06, 周二, 10:06:40 + */ + public Boolean saveForecastResults(ForecastProject forecastProject) throws ParseException { + List retList = new ArrayList<>(); + List voList = forecastProject.getVoList(); + for (ForecastResultVo vo : voList) { + ForecastResults forecastResults = new ForecastResults(); + forecastResults.setId(IdWorker.getId()); + forecastResults.setTm(sdf.parse(vo.getTm())); + forecastResults.setYcRkQValue(vo.getYcRkQValue()); + forecastResults.setRealRkQValue(vo.getRealRkQValue()); + forecastResults.setYcCkQValue(vo.getYcCkQValue()); + forecastResults.setRealCkQValue(vo.getRealCkQValue()); + forecastResults.setYcSwHValue(vo.getYcSwHValue()); + forecastResults.setRealSwHValue(vo.getRealSwHValue()); + forecastResults.setDrp(vo.getDrp()); + forecastResults.setIspreDrp(vo.getIspreDrp()); + forecastResults.setR(vo.getR()); + forecastResults.setProjectId(forecastProject.getId()); + forecastResults.setFlLowLimLev(vo.getFlLowLimLev()); + forecastResults.setCurrentYdgdyjz(vo.getCurrentYdgdyjz()); + forecastResults.setPa(vo.getPa()); + retList.add(forecastResults); + } + return forecastResultsService.saveBatch(retList); + } + + public void generatePdf(ForecastProject project, ZipOutputStream outputStream) { + // 第一次生成:获取总页码 + int totalPages = calculateTotalPages(project); + + // 第二次生成:正式生成带页码的PDF + generatePdfWithPageNumbers(project, outputStream, totalPages); + } + + // 第一次生成:计算总页码 + private int calculateTotalPages(ForecastProject project) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + try (PdfWriter writer = new PdfWriter(baos); + PdfDocument pdfDoc = new PdfDocument(writer); + Document document = new Document(pdfDoc, PageSize.A4.rotate())) { + + // 设置字体 + String fontPath = "/fonts/ChineseFonts.ttf"; + PdfFont font = PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H); + + // 添加内容(但不添加页码) + addContentToDocument(document, font, project, false); + + // 返回总页数 + return pdfDoc.getNumberOfPages(); + + } catch (Exception e) { + log.error("计算PDF页数失败", e); + throw new RuntimeException("PDF页数计算失败"); + } + } + + // 第二次生成:正式生成带页码的PDF + private void generatePdfWithPageNumbers(ForecastProject project, ZipOutputStream outputStream, int totalPages) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + try (PdfWriter writer = new PdfWriter(baos); + PdfDocument pdfDoc = new PdfDocument(writer); + Document document = new Document(pdfDoc, PageSize.A4.rotate())) { + + // 设置字体 + String fontPath = "/fonts/ChineseFonts.ttf"; + PdfFont font = PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H); + + // 添加页码处理器 + PageNumberEventHandler eventHandler = new PageNumberEventHandler(font, totalPages); + pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE, eventHandler); + + // 添加内容 + addContentToDocument(document, font, project, true); + + } catch (Exception e) { + log.error("生成PDF失败", e); + throw new RuntimeException("PDF生成失败"); + } + + // 在try-with-resources块外获取字节数组并写入输出流 + try { + byte[] pdfBytes = baos.toByteArray(); + outputStream.write(pdfBytes); + } catch (IOException e) { + log.error("写入ZIP失败", e); + throw new RuntimeException("写入ZIP失败"); + } + } + + // 页码事件处理器 - 简化版本 + private static class PageNumberEventHandler implements IEventHandler { + private final PdfFont font; + private final int totalPages; + + public PageNumberEventHandler(PdfFont font, int totalPages) { + this.font = font; + this.totalPages = totalPages; + } + + @Override + public void handleEvent(Event event) { + PdfDocumentEvent docEvent = (PdfDocumentEvent) event; + PdfDocument pdfDoc = docEvent.getDocument(); + PdfPage page = docEvent.getPage(); + int currentPage = pdfDoc.getPageNumber(page); + + // 获取页面尺寸 + Rectangle pageSize = page.getPageSize(); + + // 创建画布 + PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), pdfDoc); + + // 设置页码文本 + String pageText = "第 " + currentPage + " 页 / 共 " + totalPages + " 页"; + + // 直接使用PdfCanvas绘制文本(更简单的方式) + pdfCanvas.beginText() + .setFontAndSize(font, 10) + .moveText((pageSize.getLeft() + pageSize.getRight()) / 2 - 50, pageSize.getBottom() + 20) + .showText(pageText) + .endText(); + + pdfCanvas.release(); + } + } + + // 添加内容到文档的公共方法 + private void addContentToDocument(Document document, PdfFont font, ForecastProject project, boolean addPageMargins) throws IOException { + if (addPageMargins) { + // 为页码预留底部边距 + document.setMargins(36, 36, 36, 50); + } + + // 第一行:基本信息 + Paragraph header1 = new Paragraph() + .add("预见期(小时): " + (project.getForecastPeriod() != null ? project.getForecastPeriod() : "无") + " ") + .add("预热期(天): " + (project.getForecastWarm() != null ? project.getForecastWarm() : "无") + " ") + .add("预报时间: " + formatDate(project.getForecastTm()) + " ") + .add("开始时间: " + formatDate(project.getStartTm()) + " ") + .add("结束时间: " + formatDate(project.getEndTm())) + .setFont(font) + .setFontSize(10); + + document.add(header1); + document.add(new Paragraph("\n")); + + // 第二行:统计信息 + Paragraph header2 = new Paragraph() + .add("预报最高调洪水位(m): " + (project.getYcMaxSwH() != null ? project.getYcMaxSwH().setScale(2, RoundingMode.HALF_UP) : "无") + " ") + .add("预报最大入库流量(m³/s): " + (project.getYcMaxRkQ() != null ? project.getYcMaxRkQ().setScale(2, RoundingMode.HALF_UP) : "无") + " ") + .add("预报最大下泄流量(m³/s): " + (project.getYcMaxCkQ() != null ? project.getYcMaxCkQ().setScale(2, RoundingMode.HALF_UP) : "无") + " ") + .add("预报洪水总量(万m³): " + (project.getYcSumFlood() != null ? project.getYcSumFlood().setScale(2, RoundingMode.HALF_UP) : "无")) + .setFont(font) + .setFontSize(10); + + document.add(header2); + document.add(new Paragraph("\n")); + + // 第三行:数据表格 + if (CollectionUtils.isNotEmpty(project.getVoList())) { + Table table = new Table(9); + table.setWidth(UnitValue.createPercentValue(100)); + + // 表头 + table.addHeaderCell(createCell("序号", font, true)); + table.addHeaderCell(createCell("时间", font, true)); + table.addHeaderCell(createCell("降雨量(mm)", font, true)); + table.addHeaderCell(createCell("实测水位(m)", font, true)); + table.addHeaderCell(createCell("预报水位(m)", font, true)); + table.addHeaderCell(createCell("入库流量(m³/s)", font, true)); + table.addHeaderCell(createCell("预报入库流量(m³/s)", font, true)); + table.addHeaderCell(createCell("实际出库流量(m³/s)", font, true)); + table.addHeaderCell(createCell("预报出库流量(m³/s)", font, true)); + + // 表格数据 + int index = 1; + for (ForecastResultVo vo : project.getVoList()) { + table.addCell(createCell(String.valueOf(index++), font, false)); + table.addCell(createCell(vo.getTm(), font, false)); + table.addCell(createCell(formatBigDecimal(vo.getDrp()), font, false)); + table.addCell(createCell(formatBigDecimal(vo.getRealSwHValue()), font, false)); + table.addCell(createCell(formatBigDecimal(vo.getYcSwHValue()), font, false)); + table.addCell(createCell(formatBigDecimal(vo.getRealRkQValue()), font, false)); + table.addCell(createCell(formatBigDecimal(vo.getYcRkQValue()), font, false)); + table.addCell(createCell(formatBigDecimal(vo.getRealCkQValue()), font, false)); + table.addCell(createCell(formatBigDecimal(vo.getYcCkQValue()), font, false)); + } + document.add(table); + } else { + document.add(new Paragraph("无预报结果数据").setFont(font)); + } + } + + // 辅助方法:创建表格单元格 + private Cell createCell(String text, PdfFont font, boolean isHeader) { + Cell cell = new Cell().add(new Paragraph(text).setFont(font).setFontSize(8)); + if (isHeader) { + cell.setBackgroundColor(new DeviceRgb(220, 220, 220)); + cell.setBold(); + } + cell.setPadding(3); + return cell; + } + + // 辅助方法:格式化日期 + private String formatDate(Date date) { + if (date == null) return "无"; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return sdf.format(date); + } + + // 辅助方法:格式化BigDecimal + private String formatBigDecimal(BigDecimal value) { + if (value == null) return "-"; + return value.setScale(2, RoundingMode.HALF_UP).toString(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastResultsService.java b/src/main/java/com/gunshi/project/ss/service/ForecastResultsService.java new file mode 100644 index 0000000..f08ed7a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastResultsService.java @@ -0,0 +1,1149 @@ +package com.gunshi.project.ss.service; + +import cn.hutool.core.map.MapUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.algorithm.RrainfallForecast; +import com.gunshi.algorithm.RunoffService; +import com.gunshi.model.vo.FloodAlgorithemVo; +import com.gunshi.project.ss.common.model.StPptnR; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.entity.vo.ForeRainStatVo; +import com.gunshi.project.ss.entity.vo.ForeRainTimeVo; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import com.gunshi.project.ss.grb.RainGrib2Layer; +import com.gunshi.project.ss.mapper.ForecastResultsMapper; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.DataHandleUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.net.URLEncoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 描述: 预报_预测结果表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastResultsService extends ServiceImpl +{ + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + private static SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd"); + + private static SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + private static SimpleDateFormat eightSdf = new SimpleDateFormat("yyyy-MM-dd 08"); + + private static SimpleDateFormat sixteenSdf = new SimpleDateFormat("yyyy-MM-dd 16"); + + private static SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd HH"); + + @Autowired + private ForecastUseparamService forecastUseparamService; + + @Autowired + private ForecastUService forecastUService; + + @Autowired + private StPptnRService stPptnRService; + + @Autowired + private StRsvrRService stRsvrRService; + + @Autowired + private ForecastService forecastService; + + @Autowired + private StStbprpBService stStbprpBService; + + @Autowired + private StZqrlBService stZqrlBService; + + @Autowired + private ForecastPaService forecastPaService; + + @Autowired + private AttResBaseService attResBaseService; + + @Autowired + private StZvarlBService stZvarlBService; + + + /** + * @description: 自动洪水预测 + * @param forecastTask + * @return: java.util.List + * @auther: cxw + * @date: 2024-07-30, 周二, 14:40:45 + */ + public List autoFloodForecast(ForecastTask forecastTask) throws Exception { + // 获取预测数据 + List voList = excuteForecast(forecastTask); + return voList; + } + + /** + * @description: 获取人工交互洪水预报结果 + * @param forecastTask + * @return: java.util.List + * @auther: cxw + * @date: 2024-07-31, 周三, 11:09:24 + */ + public List getHumanForecastResult(ForecastTask forecastTask) { + // 当前时间整点,作为获取雨量数据历史、预测分隔点 + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date nowHourTime = calendar.getTime(); + forecastTask.setNowTime(nowHourTime); + List voList = null; + try { + voList = excuteForecast(forecastTask); + voList.sort(Comparator.comparing(ForecastResultVo::getTm)); + } catch (Exception e) { + e.printStackTrace(); + throw new IllegalArgumentException(e.getMessage()); + } + return voList; + } + + /** + * @description: 组装洪水预报ForecastResultVo + * @param forecastTask + * @return: java.util.List + * @auther: cxw + * @date: 2024-08-05, 周一, 17:14:52 + */ + private List excuteForecast(ForecastTask forecastTask) throws Exception { + List voList = new ArrayList<>(); + // 获取配置参数 + List paramList = forecastUseparamService.list(new QueryWrapper().isNotNull("param_code").isNotNull("param_value")); + if (CollectionUtils.isEmpty(paramList)) { + throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查入参是否缺失。"); + } + // 获取系统当前的水库站编码、汛限水位 + AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>()); + // 多站点水库面雨量 + // List stbs = stStbprpBService.list(new QueryWrapper().eq("res_code", attResBase.getResCode())); + // 单站点 + List stbs = stStbprpBService.list(new QueryWrapper().eq("stcd", attResBase.getStcd())); + if (CollectionUtils.isEmpty(stbs)) { + return voList; + } + Date nowHourTime = forecastTask.getNowTime(); + Date startTime = forecastTask.getStartTime(); + Date endTime = forecastTask.getEndTime(); + // 获取整个时间线的降雨数据 + List pptnRAllList = new ArrayList<>(); + List pptnRFutureList = new ArrayList<>(); + QueryWrapper qwExisted = new QueryWrapper<>(); + Boolean isHaveFuturePPtn = true; + // 檀树岗修改:实测降雨查询表数据,预测降雨使用geom参数。最后按时间算数平均 +// for(StStbprpB b : stbs){ +// String stcd = b.getStcd(); +// // 如果结束时间在当前时间之前,降雨序列从历史降雨表获取 +// if (endTime.compareTo(nowHourTime) <= 0) { +// qwExisted = new QueryWrapper().eq("stcd", stcd).ge("tm", startTime).le("tm", endTime).orderBy(true, true, "tm"); +// } else { +// qwExisted = new QueryWrapper().eq("stcd", stcd).ge("tm", startTime).le("tm", nowHourTime).orderBy(true, true, "tm"); +// try { +// // 获取预报数据 +// pptnRFutureList = getForecastDrpData(nowHourTime, stcd); +// } catch (IllegalArgumentException e) { +// if(stcd.equals(attResBase.getStcd())){ +// isHaveFuturePPtn = false; +// } +// log.error("该时间无预报数据"); +// } +// } +// List pptnRExistedList = stPptnRService.list(qwExisted); +// pptnRAllList.addAll(pptnRExistedList); +// pptnRAllList.addAll(pptnRFutureList); +// } + if (endTime.compareTo(nowHourTime) <= 0) { + qwExisted = new QueryWrapper().in("stcd", stbs.stream().map(StStbprpB::getStcd).toArray(String[]::new)).ge("tm", startTime).le("tm", endTime).orderBy(true, true, "tm"); + } else { + qwExisted = new QueryWrapper().in("stcd", stbs.stream().map(StStbprpB::getStcd).toArray(String[]::new)).ge("tm", startTime).le("tm", nowHourTime).orderBy(true, true, "tm"); + // 获取预报数据 + try { + pptnRFutureList = getForecastDrpData(nowHourTime, attResBase.getStcd()); + if(CollectionUtils.isEmpty(pptnRFutureList)) { + isHaveFuturePPtn = false; + log.error("该时间无预报数据"); + } + } catch (IllegalArgumentException e) { + isHaveFuturePPtn = false; + log.error("该时间无预报数据"); + } + } + List pptnRExistedList = stPptnRService.list(qwExisted); + pptnRAllList.addAll(pptnRExistedList); + pptnRAllList.addAll(pptnRFutureList); + + if (CollectionUtils.isEmpty(pptnRAllList)) { + return voList; + } + // 多站点面雨量结果list + List polyPptnRList = pptnRAllList.stream() + .collect(Collectors.groupingBy( + StPptnR::getTm, + Collectors.mapping( + pptn -> Double.parseDouble(pptn.getDrp()), // 将String转换为double + Collectors.averagingDouble(d -> d) // 计算平均值 + ) + )) + .entrySet().stream() + .map(entry -> new StPptnRAverage(entry.getKey(), String.valueOf(entry.getValue()))) + .sorted(Comparator.comparing(StPptnRAverage::getTm)) + .collect(Collectors.toList()); + double dt = 0.0; + double Wm = 0.0; + double qOther = 0.0; + Map paramMap = paramList.stream().collect(Collectors.toMap(ForecastUseparam::getParamCode, ForecastUseparam::getParamValue, (existing, replacement) -> existing)); + if (paramMap.get("dt").isEmpty()) { + throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查时间单元△T是否缺失。"); + } + if (paramMap.get("Im").isEmpty()) { + throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查最大初损值Im是否缺失。"); + } + if (!paramMap.get("qOther").isEmpty()) { + qOther = Double.parseDouble(paramMap.get("qOther")); + } + dt = Double.parseDouble(paramMap.get("dt")); + // dt = Double.parseDouble("1.0"); + Wm = Double.parseDouble(paramMap.get("Im")); + List uList = forecastUService.list(); + if (CollectionUtils.isEmpty(uList)) { + throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查U(I)单位线是否缺失。"); + } + // 每小时的单位径流量,单位m³/s + double[] u = uList.stream().mapToDouble(forecastU -> forecastU.getUValue().doubleValue()).toArray(); + // 根据开始结束时间查询pa + Calendar cal = Calendar.getInstance(); + cal.setTime(startTime); + // 将日期往前推一天 + cal.add(Calendar.DATE, -1); + List paList = forecastPaService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).ge("tm", sdfDay.format(cal.getTime())).le("tm", sdfDay.format(endTime))); + if (CollectionUtils.isEmpty(paList)) { + throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查每日土壤含水量Pa是否缺失。"); + } + Map paMap = paList.stream().collect(Collectors.toMap(ForecastPa::getTm, entity -> entity, (existing, replacement) -> existing)); + // 获取预测开始时间前的最后水库水位 + double H1 = 0.0;// 初始水库水位,可以根据H1->V1,H1->q1得到初始的水库库容和下泄流量 + StRsvrR rsvrR = stRsvrRService.getOne(new QueryWrapper().eq("stcd", attResBase.getStcd()).le("tm", startTime).orderBy(true, false, "tm").last("limit 1")); + if (ObjectUtils.isEmpty(rsvrR)) { + return voList; + } + H1 = Double.parseDouble(rsvrR.getRz()); + // 泄流量 + List stZqrlBList = stZqrlBService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).orderBy(true, true, "z")); + // 库容曲线 + List zvarlBS = stZvarlBService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).orderBy(true, true, "rz")); + // 水位历史数据 + List rsvrRRealList = stRsvrRService.list(new QueryWrapper().eq("stcd", attResBase.getStcd()).ge("tm", startTime).le("tm", endTime)); + for (StRsvrR stRsvrR : rsvrRRealList) { + // 使用Java 8时间API + Date originalTime = stRsvrR.getTm(); + if (originalTime != null) { + LocalDateTime ldt = originalTime.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime() + .withMinute(0) + .withSecond(0) + .withNano(0); + + Date truncatedTime = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant()); + stRsvrR.setTm(truncatedTime); + } + } + List resultList = reorganizeRsvrRData(rsvrRRealList, dt); + List periods = splitByDay8To8(startTime, endTime); + // v:累计降雨 + BigDecimal vValue = BigDecimal.ZERO; + BigDecimal vSum = BigDecimal.ZERO; + // Rsum:累计径流深 + BigDecimal Rsum = BigDecimal.ZERO; + BigDecimal Psum = BigDecimal.ZERO; + // 存储最后u的长度-1个r值 + for (int k = 0; k < periods.size(); k++) { + Date[] period = periods.get(k); + Calendar calNew = Calendar.getInstance(); + calNew.setTime(period[0]); + // 根据每段时间的开始时间,如果在08点前,则采用前一天的pa值计算 + if (isBeforeEightAM(period[0])) { + // 将日期往前推一天 + calNew.add(Calendar.DATE, -1); + } + ForecastPa forecastPa = paMap.get(sdfDay.format(calNew.getTime())); + if (ObjectUtils.isEmpty(forecastPa)) { + continue; +// throw new IllegalArgumentException("温馨提示:当前洪水预报所依赖的数据尚不完整,请检查每日土壤含水量Pa、K值是否缺失。"); + } + // 根据降雨数据,按照△t的颗粒度,均分 + // 筛选时间段内的降雨数据。不包前但包后 + List filterList = polyPptnRList.stream().filter(e -> e.getTm().compareTo(period[0]) >= 0).filter(e -> e.getTm().compareTo(period[1]) <= 0).collect(Collectors.toList()); + Map> retMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(filterList)) { + retMap = reorganizePptnRData(filterList, dt, period[0], period[1], nowHourTime, isHaveFuturePPtn); + } + if (ObjectUtils.isEmpty(retMap.get("listForForecast"))) { + continue; + } + List pForecastList = retMap.get("listForForecast").stream().map(s -> s.getDrp()).collect(Collectors.toList()); + if (pForecastList.size() == 0) { + continue; + } + if (ObjectUtils.isEmpty(retMap.get("listForReal"))) { + continue; + } + Map pRealMap = retMap.get("listForReal").stream().collect(Collectors.toMap(pptnR -> sdfMinute.format(pptnR.getTm()), StPptnR::getDrp, (existing, replacement) -> existing)); + double[] PList = pForecastList.stream().mapToDouble(Double::parseDouble).toArray(); + vSum = vSum.add(vValue); + vValue = BigDecimal.ZERO; + for (double value : PList) { + BigDecimal bd = BigDecimal.valueOf(value); + // 累加到总和中 + vValue = vValue.add(bd); + } + + // 存储上一次的径流深r,最开始默认全部为0 + List lastRArr = new ArrayList<>(); + for (int i = 0; i < u.length - 1; i++) { + lastRArr.add(0.0); // 填充初始值 + } + // 从后往前遍历不定长的实体列表 + for (int i = voList.size() - 1; i >= 0; i--) { + int index = lastRArr.size() - 1 - (voList.size() - 1 - i); + lastRArr.set(index, voList.get(i).getR().doubleValue()); + if(index <= 0){ + break; + } + } + + // 预测执行 + List forecastVoList = RrainfallForecast.getData(sdf.format(period[0]), forecastPa.getK().doubleValue(), forecastPa.getPa0().doubleValue(), Wm, forecastPa.getPt0().doubleValue(), H1, dt, + forecastPa.getPa().doubleValue(), PList, u, attResBase.getStcd(), qOther, vSum.doubleValue(), Rsum.doubleValue(), lastRArr); + if (CollectionUtils.isNotEmpty(forecastVoList)) { + // 筛选同时段的真实水位数据 + List realRsvrList = resultList.stream().filter(item -> item.getTm().compareTo(period[0]) >= 0 && item.getTm().compareTo(period[1]) <= 0).collect(Collectors.toList()); + Map realRsvrMap = realRsvrList.stream().collect(Collectors.toMap(rsvr -> sdfMinute.format(rsvr.getTm()), StRsvrR::getRz, (existing, replacement) -> existing)); + forecastVoList = forecastVoList.subList(0, PList.length + 1); + // 去除预测出来的最后一条与第二次实际的相同时间的数据 + if (voList.size() > 0 && voList.get(voList.size() - 1).getTm().equals(forecastVoList.get(0).getDateStr())) { + voList.remove(voList.size() - 1); + } + for (int j = 0; j < forecastVoList.size(); j++) { + FloodAlgorithemVo floodAlgorithemVo = forecastVoList.get(j); + // dt不同,预测结果的条数不同(跟new_q参数有关) + if (floodAlgorithemVo.getDateStr().substring(0, 15).compareTo(sdfMinute.format(period[1])) > 0) { + break; + } + String dateStr = floodAlgorithemVo.getDateStr(); + ForecastResultVo resultVo = new ForecastResultVo(); + resultVo.setTm(dateStr); + resultVo.setYcRkQValue(floodAlgorithemVo.getRq());// 预测入库流量 +// resultVo.setRealRkQValue();// 暂无真实入库流量 + resultVo.setYcCkQValue(floodAlgorithemVo.getCq());// 预测出库流量 + resultVo.setYcSwHValue(floodAlgorithemVo.getKh());// 预测水库水位 + H1 = resultVo.getYcSwHValue().doubleValue();// 以预测水位作为下一次预测段起始值 + String dateMinuteStr = dateStr.substring(0, dateStr.length() - 3);// 年月日 时分 + if (realRsvrMap.containsKey(dateMinuteStr)) { + BigDecimal realSwHValue = new BigDecimal(realRsvrMap.get(dateMinuteStr));// 根据时间取更准确 + resultVo.setRealSwHValue(realSwHValue);// 真实水库水位 + calculateCap(zvarlBS, resultVo, realSwHValue);// 有真实水位就用真实水位算(作为实测库容) + resultVo.setSwHDValue(resultVo.getYcSwHValue().subtract(resultVo.getRealSwHValue()));// 预测与真实水位差 + // 注释:修复跨8点时的陡升陡降 +// H1 = realSwHValue.doubleValue();// 如果有真实水位,将最后一条的真实水位作为下一次预测段的初始水位 + // 真实出库流量=真实水库水位与泄流量曲线差值法 + if (realSwHValue != null && CollectionUtils.isNotEmpty(stZqrlBList)) { + BigDecimal maxZ = stZqrlBList.stream().max(Comparator.comparing(StZqrlB::getZ)).get().getZ(); + BigDecimal minZ = stZqrlBList.stream().min(Comparator.comparing(StZqrlB::getZ)).get().getZ(); + if (realSwHValue.compareTo(minZ) < 0 || realSwHValue.compareTo(maxZ) > 0) { + resultVo.setRealCkQValue(BigDecimal.ZERO);// 真实出库流量 + } else { + Map stZvalMap = stZqrlBList.stream().collect(Collectors.toMap(StZqrlB::getZ, StZqrlB::getQ, (existing, replacement) -> existing)); + List list = stZqrlBList.stream().map(StZqrlB::getZ).collect(Collectors.toList()); + resultVo.setRealCkQValue(DataHandleUtil.calcData(realSwHValue, stZvalMap, list));// 真实出库流量 + } + } + } else { + // 没有真实水位就用预测水位算(作为预测库容) + calculateCap(zvarlBS, resultVo, resultVo.getYcSwHValue()); + } + + String pRealDrp = "0.0"; + if (pRealMap.containsKey(dateMinuteStr)) { + pRealDrp = pRealMap.get(dateMinuteStr); + } + BigDecimal drp = new BigDecimal(pRealDrp);// 根据时间取更准确 + if (drp.compareTo(BigDecimal.ZERO) < 0) { + resultVo.setDrp(BigDecimal.ZERO); + } else { + resultVo.setDrp(drp); + } + Psum = Psum.add(resultVo.getDrp()); + resultVo.setPSum(Psum); + Date dateTm = sdf.parse(floodAlgorithemVo.getDateStr()); + resultVo.setIspreDrp(dateTm.compareTo(nowHourTime) <= 0 ? "0" : "1");// 0:真实 1:预测 + resultVo.setR(floodAlgorithemVo.getR()); + if (resultVo.getR() != null) { + Rsum = Rsum.add(resultVo.getR()); + } else { + continue; + } + resultVo.setRSum(Rsum); + resultVo.setFlLowLimLev(attResBase.getFlLowLimLev()); + resultVo.setCurrentYdgdyjz(MapUtil.get(paramMap, "ydgdyjz", BigDecimal.class, BigDecimal.ZERO)); + resultVo.setPa(floodAlgorithemVo.getPa()); + voList.add(resultVo); + } + } + } + return voList; + } + + + /** + * @description: 根据水位计算库容 + * @param zvarlBS 库容曲线 + * @param resultVo vo + * @param rz 当前水位 + * @return: void + * @auther: cxw + * @date: 2024-10-14, 周一, 09:36:13 + */ + private void calculateCap(List zvarlBS, ForecastResultVo resultVo, BigDecimal rz){ + if(CollectionUtils.isNotEmpty(zvarlBS)){ + BigDecimal maxRz = zvarlBS.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); + BigDecimal minRz = zvarlBS.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); + if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ + return; + } + Map stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW, (existing, replacement) -> existing)); + List list = zvarlBS.stream().map(StZvarlB::getRz).sorted().collect(Collectors.toList()); + resultVo.setNowCap(DataHandleUtil.calcData(rz,stZvalMap,list)); + } + } + + /** + * 计算时间的小时差值 + */ + private static double dateHourDifference(Date beforeDate, Date afterDate) { + long time1 = beforeDate.getTime(); // 获取第一个时间的毫秒时间戳 + long time2 = afterDate.getTime(); // 获取第二个时间的毫秒时间戳 + // 计算两个时间戳的差值 + long difference = time2 - time1; + // 将差值转换为小时 + double hours = difference / (60 * 60 * 1000); + return hours; + } + + /** + * 根据时间获取气象降雨预报 + */ + public List getForecastDrpData(Date now, String stcd) { + List pptnRFutureList = new ArrayList<>(); +// StStbprpB stStbprpB = stStbprpBService.getOne(new QueryWrapper().eq("stcd", stcd)); + ForecastUseparam forecastUseparam = forecastUseparamService.getOne(new QueryWrapper().eq("param_code", "geom")); + String tm = "";// 时间格式应为:YYYYMMDDHH其中HH只能为08或20,例如2023062908 + if (isBeforeEightAM(now)) { + tm = sixteenSdf.format(now); + } else { + tm = eightSdf.format(now); + } + tm = tm.replaceAll(" ", "").replaceAll("-", ""); + List gribList = forecastService.getGribData(tm, false); + if(CollectionUtils.isEmpty(gribList)){ + return pptnRFutureList; + } + //24小时每个网格的总量 + List total = gribList.stream().filter(o -> o.getTmRange().getInterval() == 24).collect(Collectors.toList()); + //24小时每个网格的逐小时雨量 + List detail = gribList.stream().filter(o -> o.getTmRange().getInterval() == 1).collect(Collectors.toList()); +// ForeRainVo vo = new ForeRainVo(); +// vo.setStcd(stcd); +// vo.setLgtd(stStbprpB.getLgtd()); +// vo.setLttd(stStbprpB.getLttd()); +// List data = forecastService.getData(vo, total, detail); + // 2024-10-14 改为获取水库整个面的降雨 + ForeRainStatVo vo = new ForeRainStatVo(); + String[] paramValue = forecastUseparam.getParamValue().split(",");// x1,y1,x2,y2 + vo.setGeom(buildRectangleGeoJson(Double.parseDouble(paramValue[0]), Double.parseDouble(paramValue[1]), Double.parseDouble(paramValue[2]), Double.parseDouble(paramValue[3]), total.get(0))); + List data = forecastService.getAreaData(vo, total, detail); + if (CollectionUtils.isNotEmpty(data)) { + for (ForeRainTimeVo foreRainTimeVo : data) { + // 只取当前时间之后的数据 + if (foreRainTimeVo.getTm().compareTo(now) > 0) { + StPptnR stPptnR = new StPptnR(); + stPptnR.setStcd(stcd); + stPptnR.setTm(foreRainTimeVo.getTm()); + stPptnR.setDrp(foreRainTimeVo.getDrp().toString()); + pptnRFutureList.add(stPptnR); + } + } + } + return pptnRFutureList; + } + + /** + * @description: 根据△T来整编实际水位数据 + * @param rsvrRRealList + * @param dt + * @return: java.util.List + * @auther: cxw + */ + private List reorganizeRsvrRData(List rsvrRRealList, double dt) { + // 只保留整小时的数据 + rsvrRRealList = rsvrRRealList.stream().filter(entity -> { + Date date = entity.getTm(); + return date.getMinutes() == 0 && date.getSeconds() == 0; + }).collect(Collectors.toMap( + e -> e.getStcd() + "_" + e.getTm(), // 使用属性组合作为键 + Function.identity(), + (existing, replacement) -> existing // 如果有冲突,保留现有的 + )).values().stream().collect(Collectors.toList()); + rsvrRRealList.sort(Comparator.comparing(StRsvrR::getTm)); + // 每次加0小时30分钟,根据dt设置,此时dt=0.5小时 + int totalMinutes = (int) Math.round(dt * 60); + // 计算小时数 + int hours = totalMinutes / 60; + // 计算剩余的分钟数(即不足一小时的部分) + int minutes = totalMinutes % 60; + List resultList = new ArrayList<>(); + for (int i = 0; i < rsvrRRealList.size(); i++) { + StRsvrR stRsvrR = rsvrRRealList.get(i); + resultList.add(stRsvrR); + Date tm = stRsvrR.getTm(); + String drp = stRsvrR.getRz(); + if (i + 1 == rsvrRRealList.size()) { + break; + } else { + StRsvrR stRsvrRNext = rsvrRRealList.get(i + 1); + // 两条数据的小时差 + double diffHours = dateHourDifference(stRsvrR.getTm(), stRsvrRNext.getTm()); + int floorNum = (int) Math.floor(diffHours / dt); + BigDecimal meanDifference = new BigDecimal(stRsvrRNext.getRz()).subtract(new BigDecimal(drp)).divide(new BigDecimal(floorNum), 3, BigDecimal.ROUND_HALF_UP); + for (int j = 1; j < floorNum; j++) { + // 增补出的数据 + StRsvrR suppleStRsvrR = new StRsvrR(); + BigDecimal add = new BigDecimal(drp).add(meanDifference.multiply(new BigDecimal(j))).setScale(3, BigDecimal.ROUND_HALF_UP); + try { + tm = sdf.parse(RunoffService.calc(sdf.format(tm), hours, minutes, true)); + suppleStRsvrR.setTm(tm); + } catch (ParseException e) { + throw new RuntimeException(e); + } + suppleStRsvrR.setRz(add.toString()); + suppleStRsvrR.setStcd(stRsvrR.getStcd()); + resultList.add(suppleStRsvrR); + } + } + } + return resultList; + } + + /** + * @description: 根据△T来整编雨量数据 + * @param filterList + * @param dt + * @param startTm + * @param endTm + * @param nowHourTime + * @param isHaveFuturePPtn + * @return: java.util.List + * @auther: cxw + */ + private Map> reorganizePptnRData(List filterList, double dt, Date startTm, Date endTm, Date nowHourTime, Boolean isHaveFuturePPtn) { + // 目前dt适配0.5和1 + // 只保留整小时的数据 + filterList = filterList.stream().filter(entity -> { + Date date = entity.getTm(); + return date.getMinutes() == 0 && date.getSeconds() == 0; + }).collect(Collectors.toMap( + e -> e.getStcd() + "_" + e.getTm(), // 使用属性组合作为键 + Function.identity(), + (existing, replacement) -> existing // 如果有冲突,保留现有的 + )).values().stream().collect(Collectors.toList()); + filterList.sort(Comparator.comparing(StPptnR::getTm)); + Map> retMap = new HashMap<>(); + Map tmDrpMap = filterList.stream().collect(Collectors.toMap(pptnR -> sdfMinute.format(pptnR.getTm()), StPptnR::getDrp, (existing, replacement) -> existing)); + List listForForecast = new ArrayList<>();// 传给预测程序使用,缺失的数据为0 + List listForReal = new ArrayList<>();// 返回给前端数据使用,缺失的数据为null + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startTm); + Date dataTm = calendar.getTime(); + // 使用时间一直往后加时间 + while (dataTm.compareTo(endTm) < 0) { + // 当数据时间超过实时数据的最大时间并且没有预测雨量数据时,跳出 + if(dataTm.compareTo(nowHourTime) >= 0 && !isHaveFuturePPtn){ + break; + } + // 时间加1小时,得到应该拆数据的时间,后面往前推 + calendar.add(Calendar.HOUR_OF_DAY, 1); + String shareDrp = "";// 应该分的drp + // 如果下一小时不为空 + if (tmDrpMap.containsKey(sdfMinute.format(calendar.getTime()))) { + StPptnR stPptnRHalf = new StPptnR(); + StPptnR stPptnRHour = new StPptnR(); + stPptnRHour.setTm(calendar.getTime());// 整点时间 + String dataTmDrpHalf = tmDrpMap.get(sdfMinute.format(calendar.getTime())); + // 按照dt分 + BigDecimal drp = new BigDecimal(dataTmDrpHalf).multiply(new BigDecimal(dt)); + shareDrp = String.valueOf(drp); + stPptnRHalf.setDrp(shareDrp); + stPptnRHour.setDrp(shareDrp); + // 往前推半小时 + calendar.add(Calendar.MINUTE, -(int) (dt * 60)); + stPptnRHalf.setTm(calendar.getTime()); + if (BigDecimal.ONE.compareTo(BigDecimal.valueOf(dt)) != 0) { + // 存半小时数据 + listForForecast.add(stPptnRHalf); + listForReal.add(stPptnRHalf); + } + // 存整小时数据 + listForForecast.add(stPptnRHour); + listForReal.add(stPptnRHour); + } else { + StPptnR stPptnRHalfForecast = new StPptnR(); + StPptnR stPptnRHourForecast = new StPptnR(); + StPptnR stPptnRHalfReal = new StPptnR(); + StPptnR stPptnRHourReal = new StPptnR(); + stPptnRHourForecast.setTm(calendar.getTime());// 整点时间 + stPptnRHourReal.setTm(calendar.getTime());// 整点时间 + // 往前推半小时 + calendar.add(Calendar.MINUTE, -(int) (dt * 60)); + stPptnRHalfForecast.setTm(calendar.getTime()); + stPptnRHalfReal.setTm(calendar.getTime()); + if(BigDecimal.ONE.compareTo(BigDecimal.valueOf(dt)) != 0){ + // 存半小时数据 + stPptnRHalfForecast.setDrp("0.00"); + listForForecast.add(stPptnRHalfForecast); + stPptnRHalfReal.setDrp("-1"); + listForReal.add(stPptnRHalfReal); + } + // 存整小时数据 + stPptnRHourForecast.setDrp("0.00"); + listForForecast.add(stPptnRHourForecast); + stPptnRHourReal.setDrp("-1"); + listForReal.add(stPptnRHourReal); + } + // 往后推半小时复位 + calendar.add(Calendar.MINUTE, (int) (dt * 60)); + dataTm = calendar.getTime(); + } + retMap.put("listForForecast", listForForecast); + retMap.put("listForReal", listForReal); + return retMap; + } + + /** + * @description: 将两个时间按照早八点分割成多段 + * @param startDate + * @param endDate + * @return: java.util.List + * @auther: cxw + */ + public static List splitByDay8To8(Date startDate, Date endDate) { + List periods = new ArrayList<>(); + + Calendar cal = Calendar.getInstance(); + cal.setTime(startDate); + + // 第一个时间段特殊处理:从startDate到第二天的8点(如果startDate晚于当天8点) + // 或者如果startDate在当天8点之前,则直接包含在当前天的8点到下一个8点周期内 + if (cal.get(Calendar.HOUR_OF_DAY) >= 8) { + // startDate晚于或等于当天8点,但我们需要到第二天的8点作为结束 + cal.add(Calendar.DAY_OF_MONTH, 1); // 跳到下一天 + cal.set(Calendar.HOUR_OF_DAY, 8); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + Date endOfDay = cal.getTime(); + periods.add(new Date[]{startDate, endOfDay}); + cal.setTime(endOfDay); // 准备下一个时间段的开始 + } + + // 循环生成剩余的时间段 + while (!cal.getTime().after(endDate)) { + Date currentStart = cal.getTime(); + if (cal.get(Calendar.HOUR_OF_DAY) >= 8) { + cal.add(Calendar.DAY_OF_MONTH, 1); // 移到下一天 + } + cal.set(Calendar.HOUR_OF_DAY, 8); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + Date currentEnd = cal.getTime(); + // 如果currentEnd超出了endDate,则调整currentEnd为endDate + if (currentEnd.after(endDate)) { + currentEnd = endDate; + } + periods.add(new Date[]{currentStart, currentEnd}); + // 准备下一个时间段的开始(但在这个循环中它不会被使用,因为循环会终止) + } + return periods; + } + + + /** + * 判断date是否在早八点后还是前(true:在8:00前) + */ + public static boolean isBeforeEightAM(Date date) { + Calendar calendar = Calendar.getInstance(); + // 先设置当前时间 + calendar.setTime(date); + calendar.set(Calendar.HOUR_OF_DAY, 8); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + return date.before(calendar.getTime()); + } + + /** + * @description: 处理voList,获取预报最大属性值 + * @param forecastProject + * @return: void + * @auther: cxw + * @date: 2024-08-07, 周三, 15:52:19 + */ + public void handleVoList(ForecastProject forecastProject) { + Map paramMap = forecastUseparamService.getMap(new QueryWrapper().eq("param_code", "dt")); + if(paramMap != null){ + BigDecimal dt = new BigDecimal(paramMap.get("param_value").toString());// 时间间隔:小时h + BigDecimal ycMaxSwH = BigDecimal.ZERO;// 预报最高调洪水位 + BigDecimal ycMaxRkQ = BigDecimal.ZERO;// 预报最大入库流量 + BigDecimal ycMaxCkQ = BigDecimal.ZERO;// 预报最大下泄流量 + BigDecimal ycSumRkQ = BigDecimal.ZERO;// 预报入库流量累计和 + for (ForecastResultVo vo : forecastProject.getVoList()){ + BigDecimal ycSwHValue = vo.getYcSwHValue(); + if (ycSwHValue.compareTo(ycMaxSwH) > 0) { + ycMaxSwH = ycSwHValue; + } + BigDecimal ycRkQValue = vo.getYcRkQValue(); + if (ycRkQValue.compareTo(ycMaxRkQ) > 0) { + ycMaxRkQ = ycRkQValue; + } + BigDecimal ycCkQValue = vo.getYcCkQValue(); + if (ycCkQValue.compareTo(ycMaxCkQ) > 0) { + ycMaxCkQ = ycCkQValue; + } + ycSumRkQ = ycSumRkQ.add(ycRkQValue); + } + // 预报洪水总量(万m³)=预报入库流量累计和 X (dt*60*60) / 10000 + BigDecimal ycSumFlood = ycSumRkQ.multiply((dt.multiply(new BigDecimal(3600)))).divide(new BigDecimal(10000), 6, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); + forecastProject.setYcMaxSwH(ycMaxSwH); + forecastProject.setYcMaxRkQ(ycMaxRkQ); + forecastProject.setYcMaxCkQ(ycMaxCkQ); + forecastProject.setYcSumFlood(ycSumFlood); + } + } + + public static String buildRectangleGeoJson(double x1, double y1, double x2, double y2, RainGrib2Layer layer) { + // x1,y1和x2,y2的间隔必须要大于网格的最小长宽,才能相交 + BigDecimal dh = layer.getDh();// 单位高度 + BigDecimal dw = layer.getDw();// 单位宽度 + if(dw.compareTo(BigDecimal.valueOf(x2 - x1)) > 0 || dh.compareTo(BigDecimal.valueOf(y2 - y1)) > 0){ + throw new IllegalArgumentException("Geom参数区域范围不足预测降雨网格最小单位!!!"); + } + // 校验数据是否在最大允许范围(预测降雨所划定区域) + Double x11 = ForecastService.x1; + Double y11 = ForecastService.y1; + Double x22 = ForecastService.x2; + Double y22 = ForecastService.y2; + /* y + * ↑ x22,y22 + * ↑ x2,y2 + * ↑ + * ↑ x1,y1 + * ↑ x11,y11 + * ——>——>——>——>——>——>——>——>——>——>——>——> x + */ +// if(x11.compareTo(Double.valueOf(x1)) > 0 || y11.compareTo(Double.valueOf(y1)) > 0 || x22.compareTo(Double.valueOf(x2)) < 0 || y22.compareTo(Double.valueOf(y2)) < 0){ +// throw new IllegalArgumentException("Geom参数超出预测降雨范围!!!"); +// } + if (!(x11.compareTo(Double.valueOf(x1)) <= 0 && x11.compareTo(Double.valueOf(x2)) <= 0 && x22.compareTo(Double.valueOf(x1)) >= 0 && x22.compareTo(Double.valueOf(x2)) >= 0 + && y11.compareTo(Double.valueOf(y1)) <= 0 && y11.compareTo(Double.valueOf(y2)) <= 0 && y22.compareTo(Double.valueOf(y1)) >= 0 && x22.compareTo(Double.valueOf(y2)) >= 0)) { + throw new IllegalArgumentException("Geom参数超出预测降雨范围!!!"); + } + + double[] corner1 = {x1, y1}; + double[] corner2 = {x2, y2}; + // 构造矩形的四个顶点(这里假设corner1是左下,corner2是右上) + double[][][] coordinates2D = { + { + {corner1[0], corner1[1]}, // 左下角 + {corner2[0], corner1[1]}, // 右上角 + {corner2[0], corner2[1]}, // 右下角 + {corner1[0], corner2[1]}, // 左上角 + {corner1[0], corner1[1]} // 回到左下角,闭合多边形 + } + }; + + // 为了适应四层数组结构,我们添加一个额外的数组层 + double[][][][] customCoordinates = {coordinates2D}; + + // 构建自定义的JSON字符串(注意:这不是标准的GeoJSON) + StringBuilder jsonBuilder = new StringBuilder(); + jsonBuilder.append("{"); + jsonBuilder.append("\"type\": \"CustomPolygon\","); // 使用自定义类型 + jsonBuilder.append("\"coordinates\": "); + jsonBuilder.append("["); + + // 遍历并添加坐标到JSON字符串中 + for (double[][][] ring : customCoordinates) { + jsonBuilder.append("["); + for (double[][] line : ring) { + jsonBuilder.append("["); + for (double[] point : line) { + jsonBuilder.append("["); + jsonBuilder.append(point[0]); // 经度 + jsonBuilder.append(","); + jsonBuilder.append(point[1]); // 纬度 + jsonBuilder.append("],"); + } + jsonBuilder.append("]"); + } + jsonBuilder.append("]"); + } + + jsonBuilder.append("]"); // 闭合最外层的坐标数组 + jsonBuilder.append("}"); // 闭合JSON对象 + return jsonBuilder.toString(); + } + + + public List calculateY(SyRegressionData syRegressionData, List voList) { + //过滤出预测时间的数据 + List collect = voList.stream().filter(o -> { + return o.getIspreDrp().equals("1"); + }).collect(Collectors.toList()); + + //获取方程组 + String regressionEquation = syRegressionData.getRegressionEquation(); + List res = new ArrayList<>(); + + //进行计算 + for (ForecastResultVo forecastResultVo : collect) { + // 获取预测水位值作为x + BigDecimal x = forecastResultVo.getYcSwHValue(); + if (x == null) { + continue; // 如果x为空,跳过计算 + } + + // 根据回归方程计算y值 + BigDecimal y = calculateRegressionValue(regressionEquation, x); + + // 构建返回结果 + OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); + detailVo.setTm(forecastResultVo.getTm()); // 监测时间 + detailVo.setValue(y); // 计算得到的监测值 + detailVo.setRz(x); // 库水位(使用预测水位值) + + res.add(detailVo); + } + + // 按时间升序排列 + res.sort((o1, o2) -> { + if (o1.getTm() == null && o2.getTm() == null) { + return 0; + } + if (o1.getTm() == null) { + return -1; + } + if (o2.getTm() == null) { + return 1; + } + return o1.getTm().compareTo(o2.getTm()); + }); + + return res; + } + + /** + * 根据回归方程计算y值(高精度计算) + * @param equation 回归方程字符串 + * @param x 自变量x的值 + * @return 计算得到的y值 + */ + private BigDecimal calculateRegressionValue(String equation, BigDecimal x) { + if (equation == null || equation.trim().isEmpty()) { + return BigDecimal.ZERO; + } + + // 清理方程字符串,移除空格和y= + String cleanEquation = equation.replace("y =", "").replace(" ", "").toLowerCase(); + + try { + BigDecimal result; + // 根据方程的形式判断阶数并计算(支持数学符号和传统符号) + if (cleanEquation.contains("x⁴") || cleanEquation.contains("x^4")) { + result = calculateFourthOrder(cleanEquation, x); + } else if (cleanEquation.contains("x³") || cleanEquation.contains("x^3")) { + result = calculateThirdOrder(cleanEquation, x); + } else if (cleanEquation.contains("x²") || cleanEquation.contains("x^2")) { + result = calculateSecondOrder(cleanEquation, x); + } else { + result = calculateFirstOrder(cleanEquation, x); + } + // 只在最后结果保留两位小数,中间计算过程保持高精度 + return result.setScale(2, RoundingMode.HALF_UP); + } catch (Exception e) { + // 计算异常时返回0 + return BigDecimal.ZERO; + } + } + + /** + * 计算一阶线性方程 y = ax + b(高精度) + */ + private BigDecimal calculateFirstOrder(String equation, BigDecimal x) { + // 解析方程系数,格式如:0.0455x+94.2395 + String[] parts = equation.split("x"); + if (parts.length < 2) { + return BigDecimal.ZERO; + } + + BigDecimal a = parseCoefficient(parts[0]); + BigDecimal b = parseCoefficient(parts[1]); + + // 高精度计算:a * x + b + return a.multiply(x, MathContext.DECIMAL128).add(b, MathContext.DECIMAL128); + } + + /** + * 计算二阶方程 y = ax² + bx + c(高精度) + */ + private BigDecimal calculateSecondOrder(String equation, BigDecimal x) { + // 解析方程系数,格式如:-68.4211x²+16312.8684x-972224.1397 + String normalizedEquation = equation.replace("x^2", "x²"); + String[] parts = normalizedEquation.split("x"); + if (parts.length < 3) { + return BigDecimal.ZERO; + } + + BigDecimal a = parseCoefficient(parts[0]); + BigDecimal b = parseCoefficient(parts[1].replace("²", "")); + BigDecimal c = parseCoefficient(parts[2]); + + // 高精度计算:x² = x * x + BigDecimal x2 = x.multiply(x, MathContext.DECIMAL128); + + // 高精度计算:a * x² + b * x + c + BigDecimal term1 = a.multiply(x2, MathContext.DECIMAL128); + BigDecimal term2 = b.multiply(x, MathContext.DECIMAL128); + return term1.add(term2, MathContext.DECIMAL128).add(c, MathContext.DECIMAL128); + } + + /** + * 计算三阶方程 y = ax³ + bx² + cx + d(高精度) + */ + private BigDecimal calculateThirdOrder(String equation, BigDecimal x) { + // 解析方程系数,格式如:-2291.6667x³+819497.9167x²-97683901.8750x+3881297151.1650 + String normalizedEquation = equation.replace("x^3", "x³").replace("x^2", "x²"); + String[] parts = normalizedEquation.split("x"); + if (parts.length < 4) { + return BigDecimal.ZERO; + } + + BigDecimal a = parseCoefficient(parts[0]); + BigDecimal b = parseCoefficient(parts[1].replace("³", "").replace("²", "")); + BigDecimal c = parseCoefficient(parts[2].replace("²", "")); + BigDecimal d = parseCoefficient(parts[3]); + + // 高精度计算:x² = x * x, x³ = x² * x + BigDecimal x2 = x.multiply(x, MathContext.DECIMAL128); + BigDecimal x3 = x2.multiply(x, MathContext.DECIMAL128); + + // 高精度计算:a * x³ + b * x² + c * x + d + BigDecimal term1 = a.multiply(x3, MathContext.DECIMAL128); + BigDecimal term2 = b.multiply(x2, MathContext.DECIMAL128); + BigDecimal term3 = c.multiply(x, MathContext.DECIMAL128); + return term1.add(term2, MathContext.DECIMAL128).add(term3, MathContext.DECIMAL128).add(d, MathContext.DECIMAL128); + } + + /** + * 计算四阶方程 y = ax⁴ + bx³ + cx² + dx + e(高精度) + */ + private BigDecimal calculateFourthOrder(String equation, BigDecimal x) { + // 解析方程系数,格式如:-5.9039x⁴+523.5482x³+316095.2736x²-57676816.2672x+2688986002.6804 + String normalizedEquation = equation.replace("x^4", "x⁴").replace("x^3", "x³").replace("x^2", "x²"); + String[] parts = normalizedEquation.split("x"); + if (parts.length < 5) { + return BigDecimal.ZERO; + } + + BigDecimal a = parseCoefficient(parts[0]); + BigDecimal b = parseCoefficient(parts[1].replace("⁴", "").replace("³", "")); + BigDecimal c = parseCoefficient(parts[2].replace("³", "").replace("²", "")); + BigDecimal d = parseCoefficient(parts[3].replace("²", "")); + BigDecimal e = parseCoefficient(parts[4]); + + // 高精度计算:x² = x * x, x³ = x² * x, x⁴ = x³ * x + BigDecimal x2 = x.multiply(x, MathContext.DECIMAL128); + BigDecimal x3 = x2.multiply(x, MathContext.DECIMAL128); + BigDecimal x4 = x3.multiply(x, MathContext.DECIMAL128); + + // 高精度计算:a * x⁴ + b * x³ + c * x² + d * x + e + BigDecimal term1 = a.multiply(x4, MathContext.DECIMAL128); + BigDecimal term2 = b.multiply(x3, MathContext.DECIMAL128); + BigDecimal term3 = c.multiply(x2, MathContext.DECIMAL128); + BigDecimal term4 = d.multiply(x, MathContext.DECIMAL128); + return term1.add(term2, MathContext.DECIMAL128) + .add(term3, MathContext.DECIMAL128) + .add(term4, MathContext.DECIMAL128) + .add(e, MathContext.DECIMAL128); + } + + /** + * 解析系数,处理正负号和数字格式(高精度) + */ + private BigDecimal parseCoefficient(String coeffStr) { + if (coeffStr == null || coeffStr.isEmpty()) { + return BigDecimal.ZERO; + } + + // 处理空字符串情况 + if (coeffStr.equals("+") || coeffStr.equals("-")) { + coeffStr += "1"; + } + + // 处理没有显式数字的情况,如:x²+x+1 中的第一个x系数为1 + if (coeffStr.equals("")) { + return BigDecimal.ONE; + } + + try { + // 使用BigDecimal的高精度解析 + return new BigDecimal(coeffStr, MathContext.DECIMAL128); + } catch (NumberFormatException e) { + // 如果解析失败,尝试处理特殊情况 + if (coeffStr.equals("+")) { + return BigDecimal.ONE; + } else if (coeffStr.equals("-")) { + return BigDecimal.ONE.negate(); + } + return BigDecimal.ZERO; + } + } + + public void reportExport(List data, String regression, String dvcd, HttpServletResponse response) { + try { + // 设置响应头 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("UTF-8"); + String fileName = URLEncoder.encode("渗透压力预测报告", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); + + // 创建Excel工作簿 + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("渗透压力预测报告"); + + // 创建单元格样式 - 支持换行 + CellStyle wrapStyle = workbook.createCellStyle(); + wrapStyle.setWrapText(true); + + // 设置行号 + int rowNum = 0; + + // 第一行:测点编号(不合并) + Row row1 = sheet.createRow(rowNum++); + Cell label1 = row1.createCell(0); + label1.setCellValue("测点编号:"); + Cell value1 = row1.createCell(1); + value1.setCellValue(dvcd); + + // 第二行:回归方程(从D列开始合并10个单元格) + Row row2 = sheet.createRow(rowNum++); + Cell label2 = row2.createCell(0); + label2.setCellValue("回归方程:"); + Cell value2 = row2.createCell(3); // D列(索引为3) + value2.setCellValue(regression != null ? regression : ""); + value2.setCellStyle(wrapStyle); + // 合并D列到M列(共10个单元格):从第3列到第12列 + sheet.addMergedRegion(new CellRangeAddress(1, 1, 3, 12)); + + // 空一行 + rowNum++; + + // 表头行 + Row headerRow = sheet.createRow(rowNum++); + String[] headers = {"预测时间", "预测值", "预测库水位"}; + for (int i = 0; i < headers.length; i++) { + Cell headerCell = headerRow.createCell(i); + headerCell.setCellValue(headers[i]); + } + + // 数据行 + if (data != null && !data.isEmpty()) { + for (OsmoticPressDetailVo detail : data) { + Row dataRow = sheet.createRow(rowNum++); + + // 预测时间 + Cell timeCell = dataRow.createCell(0); + timeCell.setCellValue(detail.getTm() != null ? detail.getTm() : ""); + + // 预测值 + Cell valueCell = dataRow.createCell(1); + if (detail.getValue() != null) { + valueCell.setCellValue(detail.getValue().doubleValue()); + } else { + valueCell.setCellValue(""); + } + + // 预测库水位 + Cell rzCell = dataRow.createCell(2); + if (detail.getRz() != null) { + rzCell.setCellValue(detail.getRz().doubleValue()); + } else { + rzCell.setCellValue(""); + } + } + } + + // 设置列宽 + sheet.setColumnWidth(0, 15 * 256); // A列:标签列,固定宽度 + sheet.setColumnWidth(1, 12 * 256); // B列:测点编号值,固定宽度 + sheet.setColumnWidth(2, 12 * 256); // C列:空列,固定宽度 + sheet.setColumnWidth(3, 50 * 256); // D列:方程列开始,固定宽度 + + // 自动调整数据表格的列宽 + sheet.autoSizeColumn(0); // 预测时间列 + sheet.autoSizeColumn(1); // 预测值列 + sheet.autoSizeColumn(2); // 预测库水位列 + + // 写入响应流 + workbook.write(response.getOutputStream()); + workbook.close(); + + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("导出Excel失败"); + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastService.java b/src/main/java/com/gunshi/project/ss/service/ForecastService.java new file mode 100644 index 0000000..0eb5909 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastService.java @@ -0,0 +1,348 @@ +package com.gunshi.project.ss.service; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.gunshi.project.ss.entity.so.ShortWeatherSo; +import com.gunshi.project.ss.entity.so.WeatherSo; +import com.gunshi.project.ss.entity.vo.ForeRainStatVo; +import com.gunshi.project.ss.entity.vo.ForeRainTimeVo; +import com.gunshi.project.ss.entity.vo.ForeRainVo; +import com.gunshi.project.ss.entity.vo.MeshrainVo; +import com.gunshi.project.ss.grb.RainGrib2Layer; +import com.gunshi.project.ss.mapper.RealRainMapper; +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.locationtech.jts.geom.Coordinate; +import org.locationtech.jts.geom.GeometryFactory; +import org.locationtech.jts.geom.Polygon; +import org.locationtech.jts.geom.impl.CoordinateArraySequence; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; + +/** + * Description: + * Created by wanyan on 2024/3/13 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Data +@Slf4j +public class ForecastService { + + @Value("${shqxjsCloudowrCnPath}") + private String shqxjsCloudowrCnPath;//获取气象预报文件名接口 http://shqxjs.cloudowr.cn/service/ + + public static GeometryFactory factory = new GeometryFactory(); + + public static String grbgetName = "grb/get"; + + public static String radargetName = "radar/get"; + + public static String getData = "res/grblayerset"; + + public static String getRadarData = "res/radarlayer"; + + public static Double x1 = 114.364492; + public static Double y1 = 30.910941; + public static Double x2 = 114.872155; + public static Double y2 = 31.594063; + + public static String totalLayers = "00.24";//只取24小时每个网格的总量 + + public static String detailLayers = "00.24,00.01,01.01,02.01,03.01,04.01,05.01,06.01,07.01,08.01,09.01,10.01,11.01,12.01,13.01,14.01,15.01,16.01,17.01,18.01,19.01,20.01,21.01,22.01,23.01,24.01"; + + @Resource + private RealRainMapper realRainMapper; + + + + private List calcDrp(List gribList,List rainLevelVos){ + if(CollectionUtils.isEmpty(gribList)){ + throw new IllegalArgumentException("该时间无预报数据"); + } + RainGrib2Layer layer = gribList.get(0); + BigDecimal dh = layer.getDh(); + BigDecimal dw = layer.getDw(); + int nh = layer.getNh();//横向格子数 + int nw = layer.getNw();//纵向格子数 + //网格左下角经纬度 + BigDecimal x11 = layer.getX1(); + BigDecimal y11 = layer.getY1(); + harry : for(ForeRainVo vo : rainLevelVos){ + BigDecimal lgtd = new BigDecimal(vo.getLgtd()); + BigDecimal lttd = new BigDecimal(vo.getLttd()); + for(int i = 0;i < nw;i++){ + for(int j=0;j< nh;j++){ + BigDecimal xMin = x11.add(dh.multiply(BigDecimal.valueOf(i))); + BigDecimal xMax = x11.add(dh.multiply(BigDecimal.valueOf(i+1))); + BigDecimal yMin = y11.add(dw.multiply(BigDecimal.valueOf(j))); + BigDecimal yMax = y11.add(dw.multiply(BigDecimal.valueOf(j+1))); + if(lgtd.compareTo(xMin)>=0 && lgtd.compareTo(xMax)<0 && lttd.compareTo(yMin)>=0 && lttd.compareTo(yMax)<0){ + vo.setH2(layer.data[j][i].doubleValue()); + continue harry; + } + } + } + } + + return rainLevelVos; + } + + /** + * 获取24小时气象的网格数据 + * @param tm + * @return + */ + public List getGribData(String tm,Boolean isOnlyQueryTotal){ + List list = new ArrayList<>(); + String grbLatestUrl = shqxjsCloudowrCnPath + grbgetName + "?tm=" + tm; + HttpClient httpClient = HttpClientBuilder.create().build(); + HttpGet httpGet = new HttpGet(grbLatestUrl); + try { + HttpResponse httpResponse = httpClient.execute(httpGet); + HttpEntity entity = httpResponse.getEntity(); + JSONObject jsonObject = JSONUtil.parseObj(EntityUtils.toString(entity)); + JSONObject data = jsonObject.getJSONObject("data"); + if (data == null) { + throw new IllegalArgumentException("该时间无预报数据"); + }; + String rainFile = data.getStr("rainFile"); + String layers = detailLayers; + if(isOnlyQueryTotal){ + layers = totalLayers; + } + String grblayersetUrl = shqxjsCloudowrCnPath + getData + "?filename="+rainFile + "&x1=" + x1+ "&y1=" + y1+ "&x2=" + x2+ "&y2=" + y2+"&layers="+layers; + HttpGet grbData = new HttpGet(grblayersetUrl); + HttpResponse responseForGrb = httpClient.execute(grbData); + HttpEntity entityForGrb = responseForGrb.getEntity(); + + JSONObject grbObject = JSONUtil.parseObj(EntityUtils.toString(entityForGrb)); + + JSONArray grbArrData = grbObject.getJSONArray("data"); + if (grbArrData == null) return list; + list = grbArrData.toList(RainGrib2Layer.class); + + } catch (IOException e) { + e.printStackTrace(); + } + return list; + } + + + /** + * 获取短临气象的网格数据 + * @param tm + * @return + */ + private RainGrib2Layer getRadarData(String tm){ + RainGrib2Layer rainGrib2Layer = new RainGrib2Layer(); + String radarLatestUrl = shqxjsCloudowrCnPath + radargetName + "?tm=" + tm; + HttpClient httpClient = HttpClientBuilder.create().build(); + HttpGet httpGet = new HttpGet(radarLatestUrl); + try { + HttpResponse httpResponse = httpClient.execute(httpGet); + HttpEntity entity = httpResponse.getEntity(); + JSONObject jsonObject = JSONUtil.parseObj(EntityUtils.toString(entity)); + JSONObject data = jsonObject.getJSONObject("data"); + if (data == null) { + throw new IllegalArgumentException("该时间无预报数据"); + }; + String rainFile = data.getStr("rainFile"); + String radarUrl = shqxjsCloudowrCnPath + getRadarData + "?filename="+rainFile + "&x1=" + x1+ "&y1=" + y1+ "&x2=" + x2+ "&y2=" + y2; + HttpGet radarData = new HttpGet(radarUrl); + HttpResponse responseForRadar = httpClient.execute(radarData); + HttpEntity entityForRadar = responseForRadar.getEntity(); + JSONObject radarObject = JSONUtil.parseObj(EntityUtils.toString(entityForRadar)); + rainGrib2Layer = radarObject.get("data",RainGrib2Layer.class); + } catch (IOException e) { + e.printStackTrace(); + } + return rainGrib2Layer; + } + + + public List shortFore(ShortWeatherSo weatherSo) { + List rainLevelVos = realRainMapper.querySttpList(); + List gribList = Arrays.asList(getRadarData(weatherSo.getTm())); + return calcDrp(gribList,rainLevelVos); + } + + public List fore(WeatherSo weatherSo) { + List rainLevelVos = realRainMapper.querySttpList(); + return commonDataHandle(weatherSo,rainLevelVos); + } + + private List commonDataHandle(WeatherSo weatherSo,List list){ + List gribList = getGribData(weatherSo.getTm(),false); + if(CollectionUtils.isEmpty(list)){ + return list; + } + //24小时每个网格的总量 + List total = gribList.stream().filter(o -> o.getTmRange().getInterval() == 24).collect(Collectors.toList()); + //24小时每个网格的逐小时雨量 + List detail = gribList.stream().filter(o -> o.getTmRange().getInterval() == 1).collect(Collectors.toList()); + for(ForeRainVo vo : list){ + List resultList = getData(vo,total,detail); + vo.setTimeRainVos(resultList); + vo.setH1(resultList.get(0).getDrp()); + List list3=resultList.subList(0, Math.min(3, resultList.size())); + vo.setH3(list3.stream().map(ForeRainTimeVo::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add)); + List list6=resultList.subList(0, Math.min(6, resultList.size())); + vo.setH6(list6.stream().map(ForeRainTimeVo::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add)); + List list12=resultList.subList(0, Math.min(12, resultList.size())); + vo.setH12(list12.stream().map(ForeRainTimeVo::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add)); + } + return list.stream() + .sorted(Comparator.comparing(ForeRainVo::getH24, + Comparator.nullsFirst(Comparator.reverseOrder()))) + .collect(Collectors.toList()); + } + + public List getData(ForeRainVo vo, List total,List detail) { + List result = new ArrayList<>(); + RainGrib2Layer layer = total.get(0); + BigDecimal dh = layer.getDh(); + BigDecimal dw = layer.getDw(); + int nh = layer.getNh();//横向格子数 + int nw = layer.getNw();//纵向格子数 + //网格左下角经纬度 + BigDecimal x11 = layer.getX1(); + BigDecimal y11 = layer.getY1(); + BigDecimal lgtd = BigDecimal.ZERO; + BigDecimal lttd = BigDecimal.ZERO; + if(vo.getLgtd() != null){ + lgtd = new BigDecimal(vo.getLgtd()); + } + if(vo.getLttd() != null){ + lttd = new BigDecimal(vo.getLttd()); + } + int rownum = 0; + int colnum = 0; + for(int i = 0;i < nw;i++){ + for(int j=0;j< nh;j++){ + BigDecimal xMin = x11.add(dh.multiply(BigDecimal.valueOf(i))); + BigDecimal xMax = x11.add(dh.multiply(BigDecimal.valueOf(i+1))); + BigDecimal yMin = y11.add(dw.multiply(BigDecimal.valueOf(j))); + BigDecimal yMax = y11.add(dw.multiply(BigDecimal.valueOf(j+1))); + if(lgtd.compareTo(xMin)>=0 && lgtd.compareTo(xMax)<0 && lttd.compareTo(yMin)>=0 && lttd.compareTo(yMax)<0){ + rownum = j; + colnum = i; + vo.setH24(layer.data[rownum][colnum].doubleValue()); + break; + } + } + } + for(RainGrib2Layer lay : detail){ + result.add(ForeRainTimeVo.builder().tm(lay.getTmRange().getTm2()).drp(lay.data[rownum][colnum]).build()); + } + Map sumByGroup = result.stream() + .collect(Collectors.groupingBy(ForeRainTimeVo::getTm, Collectors.mapping(ForeRainTimeVo::getDrp, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); + List resultList = sumByGroup.entrySet().stream() + .map(entry -> ForeRainTimeVo.builder().tm(entry.getKey()).drp(entry.getValue().divide(new BigDecimal(1),1, RoundingMode.UP)).build()) + .sorted(Comparator.comparing(ForeRainTimeVo::getTm)) + .collect(Collectors.toList()); + return resultList; + } + + /** + * @description: 计算面降雨量 + * @param vo + * @param total + * @param detail + * @return: java.util.List + * @date: 2024-10-14, 周一, 17:52:27 + */ + public List getAreaData(ForeRainStatVo vo, List total, List detail) { + String geom = vo.getGeom(); + //处理面 + Polygon areaPolygon = handlePolygon(geom); + RainGrib2Layer layer = total.get(0); + BigDecimal dh = layer.getDh(); + BigDecimal dw = layer.getDw(); + int nh = layer.getNh();//横向格子数 + int nw = layer.getNw();//纵向格子数 + //网格左下角经纬度 + BigDecimal x11 = layer.getX1(); + BigDecimal y11 = layer.getY1(); + List meshrainVos = new ArrayList<>(); + for(int i = 0;i < nw;i++){ + for(int j=0;j< nh;j++){ + BigDecimal xMin = x11.add(dh.multiply(BigDecimal.valueOf(i))); + BigDecimal xMax = x11.add(dh.multiply(BigDecimal.valueOf(i+1))); + BigDecimal yMin = y11.add(dw.multiply(BigDecimal.valueOf(j))); + BigDecimal yMax = y11.add(dw.multiply(BigDecimal.valueOf(j+1))); + Coordinate[] c2 = { + new Coordinate(xMin.doubleValue(), yMin.doubleValue()), + new Coordinate(xMin.doubleValue(), yMax.doubleValue()), + new Coordinate(xMax.doubleValue(), yMax.doubleValue()), + new Coordinate(xMax.doubleValue(), yMin.doubleValue()), + new Coordinate(xMin.doubleValue(), yMin.doubleValue()) + }; + Polygon p2 = factory.createPolygon(new CoordinateArraySequence(c2)); + boolean intersects = areaPolygon.intersects(p2); + if(intersects){ + MeshrainVo meshrainVo = new MeshrainVo(); + meshrainVo.setColnum(i); + meshrainVo.setRownum(j); + meshrainVos.add(meshrainVo); + } + } + } + List result = new ArrayList<>(); + BigDecimal size = new BigDecimal(meshrainVos.size()); + for(MeshrainVo mesVo : meshrainVos){ + result.addAll(detail.stream().map(lay-> + ForeRainTimeVo.builder().tm(lay.getTmRange().getTm2()).drp(lay.data[mesVo.getRownum()][mesVo.getColnum()]).build() + ).collect(Collectors.toList())); + } + Map sumByGroup = result.stream() + .collect(Collectors.groupingBy(ForeRainTimeVo::getTm, Collectors.mapping(ForeRainTimeVo::getDrp, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); + List resultList = sumByGroup.entrySet().stream() + .map(entry -> ForeRainTimeVo.builder().tm(entry.getKey()).drp(entry.getValue().divide(size,1, RoundingMode.UP)).build()) + .sorted(Comparator.comparing(ForeRainTimeVo::getTm)) + .collect(Collectors.toList()); + vo.setDrp(calcSumDrp(meshrainVos,total)); + return resultList; + } + + private Polygon handlePolygon(String geom) { + JSONObject jsonObject = new JSONObject(geom); + JSONArray data = jsonObject.getJSONArray("coordinates"); + JSONArray data1 = data.getJSONArray(0); + JSONArray jsonArray = data1.getJSONArray(0); + Coordinate[] coords = new Coordinate[jsonArray.size()]; + for (int c = 0; c < jsonArray.size(); c++) { + BigDecimal x = (BigDecimal) jsonArray.getJSONArray(c).get(0); + BigDecimal y = (BigDecimal) jsonArray.getJSONArray(c).get(1); + coords[c] = new Coordinate(x.doubleValue(), y.doubleValue()); + } + return factory.createPolygon(new CoordinateArraySequence(coords)); + } + + private Double calcSumDrp(List meshrainVos, List total) { + BigDecimal size = new BigDecimal(meshrainVos.size()); + BigDecimal sumDrp = new BigDecimal(0); + for (MeshrainVo vo : meshrainVos){ + List drp = total.stream().map(o -> (o.getData()[vo.getRownum()][vo.getColnum()])).collect(Collectors.toList()); + sumDrp = drp.stream().reduce(sumDrp,BigDecimal::add); + } + return sumDrp.divide(size,1,RoundingMode.UP).doubleValue(); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastTaskService.java b/src/main/java/com/gunshi/project/ss/service/ForecastTaskService.java new file mode 100644 index 0000000..d29f88d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastTaskService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ForecastTaskMapper; +import com.gunshi.project.ss.model.ForecastTask; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 预报_预测自动任务管理表 + * author: cxw + * date: 2024-08-05 11:41:45 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastTaskService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastUService.java b/src/main/java/com/gunshi/project/ss/service/ForecastUService.java new file mode 100644 index 0000000..e617459 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastUService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ForecastUMapper; +import com.gunshi.project.ss.model.ForecastU; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 预报_时段单位线表 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastUService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ForecastUseparamService.java b/src/main/java/com/gunshi/project/ss/service/ForecastUseparamService.java new file mode 100644 index 0000000..114a94e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ForecastUseparamService.java @@ -0,0 +1,147 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ForecastUseparamMapper; +import com.gunshi.project.ss.model.ForecastUseparam; +import com.gunshi.project.ss.util.BigdecimalUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 预报_通用参数管理 + * author: cxw + * date: 2024-07-30 10:02:24 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ForecastUseparamService extends ServiceImpl +{ + + /** + * @description: 计算时间单位线u参数 + * @param areaF 流域面积 k㎡(承雨面积) + * @param lengthL 主河道长度 km + * @param j 主河道加权平均比降 千分率‰(河道坡降) + * @param dt 时段∆t,时间间隔,例如0.5 + * @param h h毫米净雨,例如1、10等,默认为1 + * @param slice 水文分区 + * @return: java.util.List + * @auther: cxw + * @date: 2024-11-06, 周三, 10:16:26 + */ + public List calcU(BigDecimal areaF, BigDecimal lengthL, BigDecimal j, double dt, BigDecimal h, String slice) { + // 计算m1、n + Map m1AndNMap = calcM1AndN(areaF, lengthL, j, slice); + BigDecimal m1 = m1AndNMap.get("m1"); + BigDecimal n = m1AndNMap.get("n"); + // k = m1 / n。如果m1有非线性改正,则为改正后的值。算例保留1位小数 + BigDecimal k = m1.divide(n, 3, BigDecimal.ROUND_HALF_UP); + /* + * 瞬时单位线u(0,t)=(1/(k*Γ(n)))*((t/k)^(n-1))*e^(-t/k) + */ + List> mapList = new ArrayList<>(); + Map initMap = new HashMap<>(); + initMap.put("t", BigDecimal.ZERO); + initMap.put("tDevideK", BigDecimal.ZERO); + initMap.put("st", BigDecimal.ZERO); + initMap.put("utt", BigDecimal.ZERO); + initMap.put("qtt", BigDecimal.ZERO); + mapList.add(initMap); + for (int i = 1; i <= 11; i++) { + Map result = new HashMap<>(); + // 表1-5地表径流过程计算表:t + BigDecimal t = BigDecimal.valueOf(dt * i); + result.put("t", t); + + // 表1-5地表径流过程计算表:t/k + BigDecimal x = t.divide(k, 10, BigDecimal.ROUND_HALF_UP);// x + result.put("tDevideK", x); + + BigDecimal alpha = n;// α + BigDecimal beta = BigDecimal.ONE;// β + // 表1-5地表径流过程计算表:s(t) + BigDecimal gammaDist = BigDecimal.valueOf(BigdecimalUtil.gammaDist(x.doubleValue(), alpha.doubleValue(), beta.doubleValue(), true)).setScale(10, BigDecimal.ROUND_HALF_UP);// 伽马分布 + result.put("st", gammaDist); + // 表1-5地表径流过程计算表:s(t-∆t)。stt为上一行的st + BigDecimal stt = BigDecimal.ZERO; + stt = mapList.get(i - 1).get("st").setScale(10, BigDecimal.ROUND_HALF_UP); + result.put("stt", stt); + + // 表1-5地表径流过程计算表:u(∆t,t)。utt=st-stt + BigDecimal utt = gammaDist.subtract(stt).setScale(10, BigDecimal.ROUND_HALF_UP); + result.put("utt", utt); + + // 表1-5地表径流过程计算表:q(∆t,t)。qtt=Fh*utt/(3.6*∆t) + BigDecimal qtt = areaF.multiply(h).multiply(utt).divide(new BigDecimal(3.6).multiply(t), 3, BigDecimal.ROUND_HALF_UP); + result.put("qtt", qtt); + mapList.add(result); + } + mapList.remove(0);// 去除initMap + List uList = mapList.stream().map(map -> map.get("qtt")).collect(Collectors.toList()); + return uList; + } + + + /** + * @description: 计算m1和n参数 + * @param areaF + * @param lengthL + * @param j + * @param slice + * @return: void + * @auther: cxw + * @date: 2024-11-06, 周三, 13:16:24 + */ + private Map calcM1AndN(BigDecimal areaF, BigDecimal lengthL, BigDecimal j, String slice) { + BigDecimal m1 = BigDecimal.ZERO; + BigDecimal n = BigDecimal.ZERO; + // 所属片区(全省山丘区瞬时单位线分三个片进行参数的地区综合,第一片包括水文分区 1、2、4区即京广线两侧及鄂东黄冈、咸宁地区一带,(江汉平原湖区在外);第二片包括水文分区6、8、9、11区即鄂北,鄂西北及宜昌地区长江以北一带;第三片包括7、10水文分区即清江流域,恩施地区) + if (slice.toUpperCase().equals("I")) {// I片(1、2、4区) + if (areaF.compareTo(new BigDecimal("30")) > 0) {// areaF > 30 + // m1 = 0.82*F^0.29*L^0.23*j^-0.20 + m1 = new BigDecimal("0.82").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.29)).multiply(BigdecimalUtil.bigDecimalExponentiation(lengthL, 0.23)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, -0.20)); + } else if (areaF.compareTo(new BigDecimal("30")) <= 0) {// areaF <= 30 + // m1 = 1.38*F^0.27*L^0.216*j^-0.185 + m1 = new BigDecimal("1.38").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.27)).multiply(BigdecimalUtil.bigDecimalExponentiation(lengthL, 0.216)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, -0.185)); + } + if (j.compareTo(new BigDecimal("5")) > 0) {// j > 5 + // n = 0.34*F^0.35*j^0.1 + n = new BigDecimal("0.34").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.35)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, 0.1)); + } else if (j.compareTo(new BigDecimal("5")) <= 0) {// j <= 5 + // n = 1.04*F^0.3*j^0.1 + n = new BigDecimal("1.04").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.3)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, 0.1)); + } + } else if (slice.toUpperCase().equals("II")) {// II片(6、8、9、11区) + // m1 = 1.64*F^0.231*L^0.131*j^-0.08 + m1 = new BigDecimal("1.64").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.231)).multiply(BigdecimalUtil.bigDecimalExponentiation(lengthL, 0.131)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, -0.08)); + // n = 0.529*F^0.25*j^0.20 + n = new BigDecimal("0.529").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.25)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, 0.20)); + } else if (slice.toUpperCase().equals("III")) {// III片(7、10区) + // m1 = 0.8*F^0.3*L^0.1*j^-0.06 + m1 = new BigDecimal("0.8").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.3)).multiply(BigdecimalUtil.bigDecimalExponentiation(lengthL, 0.1)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, -0.06)); + // n = 0.69*F^0.224*j^0.092 + n = new BigDecimal("0.69").multiply(BigdecimalUtil.bigDecimalExponentiation(areaF, 0.224)).multiply(BigdecimalUtil.bigDecimalExponentiation(j, 0.092)); + } + // TODO 特殊流域适用的公式 + + // TODO 当设计雨强超过10mm/h时,除熔岩地区外一般应作参数m1外延的非线性改正 + + BigDecimal finalM1 = m1.setScale(3, BigDecimal.ROUND_HALF_UP); + BigDecimal finalN = n.setScale(3, BigDecimal.ROUND_HALF_UP); + return new HashMap<>() {{ + put("m1", finalM1); + put("n", finalN); + }}; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/GatePoreService.java b/src/main/java/com/gunshi/project/ss/service/GatePoreService.java new file mode 100644 index 0000000..a2a4ee8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/GatePoreService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.GatePoreMapper; +import com.gunshi.project.ss.model.GatePore; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 闸孔信息表 + * author: xusan + * date: 2024-09-26 10:44:57 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class GatePoreService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/GateValveCctvRelService.java b/src/main/java/com/gunshi/project/ss/service/GateValveCctvRelService.java new file mode 100644 index 0000000..6f91e7b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/GateValveCctvRelService.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.GateValveCctvRelPage; +import com.gunshi.project.ss.entity.vo.GateValveCctvRelVo; +import com.gunshi.project.ss.mapper.GateValveCctvRelMapper; +import com.gunshi.project.ss.model.GateValveCctvRel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 闸阀关联视频点 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class GateValveCctvRelService extends ServiceImpl +{ + + public Page pages(GateValveCctvRelPage page){ + return getBaseMapper().pages(page.getPageSo().toPage(), page); + } + + public List queryList(String valveCode) { + return baseMapper.queryList(valveCode); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/GateValveRService.java b/src/main/java/com/gunshi/project/ss/service/GateValveRService.java new file mode 100644 index 0000000..e7ba724 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/GateValveRService.java @@ -0,0 +1,38 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.GateHisPageSo; +import com.gunshi.project.ss.entity.vo.GateStautsVo; +import com.gunshi.project.ss.mapper.GateValveRMapper; +import com.gunshi.project.ss.model.GateValveR; +import com.gunshi.project.ss.util.ExcelUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 闸阀开关历史表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class GateValveRService extends ServiceImpl +{ + + public Page pageQuery(GateHisPageSo so) { + return baseMapper.pageQuery(so.getPageSo().toPage(),so); + } + + public void export(GateHisPageSo so, HttpServletResponse response) { + List list = baseMapper.hisList(so); + ExcelUtil.exportExcel(list,"闸阀开度历史",GateStautsVo.class,response,"闸阀开度历史"); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/GateValveRealService.java b/src/main/java/com/gunshi/project/ss/service/GateValveRealService.java new file mode 100644 index 0000000..935c124 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/GateValveRealService.java @@ -0,0 +1,412 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +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.gunshi.project.ss.entity.so.GateHisPageSo; +import com.gunshi.project.ss.entity.vo.AttResBaseVo; +import com.gunshi.project.ss.entity.vo.GateStautsVo; +import com.gunshi.project.ss.entity.vo.GateValveOplogVo; +import com.gunshi.project.ss.mapper.GateValveRealMapper; +import com.gunshi.project.ss.mapper.StWaterRRealMapper; +import com.gunshi.project.ss.mapper.TyYearRainfallMapper; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.DataHandleUtil; +import com.gunshi.project.ss.util.DateUtil; +import com.gunshi.project.ss.util.ExcelUtil; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 闸阀开关表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class GateValveRealService extends ServiceImpl +{ + @Resource + private com.gunshi.project.ss.model.GateValveKeyAutoDao gateValveKeyAutoDao; + + @Resource + private com.gunshi.project.ss.model.GateValveOplogAutoDao gateValveOplogAutoDao; + + @Resource + private ReservoirWaterService reservoirWaterService; + + @Resource + private StWaterRRealMapper stWaterRRealMapper; + + @Resource + private TyYearRainfallMapper tyYearRainfallMapper; + + public List gateStatusList() { + List list = baseMapper.gateStatusList(); + for(GateStautsVo vo : list){ + if(vo.getTm() != null && DateUtil.hoursBetweenDate(vo.getTm(), new Date()) > 2){ + vo.setFlag(1); + } + } + return list; + } + + public BigDecimal realQ(String valveCode) { + return baseMapper.realQ(valveCode); + } + + public String control(GateValveKey gateValveKey) { + //先判断密码是否正确 + String valveCode = gateValveKey.getValveCode(); + String key = gateValveKey.getKey(); + GateValveKey valveKey = gateValveKeyAutoDao.getById(valveCode); + if(valveKey == null || !key.equals(valveKey.getKey())){ + throw new IllegalArgumentException("密码不正确"); + } + //生成闸阀操作日志 + GateValveOplog oplog = new GateValveOplog(); + oplog.setId(IdWorker.getId()); + oplog.setStatus(gateValveKey.getStatus()); + oplog.setOpContent("设置闸阀开度为"+gateValveKey.getStatus()); + oplog.setValveCode(valveCode); + oplog.setTm(new Date()); + oplog.setOpUserId(1L); + oplog.setOpUserName("胡兵"); + + GateValveReal valveReal = this.getOne(new QueryWrapper().eq("valve_code", valveCode)); + oplog.setBeforeStatus(valveReal == null ? "-" : valveReal.getStatus()); + gateValveOplogAutoDao.save(oplog); + //todo 给闸阀下发调节指令 +// GateValveR gateValveR = new GateValveR(); +// BeanUtils.copyProperties(gateValveKey,gateValveR); +// gateValveR.setTm(new Date()); +// gateValveRMapper.insert(gateValveR); +// +// GateValveReal real = new GateValveReal(); +// BeanUtils.copyProperties(gateValveKey,real); +// real.setTm(new Date()); +// this.remove(new QueryWrapper().eq("valve_code",valveCode)); +// this.save(real); + return "调节闸阀成功"; + } + + public Page logPage(GateHisPageSo so) { + return baseMapper.logPage(so.getPageSo().toPage(),so); + } + + public GateValveOplog loginfo(String code) { + if(StringUtils.isBlank(code)){ + return null; + } + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(GateValveOplog::getValveCode,code); + qw.orderByDesc(GateValveOplog::getTm).last("LIMIT 1"); + List list = gateValveOplogAutoDao.list(qw); + return list.isEmpty() ? null : list.get(0); + } + + public void logExport(GateHisPageSo so, HttpServletResponse response) { + List logList = baseMapper.logList(so); + ExcelUtil.exportExcel(logList,"闸阀操作日志",GateValveOplogVo.class,response,"闸阀操作日志"); + } + + @Autowired + private StEvpoService stEvpoService; + + @Autowired + private StFlowRService stFlowRService; + + @Autowired + private StWaterRRealService stWaterRRealService; + + public Map supplyTime(Integer year, Integer month) { + Map result = new HashMap<>(); + + // 获取所有月份的日蒸发量数据 + List allEvaporationData = stEvpoService.lambdaQuery().list(); + Map evaporationMap = allEvaporationData.stream() + .collect(Collectors.toMap(StEvpo::getMonth, StEvpo::getEvaporation)); + + // 获取水库基础数据 + List reservoirList = reservoirWaterService.list(); + if (CollectionUtils.isEmpty(reservoirList)) { + return result; + } + AttResBaseVo reservoir = reservoirList.get(0); + + // 初始可供水量 = 实时库容 - 死库容 (万m³) + BigDecimal nowCap = reservoir.getNowCap() == null ? BigDecimal.ZERO : reservoir.getNowCap(); + BigDecimal deadCap = reservoir.getDeadCap() == null ? BigDecimal.ZERO : reservoir.getDeadCap(); + BigDecimal availableWater = nowCap.subtract(deadCap); + + Date tm = reservoir.getTm(); + Calendar now = Calendar.getInstance(); + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + now.set(Calendar.MILLISECOND, 0); + Date currentHour = now.getTime(); + if(tm.before(currentHour)){ + result.put(BigDecimal.ZERO,"当前时间无最新水位数据"); + return result; + } + + // 如果初始可供水量就为0或负数,直接返回 + if (availableWater.compareTo(BigDecimal.ZERO) <= 0) { + result.put(BigDecimal.ZERO, "当前无可供水量"); + return result; + } + + // 获取当前流量数据 + List waterFlowList = stWaterRRealService.listNewData(); + BigDecimal totalFlow = waterFlowList.stream() + .map(StWaterRReal::getQ) + .reduce(BigDecimal.ZERO, BigDecimal::add); + // 计算日供水量 (m³/d) 并转换为万m³/d + BigDecimal dailySupply = totalFlow.multiply(new BigDecimal(3600 * 24)); + BigDecimal dailySupplyInTenThousand = dailySupply.divide(new BigDecimal(10000), 10, RoundingMode.HALF_UP); + + // 从当前时间开始计算 + Calendar calendar = Calendar.getInstance(); + int currentYear = calendar.get(Calendar.YEAR); + int currentMonth = calendar.get(Calendar.MONTH) + 1; + + // 计算当前月份剩余天数 + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); + int daysInCurrentMonth = calendar.get(Calendar.DAY_OF_MONTH); + int currentDay = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); + int remainingDaysInMonth = daysInCurrentMonth - currentDay + 1; + + BigDecimal totalSupplyDays = BigDecimal.ZERO; + BigDecimal remainingWater = availableWater; + + // 判断是否计算预测水量 + boolean calculatePredictWater = (year != null && month != null); + + // 逐月计算,直到可供水量耗尽 + int calcYear = currentYear; + int calcMonth = currentMonth; + boolean waterExhausted = false; + + while (remainingWater.compareTo(BigDecimal.ZERO) > 0 && !waterExhausted) { + // 获取当前计算月份的蒸发量 + String monthKey = String.valueOf(calcMonth); + BigDecimal monthlyEvaporation = evaporationMap.getOrDefault(Integer.valueOf(monthKey), BigDecimal.ZERO); + + // 计算当前月份的预测来水量(只有当传入年份和月份不为空,且当前月份在预测范围内时才计算) + BigDecimal monthlyPredictWater = BigDecimal.ZERO; + if (calculatePredictWater && isMonthInPredictRange(calcMonth, currentMonth, month)) { + monthlyPredictWater = calcMonthlyPredictV(year, calcMonth, reservoir.getWatShedArea()); + } + + // 当前月份总可用水量 = 剩余水量 + 预测来水量 + BigDecimal monthlyTotalWater = remainingWater.add(monthlyPredictWater); + + // 当前月份日消耗量 = 日供水量 + 日蒸发量 (万m³/d) + BigDecimal dailyConsumption = dailySupplyInTenThousand.add(monthlyEvaporation); + + if (dailyConsumption.compareTo(BigDecimal.ZERO) <= 0) { + // 如果日消耗量为0或负数,说明可以无限供水 + totalSupplyDays = new BigDecimal("9999"); // 表示无限期 + break; + } + + // 计算当前月份可供水天数 + int daysInMonth = getDaysInMonth(calcYear, calcMonth); + int daysToCalculate = (calcYear == currentYear && calcMonth == currentMonth) ? + remainingDaysInMonth : daysInMonth; + + // 当前月份最大可供水量 = 日消耗量 * 当月剩余天数 + BigDecimal monthlyMaxConsumption = dailyConsumption.multiply(new BigDecimal(daysToCalculate)); + + if (monthlyTotalWater.compareTo(monthlyMaxConsumption) >= 0) { + // 当前月份水量充足,可以支撑整个月 + totalSupplyDays = totalSupplyDays.add(new BigDecimal(daysToCalculate)); + remainingWater = monthlyTotalWater.subtract(monthlyMaxConsumption); + + // 移动到下个月 + calcMonth++; + if (calcMonth > 12) { + calcMonth = 1; + calcYear++; + } + } else { + // 当前月份水量不足,计算具体天数 + BigDecimal remainingDays = monthlyTotalWater.divide(dailyConsumption, 1, RoundingMode.HALF_UP); + totalSupplyDays = totalSupplyDays.add(remainingDays); + waterExhausted = true; + } + } + + // 计算结束日期 + long totalDays = DataHandleUtil.BigDecimalIntegerPart(totalSupplyDays); + + String endDate = DateUtil.getPlusDate(new Date(), totalDays); + + result.put(totalSupplyDays, endDate); + return result; + } + + /** + * 判断当前计算月份是否在预测范围内 + * 预测范围:从当前月份到传入的截至月份 + */ + private boolean isMonthInPredictRange(int calcMonth, int currentMonth, int endMonth) { + if (endMonth >= currentMonth) { + // 不跨年情况:当前月份 <= 计算月份 <= 截至月份 + return calcMonth >= currentMonth && calcMonth <= endMonth; + } else { + // 跨年情况:计算月份 >= 当前月份 或者 计算月份 <= 截至月份 + return calcMonth >= currentMonth || calcMonth <= endMonth; + } + } + + /** + * 获取指定年份月份的天数 + */ + private int getDaysInMonth(int year, int month) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, year); + calendar.set(Calendar.MONTH, month - 1); + return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + } + + + +// public Map supplyTime(Integer year, Integer month) { +// StEvpo stEvpo = stEvpoService.lambdaQuery().eq(StEvpo::getMonth, month.toString()).list().get(0); +// BigDecimal evpo = BigDecimal.ZERO; //蒸发量 (万m³ +// if(stEvpo != null){ +// evpo = stEvpo.getEvaporation(); +// } +// Map map = new HashMap<>(); +// /** +// * 可供水量= 实时库容 - 死库容 +// * 小时水量= (输水管流量 + 放水管流量)*3600 ->改为 (输水管流量 + 放水管流量)*3600 + 蒸发量 +// * 可供水小时数 = 可供水量 * 10000/ 小时水量 ->改为 (可供水量 + 预测水量如果有) * 10000 / 小时水量 +// * 可供水天数 = 可供水小时数换算为天数 +// */ +// List list = reservoirWaterService.list(); +// if(CollectionUtils.isEmpty(list)){ +// return map; +// } +// AttResBaseVo attResBaseVo = list.get(0); +// BigDecimal nowCap = attResBaseVo.getNowCap() == null ? new BigDecimal(0) : attResBaseVo.getNowCap(); +// BigDecimal deadCap = attResBaseVo.getDeadCap() == null ? new BigDecimal(0) : attResBaseVo.getDeadCap(); +// +// BigDecimal supplyV = nowCap.subtract(deadCap); +// if(year != null){ +// //计算预测来水量 +// BigDecimal predictV = calcPredictV(year,month,attResBaseVo.getWatShedArea()); +// supplyV = supplyV.add(predictV); +// } +// List water = stWaterRRealMapper.listRelated(); +// //小时水量 +// BigDecimal hourQ = water.stream().map(StWaterRReal::getQ).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(new BigDecimal(3600)); +// BigDecimal day = supplyV.multiply(new BigDecimal(10000)).divide(hourQ.multiply(new BigDecimal(24)),1, RoundingMode.HALF_UP); +// long l = DataHandleUtil.BigDecimalIntegerPart(day); +// String date = DateUtil.getPlusDate(new Date(), l); +// map.put(day,date); +// return map; +// } + + /** + * 新增方法:计算指定月份的预测来水量(独立月份计算) + * 例子:10.14-10.30预测水量为40,11.01-11.30预测水量为60 + */ + private BigDecimal calcMonthlyPredictV(Integer year, Integer month, BigDecimal watShedArea) { + LocalDate now = LocalDate.now(); + Integer nowMonth = now.getMonthValue(); + + // 查询指定月份的降雨量数据 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(TyYearRainfall::getYear, year) + .eq(TyYearRainfall::getMonth, month) + .eq(TyYearRainfall::getType, 2); + + TyYearRainfall rainfall = tyYearRainfallMapper.selectOne(queryWrapper); + + if (rainfall == null || rainfall.getDrp() == null) { + return BigDecimal.ZERO; + } + + BigDecimal monthlyRainfall = rainfall.getDrp(); + + // 如果是当前月份,需要按剩余天数比例计算 + if (month.equals(nowMonth)) { + int dayOfMonth = now.getDayOfMonth(); + int totalDaysInMonth = now.lengthOfMonth(); + int remainingDays = totalDaysInMonth - dayOfMonth + 1; + + // 按剩余天数比例计算当月有效降雨量 + monthlyRainfall = new BigDecimal(remainingDays) + .multiply(monthlyRainfall) + .divide(new BigDecimal(totalDaysInMonth), 2, RoundingMode.HALF_UP); + } + // 如果不是当前月份,则使用整月的降雨量(不需要按比例计算) + + // 预测来水量 = 月降雨量 * 水库坝址控制流域面积 / 1000 + BigDecimal sum = monthlyRainfall.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP); + return sum.multiply(watShedArea); + } + + + private BigDecimal calcPredictV(Integer year, Integer month,BigDecimal watShedArea) { + LocalDate now = LocalDate.now(); + Integer nowMonth = now.getMonthValue(); + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(TyYearRainfall::getYear,year) + .eq(TyYearRainfall::getType,2) + .ge(TyYearRainfall::getMonth,nowMonth) + .le(TyYearRainfall::getMonth,month); + List list = tyYearRainfallMapper.selectList(queryWrapper); + + //和当前月份相同的降雨量 + Optional first = list.stream().filter(o -> nowMonth == o.getMonth()).findFirst(); + BigDecimal drp = first.isPresent() ? first.get().getDrp() : new BigDecimal(0); + int dayOfMonth = now.getDayOfMonth(); + int total = now.lengthOfMonth(); + BigDecimal nowMonthDrp = new BigDecimal((total - dayOfMonth + 1)).multiply(drp).divide(new BigDecimal(total), 2, RoundingMode.HALF_UP); + + //当前月到预测月份的降雨量 + BigDecimal value = list.stream().filter(o -> nowMonth != o.getMonth()).map(TyYearRainfall::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add); + + //预测来水量 = 月降雨量和 * 水库坝址控制流域面积 + BigDecimal sum = nowMonthDrp.add(value).divide(new BigDecimal(1000),2,RoundingMode.HALF_UP); + return sum.multiply(watShedArea); + } + + public BigDecimal predictWater(Integer year, Integer month) { + List list = reservoirWaterService.list(); + if(CollectionUtils.isEmpty(list)){ + return new BigDecimal(0); + } + return calcPredictV(year,month,list.get(0).getWatShedArea()); + } + + public BigDecimal predictWaterMonth(Integer year, Integer month) { + List list = reservoirWaterService.list(); + if(CollectionUtils.isEmpty(list)){ + return new BigDecimal(0); + } + return calcMonthlyPredictV(year,month,list.get(0).getWatShedArea()); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/HiddenInfoService.java b/src/main/java/com/gunshi/project/ss/service/HiddenInfoService.java new file mode 100644 index 0000000..b7579d8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/HiddenInfoService.java @@ -0,0 +1,39 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.HiddenInfoMapper; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.HiddenInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class HiddenInfoService extends ServiceImpl { + + @Autowired + private FileAssociationsService fileService; + + public String getGroupId(){ + return "hiddenInfo"; + } + + public void saveFile(List files, String businessId) { + fileService.saveFile(files,getGroupId(),businessId); + } + + public void deleteFile(String businessId) { + fileService.deleteFile(getGroupId(),businessId); + } + + public List getFiles(String businessId) { + List files = fileService.getFiles(getGroupId(), businessId); + return files; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/HisWaterDataService.java b/src/main/java/com/gunshi/project/ss/service/HisWaterDataService.java new file mode 100644 index 0000000..07569a0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/HisWaterDataService.java @@ -0,0 +1,207 @@ +package com.gunshi.project.ss.service; + + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.WriteTable; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.gunshi.project.ss.entity.dto.ExportCommonDto; +import com.gunshi.project.ss.entity.so.HisWaterDataPageSo; +import com.gunshi.project.ss.entity.vo.HisWaterDataVo; +import com.gunshi.project.ss.mapper.HisWaterDataMapper; +import com.gunshi.project.ss.model.HisWaterData; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.IOException; +import java.io.Serializable; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class HisWaterDataService extends ServiceImpl { + public Page pageQuery(HisWaterDataPageSo page) { + Page hisWaterDataPage = this.baseMapper.queryPage(page.getPageSo().toPage(),page); + fillList(hisWaterDataPage); + return hisWaterDataPage; + } + + private void fillList(Page ret) { + if (ret.getRecords() != null) { + queryChild(ret.getRecords()); + } + } + + private void queryChild(List records) { + for (HisWaterDataVo record : records) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HisWaterData::getYear, record.getYear()) + .eq(HisWaterData::getType,2) + .orderByAsc(HisWaterData::getMonth); + record.setChildren(this.list(queryWrapper)); + } + } + + public boolean saveData(HisWaterDataVo dto) { + checkParam(dto); + HisWaterData hisWaterData = new HisWaterData(); + BeanUtils.copyProperties(dto,hisWaterData); + List list = dto.getChildren(); + list.stream().forEach(o ->{ + o.setId(null); + }); + hisWaterData.setId(null); + list.add(hisWaterData); + boolean flag = saveBatch(list); + return flag; + } + + private void checkParam(HisWaterDataVo dto) { + Long id = dto.getId(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(HisWaterData::getYear,dto.getYear()) + .eq(HisWaterData::getType,1); + if(id != null){ + queryWrapper.ne(HisWaterData::getId,id); + } + if(this.count(queryWrapper ) > 0){ + throw new IllegalArgumentException("该年份已存在历史降雨资料"); + } + Long len = dto.getChildren().stream().map(HisWaterData::getMonth).distinct().collect(Collectors.counting()); + if(dto.getChildren().size() != len.intValue()){ + throw new IllegalArgumentException("月份不可重复"); + } + } + + + public boolean updateData(HisWaterDataVo dto) { + checkParam(dto); + HisWaterData hisWaterData = new HisWaterData(); + BeanUtils.copyProperties(dto,hisWaterData); + if(dto.getChildren() == null || dto.getChildren().isEmpty()){ + dto.setAvgWater(BigDecimal.ZERO); + } + updateById(hisWaterData); + deleteMonthData(dto.getYear()); + List list = dto.getChildren(); + list.stream().forEach(o ->{ + o.setYear(dto.getYear()); + }); + return saveBatch(list); + } + + private void deleteMonthData(Integer year) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(HisWaterData::getYear,year) + .eq(HisWaterData::getType,2); + this.remove(queryWrapper); + } + + public Boolean removeData(Serializable id) { + HisWaterData hisWaterData = this.getById(id); + deleteMonthData(hisWaterData.getYear()); + return this.removeById(id); + } + + public void export(List records, HttpServletResponse response) { + try { + // 设置响应头 + String fileName = URLEncoder.encode("历史蓄水量数据", "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + // 创建ExcelWriter + ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 自动列宽 + .build(); + + // 创建主工作表 + WriteSheet writeSheet = EasyExcel.writerSheet("历史蓄水量数据").build(); + + // 当前行数据 + List> dataList = new ArrayList<>(); + + // 遍历每年的数据 + for (HisWaterDataVo yearData : records) { + // 添加年份标题行 + List yearRow = new ArrayList<>(); + yearRow.add(yearData.getYear() + "年"); + yearRow.add(""); // 第二列为空 + dataList.add(yearRow); + + // 添加表头 + List headerRow = new ArrayList<>(); + headerRow.add("月份"); + headerRow.add("月份平均蓄水量"); + dataList.add(headerRow); + + // 添加月份数据 + if (yearData.getChildren() != null) { + for (HisWaterData monthData : yearData.getChildren()) { + List monthRow = new ArrayList<>(); + monthRow.add(monthData.getMonth() + "月"); + monthRow.add(monthData.getAvgWater()); + dataList.add(monthRow); + } + } + + // 添加年度总蓄水量行 + List totalRow = new ArrayList<>(); + totalRow.add("年度总蓄水量"); + totalRow.add(yearData.getAvgWater()); + dataList.add(totalRow); + + // 添加空行分隔 + dataList.add(new ArrayList<>()); + dataList.add(new ArrayList<>()); + } + + // 创建表格并写入数据 + WriteTable writeTable = EasyExcel.writerTable() + .needHead(false) // 不显示表头,因为我们手动添加了 + .build(); + + // 写入数据 + excelWriter.write(dataList, writeSheet, writeTable); + + // 关闭流 + excelWriter.finish(); + + } catch (IOException e) { + throw new RuntimeException("导出Excel失败", e); + } + } + + public List yearList() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HisWaterData::getType,1); + return this.baseMapper.selectList(queryWrapper); + } + + public List selectList(ExportCommonDto dto) { + List hisWaterDataVos = this.baseMapper.selectYearList(dto); + if(!hisWaterDataVos.isEmpty()){ + queryChild(hisWaterDataVos); + } + return hisWaterDataVos; + } + + public List getYearList() { + return this.baseMapper.selectYear(); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ISCAIEventService.java b/src/main/java/com/gunshi/project/ss/service/ISCAIEventService.java new file mode 100644 index 0000000..c4c5cb3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ISCAIEventService.java @@ -0,0 +1,49 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.ISCAIEventPageSo; +import com.gunshi.project.ss.mapper.ISCAIEventMapper; +import com.gunshi.project.ss.model.ISCAIEvent; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ISCAIEventService extends ServiceImpl { + + + public Page pageInfo(ISCAIEventPageSo dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (dto.getEventLevel() != null) { + queryWrapper.eq(ISCAIEvent::getEventLevel, dto.getEventLevel()); + } + + if(dto.getHandleStatus() != null){ + queryWrapper.eq(ISCAIEvent::getHandleStatus, dto.getHandleStatus()); + } + + if(dto.getEventTypeName() != null){ + queryWrapper.like(ISCAIEvent::getEventTypeName, dto.getEventTypeName()); + } + + if(dto.getResName() != null){ + queryWrapper.like(ISCAIEvent::getResName, dto.getResName()); + } + + if(dto.getStartTime() != null){ + queryWrapper.ge(ISCAIEvent::getStartTime, dto.getStartTime()); + } + + if(dto.getEndTime() != null){ + queryWrapper.le(ISCAIEvent::getEndTime, dto.getEndTime()); + } + queryWrapper.orderByDesc(ISCAIEvent::getStartTime); + Page iscaiEventPage = this.baseMapper.selectPage(dto.getPageSo().toPage(), queryWrapper); + return iscaiEventPage; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/IaCBsnssinfoService.java b/src/main/java/com/gunshi/project/ss/service/IaCBsnssinfoService.java new file mode 100644 index 0000000..1c2eaa3 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/IaCBsnssinfoService.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.HomeIaCBsnssinfoVo; +import com.gunshi.project.ss.mapper.IaCBsnssinfoMapper; +import com.gunshi.project.ss.model.IaCBsnssinfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 防治区企事业单位汇总表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class IaCBsnssinfoService extends ServiceImpl +{ + + public List getDetailsAndMonitoringDataLis() { + return baseMapper.getDetailsAndMonitoringDataLis(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/IaCDanadService.java b/src/main/java/com/gunshi/project/ss/service/IaCDanadService.java new file mode 100644 index 0000000..ef1ac59 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/IaCDanadService.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.HomeIaCDanadVo; +import com.gunshi.project.ss.mapper.IaCDanadMapper; +import com.gunshi.project.ss.model.IaCDanad; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 危险区基本情况调查成果汇总表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class IaCDanadService extends ServiceImpl +{ + + public List getDetailsAndMonitoringDataLis() { + return baseMapper.getDetailsAndMonitoringDataLis(); + } + + public HomeIaCDanadVo detail(String id) { + return baseMapper.detail(id); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/IaCFlrvvlgService.java b/src/main/java/com/gunshi/project/ss/service/IaCFlrvvlgService.java new file mode 100644 index 0000000..d0caf9d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/IaCFlrvvlgService.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.HomeIaCFlrvvlgVo; +import com.gunshi.project.ss.mapper.IaCFlrvvlgMapper; +import com.gunshi.project.ss.model.IaCFlrvvlg; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 重要沿河村落居民户调查成果表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class IaCFlrvvlgService extends ServiceImpl +{ + + public List getDetailsAndMonitoringDataLis() { + return baseMapper.getDetailsAndMonitoringDataLis(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/IcWaterForecastDetailService.java b/src/main/java/com/gunshi/project/ss/service/IcWaterForecastDetailService.java new file mode 100644 index 0000000..6f940b2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/IcWaterForecastDetailService.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.IcWaterForecastDetailMapper; +import com.gunshi.project.ss.model.IcWaterForecastDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class IcWaterForecastDetailService extends ServiceImpl { + + + public List listByForecastId(Long forecastId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(IcWaterForecastDetail::getIcWaterId,forecastId); + List icWaterForecastDetails = this.baseMapper.selectList(queryWrapper); + return icWaterForecastDetails; + } + + public void removeByForecastId(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(IcWaterForecastDetail::getIcWaterId,id); + this.remove(queryWrapper); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/IcWaterForecastService.java b/src/main/java/com/gunshi/project/ss/service/IcWaterForecastService.java new file mode 100644 index 0000000..aa34f6f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/IcWaterForecastService.java @@ -0,0 +1,344 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.gunshi.project.ss.common.util.LocalDateTimeConverter; +import com.gunshi.project.ss.entity.dto.icWaterForecastCaculateDto; +import com.gunshi.project.ss.entity.so.IcWaterForecastPageSo; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import com.gunshi.project.ss.mapper.IcWaterForecastMapper; +import com.gunshi.project.ss.model.*; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.YearMonth; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class IcWaterForecastService extends ServiceImpl { + + @Autowired + private IcWaterForecastDetailService icWaterForecastDetailService; + + @Autowired + private ForecastUseparamService forecastUseparamService; + + @Autowired + private TyYearRainfallService tyYearRainfallService;//典型年降雨资料 + + @Autowired + private ForecastResultsService forecastResultsService;//洪水预报 + + + + + public IcWaterForecast saveData(IcWaterForecast dto) { + BigDecimal totalWater = BigDecimal.ZERO; + dto.setCreateTime(LocalDateTime.now()); + List details = dto.getDetails(); + for (IcWaterForecastDetail detail : details) { + totalWater = totalWater.add(detail.getForecastWater() != null?detail.getForecastWater():BigDecimal.ZERO); + } + dto.setForecastWater(totalWater); + if(dto.getType() == 1){ + LocalDateTime now = LocalDateTime.now(); + LocalDateTime nowHour = now.withMinute(0).withSecond(0).withNano(0); + LocalDateTime plusHours = nowHour.plusHours(dto.getHours()); + dto.setStartTime(nowHour); + dto.setEndTime(plusHours); + } + save(dto); + details.stream().forEach(item -> { + item.setIcWaterId(dto.getId()); + }); + dto.setDetails(details); + icWaterForecastDetailService.saveBatch(details); + return dto; + } + + + public IcWaterForecast queryById(Long id){ + IcWaterForecast icWaterForecast = this.baseMapper.selectById(id); + if(icWaterForecast == null){ + return icWaterForecast; + } + icWaterForecast.setDetails(icWaterForecastDetailService.listByForecastId(id)); + return icWaterForecast; + } + + + public Page pageQuery(IcWaterForecastPageSo pageSo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (pageSo.getType() != null) { + queryWrapper.eq(IcWaterForecast::getType, pageSo.getType()); + } + + if (!StringUtils.isBlank(pageSo.getPlanName())) { + queryWrapper.like(IcWaterForecast::getPlanName, pageSo.getPlanName()); + } + + if (pageSo.getDateTimeRangeSo() != null) { + queryWrapper.ge(IcWaterForecast::getCreateTime, pageSo.getDateTimeRangeSo().getStart()); + queryWrapper.le(IcWaterForecast::getCreateTime, pageSo.getDateTimeRangeSo().getEnd()); + } + queryWrapper.orderByDesc(IcWaterForecast::getCreateTime); + Page icWaterForecastPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); + for (IcWaterForecast record : icWaterForecastPage.getRecords()) { + List icWaterForecastDetails = icWaterForecastDetailService.listByForecastId(record.getId()); + record.setDetails(icWaterForecastDetails); + } + return icWaterForecastPage; + } + + public IcWaterForecast updateData(IcWaterForecast dto) { + Long deleteId = dto.getId(); + icWaterForecastDetailService.removeByForecastId(deleteId); + removeById(deleteId); + BigDecimal totalWater = BigDecimal.ZERO; + for (IcWaterForecastDetail detail : dto.getDetails()) { + totalWater = totalWater.add(detail.getForecastWater() != null?detail.getForecastWater():BigDecimal.ZERO); + } + dto.setForecastWater(totalWater); + dto.setCreateTime(LocalDateTime.now()); + if(dto.getType() == 1){ + LocalDateTime now = LocalDateTime.now(); + LocalDateTime nowHour = now.withMinute(0).withSecond(0).withNano(0); + LocalDateTime plusHours = nowHour.plusHours(dto.getHours()); + dto.setStartTime(nowHour); + dto.setEndTime(plusHours); + } + save(dto); + dto.getDetails().stream().forEach(item -> { + item.setIcWaterId(dto.getId()); + }); + icWaterForecastDetailService.saveBatch(dto.getDetails()); + return dto; + + } + + public Boolean delData(Serializable id) { + icWaterForecastDetailService.removeByForecastId(Long.valueOf(id.toString())); + removeById(id); + return true; + } + + public List caculate(icWaterForecastCaculateDto dto) { + //获取水库承雨面积 + // 承雨面积areaF:"cymj", 河道长lengthL:"hdc", 河道坡降j:"hdpj", 时段∆t:"dt", h毫米净雨:"h" + QueryWrapper qw = new QueryWrapper().in("param_code", "cymj", "hdc", "hdpj", "dt", "h"); + List> uMaps = forecastUseparamService.listMaps(qw); + Map uMap = uMaps.stream().collect(Collectors.toMap(map -> (String) map.get("param_code"), map -> (String) map.get("param_value"))); + if(uMap.size() <=0 || uMap.get("cymj") == null){ + throw new IllegalArgumentException("水库承雨面积参数为空,请检查"); + } + List icWaterForecastDetails; + if(dto.getType() == 0){ + //长期预测 + icWaterForecastDetails = longForecast(new BigDecimal(uMap.get("cymj")), dto); + }else{ + //短期预测 + ForecastTask forecastTask = new ForecastTask(); + // 设置当前时间整点 + Integer hours = dto.getHours(); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime nowHour = now.withMinute(0).withSecond(0).withNano(0); + forecastTask.setNowTime(LocalDateTimeConverter.toDate(nowHour)); + + // 设置开始时间(当前时间减去一天) + LocalDateTime startTime = nowHour.minusDays(1); + forecastTask.setStartTime(LocalDateTimeConverter.toDate(startTime)); + + // 设置结束时间(当前时间加上durationHours) + LocalDateTime endTime = nowHour.plusHours(hours); + forecastTask.setEndTime(LocalDateTimeConverter.toDate(endTime)); + + forecastTask.setForecastWarm(1); + forecastTask.setForecastPeriod(hours); // 设置预报时长 + icWaterForecastDetails = shortForecast(forecastTask,uMap.get("dt")); + } + return icWaterForecastDetails; + } + + private List shortForecast(ForecastTask forecastTask,String dt) { + //进行洪水预测 + List humanForecastResult = forecastResultsService.getHumanForecastResult(forecastTask); + List collect = new ArrayList<>(); + for (int i = 0; i < humanForecastResult.size(); i++) { + if(i + 1 < humanForecastResult.size() + && humanForecastResult.get(i).getIspreDrp().equals("0") + && humanForecastResult.get(i + 1).getIspreDrp().equals("1") + ) { + collect.add(humanForecastResult.get(i)); + } + if(humanForecastResult.get(i).getIspreDrp().equals("1")) { + collect.add(humanForecastResult.get(i)); + } + } + List res = new ArrayList<>(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + if(humanForecastResult.size() > 0){ + for (int i = 0; i < collect.size(); i++) { + IcWaterForecastDetail entity = new IcWaterForecastDetail(); + //设置预测时间 + entity.setForecastTime(LocalDateTime.parse(collect.get(i).getTm(),formatter)); + if(i == 0){ + entity.setForecastWater(BigDecimal.ZERO); + }else{ + if("1".equals(dt)){ + ForecastResultVo current = collect.get(i); + BigDecimal water = BigDecimal.ZERO; + BigDecimal waterQGap = current.getYcRkQValue().subtract(current.getYcCkQValue()); + water = waterQGap.multiply(new BigDecimal("3600")); + entity.setForecastWater(water.setScale(2, BigDecimal.ROUND_HALF_UP)); + }else{ + //间隔为半小时 + ForecastResultVo current = collect.get(i);//当前节点:时间为整点的数据 + ForecastResultVo pre = collect.get(i - 1);//时间为30的节点 + if(current.getTm().endsWith("30")){ + continue;//跳过这条数据 + } + BigDecimal water = BigDecimal.ZERO; + BigDecimal preQGap = pre.getYcRkQValue().subtract(pre.getYcCkQValue()); + water = preQGap.multiply(new BigDecimal("1800")); + BigDecimal currentQGap = current.getYcRkQValue().subtract(current.getYcCkQValue()); + water = water.add(currentQGap.multiply(new BigDecimal("1800"))); + entity.setForecastWater(water.setScale(2, BigDecimal.ROUND_HALF_UP)); + } + } + res.add(entity); + } + } + return res; + } + + //获取典型年-月的降雨 + public BigDecimal getYearAndMonthRainfall(Integer year, Integer month) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TyYearRainfall::getYear, year); + queryWrapper.eq(TyYearRainfall::getMonth, month); + TyYearRainfall tyYearRainfall = tyYearRainfallService.getBaseMapper().selectOne(queryWrapper); + if(tyYearRainfall == null){ + return null; + } + return tyYearRainfall.getDrp(); + } + + + public List longForecast(BigDecimal areaF, icWaterForecastCaculateDto dto) { + Integer year = dto.getYear(); + LocalDateTime startTime = dto.getStartTime(); + LocalDateTime endTime = dto.getEndTime(); + + List result = new ArrayList<>(); + + // 获取开始和结束的年月 + int startYear = startTime.getYear(); + int startMonth = startTime.getMonthValue(); + int endYear = endTime.getYear(); + int endMonth = endTime.getMonthValue(); + + // 遍历每个月份 + int currentYear = startYear; + int currentMonth = startMonth; + + while (currentYear < endYear || (currentYear == endYear && currentMonth <= endMonth)) { + // 获取该月份的天数 + YearMonth yearMonth = YearMonth.of(currentYear, currentMonth); + int daysInMonth = yearMonth.lengthOfMonth(); + + // 计算该月份的起始日和结束日 + LocalDateTime monthStart = (currentYear == startYear && currentMonth == startMonth) + ? startTime + : LocalDateTime.of(currentYear, currentMonth, 1, 0, 0); + + LocalDateTime monthEnd = (currentYear == endYear && currentMonth == endMonth) + ? endTime + : LocalDateTime.of(currentYear, currentMonth, daysInMonth, 23, 59, 59); + + // 计算该月份的实际天数(考虑开始和结束月份的部分天数) + long actualDays = calculateActualDays(monthStart, monthEnd); + + // 获取该月份的降雨量 + BigDecimal rainfall = getYearAndMonthRainfall(year, currentMonth); + if (rainfall == null) { + // 如果没有降雨数据,跳过该月份 + currentMonth++; + if (currentMonth > 12) { + currentMonth = 1; + currentYear++; + } + continue; + } + + // 计算公式:=(降雨量/该月份天数*实际天数/1000*(areaF*10^6))/10000 + BigDecimal forecastWater = calculateForecastWater(rainfall, daysInMonth, actualDays, areaF); + + // 创建明细对象 + IcWaterForecastDetail detail = new IcWaterForecastDetail(); + detail.setStartTime(monthStart); + detail.setEndTime(monthEnd); + detail.setForecastWater(forecastWater); + detail.setMonth(currentMonth); + result.add(detail); + + // 移动到下个月 + currentMonth++; + if (currentMonth > 12) { + currentMonth = 1; + currentYear++; + } + } + + return result; + } + + /** + * 计算实际天数 + */ + private long calculateActualDays(LocalDateTime start, LocalDateTime end) { + return ChronoUnit.DAYS.between(start.toLocalDate(), end.toLocalDate()) + 1; + } + + /** + * 计算预测水量 + * 公式:=(降雨量/该月份天数*实际天数/1000*(areaF*10^6))/10000 + */ + private BigDecimal calculateForecastWater(BigDecimal rainfall, int daysInMonth, long actualDays, BigDecimal areaF) { + // 降雨量/该月份天数 + BigDecimal dailyRainfall = rainfall.divide(BigDecimal.valueOf(daysInMonth), 10, RoundingMode.HALF_UP); + + // * 实际天数 + BigDecimal totalRainfall = dailyRainfall.multiply(BigDecimal.valueOf(actualDays)); + + // /1000 + BigDecimal rainfallMeters = totalRainfall.divide(BigDecimal.valueOf(1000), 10, RoundingMode.HALF_UP); + + // * (areaF * 10^6) + BigDecimal areaSquareMeters = areaF.multiply(BigDecimal.valueOf(1000000)); + BigDecimal volumeCubicMeters = rainfallMeters.multiply(areaSquareMeters); + + // /10000 转换为万立方米 + BigDecimal volumeTenThousandCubicMeters = volumeCubicMeters.divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP); + + return volumeTenThousandCubicMeters; + } + + + +} diff --git a/src/main/java/com/gunshi/project/ss/service/InspectItemService.java b/src/main/java/com/gunshi/project/ss/service/InspectItemService.java new file mode 100644 index 0000000..34f780a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/InspectItemService.java @@ -0,0 +1,71 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.dto.InspectItemDto; +import com.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.mapper.InspectItemMapper; +import com.gunshi.project.ss.mapper.InspectTaskDetailMapper; +import com.gunshi.project.ss.model.InspectItem; +import com.gunshi.project.ss.common.model.InspectTaskDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Objects; + +/** + * 描述: 巡检项 + * author: xusan + * date: 2024-08-29 09:58:10 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class InspectItemService extends ServiceImpl +{ + @Autowired + private InspectTaskDetailMapper taskDetailMapper; + + public Page pageQuery(AttCctvBasePage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getMenuId())) { + query.eq(InspectItem::getPointId, page.getMenuId()); + } + query.orderByAsc(InspectItem::getStatus).orderByAsc(InspectItem::getOrderIndex); + Page res = this.page(page.getPageSo().toPage(), query); + return res; + } + + public String startStop(InspectItemDto dto) { + Integer status = dto.getStatus(); + InspectItem item = super.getById(dto.getId()); + if (item == null) { + throw new IllegalArgumentException("当前数据不存在"); + } + item.setStatus(status); + boolean flag = super.updateById(item); + if (flag) { + return status == 0 ? "启用成功" : "禁用成功"; + } + return status == 0 ? "启用失败" : "禁用失败"; + } + + public Boolean delData(Long id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + Long count = taskDetailMapper.selectCount(new QueryWrapper().eq("item_id", id)); + if(count > 0){ + throw new IllegalArgumentException("该巡检项已被巡检任务使用,不可删除"); + } + return this.removeById(id); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/InspectPointService.java b/src/main/java/com/gunshi/project/ss/service/InspectPointService.java new file mode 100644 index 0000000..f257b2c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/InspectPointService.java @@ -0,0 +1,80 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.InspectItemMapper; +import com.gunshi.project.ss.mapper.InspectPointMapper; +import com.gunshi.project.ss.model.InspectItem; +import com.gunshi.project.ss.model.InspectPoint; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 巡检点 + * author: xusan + * date: 2024-08-29 09:57:48 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class InspectPointService extends ServiceImpl +{ + @Autowired + private InspectItemMapper inspectItemMapper; + + public InspectPoint saveData(InspectPoint dto) { + dto.setId(IdWorker.getId()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderBy(true, false, "order_index"); + InspectPoint lastOne = super.getOne(queryWrapper, false); + int order = 0; + if (lastOne == null) { + order = 1; + } else { + order = lastOne.getOrderIndex() + 1; + } + dto.setOrderIndex(order); + this.save(dto); + return dto; + } + + public InspectPoint updateData(InspectPoint dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + this.updateById(dto); + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + //判断是否关联巡检项 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(InspectItem::getPointId,id); + if(inspectItemMapper.selectCount(wrapper) > 0){ + throw new IllegalArgumentException("请先删除关联的巡检项"); + } + return this.removeById(id); + } + + public List listWithItem() { + List list = this.lambdaQuery().orderByAsc(InspectPoint::getOrderIndex).list(); + for(InspectPoint point : list){ + point.setChildren(inspectItemMapper.selectList(new QueryWrapper().eq("point_id",point.getId()).orderByAsc("order_index"))); + } + return list; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/InspectTaskDetailService.java b/src/main/java/com/gunshi/project/ss/service/InspectTaskDetailService.java new file mode 100644 index 0000000..1e908fa --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/InspectTaskDetailService.java @@ -0,0 +1,168 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.InspectProblemPageSo; +import com.gunshi.project.ss.entity.vo.InspectProblemVo; +import com.gunshi.project.ss.entity.vo.InspectTaskDetailVo; +import com.gunshi.project.ss.mapper.InspectTaskDetailMapper; +import com.gunshi.project.ss.common.model.InspectTaskDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 巡查信息 + * author: xusan + * date: 2024-08-29 14:21:45 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class InspectTaskDetailService extends ServiceImpl +{ + @Autowired + private FileAssociationsService fileService; + + public void saveDetail(List items, Long taskId) { + items.stream().forEach(o->{ + o.setId(IdWorker.getId()); + o.setTaskId(taskId); + }); + this.saveBatch(items); + } + + public void updateDetail(List items, Long taskId) { + delDetail(taskId); + saveDetail(items,taskId); + } + + public void delDetail(Long taskId) { + this.remove(new QueryWrapper().eq("task_id",taskId)); + } + + public List getByTaskId(Long taskId) { + return this.list(new QueryWrapper().eq("task_id",taskId)); + } + + public List inspectInfo(Long id) { + List res = new ArrayList<>(); + List list = this.baseMapper.inspectInfo(id); + Map> map = list.stream().collect(Collectors.groupingBy(InspectTaskDetailVo::getPointId)); + map.entrySet().forEach(t->{ + InspectTaskDetailVo vo = new InspectTaskDetailVo(); + Long pointId = t.getKey(); + vo.setPointId(pointId); + List value = t.getValue(); + vo.setName(value.get(0).getName()); + fillFile(value); + vo.setChildren(value); + res.add(vo); + }); + return res; + } + + private void fillFile(List value) { + for (InspectTaskDetailVo record : value) { + record.setInspectPics(fileService.queryFileList(record.getId().toString(),getGroupId(),getPicType())); + record.setInspectVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getVideoType())); + if(record.getIsHandle() != null && record.getIsHandle() == 1){ + record.setHandlePics(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandlePicType())); + record.setHandleVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandleVideoType())); + } + } + } + + public Page pageQuery(InspectProblemPageSo page) { + Page res = this.baseMapper.pageQuery(page.getPageSo().toPage(),page); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List records) { + for (InspectProblemVo record : records) { + record.setInspectPics(fileService.queryFileList(record.getId().toString(),getGroupId(),getPicType())); + record.setInspectVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getVideoType())); + if(record.getIsHandle() != null && record.getIsHandle() == 1){ + record.setHandlePics(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandlePicType())); + record.setHandleVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandleVideoType())); + } + } + } + + public String getGroupId() { + return "inspectTask"; + } + + private String getPicType() { + return "inspectPic"; + } + + private String getVideoType() { + return "inspectVideo"; + } + + private String getHandlePicType() { + return "handlePic"; + } + + private String getHandleVideoType() { + return "handleVideo"; + } + + public void finish(List list) { + List res = new ArrayList<>(); + List ids = list.stream().map(InspectTaskDetailVo::getId).map(Object::toString).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(ids)){ + fileService.removeByBzIds(ids); + } + for(InspectTaskDetailVo vo : list){ + InspectTaskDetail detail = new InspectTaskDetail(); + detail.setHandleTime(new Date()); + detail.setHandleUserId(vo.getHandleUserId()); + detail.setHandleUserName(vo.getHandleUserName()); + BeanUtils.copyProperties(vo,detail); + res.add(detail); + fileService.save(vo.getInspectPics(),vo.getId().toString(),getGroupId(),getPicType()); + fileService.save(vo.getInspectVideos(),vo.getId().toString(),getGroupId(),getVideoType()); + fileService.save(vo.getHandlePics(),vo.getId().toString(),getGroupId(),getHandlePicType()); + fileService.save(vo.getHandleVideos(),vo.getId().toString(),getGroupId(),getHandleVideoType()); + } + //更新任务巡检信息表 + this.updateBatchById(res); + } + + public String handle(InspectProblemVo vo) { + InspectTaskDetail detail = new InspectTaskDetail(); + BeanUtils.copyProperties(vo,detail,InspectTaskDetail.class); + detail.setIsHandle(1); + detail.setHandleTime(new Date()); + this.updateById(detail); + fileService.save(vo.getHandlePics(),vo.getId().toString(),getGroupId(),getHandlePicType()); + fileService.save(vo.getHandleVideos(),vo.getId().toString(),getGroupId(),getHandleVideoType()); + return "处理成功"; + } + + public List handelList() { + List list = this.baseMapper.handleList(); + if(CollectionUtils.isNotEmpty(list)){ + fillAttach(list); + } + return list; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/InspectTaskService.java b/src/main/java/com/gunshi/project/ss/service/InspectTaskService.java new file mode 100644 index 0000000..7abf252 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/InspectTaskService.java @@ -0,0 +1,142 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +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.gunshi.project.ss.entity.so.InspectTaskPageSo; +import com.gunshi.project.ss.entity.so.InspectTaskSo; +import com.gunshi.project.ss.entity.vo.InspectTaskDetailVo; +import com.gunshi.project.ss.entity.vo.InspectTaskVo; +import com.gunshi.project.ss.mapper.InspectTaskMapper; +import com.gunshi.project.ss.common.model.InspectTask; +import com.gunshi.project.ss.model.MessageCenter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 巡检任务 + * author: xusan + * date: 2024-08-29 14:21:15 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class InspectTaskService extends ServiceImpl +{ + + @Autowired + private InspectTaskDetailService inspectTaskDetailService; + + @Autowired + private MessageCenterService messageCenterService; + + public InspectTask saveData(InspectTask dto) { + dto.setId(IdWorker.getId()); + dto.setStatus(0); + dto.setCreateTime(new Date()); + this.save(dto); + inspectTaskDetailService.saveDetail(dto.getItems(),dto.getId()); + + MessageCenter center = new MessageCenter(); + center.setPublishUserId(dto.getCreateUserId()); + center.setPublishUserName(dto.getCreateUserName()); + center.setReceiveUserId(dto.getInspectUserId()); + center.setTitle("巡查任务"); + center.setContent("您收到一条巡查任务的提醒:" + dto.getTaskTitle() +",请及时处理。"); + messageCenterService.insertMessage(Arrays.asList(center)); + return dto; + } + + public InspectTask updateData(InspectTask dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + this.updateById(dto); + inspectTaskDetailService.updateDetail(dto.getItems(),dto.getId()); + return dto; + } + + public Boolean delData(Long id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + inspectTaskDetailService.delDetail(id); + return this.removeById(id); + } + + public Page pageQuery(InspectTaskPageSo page) { + return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); + } + + public Boolean startInspect(Long id) { + InspectTask task = this.getById(id); + if (Objects.isNull(task)) { + throw new IllegalArgumentException("当前数据不存在"); + } + task.setReceiveTime(new Date()); + task.setStatus(1); + return this.updateById(task); + } + + + public Boolean finish(InspectTaskVo vo) { + List list = vo.getList(); + InspectTask task = this.getById(list.get(0).getTaskId()); + inspectTaskDetailService.finish(list); + task.setFinishTime(vo.getStatus() == 2 ? new Date() : null); + task.setStatus(vo.getStatus()); + + List messageCenters = list.stream().filter(o -> o.getIsNormal() == 0 && o.getIsHandle() == 0).map(t->{ + MessageCenter center = new MessageCenter(); + center.setPublishUserId(task.getInspectUserId()); + center.setPublishUserName(task.getInspectUserName()); + center.setReceiveUserId(t.getHandleUserId()); + center.setTitle("巡查问题"); + center.setContent("您收到一条巡查任务未处理问题的提醒:"+task.getTaskTitle()+",请及时处理。"); + return center; + }).collect(Collectors.toList()); + messageCenterService.insertMessage(messageCenters); + return this.updateById(task); + } + + public List listQuery(InspectTaskSo so) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(InspectTask::getInspectUserId,so.getInspectUserId()) + .in(InspectTask::getStatus,so.getStatusList()); + if(so.getDateRangeSo() != null && so.getDateRangeSo().getStart() != null){ + queryWrapper.ge(InspectTask::getStartDate,so.getDateRangeSo().getStart()); + } + if(so.getDateRangeSo() != null && so.getDateRangeSo().getEnd() != null){ + queryWrapper.le(InspectTask::getStartDate,so.getDateRangeSo().getEnd()); + } + return this.list(queryWrapper); + } + + public List month() { + LocalDate now = LocalDate.now(); + String monthValue = String.valueOf(now.getMonthValue()); + if(now.getMonthValue() < 10){ + monthValue = "0"+monthValue; + } + return this.baseMapper.month(monthValue); + } + + public Integer year() { + LocalDate now = LocalDate.now(); + String year = String.valueOf(now.getYear()); + return this.baseMapper.year(year); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/InspectTaskTrackService.java b/src/main/java/com/gunshi/project/ss/service/InspectTaskTrackService.java new file mode 100644 index 0000000..18feb31 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/InspectTaskTrackService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.InspectTaskTrackMapper; +import com.gunshi.project.ss.model.InspectTaskTrack; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 巡查轨迹 + * author: xusan + * date: 2024-09-18 13:59:21 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class InspectTaskTrackService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/JcskByBDService.java b/src/main/java/com/gunshi/project/ss/service/JcskByBDService.java new file mode 100644 index 0000000..5468c5c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskByBDService.java @@ -0,0 +1,42 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.so.JcskByBDPageSo; +import com.gunshi.project.ss.mapper.JcskByBDMapper; +import com.gunshi.project.ss.common.model.JcskByBD; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByBDService extends ServiceImpl { + + public Page pageQuery(JcskByBDPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(page.getDeviceId() != null){ + queryWrapper.eq(JcskByBD::getDeviceId, page.getDeviceId()); + } + if(page.getOrder() != null){ + queryWrapper.eq(JcskByBD::getOrder, page.getOrder()); + } + Page jcskByBDPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + return jcskByBDPage; + } + + public List listDevices() { + + return this.baseMapper.listDevices(); + } + + public List listAll(Date date) { + return this.baseMapper.listAll(date); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskByBService.java b/src/main/java/com/gunshi/project/ss/service/JcskByBService.java new file mode 100644 index 0000000..f5a9674 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskByBService.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.JcskByBMapper; +import com.gunshi.project.ss.common.model.JcskByB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByBService extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskByInspectTaskService.java b/src/main/java/com/gunshi/project/ss/service/JcskByInspectTaskService.java new file mode 100644 index 0000000..240f0b0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskByInspectTaskService.java @@ -0,0 +1,54 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.gunshi.project.ss.mapper.InspectTaskMapper; +import com.gunshi.project.ss.mapper.JcskByInspectTaskMapper; +import com.gunshi.project.ss.common.model.InspectTask; +import com.gunshi.project.ss.model.JcskByInspectTask; +import com.gunshi.project.ss.common.model.JcskByR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByInspectTaskService extends ServiceImpl { + + @Autowired + private InspectTaskService inspectTaskService; + + @Autowired + private InspectTaskDetailService inspectTaskDetailService; + + @Autowired + private InspectTaskMapper inspectTaskMapper; + + public InspectTask queryInspectTask(JcskByR record) { + InspectTask res = null; + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + //测点编号+开始时间+结束时间 可以唯一确定一条关联数据 + queryWrapper.eq(JcskByInspectTask::getOrder, record.getOrder()); + queryWrapper.le(JcskByInspectTask::getObDate, record.getObDate()); // 任务开始时间 <= record的开始时间 + queryWrapper.ge(JcskByInspectTask::getObResolveDate, record.getObDate()); // 任务结束时间 >= record的开始时间 + JcskByInspectTask jcskByInspectTask = this.baseMapper.selectOne(queryWrapper); + if (jcskByInspectTask != null) { + //获取关联的巡检任务的ID + Long inspectTaskId = jcskByInspectTask.getInspectTaskId(); + //查询数据 + res = inspectTaskService.getById(inspectTaskId); + Integer countIsHandle = inspectTaskMapper.countIsHandle(inspectTaskId); + Integer countIsNormal = inspectTaskMapper.countIsNormal(inspectTaskId); + if(res != null){ + res.setProblemNum(countIsNormal); + res.setHandleNum(countIsHandle); + } + + } + return res; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskByRProcessService.java b/src/main/java/com/gunshi/project/ss/service/JcskByRProcessService.java new file mode 100644 index 0000000..8ad52ce --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskByRProcessService.java @@ -0,0 +1,90 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.JcskByInspectTaskMapper; +import com.gunshi.project.ss.mapper.JcskByRProcessMapper; +import com.gunshi.project.ss.common.model.InspectTask; +import com.gunshi.project.ss.model.JcskByInspectTask; +import com.gunshi.project.ss.common.model.JcskByR; +import com.gunshi.project.ss.model.JcskByRProcess; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByRProcessService extends ServiceImpl { + private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + @Autowired + private InspectTaskService inspectTaskService; + + @Autowired + private JcskByInspectTaskMapper jcskByInspectTaskMapper; + + public Boolean process(JcskByRProcess jcskByRProcess) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskByRProcess::getOrder, jcskByRProcess.getOrder()); + queryWrapper.eq(JcskByRProcess::getObDate, jcskByRProcess.getObDate()); + //查询同一测点,同一时间是否处理过 + JcskByRProcess dbData = this.baseMapper.selectOne(queryWrapper); + + Date obDate = jcskByRProcess.getObDate(); + //endDate = obDate + 所填小时 + Date endDate = addHours(obDate, jcskByRProcess.getHours()); + jcskByRProcess.setObResolveDate(endDate); + if(dbData == null){ + this.baseMapper.insert(jcskByRProcess); + }else{ + this.baseMapper.update(jcskByRProcess,queryWrapper); + } + //是否填写巡检任务 + if(jcskByRProcess.getInspectTask() != null){ + InspectTask inspectTask = jcskByRProcess.getInspectTask(); + //保存巡检任务 + inspectTaskService.saveData(inspectTask); + //添加关联 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(JcskByInspectTask::getObDate, obDate); + lambdaQueryWrapper.eq(JcskByInspectTask::getOrder, jcskByRProcess.getOrder()); + JcskByInspectTask jcskByInspectTask = jcskByInspectTaskMapper.selectOne(lambdaQueryWrapper); + JcskByInspectTask entity = new JcskByInspectTask(); + entity.setOrder(jcskByRProcess.getOrder()); + entity.setObDate(obDate); + entity.setObResolveDate(endDate); + entity.setInspectTaskId(inspectTask.getId()); + if(jcskByInspectTask == null){ + jcskByInspectTaskMapper.insert(entity); + }else{ + jcskByInspectTaskMapper.update(entity,lambdaQueryWrapper); + } + } + return true; + } + + private Date addHours(Date date, int hours) { + if (date == null) return null; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.HOUR_OF_DAY, hours); + return calendar.getTime(); + } + + public List queryCount(JcskByR record) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskByRProcess::getOrder, record.getOrder()); + queryWrapper.ge(JcskByRProcess::getObResolveDate,record.getObDate()); + queryWrapper.le(JcskByRProcess::getObDate,record.getObDate()); + queryWrapper.orderByDesc(JcskByRProcess::getHours); + List res = this.baseMapper.selectList(queryWrapper); + return res; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskByRService.java b/src/main/java/com/gunshi/project/ss/service/JcskByRService.java new file mode 100644 index 0000000..f9cdfca --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskByRService.java @@ -0,0 +1,118 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.so.JcskByRPageSo; +import com.gunshi.project.ss.common.model.vo.JcskByRProcessVo; +import com.gunshi.project.ss.mapper.WaterDataTermitesMapper; +import com.gunshi.project.ss.common.model.InspectTask; +import com.gunshi.project.ss.common.model.JcskByR; +import com.gunshi.project.ss.model.JcskByRProcess; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskByRService extends ServiceImpl { + + @Autowired + private JcskByRProcessService jcskByRProcessService; + + @Autowired + private JcskByInspectTaskService jcskByInspectTaskService; + + @Autowired + private JcskByBDService jcskByBDService; + + + + public Page pageQuery(JcskByRPageSo page) { + Page res; + if(page.getObDate() != null){ + res = this.baseMapper.query(page.getPageSo().toPage(), page); + }else{ + res = this.baseMapper.queryWithNoDate(page.getPageSo().toPage(), page); + } + for (JcskByR record : res.getRecords()) { + List list = jcskByRProcessService.queryCount(record); + if(list.size() > 0){ + record.setIsProcess(true); + } + //当为处理之后的情况下 + InspectTask inspectTask = jcskByInspectTaskService.queryInspectTask(record); + if(inspectTask != null){ + //设置存在巡检任务 + record.setHasInspectTask(true); + //设置巡检任务数据 + JcskByRProcessVo detailTask = new JcskByRProcessVo(); + BeanUtils.copyProperties(inspectTask,detailTask); + detailTask.setHours(list.get(0).getHours()); + detailTask.setObResolveDate(list.get(0).getObResolveDate()); + detailTask.setObDate(list.get(0).getObDate()); + record.setJcskByRProcessVo(detailTask); + } + } + return res; + } + + public Map pageQueryCount(JcskByRPageSo page, Map countMap) { + long hasAnt = 0; + long noData = 0; + long notAnt = 0; + long totalData = 0; + Page res; + if(page.getObDate() != null){ + res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); + }else{ + res = this.baseMapper.pageQueryWithNoDate(page.getPageSo().toPage(), page); + } + List records = res.getRecords(); + for (JcskByR record : records) { + if(record.getStatus() == 0 && record.getElectricity() != null && record.getElectricity() > 0){ + notAnt++; + }else if(record.getStatus() == 1 && record.getElectricity() != null && record.getElectricity() > 0){ + hasAnt++; + }else{ + noData++; + } + } + totalData = jcskByBDService.count(); + noData = totalData - hasAnt - notAnt; + countMap.put("hasAnt",hasAnt); + countMap.put("notAnt",notAnt); + countMap.put("noData",noData >=0 ? noData:0); + countMap.put("totalPoint",totalData); + return countMap; + } + + public Page detailList(JcskByRPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(page.getOrder() != null){ + queryWrapper.eq(JcskByR::getOrder,page.getOrder()); + } else if (page.getDeviceCode() != null) { + queryWrapper.eq(JcskByR::getDeviceId,page.getDeviceCode()); + }else{ + throw new IllegalArgumentException("请传入设备编号,或者测站编号"); + } + if(page.getDateTimeRangeSo() != null){ + queryWrapper.between(JcskByR::getObDate,page.getDateTimeRangeSo().getStart(),page.getDateTimeRangeSo().getEnd()); + } + queryWrapper.orderByDesc(JcskByR::getStatus) + .orderByDesc(JcskByR::getObDate); + Page jcskByRPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + return jcskByRPage; + } + + public List listNewData(String deviceId) { + return this.baseMapper.listNewData(deviceId); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskGnssBService.java b/src/main/java/com/gunshi/project/ss/service/JcskGnssBService.java new file mode 100644 index 0000000..32dea05 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskGnssBService.java @@ -0,0 +1,83 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.JcskGnssRMapper; +import com.gunshi.project.ss.common.model.JcskGnssR; +import com.gunshi.project.ss.common.model.so.JcskGnssBPageSo; +import com.gunshi.project.ss.common.model.vo.HomeJcskGnssBVo; +import com.gunshi.project.ss.common.mapper.JcskGnssBMapper; +import com.gunshi.project.ss.common.model.JcskGnssB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.List; + + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskGnssBService extends ServiceImpl { + + + private final JcskGnssRMapper jcskGnssRMapper; + + public JcskGnssBService(JcskGnssRMapper jcskGnssRMapper) { + this.jcskGnssRMapper = jcskGnssRMapper; + } + + public Page pageQuery(JcskGnssBPageSo page) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(ObjectUtils.isNotNull(page.getStationCode())){ + queryWrapper.like(JcskGnssB::getCd, page.getStationCode()); + } + + Page res = this.page(page.getPageSo().toPage(), queryWrapper); + return res; + } + + public HomeJcskGnssBVo getDetailsById(String id) { + return baseMapper.getDetailsById(id); + } + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } + + public List listDms() { + return this.baseMapper.listDms(); + } + + public List artificialTree() { + return baseMapper.selectArtificial(); + } + + public void checkStatus(List list){ + for (JcskGnssB jcskGnssB : list) { + //N+1 就N+1把 无所谓了 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskGnssR::getCd, jcskGnssB.getCd()); + queryWrapper.orderByDesc(JcskGnssR::getTm) + .last("limit 1"); + JcskGnssR jcskGnssR = jcskGnssRMapper.selectOne(queryWrapper); + if(jcskGnssR == null){ + jcskGnssB.setStatus(0); + }else if(jcskGnssR != null){ + LocalDateTime tm = jcskGnssR.getTm(); + LocalDateTime now = LocalDateTime.now(); + Duration between = Duration.between(tm, now); + if(between.toHours() > 24){ + jcskGnssB.setStatus(0); + }else{ + jcskGnssB.setStatus(1); + } + } + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskGnssRService.java b/src/main/java/com/gunshi/project/ss/service/JcskGnssRService.java new file mode 100644 index 0000000..8e220ba --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskGnssRService.java @@ -0,0 +1,552 @@ +package com.gunshi.project.ss.service; + +import cn.hutool.poi.excel.ExcelWriter; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.common.model.vo.*; +import com.gunshi.project.ss.entity.dto.ArtificialJcskGnssDeleteDto; +import com.gunshi.project.ss.common.model.so.JcskGnssRPageSo; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.mapper.AttResBaseMapper; +import com.gunshi.project.ss.common.mapper.JcskGnssBMapper; +import com.gunshi.project.ss.common.mapper.JcskGnssRMapper; +import com.gunshi.project.ss.common.mapper.JcskSyRMapper; +import com.gunshi.project.ss.common.model.JcskGnssR; +import com.gunshi.project.ss.util.DataHandleUtil; +import com.gunshi.project.ss.util.DateUtil; +import com.gunshi.project.ss.util.ExcelUtil; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskGnssRService extends ServiceImpl { + + @Resource + private AttResBaseMapper attResBaseMapper; + + @Autowired + private JcskSyRMapper jcskSyRMapper; + + @Autowired + private JcskGnssBMapper jcskGnssBMapper; + + private static final String X_PREFIX = "/E"; + private static final String Y_PREFIX = "/N"; + private static final String H_PREFIX = "/U"; + + + public Page pageQuery(JcskGnssRPageSo page) { + Page res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); + return res; + } + + public String getStcd() { + List attResBaseVos = attResBaseMapper.queryList(); + AttResBaseVo attResBaseVo = attResBaseVos.get(0); + return attResBaseVo == null ? "":attResBaseVo.getStcd(); + } + + public List listValue() { + List list = baseMapper.listValue(); + list.stream().forEach(o ->{ + o.setStationCode(o.getCd()); + }); + if(CollectionUtils.isEmpty(list)){ + return list; + } + OsmoticQuerySo so = new OsmoticQuerySo(); + List stationCodes = list.stream().map(JcskGnessListVo::getCd).collect(Collectors.toList()); + String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(JcskGnessListVo::getTm)).get().getTm(); + String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(JcskGnessListVo::getTm)).get().getTm(); + so.setStationCodes(stationCodes); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(DateUtil.convertStringToDate(minTm)); + dateTimeRangeSo.setEnd(DateUtil.convertStringToDate(maxTm)); + so.setDateTimeRangeSo(dateTimeRangeSo); + List warnList = baseMapper.queryWarn(so); + list.stream().map(o->{ + if(o.getTm() != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(o.getTm()), new Date()) > 48){ + o.setFlag(1); + } + Boolean a = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("X")).findAny().isPresent(); + if(a){ + o.setXStatus(1); + } + Boolean b = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("Y")).findAny().isPresent(); + if(b){ + o.setYStatus(1); + } + Boolean c = warnList.stream().filter(t->t.getCd().equals(o.getCd()) && t.getTm().equals(o.getTm()) && t.getDirection().toUpperCase().equals("H")).findAny().isPresent(); + if(c){ + o.setHStatus(1); + } + return o; + }).collect(Collectors.toList()); + return list; + } + + public List yearStat(OsmoticQuerySo osmoticQuerySo) { + List resList = new ArrayList<>(); + commonQueryHandle(osmoticQuerySo); + //查询位移监测记录 + List valueList = baseMapper.queryReorganizeValue(osmoticQuerySo); + List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(), false); + //数据处理 + for(String str : dateList){ + OsmoticShiftVo2 vo = new OsmoticShiftVo2(); + vo.setTm(str); + // 筛选出该日期8点的数据 + List collect = valueList.stream() + .filter(o -> { + if (o.getTm() != null && o.getTm().startsWith(str)) { + // 提取时间部分,检查是否为08:00:00 + String timePart = o.getTm().substring(11, 13); // 获取 HH:mm:ss 部分 + return "08".equals(timePart); + } + return false; + }) + .peek(o->o.setTm(str)) + .collect(Collectors.toList()); + vo.setList(collect); + resList.add(vo); + } + return resList; + } + + // 新增:生成指定年份的所有日期(确保只包含当年日期) + private List generateYearDates(Integer year) { + List dates = new ArrayList<>(); + LocalDate start = LocalDate.of(year, 1, 1); + LocalDate end = LocalDate.of(year, 12, 31); + + LocalDate current = start; + while (!current.isAfter(end)) { + dates.add(current.toString()); // 格式为yyyy-MM-dd + current = current.plusDays(1); + } + return dates; + } + + + private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ + String year = osmoticQuerySo.getYear(); + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date start = sdf.parse(year + "-01-01 00:00:00"); + Date end = sdf.parse(year + "-12-31 23:59:59"); // 建议使用 23:59:59 + + DateTimeRangeSo so = new DateTimeRangeSo(); + so.setStart(start); + so.setEnd(end); + osmoticQuerySo.setDateTimeRangeSo(so); + return osmoticQuerySo; + } catch (Exception e) { + throw new IllegalArgumentException("日期格式错误: " + year, e); + } + } + + public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { + // 定义时间格式化器 + List resList = new ArrayList<>(); + try { + commonQueryHandle(osmoticQuerySo); + //查询位移监测记录 + List valueList = baseMapper.queryValue(osmoticQuerySo); + //按测站分组 + Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticShiftValueVo2::getCd)); + map.entrySet().forEach(o->{ + String key = o.getKey(); + List value = o.getValue(); + + OsmoticChartVo2 xVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 xMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDe)).get(); + OsmoticShiftValueVo2 xMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDe)).get(); + xVo.setCd(key + X_PREFIX); + xVo.setMaxValue(xMax.getDe()); + xVo.setMaxTm(xMax.getTm()); + xVo.setMinValue(xMin.getDe()); + xVo.setMinTm(xMin.getTm()); + xVo.setDiff(xMax.getDe().subtract(xMin.getDe())); + resList.add(xVo); + + OsmoticChartVo2 yVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 yMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDn)).get(); + OsmoticShiftValueVo2 yMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDn)).get(); + yVo.setCd(key + Y_PREFIX); + yVo.setMaxValue(yMax.getDn()); + yVo.setMaxTm(yMax.getTm()); + yVo.setMinValue(yMin.getDn()); + yVo.setMinTm(yMin.getTm()); + yVo.setDiff(yMax.getDn().subtract(yMin.getDn())); + resList.add(yVo); + + OsmoticChartVo2 hVo = new OsmoticChartVo2(); + OsmoticShiftValueVo2 hMax = value.stream().max(Comparator.comparing(OsmoticShiftValueVo2::getDu)).get(); + OsmoticShiftValueVo2 hMin = value.stream().min(Comparator.comparing(OsmoticShiftValueVo2::getDu)).get(); + hVo.setCd(key + H_PREFIX); + hVo.setMaxValue(hMax.getDu()); + hVo.setMaxTm(hMax.getTm()); + hVo.setMinValue(hMin.getDu()); + hVo.setMinTm(hMin.getTm()); + hVo.setDiff(hMax.getDu().subtract(hMin.getDu())); + resList.add(hVo); + + }); + } catch (Exception e) { + log.info("year/state/value报错"); + e.printStackTrace(); + throw new IllegalArgumentException("报错"); + } + return resList; + } + + public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + String fileName = "年度位移统计"; + String sheetName = "年度位移统计"; + + //上方表格数据 + List resList = yearStat(osmoticQuerySo); + //下方特征值数据 + List chartList = yearStatValue(osmoticQuerySo); + List stationCodes = osmoticQuerySo.getStationCodes(); + //表头信息 + List> headList = new ArrayList<>(); + List heads1 = new ArrayList<>(); + heads1.add("序号"); + heads1.add("序号"); + headList.add(heads1); + + List heads2 = new ArrayList<>(); + heads2.add("监测日期"); + heads2.add("监测日期"); + headList.add(heads2); + + for(String code : stationCodes){ + List headsX = new ArrayList<>(); + headsX.add(code); + headsX.add("X"); + headList.add(headsX); + + List headsY = new ArrayList<>(); + headsY.add(code); + headsY.add("Y"); + headList.add(headsY); + + List headsH = new ArrayList<>(); + headsH.add(code); + headsH.add("H"); + headList.add(headsH); + } + + List> list = new ArrayList<>(); + for (int j = 0;j < resList.size(); j++) { + OsmoticShiftVo2 vo = resList.get(j); + Map test = new LinkedHashMap<>(); + test.put("t0",j+1); + test.put("t1", vo.getTm()); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + OsmoticShiftValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getCd())).findFirst().orElse(null); + test.put(code + X_PREFIX,valueVo != null ? valueVo.getDe() : ""); + test.put(code + Y_PREFIX,valueVo != null ? valueVo.getDn() : ""); + test.put(code + H_PREFIX,valueVo != null ? valueVo.getDu() : ""); + } + list.add(test); + } + + Map max = new LinkedHashMap<>(); + max.put("t0","全年度特征值统计"); + max.put("t1", "最大值"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + max.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); + max.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); + max.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxValue()); + } + list.add(max); + + Map maxTm = new LinkedHashMap<>(); + maxTm.put("t0","全年度特征值统计"); + maxTm.put("t1", "日期"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + maxTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); + maxTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); + maxTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMaxTm()); + } + list.add(maxTm); + + Map min = new LinkedHashMap<>(); + min.put("t0","全年度特征值统计"); + min.put("t1", "最小值"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + min.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); + min.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); + min.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinValue()); + } + list.add(min); + + Map minTm = new LinkedHashMap<>(); + minTm.put("t0","全年度特征值统计"); + minTm.put("t1", "日期"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + minTm.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); + minTm.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); + minTm.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getMinTm()); + } + list.add(minTm); + + Map diff = new LinkedHashMap<>(); + diff.put("t0","全年度特征值统计"); + diff.put("t1", "年变幅"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + diff.put(code+X_PREFIX,chartList.stream().filter(o->(code+X_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); + diff.put(code+Y_PREFIX,chartList.stream().filter(o->(code+Y_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); + diff.put(code+H_PREFIX,chartList.stream().filter(o->(code+H_PREFIX).equals(o.getCd())).findFirst().orElseGet(OsmoticChartVo2::new).getDiff()); + } + list.add(diff); + + ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); + } + + public List detailValue(OsmoticDetailQuerySo so) { + List list = baseMapper.detailValue(so); + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + BeanUtils.copyProperties(so,osmoticQuerySo); + List stRzVos = jcskSyRMapper.queryLineRz(osmoticQuerySo,getStcd()); + return bindShiftDetail(list,stRzVos); + } + + private String getHourTime(String timeStr) { + try { + if (timeStr == null || timeStr.length() < 16) { + return timeStr; + } + // 假设时间格式为 "yyyy-MM-dd HH:mm:ss" + // 取到小时部分,分钟和秒设为00 + return timeStr.substring(0, 14) + "00:00"; + } catch (Exception e) { + return timeStr; + } + } + + + private List bindShiftDetail(List list, List stRzVos) { + // 分离人工录入数据和自动采集数据 + List manualData = list.stream() + .filter(v -> v.getIsArtificial() != null && v.getIsArtificial() == 1) + .collect(Collectors.toList()); + + List autoData = list.stream() + .filter(v -> v.getIsArtificial() == null || v.getIsArtificial() == 0) + .collect(Collectors.toList()); + + // 如果是人工录入数据,直接使用原始数据,不进行时间合并 + if (!manualData.isEmpty()) { + return manualData.stream() + .map(manual -> { + // 为人工录入数据匹配整点的库水位数据 + String hourTime = getHourTime(manual.getTm()); + stRzVos.stream() + .filter(rz -> hourTime.equals(rz.getTm())) + .findFirst() + .ifPresent(rz -> manual.setRz(rz.getRz())); + return manual; + }) + .sorted(Comparator.comparing(OsmoticShiftValueVo2::getTm).reversed()) + .collect(Collectors.toList()); + } + + // 如果是自动采集数据,保持原有逻辑 + HashSet timeSet = new HashSet<>(); + autoData.forEach(v -> timeSet.add(v.getTm())); + stRzVos.forEach(v -> timeSet.add(v.getTm())); + + List result = new ArrayList<>(); + timeSet.forEach(time -> { + OsmoticShiftValueVo2 vo = new OsmoticShiftValueVo2(); + vo.setTm(time); + result.add(vo); + }); + + List resList = result.stream().map(vo -> { + // 匹配库水位数据 - 自动数据也匹配整点库水位 + String hourTime = getHourTime(vo.getTm()); + stRzVos.stream() + .filter(rz -> hourTime.equals(rz.getTm())) + .findFirst() + .ifPresent(rz -> vo.setRz(rz.getRz())); + + // 匹配位移数据 + autoData.stream() + .filter(shift -> vo.getTm().equals(shift.getTm())) + .findFirst() + .ifPresent(shift -> { + vo.setDe(shift.getDe()); + vo.setDn(shift.getDn()); + vo.setDu(shift.getDu()); + vo.setIsArtificial(shift.getIsArtificial()); + }); + return vo; + }).collect(Collectors.toList()); + + // 过滤掉没有监测数据的记录(即位移数据为空的记录) + List filteredList = resList.stream() + .filter(vo -> vo.getDe() != null || vo.getDn() != null || vo.getDu() != null) + .collect(Collectors.toList()); + + return filteredList.stream() + .sorted(Comparator.comparing(OsmoticShiftValueVo2::getTm).reversed()) + .collect(Collectors.toList()); + } + + public List getChAndCd() { + List chs = jcskGnssBMapper.selectCH(); + List res = new ArrayList<>(); + for (String ch : chs) { + GnssCdAndCdVo vo = new GnssCdAndCdVo(); + vo.setCh(ch); + List cds = jcskGnssBMapper.selectCDbyCh(ch); + vo.setChildrens(cds); + res.add(vo); + } + return res; + } + + public Page historyPage(JcskGnssRPageSo page) { + return this.baseMapper.historyPage(page.getPageSo().toPage(),page); + } + + public Page artificialPage(JcskGnssRPageSo page) { + Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(),page); + return res; + } + + /** + * 将Date转为String + * @param date + * @return + */ + public String transforDateToString(Date date) { + // 将Date转换为LocalDateTime + if(date == null){ + return null; + } + LocalDateTime localDateTime = date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String formattedDate = localDateTime.format(formatter); + return formattedDate; + } + + public void artificialExport(JcskGnssRPageSo page, HttpServletResponse response) { + Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(), page); + List records = res.getRecords(); + + // 创建导出数据列表 + List> exportData = new ArrayList<>(); + for (JcskGnssR record : records) { + Map row = new HashMap<>(); + row.put("cd",record.getCd()); + row.put("isArtificial", record.getIsArtificial() != null && record.getIsArtificial() == 1 ? "人工录入" : "自动采集"); + row.put("updateTm", record.getUpdateTm().toString()); + row.put("x",record.getDe()); + row.put("y",record.getDn()); + row.put("h",record.getDu()); + row.put("tm",record.getTm().toString()); + exportData.add(row); + } + + // 通过工具类创建writer + ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(); + + // 自定义标题(去掉水库代码、水工建筑物编号、stcd、mpcd) + writer.addHeaderAlias("cd", "测点编号"); + writer.addHeaderAlias("tm", "监测时间"); + writer.addHeaderAlias("x", "X方向形变值(mm)"); + writer.addHeaderAlias("y", "Y方向形变值(mm)"); + writer.addHeaderAlias("h", "H方向形变值(mm)"); + writer.addHeaderAlias("isArtificial","录入方式"); + writer.addHeaderAlias("updateTm","更新时间"); + + // 只写出设置了别名的字段 + writer.setOnlyAlias(true); + + // 一次性写出内容 + writer.write(exportData, true); + + // 设置响应内容类型 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + + try { + // 设置响应头信息 + String fileName = URLEncoder.encode("位移人工录入数据", "UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); + + // 将writer对象刷新到响应输出流中 + writer.flush(response.getOutputStream(), true); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("导出Excel失败", e); + } finally { + // 关闭writer,释放内存 + writer.close(); + } + } + + public boolean saveData(JcskGnssR dto) { + + dto.setIsArtificial(1); + dto.setUpdateTm(LocalDateTime.now()); + int insert = this.baseMapper.insert(dto); + return insert > 0; + } + + public boolean updateData(JcskGnssR dto) { + dto.setUpdateTm(LocalDateTime.now()); + LocalDateTime oldTm = dto.getTm(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskGnssR::getIsArtificial, 1); + queryWrapper.eq(JcskGnssR::getTm, oldTm); + queryWrapper.eq(JcskGnssR::getCd, dto.getCd()); + dto.setCd(dto.getNewUpdateCd()); + dto.setTm(dto.getNewUpdateTm()); + int update = this.baseMapper.update(dto, queryWrapper); + return update > 0; + } + + public boolean deleteData(ArtificialJcskGnssDeleteDto dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskGnssR::getIsArtificial, 1); + queryWrapper.eq(JcskGnssR::getTm, dto.getTm()); + queryWrapper.eq(JcskGnssR::getCd, dto.getCd()); + int delete = this.baseMapper.delete(queryWrapper); + return delete > 0; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskSlBService.java b/src/main/java/com/gunshi/project/ss/service/JcskSlBService.java new file mode 100644 index 0000000..90b3a9f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskSlBService.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.so.JcskSlBPageSo; +import com.gunshi.project.ss.common.model.vo.HomeJcskSlBVo; +import com.gunshi.project.ss.common.mapper.JcskSlBMapper; +import com.gunshi.project.ss.common.model.JcskSlB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskSlBService extends ServiceImpl { + + + public Page pageQuery(JcskSlBPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(ObjectUtils.isNotNull(page.getMpcd())){ + queryWrapper.like(JcskSlB::getMpcd, page.getMpcd()); + } + if(ObjectUtils.isNotNull(page.getRscd())){ + queryWrapper.like(JcskSlB::getRscd, page.getRscd()); + } + if(ObjectUtils.isNotNull(page.getStcd())){ + queryWrapper.like(JcskSlB::getStcd, page.getStcd()); + } + Page res = this.page(page.getPageSo().toPage(), queryWrapper); + return res; + } + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } + + public HomeJcskSlBVo getDetailsById(String id) { + return baseMapper.getDetailsById(id); + } + + public List getDvcdByProfileCode(String profileCode) { + return this.baseMapper.getDvcdByProfileCode(profileCode); + } + + public String getDvcdByStcdAndMpcd(String mpcd) { + return this.baseMapper.selectDvcdByStcdAndMpcd(mpcd); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskSlRService.java b/src/main/java/com/gunshi/project/ss/service/JcskSlRService.java new file mode 100644 index 0000000..9e89446 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskSlRService.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.so.JcskSlRPageSo; +import com.gunshi.project.ss.common.model.vo.JcskSlRHisVo; +import com.gunshi.project.ss.common.mapper.JcskSlRMapper; +import com.gunshi.project.ss.common.model.JcskSlR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskSlRService extends ServiceImpl { + + + public Page pageQuery(JcskSlRPageSo page) { + Page res = this.baseMapper.pageQuery(page.getPageSo().toPage(), page); + return res; + } + + public Page historyPage(JcskSlRPageSo page) { + return this.baseMapper.historyPage(page.getPageSo().toPage(),page); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskSyBService.java b/src/main/java/com/gunshi/project/ss/service/JcskSyBService.java new file mode 100644 index 0000000..f05e1a2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskSyBService.java @@ -0,0 +1,59 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.so.JcskSyBPageSo; +import com.gunshi.project.ss.common.model.vo.HomeJcskSYBVo; +import com.gunshi.project.ss.common.mapper.JcskSyBMapper; +import com.gunshi.project.ss.common.model.JcskSyB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskSyBService extends ServiceImpl { + + + + public Page pageQuery(JcskSyBPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + if(ObjectUtils.isNotNull(page.getMpcd())){ + queryWrapper.like(JcskSyB::getMpcd,page.getMpcd()); + } + if(ObjectUtils.isNotNull(page.getDm())){ + queryWrapper.like(JcskSyB::getDm,page.getDm()); + } + Page res = this.page(page.getPageSo().toPage(), queryWrapper); + return res; + } + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } + + public HomeJcskSYBVo getDetailsById(String id) { + return baseMapper.getDetailsById(id); + } + + public List getDvcdByProfileCode(String profileCode) { + + return this.baseMapper.getDvcdByProfileCode(profileCode); + } + + public String getDvcdByStcdAndMpcd(String stcd, String mpcd) { + return this.baseMapper.selectDvcdByStcdAndMpcd(stcd,mpcd); + } + + public List getAllDvcd() { + return this.baseMapper.selectAllDvcd(); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/JcskSyRService.java b/src/main/java/com/gunshi/project/ss/service/JcskSyRService.java new file mode 100644 index 0000000..08aed3e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/JcskSyRService.java @@ -0,0 +1,1076 @@ +package com.gunshi.project.ss.service; + + +import cn.hutool.poi.excel.ExcelWriter; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.common.model.JcskSyR; +import com.gunshi.project.ss.common.model.vo.*; +import com.gunshi.project.ss.entity.dto.ArtificialJcskSyDeleteDto; +import com.gunshi.project.ss.common.model.so.JcskSyRPageSo; +import com.gunshi.project.ss.common.model.so.OsmoticDetailQuerySo; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.entity.dto.ProjectSafeCalculateDto; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.common.mapper.JcskSlBMapper; +import com.gunshi.project.ss.mapper.JcskSyREightAmMapper; +import com.gunshi.project.ss.common.mapper.JcskSyRMapper; +import com.gunshi.project.ss.common.model.JcskSyB; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.*; +import com.ruoyi.common.utils.StringUtils; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class JcskSyRService extends ServiceImpl { + + @Autowired + private JcskSyBService jcskSyBService; + + @Autowired + private JcskGnssRService jcskGnssRService; + + @Autowired + private JcskSlBMapper jcskSlBMapper; + + + @Autowired + private AttDamProfileService attDamProfileService; + + @Autowired + private JcskSyREightAmMapper jcskSyREightAmMapper; + + @Autowired + private SyRegressionDataService syRegressionDataService; + + @Autowired + private SyDataCheckRuleService syDataCheckRuleService; + + + + public Page pageQuery(JcskSyRPageSo page) { + Page res = this.baseMapper.queryPage(page.getPageSo().toPage(),page); + return res; + } + + // 使用更现代的日期时间API + private Date parseDateSafe(String dateStr) { + if (dateStr == null) return null; + + // 移除可能的时区信息 + dateStr = dateStr.replace("T", " ").split("\\.")[0]; + + try { + LocalDateTime localDateTime = LocalDateTime.parse(dateStr, + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } catch (Exception e) { + try { + LocalDate localDate = LocalDate.parse(dateStr, + DateTimeFormatter.ofPattern("yyyy-MM-dd")); + return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } catch (Exception e2) { + throw new RuntimeException("无法解析日期: " + dateStr, e2); + } + } + } + + + public List listValue(Integer type) { + List list; + try { + if(type == 1){ + list = baseMapper.listValue(); + }else { + list = jcskSlBMapper.listValue(); + //list = baseMapper.flowListValue(); + } + OsmoticQuerySo so = new OsmoticQuerySo(); + List stationCodes = list.stream().map(JcskSyRVo::getStationCode).collect(Collectors.toList()); + if(list.stream().filter(o->o.getTm() != null).collect(Collectors.toList()).size() > 0 ){ + String maxTm = list.stream().filter(o->o.getTm() != null).max(Comparator.comparing(JcskSyRVo::getTm)).get().getTm().toString(); + String minTm = list.stream().filter(o->o.getTm() != null).min(Comparator.comparing(JcskSyRVo::getTm)).get().getTm().toString(); + so.setStationCodes(stationCodes); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(parseDateSafe(minTm)); + dateTimeRangeSo.setEnd(parseDateSafe(maxTm)); + so.setDateTimeRangeSo(dateTimeRangeSo); + List warnList = baseMapper.queryWarn(so); + list.stream().map(o->{ + if(o.getTm() != null && DateUtil.hoursBetweenDate(parseDateSafe(o.getTm().toString()), new Date()) > 48){ + o.setFlag(1); + } + Boolean b = warnList.stream().filter(t->t.getStationCode().equals(o.getStationCode()) && t.getTm().equals(o.getTm())).findAny().isPresent(); + if(b){ + o.setStatus(1); + } + String stationCode = o.getStationCode(); + LambdaQueryWrapper wq = new LambdaQueryWrapper(); + wq.eq(JcskSyB::getDvcd, stationCode); + List jcskSyBS = jcskSyBService.list(wq); + if(!jcskSyBS.isEmpty()){ + o.setProfileName(jcskSyBS.get(0).getDm().toString()); + } + return o; + }).collect(Collectors.toList()); + } + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + for (JcskSyRVo jcskSyRVo : list) { + String tm = jcskSyRVo.getTm(); + if(tm != null && DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24){ + jcskSyRVo.setOnoffStauts(0); + }else if(tm == null){ + jcskSyRVo.setOnoffStauts(1); + }else{ + jcskSyRVo.setOnoffStauts(1); + } + } + return list; + } + + public List detailValue(OsmoticDetailQuerySo so) { + List list; + if(so.getType() == 1){ + list = baseMapper.detailValue(so); + }else{ + list = jcskSlBMapper.detailValue(so); + } + if(so.getType() == 2){ + return list; + } + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + BeanUtils.copyProperties(so,osmoticQuerySo); + List stRzVos = baseMapper.queryLineRz(osmoticQuerySo,jcskGnssRService.getStcd()); + return bindPressDetail(list,stRzVos); + } + + /** + * 将时间转换为整点时间 + * 例如:2024-10-14 15:30:00 → 2024-10-14 15:00:00 + * 2024-10-14 15:45:25 → 2024-10-14 15:00:00 + */ + private String getHourTime(String timeStr) { + try { + if (timeStr == null || timeStr.length() < 16) { + return timeStr; + } + // 假设时间格式为 "yyyy-MM-dd HH:mm:ss" + // 取到小时部分,分钟和秒设为00 + return timeStr.substring(0, 14) + "00:00"; + } catch (Exception e) { + return timeStr; + } + } + + private List bindPressDetail(List list, List stRzVos) { + HashSet timeSet = new HashSet<>(); + list.forEach(v -> timeSet.add(v.getTm())); + stRzVos.forEach(v -> { + String hourTimeForRz = getHourTime(v.getTm()); + timeSet.add(hourTimeForRz); + }); + + List result = new ArrayList<>(); + timeSet.forEach(time -> { + OsmoticPressDetailVo vo = new OsmoticPressDetailVo(); + vo.setTm(time); + result.add(vo); + }); + + List resList = result.stream().map(vo -> { + // 查询库水位数据:如果时间不是整点,使用整点时间查询 + String hourTimeForRz = getHourTime(vo.getTm()); + stRzVos.stream() + .filter(rz -> hourTimeForRz.equals(getHourTime(rz.getTm()))) + .findFirst() + .ifPresent(rz -> vo.setRz(rz.getRz())); + + // 匹配压力数据:使用原始时间 + list.stream() + .filter(press -> vo.getTm().equals(press.getTm())) + .findFirst() + .ifPresent(press -> vo.setValue(press.getValue())); + + return vo; + }).collect(Collectors.toList()); + + // 修改为倒序排序 + return resList.stream() + .sorted(Comparator.comparing(OsmoticPressDetailVo::getTm).reversed()) + .collect(Collectors.toList()); + } + public Map stat() { + Map map = new HashMap<>(); + List press = this.listValue(1); + Integer pressSize = press.size(); + Long pressWarn = press.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); + + List flow = this.listValue(2); + Integer flowSize = flow.size(); + Long flowWarn = flow.stream().filter(o -> o.getStatus() == 1).collect(Collectors.counting()); + + List shift = jcskGnssRService.listValue(); + Integer shiftSize = shift.size(); + Long shiftWarn = shift.stream().filter(o -> o.getXStatus() == 1 || o.getYStatus() ==1 || o.getHStatus() == 1).collect(Collectors.counting()); + + Integer size = pressSize + flowSize + shiftSize; + Integer warn = Stream.of(pressWarn, flowWarn, shiftWarn).mapToInt(Long::intValue).sum(); + map.put(warn,size); + return map; + } + + + /** + * 测值查询,管水位和库水位数据固定查询每日早8点 + * @param osmoticQuerySo + * @return + */ + public List queryValue(OsmoticQuerySo osmoticQuerySo, Integer year) { + if(osmoticQuerySo.getType() == null) { + osmoticQuerySo.setType(1); + } + List resList = new ArrayList<>(); + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(osmoticQuerySo.getStationCodes())){ + return resList; + } + String stcd = jcskGnssRService.getStcd(); + Boolean isDesc = true; + //查询测站降雨量 + Map drpMap = new HashMap<>(); + if(year != null){ + isDesc = false; + List drpList = baseMapper.queryDrp(year,stcd); + drpMap = drpList.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); + } + List dateList = DateUtil.getDatesBetween(osmoticQuerySo.getDateTimeRangeSo().getStart(), osmoticQuerySo.getDateTimeRangeSo().getEnd(),isDesc); + + //查询库水位 + List list = baseMapper.queryRz(osmoticQuerySo,stcd); + Map rzMap = list.stream().collect(Collectors.toMap(StRzVo::getTm, StRzVo::getRz)); + //查询测站管水位/渗流量 + List valueList; + if(osmoticQuerySo.getType() == 1){ + //渗压数据 + valueList = baseMapper.query8AmValue(osmoticQuerySo); + }else{ + //渗流数据 + valueList = jcskSlBMapper.query8AmValue(osmoticQuerySo); + } + //数据处理 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + for(String str : dateList){ + OsmoticStationVo2 vo = new OsmoticStationVo2(); + vo.setTm(str); + vo.setRz(rzMap.get(str)); + vo.setDrp(drpMap.get(str)); + List collect = valueList.stream() + .filter(o -> { + if (o.getTm() != null) { + // 将Date格式化为yyyy-MM-dd字符串进行比较 + String dateStr = o.getTm().substring(0,10); + return str.equals(dateStr); + } + return false; + }) + .peek(o->o.setTm(str)) + .collect(Collectors.toList()); + vo.setList(collect); + resList.add(vo); + } + return resList; + } + + public List queryChart(OsmoticQuerySo osmoticQuerySo,Integer year) { + List resList = new ArrayList<>(); + List stationCodes = osmoticQuerySo.getStationCodes(); + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(stationCodes)){ + return resList; + } + String stcd = jcskGnssRService.getStcd(); + //查询库水位 + List list = baseMapper.queryRz2(osmoticQuerySo,stcd); + Map rzMap = list.stream() + .collect(Collectors.toMap( + StRzVo::getTm, // 键:时间 + StRzVo::getRz, // 值:水位 + (existingValue, newValue) -> existingValue // 重复时保留第一个值 + )); + //查询测站管水位 + List valueList; + if(osmoticQuerySo.getType() == 1){ + //渗压数据 + valueList = baseMapper.queryValue(osmoticQuerySo); + }else{ + //渗流数据 + valueList = jcskSlBMapper.queryValue(osmoticQuerySo); + } + //按测站分组 + Map> map = valueList.stream().collect(Collectors.groupingBy(OsmoticValueVo2::getStationCode)); + for(String code : stationCodes){ + OsmoticChartVo2 vo = new OsmoticChartVo2(); + vo.setCd(code); + if(map.containsKey(code)){ + List voList = map.get(code); + OsmoticValueVo2 max = voList.stream().max(Comparator.comparing(OsmoticValueVo2::getValue)).get(); + OsmoticValueVo2 min = voList.stream().min(Comparator.comparing(OsmoticValueVo2::getValue)).get(); + vo.setCd(code); + vo.setMaxValue(max.getValue()); + vo.setMaxTm(max.getTm()); + vo.setMinValue(min.getValue()); + vo.setMinTm(min.getTm()); + vo.setDiff(max.getValue().subtract(min.getValue())); + if(year == null){ + vo.setDetailVos(bindData(MyBeanUtil.collectionCopy(list,OsmoticChartDetailVo.class),MyBeanUtil.collectionCopy(voList,OsmoticChartDetailVo.class))); + } + }else { + vo.setDetailVos(new ArrayList<>()); + } + if(vo.getDetailVos() != null){ + for (OsmoticChartDetailVo detailVo : vo.getDetailVos()) { + detailVo.setRz(rzMap.get(detailVo.getTm())); + } + }else{ + vo.setDetailVos(new ArrayList<>()); + } + + resList.add(vo); + } + //查询测站降雨量 + List drpList; + if(year != null){ + drpList = baseMapper.queryDrp(year,stcd); + OsmoticChartVo2 chartVo = new OsmoticChartVo2(); + chartVo.setCd("rz"); + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(list)){ + StRzVo max = list.stream().max(Comparator.comparing(StRzVo::getRz)).get(); + StRzVo min = list.stream().min(Comparator.comparing(StRzVo::getRz)).get(); + chartVo.setMaxValue(max.getRz()); + chartVo.setMaxTm(max.getTm()); + chartVo.setMinValue(min.getRz()); + chartVo.setMinTm(min.getTm()); + chartVo.setDiff(max.getRz().subtract(min.getRz())); + resList.add(chartVo); + } + + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(drpList)){ + OsmoticChartVo2 drpVo = new OsmoticChartVo2(); + drpVo.setCd("drp"); + StRzVo maxDrp = drpList.stream().max(Comparator.comparing(StRzVo::getRz)).get(); + StRzVo minDrp = drpList.stream().min(Comparator.comparing(StRzVo::getRz)).get(); + drpVo.setMaxValue(maxDrp.getRz()); + drpVo.setMaxTm(maxDrp.getTm()); + drpVo.setMinValue(minDrp.getRz()); + drpVo.setMinTm(minDrp.getTm()); + drpVo.setDiff(maxDrp.getRz().subtract(minDrp.getRz())); + resList.add(drpVo); + } + } + return resList; + } + + + + //根据监测时间合并管水位和库水位数据 + private List bindData(List tmRzList, List voList) { + HashSet strings = new HashSet<>(); + tmRzList.stream().forEach(v1 -> strings.add(v1.getTm())); + voList.stream().forEach(v1 -> strings.add(v1.getTm())); + + List result = new ArrayList<>(); + strings.stream().forEach(v1 ->{ + OsmoticChartDetailVo v = new OsmoticChartDetailVo(); + v.setTm(v1); + result.add(v); + }); + List list = result.stream().map(v1 -> { + tmRzList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { + v1.setRz(v2.getRz()); + }); + + voList.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { + v1.setValue(v2.getValue()); + }); + return v1; + }).collect(Collectors.toList()); + return list.stream().sorted(Comparator.comparing(OsmoticChartDetailVo::getTm)).collect(Collectors.toList()); + } + + public List infiltraLine(OsmoticQuerySo osmoticQuerySo) { + List resList = new ArrayList<>(); + String stcd = jcskGnssRService.getStcd(); + //查询库水位 + //TODO 数据是每整点过五分监测一次(暂时修改,看后续实际数据来了之后会怎么样) + List list = baseMapper.queryLineRz(osmoticQuerySo,stcd); + Map rzMap = list.stream() + .collect(Collectors.toMap( + StRzVo::getTm, // 键:时间 + StRzVo::getRz, // 值:水位 + (existingValue, newValue) -> existingValue // 重复时保留第一个值 + )); + //查询测站管水位 + List valueList = baseMapper.queryLineValue(osmoticQuerySo); + //查询测站预警信息 + List warnList = baseMapper.queryWarn(osmoticQuerySo); + + valueList.stream().map(vo->{ + Boolean b = warnList.stream().filter(o->o.getStationCode().equals(vo.getStationCode()) && o.getTm().equals(vo.getTm())).findAny().isPresent(); + if(b){ + vo.setStatus(0); + } + return vo; + }).collect(Collectors.toList()); + + HashSet dateList = new HashSet<>(); + list.stream().forEach(v1 -> dateList.add(v1.getTm())); + valueList.stream().forEach(v1 -> dateList.add(v1.getTm())); + + // 过滤出整点时间数据 + List hourList = dateList.stream() + .filter(tm -> tm.matches(".*:00:00$")) // 匹配以:00:00结尾的时间 + .collect(Collectors.toList()); + + for(String str : hourList){ + OsmoticStationVo2 vo = new OsmoticStationVo2(); + vo.setTm(str); + vo.setRz(rzMap.get(str)); + List newList = valueList.stream().filter(o->str.equals(o.getTm())).collect(Collectors.toList()); + vo.setList(newList); + if(com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(newList) && newList.stream().filter(o->o.getStatus() == 0).findAny().isPresent()){ + vo.setStatus(0); + } + resList.add(vo); + } + return resList.stream().sorted(Comparator.comparing(OsmoticStationVo2::getTm).reversed()).collect(Collectors.toList()); + } + + public void export(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + //通过断面查询渗压设备 + List stationCodes = osmoticQuerySo.getStationCodes(); + //表头信息 + List heads = new ArrayList<>(); + heads.add("序号"); + heads.add("时间"); + heads.add("库水位(m)"); + heads.addAll(stationCodes); + heads.add("结果分析"); + + //表格数据 + List resList = infiltraLine(osmoticQuerySo); + List> list = new ArrayList<>(); + for (int j = 0;j < resList.size(); j++) { + OsmoticStationVo2 vo = resList.get(j); + Map test = new LinkedHashMap<>(); + test.put("t0",j+1); + test.put("t1", vo.getTm()); + test.put("t2", vo.getRz()); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + OsmoticValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); + test.put(code,valueVo != null ? valueVo.getValue() : ""); + } + test.put("t4", vo.getStatus() == 0 ? "异常":"正常"); + list.add(test); + } + List> hs = new ArrayList<>(); + for (String s : heads) { + hs.add(Arrays.asList(s)); + } + ExcelUtil.exportExcel(hs, DataHandleUtil.tableData(list), "浸润线", response, "浸润线"); + } + + private OsmoticQuerySo commonQueryHandle(OsmoticQuerySo osmoticQuerySo){ + String year = osmoticQuerySo.getYear(); + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date start = sdf.parse(year + "-01-01 00:00:00"); + Date end = sdf.parse(year + "-12-31 23:59:59"); // 建议使用 23:59:59 + + DateTimeRangeSo so = new DateTimeRangeSo(); + so.setStart(start); + so.setEnd(end); + osmoticQuerySo.setDateTimeRangeSo(so); + return osmoticQuerySo; + } catch (Exception e) { + throw new IllegalArgumentException("日期格式错误: " + year, e); + } + } + + public List yearStat(OsmoticQuerySo osmoticQuerySo) { + commonQueryHandle(osmoticQuerySo); + return queryValue(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); + } + + public List yearStatValue(OsmoticQuerySo osmoticQuerySo) { + commonQueryHandle(osmoticQuerySo); + return queryChart(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); + } + + public void yearStatExport(OsmoticQuerySo osmoticQuerySo, HttpServletResponse response) { + String headName = osmoticQuerySo.getProfileName() + "断面测压管水位(m)"; + String fileName = "断面年度渗压统计"; + String sheetName = "年度渗压统计"; + if(osmoticQuerySo.getType() == 1){ + fileName = osmoticQuerySo.getProfileName() + fileName; + }else { + headName = "渗流量(L/s)"; + fileName = "年度渗流统计"; + sheetName = "年度渗流统计"; + } + + //上方表格数据 + List resList = yearStat(osmoticQuerySo); + //下方特征值数据 + List chartList = queryChart(osmoticQuerySo,Integer.valueOf(osmoticQuerySo.getYear())); + List stationCodes = osmoticQuerySo.getStationCodes(); + //表头信息 + List> headList = new ArrayList<>(); + List heads1 = new ArrayList<>(); + heads1.add("序号"); + heads1.add("序号"); + headList.add(heads1); + + List heads2 = new ArrayList<>(); + heads2.add("监测日期"); + heads2.add("监测日期"); + headList.add(heads2); + + for(String code : stationCodes){ + List heads = new ArrayList<>(); + heads.add(headName); + heads.add(code); + headList.add(heads); + } + + List heads3 = new ArrayList<>(); + heads3.add("库水位(m)"); + heads3.add("库水位(m)"); + headList.add(heads3); + + List heads4 = new ArrayList<>(); + heads4.add("降雨量(mm)"); + heads4.add("降雨量(mm)"); + headList.add(heads4); + + List> list = new ArrayList<>(); + for (int j = 0;j < resList.size(); j++) { + OsmoticStationVo2 vo = resList.get(j); + Map test = new LinkedHashMap<>(); + test.put("t0",j+1); + test.put("t1", vo.getTm()); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + OsmoticValueVo2 valueVo = vo.getList().stream().filter(o->code.equals(o.getStationCode())).findFirst().orElse(null); + test.put(code,valueVo != null ? valueVo.getValue() : ""); + } + test.put("t2", vo.getRz()); + test.put("t3", vo.getDrp()); + list.add(test); + } + + Map max = new LinkedHashMap<>(); + max.put("t0","全年度特征值统计"); + max.put("t1", "最大值"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + max.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMaxValue()); + } + max.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMaxValue()); + max.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMaxValue()); + list.add(max); + + Map maxTm = new LinkedHashMap<>(); + maxTm.put("t0","全年度特征值统计"); + maxTm.put("t1", "日期"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + maxTm.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMaxTm()); + } + maxTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMaxTm()); + maxTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMaxTm()); + list.add(maxTm); + + Map min = new LinkedHashMap<>(); + min.put("t0","全年度特征值统计"); + min.put("t1", "最小值"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + min.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMinValue()); + } + min.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMinValue()); + min.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMinValue()); + list.add(min); + + Map minTm = new LinkedHashMap<>(); + minTm.put("t0","全年度特征值统计"); + minTm.put("t1", "日期"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + minTm.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getMinTm()); + } + minTm.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getMinTm()); + minTm.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getMinTm()); + list.add(minTm); + + Map diff = new LinkedHashMap<>(); + diff.put("t0","全年度特征值统计"); + diff.put("t1", "年变幅"); + for(int i = 0;i < stationCodes.size();i++){ + String code = stationCodes.get(i); + diff.put(code,chartList.stream().filter(o->code.equals(o.getCd())).findFirst().get().getDiff()); + } + diff.put("t2", chartList.stream().filter(o->"rz".equals(o.getCd())).findFirst().get().getDiff()); + diff.put("t3", chartList.stream().filter(o->"drp".equals(o.getCd())).findFirst().get().getDiff()); + list.add(diff); + + ExcelUtil.exportExcel(headList, DataHandleUtil.tableData(list),2,new int[]{0},fileName,response,sheetName); + } + + public List listDvcd() { + List dms = this.baseMapper.listDm();//查询断面 + List res = new ArrayList<>(); + for (String dm : dms) { + DmDvcdVo vo = new DmDvcdVo(); + vo.setDm(dm); + vo.setDvcd(this.baseMapper.listDvcdByDm(dm)); + res.add(vo); + } + return res; + } + + public List listStcdMpcd() { + List syBList = this.baseMapper.listStcdMpcd(); + List syStcdMpcdVoList = new ArrayList<>(); + Map> groupMapData = syBList.stream().collect( + Collectors.groupingBy(JcskSyB::getStcd, Collectors.mapping(JcskSyB::getMpcd, Collectors.toList())) + ); + groupMapData.entrySet().stream().forEach(entry -> { + SyStcdMpcdVo entity = new SyStcdMpcdVo(); + entity.setStcd(entry.getKey()); + entity.setMpcdList(entry.getValue()); + syStcdMpcdVoList.add(entity); + }); + return syStcdMpcdVoList; + } + + public Page historyPage(JcskSyRPageSo page) { + return this.baseMapper.historyPage(page.getPageSo().toPage(),page); + } + + public boolean saveData(JcskSyR dto) { + List list = jcskSyBService.lambdaQuery().eq(JcskSyB::getDvcd, dto.getDvcd()).last("limit 1").list(); + JcskSyB jcskSyB = list.get(0); + dto.setStcd(jcskSyB.getStcd()); + dto.setMpcd(jcskSyB.getMpcd()); + dto.setIsArtificial(1); + dto.setUpdateTm(LocalDateTime.now()); + int insert = this.baseMapper.insert(dto); + return insert > 0; + } + + public boolean updateData(JcskSyR dto) { + List list = jcskSyBService.lambdaQuery().eq(JcskSyB::getDvcd, dto.getDvcd()).last("limit 1").list(); + JcskSyB jcskSyB = list.get(0); + String stcd = jcskSyB.getStcd(); + String mpcd = jcskSyB.getMpcd(); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(JcskSyR::getMstm, dto.getMstm()) + .eq(JcskSyR::getMpcd, dto.getMpcd()) + .eq(JcskSyR::getStcd,dto.getStcd()) + .set(JcskSyR::getHycncd, dto.getHycncd()) + .set(JcskSyR::getRscd, dto.getRscd()) + .set(JcskSyR::getSpprwl, dto.getSpprwl()) + .set(JcskSyR::getTm, dto.getTm()) + .set(JcskSyR::getUpdateTm, new Date()) + .set(JcskSyR::getMpcd, mpcd) + .set(JcskSyR::getStcd, stcd) + .set(JcskSyR::getMstm,dto.getUpdateMstm()); + int update = this.baseMapper.update(wrapper); + return update > 0; + } + + public Page artificialPage(JcskSyRPageSo page) { + Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(),page); + return res; + + } + public String transforDateToString(Date date) { + // 将Date转换为LocalDateTime + if(date == null){ + return null; + } + LocalDateTime localDateTime = date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String formattedDate = localDateTime.format(formatter); + return formattedDate; + } + + public void artificialExport(JcskSyRPageSo page, HttpServletResponse response) { + + Page res = this.baseMapper.artificialPage(page.getPageSo().toPage(), page); + List records = res.getRecords(); + + // 创建导出数据列表 + List> exportData = new ArrayList<>(); + for (JcskSyR record : records) { + Map row = new HashMap<>(); + row.put("mstm", record.getMstm().toString()); + row.put("tm", record.getTm()); + row.put("spprwl", record.getSpprwl()); + row.put("isArtificial", record.getIsArtificial() != null && record.getIsArtificial() == 1 ? "人工录入" : "自动采集"); + row.put("updateTm", DateTransforUtil.transforLocalDateTimeToString(record.getUpdateTm(),"yyyy-MM-dd HH:mm:ss")); + row.put("dm", record.getDm()); + row.put("dmName", record.getDmName()); + row.put("dvcd", record.getDvcd()); // 改为测点编号 + exportData.add(row); + } + + // 通过工具类创建writer + ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(); + + // 自定义标题(去掉水库代码、水工建筑物编号、stcd、mpcd) + writer.addHeaderAlias("dvcd", "测点编号"); + writer.addHeaderAlias("mstm", "测量时间"); + writer.addHeaderAlias("tm", "温度(℃)"); + writer.addHeaderAlias("spprwl", "渗流压力水位(m)"); + writer.addHeaderAlias("isArtificial", "录入方式"); + writer.addHeaderAlias("updateTm", "更新时间"); + writer.addHeaderAlias("dm", "断面编码"); + writer.addHeaderAlias("dmName", "断面名称"); + + // 只写出设置了别名的字段 + writer.setOnlyAlias(true); + + // 一次性写出内容 + writer.write(exportData, true); + + // 设置响应内容类型 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + + try { + // 设置响应头信息 + String fileName = URLEncoder.encode("渗流压力人工录入数据", "UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); + + // 将writer对象刷新到响应输出流中 + writer.flush(response.getOutputStream(), true); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("导出Excel失败", e); + } finally { + // 关闭writer,释放内存 + writer.close(); + } + } + + + public boolean deleteData(ArtificialJcskSyDeleteDto dto) { + if(StringUtils.isBlank(dto.getStcd())) { + throw new IllegalArgumentException("stcd不能为空"); + } + if(StringUtils.isBlank(dto.getMpcd())){ + throw new IllegalArgumentException("mpcd不能为空"); + } + if(dto.getMstm() == null){ + throw new IllegalArgumentException("时间不能为空"); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(JcskSyR::getStcd, dto.getStcd()); + queryWrapper.eq(JcskSyR::getMstm, dto.getMstm()); + queryWrapper.eq(JcskSyR::getMpcd,dto.getMpcd()); + queryWrapper.eq(JcskSyR::getIsArtificial,1); + int delete = this.baseMapper.delete(queryWrapper); + return delete > 0; + } + + @Autowired + private AttResBaseService attResBaseService; + + /** + * 多项式方程计算 + * @param dto + * @return + */ + public ProjectSafeCalculateVo calculate(@NotNull ProjectSafeCalculateDto dto) { + /** + * 首先startTime和endTime有没有数据 + * + * */ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SyRegressionData::getDvcd,dto.getDvcd()); + wrapper.eq(SyRegressionData::getStartTime,dto.getDateTimeRangeSo().getStart()); + wrapper.eq(SyRegressionData::getEndTime,dto.getDateTimeRangeSo().getEnd()); + wrapper.orderByAsc(SyRegressionData::getOrder); + List queryData = syRegressionDataService.getBaseMapper().selectList(wrapper); + if(!queryData.isEmpty()){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + ProjectSafeCalculateVo res = new ProjectSafeCalculateVo(); + //根据dvcd查询stcd和mpcd + queryWrapper.eq(JcskSyB::getDvcd, dto.getDvcd()); + JcskSyB jcskSyB = jcskSyBService.getBaseMapper().selectOne(queryWrapper); + String stcd = jcskSyB.getStcd(); + String mpcd = jcskSyB.getMpcd(); + //取得这个时间段得所有八点得数据 + LambdaQueryWrapper eightAmLambdaQueryWrapper = new LambdaQueryWrapper<>(); + eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getStcd, stcd); + eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getMpcd, mpcd); + eightAmLambdaQueryWrapper.ge(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getStart()); + eightAmLambdaQueryWrapper.le(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getEnd()); + eightAmLambdaQueryWrapper.orderByAsc(JcskSyREightAm::getMstm); + List jcskSyREightAms = jcskSyREightAmMapper.selectList(eightAmLambdaQueryWrapper); + AttResBase attResBase = attResBaseService.list().get(0); + OsmoticQuerySo querySo = new OsmoticQuerySo(); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(dto.getDateTimeRangeSo().getStart()); + dateTimeRangeSo.setEnd(dto.getDateTimeRangeSo().getEnd()); + querySo.setDateTimeRangeSo(dateTimeRangeSo); + List stRzVos = baseMapper.qeury8AmRz(querySo,attResBase.getStcd()); + Map rzMap = stRzVos.stream() + .collect(Collectors.toMap( + StRzVo::getTm, // key: 时间 + StRzVo::getRz, // value: 水位 + (existing, replacement) -> existing // 如果key冲突,保留已存在的 + )); + //组合成为 时间 库水位 管道水位的数据 + List data = new ArrayList<>(); + Iterator iterator = jcskSyREightAms.iterator(); + while (iterator.hasNext()) { + JcskSyREightAm eightAm = iterator.next(); + if(eightAm.getMstm() == null || eightAm.getSpprwl() == null){ + iterator.remove(); + } + OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); + + // 设置监测时间和监测值(管道水位) + String mstmStr = eightAm.getMstm().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + detailVo.setTm(mstmStr); + detailVo.setValue(eightAm.getSpprwl()); + + // 查找对应的库水位 + BigDecimal rzValue = findClosestRzValue(rzMap, mstmStr); + if(rzValue == null){ + iterator.remove(); + } + detailVo.setRz(rzValue); + //获取数据清洗规则 + SyDataCheckRule rule = syDataCheckRuleService.getByDvcd(dto.getDvcd()); + if(rule != null && rule.getIsAvailable() == 1){ + //校验这条数据是否符合规则 + if(rzValue.compareTo(rule.getRz()) >=0){ + //如果当前库水位大于等于设置库水位,则跳过这条数据 + iterator.remove(); + } + if(eightAm.getSpprwl().compareTo(rule.getSyValue()) <=0){ + //如果当前监测值小于等于设置值,则跳过这套数据 + iterator.remove(); + } + } + data.add(detailVo); + } + if(data.isEmpty()){ + return res; + } + res.setDatas(data); + res.setOne(queryData.get(0) != null?queryData.get(0).getRegressionEquation():null); + res.setTwo(queryData.get(1) != null?queryData.get(1).getRegressionEquation():null); + res.setThree(queryData.get(2) != null?queryData.get(2).getRegressionEquation():null); + res.setFour(queryData.get(3) != null?queryData.get(3).getRegressionEquation():null); + return res; + }else{ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + ProjectSafeCalculateVo res = new ProjectSafeCalculateVo(); + //根据dvcd查询stcd和mpcd + queryWrapper.eq(JcskSyB::getDvcd, dto.getDvcd()); + JcskSyB jcskSyB = jcskSyBService.getBaseMapper().selectOne(queryWrapper); + String stcd = jcskSyB.getStcd(); + String mpcd = jcskSyB.getMpcd(); + //取得这个时间段得所有八点得数据 + LambdaQueryWrapper eightAmLambdaQueryWrapper = new LambdaQueryWrapper<>(); + eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getStcd, stcd); + eightAmLambdaQueryWrapper.eq(JcskSyREightAm::getMpcd, mpcd); + eightAmLambdaQueryWrapper.ge(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getStart()); + eightAmLambdaQueryWrapper.le(JcskSyREightAm::getMstm,dto.getDateTimeRangeSo().getEnd()); + eightAmLambdaQueryWrapper.orderByAsc(JcskSyREightAm::getMstm); + List jcskSyREightAms = jcskSyREightAmMapper.selectList(eightAmLambdaQueryWrapper); + AttResBase attResBase = attResBaseService.list().get(0); + OsmoticQuerySo querySo = new OsmoticQuerySo(); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(dto.getDateTimeRangeSo().getStart()); + dateTimeRangeSo.setEnd(dto.getDateTimeRangeSo().getEnd()); + querySo.setDateTimeRangeSo(dateTimeRangeSo); + List stRzVos = baseMapper.qeury8AmRz(querySo,attResBase.getStcd()); + Map rzMap = stRzVos.stream() + .collect(Collectors.toMap( + StRzVo::getTm, // key: 时间 + StRzVo::getRz, // value: 水位 + (existing, replacement) -> existing // 如果key冲突,保留已存在的 + )); + //组合成为 时间 库水位 管道水位的数据 + List data = new ArrayList<>(); + Iterator iterator = jcskSyREightAms.iterator(); + while (iterator.hasNext()) { + JcskSyREightAm eightAm = iterator.next(); + if(eightAm.getMstm() == null || eightAm.getSpprwl() == null){ + iterator.remove(); + } + OsmoticPressDetailVo detailVo = new OsmoticPressDetailVo(); + + // 设置监测时间和监测值(管道水位) + String mstmStr = eightAm.getMstm().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + detailVo.setTm(mstmStr); + detailVo.setValue(eightAm.getSpprwl()); + + // 查找对应的库水位 + BigDecimal rzValue = findClosestRzValue(rzMap, mstmStr); + if(rzValue == null){ + iterator.remove(); + } + detailVo.setRz(rzValue); + //获取数据清洗规则 + SyDataCheckRule rule = syDataCheckRuleService.getByDvcd(dto.getDvcd()); + if(rule != null && rule.getIsAvailable() == 1){ + //校验这条数据是否符合规则 + if(rzValue.compareTo(rule.getRz()) >=0){ + //如果当前库水位大于等于设置库水位,则跳过这条数据 + iterator.remove(); + } + if(eightAm.getSpprwl().compareTo(rule.getSyValue()) <=0){ + //如果当前监测值小于等于设置值,则跳过这套数据 + iterator.remove(); + } + } + data.add(detailVo); + } + if(data.isEmpty()){ + return res; + } + res.setDatas(data); + List saves = new ArrayList<>(); + RegressionEquation first = RegressionAnalysis.calculateLinear(data); + LocalDateTime createTime = LocalDateTime.now(); + if(first != null){ + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SyRegressionData::getDvcd, dto.getDvcd()); + query.eq(SyRegressionData::getOrder,1); + syRegressionDataService.remove(query); + res.setOne(first.toString()); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setOrder(1); + syRegressionData.setRegressionEquation(first.toString()); + syRegressionData.setDvcd(dto.getDvcd()); + syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); + syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); + syRegressionData.setCreateTime(createTime); + saves.add(syRegressionData); + } + RegressionEquation second = RegressionAnalysis.calculateQuadratic(data); + if(second != null){ + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SyRegressionData::getDvcd, dto.getDvcd()); + query.eq(SyRegressionData::getOrder,2); + syRegressionDataService.remove(query); + res.setTwo(second.toString()); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setOrder(2); + syRegressionData.setRegressionEquation(second.toString()); + syRegressionData.setDvcd(dto.getDvcd()); + syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); + syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); + syRegressionData.setCreateTime(createTime); + saves.add(syRegressionData); + } + RegressionEquation three = RegressionAnalysis.calculateCubic(data); + if(three != null){ + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SyRegressionData::getDvcd, dto.getDvcd()); + query.eq(SyRegressionData::getOrder,3); + syRegressionDataService.remove(query); + res.setThree(three.toString()); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setOrder(3); + syRegressionData.setRegressionEquation(three.toString()); + syRegressionData.setDvcd(dto.getDvcd()); + syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); + syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); + syRegressionData.setCreateTime(createTime); + saves.add(syRegressionData); + } + RegressionEquation four = RegressionAnalysis.calculateQuartic(data); + if(four != null){ + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SyRegressionData::getDvcd, dto.getDvcd()); + query.eq(SyRegressionData::getOrder,4); + syRegressionDataService.remove(query); + res.setFour(four.toString()); + SyRegressionData syRegressionData = new SyRegressionData(); + syRegressionData.setOrder(4); + syRegressionData.setRegressionEquation(four.toString()); + syRegressionData.setDvcd(dto.getDvcd()); + syRegressionData.setStartTime(dto.getDateTimeRangeSo().getStart()); + syRegressionData.setEndTime(dto.getDateTimeRangeSo().getEnd()); + syRegressionData.setCreateTime(createTime); + saves.add(syRegressionData); + } + syRegressionDataService.saveBatch(saves); + return res; + } + } + + /** + * 查找最接近的库水位值 + */ + private BigDecimal findClosestRzValue(Map rzMap, String targetTimeStr) { + // 如果直接匹配到,直接返回 + if (rzMap.containsKey(targetTimeStr)) { + return rzMap.get(targetTimeStr); + } + + // 如果没有直接匹配,查找最接近的时间 + LocalDateTime targetTime = LocalDateTime.parse(targetTimeStr, + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + + String closestTime = null; + long minDiff = Long.MAX_VALUE; + + for (String timeStr : rzMap.keySet()) { + LocalDateTime time = LocalDateTime.parse(timeStr, + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + + long diff = Math.abs(Duration.between(targetTime, time).toMinutes()); + + if (diff < minDiff) { + minDiff = diff; + closestTime = timeStr; + } + } + + return closestTime != null ? rzMap.get(closestTime) : BigDecimal.ZERO; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/MaintainServiceService.java b/src/main/java/com/gunshi/project/ss/service/MaintainServiceService.java new file mode 100644 index 0000000..a69d880 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/MaintainServiceService.java @@ -0,0 +1,108 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.so.MaintainPageSo; +import com.gunshi.project.ss.mapper.MaintainServiceMapper; +import com.gunshi.project.ss.model.MaintainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 维修养护 + * author: xusan + * date: 2024-08-27 15:15:14 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MaintainServiceService extends ServiceImpl +{ + @Autowired + private FileAssociationsService fileService; + + public MaintainService saveData(MaintainService dto) { + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + fileService.save(dto.getPics(), dto.getId().toString(), getGroupId(),getPicType()); + fileService.save(dto.getVideos(), dto.getId().toString(), getGroupId(),getVideoType()); + } + return dto; + } + + private String getVideoType() { + return "mainVideo"; + } + + private String getPicType() { + return "mainPic"; + } + + public MaintainService updateData(MaintainService dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.removeByBzIdAndType(dto.getId().toString(),getGroupId(),getPicType()); + fileService.save(dto.getPics(), dto.getId().toString(), getGroupId(),getPicType()); + fileService.removeByBzIdAndType(dto.getId().toString(),getGroupId(),getVideoType()); + fileService.save(dto.getVideos(), dto.getId().toString(), getGroupId(),getVideoType()); + } + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } + + public String getGroupId() { + return "maintainService"; + } + + public Page pageQuery(MaintainPageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getMaintainType())) { + query.eq(MaintainService::getMaintainType, page.getMaintainType()); + } + if (page.getDateTimeSo() != null && page.getDateTimeSo().getStart() != null) { + query.ge(MaintainService::getReportTime, page.getDateTimeSo().getStart()); + } + if (page.getDateTimeSo() != null && page.getDateTimeSo().getEnd() != null) { + query.le(MaintainService::getReportTime, page.getDateTimeSo().getEnd()); + } + query.orderByDesc(MaintainService::getReportTime); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List ret) { + for (MaintainService record : ret) { + record.setPics(fileService.queryFileList(record.getId().toString(),getGroupId(),getPicType())); + record.setVideos(fileService.queryFileList(record.getId().toString(),getGroupId(),getVideoType())); + } + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/MentenceFarmerRecordService.java b/src/main/java/com/gunshi/project/ss/service/MentenceFarmerRecordService.java new file mode 100644 index 0000000..ddc4061 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/MentenceFarmerRecordService.java @@ -0,0 +1,422 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.MonthRangeSo; +import com.gunshi.project.ss.entity.so.MentenceFarmerRecordPageSo; +import com.gunshi.project.ss.entity.vo.MentenceInfoCount12Vo; +import com.gunshi.project.ss.entity.vo.MentenceInfoCountVo; +import com.gunshi.project.ss.entity.vo.StatusCountVo; +import com.gunshi.project.ss.mapper.HiddenInfoMapper; +import com.gunshi.project.ss.mapper.MentenceFarmerRecordMapper; +import com.gunshi.project.ss.model.HiddenInfo; +import com.gunshi.project.ss.model.MentenceFarmerRecord; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysUserMapper; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.IOException; +import java.io.Serializable; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MentenceFarmerRecordService extends ServiceImpl { + + @Autowired + private HiddenInfoMapper hiddenInfoMapper; + + @Autowired + private SysUserMapper sysUserMapper; + + public boolean saveDate(MentenceFarmerRecord dto) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(MentenceFarmerRecord::getMentenceStDetailId, dto.getMentenceStDetailId()); + MentenceFarmerRecord mentenceFarmerRecord = this.baseMapper.selectOne(query); + if(Objects.nonNull(mentenceFarmerRecord)){ + throw new IllegalArgumentException("该维护项目,记录已存在"); + } + dto.setFillTime(new Date()); + dto.setId(IdWorker.getId()); + save(dto); + List details = dto.getDetails(); + if(details.isEmpty()){ + throw new IllegalArgumentException("请添加隐患记录"); + } + details.stream().forEach(o ->{ + o.setId(IdWorker.getId()); + o.setMentenceFarmerRecordId(dto.getId()); + }); + hiddenInfoMapper.insert(details); + return true; + } + + public boolean update(MentenceFarmerRecord dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentenceFarmerRecord::getId, dto.getId()); + MentenceFarmerRecord mentenceFarmerRecord = this.getOne(queryWrapper); + if(Objects.isNull(mentenceFarmerRecord)){ + throw new IllegalArgumentException("该日常养护记录不存在"); + } + updateById(dto); + LambdaQueryWrapper queryHiddenWrapper= new LambdaQueryWrapper<>(); + queryHiddenWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,dto.getId()); + hiddenInfoMapper.delete(queryHiddenWrapper); + List details = dto.getDetails(); + if(details.isEmpty()){ + throw new IllegalArgumentException("隐患点信息至少一条"); + } + details.stream().forEach(o ->{ + o.setId(IdWorker.getId()); + o.setMentenceFarmerRecordId(dto.getId()); + }); + hiddenInfoMapper.insert(details); + return true; + } + + public List delete(Serializable id) { + List childrenIds = new ArrayList<>(); + LambdaQueryWrapper queryHiddenWrapper = new LambdaQueryWrapper<>(); + queryHiddenWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,id); + List hiddenInfos = hiddenInfoMapper.selectList(queryHiddenWrapper); + hiddenInfos.forEach(hiddenInfo -> { + childrenIds.add(hiddenInfo.getId()); + }); + int delete = hiddenInfoMapper.delete(queryHiddenWrapper); + if(delete > 0){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentenceFarmerRecord::getId, id); + boolean result = remove(queryWrapper); + } + return childrenIds; + } + + public Page pageQuery(MentenceFarmerRecordPageSo pageSo) { + Page pageRecord = baseMapper.pageQuery(pageSo.getPageSo().toPage(),pageSo); + List records = pageRecord.getRecords(); + records.stream().forEach(o ->{ + if(o.getMentencePersonId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(o.getMentencePersonId())); + if(sysUser != null){ + o.setMentencePersonName(sysUser.getNickName()); + } + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,o.getId()); + List hiddenInfos = hiddenInfoMapper.selectList(queryWrapper); + o.setDetails(hiddenInfos); + }); + return pageRecord; + } + + + public Page pageInfoCountQuery(MentenceFarmerRecordPageSo pageSo) { + Page voPage = baseMapper.pageInfoCountQuery(pageSo.getPageSo().toPage(),pageSo); + List records = voPage.getRecords(); + for (MentenceInfoCountVo record : records) { + if(record.getMentencePersonId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getMentencePersonId())); + if(sysUser != null){ + record.setMentencePersonName(sysUser.getNickName()); + } + } + } + return voPage; + } + + public void exportToExcel(List records, HttpServletResponse response) { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("日常养护记录"); + + // 1. 创建所有样式 + StyleGroup styles = createAllStyles(workbook); + + // 2. 创建标题行 + createHeaderRow(sheet, styles.headerStyle); + + // 3. 填充数据 + fillDataWithMerge(sheet, styles, records); + + // 4. 调整列宽 + adjustColumnWidth(sheet); + + // 5. 响应处理 + String fileName = "日常养护记录_" + System.currentTimeMillis(); + try { + setResponseHeaders(response, fileName); + workbook.write(response.getOutputStream()); + workbook.close(); + } catch (IOException e) { + throw new RuntimeException("导出Excel失败", e); + } + } + + public List count12(MonthRangeSo monthRangeSo) { + List res = hiddenInfoMapper.selectCount12(monthRangeSo); + return res; + } + + public Map countType(MonthRangeSo monthRangeSo) { + return hiddenInfoMapper.selectCountType(monthRangeSo).stream() + .collect(Collectors.toMap(StatusCountVo::getStatus, StatusCountVo::getCount)); + } + + public Map countYear(String year) { + return hiddenInfoMapper.countYear(year).stream() + .collect(Collectors.toMap(StatusCountVo::getStatus, StatusCountVo::getCount)); + } + + + private static class StyleGroup { + CellStyle headerStyle; + CellStyle dataStyle; + CellStyle detailStyle; + CellStyle dateStyle; + CellStyle dateTimeStyle; + + StyleGroup(CellStyle headerStyle, CellStyle dataStyle, CellStyle detailStyle, + CellStyle dateStyle, CellStyle dateTimeStyle) { + this.headerStyle = headerStyle; + this.dataStyle = dataStyle; + this.detailStyle = detailStyle; + this.dateStyle = dateStyle; + this.dateTimeStyle = dateTimeStyle; + } + } + + private StyleGroup createAllStyles(Workbook workbook) { + // 基础数据样式 + CellStyle dataStyle = workbook.createCellStyle(); + dataStyle.setAlignment(HorizontalAlignment.CENTER); + dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); + dataStyle.setBorderBottom(BorderStyle.THIN); + dataStyle.setBorderTop(BorderStyle.THIN); + dataStyle.setBorderLeft(BorderStyle.THIN); + dataStyle.setBorderRight(BorderStyle.THIN); + + // 表头样式 + CellStyle headerStyle = workbook.createCellStyle(); + headerStyle.cloneStyleFrom(dataStyle); + Font headerFont = workbook.createFont(); + headerFont.setBold(true); + headerFont.setFontHeightInPoints((short) 12); + headerStyle.setFont(headerFont); + headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + + // 详情样式 + CellStyle detailStyle = workbook.createCellStyle(); + detailStyle.cloneStyleFrom(dataStyle); + detailStyle.setAlignment(HorizontalAlignment.LEFT); + detailStyle.setWrapText(true); + + // 日期样式 + CreationHelper createHelper = workbook.getCreationHelper(); + CellStyle dateStyle = workbook.createCellStyle(); + dateStyle.cloneStyleFrom(dataStyle); + dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd")); + + // 日期时间样式 + CellStyle dateTimeStyle = workbook.createCellStyle(); + dateTimeStyle.cloneStyleFrom(dataStyle); + dateTimeStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss")); + + return new StyleGroup(headerStyle, dataStyle, detailStyle, dateStyle, dateTimeStyle); + } + + private void createHeaderRow(Sheet sheet, CellStyle headerStyle) { + Row headerRow = sheet.createRow(0); + String[] headers = { + "序号", "维护对象", "维护项目", "维护人员", "维护时间开始", "维护时间结束", "填报时间", "维护内容", + "隐患发现时间", "隐患描述", "状态", "解决办法", "解决时间" + }; + + for (int i = 0; i < headers.length; i++) { + Cell cell = headerRow.createCell(i); + cell.setCellValue(headers[i]); + cell.setCellStyle(headerStyle); + } + } + + private void fillDataWithMerge(Sheet sheet, StyleGroup styles, List records) { + int currentRow = 1; + int serialNumber = 1; + + for (MentenceFarmerRecord record : records) { + // 获取隐患信息数量 + int hiddenInfoCount = record.getDetails() != null ? record.getDetails().size() : 0; + int rowSpan = Math.max(hiddenInfoCount, 1); + + Row row = sheet.createRow(currentRow); + + // 1. 序号 + createMergedCell(sheet, row, 0, serialNumber, styles.dataStyle, currentRow, rowSpan, 0, 0); + + // 2. 维护对象 + String mentenceStName = record.getMentenceStName() != null ? record.getMentenceStName() : ""; + createMergedCell(sheet, row, 1, mentenceStName, styles.dataStyle, currentRow, rowSpan, 1, 1); + + // 3. 维护项目 + String mentenceStDetailName = record.getMentenceStDetailName() != null ? record.getMentenceStDetailName() : ""; + createMergedCell(sheet, row, 2, mentenceStDetailName, styles.dataStyle, currentRow, rowSpan, 2, 2); + + // 4. 维护人员 + String mentencePersonName = record.getMentencePersonName() != null ? record.getMentencePersonName() : ""; + createMergedCell(sheet, row, 3, mentencePersonName, styles.dataStyle, currentRow, rowSpan, 3, 3); + + // 5. 维护时间开始 - 新增列 + createDateMergedCell(sheet, row, 4, record.getMentenceTimeBegin(), styles.dateStyle, currentRow, rowSpan, 4, 4); + + // 6. 维护时间结束 - 新增列 + createDateMergedCell(sheet, row, 5, record.getMentenceTimeEnd(), styles.dateStyle, currentRow, rowSpan, 5, 5); + + // 7. 填报时间 - 列索引从5变为6 + createDateMergedCell(sheet, row, 6, record.getFillTime(), styles.dateTimeStyle, currentRow, rowSpan, 6, 6); + + // 8. 维护内容 - 列索引从6变为7 + String mentenceContext = record.getMentenceContext() != null ? record.getMentenceContext() : ""; + createMergedCell(sheet, row, 7, mentenceContext, styles.detailStyle, currentRow, rowSpan, 7, 7); + + // 填充隐患信息 - 列索引需要相应调整 + if (hiddenInfoCount > 0) { + fillHiddenInfo(row, record.getDetails().get(0), styles); + + // 创建额外的行用于其他隐患信息 + for (int i = 1; i < hiddenInfoCount; i++) { + Row detailRow = sheet.createRow(currentRow + i); + // 为前8列创建空单元格并设置样式(因为现在有8列基础数据) + for (int col = 0; col <= 7; col++) { + Cell emptyCell = detailRow.createCell(col); + emptyCell.setCellValue(""); + emptyCell.setCellStyle(styles.dataStyle); + } + fillHiddenInfo(detailRow, record.getDetails().get(i), styles); + } + } else { + // 如果没有隐患信息,创建空单元格 - 列索引需要调整 + for (int i = 8; i <= 12; i++) { + Cell cell = row.createCell(i); + cell.setCellValue(""); + cell.setCellStyle(styles.dataStyle); + } + } + + currentRow += rowSpan; + serialNumber++; + } + } + + private void createMergedCell(Sheet sheet, Row row, int column, Object value, CellStyle style, + int startRow, int rowSpan, int firstCol, int lastCol) { + Cell cell = row.createCell(column); + setCellValue(cell, value, style); + + if (rowSpan > 1) { + sheet.addMergedRegion(new CellRangeAddress(startRow, startRow + rowSpan - 1, firstCol, lastCol)); + } + } + + private void createDateMergedCell(Sheet sheet, Row row, int column, Date date, CellStyle style, + int startRow, int rowSpan, int firstCol, int lastCol) { + Cell cell = row.createCell(column); + if (date != null) { + cell.setCellValue(date); + cell.setCellStyle(style); + } else { + cell.setCellValue(""); + cell.setCellStyle(style); + } + + if (rowSpan > 1) { + sheet.addMergedRegion(new CellRangeAddress(startRow, startRow + rowSpan - 1, firstCol, lastCol)); + } + } + + private void fillHiddenInfo(Row row, HiddenInfo hiddenInfo, StyleGroup styles) { + // 隐患发现时间 - 列索引从7变为8 + createCell(row, 8, hiddenInfo.getFoundTime(), styles.dateTimeStyle); + + // 隐患描述 - 列索引从8变为9 + String hiddenDesc = hiddenInfo.getHiddenDesc() != null ? hiddenInfo.getHiddenDesc() : ""; + createCell(row, 9, hiddenDesc, styles.detailStyle); + + // 状态 - 列索引从9变为10 + String status = ""; + if (hiddenInfo.getStatus() != null) { + status = hiddenInfo.getStatus() == 0 ? "已处理" : "未处理"; + } + createCell(row, 10, status, styles.dataStyle); + + // 解决办法 - 列索引从10变为11 + String resolveMethod = hiddenInfo.getResolveMethod() != null ? hiddenInfo.getResolveMethod() : ""; + createCell(row, 11, resolveMethod, styles.detailStyle); + + // 解决时间 - 列索引从11变为12 + createCell(row, 12, hiddenInfo.getResolveTime(), styles.dateTimeStyle); + } + + private void createCell(Row row, int column, Object value, CellStyle style) { + Cell cell = row.createCell(column); + setCellValue(cell, value, style); + } + + private void setCellValue(Cell cell, Object value, CellStyle style) { + if (value == null) { + cell.setCellValue(""); + } else if (value instanceof String) { + cell.setCellValue((String) value); + } else if (value instanceof Date) { + cell.setCellValue((Date) value); + } else if (value instanceof Number) { + cell.setCellValue(value.toString()); + } else { + cell.setCellValue(value.toString()); + } + cell.setCellStyle(style); + } + + private void adjustColumnWidth(Sheet sheet) { + int[] columnWidths = { + 8 * 256, // 序号 + 20 * 256, // 维护对象 + 20 * 256, // 维护项目 + 15 * 256, // 维护人员 + 15 * 256, // 维护时间开始 - 新增列 + 15 * 256, // 维护时间结束 - 新增列 + 20 * 256, // 填报时间 + 30 * 256, // 维护内容 + 20 * 256, // 隐患发现时间 + 30 * 256, // 隐患描述 + 10 * 256, // 状态 + 30 * 256, // 解决办法 + 20 * 256 // 解决时间 + }; + + for (int i = 0; i < columnWidths.length; i++) { + sheet.setColumnWidth(i, columnWidths[i]); + } + } + + private void setResponseHeaders(HttpServletResponse response, String fileName) throws IOException { + String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8) + .replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", + "attachment; filename=\"" + encodedFileName + ".xlsx\""); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/MentencePlanDetailService.java b/src/main/java/com/gunshi/project/ss/service/MentencePlanDetailService.java new file mode 100644 index 0000000..f2cf996 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/MentencePlanDetailService.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.MentencePlanDetailMapper; +import com.gunshi.project.ss.model.MentencePlanDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MentencePlanDetailService extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/ss/service/MentencePlanService.java b/src/main/java/com/gunshi/project/ss/service/MentencePlanService.java new file mode 100644 index 0000000..a9a75b9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/MentencePlanService.java @@ -0,0 +1,151 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.MentencePlanPageSo; +import com.gunshi.project.ss.mapper.MentencePlanDetailMapper; +import com.gunshi.project.ss.mapper.MentencePlanMapper; +import com.gunshi.project.ss.model.MentencePlan; +import com.gunshi.project.ss.model.MentencePlanDetail; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysUserMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MentencePlanService extends ServiceImpl { + + + @Autowired + private MentencePlanDetailMapper mentencePlanDetailMapper; + + @Autowired + private SysUserMapper sysUserMapper; + + public boolean saveData(MentencePlan dto) { + String planName = dto.getPlanName();//计划名称 + String planYear = dto.getPlanYear();//计划年份 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentencePlan::getPlanName,planName); + queryWrapper.eq(MentencePlan::getPlanYear,planYear); + MentencePlan mentencePlan = baseMapper.selectOne(queryWrapper); + if(Objects.nonNull(mentencePlan)){ + throw new IllegalArgumentException("该年份计划已存在"); + } + dto.setId(IdWorker.getId()); + dto.setCreateDate(new Date()); + dto.setPlanStatus(0); + save(dto); + //保存细节 + List details = dto.getDetails(); + if(details == null || details.isEmpty()){ + throw new IllegalArgumentException("至少需要一条维护内容"); + } + details.stream().forEach(detail->{ + detail.setId(IdWorker.getId()); + detail.setMentencePlanId(dto.getId()); + }); + if(details == null || details.isEmpty()){ + throw new IllegalArgumentException("请添加维护内容"); + } + mentencePlanDetailMapper.insert(details); + return true; + } + + public boolean update(MentencePlan dto) { + String planName = dto.getPlanName();//计划名称 + String planYear = dto.getPlanYear();//计划年份 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentencePlan::getPlanName,planName); + queryWrapper.eq(MentencePlan::getPlanYear,planYear); + MentencePlan mentencePlan = baseMapper.selectOne(queryWrapper); + if(Objects.isNull(mentencePlan)){ + throw new IllegalArgumentException("该年份计划不存在,请检查"); + } + updateById(dto); + List details = dto.getDetails(); + if(details == null || details.isEmpty()){ + throw new IllegalArgumentException("至少需要一条维护内容"); + } + + //先删除细节 + LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); + queryWrapperDetail.eq(MentencePlanDetail::getMentencePlanId,mentencePlan.getId()); + int delete = mentencePlanDetailMapper.delete(queryWrapperDetail); + //再插入 + details.forEach(o ->{ + o.setId(IdWorker.getId()); + o.setMentencePlanId(dto.getId()); + }); + mentencePlanDetailMapper.insert(details); + return true; + } + + public Page pageQuery(MentencePlanPageSo pageSo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(pageSo.getPlanName())){ + queryWrapper.like(MentencePlan::getPlanName,pageSo.getPlanName()); + } + if(!StringUtils.isBlank(pageSo.getYear())){ + queryWrapper.eq(MentencePlan::getPlanYear,pageSo.getYear()); + } + if(Objects.nonNull(pageSo.getStatus())){ + queryWrapper.eq(MentencePlan::getPlanStatus,pageSo.getStatus()); + } + queryWrapper.orderByDesc(MentencePlan::getCreateDate); + Page mentencePlanPage = baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); + List records = mentencePlanPage.getRecords(); + for (MentencePlan record : records) { + Long id = record.getId(); + if(record.getApprovePersonId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getApprovePersonId())); + if(sysUser != null){ + record.setApprovePersonName(sysUser.getNickName()); + } + } + if(record.getCreateId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getCreateId())); + if(sysUser != null){ + record.setCreateName(sysUser.getNickName()); + } + } + List details = mentencePlanDetailMapper.selectDetail(id); + for (MentencePlanDetail detail : details) { + if(detail.getChargePersonId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(detail.getChargePersonId())); + if(sysUser != null){ + detail.setChargePersonName(sysUser.getNickName()); + } + } + } + record.setDetails(details); + } + return mentencePlanPage; + } + + public void approve(MentencePlan dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentencePlan::getId, dto.getId()); + MentencePlan one = getOne(queryWrapper); + if(Objects.isNull(one)){ + throw new RuntimeException("该计划不存在"); + } + if(!one.getApprovePersonId().equals(dto.getApprovePersonId())){ + throw new IllegalArgumentException("对不起,您没有审批的权限"); + } + dto.setApprovePersonId(dto.getApprovePersonId()); + updateById(dto); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/MentenceStDetailService.java b/src/main/java/com/gunshi/project/ss/service/MentenceStDetailService.java new file mode 100644 index 0000000..2939099 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/MentenceStDetailService.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.MentenceStPageSo; +import com.gunshi.project.ss.mapper.MentenceFarmerRecordMapper; +import com.gunshi.project.ss.mapper.MentencePlanDetailMapper; +import com.gunshi.project.ss.mapper.MentenceStDetailMapper; +import com.gunshi.project.ss.model.MentenceFarmerRecord; +import com.gunshi.project.ss.model.MentencePlanDetail; +import com.gunshi.project.ss.model.MentenceStDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MentenceStDetailService extends ServiceImpl { + + @Autowired + private MentencePlanDetailMapper mentencePlanDetailMapper; + + @Autowired + private MentenceFarmerRecordMapper mentenceFarmerRecordMapper; + + public boolean deleteById(Serializable id) { + LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); + queryWrapperDetail.eq(MentencePlanDetail::getMentenceStDetailId, id); + Long count = mentencePlanDetailMapper.selectCount(queryWrapperDetail); + if(count > 0) { + throw new IllegalArgumentException("该维护项目,正关联着维护计划,不允许删除"); + } + int delete = baseMapper.deleteById(id); + return true; + } + + public boolean update(MentenceStDetail dto) { + LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); + queryWrapperDetail.eq(MentencePlanDetail::getMentenceStDetailId, dto.getId()); + Long count = mentencePlanDetailMapper.selectCount(queryWrapperDetail); + if(count > 0) { + throw new IllegalArgumentException("该维护项目,正关联着维护计划,不允许更新"); + } + baseMapper.updateById(dto); + return true; + } + + public Page pageQuery(MentenceStPageSo dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentenceStDetail::getMentenceStId,dto.getStId()); + queryWrapper.orderByAsc(MentenceStDetail::getOrder); + Page mentenceStDetailPage = baseMapper.selectPage(dto.getPageSo().toPage(), queryWrapper); + for (MentenceStDetail record : mentenceStDetailPage.getRecords()) { + LambdaQueryWrapper queryWrapperDetail = new LambdaQueryWrapper<>(); + queryWrapperDetail.eq(MentencePlanDetail::getMentenceStDetailId, record.getId()); + Long count1 = mentencePlanDetailMapper.selectCount(queryWrapperDetail); + + LambdaQueryWrapper queryWrapperFarmerRecord = new LambdaQueryWrapper<>(); + queryWrapperFarmerRecord.eq(MentenceFarmerRecord::getMentenceStDetailId,record.getId()); + Long count2 = mentenceFarmerRecordMapper.selectCount(queryWrapperFarmerRecord); + if(count1 > 0 || count2 > 0) { + record.setHasUse(true); + } + } + return mentenceStDetailPage; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/MentenceStService.java b/src/main/java/com/gunshi/project/ss/service/MentenceStService.java new file mode 100644 index 0000000..fbf20b4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/MentenceStService.java @@ -0,0 +1,82 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.MentenceStPageSo; +import com.gunshi.project.ss.mapper.MentenceStDetailMapper; +import com.gunshi.project.ss.mapper.MentenceStMapper; +import com.gunshi.project.ss.model.MentenceSt; +import com.gunshi.project.ss.model.MentenceStDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MentenceStService extends ServiceImpl { + + @Autowired + private MentenceStDetailMapper mentenceStDetailMapper; + + + + public boolean deleteById(Serializable id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentenceStDetail::getMentenceStId, id); + Long count = mentenceStDetailMapper.selectCount(queryWrapper); + if(count > 0) { + throw new IllegalArgumentException("存在养护项目,无法删除"); + } + removeById(id); + return true; + } + + public List tree(MentenceStPageSo dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(dto.getStName())){ + queryWrapper.like(MentenceSt::getStName, dto.getStName()); + } + List mentenceSts = baseMapper.selectList(queryWrapper); + Iterator iterator = mentenceSts.iterator(); + while(iterator.hasNext()) { + MentenceSt mentenceSt = iterator.next(); + LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(dto.getStDetailName())){ + queryWrapper2.like(MentenceStDetail::getStDetailName, dto.getStDetailName()); + } + queryWrapper2.eq(MentenceStDetail::getMentenceStId,mentenceSt.getId()); + queryWrapper2.eq(MentenceStDetail::getIsEnable,0); + List mentenceStDetails = mentenceStDetailMapper.selectList(queryWrapper2); + if(mentenceStDetails.isEmpty()){ + iterator.remove(); + continue; + } + mentenceSt.setChildrens(mentenceStDetails); + } + return mentenceSts; + } + + public boolean saveDate(MentenceSt dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MentenceSt::getStName, dto.getStName()); + MentenceSt mentenceSt = baseMapper.selectOne(queryWrapper); + if(Objects.nonNull(mentenceSt)){ + throw new IllegalArgumentException("该名称已存在,请检查"); + } + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + save(dto); + return true; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/MentenceTemplateService.java b/src/main/java/com/gunshi/project/ss/service/MentenceTemplateService.java new file mode 100644 index 0000000..0dd6724 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/MentenceTemplateService.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.MentenceTemplatePageSo; +import com.gunshi.project.ss.mapper.MentenceTemplateMapper; +import com.gunshi.project.ss.model.MentenceTemplate; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysUserMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.Objects; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MentenceTemplateService extends ServiceImpl { + + @Autowired + private SysUserMapper sysUserMapper; + + public boolean saveDate(MentenceTemplate dto) { + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + if(dto.getCreateId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(dto.getCreateId())); + if(sysUser != null){ + dto.setCreateName(sysUser.getNickName()); + } + } + save(dto); + return true; + } + + public boolean update(MentenceTemplate dto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MentenceTemplate::getId, dto.getId()); + MentenceTemplate entity = getOne(wrapper); + if(Objects.isNull(entity)){ + throw new IllegalArgumentException("该模板不存在,请检查"); + } + updateById(dto); + return true; + } + + public Page pageQuery(MentenceTemplatePageSo pageSo) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(pageSo.getName())){ + wrapper.like(MentenceTemplate::getName,pageSo.getName()); + } + if(pageSo.getType() != null){ + wrapper.eq(MentenceTemplate::getType,pageSo.getType()); + } + wrapper.orderByDesc(MentenceTemplate::getCreateTime); + Page mentenceTemplatePage = baseMapper.selectPage(pageSo.getPageSo().toPage(), wrapper); + return mentenceTemplatePage; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/MessageCenterService.java b/src/main/java/com/gunshi/project/ss/service/MessageCenterService.java new file mode 100644 index 0000000..8c6593e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/MessageCenterService.java @@ -0,0 +1,195 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.entity.so.MessageCenterPageSo; +import com.gunshi.project.ss.mapper.AttResBaseMapper; +import com.gunshi.project.ss.mapper.MessageCenterMapper; +import com.gunshi.project.ss.model.AttResBase; +import com.gunshi.project.ss.model.MessageCenter; +import com.gunshi.project.ss.model.OsmoticWarnR; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.util.DateUtil; +import com.ruoyi.common.utils.SecurityUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * 描述: 消息中心 + * author: xusan + * date: 2024-09-19 10:39:29 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class MessageCenterService extends ServiceImpl +{ + @Autowired + private AttResBaseMapper resBaseMapper; + + public void insertMessage(List messageCenters){ + for(MessageCenter messageCenter : messageCenters){ + messageCenter.setId(IdWorker.getId()); + messageCenter.setPublishTime(new Date()); + messageCenter.setStatus(0); + } + this.saveBatch(messageCenters); + } + + public Page listPage(MessageCenterPageSo page) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(MessageCenter::getReceiveUserId,page.getReceiveUserId()) + .eq(MessageCenter::getStatus,page.getStatus()); + if (ObjectUtils.isNotNull(page.getTitle())) { + queryWrapper.like(MessageCenter::getTitle, page.getTitle()); + } + if (ObjectUtils.isNotNull(page.getPublishUserName())) { + queryWrapper.like(MessageCenter::getPublishUserName, page.getPublishUserName()); + } + return this.page(page.getPageSo().toPage(),queryWrapper); + } + + public Boolean allRead() { + return this.lambdaUpdate() + .set(MessageCenter::getStatus, 1) + .eq(MessageCenter::getReceiveUserId, SecurityUtils.getUserId()) + .update(); + } + + + public void rzWarnMes(List rlist) { + AttResBase attResBase = resBaseMapper.selectById("42118130001"); + String stcd = attResBase.getStcd(); + Optional first = rlist.stream().filter(o -> o.getStcd().equals(stcd)).findFirst(); + if(first.isPresent()){ + BigDecimal rz = new BigDecimal(first.get().getRz()); + MessageCenter center =new MessageCenter(); + center.setPublishUserId(1L); + center.setPublishUserName("若依"); + center.setTitle("水位告警"); + String content = "系统检测到黑石咀水库水位"; + //校核水位 + BigDecimal calFloodLev = attResBase.getCalFloodLev(); + if(rz.compareTo(calFloodLev) > 0){ + center.setType(1); + content = content + "超校核"+ rz.subtract(calFloodLev) +"m"; + center.setContent(content); + addRzMessage(center,1); + return; + } + //设计水位 + BigDecimal desFloodLev = attResBase.getDesFloodLev(); + if(rz.compareTo(desFloodLev) > 0){ + center.setType(2); + content = content + "超设计"+ rz.subtract(desFloodLev) +"m"; + center.setContent(content); + addRzMessage(center,2); + return; + } + //汛限水位 + BigDecimal flLowLimLev = attResBase.getFlLowLimLev(); + if(rz.compareTo(flLowLimLev) > 0){ + center.setType(3); + content = content + "超汛限"+ rz.subtract(flLowLimLev) +"m"; + center.setContent(content); + addRzMessage(center,3); + } + + } + + } + + private void addRzMessage(MessageCenter center, Integer type) { + String date = DateUtil.convertDateToString(new Date()); + List list = this.baseMapper.queryTodayMes(date,type); + //如果当日不存在该类型的水位告警,则直接新增 + if(CollectionUtils.isEmpty(list)){ + rzMesHandle(center); + }else{ + this.removeBatchByIds(list); + rzMesHandle(center); + } + } + + private void rzMesHandle(MessageCenter center){ + //查找接收角色关联的人员 + List ids = this.baseMapper.queryUserIds(); + List mesList = ids.stream().map(o -> { + MessageCenter mes = new MessageCenter(); + BeanUtils.copyProperties(center, mes); + mes.setReceiveUserId(o); + return mes; + }).collect(Collectors.toList()); + this.insertMessage(mesList); + } + + + /** + * 生成渗压,渗流,位移告警 + * @param warnR + * @param desc + */ + public void osmoticWarnMes(OsmoticWarnR warnR,String desc) { + MessageCenter center = new MessageCenter(); + String stationCode = warnR.getStationCode(); + String title = null; + String content = "系统检测到"; + switch (warnR.getType()){ + case 1 : + title = "渗压告警"; + content = content + "渗压测点" + stationCode + desc +",请注意核实。"; + break; + case 2 : + title = "渗流告警"; + content = content + "渗流测点" + stationCode + desc +",请注意核实。"; + break; + case 3 : + title = "位移告警"; + content = content + "位移测点" + stationCode + desc +",请注意核实。"; + break; + } + center.setPublishUserId(1L); + center.setPublishUserName("若依"); + center.setTitle(title); + center.setContent(content); + rzMesHandle(center); + } + + public List listMes(DateTimeRangeSo dateTimeRangeSo) { + Long userId; + try { + userId = SecurityUtils.getUserId(); + } catch (Exception e) { + return null; + } + + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(MessageCenter::getReceiveUserId, userId); + if (ObjectUtils.isNotNull(dateTimeRangeSo) && ObjectUtils.isNotNull(dateTimeRangeSo.getStart())) { + queryWrapper.gt(MessageCenter::getPublishTime, dateTimeRangeSo.getStart()); + } + if (ObjectUtils.isNotNull(dateTimeRangeSo) && ObjectUtils.isNotNull(dateTimeRangeSo.getEnd())) { + queryWrapper.lt(MessageCenter::getPublishTime, dateTimeRangeSo.getEnd()); + } + queryWrapper.eq(MessageCenter::getStatus,0); + queryWrapper.orderByDesc(MessageCenter::getPublishTime); + return this.list(queryWrapper); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/OsmoticFlowDeviceService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticFlowDeviceService.java new file mode 100644 index 0000000..d672c52 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/OsmoticFlowDeviceService.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.HomeOsmoticFlowDeviceVo; +import com.gunshi.project.ss.mapper.OsmoticFlowDeviceMapper; +import com.gunshi.project.ss.model.OsmoticFlowDevice; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 渗流设备表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class OsmoticFlowDeviceService extends ServiceImpl +{ + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/OsmoticFlowRService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticFlowRService.java new file mode 100644 index 0000000..2c497c0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/OsmoticFlowRService.java @@ -0,0 +1,38 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.gunshi.project.ss.common.model.so.OsmoticQueryPageSo; +import com.gunshi.project.ss.mapper.OsmoticFlowRMapper; +import com.gunshi.project.ss.model.OsmoticFlowR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 渗流监测记录表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class OsmoticFlowRService extends ServiceImpl +{ + + public Page queryPage(OsmoticQueryPageSo osmoticQueryPageSo) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + if(osmoticQueryPageSo.getDateTimeRangeSo() != null && osmoticQueryPageSo.getDateTimeRangeSo().getStart() != null){ + wrapper.ge(OsmoticFlowR::getTm,osmoticQueryPageSo.getDateTimeRangeSo().getStart()); + } + if(osmoticQueryPageSo.getDateTimeRangeSo() != null && osmoticQueryPageSo.getDateTimeRangeSo().getEnd() != null){ + wrapper.le(OsmoticFlowR::getTm,osmoticQueryPageSo.getDateTimeRangeSo().getEnd()); + } + wrapper.orderByDesc(OsmoticFlowR::getTm); + return this.page(osmoticQueryPageSo.getPageSo().toPage(),wrapper); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/OsmoticPressDeviceService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticPressDeviceService.java new file mode 100644 index 0000000..92c4474 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/OsmoticPressDeviceService.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.HomeOsmoticPressDeviceVo; +import com.gunshi.project.ss.mapper.OsmoticPressDeviceMapper; +import com.gunshi.project.ss.model.OsmoticPressDevice; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 渗压设备表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class OsmoticPressDeviceService extends ServiceImpl +{ + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } +} + + diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticPressRService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticPressRService.java similarity index 100% rename from src/main/java/com/gunshi/project/hsz/service/OsmoticPressRService.java rename to src/main/java/com/gunshi/project/ss/service/OsmoticPressRService.java diff --git a/src/main/java/com/gunshi/project/ss/service/OsmoticShiftDeviceService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticShiftDeviceService.java new file mode 100644 index 0000000..5e58e33 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/OsmoticShiftDeviceService.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.HomeOsmoticShiftDeviceVo; +import com.gunshi.project.ss.mapper.OsmoticShiftDeviceMapper; +import com.gunshi.project.ss.model.OsmoticShiftDevice; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 位移监测记录表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class OsmoticShiftDeviceService extends ServiceImpl +{ + + public List getDetailsAndMonitoringDataList() { + return baseMapper.getDetailsAndMonitoringDataList(); + } +} + + diff --git a/src/main/java/com/gunshi/project/hsz/service/OsmoticShiftRService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticShiftRService.java similarity index 100% rename from src/main/java/com/gunshi/project/hsz/service/OsmoticShiftRService.java rename to src/main/java/com/gunshi/project/ss/service/OsmoticShiftRService.java diff --git a/src/main/java/com/gunshi/project/ss/service/OsmoticWarnRService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticWarnRService.java new file mode 100644 index 0000000..cf1c29b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/OsmoticWarnRService.java @@ -0,0 +1,202 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +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.gunshi.project.ss.entity.so.WarnPageSo; +import com.gunshi.project.ss.entity.so.WarnSo; +import com.gunshi.project.ss.entity.vo.OsmoticWarnVo; +import com.gunshi.project.ss.mapper.OsmoticWarnRMapper; +import com.gunshi.project.ss.mapper.OsmoticWarnRuleMapper; +import com.gunshi.project.ss.common.model.JcskGnssR; +import com.gunshi.project.ss.model.OsmoticWarnR; +import com.gunshi.project.ss.model.OsmoticWarnRule; +import com.gunshi.project.ss.util.DateTransforUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * 描述: 隐患预警记录表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class OsmoticWarnRService extends ServiceImpl +{ + @Resource + private OsmoticWarnRuleMapper warnRuleMapper; + + @Resource + private MessageCenterService messageCenterService; + + public Page queryPage(WarnPageSo warnPageSo) { + return this.baseMapper.queryPage(warnPageSo.getPageSo().toPage(),warnPageSo); + } + + public Map stat(WarnSo warnSo) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + if(warnSo.getType() != null){ + wrapper.eq(OsmoticWarnR::getType,warnSo.getType()); + } + if(warnSo.getLevel() != null){ + wrapper.eq(OsmoticWarnR::getLevel,warnSo.getLevel()); + } + if(StringUtils.isNotEmpty(warnSo.getStationCode())){ + wrapper.like(OsmoticWarnR::getStationCode,warnSo.getStationCode()); + } + if(warnSo.getDateTimeRangeSo() != null && warnSo.getDateTimeRangeSo().getStart() != null){ + wrapper.ge(OsmoticWarnR::getTm,warnSo.getDateTimeRangeSo().getStart()); + } + if(warnSo.getDateTimeRangeSo() != null && warnSo.getDateTimeRangeSo().getEnd() != null){ + wrapper.le(OsmoticWarnR::getTm,warnSo.getDateTimeRangeSo().getEnd()); + } + List list = this.list(wrapper); + return list.stream().collect(Collectors.groupingBy(OsmoticWarnR::getLevel, Collectors.counting())); + } + + /** + * 生成位移预警 + */ + public void saveShiftWarn(JcskGnssR jcskGnssR){ + String stationCode = jcskGnssR.getCd(); + LocalDateTime tm = jcskGnssR.getTm(); + Date date = DateTransforUtil.transforLocalDateTimeToDate(tm); + BigDecimal x = jcskGnssR.getDe(); + savePressWarn(stationCode,x,date,"x"); + BigDecimal y = jcskGnssR.getDn(); + savePressWarn(stationCode,y,date,"y"); + BigDecimal h = jcskGnssR.getDu(); + savePressWarn(stationCode,h,date,"h"); + } + + /** + * 生成渗压/渗流预警 + * @param + */ + public void savePressWarn(String stationCode,BigDecimal value,Date tm,String direction) { + //查询预警规则,每个测点至多只有2条预警规则 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(OsmoticWarnRule::getStationCode,stationCode) + .eq(OsmoticWarnRule::getStatus,1); + if(StringUtils.isNotEmpty(direction)){ + queryWrapper.eq(OsmoticWarnRule::getDirection,direction); + } + List ruleList = warnRuleMapper.selectList(queryWrapper); + if(CollectionUtils.isNotEmpty(ruleList)){ + Boolean isRedWarn = false; + //先判断是否符合红色预警 + Optional red = ruleList.stream().filter(o -> o.getLevel() == 2).findFirst(); + if(red.isPresent()){ + OsmoticWarnRule redRule = red.get(); + isRedWarn = saveWarnData(redRule,value,tm); + if (isRedWarn){ + return; + } + //没有生成红色预警,再判断是否符合黄色预警 + Optional yellow = ruleList.stream().filter(o -> o.getLevel() == 1).findFirst(); + if(yellow.isPresent()){ + OsmoticWarnRule yellowRule = yellow.get(); + saveWarnData(yellowRule,value,tm); + } + }else { + OsmoticWarnRule yellowRule = ruleList.get(0); + saveWarnData(yellowRule,value,tm); + } + } + } + + private Boolean saveWarnData(OsmoticWarnRule rule,BigDecimal value,Date tm){ + String conditionOne = rule.getConditionOne(); + BigDecimal valueOne = rule.getValueOne(); + Integer condition = rule.getCondition(); + Boolean flagOne = getFlag(conditionOne,valueOne,value); + /** + * 没有第二条件时,条件1满足就生成预警 + * 有第二条件时,当为或时,条件1满足就生成预警,条件1不满足就判断条件2是否满足;当为且时,需条件1和条件2同时满足才生成预警 + */ + if(condition == null){ + if(flagOne){ + //生成预警 + return geneWarn(rule,value,tm); + } + }else{ + String conditionTwo = rule.getConditionTwo(); + BigDecimal valueTwo = rule.getValueTwo(); + Boolean flagTwo = getFlag(conditionTwo,valueTwo,value); + if(condition == 1){ + if(flagOne && flagTwo){ + //生成预警 + return geneWarn(rule,value,tm); + } + }else{ + if(flagOne || flagTwo){ + //生成预警 + return geneWarn(rule,value,tm); + } + } + } + return false; + } + + private Boolean geneWarn(OsmoticWarnRule rule,BigDecimal value,Date tm) { + OsmoticWarnR warnR = new OsmoticWarnR(); + warnR.setId(IdWorker.getId()); + warnR.setStationCode(rule.getStationCode()); + warnR.setRuleId(rule.getId()); + warnR.setValue(value); + warnR.setTm(tm); + warnR.setType(rule.getType()); + warnR.setLevel(rule.getLevel()); + this.baseMapper.insert(warnR); + //生成消息 + messageCenterService.osmoticWarnMes(warnR,rule.getRuleDesc()); + return true; + } + + private Boolean getFlag(String condition,BigDecimal ruleValue,BigDecimal value){ + Boolean flag = false; + switch (condition) { + case ">" : + flag = value.compareTo(ruleValue) > 0; + break; + case ">=" : + flag = value.compareTo(ruleValue) >= 0; + break; + case "<" : + flag = value.compareTo(ruleValue) < 0; + break; + case "<=" : + flag = value.compareTo(ruleValue) <= 0; + break; + case "=" : + flag = value.compareTo(ruleValue) == 0; + break; + case "!=" : + flag = value.compareTo(ruleValue) != 0; + break; + } + return flag; + } + + public OsmoticWarnR queryMaxTmByType(Integer press) { + return this.baseMapper.queryMaxTmByType(press); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/OsmoticWarnRuleService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticWarnRuleService.java new file mode 100644 index 0000000..5f08131 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/OsmoticWarnRuleService.java @@ -0,0 +1,345 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +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.gunshi.project.ss.common.model.JcskGnssR; +import com.gunshi.project.ss.common.model.JcskSlR; +import com.gunshi.project.ss.common.model.JcskSyR; +import com.gunshi.project.ss.common.util.LocalDateTimeConverter; +import com.gunshi.project.ss.entity.so.WarnRulePageSo; +import com.gunshi.project.ss.mapper.OsmoticWarnRuleMapper; +import com.gunshi.project.ss.model.OsmoticWarnR; +import com.gunshi.project.ss.model.OsmoticWarnRule; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; +import java.util.List; + +/** + * 描述: 预警规则配置表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class OsmoticWarnRuleService extends ServiceImpl { + + @Autowired + private OsmoticWarnRService warnRService; + + public Page queryPage(WarnRulePageSo warnRulePageSo) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + if (warnRulePageSo.getType() != null) { + queryWrapper.eq(OsmoticWarnRule::getType, warnRulePageSo.getType()); + } + if (StringUtils.isNotEmpty(warnRulePageSo.getStationCode())) { + queryWrapper.eq(OsmoticWarnRule::getStationCode, warnRulePageSo.getStationCode()); + } + queryWrapper.orderByDesc(OsmoticWarnRule::getStatus).orderByDesc(OsmoticWarnRule::getCreateTime); + return this.page(warnRulePageSo.getPageSo().toPage(), queryWrapper); + } + + /* + 渗压只看管水位value + */ + @Autowired + private JcskSyBService jcskSyBService; + public void checkWarn(JcskSyR flow) { + String stcd = flow.getStcd(); + String mpcd = flow.getMpcd(); + String stationCode = jcskSyBService.getDvcdByStcdAndMpcd(stcd,mpcd); + List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode,stationCode) + .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.PRESS.getType()) + .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) + .list(); + + + BigDecimal valueToCompare = flow.getSpprwl(); + for (OsmoticWarnRule rule : rules) { + OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); + + OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); + if (cond1 == null) continue; + BigDecimal cond1value = rule.getValueOne(); + if (cond1value == null) continue; + boolean cond1Violating = isViolating(valueToCompare, cond1, cond1value); + + boolean cond2Violating = false; + if (matchRel != null) { + OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); + if (cond2 != null) { + BigDecimal cond2value = rule.getValueTwo(); + if (cond2value != null) { + cond2Violating = isViolating(valueToCompare, cond2, cond2value); + } + } + } + + boolean shoudWarn = false; + if (matchRel == null) { + if (cond1Violating) { + shoudWarn = true; + } + } else { + if (matchRel == OsmoticWarnRule.Relation.AND) { + if (cond1Violating && cond2Violating) { + shoudWarn = true; + } + } else if (matchRel == OsmoticWarnRule.Relation.OR) { + if (cond1Violating || cond2Violating) { + shoudWarn = true; + } + } + } + + if (shoudWarn) { + insertWarn(stationCode, rule.getId(), flow.getSpprwl(), OsmoticWarnRule.Type.PRESS.getType(), rule.getLevel(),LocalDateTimeConverter.toDate(flow.getMstm()),rule.getResolveSuggest()); + } + } + } + +// private boolean checkWarn(OsmoticPressR press, OsmoticWarnRule rule) { +// BigDecimal valueToCompare = press.getValue(); +// OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); +// +// OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); +// if (cond1 == null) return false; +// BigDecimal cond1value = rule.getValueOne(); +// if (cond1value == null) return false; +// boolean cond1Violating = isViolating(valueToCompare, cond1, cond1value); +// +// boolean cond2Violating = false; +// if (matchRel != null) { +// OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); +// if (cond2 != null) { +// BigDecimal cond2value = rule.getValueTwo(); +// if (cond2value != null) { +// cond2Violating = isViolating(valueToCompare, cond2, cond2value); +// } +// } +// } +// +// boolean shoudWarn = false; +// if (matchRel == null) { +// if (cond1Violating) { +// shoudWarn = true; +// } +// } else { +// if (matchRel == OsmoticWarnRule.Relation.AND) { +// if (cond1Violating && cond2Violating) { +// shoudWarn = true; +// } +// } else if (matchRel == OsmoticWarnRule.Relation.OR) { +// if (cond1Violating || cond2Violating) { +// shoudWarn = true; +// } +// } +// } +// +// if (shoudWarn) { +// insertWarn(press.getStationCode(), rule.getId(), press.getValue(), OsmoticWarnRule.Type.PRESS.getType(), rule.getLevel()); +// return true; +// } +// return false; +// } + + private void insertWarn(String stationCode, Long ruleId, BigDecimal value, Integer type, Integer level, Date obDate, String resolveSuggest) { + OsmoticWarnR warn = new OsmoticWarnR(); + warn.setId(IdWorker.getId()); + warn.setTm(obDate); + warn.setStationCode(stationCode); + warn.setRuleId(ruleId); + warn.setValue(value); + warn.setType(type); + warn.setLevel(level); + warn.setResolveSuggest(resolveSuggest); + warnRService.save(warn); + log.info("生成了一条预警:",warn); + } + + private void insertWarn(String stationCode, Long ruleId, BigDecimal value, Integer type, Integer level,LocalDateTime obDate) { + OsmoticWarnR warn = new OsmoticWarnR(); + Date date = Date.from(obDate.atZone(ZoneId.systemDefault()).toInstant()); + warn.setId(IdWorker.getId()); + warn.setTm(date); + warn.setStationCode(stationCode); + warn.setRuleId(ruleId); + warn.setValue(value); + warn.setType(type); + warn.setLevel(level); + warnRService.save(warn); + } + + + private boolean isViolating(BigDecimal value, OsmoticWarnRule.Condition cond, BigDecimal condValue) { + return switch (cond) { + case GT -> value.compareTo(condValue) > 0; + case GTE -> value.compareTo(condValue) >= 0; + case LT -> value.compareTo(condValue) < 0; + case LTE -> value.compareTo(condValue) <= 0; + case EQ -> value.compareTo(condValue) == 0; + case NE -> value.compareTo(condValue) != 0; + }; + } + + /* + 位移要看x,y,h + */ + @Autowired + private JcskGnssBService jcskGnssBService; + public void checkWarn(JcskGnssR shift) { + String stationCode = shift.getCd(); + List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode, stationCode) + .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.SHIFT.getType()) + .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) + .list(); + BigDecimal valueXToCompare = shift.getDe(); + BigDecimal valueYToCompare = shift.getDn(); + BigDecimal valueHToCompare = shift.getDu(); + for (OsmoticWarnRule rule : rules) { + OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); + + OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); + if (cond1 == null) continue; + BigDecimal cond1value = rule.getValueOne(); + if (cond1value == null) continue; + boolean cond1Violating; + if(rule.getDirection().contains("x")){ + cond1Violating = isViolating(valueXToCompare, cond1, cond1value); + }else if(rule.getDirection().contains("y")){ + cond1Violating = isViolating(valueYToCompare, cond1, cond1value); + }else{ + cond1Violating = isViolating(valueHToCompare, cond1, cond1value); + } + + boolean cond2Violating = false; + if (matchRel != null) { + OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); + if (cond2 != null) { + BigDecimal cond2value = rule.getValueTwo(); + if(rule.getDirection().contains("x")){ + cond2Violating = isViolating(valueXToCompare, cond2, cond2value); + }else if(rule.getDirection().contains("y")){ + cond2Violating = isViolating(valueYToCompare, cond2, cond2value); + }else{ + cond2Violating = isViolating(valueHToCompare, cond2, cond2value); + } + } + } + + boolean shoudWarn = false; + if (matchRel == null) { + if (cond1Violating) { + shoudWarn = true; + } + } else { + if (matchRel == OsmoticWarnRule.Relation.AND) { + if (cond1Violating && cond2Violating) { + shoudWarn = true; + } + } else if (matchRel == OsmoticWarnRule.Relation.OR) { + if (cond1Violating || cond2Violating) { + shoudWarn = true; + } + } + } + + if (shoudWarn) { + if(rule.getDirection().contains("x")){ + insertWarn(stationCode, rule.getId(), shift.getDe(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(), LocalDateTimeConverter.toDate(shift.getTm()), rule.getResolveSuggest()); + }else if(rule.getDirection().contains("y")){ + insertWarn(stationCode, rule.getId(), shift.getDn(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(),LocalDateTimeConverter.toDate(shift.getTm()), rule.getResolveSuggest()); + }else{ + insertWarn(stationCode, rule.getId(), shift.getDu(), OsmoticWarnRule.Type.SHIFT.getType(), rule.getLevel(),LocalDateTimeConverter.toDate(shift.getTm()), rule.getResolveSuggest()); + } + + } + } + } + + + /* + 渗流只看流量q + */ + + @Autowired + private JcskSlBService jcskSlBService; + public void checkWarn(JcskSlR flow) { + String stcd = flow.getStcd(); + String mpcd = flow.getMpcd(); + String stationCode = jcskSlBService.getDvcdByStcdAndMpcd(mpcd); + List rules = lambdaQuery().eq(OsmoticWarnRule::getStationCode, stationCode) + .eq(OsmoticWarnRule::getType, OsmoticWarnRule.Type.FLOW.getType()) + .eq(OsmoticWarnRule::getStatus, OsmoticWarnRule.Status.ENABLE.getStatus()) + .list(); + BigDecimal valueToCompare = flow.getSpqn(); + for (OsmoticWarnRule rule : rules) { + OsmoticWarnRule.Relation matchRel = OsmoticWarnRule.Relation.match(rule.getCondition()); + + OsmoticWarnRule.Condition cond1 = OsmoticWarnRule.Condition.match(rule.getConditionOne()); + if (cond1 == null) continue; + BigDecimal cond1value = rule.getValueOne(); + if (cond1value == null) continue; + boolean cond1Violating = isViolating(valueToCompare, cond1, cond1value); + + boolean cond2Violating = false; + if (matchRel != null) { + OsmoticWarnRule.Condition cond2 = OsmoticWarnRule.Condition.match(rule.getConditionTwo()); + if (cond2 != null) { + BigDecimal cond2value = rule.getValueTwo(); + if (cond2value != null) { + cond2Violating = isViolating(valueToCompare, cond2, cond2value); + } + } + } + + boolean shoudWarn = false; + if (matchRel == null) { + if (cond1Violating) { + shoudWarn = true; + } + } else { + if (matchRel == OsmoticWarnRule.Relation.AND) { + if (cond1Violating && cond2Violating) { + shoudWarn = true; + } + } else if (matchRel == OsmoticWarnRule.Relation.OR) { + if (cond1Violating || cond2Violating) { + shoudWarn = true; + } + } + } + + if (shoudWarn) { + insertWarn(stationCode, rule.getId(), flow.getSpqn(), OsmoticWarnRule.Type.FLOW.getType(), rule.getLevel(),LocalDateTimeConverter.toDate(flow.getMstm()), rule.getResolveSuggest()); + } + } + } + + @Autowired + private JcskSyRService jcskSyRService; + + public void debug() { + List list = jcskSyRService.lambdaQuery().orderByDesc(JcskSyR::getMstm).list(); + + checkWarn(list.get(0)); + } + + public Date queryMaxTmByType(Integer type) { + OsmoticWarnR entity = warnRService.queryMaxTmByType(type); + return entity == null?null:entity.getTm(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/OsmoticWaterRService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticWaterRService.java new file mode 100644 index 0000000..9f64bac --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/OsmoticWaterRService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.OsmoticWaterRMapper; +import com.gunshi.project.ss.model.OsmoticWaterR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水质采样记录表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class OsmoticWaterRService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/OsmoticWaterRuleService.java b/src/main/java/com/gunshi/project/ss/service/OsmoticWaterRuleService.java new file mode 100644 index 0000000..69d89cf --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/OsmoticWaterRuleService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.OsmoticWaterRuleMapper; +import com.gunshi.project.ss.model.OsmoticWaterRule; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水质质量标准规则表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class OsmoticWaterRuleService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/PersonnelPlanLogService.java b/src/main/java/com/gunshi/project/ss/service/PersonnelPlanLogService.java new file mode 100644 index 0000000..ea88282 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/PersonnelPlanLogService.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.PersonnelPlanLogMapper; +import com.gunshi.project.ss.model.PersonnelPlanLog; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class PersonnelPlanLogService extends ServiceImpl +{ +} diff --git a/src/main/java/com/gunshi/project/ss/service/PersonnelPlanService.java b/src/main/java/com/gunshi/project/ss/service/PersonnelPlanService.java new file mode 100644 index 0000000..a84e2eb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/PersonnelPlanService.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.PersonnelPlanMapper; +import com.gunshi.project.ss.model.PersonnelPlan; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class PersonnelPlanService extends ServiceImpl +{ +} diff --git a/src/main/java/com/gunshi/project/ss/service/PrePlaceDetailService.java b/src/main/java/com/gunshi/project/ss/service/PrePlaceDetailService.java new file mode 100644 index 0000000..c2a8b68 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/PrePlaceDetailService.java @@ -0,0 +1,94 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.PrePlacePageSo; +import com.gunshi.project.ss.mapper.ByLogDetailMapper; +import com.gunshi.project.ss.mapper.ByPlanDetailMapper; +import com.gunshi.project.ss.mapper.PrePlaceDetailMapper; +import com.gunshi.project.ss.mapper.PrePlaceMapper; +import com.gunshi.project.ss.model.PrePlace; +import com.gunshi.project.ss.model.PrePlaceDetail; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class PrePlaceDetailService extends ServiceImpl { + + @Autowired + private PrePlaceMapper prePlaceMapper; + + @Autowired + private ByPlanDetailMapper byPlanDetailMapper; + + @Autowired + private ByLogDetailMapper byLogDetailMapper; + + public Page pageQuery(PrePlacePageSo pageSo) { + if(StringUtils.isBlank(pageSo.getPreId())) { + throw new IllegalArgumentException("请选择防治点"); + } + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(PrePlaceDetail::getPreId, pageSo.getPreId()); + query.orderByAsc(PrePlaceDetail::getOrder); + Page prePlaceDetailPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), query); + for (PrePlaceDetail record : prePlaceDetailPage.getRecords()) { + int count1 = byPlanDetailMapper.selectByPPDI(record.getId()); + int count2 = byLogDetailMapper.selectByPPDi(record.getId()); + if(count1 > 0 || count2 > 0){ + record.setHasUse(true); + } + } + return prePlaceDetailPage; + } + + public boolean saveData(PrePlaceDetail dto) { + dto.setId(IdWorker.getId()); + dto.setIsEnable(0); + Long preId = dto.getPreId(); + PrePlace prePlace = prePlaceMapper.selectById(preId); + if(prePlace == null) { + throw new IllegalArgumentException("防治点不存在,请检查"); + } + boolean save = save(dto); + return save; + } + + public boolean deleteById(Serializable id) { + //先在防治计划中查看是否被引用 + int count = byPlanDetailMapper.selectByPPDI(id); + if(count > 0){ + throw new IllegalArgumentException("该防治点在防治计划中已被选择,不能删除"); + } + + int count2 = byLogDetailMapper.selectByPPDi(id); + if(count2 > 0){ + throw new IllegalArgumentException("该防治点在日志记录中被使用,不能删除"); + } + boolean b = removeById(id); + return b; + } + + public boolean update(PrePlaceDetail dto) { + int count = byPlanDetailMapper.selectByPPDI(dto.getId()); + if(count > 0){ + throw new IllegalArgumentException("该防治点在防治计划中已被选择,不能编辑"); + } + int count2 = byLogDetailMapper.selectByPPDi(dto.getId()); + if(count2 > 0){ + throw new IllegalArgumentException("该防治点在日志记录中被使用,不能编辑"); + } + boolean b = updateById(dto); + return b; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/PrePlaceService.java b/src/main/java/com/gunshi/project/ss/service/PrePlaceService.java new file mode 100644 index 0000000..df8ec72 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/PrePlaceService.java @@ -0,0 +1,82 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.PrePlacePageSo; +import com.gunshi.project.ss.mapper.PrePlaceDetailMapper; +import com.gunshi.project.ss.mapper.PrePlaceMapper; +import com.gunshi.project.ss.model.PrePlace; +import com.gunshi.project.ss.model.PrePlaceDetail; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class PrePlaceService extends ServiceImpl { + + @Autowired + private PrePlaceDetailMapper prePlaceDetailMapper; + + @Autowired + private PrePlaceMapper prePlaceMapper; + + public boolean deleteById(Serializable id) { + //先查看细节表还有数据没 + int count = prePlaceDetailMapper.selectByPreId(id); + if(count > 0){ + throw new RuntimeException("该防治点,还有防治部位未删,请检查"); + } + int flag = this.baseMapper.deleteById(id); + return flag > 0? true:false; + } + + + public List tree(PrePlacePageSo dto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(dto.getPreName())){ + wrapper.eq(PrePlace::getPreName, dto.getPreName()); + } + List prePlaces = prePlaceMapper.selectList(wrapper); + Iterator iterator = prePlaces.iterator(); + while(iterator.hasNext()){ + PrePlace prePlace = iterator.next(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(dto.getPreDetailName())){ + queryWrapper.like(PrePlaceDetail::getDetailName, dto.getPreDetailName()); + } + queryWrapper.eq(PrePlaceDetail::getPreId, prePlace.getId()); + queryWrapper.eq(PrePlaceDetail::getIsEnable,0); + List prePlaceDetails = prePlaceDetailMapper.selectList(queryWrapper); + if(prePlaceDetails.isEmpty()){ + iterator.remove(); + continue; + } + prePlace.setChildrens(prePlaceDetails); + } + return prePlaces; + } + + public boolean saveData(PrePlace dto) { + + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(PrePlace::getPreName, dto.getPreName()); + PrePlace prePlace = prePlaceMapper.selectOne(queryWrapper); + if(prePlace != null){ + throw new IllegalArgumentException("该防治点已存在"); + } + save(dto); + return true; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ProjectEventsService.java b/src/main/java/com/gunshi/project/ss/service/ProjectEventsService.java new file mode 100644 index 0000000..b763221 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ProjectEventsService.java @@ -0,0 +1,253 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.so.CommonDataPageSo; +import com.gunshi.project.ss.entity.vo.ProjectEventsVo; +import com.gunshi.project.ss.mapper.HiddenInfoMapper; +import com.gunshi.project.ss.mapper.ProjectEventsMapper; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.HiddenInfo; +import com.gunshi.project.ss.model.ProjectEvents; +import com.gunshi.project.ss.model.TermiteSurvey; +import com.gunshi.project.ss.util.DataHandleUtil; +import com.gunshi.project.ss.util.ExcelUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 工程大事记 + * author: wanyan + * date: 2024-08-21 10:40:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ProjectEventsService extends ServiceImpl { + + @Autowired + private FileAssociationsService fileService; + + @Autowired + private HiddenInfoMapper hiddenInfoMapper; + + public Page pageQuery(CommonDataPageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getName())) { + query.like(ProjectEvents::getName, page.getName()); + } + if (page.getDateSo() != null && page.getDateSo().getStart() != null) { + query.ge(ProjectEvents::getEventsDate, page.getDateSo().getStart()); + } + if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { + query.le(ProjectEvents::getEventsDate, page.getDateSo().getEnd()); + } + query.orderByDesc(ProjectEvents::getEventsDate); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List ret) { + for (ProjectEvents record : ret) { + record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); + } + } + + public String getGroupId() { + return "ProjectEvents"; + } + + public ProjectEvents saveData(ProjectEvents dto) { + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public ProjectEvents updateData(ProjectEvents dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } + + public List queryList(CommonDataPageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getName())) { + query.like(ProjectEvents::getName, page.getName()); + } + if (page.getDateSo() != null && page.getDateSo().getStart() != null) { + query.ge(ProjectEvents::getEventsDate, page.getDateSo().getStart()); + } + if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { + query.le(ProjectEvents::getEventsDate, page.getDateSo().getEnd()); + } + query.orderByDesc(ProjectEvents::getEventsDate); + List list = this.list(query); + fillAttach(list); + return list; + } + + public Page filePage(CommonDataPageSo page) { + Page res = new Page<>(); + List list = new ArrayList<>(); + list = queryData(page,list); + if (CollectionUtils.isNotEmpty(list)) { + fillFile(list.stream().filter(o->o.getType() != 6).collect(Collectors.toList())); + list = list.stream().sorted(Comparator.comparing(ProjectEventsVo::getEventsDate).reversed()).collect(Collectors.toList()); + List paginate = DataHandleUtil.paginate(list, page.getPageSo().getPageNumber(), page.getPageSo().getPageSize()); + res.setRecords(paginate); + } + res.setCurrent(page.getPageSo().getPageNumber()); + res.setTotal(list.size()); + return res; + } + + private List queryData(CommonDataPageSo page,List list) { + List types = page.getTypes(); + if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(1)){ + List projectEventsVos = this.baseMapper.eventList(page); + list.addAll(projectEventsVos); + } + if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(2)){ + List projectEventsVos = this.baseMapper.dispatchList(page); + list.addAll(projectEventsVos); + } + if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(3)){ + List projectEventsVos = this.baseMapper.maintainList(page); + list.addAll(projectEventsVos); + } + if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(4)){ + List projectEventsVos = this.baseMapper.safetyList(page); + list.addAll(projectEventsVos); + } + if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(5)){ + List projectEventsVos = this.baseMapper.reinforceList(page); + list.addAll(projectEventsVos); + } +// if(CollectionUtils.isEmpty(types) || (CollectionUtils.isNotEmpty(types)) && types.contains(6)){ +// List termiteVos = this.baseMapper.termiteList(page); +// List projectEventsVos = this.handelTermite(termiteVos); +// list.addAll(projectEventsVos); +// } + return list; + } + + private List handelTermite(List termiteVos) { + List list = new ArrayList<>(); + if(CollectionUtils.isEmpty(termiteVos)){ + return list; + } + for (TermiteSurvey vo : termiteVos){ + Integer surveyWay = vo.getSurveyWay(); + String way = ""; + switch (surveyWay){ + case 1 : + way = "人工排查法"; + break; + case 2 : + way = "引诱法"; + break; + case 3 : + way = "仪器探测法"; + break; + case 4 : + way = "其它"; + break; + } + Integer surveyType = vo.getSurveyType(); + String type = ""; + switch (surveyType){ + case 1 : + type = "日常检查排查"; + break; + case 2 : + type = "定期普查"; + break; + case 3 : + type = "专项调查"; + break; + } + String result = vo.getHarmNum() > 0 ?"有危害":"无危害"; + String content = "采用"+way+"进行"+type+",结果:"+result+";白蚁危害处数"+vo.getHarmNum()+"处;已处理处数"+vo.getHandleNum()+"处。"; + ProjectEventsVo eventsVo = new ProjectEventsVo(); + eventsVo.setId(vo.getId()); + eventsVo.setType(6); + eventsVo.setEventsDate(vo.getReportDate()); + eventsVo.setEventsDesc(content); + + List ids = this.baseMapper.queryTermiteDetail(vo.getId()); + List files = fileService.getFilesByIds(ids.stream().map(Objects::toString).collect(Collectors.toList())); + eventsVo.setFiles(files); + list.add(eventsVo); + } + return list; + } + + private void fillFile(List list) { + if(CollectionUtils.isEmpty(list)){ + return; + } + List ids = list.stream().map(ProjectEventsVo::getId).map(Objects::toString).collect(Collectors.toList()); + List files = fileService.getFilesByIds(ids); + Map> map = files.stream().collect(Collectors.groupingBy(FileAssociations::getBusinessId)); + for (ProjectEventsVo vo : list){ + vo.setFiles(map.get(vo.getId().toString())); + if(vo.getType() == 3){ + List fileAssociations = vo.getFiles() == null?new ArrayList<>():vo.getFiles(); + //Java有Integer的缓存-128~127可以直接用== + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HiddenInfo::getMentenceFarmerRecordId,vo.getId()); + List hiddenInfos = hiddenInfoMapper.selectList(queryWrapper); + hiddenInfos.stream().forEach(o ->{ + List add = fileService.getFiles("mentenceFarmerRecord", o.getId().toString()); + fileAssociations.addAll(add); + }); + vo.setFiles(fileAssociations); + } + } + } + + public void export(CommonDataPageSo page, HttpServletResponse response) { + List list = new ArrayList<>(); + list = queryData(page,list); + if (CollectionUtils.isNotEmpty(list)) { + list = list.stream().sorted(Comparator.comparing(ProjectEventsVo::getEventsDate).reversed()).collect(Collectors.toList()); + } + ExcelUtil.exportExcel(list,"全周期档案", ProjectEventsVo.class,response,"全周期档案"); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/RainBasinDivisionService.java b/src/main/java/com/gunshi/project/ss/service/RainBasinDivisionService.java new file mode 100644 index 0000000..6ae6c3d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RainBasinDivisionService.java @@ -0,0 +1,508 @@ +package com.gunshi.project.ss.service; + +import cn.hutool.core.bean.BeanUtil; +import com.gunshi.project.ss.entity.so.StPptnSo; +import com.gunshi.project.ss.entity.vo.CartogramVo; +import com.gunshi.project.ss.entity.vo.StPptnDetailsVo; +import com.gunshi.project.ss.entity.vo.StPptnVo; +import com.gunshi.project.ss.mapper.RealRainMapper; +import com.gunshi.project.ss.common.mapper.StPptnRMapper; +import com.gunshi.project.ss.model.StPptnRD; +import com.gunshi.project.ss.common.model.StPptnRReal; +import jakarta.annotation.Resource; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * Description: + * Created by wanyan on 2024/7/8 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Slf4j +public class RainBasinDivisionService { + + @Autowired + private RealRainMapper realRainMapper; + + @Autowired + private StPptnRMapper stPptnRMapper; + + @Resource + private StStbprpBService stStbprpBAutoDao; + + /** + * 根据测站编码查询时间段内每小时的雨量 + * + * @param stPptnSo 雨量站降雨量查询参数 + * @return + */ + public List queryStPptnPerHourByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { + String stcd = stPptnSo.getStcd(); + List stPptnVos = realRainMapper.queryStPptnPerHourByStcdAndStartTimeAndEndTime(stcd, stPptnSo.getStartTime(), stPptnSo.getEndTime()); + SimpleDateFormat df = new SimpleDateFormat("MM-dd HH:mm"); + for (StPptnVo stPptnVo : stPptnVos) { + Date time = stPptnVo.getTime(); + stPptnVo.setTimeStr(df.format(time)); + } + return stPptnVos; + } + + /** + * 根据测站编码查询时间段内每小时的雨量统计 + * + * @param stPptnSo 雨量站降雨量查询参数 + * @return + */ + public CartogramVo queryStPptnPerHourChartByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { + //实测 + List stPptnVos1 = queryStPptnPerHourNowByStcdAndStartTimeAndEndTime(stPptnSo); + //累计 + List stPptnVos2 = queryStPptnPerHourSumByStcdAndStartTimeAndEndTime(stPptnSo); + + CartogramVo cartogramVo = new CartogramVo(); + List time = new ArrayList<>(); + List actual = new ArrayList<>(); + List total = new ArrayList<>(); + for (StPptnVo stPptnVo : stPptnVos1) { + time.add(stPptnVo.getTimeStr()); + actual.add(stPptnVo.getSumDrp()); + } + for (StPptnVo stPptnVo : stPptnVos2) { + total.add(stPptnVo.getSumDrp()); + } + cartogramVo.setTime(time); + cartogramVo.setActual(actual); + cartogramVo.setTotal(total); + return cartogramVo; + } + + /** + * 根据测站编码查询时间段内每小时的实测雨量 + * + * @param stPptnSo 雨量站降雨量查询参数 + * @return + */ + public List queryStPptnPerHourNowByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { + List stPptnVos = queryStPptnPerHourByStcdAndStartTimeAndEndTime(stPptnSo); + Collections.reverse(stPptnVos); + return stPptnVos; + } + + /** + * 根据测站编码查询时间段内每小时的累计雨量 + * + * @param stPptnSo 雨量站降雨量查询参数 + * @return + */ + public List queryStPptnPerHourSumByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { + List stPptnVos = queryStPptnPerHourNowByStcdAndStartTimeAndEndTime(stPptnSo); + BigDecimal sumdrp = BigDecimal.valueOf(0); + for (StPptnVo stPptnVo : stPptnVos) { + sumdrp = sumdrp.add(stPptnVo.getSumDrp()); + stPptnVo.setSumDrp(sumdrp); + } + return stPptnVos; + } + + /** + * 根据测站编码查询时间段内每天的雨量 + * + * @param stPptnSo 雨量站降雨量查询参数 + * @return + */ + @SneakyThrows + public List queryStPptnPerDayByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { + String stcd = stPptnSo.getStcd(); + + Date stm = stPptnSo.getStartTime(); + Date etm = stPptnSo.getEndTime(); + Date now = new Date(); + if (etm.getTime() > now.getTime()) etm = now; + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + stm = df.parse(df.format(stm)); + etm = df.parse(df.format(etm)); + Calendar cal = Calendar.getInstance(); + + List stPptnVos = new ArrayList<>(); + while (etm.getTime() >= stm.getTime()) { + cal.setTime(stm); + StPptnVo stPptnVo = new StPptnVo(); + stPptnVo.setTime(stm); + stPptnVo.setTimeStr(df.format(stm)); + int year = cal.get(Calendar.YEAR); + + StPptnRD pptnrd = realRainMapper.getStPptnRD( + stcd, stm, year + ); + if (pptnrd != null) { + stPptnVo.setSumDrp(pptnrd.getDrp()); + } + stPptnVos.add(stPptnVo); + + cal.add(Calendar.DAY_OF_MONTH, 1); + stm = cal.getTime(); + } + return stPptnVos; + } + + /** + * 根据测站编码查询时间段内每天的雨量统计 + * + * @param stPptnSo 雨量站降雨量查询参数 + * @return + */ + public CartogramVo queryStPptnPerDayChartChartByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { + //实测 + List stPptnVos1 = queryStPptnPerDayByStcdAndStartTimeAndEndTime(stPptnSo); + //累计 + List stPptnVos2 = queryStPptnPerDaySumByStcdAndStartTimeAndEndTime(stPptnSo); + + CartogramVo cartogramVo = new CartogramVo(); + List time = new ArrayList<>(); + List actual = new ArrayList<>(); + List total = new ArrayList<>(); + for (StPptnVo stPptnVo : stPptnVos1) { + time.add(stPptnVo.getTimeStr()); + actual.add(stPptnVo.getSumDrp()); + } + for (StPptnVo stPptnVo : stPptnVos2) { + total.add(stPptnVo.getSumDrp()); + } + cartogramVo.setTime(time); + cartogramVo.setActual(actual); + cartogramVo.setTotal(total); + return cartogramVo; + } + + /** + * 根据测站编码查询时间段内每天的累计雨量 + * + * @param stPptnSo 雨量站降雨量查询参数 + * @return + */ + public List queryStPptnPerDaySumByStcdAndStartTimeAndEndTime(StPptnSo stPptnSo) { + List stPptnVos = queryStPptnPerDayByStcdAndStartTimeAndEndTime(stPptnSo); + BigDecimal sumdrp = BigDecimal.valueOf(0); + for (StPptnVo stPptnVo : stPptnVos) { + if (stPptnVo.getSumDrp() != null){ + sumdrp = sumdrp.add(stPptnVo.getSumDrp()); + } + stPptnVo.setSumDrp(sumdrp); + } + return stPptnVos; + } + + /** + * 根据测站编码查询详细雨量情况 + * + * @param stcd 测站编码 + * @return + */ + public StPptnDetailsVo queryStPptnDetailsByStcd(String stcd) { +// StPptnRStat stPptnRStat = stPptnRStatMapper.queryStPptnRStatByStcd(stcd); + StPptnRReal stPptnRReal = realRainMapper.queryPptnByStcd(stcd); + + StPptnDetailsVo stPptnDetailsVo = new StPptnDetailsVo(); + if (stPptnRReal != null){ + BeanUtil.copyProperties(stPptnRReal, stPptnDetailsVo); + Date tm = stPptnRReal.getTm(); + LocalDateTime nowTime = LocalDateTime.now(); + LocalDateTime latestTime = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); + + boolean isToday = latestTime.toLocalDate().equals(nowTime.toLocalDate()); + + if(!isToday){ + stPptnDetailsVo.setH1(null); + stPptnDetailsVo.setH3(null); + stPptnDetailsVo.setH6(null); + stPptnDetailsVo.setH12(null); + stPptnDetailsVo.setH24(null); + stPptnDetailsVo.setH48(null); + stPptnDetailsVo.setDrp(null); + stPptnDetailsVo.setToday(null); + } + }else { + stPptnDetailsVo.setStcd(stcd); + } + Date date = new Date(); + +// //48小时降雨量 +// BigDecimal h48 = stStbprpBMapper.queryStPptn48HByStcd(stcd); +// if (h48 == null) { +// stPptnDetailsVo.setH48(value0); +// } else { +// stPptnDetailsVo.setH48(h48); +// } +// +// //今日雨量 +// BigDecimal todayDrp = queryTodayDrpByStcdAndTime(stcd, date); +// if (todayDrp == null) { +// stPptnDetailsVo.setTodayDrp(value0); +// } else { +// stPptnDetailsVo.setTodayDrp(todayDrp); +// } + + //昨日雨量 + BigDecimal yesterdayDrp = queryYesterdayDrpByStcdAndTime(stcd, date); + if (yesterdayDrp == null) { + stPptnDetailsVo.setYesterdayDrp(null); + } else { + stPptnDetailsVo.setYesterdayDrp(yesterdayDrp); + } + + //本月降雨量 + BigDecimal monthDay = queryMonthDrpByStcdAndTime(stcd, date); + if (monthDay == null) { + stPptnDetailsVo.setMonthDrp(null); + } else { + stPptnDetailsVo.setMonthDrp(monthDay); + } + + //本年降雨量 + BigDecimal yearDrp = queryYearDrpByStcdAndTime(stcd, date); + if (yearDrp == null) { + stPptnDetailsVo.setYearDrp(null); + } else { + stPptnDetailsVo.setYearDrp(yearDrp); + } + + //本年天数 + Long yearDay = countYearDay(date); + stPptnDetailsVo.setYearDay(yearDay); + + Map map = queryYearDrpDayAndMaxDrpAndMaxDrpTimeByStcdAndTime(stcd, date); + + //本年降雨天数 + Long yearDrpDay = (Long) map.get("count"); + stPptnDetailsVo.setYearDrpDay(yearDrpDay); + + //本年最大日雨量 + BigDecimal maxDrp = (BigDecimal) map.get("maxDrp"); + stPptnDetailsVo.setMaxDrp(maxDrp); + + //本年最大日雨量时间 + Date maxDrpTime =(Date) map.get("maxDrpTime"); + stPptnDetailsVo.setMaxDrpTime(maxDrpTime); + return stPptnDetailsVo; + } + + /** + * 根据测站编码和时间查看昨日降雨量 + * + * @param stcd 测站编码 + * @param time 当前时间 + * @return 昨日降雨量 + */ + public BigDecimal queryYesterdayDrpByStcdAndTime(String stcd, Date time) { + LocalDateTime now = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault()); + LocalDateTime startTime; + LocalDateTime endTime; + LocalDateTime yesterday = now.minusDays(1); + if (now.getHour() >= 8) { + startTime = LocalDateTime.of( + yesterday.getYear(), + yesterday.getMonthValue(), + yesterday.getDayOfMonth(), + 8, + 0, + 0 + ); + endTime = LocalDateTime.of( + now.getYear(), + now.getMonthValue(), + now.getDayOfMonth(), + 8, + 0, + 0 + ); + } else { + endTime = endTime = LocalDateTime.of( + yesterday.getYear(), + yesterday.getMonthValue(), + yesterday.getDayOfMonth(), + 8, + 0, + 0 + ); + yesterday = yesterday.minusDays(1); + startTime = LocalDateTime.of( + yesterday.getYear(), + yesterday.getMonthValue(), + yesterday.getDayOfMonth(), + 8, + 0, + 0 + ); + } + + return stPptnRMapper.queryStPptnTimeQuantumByStcdAndTime( + stcd, + Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), + Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()) + ); + + } + + /** + * 根据测站编码和时间查看本月降雨量 + * + * @param stcd 测站编码 + * @param time 当前时间 + * @return 本月降雨量 + */ + public BigDecimal queryMonthDrpByStcdAndTime(String stcd, Date time) { + LocalDateTime now = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault()); + LocalDateTime startTime; + LocalDateTime endTime; + if (now.getHour() >= 8 || (now.getHour() < 8 && now.getDayOfMonth() > 1)) { + startTime = LocalDateTime.of( + now.getYear(), + now.getMonthValue(), + 1, + 8, + 0, + 0 + ); + endTime = now; + return stPptnRMapper.queryStPptnTimeQuantumByStcdAndTime( + stcd, + Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), + Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()) + ); + + } + BigDecimal monthdrp = BigDecimal.valueOf(0); + return monthdrp; + + } + + /** + * 根据测站编码和时间查看本年降雨量 + * + * @param stcd 测站编码 + * @param time 当前时间 + * @return 本年降雨量 + */ + public BigDecimal queryYearDrpByStcdAndTime(String stcd, Date time) { + LocalDateTime now = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault()); + LocalDateTime startTime; + LocalDateTime endTime; + if (now.getHour() >= 8 || (now.getHour() < 8 && now.getMonthValue() > 1) || (now.getHour() < 8 && now.getMonthValue() == 1 && now.getDayOfMonth() >= 1)) { + startTime = LocalDateTime.of( + now.getYear(), + 1, + 1, + 8, + 0, + 0 + ); + endTime = now; + return stPptnRMapper.queryStPptnTimeQuantumByStcdAndTime( + stcd, + Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), + Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()) + ); + } + BigDecimal monthDrp = BigDecimal.valueOf(0); + return monthDrp; + } + + /** + * 根据测站编码和时间查询本年降雨天数、本年最大日雨量、本年最大日雨量时间 + * + * @param stcd 测站编码 + * @param time 当前时间 + * @return 本年降雨天数、本年最大日雨量、本年最大日雨量时间 + */ + public Map queryYearDrpDayAndMaxDrpAndMaxDrpTimeByStcdAndTime(String stcd, Date time) { + Date now = new Date(); + Date startTime = new Date(now.getYear(), 0, 1, 8, 0, 0); + + BigDecimal maxDrp = BigDecimal.valueOf(0); + Date maxDrpTime = startTime; + Long count = 0L; + Map map = new HashMap<>(); + map.put("count", count); + map.put("maxDrp", maxDrp); + map.put("maxDrpTime", maxDrpTime); + +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq(StStbprpB.COL_STCD,stcd); + +// StStbprpB stStbprpB = stStbprpBAutoDao.getOne(queryWrapper); + StPptnRD stPptnRD = realRainMapper.getMaxOfYear(stcd,now.getYear() + 1900); + if (stPptnRD == null){ + return map; + } + + count = realRainMapper.getRainOfDayInYear(stcd, now.getYear()+1900); + map.put("count", count); + map.put("maxDrp", stPptnRD.getDrp()); + map.put("maxDrpTime", stPptnRD.getTm()); + return map; + } + + /** + * 计算本年天数 + * + * @param time 当前时间 + * @return 本年天数 + */ + public Long countYearDay(Date time) { + LocalDateTime now = LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault()); + LocalDateTime startTime = LocalDateTime.of(now.getYear(), 1, 1, 8, 0, 0); + long count = ChronoUnit.DAYS.between(startTime, now); + return count + 1; + } + + public StPptnRReal maxRain(StPptnSo stPptnSo) { + StPptnRReal stPptnRReal = new StPptnRReal(); + List stPptnVos = realRainMapper.queryStPptnPerHourByStcdAndStartTimeAndEndTime(stPptnSo.getStcd(), stPptnSo.getStartTime(), stPptnSo.getEndTime()); + if (stPptnVos == null || stPptnVos.isEmpty()) { + return null; + } + stPptnRReal.setH1(stPptnVos.stream().max(Comparator.comparing(StPptnVo::getSumDrp)).get().getSumDrp()); + Collections.reverse(stPptnVos); + List list = Arrays.asList(3, 6, 12); + for(Integer num : list){ + BigDecimal data = calcMaxData(num,stPptnVos); + if(num == 3){ + stPptnRReal.setH3(data); + } + if(num == 6){ + stPptnRReal.setH6(data); + } + if(num == 12){ + stPptnRReal.setH12(data); + } + } + return stPptnRReal; + } + + private BigDecimal calcMaxData(Integer num, List stPptnVos) { + List list = stPptnVos.stream().map(StPptnVo::getSumDrp).collect(Collectors.toList()); + return IntStream.range(0, list.size() - num -1) + .mapToObj(i -> list.subList(i, Math.min(i + num, list.size()))) // 获取每几个数的子列表 + .map(sublist -> sublist.stream().reduce(BigDecimal.ZERO, BigDecimal::add)) + .max(BigDecimal::compareTo) + .orElse(BigDecimal.ZERO); + } + + public StPptnRReal queryStPptnRealByStcd(String stcd) { + return realRainMapper.queryPptnByStcd(stcd); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/RealRainService.java b/src/main/java/com/gunshi/project/ss/service/RealRainService.java new file mode 100644 index 0000000..9920f62 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RealRainService.java @@ -0,0 +1,210 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.mapper.StPptnRMapper; +import com.gunshi.project.ss.common.model.StPptnR; +import com.gunshi.project.ss.entity.so.RealRainBaseSo; +import com.gunshi.project.ss.entity.vo.RealRainListVo; +import com.gunshi.project.ss.entity.vo.RealRainStatListVo; +import com.gunshi.project.ss.mapper.RealRainMapper; +import com.gunshi.project.ss.model.AttBasBase; +import com.gunshi.project.ss.model.AttBasBaseAutoDao; +import com.gunshi.project.ss.util.DateUtil; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.compress.utils.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * Description: + * Created by wanyan on 2024/7/8 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Data +@Slf4j +public class RealRainService { + + @Autowired + private RealRainMapper realRainMapper; + + private final AttBasBaseAutoDao attBasBaseAutoDao; + + @Autowired + private StPptnRMapper stPptnRMapper; + + /** + * 实时雨情-降雨信息-查询接口 + * + * @param realRainBaseSo + * @return + */ + public List getRealRainList(RealRainBaseSo realRainBaseSo) { + List result = realRainMapper.getRealRainList(realRainBaseSo.getStm(), realRainBaseSo.getEtm()); + + for (RealRainListVo realRainListVo : result) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StPptnR::getStcd,realRainListVo.getStcd()) + .orderByDesc(StPptnR::getTm) + .last("limit 1"); + StPptnR stPptnR = stPptnRMapper.selectOne(queryWrapper); + if(stPptnR == null){ + realRainListVo.setStatus(0); + }else{ + Date tm = stPptnR.getTm(); + if(DateUtil.hoursBetweenDate(tm,new Date()) > 24){ + realRainListVo.setStatus(0); + }else{ + realRainListVo.setStatus(1); + } + } + } + + // result.sort(Comparator.comparing(RealRainListVo::getDrp, Comparator.nullsFirst(Double::compareTo)).reversed().thenComparing(RealRainListVo::getStcd)); + return result; + } + + + /** + * 频率统计 + */ + public Map> getRealRainStatLevel(RealRainBaseSo realRainBaseSo) { + + Map> map = new HashMap<>(); + for (int i = 1; i <= 5; i++) { + if (map.get(i) == null) { + map.put(i, Lists.newArrayList()); + } + } + + + if (realRainBaseSo.getSource().size() == 0) { + return map; + } + + List result = getRealRainStat(realRainBaseSo); + //判断result是否为空 + if (CollectionUtils.isEmpty(result)) { + return map; + } + + //按照降雨量级进行分组 + if (realRainBaseSo.getTimeType() == null) { + result = result.stream().filter(res -> res.getFreqH1() != 0).collect(Collectors.toList()); + map = result.stream().collect( + Collectors.groupingBy(RealRainStatListVo::getFreqH1, Collectors.toList()) + ); + } + if (realRainBaseSo.getTimeType() == 3) { + result = result.stream().filter(res -> res.getFreqH3() != 0).collect(Collectors.toList()); + map = result.stream().collect( + Collectors.groupingBy(RealRainStatListVo::getFreqH3, Collectors.toList()) + ); + } else if (realRainBaseSo.getTimeType() == 6) { + result = result.stream().filter(res -> res.getFreqH6() != 0).collect(Collectors.toList()); + map = result.stream().collect( + Collectors.groupingBy(RealRainStatListVo::getFreqH6, Collectors.toList()) + ); + } else if (realRainBaseSo.getTimeType() == 12) { + result = result.stream().filter(res -> res.getFreqH12() != 0).collect(Collectors.toList()); + map = result.stream().collect( + Collectors.groupingBy(RealRainStatListVo::getFreqH12, Collectors.toList()) + ); + } else if (realRainBaseSo.getTimeType() == 24) { + result = result.stream().filter(res -> res.getFreqH24() != 0).collect(Collectors.toList()); + map = result.stream().collect( + Collectors.groupingBy(RealRainStatListVo::getFreqH24, Collectors.toList()) + ); + } else { + result = result.stream().filter(res -> res.getFreqH1() != 0).collect(Collectors.toList()); + map = result.stream().collect( + Collectors.groupingBy(RealRainStatListVo::getFreqH1, Collectors.toList()) + ); + } + + for (int i = 1; i <= 5; i++) { + if (!map.containsKey(i)) { + map.put(i, Lists.newArrayList()); + } + } + + for (int i = 1; i <= 5; i++) { + if (map.get(i) == null) { + map.put(i, Lists.newArrayList()); + } + } + + return map; + + } + + /** + * 频率分析 + * + * @param realRainBaseSo + */ + public List getRealRainStat(RealRainBaseSo realRainBaseSo) { + List result = Lists.newArrayList(); + + if (realRainBaseSo.getSource().size() == 0) { + return result; + } + + checkParam(realRainBaseSo); + List source = realRainBaseSo.getSource(); + ExecutorService executorService = Executors.newFixedThreadPool(4); + for (String sourceStr : source) { + executorService.execute(() -> { + List realRainList = realRainMapper.getRealRainStatList( + realRainBaseSo.getAdcd(), realRainBaseSo.getBasCode(), sourceStr, + realRainBaseSo.getStm(), realRainBaseSo.getEtm() + ); + result.addAll(realRainList); + }); + } + executorService.shutdown(); + try { + executorService.awaitTermination(2, TimeUnit.MINUTES); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.error(e.getMessage(), e); + } + return result; + } + + /** + * 流域选择列表 + * + * @param + */ + public List queryBasNameList() { + return attBasBaseAutoDao.list(); + } + + + private void checkParam(RealRainBaseSo realRainBaseSo) { + if (Objects.nonNull(realRainBaseSo.getQueryType()) && realRainBaseSo.getQueryType() == 2 && realRainBaseSo.getTimeType() == null) { + throw new IllegalArgumentException("频率统计中时间段范围类型不能为空"); + } + //检查source是否为空 + if (realRainBaseSo.getSource() == null || realRainBaseSo.getSource().isEmpty()) { + throw new IllegalArgumentException("来源不能为空"); + } + //检查source字段是否合法 + for (String source : realRainBaseSo.getSource()) { + if (!"SH".equals(source) && !"SW".equals(source) && !"SK".equals(source) && !"QX".equals(source)) { + throw new IllegalArgumentException("来源只能是SH SW SK QX这4种"); + } + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ResBriefRService.java b/src/main/java/com/gunshi/project/ss/service/ResBriefRService.java new file mode 100644 index 0000000..a273db4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResBriefRService.java @@ -0,0 +1,118 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.gunshi.project.ss.entity.vo.ResBriefVo; +import com.gunshi.project.ss.model.AttResBase; +import com.gunshi.project.ss.model.ResBriefR; +import com.gunshi.project.ss.common.model.StPptnR; +import com.gunshi.project.ss.common.model.StStbprpB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.*; + +/** + * @author lyf + * @since 2025-04-25 + */ +@EnableScheduling +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResBriefRService extends com.gunshi.project.ss.model.ResBriefRAutoDao { + @Autowired + private StPptnRService pptnService; + + @Autowired + private StStbprpBService stbprpService; + + @Autowired + private StRsvrRService rsvrService; + + @Autowired + private StZvarlBService zvarlService; + + @Autowired + private AttResBaseService resService; + + //每天早上8点30分执行一次 + @Scheduled(cron = "0 30 8 * * ?") + public void scheduledScan() { + List pptnStations = stbprpService.getPptnStations(); + List pptnVos = new ArrayList<>(); + pptnStations.forEach(stStbprpB -> { + String stcd = stStbprpB.getStcd(); + String stnm = stStbprpB.getStnm(); + + ResBriefVo.PptnVo pptnVo = new ResBriefVo.PptnVo(); + pptnVo.setStcd(stcd); + pptnVo.setStnm(stnm); + pptnVos.add(pptnVo); + + BigDecimal drp24 = pptnService.getdrp24SumByStcd(stcd); + StPptnR drpMax = pptnService.getdrp24MaxByStcd(stcd); + pptnVo.setDrp24Sum(drp24); + pptnVo.setDrp24Max(drpMax == null?null:drpMax.getDrp() == null?null:new BigDecimal(drpMax.getDrp())); + pptnVo.setMaxTm(drpMax == null?null:drpMax.getTm()); + }); + + AttResBase res = resService.list().getFirst(); + BigDecimal flLowLimLev = res.getFlLowLimLev(); + String stcd = res.getStcd(); + BigDecimal rz8 = rsvrService.getRz8ByStcd(stcd); + BigDecimal rzYesterday8 = rsvrService.getRzYesterday8ByStcd(stcd); + BigDecimal w = null; + if(rz8 != null){ + w = zvarlService.getWFromZvarl(rz8, null); + } + ResBriefVo vo = new ResBriefVo(); + vo.setRz8(rz8); + vo.setRzYesterday8(rzYesterday8); + vo.setW(w); + vo.setFlLowLimLev(flLowLimLev); + + ResBriefVo.PptnVo pptnDrp24Sum = pptnVos.stream() + .filter(o -> o.getDrp24Sum() != null) + .max(Comparator.comparing( + ResBriefVo.PptnVo::getDrp24Sum, + Comparator.nullsLast(Comparator.naturalOrder()) // null 值排在最后 + )) + .orElse(null); + vo.setDrp24Sum(pptnDrp24Sum != null ? pptnDrp24Sum.getDrp24Sum() : null); + vo.setSumStnm(pptnDrp24Sum != null ? pptnDrp24Sum.getStnm() : null); + ResBriefVo.PptnVo pptnDrp24Max = pptnVos.stream() + .filter(o -> o.getDrp24Max() != null) + .max(Comparator.comparing( + ResBriefVo.PptnVo::getDrp24Max, + Comparator.nullsLast(Comparator.naturalOrder()) + )) + .orElse(null); + vo.setDrp24Max(pptnDrp24Max != null ? pptnDrp24Max.getDrp24Max() : null); + vo.setMaxTm(pptnDrp24Max != null ? pptnDrp24Max.getMaxTm() : null); + vo.setMaxStnm(pptnDrp24Max != null ? pptnDrp24Max.getStnm() : null); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + vo.setDate(calendar.getTime()); + + save(vo); + } + + public List getResBriefList(Date startDate, Date endDate) { + List list = list(new QueryWrapper().between("date", startDate, endDate).orderByDesc("date")); + list.forEach(item -> { + item.setBrief(item.getBrief()); + }); + return list; + } + +} diff --git a/src/main/java/com/gunshi/project/ss/service/ResFloodRoadService.java b/src/main/java/com/gunshi/project/ss/service/ResFloodRoadService.java new file mode 100644 index 0000000..13e2a9c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResFloodRoadService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ResFloodRoadMapper; +import com.gunshi.project.ss.model.ResFloodRoad; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 防汛道路 + * author: xusan + * date: 2024-11-14 10:37:15 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResFloodRoadService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ResMangUnitService.java b/src/main/java/com/gunshi/project/ss/service/ResMangUnitService.java new file mode 100644 index 0000000..55be064 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResMangUnitService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ResMangUnitMapper; +import com.gunshi.project.ss.model.ResMangUnit; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库管理单位表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResMangUnitService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ResMonthEcoFlowService.java b/src/main/java/com/gunshi/project/ss/service/ResMonthEcoFlowService.java new file mode 100644 index 0000000..e716d28 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResMonthEcoFlowService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ResMonthEcoFlowMapper; +import com.gunshi.project.ss.model.ResMonthEcoFlow; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库月核定生态流量表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResMonthEcoFlowService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ResPersonService.java b/src/main/java/com/gunshi/project/ss/service/ResPersonService.java new file mode 100644 index 0000000..1b98aaf --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResPersonService.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ResPersonMapper; +import com.gunshi.project.ss.model.ResPerson; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/23. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResPersonService extends ServiceImpl +{ +} diff --git a/src/main/java/com/gunshi/project/ss/service/ResPlanBService.java b/src/main/java/com/gunshi/project/ss/service/ResPlanBService.java new file mode 100644 index 0000000..5394db4 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResPlanBService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ResPlanBMapper; +import com.gunshi.project.ss.model.ResPlanB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库预案表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResPlanBService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ResProjectImgService.java b/src/main/java/com/gunshi/project/ss/service/ResProjectImgService.java new file mode 100644 index 0000000..2dd4a27 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResProjectImgService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ResProjectImgMapper; +import com.gunshi.project.ss.model.ResProjectImg; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库工程图片 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResProjectImgService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ResSafePersonBService.java b/src/main/java/com/gunshi/project/ss/service/ResSafePersonBService.java new file mode 100644 index 0000000..4e7e721 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResSafePersonBService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ResSafePersonBMapper; +import com.gunshi.project.ss.model.ResSafePersonB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库责任体系表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResSafePersonBService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ResTunnelService.java b/src/main/java/com/gunshi/project/ss/service/ResTunnelService.java new file mode 100644 index 0000000..4ade73c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ResTunnelService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.ResTunnelMapper; +import com.gunshi.project.ss.model.ResTunnel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库建筑物 - 放空洞/灌溉发电洞 + * author: xusan + * date: 2024-11-14 10:34:12 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ResTunnelService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/RescueGoodsService.java b/src/main/java/com/gunshi/project/ss/service/RescueGoodsService.java new file mode 100644 index 0000000..1f6234c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RescueGoodsService.java @@ -0,0 +1,97 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.file.model.FileDescriptor; +import com.gunshi.project.ss.entity.so.RescueGoodsPageSo; +import com.gunshi.project.ss.mapper.RescueGoodsMapper; +import com.gunshi.project.ss.model.RescueGoodsB; +import com.gunshi.project.ss.model.RescueGoodsBAutoDao; +import com.gunshi.project.ss.model.RescueGoodsBAutoMapper; +import com.gunshi.project.ss.model.RescueGoodsFile; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/3/20 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RescueGoodsService + extends AbstractModelWithAttachService< + RescueGoodsB, + RescueGoodsBAutoMapper, + RescueGoodsBAutoDao, + RescueGoodsFile, + com.gunshi.project.ss.model.RescueGoodsFileAutoMapper, + com.gunshi.project.ss.model.RescueGoodsFileAutoDao + > +{ + + @Autowired + private RescueGoodsBAutoDao autoDao; + + @Autowired + private com.gunshi.project.ss.model.RescueGoodsFileAutoDao attachFileAutoDao; + + @Resource + private RescueGoodsMapper rescueGoodsMapper; + + + public Page pageQuery(RescueGoodsPageSo RescueGoodsPageSo) { + return rescueGoodsMapper.pageQuery(RescueGoodsPageSo.getPageSo().toPage(),RescueGoodsPageSo); + } + + + @Override + RescueGoodsBAutoDao getAutoDao() { + return autoDao; + } + + @Override + com.gunshi.project.ss.model.RescueGoodsFileAutoDao getAttachFileAutoDao() { + return attachFileAutoDao; + } + + @Override + List createAttachList(RescueGoodsB RescueGoodsB) { + List fileIds = RescueGoodsB.getFileIds(); + if (fileIds == null) return null; + List attachList = new ArrayList<>(); + for (String fileId : fileIds) { + RescueGoodsFile attach = new RescueGoodsFile(); + attach.setFileId(Long.valueOf(fileId)); + attach.setGoodsId(RescueGoodsB.getGoodsId()); + attach.setTm(new Date()); + attach.setId(IdWorker.getId()); + attachList.add(attach); + } + return attachList; + } + + @Override + Object getModelId(RescueGoodsB RescueGoodsB) { + return RescueGoodsB.getGoodsId(); + } + + @Override + public String getAttachBzIdName() { + return "goods_id"; + } + + public List detail(Long goodsId) { + return rescueGoodsMapper.detail(goodsId); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/RescueTeamService.java b/src/main/java/com/gunshi/project/ss/service/RescueTeamService.java new file mode 100644 index 0000000..369cea7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RescueTeamService.java @@ -0,0 +1,138 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.entity.so.RescueTeamPageSo; +import com.gunshi.project.ss.entity.vo.RescueTeamVo; +import com.gunshi.project.ss.mapper.RescueTeamBMapper; +import com.gunshi.project.ss.mapper.RescueTeamFileMapper; +import com.gunshi.project.ss.model.RescueTeamB; +import com.gunshi.project.ss.model.RescueTeamDetail; +import com.gunshi.project.ss.model.RescueTeamFile; +import com.gunshi.project.ss.model.RescueTeamFileAutoDao; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * Created by wanyan on 2024/3/18 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RescueTeamService extends AbstractModelWithAttachService{ + @Autowired + private com.gunshi.project.ss.model.RescueTeamBAutoDao autoDao; + + @Autowired + private RescueTeamFileAutoDao attachFileAutoDao; + + + @Resource + private RescueTeamBMapper rescueTeamMapper; + + @Resource + private RescueTeamFileMapper rescueTeamFileMapper; + + @Resource + private com.gunshi.project.ss.model.RescueTeamDetailAutoDao detailAutoDao; + + public Page pageQuery(RescueTeamPageSo rescueTeamPageSo) { + return rescueTeamMapper.pageQuery(rescueTeamPageSo.getPageSo().toPage(),rescueTeamPageSo); + } + + public RescueTeamB detail(Long teamId) { + RescueTeamB team = rescueTeamMapper.selectById(teamId); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(RescueTeamDetail::getTeamId, teamId); + team.setDetails(detailAutoDao.list(queryWrapper)); + + team.setFiles(rescueTeamFileMapper.queryFiles(teamId)); + + return team; + } + + public void saveDetailAndObj(RescueTeamB model, long teamId) { + List details = model.getDetails(); + if(CollectionUtils.isNotEmpty(details)){ + detailAutoDao.saveBatch(details.stream().map(o->{ + o.setDetailId(IdWorker.getId()); + o.setTeamId(teamId); + return o; + }).collect(Collectors.toList())); + } + } + + public void updateDetailAndObj(RescueTeamB model) { + //根据teamId删除队伍明细和服务对象 + Long teamId = model.getTeamId(); + deleteDetailAndObj(teamId); + saveDetailAndObj(model,teamId); + } + + private void deleteDetailAndObj(Long teamId){ + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(RescueTeamDetail::getTeamId,teamId); + detailAutoDao.remove(queryWrapper); + + } + + public Boolean delete(Long teamId) { + deleteDetailAndObj(teamId); + rescueTeamFileMapper.delete(new LambdaUpdateWrapper() + .eq(RescueTeamFile::getTeamId,teamId)); + int i = rescueTeamMapper.deleteById(teamId); + return i > 0 ; + } + + @Override + com.gunshi.project.ss.model.RescueTeamBAutoDao getAutoDao() { + return autoDao; + } + + @Override + RescueTeamFileAutoDao getAttachFileAutoDao() { + return attachFileAutoDao; + } + + @Override + List createAttachList(RescueTeamB RescueTeamB) { + List fileIds = RescueTeamB.getFileIds(); + if (fileIds == null) return null; + List attachList = new ArrayList<>(); + for (String fileId : fileIds) { + RescueTeamFile attach = new RescueTeamFile(); + attach.setFileId(Long.valueOf(fileId)); + attach.setTeamId(RescueTeamB.getTeamId()); + attach.setTm(new Date()); + attach.setId(IdWorker.getId()); + attachList.add(attach); + } + return attachList; + } + + @Override + Object getModelId(RescueTeamB rescueTeamB) { + return rescueTeamB.getTeamId(); + } + + @Override + public String getAttachBzIdName() { + return "team_id"; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ReservoirWaterService.java b/src/main/java/com/gunshi/project/ss/service/ReservoirWaterService.java new file mode 100644 index 0000000..426903c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ReservoirWaterService.java @@ -0,0 +1,496 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.entity.so.DataQueryCommonSo; +import com.gunshi.project.ss.entity.so.PicQuerySo; +import com.gunshi.project.ss.entity.so.ReservoirWaterCommonSo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.mapper.AttResBaseMapper; +import com.gunshi.project.ss.mapper.StZvarlBMapper; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.DateUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.stream.Collectors; + +/** + * Description: + * Created by wanyan on 2024/7/8 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Slf4j +public class ReservoirWaterService { + + @Resource + private AttResBaseMapper attResBaseMapper; + + @Resource + private StZvarlBMapper stZvarlBMapper; + + @Resource + private RainBasinDivisionService rainBasinDivisionService; + + @Autowired + private StZvarlBService stZvarlBService; + + @Autowired + private StRiverRRealService stRiverRRealServices; + + + + //实时供水 + @Autowired + private StWaterRRealService stWaterRRealService; + + public List list() { + List attResBaseVos = attResBaseMapper.queryList(); + if(CollectionUtils.isEmpty(attResBaseVos)){ + return attResBaseVos; + } + attResBaseVos.stream().map(o->{ + if(o.getCalState() == 1){ + o.setDesState(0); + o.setFlState(0); + }else if(o.getCalState() == 0 && o.getDesState() ==1){ + o.setFlState(0); + } + return o; + }).collect(Collectors.toList()); + + for (AttResBaseVo vo : attResBaseVos) { + BigDecimal rz = vo.getRz(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByAsc(StZvarlB::getRz); + List zvarlList = stZvarlBMapper.selectList(queryWrapper); + BigDecimal w = stZvarlBService.getWByZvarl(zvarlList, rz); + vo.setNowCap(w); +// for (StZvarlB zvarl : zvarlList) { +// if (zvarl.getRz().equals(rz)) { +// vo.setNowCap(zvarl.getW()); +// break; +// } +// } + } + //查询所有测站的库容曲线 +// List zvarlList = queryZval(attResBaseVos.stream().map(AttResBaseVo::getStcd).collect(Collectors.toList())); +// Map> zvalMap = zvarlList.stream().collect(Collectors.groupingBy(StZvarlB::getStcd)); +// for(AttResBaseVo vo : attResBaseVos){ +// String stcd = vo.getStcd(); +// BigDecimal rz = vo.getRz(); +// //计算当前库容 +// List zvarlBS = zvalMap.get(stcd); +// if(rz != null && CollectionUtils.isNotEmpty(zvarlBS)){ +// BigDecimal maxRz = zvarlBS.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); +// BigDecimal minRz = zvarlBS.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); +// if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ +// //当期水位库容 +// StZvarlB equals = zvarlBS.stream().filter(e -> e.getRz().compareTo(vo.getRz()) == 0).findFirst().orElse(new StZvarlB()); +// //死水位库容 +// StZvarlB dead = zvarlBS.stream().filter(e -> e.getRz().compareTo(vo.getDeadCap()) == 0).findFirst().orElse(new StZvarlB()); +// if(Objects.nonNull(equals) && Objects.nonNull(dead)){ +// BigDecimal subtract = equals.getW().subtract(dead.getW()); +// vo.setNowCap(subtract); +// } +// continue; +// } +// Map stZvalMap = zvarlBS.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW)); +// List list = zvarlBS.stream().map(StZvarlB::getRz).sorted().collect(Collectors.toList()); +// vo.setNowCap(DataHandleUtil.calcData(rz,stZvalMap,list)); +// } +// } + return attResBaseVos; + } + + + public List listV2() { + List voList = attResBaseMapper.queryListV2(); + if(CollectionUtils.isEmpty(voList)){ + return voList; + } + + List zvarlList = stZvarlBService.list(); + zvarlList.sort(Comparator.comparing(StZvarlB::getRz)); + voList.forEach(vo -> { + if(vo.getCalState() == 1){ + vo.setDesState(0); + vo.setFlState(0); + }else if(vo.getCalState() == 0 && vo.getDesState() ==1){ + vo.setFlState(0); + } + BigDecimal rz = vo.getRz(); + if (rz != null) { + //BigDecimal w = stZvarlBService.getWFromZvarl(rz, null, zvarlList); + BigDecimal w = stZvarlBService.getWByZvarl(zvarlList,rz); + vo.setNowCap(w); + } + Date tm = vo.getTm(); + if(tm != null && DateUtil.hoursBetweenDate(tm,new Date()) > 24){ + vo.setStatus(0); + }else if(tm == null){ + vo.setStatus(0); + }else{ + vo.setStatus(1); + } + }); + + //TODO 计算2个灌溉站的流量之和 + BigDecimal totalSum = BigDecimal.ZERO; + String stcd1 = "1112"; + QueryWrapper irrQw1 = new QueryWrapper<>(); + irrQw1.eq("stcd", stcd1).orderBy(true, false, "tm"); + StWaterRReal stWaterRReal1 = stWaterRRealService.getOne(irrQw1); + if(stWaterRReal1 != null){ + totalSum = totalSum.add(stWaterRReal1.getQ()); + } + String stcd2 = "1113"; + QueryWrapper irrQw2 = new QueryWrapper<>(); + irrQw2.eq("stcd", stcd2).orderBy(true, false, "tm"); + StWaterRReal stWaterRReal2 = stWaterRRealService.getOne(irrQw2); + if(stWaterRReal2 != null){ + totalSum = totalSum.add(stWaterRReal2.getQ()); + } + for (AttResBaseVo attResBaseVo : voList) { + //设置灌溉流量 + attResBaseVo.setIrrigationFlowSum(totalSum); + //设置灌溉流量时间 + if(stWaterRReal1 != null){ + attResBaseVo.setIrrigationFlowTm(stWaterRReal1.getTm()); + }else if(stWaterRReal2 != null){ + attResBaseVo.setIrrigationFlowTm(stWaterRReal2.getTm()); + } + } + //获取新建生态供水流量站最新得流量 + String ecologyStcd = "1114"; + QueryWrapper ecologyQw = new QueryWrapper<>(); + ecologyQw.eq("stcd", ecologyStcd).orderBy(true, false, "tm"); + StWaterRReal ecologyWaterRReal = stWaterRRealService.getOne(ecologyQw); + if(ecologyWaterRReal != null){ + voList.stream().forEach(o -> { + o.setEcologyFlow(ecologyWaterRReal.getQ()); + o.setEcologyFlowTm(ecologyWaterRReal.getTm()); + }); + } + return voList; + } + + + public List listV22() { + List voList = attResBaseMapper.queryListV2(); + if(CollectionUtils.isEmpty(voList)){ + return voList; + } + + List zvarlList = stZvarlBService.list(); + zvarlList.sort(Comparator.comparing(StZvarlB::getRz)); + voList.forEach(vo -> { + if(vo.getCalState() == 1){ + vo.setDesState(0); + vo.setFlState(0); + }else if(vo.getCalState() == 0 && vo.getDesState() ==1){ + vo.setFlState(0); + } + //如果最新数据时间小于当前时间整点,那么不显示水位数据(他妈的,很多功能都是复用一个接口的,说实话,不知道以前的人怎么设计的,就单一责任原则不好吗,非得复用代码,这下搞得需求有变更的情况下,一个页面改好了,另一个页面又会出现问题,真是服了) + Date tm = vo.getTm(); + BigDecimal rz = vo.getRz(); + // 获取当前时间整点(去掉分钟和秒) + Calendar now = Calendar.getInstance(); + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + now.set(Calendar.MILLISECOND, 0); + Date currentHour = now.getTime(); + + if(tm != null && tm.before(currentHour)){ + vo.setRz(null); + vo.setTm(null); + vo.setDrpTm(null); + }else if (tm != null && rz != null){ + if (rz != null) { + //BigDecimal w = stZvarlBService.getWFromZvarl(rz, null, zvarlList); + BigDecimal w = stZvarlBService.getWByZvarl(zvarlList,rz); + vo.setNowCap(w); + } + } + }); + Calendar now = Calendar.getInstance(); + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + now.set(Calendar.MILLISECOND, 0); + Date currentHour = now.getTime(); + //TODO 计算2个灌溉站的流量之和 + BigDecimal totalSum = null; + String stcd1 = "1112"; + QueryWrapper irrQw1 = new QueryWrapper<>(); + irrQw1.eq("stcd", stcd1).orderBy(true, false, "tm"); + StWaterRReal stWaterRReal1 = stWaterRRealService.getOne(irrQw1); + + String stcd2 = "1113"; + QueryWrapper irrQw2 = new QueryWrapper<>(); + irrQw2.eq("stcd", stcd2).orderBy(true, false, "tm"); + StWaterRReal stWaterRReal2 = stWaterRRealService.getOne(irrQw2); + if(stWaterRReal1 != null ){ + Date tm1 = stWaterRReal1.getTm(); + if(tm1 != null && !tm1.before(currentHour)){ + totalSum = BigDecimal.ZERO; + totalSum = totalSum.add(stWaterRReal1.getQ()); + } + } + if(stWaterRReal2 != null){ + Date tm2 = stWaterRReal2.getTm(); + if(tm2 != null && !tm2.before(currentHour)){ + if(totalSum == null){ + totalSum = BigDecimal.ZERO; + } + totalSum = totalSum.add(stWaterRReal2.getQ()); + } + } + + + + for (AttResBaseVo attResBaseVo : voList) { + //设置灌溉流量 + attResBaseVo.setIrrigationFlowSum(totalSum); + //设置灌溉流量时间 + if(stWaterRReal1 != null){ + attResBaseVo.setIrrigationFlowTm(stWaterRReal1.getTm()); + }else if(stWaterRReal2 != null){ + attResBaseVo.setIrrigationFlowTm(stWaterRReal2.getTm()); + } + if(totalSum == null){ + attResBaseVo.setIrrigationFlowTm(null); + } + } + //获取新建生态供水流量站最新得流量 + String ecologyStcd = "1114"; + QueryWrapper ecologyQw = new QueryWrapper<>(); + ecologyQw.eq("stcd", ecologyStcd).orderBy(true, false, "tm"); + StWaterRReal ecologyWaterRReal = stWaterRRealService.getOne(ecologyQw); + if(ecologyWaterRReal != null){ + Date tm = ecologyWaterRReal.getTm(); + if(tm != null && !tm.before(currentHour)){ + voList.stream().forEach(o -> { + o.setEcologyFlow(ecologyWaterRReal.getQ()); + o.setEcologyFlowTm(ecologyWaterRReal.getTm()); + }); + } + } + return voList; + } + + private List queryZval(List stcdList) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.in(StZvarlB::getStcd, stcdList); + return stZvarlBMapper.selectList(queryWrapper); + } + + public List realImg(ReservoirWaterCommonSo reservoirWaterCommonSo) { + return attResBaseMapper.realImg(reservoirWaterCommonSo.getResCode()); + } + + public List zvarl(String stcd) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByAsc(StZvarlB::getRz); + return stZvarlBMapper.selectList(queryWrapper); + } + + public List monitorData(DataQueryCommonSo dataQueryCommonSo) { + String stcd = dataQueryCommonSo.getStcd(); + //雨量数据 + List drpData = attResBaseMapper.drpData(dataQueryCommonSo); + //水位数据 + List rzData = attResBaseMapper.rzData(dataQueryCommonSo); + //获取库容曲线关系,算出库容 + List zvarl = zvarl(stcd); + if(CollectionUtils.isNotEmpty(zvarl)){ + //calcTqData(rzData,zvarl); + rzData.stream().forEach(o -> { + BigDecimal w = stZvarlBService.getWByZvarl(zvarl, o.getRz()); + o.setW(w); + }); + } + //根据监测时间合并雨量和水位数据 + return bindData(stcd,drpData,rzData); + } + + private void calcTqData(List rzData, List zqrl) { + /* 前期库容曲线数据不足,采用了计算近似值,废弃,直接查表 + BigDecimal maxRz = zqrl.stream().max(Comparator.comparing(StZvarlB::getRz)).get().getRz(); + BigDecimal minRz = zqrl.stream().min(Comparator.comparing(StZvarlB::getRz)).get().getRz(); + Map map = zqrl.stream().collect(Collectors.toMap(StZvarlB::getRz, StZvarlB::getW, + (existing, replacement) -> existing)); + + * 根据监测水位和库容曲线计算出当前库容 + * 计算规则:1.监测水位不在库容曲线范围内,无法计算当前库容 + * 2.找出与监测水位最接近的一组水位值,算出比例,根据比例计算库容:如监测水位为10,最相近的一组水位值为9-11,对应的库容为4-5 + * 则计算公式为1/2 = x/1 x=0.5 当前库容=4+0.5=4.5 + + List list = zqrl.stream().map(StZvarlB::getRz).collect(Collectors.toList()); + for (AttResMonitorVo vo : rzData) { + BigDecimal rz = vo.getRz(); + if (rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0) { + continue; + } + vo.setW(DataHandleUtil.calcData(rz, map, list)); + } + */ + //zqrl转map,用rz值做key,bigdecimal的精度设置为3位 + Map map = zqrl.stream().collect(Collectors.toMap(v -> v.getRz().setScale(3, RoundingMode.UNNECESSARY), v -> v.getW())); + for (AttResMonitorVo vo : rzData) { + BigDecimal rz = vo.getRz().setScale(3, RoundingMode.UNNECESSARY); + if (map.containsKey(rz)) { + vo.setW(map.get(rz)); + } + } + } + + private List bindData(String stcd, List drpData, List rzData) { + // 以水位数据的时间为基准(过五分钟的数据) + return rzData.stream().map(rzVo -> { + AttResMonitorVo resultVo = AttResMonitorVo.builder() + .stcd(stcd) + .tm(rzVo.getTm()) // 使用水位数据的时间 + .rz(rzVo.getRz()) + .w(rzVo.getW()) + .build(); + + // 为这个水位时间点查找最接近的降水数据 + drpData.stream() + .min(Comparator.comparing(drpVo -> Math.abs(rzVo.getTm().getTime() - drpVo.getTm().getTime()))) + .ifPresent(closestDrp -> { + long timeDiff = Math.abs(rzVo.getTm().getTime() - closestDrp.getTm().getTime()); + if (timeDiff <= 30 * 60 * 1000) { // 30分钟容差 + resultVo.setDrp(closestDrp.getDrp()); + } + }); + + return resultVo; + }) + .sorted(Comparator.comparing(AttResMonitorVo::getTm).reversed()) + .collect(Collectors.toList()); + } + + public StRsvrVo rz(ReservoirWaterCommonSo reservoirWaterCommonSo) { + StRsvrVo vo = new StRsvrVo(); + String resCode = reservoirWaterCommonSo.getResCode(); + AttResBase attResBase = attResBaseMapper.selectById(resCode); + vo.setFlLowLimLev(attResBase.getFlLowLimLev()); + //默认查询近一周水位 + String endTime = DateUtil.convertDateToMDSString(new Date()); + String startTime = DateUtil.getMinusTime(endTime, 7 * 24); + vo.setList(attResBaseMapper.queryRzList(attResBase.getStcd(),startTime,endTime)); + return vo; + } + + public AttRvMonitorDetailVo detail(String stcd) { + AttRvMonitorDetailVo vo = new AttRvMonitorDetailVo(); + StPptnDetailsVo stPptnDetailsVo = rainBasinDivisionService.queryStPptnDetailsByStcd(stcd); + BeanUtils.copyProperties(stPptnDetailsVo,vo,AttRvMonitorDetailVo.class); + + //最新水位 + AttResMonitorVo monitorVo = attResBaseMapper.latestRz(stcd); + if(monitorVo == null){ + return vo; + } + Date tm = monitorVo.getTm(); + BigDecimal rz = monitorVo.getRz(); + + // 判断最新水位时间是否是今天 + LocalDateTime nowTime = LocalDateTime.now(); + LocalDateTime latestTime = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); + + boolean isToday = latestTime.toLocalDate().equals(nowTime.toLocalDate()); + if(isToday){ + //最新水位时间往前推24小时水位 + LocalDateTime now = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); + LocalDateTime dateTime = now.minusDays(1); + BigDecimal oldRz = attResBaseMapper.oldRz(stcd,2,Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()),Date.from(now.atZone(ZoneId.systemDefault()).toInstant())); + + if(oldRz != null){ + vo.setRzDiff(rz.subtract(oldRz)); + } + }else{ + vo.setRzDiff(null); + } + + + //本年最高水位 + BigDecimal maxYearRz = queryYearRzByStcdAndTime(stcd); + vo.setMaxRz(maxYearRz); + return vo; + } + + private BigDecimal queryYearRzByStcdAndTime(String stcd) { + LocalDateTime now = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()); + LocalDateTime startTime; + LocalDateTime endTime; + if (now.getHour() >= 8 || (now.getHour() < 8 && now.getMonthValue() > 1) || (now.getHour() < 8 && now.getMonthValue() == 1 && now.getDayOfMonth() >= 1)){ + startTime = LocalDateTime.of( + now.getYear(), + 1, + 1, + 8, + 0, + 0 + ); + endTime = now; + return attResBaseMapper.queryMaxRzByStcdAndTime(stcd,Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); + } + return new BigDecimal(0); + } + + public List channel(String resCode) { + return attResBaseMapper.channel(resCode); + } + + public Page imageInfo(PicQuerySo picQuerySo) { + return attResBaseMapper.imageInfo(picQuerySo.getPageSo().toPage(),picQuerySo); + } + + public List data(DataQueryCommonSo dataQueryCommonSo) { + String stcd = dataQueryCommonSo.getStcd(); + //水位数据 + List rzData = attResBaseMapper.rzData(dataQueryCommonSo); + //获取库容曲线关系,算出库容 + List zvarl = zvarl(stcd); + if(CollectionUtils.isNotEmpty(zvarl)){ + calcTqData(rzData,zvarl); + } + return rzData; + } + + public Page dataPage(PicQuerySo picQuerySo) { + String stcd = picQuerySo.getStcd(); + //水位数据 + Page rzData = attResBaseMapper.rzDataPage(picQuerySo.getPageSo().toPage(),picQuerySo); + //获取库容曲线关系,算出库容 + List zvarl = zvarl(stcd); + if(CollectionUtils.isNotEmpty(zvarl)){ + calcTqData(rzData.getRecords(),zvarl); + } + return rzData; + } + + public List listV3() { + String stcd = "199999"; + List voList = attResBaseMapper.queryYhd(stcd); + return voList; + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/service/RiceGrowConfigService.java b/src/main/java/com/gunshi/project/ss/service/RiceGrowConfigService.java new file mode 100644 index 0000000..88ca7ca --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiceGrowConfigService.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.RiceGrowConfigMapper; +import com.gunshi.project.ss.model.RiceGrowConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水稻生长配置 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiceGrowConfigService extends ServiceImpl { + + public RiceGrowConfig selectByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceGrowConfig::getRiceWaterId, riceWaterId); + return this.baseMapper.selectOne(queryWrapper); + } + + public void removeByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceGrowConfig::getRiceWaterId, riceWaterId); + this.remove(queryWrapper); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/RiceIrrigationUseService.java b/src/main/java/com/gunshi/project/ss/service/RiceIrrigationUseService.java new file mode 100644 index 0000000..441f48d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiceIrrigationUseService.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.RiceIrrigationUseMapper; +import com.gunshi.project.ss.model.RiceIrrigationUse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 水稻灌溉用水 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiceIrrigationUseService extends ServiceImpl { + + public List selectByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceIrrigationUse::getRiceWaterId, riceWaterId); + return this.baseMapper.selectList(queryWrapper); + } + + public void removeByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceIrrigationUse::getRiceWaterId, riceWaterId); + this.remove(queryWrapper); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/RiceRqWaterService.java b/src/main/java/com/gunshi/project/ss/service/RiceRqWaterService.java new file mode 100644 index 0000000..e94fa4c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiceRqWaterService.java @@ -0,0 +1,657 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.dto.RiceWaterCaculateDto; +import com.gunshi.project.ss.entity.so.RiceRqWaterPageSo; +import com.gunshi.project.ss.entity.vo.RiceRqWaterCaculateVo; +import com.gunshi.project.ss.entity.vo.TyYearRainfallVo; +import com.gunshi.project.ss.mapper.RiceRqWaterMapper; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.LocalDateTimeUtils; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 水稻需水主表 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiceRqWaterService extends ServiceImpl { + + + @Autowired + private RiceGrowConfigService riceGrowConfigService; + + @Autowired + private RiceIrrigationUseService riceIrrigationUseService; + + @Autowired + private RiceWaterForecastCycleService riceWaterForecastCycleService; + + @Autowired + private RiceWaterForecastMonthService riceWaterForecastMonthService; + + @Autowired + private RiceWaterKiService riceWaterKiService; + + public Page pageQuery(RiceRqWaterPageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(page.getYear() != null){ + queryWrapper.eq(RiceRqWater::getYear,page.getYear()); + } + + if(!StringUtils.isBlank(page.getPlanName())){ + queryWrapper.like(RiceRqWater::getPlanName,page.getPlanName()); + } + queryWrapper.orderByDesc(RiceRqWater::getCreateTime); + Page riceRqWaterPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + List records = riceRqWaterPage.getRecords(); + for (RiceRqWater record : records) { + //灌水定额配置 + record.setRiceWaterKis(riceWaterKiService.selectByRiceWaterId(record.getId())); + //水稻生长系数配置 + record.setRiceGrowConfig(riceGrowConfigService.selectByRiceWaterId(record.getId())); + //按月份 + record.setRiceWaterForecastMonths(riceWaterForecastMonthService.selectByRiceWaterId(record.getId())); + //按生长周期 + record.setRiceWaterForecastCycles(riceWaterForecastCycleService.selectByRiceWaterId(record.getId())); + } + return riceRqWaterPage; + } + + public RiceRqWater queryById(Long id) { + RiceRqWater riceRqWater = this.baseMapper.selectById(id); + if(riceRqWater == null){ + return riceRqWater; + } + riceRqWater.setRiceWaterKis(riceWaterKiService.selectByRiceWaterId(riceRqWater.getId())); + //水稻生长系数配置 + riceRqWater.setRiceGrowConfig(riceGrowConfigService.selectByRiceWaterId(riceRqWater.getId())); + //按月份 + riceRqWater.setRiceWaterForecastMonths(riceWaterForecastMonthService.selectByRiceWaterId(riceRqWater.getId())); + //按生长周期 + riceRqWater.setRiceWaterForecastCycles(riceWaterForecastCycleService.selectByRiceWaterId(riceRqWater.getId())); + return riceRqWater; + } + + public RiceRqWater saveData(RiceRqWater dto) { + RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); + List riceWaterKis = dto.getRiceWaterKis(); + List riceWaterForecastCycles = dto.getRiceWaterForecastCycles(); + List riceWaterForecastMonths = dto.getRiceWaterForecastMonths(); + dto.setReqWater(riceGrowConfig.getIrrigationUse()); + dto.setCreateTime(LocalDateTime.now()); + save(dto); + riceGrowConfig.setRiceWaterId(dto.getId()); + riceWaterKis.stream().forEach(o ->{ + o.setRiceWaterId(dto.getId()); + }); + riceWaterForecastCycles.stream().forEach(o ->{ + o.setRiceWaterId(dto.getId()); + }); + riceWaterForecastMonths.stream().forEach(o ->{ + o.setRiceWaterId(dto.getId()); + }); + riceWaterKiService.saveBatch(riceWaterKis); + riceGrowConfigService.save(riceGrowConfig); + riceWaterForecastCycleService.saveBatch(riceWaterForecastCycles); + riceWaterForecastMonthService.saveBatch(riceWaterForecastMonths); + return dto; + } + + public RiceRqWater updateData(RiceRqWater dto) { + RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); + List riceWaterKis = dto.getRiceWaterKis(); + List riceWaterForecastCycles = dto.getRiceWaterForecastCycles(); + List riceWaterForecastMonths = dto.getRiceWaterForecastMonths(); + dto.setReqWater(riceGrowConfig.getIrrigationUse()); + dto.setCreateTime(LocalDateTime.now()); + updateById(dto); + riceWaterKiService.removeByRiceWaterId(dto.getId()); + riceGrowConfigService.removeByRiceWaterId(dto.getId()); + riceIrrigationUseService.removeByRiceWaterId(dto.getId()); + riceWaterForecastCycleService.removeByRiceWaterId(dto.getId()); + riceWaterForecastMonthService.removeByRiceWaterId(dto.getId()); + riceWaterKis.stream().forEach(o ->{ + o.setRiceWaterId(dto.getId()); + }); + riceWaterForecastCycles.stream().forEach(o ->{ + o.setRiceWaterId(dto.getId()); + }); + riceWaterForecastMonths.stream().forEach(o ->{ + o.setRiceWaterId(dto.getId()); + }); + riceGrowConfig.setRiceWaterId(dto.getId()); + riceWaterKiService.saveBatch(riceWaterKis); + riceGrowConfigService.save(riceGrowConfig); + riceWaterForecastCycleService.saveBatch(riceWaterForecastCycles); + riceWaterForecastMonthService.saveBatch(riceWaterForecastMonths); + return dto; + } + + public Boolean delData(Long id) { + removeById(id); + riceWaterKiService.removeByRiceWaterId(id); + riceGrowConfigService.removeByRiceWaterId(id); + riceIrrigationUseService.removeByRiceWaterId(id); + riceWaterForecastCycleService.removeByRiceWaterId(id); + riceWaterForecastMonthService.removeByRiceWaterId(id); + return true; + } + + public List stageCaculate(RiceWaterCaculateDto dto) { + RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); + List riceWaterKis = dto.getRiceWaterKis(); + orderByStartTimeAsc(riceWaterKis); + // 早稻需水系数 + BigDecimal α1 = riceGrowConfig.getΑ1(); + if(α1 == null){ + throw new IllegalArgumentException("早稻需水系数不能为空"); + } + // 渗漏强度 + BigDecimal lkIntensity = riceGrowConfig.getLkIntensity(); + if(lkIntensity == null){ + throw new IllegalArgumentException("渗漏强度不能为空"); + } + // 生长期水面蒸发量(mm) + BigDecimal ed1 = riceGrowConfig.getEd1(); + if(ed1 == null){ + throw new IllegalArgumentException("生长期水面蒸发量不能为空"); + } + for (RiceWaterKi riceWaterKi : riceWaterKis) { + // 计算阶段耗水量 + if(riceWaterKi.getRiceGrowStage().contains("泡田")){ + riceWaterKi.setKi(riceGrowConfig.getΑ1());//需水系数 + riceWaterKi.setWaterRqStage(riceGrowConfig.getKaQuota());//泡田定额 + continue; + } + BigDecimal waterRqStage = calculateWaterRqStage(riceWaterKi, α1, ed1, lkIntensity); + riceWaterKi.setWaterRqStage(waterRqStage.setScale(1,RoundingMode.UP)); + } + + return riceWaterKis; + } + + /** + * 计算阶段耗水量 + * 公式:ki * α1 * ed1 + days * lkIntensity + */ + private BigDecimal calculateWaterRqStage(RiceWaterKi riceWaterKi, BigDecimal α1, + BigDecimal ed1, BigDecimal lkIntensity) { + // 获取需水模系数 + BigDecimal ki = riceWaterKi.getKi(); + if(ki == null){ + throw new IllegalArgumentException("需水模型系数不能为空"); + } + // 计算天数(如果days为空,则根据开始结束日期计算) + Integer days = riceWaterKi.getDays(); + if (days == null && riceWaterKi.getStartTime() != null && riceWaterKi.getEndTime() != null) { + days = calculateDaysBetween(riceWaterKi.getStartTime(), riceWaterKi.getEndTime()); + riceWaterKi.setDays(days); // 同时设置回实体中 + } + if (days == null) { + days = 0; + } + + + // 计算公式:ki * α1 * ed1 + days * lkIntensity + BigDecimal part1 = ki.multiply(α1).multiply(ed1); + BigDecimal part2 = new BigDecimal(days).multiply(lkIntensity); + + return part1.add(part2); + } + + /** + * 计算两个LocalDateTime之间的天数(包含开始和结束日期) + * 例如:2025-04-26 ~ 2025-05-06 = 11天 + */ + private Integer calculateDaysBetween(LocalDateTime startTime, LocalDateTime endTime) { + if (startTime == null || endTime == null) { + return 0; + } + + // 使用LocalDate来计算天数,忽略时间部分 + long days = java.time.temporal.ChronoUnit.DAYS.between( + startTime.toLocalDate(), + endTime.toLocalDate() + ); + + // 因为包含开始和结束日期,所以需要+1 + return (int) days + 1; + } + + @Autowired + private TyYearRainfallService tyYearRainfallService; + + public List irrigationCaculate(RiceWaterCaculateDto dto) { + List riceWaterKis = dto.getRiceWaterKis(); + List res = new ArrayList<>(); + orderByStartTimeAsc(riceWaterKis); + RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); + riceGrowConfig.setCycle(LocalDateTimeUtils.getTotalDayByRangeDate(riceWaterKis.getFirst().getStartTime(),riceWaterKis.getLast().getEndTime())); + Integer year = riceGrowConfig.getYear();//相似年 + List tyYearRainfallVos = tyYearRainfallService.queryList(); + List collect = tyYearRainfallVos.stream().filter(o -> { + return o.getYear().equals(year); + }).collect(Collectors.toList()); + if(collect == null || collect.isEmpty()){ + throw new IllegalArgumentException("对不起,没有该年份的降雨资料"); + } + TyYearRainfallVo tyYearRainfallVo = collect.get(0); + List list = tyYearRainfallVo.getList();//获取月份的降雨资料 + //泡田定额 + BigDecimal kaQuota = riceGrowConfig.getKaQuota(); + + // 泡田期是第一个元素 + RiceWaterKi kaPeriod = riceWaterKis.get(0); + LocalDateTime kaStartTime = kaPeriod.getStartTime(); + LocalDateTime kaEndTime = kaPeriod.getEndTime(); + int totalKaDays = calculateTotalKaDays(kaStartTime, kaEndTime); + + // 生育期数据(排除泡田期) + List growPeriods = riceWaterKis.subList(1, riceWaterKis.size()); + + // 用于存储去重后的月份(1-12) + Set monthSet = new HashSet<>(); + + // 添加泡田期的月份 + monthSet.add(kaStartTime.getMonthValue()); + monthSet.add(kaEndTime.getMonthValue()); + + // 遍历集合,提取每个元素的 startTime 和 endTime 对应的月份 + for (RiceWaterKi riceWaterKi : riceWaterKis) { + LocalDateTime start = riceWaterKi.getStartTime(); + LocalDateTime end = riceWaterKi.getEndTime(); + + if (start != null) { + monthSet.add(start.getMonthValue()); + } + if (end != null) { + monthSet.add(end.getMonthValue()); + } + } + + // 将去重后的月份转为列表并按从小到大排序 + List sortedMonths = monthSet.stream() + .sorted() + .collect(Collectors.toList()); + //boolean isFirst = true; + for (Integer sortedMonth : sortedMonths) { + RiceIrrigationUse riceIrrigationUse = new RiceIrrigationUse(); + riceIrrigationUse.setMonth(sortedMonth); + + BigDecimal irrigationVolume = BigDecimal.ZERO; + + // 计算泡田期在当前月份的耗水量 + /** + * 由于这个方法是按照月份进行计算的,所以当后面的生长期有属于泡田期的月份时,那么也要把泡田期的算上 + * 比如 泡田期3.30~4.25 + * 返青期4·26~5·6 + * 属于四月份的有泡田期和返青期,那么计算的时候就要把泡田期在四月份的灌溉用水量和返青期在四月份的灌溉用水量计算上 + */ + if (isMonthInKaPeriod(sortedMonth, kaStartTime, kaEndTime)) { + int kaDaysInMonth = calculateKaDaysInMonth(kaStartTime, kaEndTime, sortedMonth); + BigDecimal kaConsumption = kaQuota.divide(BigDecimal.valueOf(totalKaDays), 2, RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(kaDaysInMonth)); + irrigationVolume = irrigationVolume.add(kaConsumption); + } + + // 修正:计算生育期在当前月份的总耗水量(按Excel逻辑) + BigDecimal growConsumption = calculateGrowConsumptionForMonth(sortedMonth, growPeriods); + irrigationVolume = irrigationVolume.add(growConsumption); + + // 计算该月份所有生育阶段的总有效降雨量 +// if(isMonthInKaPeriod(sortedMonth, kaStartTime, kaEndTime) && !isFirst){ +// growPeriods.addFirst(kaPeriod); +// } + BigDecimal monthlyRainfall = calculateTotalEffectiveRainfallForMonth(sortedMonth, growPeriods, list); +// if(isMonthInKaPeriod(sortedMonth, kaStartTime, kaEndTime) && !isFirst){ +// growPeriods.removeFirst(); +// } + irrigationVolume = irrigationVolume.subtract(monthlyRainfall); +// // 如果计算结果是负数,则设为0 +// if (irrigationVolume.compareTo(BigDecimal.ZERO) < 0) { +// irrigationVolume = BigDecimal.ZERO; +// } + + // 保留2位小数 + irrigationVolume = irrigationVolume.setScale(2,RoundingMode.UP); + + riceIrrigationUse.setIrrigationUse(irrigationVolume); + res.add(riceIrrigationUse); +// isFirst = false; + } + return res; + } + + + /** + * 计算指定月份生育期的总耗水量(按Excel逻辑) + */ + private BigDecimal calculateGrowConsumptionForMonth(int month, List growPeriods) { + BigDecimal totalConsumption = BigDecimal.ZERO; + + for (RiceWaterKi growPeriod : growPeriods) { + LocalDateTime startTime = growPeriod.getStartTime(); + LocalDateTime endTime = growPeriod.getEndTime(); + + // 检查该阶段是否包含这个月份 + if (LocalDateTimeUtils.isMonthInPeriod(month, startTime, endTime)) { + // 获取阶段在该月份的天数 + int daysInMonth = LocalDateTimeUtils.calculateDaysInMonthForPeriod(startTime, endTime, month); + + if (daysInMonth > 0) { + // 判断阶段是否跨月份 + List monthsInStage = LocalDateTimeUtils.getMonthsInPeriod(startTime, endTime); + + if (monthsInStage.size() == 1) { + // 不跨月份:直接使用完整耗水量 + totalConsumption = totalConsumption.add(growPeriod.getWaterRqStage()); + } else { + // 跨月份:按天数比例分配耗水量 + //当前月份对应阶段的耗水量/当前阶段的全天数 + /** + * 比如 + * 泡田期 3.30~4.25 + * 返青期 4·26~5·6 这里就跨月份了 + * 同时month为4 表示4月份 + * 那么计算公式为 返青期耗水量/返青期天数11天*返青期四月份天数(ps 泡田期在四月份的耗水量已经计算完了) + */ + BigDecimal dailyConsumption = growPeriod.getWaterRqStage() + .divide(BigDecimal.valueOf(growPeriod.getDays()), 2, RoundingMode.HALF_UP); + //再去乘当前阶段在当前月份的天数 + BigDecimal monthlyConsumption = dailyConsumption.multiply(BigDecimal.valueOf(daysInMonth)); + totalConsumption = totalConsumption.add(monthlyConsumption); + } + } + } + } + + return totalConsumption; + } + + /** + * 计算指定月份所有生育阶段的总有效降雨量 + */ + private BigDecimal calculateTotalEffectiveRainfallForMonth(int month, List growPeriods, + List rainfallList) { + BigDecimal totalRainfall = BigDecimal.ZERO; + + for (RiceWaterKi growPeriod : growPeriods) { + LocalDateTime startTime = growPeriod.getStartTime(); + LocalDateTime endTime = growPeriod.getEndTime(); + + // 检查该阶段是否包含这个月份 + if (LocalDateTimeUtils.isMonthInPeriod(month, startTime, endTime)) { + // 使用getMonthlyRainfall方法计算该阶段在该月份的有效降雨量 + BigDecimal stageRainfall = getMonthlyRainfall(rainfallList, month, startTime, endTime); + totalRainfall = totalRainfall.add(stageRainfall); + } + } + + return totalRainfall.setScale(1, RoundingMode.HALF_UP); + } + + + /** + * 判断月份是否在泡田期内 + */ + private boolean isMonthInKaPeriod(int month, LocalDateTime kaStart, LocalDateTime kaEnd) { + int startMonth = kaStart.getMonthValue(); + int endMonth = kaEnd.getMonthValue(); + return month >= startMonth && month <= endMonth; + } + + /** + * 计算泡田期在当前月份的天数 + */ + private int calculateKaDaysInMonth(LocalDateTime kaStart, LocalDateTime kaEnd, int targetMonth) { + int startMonth = kaStart.getMonthValue(); + int endMonth = kaEnd.getMonthValue(); + + // 如果整个泡田期都在目标月份内 + if (startMonth == targetMonth && endMonth == targetMonth) { + return (int) java.time.temporal.ChronoUnit.DAYS.between(kaStart.toLocalDate(), kaEnd.toLocalDate()) + 1; + } + + // 如果泡田期开始时间在目标月份,结束时间在下个月 + if (startMonth == targetMonth && endMonth > targetMonth) { + LocalDate lastDayOfMonth = kaStart.toLocalDate().withDayOfMonth(kaStart.toLocalDate().lengthOfMonth()); + return (int) java.time.temporal.ChronoUnit.DAYS.between(kaStart.toLocalDate(), lastDayOfMonth) + 1; + } + + // 如果泡田期结束时间在目标月份,开始时间在上个月 + if (endMonth == targetMonth && startMonth < targetMonth) { + LocalDate firstDayOfMonth = kaEnd.toLocalDate().withDayOfMonth(1); + return (int) java.time.temporal.ChronoUnit.DAYS.between(firstDayOfMonth, kaEnd.toLocalDate()) + 1; + } + + return 0; + } + + /** + * 计算泡田期总天数 + */ + private int calculateTotalKaDays(LocalDateTime kaStart, LocalDateTime kaEnd) { + return (int) java.time.temporal.ChronoUnit.DAYS.between(kaStart.toLocalDate(), kaEnd.toLocalDate()) + 1; + } + + /** + * 将ki的数据按照月份从小到大排序 + */ + private void orderByStartTimeAsc(List riceWaterKis) { + Collections.sort(riceWaterKis, (ki1, ki2) -> { + LocalDateTime time1 = ki1.getStartTime(); + LocalDateTime time2 = ki2.getStartTime(); + if (time1 == null) return -1; + if (time2 == null) return 1; + return time1.compareTo(time2); + }); + } + + public List irrigationComprehensiveCaculateMonth(RiceWaterCaculateDto dto) { + RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); + List riceIrrigationUses = irrigationCaculate(dto);//获取灌区水稻用水量 + BigDecimal totalWaterUse = BigDecimal.ZERO; + for (RiceIrrigationUse riceIrrigationUs : riceIrrigationUses) { + totalWaterUse = totalWaterUse.add(riceIrrigationUs.getIrrigationUse()); + } + riceGrowConfig.setWaterUse(totalWaterUse); + List res = new ArrayList<>(); + + //灌溉区面积(亩) + BigDecimal sArea = riceGrowConfig.getArea(); + sArea = sArea.multiply(new BigDecimal("10000")); + for (RiceIrrigationUse riceIrrigationUse : riceIrrigationUses) { + RiceWaterForecastMonth entity = new RiceWaterForecastMonth(); + entity.setMonth(riceIrrigationUse.getMonth()); + BigDecimal irrigationUse = riceIrrigationUse.getIrrigationUse(); + if(irrigationUse.compareTo(BigDecimal.ZERO) <= 0){ + entity.setIrrigationUse(BigDecimal.ZERO); + }else{ + // 计算公式:2/3 * irrigationUse * sArea / 10000 + BigDecimal value = new BigDecimal("2") + .divide(new BigDecimal("3"), 10, RoundingMode.HALF_UP) // 2/3,保留10位小数 + .multiply(irrigationUse) + .multiply(sArea) + .divide(new BigDecimal("10000")); // 除以10000,保留2位小数 + + entity.setIrrigationUse(value); + } + + res.add(entity); + } + return res; + } + + public List irrigationComprehensiveCaculateCycle(RiceWaterCaculateDto dto) { + List riceWaterKis = dto.getRiceWaterKis(); + orderByStartTimeAsc(riceWaterKis); + RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); + BigDecimal kaQuota = riceGrowConfig.getKaQuota();//泡田定额 + Integer year = riceGrowConfig.getYear();//相似年 + BigDecimal sArea = riceGrowConfig.getArea(); + List tyYearRainfallVos = tyYearRainfallService.queryList(); + List collect = tyYearRainfallVos.stream().filter(o -> { + return o.getYear().equals(year); + }).collect(Collectors.toList()); + if(collect == null || collect.isEmpty()){ + throw new IllegalArgumentException("对不起,没有该年份的降雨资料"); + } + TyYearRainfallVo tyYearRainfallVo = collect.get(0); + List rainfallList = tyYearRainfallVo.getList();//获取月份的降雨资料 + List res = new ArrayList<>(); + + for (int i = 0; i < riceWaterKis.size(); i++) { + RiceWaterKi riceWaterKi = riceWaterKis.get(i); + RiceWaterForecastCycle data = new RiceWaterForecastCycle(); + data.setRiceGrowStage(riceWaterKi.getRiceGrowStage()); + data.setOrder(i + 1); + + //泡田期为定值,泡田定额 + if(riceWaterKi.getRiceGrowStage().contains("泡田")){ + data.setIrrigationUse(kaQuota); + data.setRiceGrowStage("泡田期"); + res.add(data); + } else { + LocalDateTime startTime = riceWaterKi.getStartTime(); + LocalDateTime endTime = riceWaterKi.getEndTime(); + BigDecimal irrigationUse = calculateIrrigationUse(riceWaterKi, rainfallList, startTime, endTime); + data.setIrrigationUse(irrigationUse.setScale(2,RoundingMode.HALF_UP)); + res.add(data); + } + } + sArea = sArea.multiply(new BigDecimal("10000")); + for (RiceWaterForecastCycle re : res) { + BigDecimal irrigationUse = re.getIrrigationUse(); + if(irrigationUse.compareTo(BigDecimal.ZERO) <=0){ + re.setIrrigationUse(BigDecimal.ZERO); + }else{ + BigDecimal value = new BigDecimal("2") + .divide(new BigDecimal("3"), 10, RoundingMode.HALF_UP) // 2/3,保留10位小数 + .multiply(irrigationUse) + .multiply(sArea) + .divide(new BigDecimal("10000")); // 除以10000,保留2位小数 + re.setIrrigationUse(value); + } + + } + return res; + } + + /** + * 计算非泡田期的灌溉用水量 + */ + private BigDecimal calculateIrrigationUse(RiceWaterKi riceWaterKi, List rainfallList, + LocalDateTime startTime, LocalDateTime endTime) { + // 阶段用水量(从waterRqStage获取) + BigDecimal stageWaterUse = riceWaterKi.getWaterRqStage(); + if (stageWaterUse == null) { + stageWaterUse = BigDecimal.ZERO; + } + + // 计算有效降雨量 + BigDecimal effectiveRainfall = calculateEffectiveRainfall(rainfallList, startTime, endTime); + + // 灌溉用水量 = 阶段用水量 - 有效降雨量 + BigDecimal irrigationUse = stageWaterUse.subtract(effectiveRainfall); + + // 确保不会出现负值 + return irrigationUse; + } + + /** + * 计算阶段内的有效降雨量 + */ + private BigDecimal calculateEffectiveRainfall(List rainfallList, + LocalDateTime stageStartTime, LocalDateTime stageEndTime) { + BigDecimal totalEffectiveRainfall = BigDecimal.ZERO; + + // 获取阶段跨越的月份 + Set months = LocalDateTimeUtils.getMonthsInPeriodSet(stageStartTime, stageEndTime); + + for (Integer month : months) { + BigDecimal monthlyRainfall = getMonthlyRainfall(rainfallList, month, stageStartTime, stageEndTime); + totalEffectiveRainfall = totalEffectiveRainfall.add(monthlyRainfall); + } + + return totalEffectiveRainfall; + } + + /** + * 从降雨资料中获取指定月份的降雨量,并根据阶段实际使用天数进行调整 + */ + private BigDecimal getMonthlyRainfall(List rainfallList, int month, + LocalDateTime stageStartTime, LocalDateTime stageEndTime) { + if (rainfallList == null || stageStartTime == null || stageEndTime == null) { + return BigDecimal.ZERO; + } + + // 获取原始月降雨量 + BigDecimal originalRainfall = rainfallList.stream() + .filter(rainfall -> rainfall.getMonth() != null && rainfall.getMonth() == month) + .findFirst() + .map(TyYearRainfall::getDrp) + .orElse(BigDecimal.ZERO); + + // 计算阶段在该月份的实际使用天数 + int daysInMonth = LocalDateTimeUtils.calculateDaysInMonthForPeriod(stageStartTime, stageEndTime, month); + int totalDaysInMonth = LocalDateTimeUtils.getTotalDaysInMonth(stageStartTime.getYear(), month); + + if (daysInMonth > 0 && totalDaysInMonth > 0) { + // 按实际使用天数比例计算有效降雨量 + return originalRainfall + .multiply(BigDecimal.valueOf(daysInMonth)) + .divide(BigDecimal.valueOf(totalDaysInMonth), 2, RoundingMode.HALF_UP); + } + + return BigDecimal.ZERO; + } + + public RiceRqWaterCaculateVo caculate(RiceWaterCaculateDto dto) { + //先计算阶段耗水量 + RiceGrowConfig riceGrowConfig = dto.getRiceGrowConfig(); + RiceRqWaterCaculateVo vo = new RiceRqWaterCaculateVo(); + List riceWaterKis = stageCaculate(dto); + dto.setRiceWaterKis(riceWaterKis); + //计算灌区水稻用水量-按月份 + List riceWaterForecastMonths = irrigationComprehensiveCaculateMonth(dto); + BigDecimal monthTotal = BigDecimal.ZERO; + for (RiceWaterForecastMonth riceWaterForecastMonth : riceWaterForecastMonths) { + monthTotal = monthTotal.add(riceWaterForecastMonth.getIrrigationUse()); +// riceWaterForecastMonth.setIrrigationUse(riceWaterForecastMonth.getIrrigationUse().setScale(2,RoundingMode.HALF_UP)); + } + riceGrowConfig.setIrrigationUse(monthTotal); + //计算灌区水稻用水量-按周期 + List riceWaterForecastCycles = irrigationComprehensiveCaculateCycle(dto); + BigDecimal cycleTotal = BigDecimal.ZERO; + for (RiceWaterForecastCycle riceWaterForecastCycle : riceWaterForecastCycles) { + cycleTotal = cycleTotal.add(riceWaterForecastCycle.getIrrigationUse()); +// riceWaterForecastCycle.setIrrigationUse(riceWaterForecastCycle.getIrrigationUse().setScale(2,RoundingMode.HALF_UP)); + } + monthTotal = cycleTotal; + vo.setIrrigationMonthTotalUse(monthTotal.setScale(2,RoundingMode.HALF_UP)); + vo.setIrrigationCycleTotalUse(cycleTotal.setScale(2,RoundingMode.HALF_UP)); + vo.setRiceWaterKis(riceWaterKis); + vo.setRiceWaterForecastMonths(riceWaterForecastMonths); + vo.setRiceWaterForecastCycles(riceWaterForecastCycles); + vo.setRiceGrowConfig(riceGrowConfig); + return vo; + + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/RiceSupportBalanceDetailService.java b/src/main/java/com/gunshi/project/ss/service/RiceSupportBalanceDetailService.java new file mode 100644 index 0000000..2d0ab3d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiceSupportBalanceDetailService.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.RiceSupportBalanceDetailMapper; +import com.gunshi.project.ss.model.RiceSupportBalanceDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiceSupportBalanceDetailService extends ServiceImpl { + public List selectByRCId(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceSupportBalanceDetail::getRiceSupportId,id); + return this.baseMapper.selectList(queryWrapper); + } + + public void delByRcId(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceSupportBalanceDetail::getRiceSupportId,id); + baseMapper.delete(queryWrapper); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/RiceSupportBalanceService.java b/src/main/java/com/gunshi/project/ss/service/RiceSupportBalanceService.java new file mode 100644 index 0000000..59b7667 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiceSupportBalanceService.java @@ -0,0 +1,405 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.StRsvrRReal; +import com.gunshi.project.ss.entity.RiceSupportMidCaculate; +import com.gunshi.project.ss.entity.dto.RiceSupportBalanceCaculateDto; +import com.gunshi.project.ss.entity.so.RiceSupportBalanceCaculateIcPageSo; +import com.gunshi.project.ss.entity.so.RiceSupportBalanceCaculatePageSo; +import com.gunshi.project.ss.entity.so.RiceSupportBalanceCaculateRcPageSo; +import com.gunshi.project.ss.entity.vo.TyYearRainfallVo; +import com.gunshi.project.ss.mapper.RiceSupportBalanceMapper; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.LocalDateTimeUtils; +import lombok.extern.slf4j.Slf4j; +import org.jodconverter.core.util.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiceSupportBalanceService extends ServiceImpl { + + @Autowired + private RiceRqWaterService riceRqWaterService; + + @Autowired + private RiceSupportBalanceDetailService riceSupportBalanceDetailService; + + @Autowired + private IcWaterForecastService icWaterForecastService; + + @Autowired + private AttResBaseService attResBaseService; //水库站点 + + @Autowired + private StZvarlBService stZvarlBService;//库容曲线 + + @Autowired + private StRsvrRRealService stRsvrRRealService; + + @Autowired + private TyYearRainfallService tyYearRainfallService;//降雨相似年资料 + + @Autowired + private IcWaterForecastDetailService icWaterForecastDetailService; + + @Autowired + private RiceGrowConfigService riceGrowConfigService; + + @Autowired + private RiceIrrigationUseService riceIrrigationUseService; + + @Autowired + private RiceWaterForecastCycleService riceWaterForecastCycleService; + + @Autowired + private RiceWaterForecastMonthService riceWaterForecastMonthService; + + @Autowired + private RiceWaterKiService riceWaterKiService; + + public AttResBase getAttResBase(){ + return attResBaseService.list().get(0); + } + + + public void caculateAndSave(RiceSupportBalanceCaculateDto dto) { + + if(dto.getEndTime().isBefore(dto.getStartTime())){ + throw new IllegalArgumentException("开始时间必须小于结束时间"); + } + RiceRqWater riceRqWater = riceRqWaterService.queryById(dto.getRqId()); + IcWaterForecast icWaterForecast = icWaterForecastService.queryById(dto.getIcId()); + //获取生态每天生态需水量(万m³) + BigDecimal dailyEcoWaterUse; + dailyEcoWaterUse = dto.getEcoQ().multiply(new BigDecimal("3600").multiply(new BigDecimal("24"))); + dailyEcoWaterUse = dailyEcoWaterUse.divide(new BigDecimal("10000"),2,RoundingMode.HALF_UP);//转为万m³ + List allDaysByStartAndEndTime = LocalDateTimeUtils.getAllDaysByStartAndEndTime(dto.getStartTime(), dto.getEndTime()); + LocalDateTime today = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0); + BigDecimal totalIcWater = BigDecimal.ZERO;//总来水量 + AttResBase attResBase = getAttResBase(); + String stcd = attResBase.getStcd();//获取站点编码 + //获取死水位 + BigDecimal deadLev = attResBase.getDeadLev(); + StRsvrRReal stRsvrRReal = stRsvrRRealService.getBaseMapper().queryRzByStcd(stcd); + List list = stZvarlBService.lambdaQuery().orderByAsc(StZvarlB::getRz).list(); + BigDecimal w = stZvarlBService.getWByZvarl(list, stRsvrRReal.getRz());//获取库容 + BigDecimal deadW = stZvarlBService.getWByZvarl(list, deadLev);//死水位库容 + Integer year = riceRqWater.getRiceGrowConfig().getYear();//获取相似年 + if(dto.getStartTime().isAfter(today)){ + //获取降雨相似年资料 + BigDecimal totalRainfallWater = BigDecimal.ZERO; + for (TyYearRainfallVo tyYearRainfallVo : tyYearRainfallService.queryList()) { + if (tyYearRainfallVo.getYear().equals(year)) { + List monthData = tyYearRainfallVo.getList(); + // 获取时间范围内的所有月份 + List months = LocalDateTimeUtils.getMonthsInPeriod(today, dto.getStartTime()); + for (Integer month : months) { + // 计算该月份在时间范围内的天数 + int daysInMonthForPeriod = LocalDateTimeUtils.calculateDaysInMonthForPeriod( + today, dto.getStartTime().minusDays(1), month + ); + if (daysInMonthForPeriod > 0) { + // 找到该月份的降雨资料 + for (TyYearRainfall monthDatum : monthData) { + if (monthDatum.getMonth().equals(month)) { + BigDecimal monthRainfall = monthDatum.getDrp(); + if (monthRainfall != null) { + int totalDaysInMonth = LocalDateTimeUtils.getTotalDaysInMonth( + today.getYear(), month + ); + // 该月份的平均日降雨量 + BigDecimal avgDailyRainfall = monthRainfall.divide( + new BigDecimal(totalDaysInMonth), 4, RoundingMode.HALF_UP + ); + // 该月份在时间范围内的总降雨量 + BigDecimal monthRainfallInPeriod = avgDailyRainfall.multiply( + new BigDecimal(daysInMonthForPeriod) + ); + + totalRainfallWater = totalRainfallWater.add(monthRainfallInPeriod); + } + break; + } + } + } + } + break; + } + } + // 总来水量 = 当前到开始时间的降雨来水量 + 方案来水(长期预测为万m³,短期预测为m³ 所以如果为短期,则需要进行÷10000 + BigDecimal currentToStartWater = totalRainfallWater; // 这里假设totalRainfallWater就是需要的来水量 + totalIcWater = totalIcWater.add(currentToStartWater).add(icWaterForecast.getType() == 0? icWaterForecast.getForecastWater(): icWaterForecast.getForecastWater().divide(new BigDecimal("10000"))); // 将当前到开始时间的来水量加入总来水量 + + }else{ + // 总来水量 = 当前蓄水量 + 来水方案中的来水 + BigDecimal forecastWater = icWaterForecast.getType() == 0? icWaterForecast.getForecastWater(): icWaterForecast.getForecastWater().divide(new BigDecimal("10000")); + totalIcWater = w.add(forecastWater); + } + BigDecimal totalNeedWater = BigDecimal.ZERO; + //获取总需水量(需水总量 + 每日生态用水量 * 天数) + totalNeedWater = riceRqWater.getReqWater().add(dailyEcoWaterUse.multiply(new BigDecimal(allDaysByStartAndEndTime.size()))).setScale(2,RoundingMode.HALF_UP); + //总计划供水量 + BigDecimal totalPlan; + if(totalIcWater.compareTo(totalNeedWater) > 0){ + //如果来水量大于需水量 + totalPlan = totalNeedWater; + }else{ + //总计划供水量 = (当前蓄水量 + 来水) - 死水位对应库容 + totalPlan = (w.add(totalIcWater)).subtract(deadW); + //如果计划供水大于了来水,那么计划供水就为来水 + totalPlan = totalPlan.compareTo(totalNeedWater) >=0?totalNeedWater:totalPlan; + } + /** + * 需要优先保障每日生态供水 + * 比如 + * 总需水8000,生态需水100,灌溉7900 来水+蓄水 = 7500 + * 那么 生态供水100,灌溉供水7400,并且每日灌溉供水按“(蓄水+来水)/需水”的比例进行等比缩放 + */ + //获取灌溉用水周期参数 + List riceWaterForecastCycles = riceRqWater.getRiceWaterForecastCycles(); + List riceSupportMidCaculates = fillData(riceWaterForecastCycles, riceRqWater.getRiceWaterKis()); + // 先计算总灌溉需水量 + BigDecimal totalIrrigationNeed = BigDecimal.ZERO; + for (RiceSupportMidCaculate caculate : riceSupportMidCaculates) { + if (caculate.getIrrigationUse() != null) { + totalIrrigationNeed = totalIrrigationNeed.add(caculate.getIrrigationUse()); + } + } + + //生态总用水量 + BigDecimal totalWaterForEco = dailyEcoWaterUse.multiply(new BigDecimal(allDaysByStartAndEndTime.size())); + // 如果来水量不足够供应所有生态用水和灌溉用水 + if(totalPlan.compareTo(totalNeedWater) <0){ + //如果生态用水都满足不了 + if(totalPlan.compareTo(totalWaterForEco) < 0){ + //调整生态用水量 + totalWaterForEco = totalPlan; // 实际生态供水量调整为可用的总量 + dailyEcoWaterUse = totalWaterForEco.divide( + new BigDecimal(allDaysByStartAndEndTime.size()),10,RoundingMode.HALF_UP); + } + } + // 计算灌溉用水的缩放比例 + BigDecimal irrigationRatio; + if (totalIrrigationNeed.compareTo(BigDecimal.ZERO) > 0) { + //总计划供水/总需水 + irrigationRatio = totalPlan.divide(totalNeedWater,3,RoundingMode.DOWN); + } else { + irrigationRatio = BigDecimal.ZERO; + } + //首先保存主表信息 + RiceSupportBalance riceSupportBalance = new RiceSupportBalance(); + riceSupportBalance.setRiceWaterId(dto.getRqId()); + riceSupportBalance.setIcWaterId(dto.getIcId()); + riceSupportBalance.setStartTime(dto.getStartTime()); + riceSupportBalance.setEndTime(dto.getEndTime()); + riceSupportBalance.setCreateTime(LocalDateTime.now()); +// riceSupportBalance.setTotalPlan(totalPlan);//实际供水量 +// riceSupportBalance.setTotalCost(totalNeedWater);//计划供水量 + riceSupportBalance.setCreateName(dto.getCreateName()); + riceSupportBalance.setStatus(0); + riceSupportBalance.setPlanName(dto.getPlanName()); + boolean save = this.save(riceSupportBalance); + // 创建final或effectively final的局部变量副本 + final Long mainId = riceSupportBalance.getId(); + final BigDecimal finalDailyEcoWaterUse = dailyEcoWaterUse; + final BigDecimal finalIrrigationRatio = irrigationRatio; + final List finalAllDays = new ArrayList<>(allDaysByStartAndEndTime); + final List finalRiceSupportMidCaculates = new ArrayList<>(riceSupportMidCaculates); + + // 在新线程中执行计算和保存 + //TODO 这样做会有事务问题(如果明细数据计算失败,那么会导致 只有主表数据,没有明细数据(当然也可以保持同步计算逻辑) + new Thread(() -> { + try { + List saveDetails = new ArrayList<>(); + for (LocalDateTime localDateTime : finalAllDays) { + RiceSupportBalanceDetail entity = new RiceSupportBalanceDetail(); + entity.setTm(localDateTime); + + // 查找当前日期属于哪个生长周期,计算灌溉需水量 + BigDecimal dailyIrrigationNeed = BigDecimal.ZERO; // 灌溉需水量 + for (RiceSupportMidCaculate caculate : finalRiceSupportMidCaculates) { + // 提取月份和日,忽略年份 + int currentMonth = localDateTime.getMonthValue(); + int currentDay = localDateTime.getDayOfMonth(); + + int startMonth = caculate.getStartTime().getMonthValue(); + int startDay = caculate.getStartTime().getDayOfMonth(); + + int endMonth = caculate.getEndTime().getMonthValue(); + int endDay = caculate.getEndTime().getDayOfMonth(); + + // 判断日期是否在周期内(只比较月日) + boolean isInCycle = false; + + if (startMonth < endMonth || (startMonth == endMonth && startDay <= endDay)) { + // 正常情况:开始月日 <= 结束月日(不跨年) + if ((currentMonth > startMonth || (currentMonth == startMonth && currentDay >= startDay)) && + (currentMonth < endMonth || (currentMonth == endMonth && currentDay <= endDay))) { + isInCycle = true; + } + } else { + // 跨年情况:开始月日 > 结束月日(如11月到次年2月) + if ((currentMonth > startMonth || (currentMonth == startMonth && currentDay >= startDay)) || + (currentMonth < endMonth || (currentMonth == endMonth && currentDay <= endDay))) { + isInCycle = true; + } + } + + if (isInCycle) { + // 计算该生长周期的天数 + int daysInCycle = LocalDateTimeUtils.calculateDaysIgnoringYear( + caculate.getStartTime(), + caculate.getEndTime() + ); + + if (daysInCycle > 0 && caculate.getIrrigationUse() != null) { + // 该生长周期每天的灌溉需水量 + dailyIrrigationNeed = caculate.getIrrigationUse() + .divide(new BigDecimal(daysInCycle),2,RoundingMode.DOWN); + } + break; + } + } + + // 设置灌溉需水量 + entity.setIrrigationUse(dailyIrrigationNeed); + + // 按比例计算灌溉计划供水量 + BigDecimal dailyIrrigationPlan = dailyIrrigationNeed.multiply(finalIrrigationRatio); + entity.setIrrigationPlan(dailyIrrigationPlan.setScale(2,RoundingMode.UP)); + + // 每日生态需水量 + entity.setEcoUse(finalDailyEcoWaterUse); + + // 每日生态计划供水量 + entity.setEcoPlan(finalDailyEcoWaterUse); + + // 设置主表关联ID + entity.setRiceSupportId(mainId); + saveDetails.add(entity); + } + + if(!saveDetails.isEmpty()){ + riceSupportBalanceDetailService.saveBatch(saveDetails); + } + BigDecimal finalTotalPlan = BigDecimal.ZERO; + BigDecimal finalTotalCost = BigDecimal.ZERO; + for (RiceSupportBalanceDetail saveDetail : saveDetails) { + finalTotalPlan = finalTotalPlan.add(saveDetail.getEcoPlan().add(saveDetail.getIrrigationPlan())); + finalTotalCost = finalTotalCost.add(saveDetail.getEcoUse().add(saveDetail.getIrrigationUse())); + } + riceSupportBalance.setTotalPlan(finalTotalPlan); + riceSupportBalance.setTotalCost(finalTotalCost); + riceSupportBalance.setStatus(1); + updateById(riceSupportBalance); + } catch (Exception e) { + riceSupportBalance.setStatus(2); + riceSupportBalance.setFailReason(e.getMessage()); + updateById(riceSupportBalance); + } + }).start(); + } + + + + public Page icPage(RiceSupportBalanceCaculateIcPageSo pageSo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.le(IcWaterForecast::getStartTime,pageSo.getStartTime()); + queryWrapper.ge(IcWaterForecast::getEndTime,pageSo.getEndTime()); + if(pageSo.getType() != null){ + queryWrapper.eq(IcWaterForecast::getType, pageSo.getType()); + } + if(!StringUtils.isBlank(pageSo.getIcplanName())){ + queryWrapper.like(IcWaterForecast::getPlanName, pageSo.getIcplanName()); + } + queryWrapper.orderByDesc(IcWaterForecast::getCreateTime); + Page icWaterForecastPage = icWaterForecastService.getBaseMapper().selectPage(pageSo.getPageSo().toPage(), queryWrapper); + for (IcWaterForecast record : icWaterForecastPage.getRecords()) { + List icWaterForecastDetails = icWaterForecastDetailService.listByForecastId(record.getId()); + record.setDetails(icWaterForecastDetails); + } + return icWaterForecastPage; + } + + public Page rcPage(RiceSupportBalanceCaculateRcPageSo pageSo) { + List yearByRangeDate = LocalDateTimeUtils.getYearByRangeDate(pageSo.getStartTime(), pageSo.getEndTime()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(pageSo.getRcplanName())){ + queryWrapper.like(RiceRqWater::getPlanName, pageSo.getRcplanName()); + } + queryWrapper.in(RiceRqWater::getYear, yearByRangeDate); + queryWrapper.orderByDesc(RiceRqWater::getCreateTime); + Page riceRqWaterPage = riceRqWaterService.getBaseMapper().selectPage(pageSo.getPageSo().toPage(), queryWrapper); + List records = riceRqWaterPage.getRecords(); + for (RiceRqWater record : records) { + //灌水定额配置 + record.setRiceWaterKis(riceWaterKiService.selectByRiceWaterId(record.getId())); + //水稻生长系数配置 + record.setRiceGrowConfig(riceGrowConfigService.selectByRiceWaterId(record.getId())); + //按月份 + record.setRiceWaterForecastMonths(riceWaterForecastMonthService.selectByRiceWaterId(record.getId())); + //按生长周期 + record.setRiceWaterForecastCycles(riceWaterForecastCycleService.selectByRiceWaterId(record.getId())); + } + return riceRqWaterPage; + } + + private List fillData(List riceWaterForecastCycles, List riceWaterKis){ + List res = new ArrayList<>(); + for (RiceWaterKi riceWaterKi : riceWaterKis) { + RiceSupportMidCaculate entity = new RiceSupportMidCaculate(); + entity.setStartTime(riceWaterKi.getStartTime()); + entity.setEndTime(riceWaterKi.getEndTime()); + entity.setName(riceWaterKi.getRiceGrowStage()); + //去riceWaterForecastCycles查询与riceWaterKi生长周期相同的数据,并设置他的灌溉用水量 + Optional matchingCycle = riceWaterForecastCycles.stream() + .filter(cycle -> cycle.getRiceGrowStage().equals(riceWaterKi.getRiceGrowStage())) + .findFirst(); + + if (matchingCycle.isPresent()) { + entity.setIrrigationUse(matchingCycle.get().getIrrigationUse()); + } else { + entity.setIrrigationUse(BigDecimal.ZERO); + } + res.add(entity); + } + return res; + } + + public Page queryPage(RiceSupportBalanceCaculatePageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(page.getPlanName())){ + queryWrapper.like(RiceSupportBalance::getPlanName, page.getPlanName()); + } + queryWrapper.orderByDesc(RiceSupportBalance::getCreateTime); + Page riceSupportBalancePage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + for (RiceSupportBalance record : riceSupportBalancePage.getRecords()) { + List details = riceSupportBalanceDetailService.selectByRCId(record.getId()); + for (RiceSupportBalanceDetail detail : details) { + detail.setDailyTotalUse(detail.getEcoUse().add(detail.getIrrigationUse())); + detail.setDailyTotalPlan(detail.getEcoPlan().add(detail.getIrrigationPlan())); + } + record.setDetails(details); + } + return riceSupportBalancePage; + } + + public boolean delData(Long id) { + riceSupportBalanceDetailService.delByRcId(id); + boolean flag = removeById(id); + return flag; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/RiceWaterForecastCycleService.java b/src/main/java/com/gunshi/project/ss/service/RiceWaterForecastCycleService.java new file mode 100644 index 0000000..1725857 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiceWaterForecastCycleService.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.RiceWaterForecastCycleMapper; +import com.gunshi.project.ss.model.RiceWaterForecastCycle; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 水稻水分预测周期 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiceWaterForecastCycleService extends ServiceImpl { + + public List selectByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceWaterForecastCycle::getRiceWaterId, riceWaterId); + queryWrapper.orderByAsc(RiceWaterForecastCycle::getOrder); + return this.baseMapper.selectList(queryWrapper); + } + + public void removeByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceWaterForecastCycle::getRiceWaterId, riceWaterId); + this.remove(queryWrapper); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/RiceWaterForecastMonthService.java b/src/main/java/com/gunshi/project/ss/service/RiceWaterForecastMonthService.java new file mode 100644 index 0000000..1589578 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiceWaterForecastMonthService.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.RiceWaterForecastMonthMapper; +import com.gunshi.project.ss.model.RiceWaterForecastMonth; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 水稻水分预测月份 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiceWaterForecastMonthService extends ServiceImpl { + + public List selectByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceWaterForecastMonth::getRiceWaterId, riceWaterId); + return this.baseMapper.selectList(queryWrapper); + } + + public void removeByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceWaterForecastMonth::getRiceWaterId, riceWaterId); + this.baseMapper.delete(queryWrapper); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/RiceWaterKiService.java b/src/main/java/com/gunshi/project/ss/service/RiceWaterKiService.java new file mode 100644 index 0000000..b82a154 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiceWaterKiService.java @@ -0,0 +1,34 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.RiceWaterKiMapper; +import com.gunshi.project.ss.model.RiceWaterKi; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 水稻水分需水模系数 + * author: xusan + * date: 2024-09-04 13:42:40 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiceWaterKiService extends ServiceImpl { + + public List selectByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceWaterKi::getRiceWaterId, riceWaterId); + return this.baseMapper.selectList(queryWrapper); + } + + public void removeByRiceWaterId(Long riceWaterId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RiceWaterKi::getRiceWaterId, riceWaterId); + this.baseMapper.delete(queryWrapper); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/service/RiskControlInfoService.java b/src/main/java/com/gunshi/project/ss/service/RiskControlInfoService.java new file mode 100644 index 0000000..eb7e79c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiskControlInfoService.java @@ -0,0 +1,109 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.so.AttCctvBasePage; +import com.gunshi.project.ss.mapper.RiskControlInfoMapper; +import com.gunshi.project.ss.model.BzDictRel; +import com.gunshi.project.ss.model.RiskControlInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 描述: 风险管控清单 + * author: xusan + * date: 2024-08-22 14:17:28 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiskControlInfoService extends ServiceImpl +{ + @Autowired + private FileAssociationsService fileService; + + @Autowired + private BzDictRelService bzDictRelService; + + public RiskControlInfo saveData(RiskControlInfo dto) { + dto.setId(IdWorker.getId()); + dto.setCreateDate(new Date()); + boolean result = this.save(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); +// bzDictRelService.saveRel(dto.getResult(),dto.getId(),getGroupId()); + } + return dto; + } + + public RiskControlInfo updateData(RiskControlInfo dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); +// bzDictRelService.updateRel(dto.getResult(),dto.getId(),getGroupId()); + } + return dto; + } + + public Boolean delData(Long id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); +// bzDictRelService.deleteRel(id); + } + return data; + } + + public String getGroupId() { + return "riskControlInfo"; + } + + public Page pageQuery(AttCctvBasePage page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getMenuId())) { + query.eq(RiskControlInfo::getMenuId, page.getMenuId()); + } + query.orderByDesc(RiskControlInfo::getCreateDate); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null && res.getRecords().size() > 0) { + fillAttach(res.getRecords()); +// fillRel(res.getRecords()); + } + return res; + } + + private void fillRel(List records) { + List ids = records.stream().map(RiskControlInfo::getId).collect(Collectors.toList()); + List relList = this.baseMapper.queryRelList(ids); + Map> map = relList.stream().collect(Collectors.groupingBy(BzDictRel::getBusinessId)); + for (RiskControlInfo record : records) { + record.setResult(map.get(record.getId())); + } + } + + private void fillAttach(List ret) { + for (RiskControlInfo record : ret) { + record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); + } + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/RiskControlMenuService.java b/src/main/java/com/gunshi/project/ss/service/RiskControlMenuService.java new file mode 100644 index 0000000..d8a5c75 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiskControlMenuService.java @@ -0,0 +1,91 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.RiskControlInfoMapper; +import com.gunshi.project.ss.mapper.RiskControlMenuMapper; +import com.gunshi.project.ss.model.RiskControlInfo; +import com.gunshi.project.ss.model.RiskControlMenu; +import com.gunshi.util.common.tree.TreeUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 风险管控目录 + * author: xusan + * date: 2024-08-22 14:16:35 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiskControlMenuService extends ServiceImpl +{ + + @Resource + private RiskControlInfoMapper riskControlInfoMapper; + + public RiskControlMenu saveData(RiskControlMenu dto) { + if (Objects.isNull(dto.getParentId())){ + dto.setParentId(0L); + } + dto.setId(IdWorker.getId()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("parent_id", dto.getParentId()); + queryWrapper.orderBy(true, false, "order_index"); + RiskControlMenu lastOne = super.getOne(queryWrapper, false); + int order = 0; + if (lastOne == null) { + order = 1; + } else { + order = lastOne.getOrderIndex() + 1; + } + dto.setOrderIndex(order); + this.save(dto); + return dto; + } + + public RiskControlMenu updateData(RiskControlMenu dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + this.updateById(dto); + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + Long count = this.lambdaQuery() + .eq(RiskControlMenu::getParentId, id) + .count(); + if(count > 0){ + throw new IllegalArgumentException("请先删除下级目录"); + } + //判断是否关联风险清单 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(RiskControlInfo::getMenuId,id); + if(riskControlInfoMapper.selectCount(wrapper) > 0){ + throw new IllegalArgumentException("请先删除关联的风险管控清单"); + } + return this.removeById(id); + } + + public List tree() { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.orderBy(true, true, RiskControlMenu::getOrderIndex); + List list = this.list(queryWrapper); + return TreeUtil.list2ListTree(list, 0L, RiskControlMenu::getId, RiskControlMenu::getParentId, RiskControlMenu::setChildren, null); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/RiverWaterService.java b/src/main/java/com/gunshi/project/ss/service/RiverWaterService.java new file mode 100644 index 0000000..cbadf86 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RiverWaterService.java @@ -0,0 +1,334 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.gunshi.project.ss.common.model.StPptnRReal; +import com.gunshi.project.ss.common.model.StRiverRReal; +import com.gunshi.project.ss.entity.so.DataQueryCommonSo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.mapper.AttResBaseMapper; +import com.gunshi.project.ss.mapper.StZqRMapper; +import com.gunshi.project.ss.mapper.StZqrlBMapper; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.DataHandleUtil; +import com.gunshi.project.ss.util.DateUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.stream.Collectors; + +/** + * Description: + * Created by wanyan on 2024/2/21 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class RiverWaterService { + + @Resource + private AttResBaseMapper attRvBaseMapper; + + @Resource + private StZqrlBMapper stZqrlBMapper; + + @Resource + private RainBasinDivisionService rainBasinDivisionService; + + @Resource + private AlarmSetService alarmSetService; + + @Resource + private StRiverRRealService stRiverRRealService; + + @Resource + private StZqRMapper stZqRMapper;//水位-流量关系 + + + public List getRiverStcd(){ + return attRvBaseMapper.getRiverStcd(); + } + + + public List list() { + List attRvBaseVos = attRvBaseMapper.queryWaterListUpAndLow(); + if(CollectionUtils.isEmpty(attRvBaseVos)){ + return attRvBaseVos; + } + for (AttRvBaseVo attRvBaseVo : attRvBaseVos) { + Date tm = attRvBaseVo.getTm(); + if(tm != null && DateUtil.hoursBetweenDate(tm,new Date()) > 24){ + attRvBaseVo.setStatus(0); + }else if (tm == null){ + attRvBaseVo.setStatus(0); + }else{ + attRvBaseVo.setStatus(1); + } + } + return attRvBaseVos; + } + + public List get(String stcd) { + List attRvBaseVos = attRvBaseMapper.queryWaterListByStcd(stcd); + if(CollectionUtils.isEmpty(attRvBaseVos)){ + return attRvBaseVos; + } + return attRvBaseVos; + } + + public List zqrl(String stcd) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(StZqrlB::getStcd, stcd).orderByAsc(StZqrlB::getPtno); + return stZqrlBMapper.selectList(queryWrapper); + } + + public BigDecimal getQByRz(List zqr,BigDecimal rz){ + // 1. 参数校验 + if (zqr == null || zqr.isEmpty()) { + throw new IllegalArgumentException("水位-流量关系列表不能为空"); + } + if (rz == null) { + throw new IllegalArgumentException("水位值不能为空"); + } + + // 2. 检查边界情况:如果目标水位低于最低水位或高于最高水位 + BigDecimal minRz = zqr.get(0).getZ(); + BigDecimal maxRz = zqr.get(zqr.size() - 1).getZ(); + if (rz.compareTo(minRz) < 0) { + // 低于最低水位,返回0流量 + return BigDecimal.ZERO; + } + if (rz.compareTo(maxRz) > 0) { + // 高于最高水位,返回0流量 + return BigDecimal.ZERO; + } + + // 3. 二分查找水位区间 + int l = 0; + int r = zqr.size() - 1; + + while (l <= r) { + int mid = l + (r - l) / 2; + BigDecimal midRz = zqr.get(mid).getZ(); + int compareResult = midRz.compareTo(rz); + + if (compareResult == 0) { + // 找到完全匹配的水位,直接返回对应的流量 + return zqr.get(mid).getQ(); + } else if (compareResult < 0) { + l = mid + 1; + } else { + r = mid - 1; + } + } + + /** + * 此时: + * l 指向第一个大于rz的位置 + * r 指向最后一个小于rz的位置 + * 即:r为 (x1, y1) - 下限水位和流量 + * l为 (x2, y2) - 上限水位和流量 + */ + if (l >= zqr.size() || r < 0) { + return BigDecimal.ZERO; + } + + // 获取前后相邻的两个点 + StZqR lowerPoint = zqr.get(r); + StZqR upperPoint = zqr.get(l); + + // 使用线性插值计算流量 + return linearInterpolation( + lowerPoint.getZ(), lowerPoint.getQ(), + upperPoint.getZ(), upperPoint.getQ(), + rz + ).setScale(3, RoundingMode.HALF_UP); + } + + /** + * 线性插值辅助方法(可以复用之前的) + * @param x1 已知点1的水位 + * @param y1 已知点1的流量 + * @param x2 已知点2的水位 + * @param y2 已知点2的流量 + * @param x 目标水位 + * @return 目标水位对应的流量 + */ + private BigDecimal linearInterpolation(BigDecimal x1, BigDecimal y1, + BigDecimal x2, BigDecimal y2, + BigDecimal x) { + // 使用公式: y = y1 + ( (y2 - y1) / (x2 - x1) ) * (x - x1) + + // 计算斜率: (y2 - y1) / (x2 - x1) + BigDecimal slope = y2.subtract(y1) + .divide(x2.subtract(x1), 10, RoundingMode.HALF_UP); + + // 计算: slope * (x - x1) + BigDecimal xDiff = x.subtract(x1); + BigDecimal product = slope.multiply(xDiff); + + // 计算最终结果: y1 + product + return y1.add(product); + } + + public List monitorData(DataQueryCommonSo dataQueryCommonSo) { + String stcd = dataQueryCommonSo.getStcd(); + //雨量数据 + List drpData = attRvBaseMapper.drp(dataQueryCommonSo); + //水位数据 + List rzData = attRvBaseMapper.rz(dataQueryCommonSo); + //获取水位流量关系,算出转换流量 + //List zqrl = zqrl(stcd); + List zqr = zqr(stcd); + if(CollectionUtils.isNotEmpty(zqr)){ + rzData.stream().forEach(o->{ + o.setQ(getQByRz(zqr,o.getZ())); + }); + } + //根据监测时间合并雨量和水位数据 + return bindData(stcd,drpData,rzData); + } + + private List bindData(String stcd, List drpData, List rzData) { + HashSet strings = new HashSet<>(); + drpData.stream().forEach(v1 -> strings.add(v1.getTm())); + rzData.stream().forEach(v1 -> strings.add(v1.getTm())); + + ArrayList result = new ArrayList<>(); + strings.stream().forEach(v1 -> result.add(AttRvMonitorVo.builder().stcd(stcd).tm(v1).build())); + + List list = result.stream().map(v1 -> { + drpData.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { + v1.setDrp(v2.getDrp()); + }); + + rzData.stream().filter(v2 -> v1.getTm().equals(v2.getTm())).forEach(v2 -> { + v1.setZ(v2.getZ()); + v1.setQ(v2.getQ()); + v1.setTq(v2.getTq()); + }); + + return v1; + }).collect(Collectors.toList()); + return list.stream().sorted(Comparator.comparing(AttRvMonitorVo::getTm).reversed()).collect(Collectors.toList()); + } + + private void calcTqData(List rzData, List zqrl) { + BigDecimal maxRz = zqrl.stream().max(Comparator.comparing(StZqrlB::getZ)).get().getZ(); + BigDecimal minRz = zqrl.stream().min(Comparator.comparing(StZqrlB::getZ)).get().getZ(); + Map map = zqrl.stream().collect(Collectors.toMap(StZqrlB::getZ, StZqrlB::getQ)); + List list = zqrl.stream().map(StZqrlB::getZ).collect(Collectors.toList()); + for(AttRvMonitorVo vo : rzData){ + BigDecimal rz = vo.getZ(); + if(rz.compareTo(minRz) < 0 || rz.compareTo(maxRz) > 0){ + continue; + } + vo.setTq(DataHandleUtil.calcData(rz,map,list)); + } + } + + + public AttRvMonitorDetailVo detail(String stcd) { + AttRvMonitorDetailVo vo = new AttRvMonitorDetailVo(); + StPptnDetailsVo stPptnDetailsVo = rainBasinDivisionService.queryStPptnDetailsByStcd(stcd); + BeanUtils.copyProperties(stPptnDetailsVo,vo,AttRvMonitorDetailVo.class); + + //最新水位 + AttRvMonitorVo monitorVo = attRvBaseMapper.newRz(stcd); + if(monitorVo == null){ + return vo; + } + Date tm = monitorVo.getTm(); + BigDecimal rz = monitorVo.getZ(); + + // 判断最新水位时间是否是今天 + LocalDateTime nowTime = LocalDateTime.now(); + LocalDateTime latestTime = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); + + // 检查是否同一天(年、月、日相同) + boolean isToday = latestTime.toLocalDate().equals(nowTime.toLocalDate()); + + if(isToday){ + //最新水位时间往前推24小时水位 + LocalDateTime now = LocalDateTime.ofInstant(tm.toInstant(), ZoneId.systemDefault()); + LocalDateTime dateTime = now.minusDays(1); + BigDecimal oldRz = attRvBaseMapper.oldRz(stcd,1,Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()),Date.from(now.atZone(ZoneId.systemDefault()).toInstant())); + + if(oldRz != null){ + vo.setRzDiff(rz.subtract(oldRz)); + } + }else{ + vo.setRzDiff(null); + } + + //本年最高水位 + BigDecimal maxYearRz = queryYearRzByStcdAndTime(stcd); + vo.setMaxRz(maxYearRz); + return vo; + } + + private BigDecimal queryYearRzByStcdAndTime(String stcd) { + LocalDateTime now = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()); + LocalDateTime startTime; + LocalDateTime endTime; + if (now.getHour() >= 8 || (now.getHour() < 8 && now.getMonthValue() > 1) || (now.getHour() < 8 && now.getMonthValue() == 1 && now.getDayOfMonth() >= 1)){ + startTime = LocalDateTime.of( + now.getYear(), + 1, + 1, + 8, + 0, + 0 + ); + endTime = now; + return attRvBaseMapper.queryRiverMaxRz(stcd,Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); + } + return new BigDecimal(0); + } + + public AttRiverNowDataVo nowData(String stcd) { + AttRiverNowDataVo vo = new AttRiverNowDataVo(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AlarmSet::getStcd,stcd); + AlarmSet alarmSet = alarmSetService.getBaseMapper().selectOne(queryWrapper);//查询该站点的警告水位配置信息 + if(alarmSet == null){ + vo.setWaterAlarm(BigDecimal.ZERO); + vo.setWaterPromise(BigDecimal.ZERO); + }else{ + vo.setWaterAlarm(alarmSet.getWarnWaterLevel()); + vo.setWaterPromise(alarmSet.getPromiseWaterLevel()); + } + + StPptnRReal stPptnRReal = rainBasinDivisionService.queryStPptnRealByStcd(stcd);//查询该站点的实时降雨 + BeanUtils.copyProperties(stPptnRReal,vo); + + //查询该站点实时水位 + StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().queryQByStcd(stcd); + if(stRiverRReal == null){ + return vo; + } + BigDecimal z = stRiverRReal.getZ() == null ? BigDecimal.ZERO : stRiverRReal.getZ(); + vo.setRz(z); + vo.setWaterAlarmGap(z.subtract(vo.getWaterAlarm())); + vo.setWaterPromiseGap(z.subtract(vo.getWaterPromise())); + return vo; + } + + public List zqr(String stcd){ + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(StZqR::getStcd, stcd).orderByAsc(StZqR::getZ); + return stZqRMapper.selectList(queryWrapper); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/RotaLogService.java b/src/main/java/com/gunshi/project/ss/service/RotaLogService.java new file mode 100644 index 0000000..7eb9203 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RotaLogService.java @@ -0,0 +1,25 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.RotaLogPageSo; +import com.gunshi.project.ss.mapper.RotaLogMapper; +import com.gunshi.project.ss.model.RotaLog; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by wanyan on 2024/3/25 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class RotaLogService extends ServiceImpl { + + public Page queryPage(RotaLogPageSo rotaLogPageSo) { + return this.baseMapper.queryPage(rotaLogPageSo.getPageSo().toPage(),rotaLogPageSo); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/RotaService.java b/src/main/java/com/gunshi/project/ss/service/RotaService.java new file mode 100644 index 0000000..58a331b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/RotaService.java @@ -0,0 +1,103 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.core.dateformat.DateFormatString; +import com.gunshi.project.ss.entity.dto.RotaDto; +import com.gunshi.project.ss.entity.dto.RotaUserDto; +import com.gunshi.project.ss.entity.vo.RotaVo; +import com.gunshi.project.ss.mapper.RotaBMapper; +import com.gunshi.project.ss.model.RotaB; +import com.gunshi.project.ss.util.DateUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Description: + * Created by wanyan on 2024/3/25 + * + * @author wanyan + * @version 1.0 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class RotaService extends ServiceImpl { + + + public Map> query(String yearMonth) { + List list = this.baseMapper.query(yearMonth); + return list.stream().collect(Collectors.groupingBy(rota -> new SimpleDateFormat(DateFormatString.YYYY_MM_DD).format(rota.getRotaDate()))); + } + + public String editInfo(RotaDto RotaDto) { + Date rotaDate = RotaDto.getRotaDate(); + //先删除该日期的所有信息 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(RotaB::getRotaDate,rotaDate); + this.remove(queryWrapper); + if(RotaDto.getIsHoliday() != null && RotaDto.getIsHoliday() == 1){ + RotaB rotaB = new RotaB(); + BeanUtils.copyProperties(RotaDto,rotaB,RotaB.class); + rotaB.setId(IdWorker.getId()); + this.save(rotaB); + return "设为放假日成功"; + } + List userDtoList = RotaDto.getUserDtoList(); + List list = userDtoList.stream().map(o -> { + RotaB rotaB = new RotaB(); + rotaB.setId(IdWorker.getId()); + rotaB.setRotaDate(rotaDate); + rotaB.setIsHoliday(0); + rotaB.setRotaType(o.getRotaType()); + rotaB.setUserId(o.getUserId()); + return rotaB; + }).collect(Collectors.toList()); + this.saveBatch(list); + return "设置值班信息成功"; + } + + public List dateList(String rotaDate) { + return this.baseMapper.dateList(rotaDate); + } + + public Long checkPhone(String value){ + return this.baseMapper.queryUser(value); + } + + public void saveImportData(ArrayList successArrayList) { + List list = new ArrayList<>(); + for(RotaVo vo : successArrayList){ + Date stm = vo.getStm(); + Date etm = vo.getEtm(); + List dates = DateUtil.getDatesBetween(stm, etm); + dates.stream().forEach(str->{ + RotaB rotaB = new RotaB(); + rotaB.setId(IdWorker.getId()); + rotaB.setRotaDate(str); + rotaB.setIsHoliday(0); + rotaB.setRotaType(1); + rotaB.setUserId(vo.getLeaderUserId()); + list.add(rotaB); + + RotaB rota = new RotaB(); + rota.setId(IdWorker.getId()); + rota.setRotaDate(str); + rota.setIsHoliday(0); + rota.setRotaType(2); + rota.setUserId(vo.getDutyUserId()); + list.add(rota); + }); + } + this.saveOrUpdateBatch(list); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/SafetyAccidentRegService.java b/src/main/java/com/gunshi/project/ss/service/SafetyAccidentRegService.java new file mode 100644 index 0000000..86c7341 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SafetyAccidentRegService.java @@ -0,0 +1,109 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.so.CommonDataPageSo2; +import com.gunshi.project.ss.mapper.SafetyAccidentRegMapper; +import com.gunshi.project.ss.model.SafetyAccidentReg; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 安全事故登记 + * author: xusan + * date: 2024-08-21 15:44:55 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SafetyAccidentRegService extends ServiceImpl +{ + @Autowired + private FileAssociationsService fileService; + + public Page pageQuery(CommonDataPageSo2 page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getName())) { + query.like(SafetyAccidentReg::getName, page.getName()); + } + if (page.getDateSo() != null && page.getDateSo().getStart() != null) { + query.ge(SafetyAccidentReg::getAccidentDate, page.getDateSo().getStart()); + } + if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { + query.le(SafetyAccidentReg::getAccidentDate, page.getDateSo().getEnd()); + } + query.orderByDesc(SafetyAccidentReg::getAccidentDate); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List ret) { + for (SafetyAccidentReg record : ret) { + record.setAccidentPic(fileService.queryFileList(record.getId().toString(),getGroupId(),getPicType())); + record.setAccidentHandle(fileService.queryFileList(record.getId().toString(),getGroupId(),getHandleType())); + } + } + + public String getGroupId() { + return "safetyAccidentReg"; + } + + public SafetyAccidentReg saveData(SafetyAccidentReg dto) { + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + fileService.save(dto.getAccidentPic(), dto.getId().toString(), getGroupId(),getPicType()); + fileService.save(dto.getAccidentHandle(), dto.getId().toString(), getGroupId(),getHandleType()); + } + return dto; + } + + private String getHandleType() { + return "accidentHandle"; + } + + private String getPicType() { + return "accidentPic"; + } + + public SafetyAccidentReg updateData(SafetyAccidentReg dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.removeByBzIdAndType(dto.getId().toString(),getGroupId(),getPicType()); + fileService.save(dto.getAccidentPic(), dto.getId().toString(), getGroupId(),getPicType()); + fileService.removeByBzIdAndType(dto.getId().toString(),getGroupId(),getHandleType()); + fileService.save(dto.getAccidentHandle(), dto.getId().toString(), getGroupId(),getHandleType()); + } + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/SafetyCheckService.java b/src/main/java/com/gunshi/project/ss/service/SafetyCheckService.java new file mode 100644 index 0000000..376e762 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SafetyCheckService.java @@ -0,0 +1,96 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.so.CommonDataPageSo; +import com.gunshi.project.ss.mapper.SafetyCheckMapper; +import com.gunshi.project.ss.model.SafetyCheck; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 安全检查管理 + * author: wanyan + * date: 2024-08-21 10:40:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SafetyCheckService extends ServiceImpl { + + @Autowired + private FileAssociationsService fileService; + + public Page pageQuery(CommonDataPageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getName())) { + query.like(SafetyCheck::getName, page.getName()); + } + if (page.getDateSo() != null && page.getDateSo().getStart() != null) { + query.ge(SafetyCheck::getCheckDate, page.getDateSo().getStart()); + } + if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { + query.le(SafetyCheck::getCheckDate, page.getDateSo().getEnd()); + } + query.orderByDesc(SafetyCheck::getCheckDate); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List ret) { + for (SafetyCheck record : ret) { + record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); + } + } + + public String getGroupId() { + return "safetyCheck"; + } + + public SafetyCheck saveData(SafetyCheck dto) { + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public SafetyCheck updateData(SafetyCheck dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/SafetyHazardInvestService.java b/src/main/java/com/gunshi/project/ss/service/SafetyHazardInvestService.java new file mode 100644 index 0000000..4a6268b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SafetyHazardInvestService.java @@ -0,0 +1,96 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +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.gunshi.project.ss.entity.so.CommonDataPageSo; +import com.gunshi.project.ss.mapper.SafetyHazardInvestMapper; +import com.gunshi.project.ss.model.SafetyHazardInvest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 安全隐患排查 + * author: wanyan + * date: 2024-08-21 10:40:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SafetyHazardInvestService extends ServiceImpl { + + @Autowired + private FileAssociationsService fileService; + + public Page pageQuery(CommonDataPageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if (ObjectUtils.isNotNull(page.getName())) { + query.like(SafetyHazardInvest::getHazardDesc, page.getName()); + } + if (page.getDateSo() != null && page.getDateSo().getStart() != null) { + query.ge(SafetyHazardInvest::getHazardDate, page.getDateSo().getStart()); + } + if (page.getDateSo() != null && page.getDateSo().getEnd() != null) { + query.le(SafetyHazardInvest::getHazardDate, page.getDateSo().getEnd()); + } + query.orderByDesc(SafetyHazardInvest::getHazardDate); + Page res = this.page(page.getPageSo().toPage(), query); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List ret) { + for (SafetyHazardInvest record : ret) { + record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); + } + } + + public String getGroupId() { + return "safetyHazardInvest"; + } + + public SafetyHazardInvest saveData(SafetyHazardInvest dto) { + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public SafetyHazardInvest updateData(SafetyHazardInvest dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/SafetyIdentifyService.java b/src/main/java/com/gunshi/project/ss/service/SafetyIdentifyService.java new file mode 100644 index 0000000..cd8ed50 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SafetyIdentifyService.java @@ -0,0 +1,86 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +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.gunshi.db.dto.PageSo; +import com.gunshi.project.ss.mapper.SafetyIdentifyMapper; +import com.gunshi.project.ss.model.SafetyIdentify; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 安全鉴定台账 + * author: xusan + * date: 2024-08-21 14:45:44 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SafetyIdentifyService extends ServiceImpl +{ + + @Autowired + private FileAssociationsService fileService; + + public Page pageQuery(PageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + query.orderByDesc(SafetyIdentify::getIdentifyDate); + Page res = this.page(page.toPage(), query); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List ret) { + for (SafetyIdentify record : ret) { + record.setFiles(fileService.getFiles(getGroupId(), String.valueOf(record.getId()))); + } + } + + public String getGroupId() { + return "safetyIdentify"; + } + + public SafetyIdentify saveData(SafetyIdentify dto) { + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public SafetyIdentify updateData(SafetyIdentify dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/SafetyReinforcementService.java b/src/main/java/com/gunshi/project/ss/service/SafetyReinforcementService.java new file mode 100644 index 0000000..05db3c1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SafetyReinforcementService.java @@ -0,0 +1,86 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +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.gunshi.db.dto.PageSo; +import com.gunshi.project.ss.mapper.SafetyReinforcementMapper; +import com.gunshi.project.ss.model.SafetyReinforcement; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Objects; + +/** + * 描述: 除险加固台账 + * author: xusan + * date: 2024-08-22 11:27:44 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SafetyReinforcementService extends ServiceImpl +{ + + @Autowired + private FileAssociationsService fileService; + + public Page pageQuery(PageSo page) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + query.orderByDesc(SafetyReinforcement::getStartDate); + Page res = this.page(page.toPage(), query); + if (res.getRecords() != null) { + fillAttach(res.getRecords()); + } + return res; + } + + private void fillAttach(List ret) { + for (SafetyReinforcement record : ret) { + record.setFiles(fileService.getFiles(getGroupId(), record.getId().toString())); + } + } + + public String getGroupId() { + return "safetyReinforcement"; + } + + public SafetyReinforcement saveData(SafetyReinforcement dto) { + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return dto; + } + + public SafetyReinforcement updateData(SafetyReinforcement dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + fileService.saveFile(dto.getFiles(), getGroupId(), dto.getId().toString()); + } + return dto; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/ShpPlacementService.java b/src/main/java/com/gunshi/project/ss/service/ShpPlacementService.java new file mode 100644 index 0000000..3af44d2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ShpPlacementService.java @@ -0,0 +1,29 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.HomeShpPlacementVo; +import com.gunshi.project.ss.mapper.ShpPlacementMapper; +import com.gunshi.project.ss.model.ShpPlacement; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 安置点 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class ShpPlacementService extends ServiceImpl +{ + + public List getDetailsAndMonitoringDataLis() { + return baseMapper.getDetailsAndMonitoringDataList(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/SoilMoistureDataService.java b/src/main/java/com/gunshi/project/ss/service/SoilMoistureDataService.java new file mode 100644 index 0000000..be691e9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SoilMoistureDataService.java @@ -0,0 +1,119 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.gunshi.project.ss.entity.so.SoilMoisturePageSo; +import com.gunshi.project.ss.entity.vo.SoilMoistureVO; +import com.gunshi.project.ss.mapper.SoilMoistureDataMapper; +import com.gunshi.project.ss.model.SoilMoistureData; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.temporal.TemporalAdjusters; +import java.util.Objects; + +/** + * + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SoilMoistureDataService extends ServiceImpl { + + public Page pageQuery(SoilMoisturePageSo page) { + page.getPageSo().setPageSize(10000); + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + if(StringUtils.isNotBlank(page.getStcd())){ + query.eq(SoilMoistureData::getStcd,page.getStcd()); + } + if(Objects.nonNull(page.getDateRangeSo())){ + if(Objects.nonNull(page.getDateRangeSo().getStart())){ + query.ge(SoilMoistureData::getCreateTime, page.getDateRangeSo().getStart()); + } + if(Objects.nonNull(page.getDateRangeSo().getEnd())){ + query.le(SoilMoistureData::getCreateTime, page.getDateRangeSo().getEnd()); + } + } + query.orderByDesc(SoilMoistureData::getCreateTime); + Page res = this.page(page.getPageSo().toPage(), query); + return res; + } + + public SoilMoistureVO count(String stcd) { + SoilMoistureVO vo = new SoilMoistureVO(); + vo.setStcd(stcd); + LocalDate today = LocalDate.now(); + + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(SoilMoistureData::getStcd,stcd).orderByDesc(SoilMoistureData::getCreateTime).last(" limit 1"); + SoilMoistureData max = baseMapper.selectOne(qw); + SoilMoistureData min = new SoilMoistureData(); + vo.setCreateTime(max.getCreateTime()); + vo.setCurrVal(Objects.nonNull(max)? max.getVal(): null); + + max = findMaxByRang(today, today.minusWeeks(1), stcd); + min = findMinByRang(today, today.minusWeeks(1), stcd); + vo.setNearWeekValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearWeekValMin(Objects.nonNull(min)? min.getVal(): null); + + max = findMaxByRang(today, today.minusMonths(1), stcd); + min = findMinByRang(today, today.minusMonths(1), stcd); + vo.setNearMonthValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearMonthValMin(Objects.nonNull(min)? min.getVal(): null); + + max = findMaxByRang(today, today.minusMonths(3), stcd); + min = findMinByRang(today, today.minusMonths(3), stcd); + vo.setNearThreeMonthValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearThreeMonthValMin(Objects.nonNull(min)? min.getVal(): null); + + max = findMaxByRang(today, today.minusMonths(6), stcd); + min = findMinByRang(today, today.minusMonths(6), stcd); + vo.setNearSixMonthValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearSixMonthValMin(Objects.nonNull(min)? min.getVal(): null); + + max = findMaxByRang(today, today.minusYears(1), stcd); + min = findMinByRang(today, today.minusYears(1), stcd); + vo.setNearYearValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setNearYearValMin(Objects.nonNull(min)? min.getVal(): null); + + max = findMaxByRang(today, today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)), stcd); + min = findMinByRang(today, today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)), stcd); + vo.setCurrWeekValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setCurrWeekValMin(Objects.nonNull(min)? min.getVal(): null); + + max = findMaxByRang(today, today.withDayOfMonth(1), stcd); + min = findMinByRang(today, today.withDayOfMonth(1), stcd); + vo.setCurrMonthValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setCurrMonthValMin(Objects.nonNull(min)? min.getVal(): null); + + max = findMaxByRang(today, today.withDayOfYear(1), stcd); + min = findMinByRang(today, today.withDayOfYear(1), stcd); + vo.setCurrYearValMax(Objects.nonNull(max)? max.getVal(): null); + vo.setCurrYearValMin(Objects.nonNull(min)? min.getVal(): null); + return vo; + } + + public SoilMoistureData findMaxByRang(LocalDate now, LocalDate startDate, String stcd){ + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(SoilMoistureData::getStcd,stcd); + qw.le(SoilMoistureData::getCreateTime,now); + qw.ge(SoilMoistureData::getCreateTime,startDate).orderByDesc(SoilMoistureData::getVal).last(" limit 1"); + return baseMapper.selectOne(qw); + } + + public SoilMoistureData findMinByRang(LocalDate now, LocalDate startDate, String stcd){ + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(SoilMoistureData::getStcd,stcd); + qw.le(SoilMoistureData::getCreateTime,now); + qw.ge(SoilMoistureData::getCreateTime,startDate).orderByAsc(SoilMoistureData::getVal).last(" limit 1"); + return baseMapper.selectOne(qw); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/SoilMoistureStationService.java b/src/main/java/com/gunshi/project/ss/service/SoilMoistureStationService.java new file mode 100644 index 0000000..3fb8a29 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SoilMoistureStationService.java @@ -0,0 +1,22 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.SoilMoistureStationMapper; +import com.gunshi.project.ss.model.SoilMoistureStation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: APP版本记录 + * author: xusan + * date: 2024-11-12 10:14:50 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SoilMoistureStationService extends ServiceImpl { + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StAddvcdDService.java b/src/main/java/com/gunshi/project/ss/service/StAddvcdDService.java new file mode 100644 index 0000000..0c4a1fe --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StAddvcdDService.java @@ -0,0 +1,115 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.StAddvcdTreeVo; +import com.gunshi.project.ss.mapper.StAddvcdDMapper; +import com.gunshi.project.ss.model.StAddvcdD; +import com.gunshi.project.ss.util.MyBeanUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 描述: 行政区划表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StAddvcdDService extends ServiceImpl +{ + + public List tree(String level) { + List treeList = new ArrayList<>(); + //根据adcd模糊查询得到所有的行政区划 + List list = this.baseMapper.selectList(new LambdaQueryWrapper<>()); + List totalList = MyBeanUtil.collectionCopy(list, StAddvcdTreeVo.class); + //根据adcd查询行政区划信息 + StAddvcdD stAddvcdD = this.baseMapper.selectByAdcd("421181000000000"); + StAddvcdTreeVo stAddvcdTreeVo = new StAddvcdTreeVo(); + BeanUtils.copyProperties(stAddvcdD, stAddvcdTreeVo); + if ("1".equals(level)) { + treeList.add(stAddvcdTreeVo); + //当下拉深度为2时 + } else if ("2".equals(level)) { + List towns = new ArrayList<>(); + //遍历所有的行政区划 + for (StAddvcdTreeVo total : totalList) { + //后6位都是0并且6到9位不是0时为乡镇 + if ("000000".equals(total.getAdcd().substring(9)) && !"000".equals(total.getAdcd().substring(6, 9))) { + towns.add(total); + } + } + stAddvcdTreeVo.setChildren(towns); + treeList.add(stAddvcdTreeVo); + //当下拉深度为3时 + }else if("3".equals(level)){ + List towns = new ArrayList<>(); + //遍历所有的行政区划 + for (StAddvcdTreeVo total : totalList) { + //后6位都是0并且6到9位不是0时为乡镇 + if ("000000".equals(total.getAdcd().substring(9)) && !"000".equals(total.getAdcd().substring(6, 9))) { + towns.add(total); + } + } + //遍历镇 + for (StAddvcdTreeVo town : towns) { + List administrativeVillageList = new ArrayList<>(); + //遍历所有的行政区划 + for (StAddvcdTreeVo total : totalList) { + //当行政区划前9位相同并且后3位都为0并且9到12不为0时为同一乡镇下的行政村 + if (town.getAdcd().substring(0, 9).equals(total.getAdcd().substring(0, 9)) && "000".equals(total.getAdcd().substring(12)) && !"000".equals(total.getAdcd().substring(9, 12))) { + administrativeVillageList.add(total); + } + } + town.setChildren(administrativeVillageList); + } + stAddvcdTreeVo.setChildren(towns); + treeList.add(stAddvcdTreeVo); + }else{ + List towns = new ArrayList<>(); + //遍历所有的行政区划 + for (StAddvcdTreeVo total : totalList) { + //后6位都是0并且6到9位不是0时为乡镇 + if ("000000".equals(total.getAdcd().substring(9)) && !"000".equals(total.getAdcd().substring(6, 9))) { + towns.add(total); + } + } + //遍历镇 + for (StAddvcdTreeVo town : towns) { + List administrativeVillageList = new ArrayList<>(); + //遍历所有的行政区划 + for (StAddvcdTreeVo total : totalList) { + //当行政区划前9位相同并且后3位都为0并且9到12不为0时为同一乡镇下的行政村 + if (town.getAdcd().substring(0, 9).equals(total.getAdcd().substring(0, 9)) && "000".equals(total.getAdcd().substring(12)) && !"000".equals(total.getAdcd().substring(9, 12))) { + administrativeVillageList.add(total); + } + } + //遍历行政村 + for (StAddvcdTreeVo administrativeVillage : administrativeVillageList) { + List naturalVillages = new ArrayList<>(); + //遍历所有的行政区划 + for (StAddvcdTreeVo total : totalList) { + //行政区划前12为相同并且后3位不为0时为同一行政村下的自然组 + if (total.getAdcd().substring(0, 12).equals(administrativeVillage.getAdcd().substring(0, 12)) && !"000".equals(total.getAdcd().substring(12))) { + naturalVillages.add(total); + } + } + administrativeVillage.setChildren(naturalVillages); + } + town.setChildren(administrativeVillageList); + } + stAddvcdTreeVo.setChildren(towns); + treeList.add(stAddvcdTreeVo); + } + return treeList; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StEvpoService.java b/src/main/java/com/gunshi/project/ss/service/StEvpoService.java new file mode 100644 index 0000000..9459afc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StEvpoService.java @@ -0,0 +1,57 @@ +package com.gunshi.project.ss.service; + + +import cn.hutool.poi.excel.ExcelUtil; +import cn.hutool.poi.excel.ExcelWriter; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StEvpoMapper; +import com.gunshi.project.ss.model.StEvpo; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StEvpoService extends ServiceImpl { + public void export(HttpServletResponse response) { + List list = this.lambdaQuery().orderByAsc(StEvpo::getMonth).list(); + list.stream().forEach(o ->{ + o.setEvaporation(o.getEvaporation().setScale(2)); + }); + // 通过工具类创建writer + ExcelWriter writer = ExcelUtil.getWriter(); + + // 自定义标题别名(只包含需要导出的字段) + writer.addHeaderAlias("month", "月份"); + writer.addHeaderAlias("evaporation", "日蒸发量(万m³)"); + + // 只写出设置了别名的字段,默认写出所有字段 + writer.setOnlyAlias(true); + + // 一次性写出内容,使用默认样式 + writer.write(list, true); + + // 设置响应内容类型 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + + try { + // 设置响应头信息 + String fileName = URLEncoder.encode("蒸发量数据", "UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); + + // 将writer对象刷新到响应输出流中 + writer.flush(response.getOutputStream(), true); + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭writer,释放内存 + writer.close(); + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/StFlowRService.java b/src/main/java/com/gunshi/project/ss/service/StFlowRService.java new file mode 100644 index 0000000..fbf02a9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StFlowRService.java @@ -0,0 +1,45 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StFlowRMapper; +import com.gunshi.project.ss.common.model.StFlowR; +import com.gunshi.project.ss.entity.vo.StFlowRVo; +import com.gunshi.project.ss.mapper.StFlowRVoMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StFlowRService extends ServiceImpl { + + @Autowired + private StFlowRVoMapper voMapper; + + public StFlowR getNewDataByStcd(String stcd) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StFlowR::getStcd, stcd); + queryWrapper.orderByDesc(StFlowR::getTm); + queryWrapper.last("limit 1"); + return baseMapper.selectOne(queryWrapper); + } + + public List listNewData() { + return this.baseMapper.listNewData(); + } + + public List getStcdList() { + return voMapper.listStcds(); + } + + public List getDataByStcdAndTm(String stcd, Date tm) { + return voMapper.getDataByStcdAndTm(stcd, tm); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/StImgRRealService.java b/src/main/java/com/gunshi/project/ss/service/StImgRRealService.java new file mode 100644 index 0000000..87ffe42 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StImgRRealService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StImgRRealMapper; +import com.gunshi.project.ss.model.StImgRReal; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 图像表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StImgRRealService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StImgRService.java b/src/main/java/com/gunshi/project/ss/service/StImgRService.java new file mode 100644 index 0000000..e03b395 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StImgRService.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.service; + +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StImgRMapper; +import com.gunshi.project.ss.model.StImgR; + +import lombok.extern.slf4j.Slf4j; + +/** + * 描述: 图像历史表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StImgRService extends ServiceImpl +{ + + public List getStcdLastImgData() { + return baseMapper.getStcdLastImgData(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StImgWarnRService.java b/src/main/java/com/gunshi/project/ss/service/StImgWarnRService.java new file mode 100644 index 0000000..4cd33ae --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StImgWarnRService.java @@ -0,0 +1,28 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.ImgWarnPageSo; +import com.gunshi.project.ss.mapper.StImgWarnRMapper; +import com.gunshi.project.ss.model.StImgWarnR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: AI告警表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StImgWarnRService extends ServiceImpl +{ + + public Page pageQuery(ImgWarnPageSo imgWarnPageSo) { + return this.baseMapper.pageQuery(imgWarnPageSo.getPageSo().toPage(),imgWarnPageSo); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StPptnRDService.java b/src/main/java/com/gunshi/project/ss/service/StPptnRDService.java new file mode 100644 index 0000000..a14f2e0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StPptnRDService.java @@ -0,0 +1,109 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StPptnRDMapper; +import com.gunshi.project.ss.model.StPptnRD; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StPptnRDService extends ServiceImpl +{ + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + @Autowired + private StPptnRService stPptnRService; + + public List getStcdLastPptnDayData() { + return baseMapper.getStcdLastPptnDayData(); + } + + + public void reorganizeStPptnRD(List stcdList, String startDateStr) { + List dList = new ArrayList<>(); + try { + for (String stcd : stcdList) { + List> pptnRDataList = stPptnRService.getPptnRDataList(stcd, startDateStr); + Map pptnrMap = pptnRDataList.stream().collect(Collectors.toMap(map -> (String) map.get("tm"), map -> map.get("drp"))); + for (int i = pptnRDataList.size() - 1; i >= 0; i--) { + Map stringObjectMap = pptnRDataList.get(i); + String tm = stringObjectMap.get("tm").toString(); + Date nowTm = sdf.parse(tm); + String drp = stringObjectMap.get("drp").toString(); + StPptnRD stPptnRD = new StPptnRD(); + stPptnRD.setStcd(stcd); + stPptnRD.setTm(nowTm); + stPptnRD.setDrp(new BigDecimal(drp)); + stPptnRD.setYear(Integer.parseInt(tm.substring(0, 4))); + Calendar calendar = Calendar.getInstance(); + // 当前时间往前推一天,查看是否是降雨 + calendar.setTime(nowTm); + calendar.add(Calendar.DAY_OF_MONTH, -1); + // 如果昨天存在数据 + String lastTm = sdf.format(calendar.getTime()); + if (pptnrMap.containsKey(lastTm)) { + String lastDrp = pptnrMap.get(lastTm).toString(); + String lastDayIsdrp = BigDecimal.ZERO.compareTo(new BigDecimal(lastDrp)) == 0 ? "0" : "1"; + stPptnRD.setLastDayIsdrp(lastDayIsdrp); + // 已经往前推过一天了,从1开始 + int j = 1; + Boolean isContinue = true; + // 一直往前推 + while (isContinue){ + calendar.add(Calendar.DAY_OF_MONTH, -1); + String lastContinueTm = sdf.format(calendar.getTime()); + if(!pptnrMap.containsKey(lastContinueTm)){ + isContinue = false; + } else { + String beforeDrp = pptnrMap.get(lastContinueTm).toString(); + if (("0".equals(lastDayIsdrp) && BigDecimal.ZERO.compareTo(new BigDecimal(beforeDrp)) == 0) || ("1".equals(lastDayIsdrp) && BigDecimal.ZERO.compareTo(new BigDecimal(beforeDrp)) != 0)) { + j++; + } else { + isContinue = false; + } + } + } + stPptnRD.setIsdrpCount(j); + } else { + stPptnRD.setLastDayIsdrp("2"); + stPptnRD.setIsdrpCount(0); + } + dList.add(stPptnRD); + } + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + saveBatch(dList); + } + + public StPptnRD getMaxData(String stcd) { + return baseMapper.getMaxData(stcd); + } + + public List reorganizePptnRDData(String stcd, StPptnRD maxData) { + return baseMapper.reorganizePptnRDData(stcd, maxData); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StPptnRHService.java b/src/main/java/com/gunshi/project/ss/service/StPptnRHService.java new file mode 100644 index 0000000..40f0846 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StPptnRHService.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StPptnRHMapper; +import com.gunshi.project.ss.model.StPptnRH; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 描述: 降雨量小时表 + * author: cxw + * date: 2024-09-02 09:34:31 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StPptnRHService extends ServiceImpl +{ + + public List reorganizePptnRHData(String stcd, StPptnRH maxData) { + return baseMapper.reorganizePptnRHData(stcd, maxData); + } + + public StPptnRH getMaxData(String stcd) { + return baseMapper.getMaxData(stcd); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StPptnRRealService.java b/src/main/java/com/gunshi/project/ss/service/StPptnRRealService.java new file mode 100644 index 0000000..5925c05 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StPptnRRealService.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StPptnRRealMapper; +import com.gunshi.project.ss.common.model.StPptnRReal; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * 描述: 降水量历史表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StPptnRRealService extends ServiceImpl +{ + + public int updatePptnRReal(String stcd) { + return baseMapper.updatePptnRReal(stcd); + } + + public List queryList() { + List stPptnRReals = this.baseMapper.queryList(); + + if(!stPptnRReals.isEmpty()){ + Calendar now = Calendar.getInstance(); + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + now.set(Calendar.MILLISECOND, 0); + Date currentHour = now.getTime(); + for (StPptnRReal stPptnRReal : stPptnRReals) { + Date tm = stPptnRReal.getTm(); + if(tm != null && tm.before(currentHour)){ + stPptnRReal.setH1(null); + stPptnRReal.setH3(null); + stPptnRReal.setH6(null); + stPptnRReal.setH12(null); + stPptnRReal.setH24(null); + } + } + } + return stPptnRReals; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StPptnRService.java b/src/main/java/com/gunshi/project/ss/service/StPptnRService.java new file mode 100644 index 0000000..aa7a758 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StPptnRService.java @@ -0,0 +1,62 @@ +package com.gunshi.project.ss.service; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StPptnRMapper; +import com.gunshi.project.ss.common.model.StPptnR; + +import lombok.extern.slf4j.Slf4j; + +/** + * 描述: 降水量表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StPptnRService extends ServiceImpl +{ + + public List getStcdLastPptnData() { + return baseMapper.getStcdLastPptnData(); + } + + public List> getPptnRDataList(String stcd, String tm) { + return baseMapper.getPptnRDataList(stcd, tm); + } + + public List> getPptnRDataListByTask(String resCode, String stcd, String tm) { + return baseMapper.getPptnRDataListByTask(resCode, stcd, tm); + } + + public List getStcdFirstPptnData() { + return baseMapper.getStcdFirstPptnData(); + } + + public List getNewestDataOfEachStcd() { + return baseMapper.getNewestDataOfEachStcd(); + } + + /** + * 根据stcd查询24小时总降水量 + */ + public BigDecimal getdrp24SumByStcd(String stcd) { + return baseMapper.getdrp24SumByStcd(stcd); + } + + /** + * 根据stcd查询24小时内最大降水量 + */ + public StPptnR getdrp24MaxByStcd(String stcd) { + return baseMapper.getdrp24MaxByStcd(stcd); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StQxWarnRService.java b/src/main/java/com/gunshi/project/ss/service/StQxWarnRService.java new file mode 100644 index 0000000..9b97a45 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StQxWarnRService.java @@ -0,0 +1,311 @@ +package com.gunshi.project.ss.service; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.common.model.StRiverR; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.mapper.AttResBaseMapper; +import com.gunshi.project.ss.mapper.StQxWarnRMapper; +import com.gunshi.project.ss.model.*; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 气象预警表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StQxWarnRService extends ServiceImpl { + + @Value("${shqxjsWarnPath}") + private String shqxjsWarnPath; + + @Resource + private StImgWarnRService imgWarnRService; + + @Resource + private AttResBaseMapper attResBaseMapper; + + @Resource + private StRsvrRRealService stRsvrRRealService; + + @Resource + private AlarmSetService alarmSetService; + + @Resource + private StRiverRRealService stRiverRRealService; + + + @Resource + private StRiverRService stRiverRService; + + @Autowired + private ISCAIEventService iscaiEventService; + + @Resource + private JcskByRService jcskByRService; + + @Resource + private AttCctvBaseService attCctvBaseService; + + public HomeWarnVo homeWarn(DateTimeRangeSo dateTimeRangeSo) { + HomeWarnVo vo = new HomeWarnVo(); + + List attResBaseVos = attResBaseMapper.queryList2(); + + Map> skWarningVoMap = new HashMap<>(); + //超校核水位 + List cals = new ArrayList<>(); + //超设计水位 + List des = new ArrayList<>(); + //超汛限水位 + List fl = new ArrayList<>(); + for (AttResBaseVo attResBaseVo : attResBaseVos) { + Date tm = attResBaseVo.getTm(); + if(tm == null){ + continue; + } + //水位的最新采集时间不在24小时内 + if (tm.before(dateTimeRangeSo.getStart())) { + continue; + }else{ + BigDecimal rz = attResBaseVo.getRz(); + if(rz == null){ + continue; + } + SKWarningVo skWarningVo = new SKWarningVo(); + skWarningVo.setLttd(attResBaseVo.getLttd()); + skWarningVo.setLgtd(attResBaseVo.getLgtd()); + skWarningVo.setStnm(attResBaseVo.getStnm()); + skWarningVo.setStcd(attResBaseVo.getStcd()); + if (attResBaseVo.getCalState() == 1) { + BigDecimal aboveCal = rz.subtract(attResBaseVo.getCalFloodLev()); + skWarningVo.setRzWarn(rz + "(" + aboveCal.setScale(2, RoundingMode.HALF_EVEN) + ")" ); + cals.add(skWarningVo); + } else if (attResBaseVo.getDesState() == 1) { + BigDecimal aboveDes = rz.subtract(attResBaseVo.getDesFloodLev()); + skWarningVo.setRzWarn(rz + "(" + aboveDes.setScale(2, RoundingMode.HALF_EVEN) + ")" ); + des.add(skWarningVo); + } else if (attResBaseVo.getFlState() == 1) { + BigDecimal aboveFl = attResBaseVo.getAFsltdz().setScale(2, RoundingMode.HALF_UP); + skWarningVo.setRzWarn(rz + "(" + aboveFl.setScale(2, RoundingMode.HALF_UP) + ")" ); + fl.add(skWarningVo); + } + } + } + skWarningVoMap.put("calState", cals); + skWarningVoMap.put("desState",des); + skWarningVoMap.put("flState",fl); + vo.setSkWarningVoMap(skWarningVoMap); + List warnVos = baseMapper.queryOsmoticWarn(dateTimeRangeSo); + List pressWarn = warnVos.stream().filter(o -> o.getType() == 1).collect(Collectors.toList()); + pressWarn.stream().forEach(o ->{ + if(o.getLevel() != null){ + if(o.getLevel() == 1){ + o.setWarnLevel("黄色"); + }else{ + o.setWarnLevel("红色"); + } + } + }); + List flowWarn = warnVos.stream().filter(o -> o.getType() == 2).collect(Collectors.toList()); + flowWarn.stream().forEach(o->{ + if(o.getLevel() != null){ + if(o.getLevel() == 1){ + o.setWarnLevel("黄色"); + }else{ + o.setWarnLevel("红色"); + } + } + }); + List shiftWarn = warnVos.stream().filter(o -> o.getType() == 3).collect(Collectors.toList()); + shiftWarn.stream().forEach(o ->{ + if(o.getLevel() != null){ + if(o.getLevel() == 1){ + o.setWarnLevel("黄色"); + }else{ + o.setWarnLevel("红色"); + } + } + }); + Map> osmoticWarnMaps = new HashMap<>(); + osmoticWarnMaps.put("pressWarn",pressWarn); + osmoticWarnMaps.put("flowWarn",flowWarn); + osmoticWarnMaps.put("shiftWarn",shiftWarn); + vo.setOsmoticWarnVoMap(osmoticWarnMaps); + List iscaiEvents = iscaiEventService.lambdaQuery() + .ge(ISCAIEvent::getStartTime, dateTimeRangeSo.getStart()) + .le(ISCAIEvent::getStartTime, dateTimeRangeSo.getEnd()).orderByDesc(ISCAIEvent::getStartTime).list(); + List distinctResNames = iscaiEvents.stream() + .map(ISCAIEvent::getEventTypeName) + .filter(Objects::nonNull) // 过滤null值 + .distinct() // 去重 + .collect(Collectors.toList()); + Map> aiWarnVoMap = new HashMap<>(); + distinctResNames.forEach(resName -> { + aiWarnVoMap.put(resName, new ArrayList<>()); + }); + for (ISCAIEvent iscaiEvent : iscaiEvents) { + if(aiWarnVoMap.containsKey(iscaiEvent.getEventTypeName())){ + List aiWarningVos = aiWarnVoMap.get(iscaiEvent.getEventTypeName()); + List list = attCctvBaseService.lambdaQuery().eq(AttCctvBase::getIndexCode, iscaiEvent.getResIndexCode()).list(); + for (AttCctvBase attCctvBase : list) { + AiWarningVo aiWarningVo = new AiWarningVo(); + aiWarningVo.setWarningTime(iscaiEvent.getStartTime()); + aiWarningVo.setStnm(attCctvBase.getName()); + if(attCctvBase.getLgtd() !=null){ + aiWarningVo.setLgtd(new BigDecimal(attCctvBase.getLgtd())); + } + if(attCctvBase.getLttd() != null){ + aiWarningVo.setLttd(new BigDecimal(attCctvBase.getLttd())); + } + aiWarningVos.add(aiWarningVo); + + } + } + } + vo.setAiWarnVoMap(aiWarnVoMap); + Map> riverWarningVoMap = new HashMap<>(); + List overWarn = new ArrayList<>(); + List overPmis = new ArrayList<>(); + //TODO 超河道上游 + String upperStcd = "999999999";//固定的站点编码 + setUpAndDownOverRvUpAndDown(upperStcd,dateTimeRangeSo,overWarn,overPmis); + + //TODO 超河道下游 + String lowerStcd = "999999998";//固定的站点编码 + setUpAndDownOverRvUpAndDown(lowerStcd,dateTimeRangeSo,overWarn,overPmis); + riverWarningVoMap.put("overWarn",overWarn); + riverWarningVoMap.put("overPromise",overPmis); + vo.setRiverWarningVoMap(riverWarningVoMap); + return vo; + } + + private void setUpAndDownOverRvUpAndDown(String stcd, DateTimeRangeSo dateTimeRangeSo, List overWarn, List overPmis){ + StRiverR stRiverR = stRiverRService.getBaseMapper().queryByOneByTimeRange(stcd,dateTimeRangeSo); + RiverWarningVo riverWarningVo = new RiverWarningVo(); + if(stRiverR != null){ + riverWarningVo.setStcd(stcd); + riverWarningVo.setStnm(stRiverR.getStnm()); + riverWarningVo.setLgtd(stRiverR.getLgtd()); + riverWarningVo.setLgtd(stRiverR.getLgtd()); + AlarmSet alarmSet = alarmSetService.getBaseMapper().queryByStcd(stcd); + if(alarmSet == null){ + riverWarningVo.setRzWarn("告警设置未配置,请检查"); + }else{ + //警告水位 + BigDecimal warnWaterLevel = alarmSet.getWarnWaterLevel(); + //保证水位 + BigDecimal promiseWaterLevel = alarmSet.getPromiseWaterLevel(); + BigDecimal rz = stRiverR.getZ(); + if(rz == null){ + return; + } + if(rz.compareTo(warnWaterLevel) >=0 && rz.compareTo(promiseWaterLevel) <0){ + BigDecimal gap = rz.subtract(warnWaterLevel); + riverWarningVo.setRzWarn(gap.toString()); + overWarn.add(riverWarningVo); + }else if (rz.compareTo(promiseWaterLevel) >=0){ + BigDecimal gap = rz.subtract(warnWaterLevel); + riverWarningVo.setRzWarn(gap.toString()); + overPmis.add(riverWarningVo); + } + } + } + } + + + private List queryQxWarn() { + List list = new ArrayList<>(); + ApiVo apiVo = new ApiVo(); + apiVo.setFilter(Lists.newArrayList()); + ObjectMapper om = new ObjectMapper(); + HttpClient httpClient = HttpClientBuilder.create().build(); + HttpPost httpPost = new HttpPost(shqxjsWarnPath); + log.info("请求气象预警接口:{}", shqxjsWarnPath); + StringEntity stringEntity; + long start = System.currentTimeMillis(); + try { + String params = om.writeValueAsString(apiVo); + log.info("请求气象预警接口参数:{}", params); + stringEntity = new StringEntity(params, ContentType.APPLICATION_JSON); + httpPost.setEntity(stringEntity); + HttpResponse response = httpClient.execute(httpPost); + HttpEntity entity = response.getEntity(); + JSONObject dataObject = JSONUtil.parseObj(EntityUtils.toString(entity)); + JSONArray data = dataObject.getJSONArray("data"); + if (data == null) return list; + List dataList = data.toList(WarningData.class); + list = getList(dataList); + } catch (Exception e) { + e.printStackTrace(); + } + long end = System.currentTimeMillis(); + log.info("查询气象预警耗时:{} 秒", (end - start) / 1000); + return list; + } + + private List getList(List data) { + List respList = Lists.newArrayList(); + for (WarningData datum : data) {//最外层的列表 + String ctnm = datum.getEffectArea();//市级范围 + for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的 + // 预警类型 + String type = typeList.getType(); + List warnList = typeList.getWarnList(); + + for (WarningData.Warning warning : warnList) { + String cnnm = warning.getEffectArea(); + if("红安".equals(cnnm)){ + QXWarningVo vo = new QXWarningVo(); + String publishUnit = warning.getPublishUnit(); + vo.setCtnm(ctnm);//市级名称 + vo.setCnnm(cnnm);//县级名称 + vo.setPublishUnit(publishUnit);//发布单位 + vo.setPublishTime(warning.getPublishTime());//预警发布时间 + vo.setWarnSignalType(warning.getWarnSignalType());//预警类型 + vo.setWarnSignalLevel(warning.getWarnSignalLevel());//预警级别 + vo.setContent(warning.getContent());//预警内容 + vo.setWarnid(warning.getId()); + vo.setCreateTime(warning.getCreateTime()); + vo.setStartTime(warning.getStartTime()); + vo.setEndTime(warning.getEndTime()); + respList.add(vo); + } + + } + } + } + respList = respList.stream().filter(o -> "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); + respList = respList.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); + return respList.stream().sorted(Comparator.comparing(QXWarningVo::getPublishTime).reversed()) + .collect(Collectors.toList()); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StRiverRRealService.java b/src/main/java/com/gunshi/project/ss/service/StRiverRRealService.java new file mode 100644 index 0000000..84d1cad --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StRiverRRealService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StRiverRRealMapper; +import com.gunshi.project.ss.common.model.StRiverRReal; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: + * author: cxw + * date: 2024-09-24 14:01:07 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StRiverRRealService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StRiverRService.java b/src/main/java/com/gunshi/project/ss/service/StRiverRService.java new file mode 100644 index 0000000..b2c00b6 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StRiverRService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StRiverRMapper; +import com.gunshi.project.ss.common.model.StRiverR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: + * author: cxw + * date: 2024-09-24 14:01:07 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StRiverRService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StRsvrRRealService.java b/src/main/java/com/gunshi/project/ss/service/StRsvrRRealService.java new file mode 100644 index 0000000..d166828 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StRsvrRRealService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StRsvrRRealMapper; +import com.gunshi.project.ss.common.model.StRsvrRReal; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 水库水位实时数据表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StRsvrRRealService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StRsvrRService.java b/src/main/java/com/gunshi/project/ss/service/StRsvrRService.java new file mode 100644 index 0000000..41c0bed --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StRsvrRService.java @@ -0,0 +1,49 @@ +package com.gunshi.project.ss.service; + +import java.math.BigDecimal; +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StRsvrRMapper; +import com.gunshi.project.ss.common.model.StRsvrR; + +import lombok.extern.slf4j.Slf4j; + +/** + * 描述: 水库历史水位表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StRsvrRService extends ServiceImpl +{ + + public List getStcdLastRsvrData() { + return baseMapper.getStcdLastRsvrData(); + } + + public List getStcdFirstRsvrData() { + return baseMapper.getStcdFirstRsvrData(); + } + + /** + * 根据stcd获取8点的rz + */ + public BigDecimal getRz8ByStcd(String stcd) { + return baseMapper.getRz8ByStcd(stcd); + } + + /** + * 根据stcd获取昨日8点的rz + */ + public BigDecimal getRzYesterday8ByStcd(String stcd) { + return baseMapper.getRzYesterday8ByStcd(stcd); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StStbprpBElemService.java b/src/main/java/com/gunshi/project/ss/service/StStbprpBElemService.java new file mode 100644 index 0000000..2e36af1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StStbprpBElemService.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StStbprpBElemMapper; +import com.gunshi.project.ss.common.model.StStbprpBElem; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: 测站监测值类型 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StStbprpBElemService extends ServiceImpl +{ + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StStbprpBService.java b/src/main/java/com/gunshi/project/ss/service/StStbprpBService.java new file mode 100644 index 0000000..18ad021 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StStbprpBService.java @@ -0,0 +1,580 @@ +package com.gunshi.project.ss.service; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.mapper.StStbprpBMapper; +import com.gunshi.project.ss.common.model.StRiverR; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.common.model.vo.OsmoticShiftListVo2; +import com.gunshi.project.ss.entity.dto.StZqrlBDto; +import com.gunshi.project.ss.entity.so.HomeStStbprpBSo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.mapper.OsmoticPressRMapper; +import com.gunshi.project.ss.mapper.OsmoticShiftRMapper; +import com.gunshi.project.ss.mapper.StWaterFlowMapper; +import com.gunshi.project.ss.mapper.StbprpBVoMapper; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.util.DateUtil; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: sttp 以水利标准来 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StStbprpBService extends ServiceImpl { + @Resource + private OsmoticPressRMapper pressRMapper; + + @Resource + private OsmoticShiftRMapper shiftRMapper; + + @Autowired + private StZqrlBService stZqrlBService; + + @Autowired + private StZvarlBService stZvarlBService; + + @Autowired + private StRsvrRService rsvrRService; + + @Autowired + private StRiverRService riverRService; + + @Autowired + private StbprpBVoMapper stbprpBVoMapper; + + @Autowired + private StWaterFlowMapper stWaterFlowMapper; + + @Autowired + private AttCctvBaseService attCctvBaseService; + + @Autowired + private StZqRSerivce stZqRSerivce; + + public List rainfallStationDetailsList(HomeStStbprpBSo dto) { + return stbprpBVoMapper.rainfallStationDetailsList(dto); + } + + public List reservoirStationDetailsList() { + return stbprpBVoMapper.reservoirStationDetailsList(); + } + + public List flowStationDetailsList() { + return stbprpBVoMapper.flowStationDetailsList(); + } + + public StStatusListVo statusList() { + StStatusListVo res = new StStatusListVo(); + Integer onlineCount = 0; + Integer offlineCount = 0; + //水雨情站超过2小时为离线;渗压,渗流,位移暂定超过24小时为离线 + //雨量站 + List rainList = stbprpBVoMapper.realRainList(); + for (StStatusVo stStatusVo : rainList) { + String tm = stStatusVo.getTm(); + if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ + stStatusVo.setStatus(1); + onlineCount++; + }else{ + stStatusVo.setStatus(0); + offlineCount++; + } + } + res.setRainStationList(rainList); + //水库水位站 + List rzList = stbprpBVoMapper.rzList(); + for (StStatusVo stStatusVo : rzList) { + String tm = stStatusVo.getTm(); + if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ + stStatusVo.setStatus(1); + onlineCount++; + }else{ + stStatusVo.setStatus(0); + offlineCount++; + } + } + res.setRsvrStationList(rzList); + //河道 + List zList = stbprpBVoMapper.zList(); + for (StStatusVo stStatusVo : zList) { + String tm = stStatusVo.getTm(); + if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ + stStatusVo.setStatus(1); + onlineCount++; + }else{ + stStatusVo.setStatus(0); + offlineCount++; + } + } + res.setRiverStationList(zList); + // 视频点 + List attCctvBases = attCctvBaseService.queryList(); + List cctvList = new ArrayList<>(); + for (AttCctvBase attCctvBase : attCctvBases) { + StStatusVo stStatusVo = new StStatusVo(); + stStatusVo.setStnm(attCctvBase.getName()); + stStatusVo.setLgtd(attCctvBase.getLgtd() == null?null:new BigDecimal(attCctvBase.getLgtd())); + stStatusVo.setLttd(attCctvBase.getLttd() == null?null:new BigDecimal(attCctvBase.getLttd())); + stStatusVo.setStatus(0); + cctvList.add(stStatusVo); + offlineCount++; + } + res.setCctvStationList(cctvList); + //流量站 + //TODO 站点编码等真实站点编码来之后需要更改 + List flowList = stbprpBVoMapper.flowStationList(); + for (StStatusVo stStatusVo : flowList) { + String tm = stStatusVo.getTm(); + if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ + stStatusVo.setStatus(1); + onlineCount++; + }else{ + stStatusVo.setStatus(0); + offlineCount++; + } + } + res.setFlowStationList(flowList); + + //大坝安全监测 渗流 渗压 位移 + //渗压 + List pressList = pressRMapper.listValue2(); + List syStationList = new ArrayList<>(); + for (OsmoticPressVo osmoticPressVo : pressList) { + StStatusVo vo = new StStatusVo(); + vo.setStcd(osmoticPressVo.getStationCode()); + vo.setStnm(osmoticPressVo.getStationCode()); + vo.setLttd(osmoticPressVo.getLttd()); + vo.setLgtd(osmoticPressVo.getLgtd()); + String tm = osmoticPressVo.getTm(); + if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ + vo.setStatus(1); + onlineCount++; + }else{ + vo.setStatus(0); + offlineCount++; + } + syStationList.add(vo); + } + res.setSyStationList(syStationList); + //渗流 + List slList = pressRMapper.flowListValue2(); + List slStationList = new ArrayList<>(); + for (OsmoticPressVo osmoticPressVo : slList) { + StStatusVo vo = new StStatusVo(); + vo.setStcd(osmoticPressVo.getStationCode()); + vo.setStnm(osmoticPressVo.getStationCode()); + vo.setLttd(osmoticPressVo.getLttd()); + vo.setLgtd(osmoticPressVo.getLgtd()); + String tm = osmoticPressVo.getTm(); + if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ + vo.setStatus(1); + onlineCount++; + }else{ + vo.setStatus(0); + offlineCount++; + } + slStationList.add(vo); + } + res.setSlStationList(slStationList); + //位移 + List wyList = shiftRMapper.listValue2(); + List wyStationList = new ArrayList<>(); + for (OsmoticShiftListVo2 wy : wyList) { + StStatusVo vo = new StStatusVo(); + vo.setStcd(wy.getCdNm()); + vo.setStnm(wy.getCdNm()); + vo.setLttd(wy.getLttd()); + vo.setLgtd(wy.getLgtd()); + String tm = wy.getTm(); + if(tm != null && !(DateUtil.hoursBetweenDate(DateUtil.convertStringToDate(tm), new Date()) > 24 )){ + vo.setStatus(1); + onlineCount++; + }else{ + vo.setStatus(0); + offlineCount++; + } + wyStationList.add(vo); + } + res.setWyStationList(wyStationList); + BigDecimal totalCount = new BigDecimal(onlineCount).add(new BigDecimal(offlineCount)); + BigDecimal reportPercentage = new BigDecimal(onlineCount) + .divide(totalCount, 4, RoundingMode.HALF_UP) // 这里先设置精度 + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP); + res.setOnlineCount(onlineCount); + res.setOffLineCount(offlineCount); + res.setReportPercentage(reportPercentage); + return res; + } + + public List rainList() { + return stbprpBVoMapper.rainList(); + } + + public List flowList(StZqrlBDto obj) { + /* + * 查出时段内的水位列表,按时间升序排,根据水位查水位流量曲线表得到流量 + * 第一条数据的累计溢洪量设为0,第二条累计溢洪量=上一条累计溢洪量+本条溢洪流量*60分*60秒,以此类推 + */ + + //TODO 这里得确定一下,这个新建的泄洪道水位站是不是从水库历史水位表中查 + //获取水位历史数据 +// List rsvrList = rsvrRService.lambdaQuery() +// .eq(StRsvrR::getStcd, obj.getStcd()) +// .between(StRsvrR::getTm, obj.getDateSo().getStart(), obj.getDateSo().getEnd()) +// .orderBy(true, true, StRsvrR::getTm) +// .list(); + //TODO or 获取从河道水位表获取 + List riverList = riverRService.lambdaQuery() + .eq(StRiverR::getStcd, obj.getStcd()) + .between(StRiverR::getTm, obj.getDateSo().getStart(), obj.getDateSo().getEnd()) + .orderBy(true, true, StRiverR::getTm) + .list(); + //查询水位-流量关系 + List zqrlList = stZqRSerivce.lambdaQuery().eq(StZqR::getStcd, obj.getStcd()).list(); + zqrlList.sort(Comparator.comparing(StZqR::getZ)); + //获取水位-库容关系 + List zvarlList = stZvarlBService.list(); + zvarlList.sort(Comparator.comparing(StZvarlB::getRz)); + List ret = new ArrayList<>(); + + for (int i = 0; i < riverList.size(); i++) { + StRiverR rsvr = riverList.get(i); + BigDecimal rz = rsvr.getZ(); + StZqrlBVo vo = new StZqrlBVo(); + vo.setStcd(rsvr.getStcd()); + vo.setTm(rsvr.getTm()); + vo.setWaterLevel(rz); + //溢洪流量计算 + //TODO 这里水位->流量 需要计算公式 + //BigDecimal q = stZqrlBService.getQByZqrl(zqrlList, rz);//根据水位计算流量 + BigDecimal q = stZqRSerivce.getQByZqr(zqrlList,rz); + vo.setFlowNum(q);//计算溢洪量(非累加值) + BigDecimal w = stZvarlBService.getWByZvarl(zvarlList, rz);//根据水位计算库容 + vo.setBoxNum(w); + if (i == 0) { + vo.setQtotal(BigDecimal.ZERO); + } else { + StZqrlBVo voPrev = ret.get(i - 1); + BigDecimal qTotal = voPrev.getQtotal().add(vo.getFlowNum().multiply(BigDecimal.valueOf(60 * 60))); + vo.setQtotal(qTotal); + } + + ret.add(vo); + } + //倒序输出 + ret.sort(Comparator.comparing(StZqrlBVo::getTm).reversed()); + return ret; + } + + public StZqrlBCountVo count(Serializable stcd) { + StZqrlBCountVo vo = new StZqrlBCountVo(); + vo.setStcd(stcd.toString()); + + //取出当月的时间 20xx-xx-01 00:00:00 + Calendar calendar = Calendar.getInstance(); + Date now = calendar.getTime(); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date monthStart = calendar.getTime(); + + //取本年的时间 20xx-01-01 00:00:00 + calendar.set(Calendar.MONTH, 0); + calendar.set(Calendar.DAY_OF_MONTH, 1); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date yearStart = calendar.getTime(); + + + calendar.setTime(now); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date dayStart = calendar.getTime(); + + //查询当年水位数据 + List rsvrList = rsvrRService.lambdaQuery() + .eq(StRsvrR::getStcd, stcd) + .between(StRsvrR::getTm, yearStart, now) + .orderByAsc(true, StRsvrR::getTm) + .list(); + if(rsvrList.isEmpty()){ + return vo; + } + //获取水位流量关系 + List zqrlList = stZqrlBService.list(); + zqrlList.sort(Comparator.comparing(StZqrlB::getZ)); + + //获取水位-溢洪量关系 + List stWaterFlows = stWaterFlowMapper.selectListByStcd(stcd.toString()); + + List complexList = new ArrayList<>(); + BigDecimal maxYearSv = BigDecimal.ZERO; + Date maxQStartTime = null; + Date maxQEndTime = null; + + // 用于跟踪当前连续的最大值段 + Date currentSegmentStart = null; + BigDecimal currentSegmentValue = BigDecimal.ZERO; + boolean segmentActive = false; + + for (int i = 0; i < rsvrList.size(); i++) { + StRsvrR rsvr = rsvrList.get(i); + RsvrComplexVo complex = new RsvrComplexVo(); + BigDecimal rz = new BigDecimal(rsvr.getRz()); + complex.setRz(rz); + complex.setTm(rsvr.getTm()); + + BigDecimal q = stZqrlBService.getQByZqrl(zqrlList, rz); + complex.setQ(q); + complex.setSv(complex.getQ().multiply(BigDecimal.valueOf(60 * 60))); + + if (i == 0) { + complex.setTotalSv(BigDecimal.ZERO); + } else { + RsvrComplexVo pre = complexList.get(i - 1); + complex.setTotalSv(pre.getTotalSv().add(complex.getQ().multiply(BigDecimal.valueOf(60 * 60)))); + } + + BigDecimal currentSv = complex.getSv(); + complexList.add(complex); + + /** + * 嗯,这段代码,,,希望未来的你能看得懂 + */ + // 处理溢洪量逻辑 + if (currentSv.compareTo(BigDecimal.ZERO) > 0) { + // 1. 发现更大的溢洪量 + if (currentSv.compareTo(maxYearSv) > 0) { + maxYearSv = currentSv; + // 开始新的最大值段 + currentSegmentStart = rsvr.getTm(); + currentSegmentValue = currentSv; + segmentActive = true; + maxQStartTime = currentSegmentStart; + maxQEndTime = null; // 重置结束时间 + } + // 2. 等于当前最大值且在活跃段中 + else if (currentSv.compareTo(maxYearSv) == 0 && segmentActive) { + // 继续当前段,不更新结束时间(等待第一个小于的值) + // 这里什么都不做,保持当前状态 + } + // 3. 小于当前最大值且在活跃段中 + else if (currentSv.compareTo(maxYearSv) < 0 && segmentActive) { + // 找到第一个小于最大值的点,作为结束时间 + maxQEndTime = rsvr.getTm(); + segmentActive = false; // 结束当前段 + } + // 4. 等于当前最大值但不在活跃段中(新的连续段开始) + else if (currentSv.compareTo(maxYearSv) == 0 && !segmentActive) { + // 开始新的连续段 + currentSegmentStart = rsvr.getTm(); + currentSegmentValue = currentSv; + segmentActive = true; + // 更新全局开始时间(取最新的开始时间) + maxQStartTime = currentSegmentStart; + maxQEndTime = null; // 重置结束时间 + } + } else { + // 遇到0值且在活跃段中 + if (segmentActive && currentSegmentValue.compareTo(maxYearSv) == 0) { + // 找到第一个小于最大值的点(0值),作为结束时间 + maxQEndTime = rsvr.getTm(); + segmentActive = false; + } + } + } + + // 处理最后一条数据仍是最大值的情况 + if (segmentActive && maxQStartTime != null && maxQEndTime == null) { + maxQEndTime = new Date(); // 结束时间为当前时间 + } + // 设置结果 + vo.setCurrYearMaxVal(maxYearSv); + if (maxQStartTime != null && maxQEndTime != null) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String period = sdf.format(maxQStartTime) + " ~ " + sdf.format(maxQEndTime); + vo.setMaxOverflowPeriod(period); + } else { + vo.setMaxOverflowPeriod("无溢洪记录"); + } + + //当前流量 + vo.setVal(complexList.getLast().getQ()); + vo.setCreateTime(complexList.getLast().getTm()); + + // 今日累计溢洪量(基于时间间隔的积分) + List complexDayList = complexList.stream().filter(complex -> complex.getTm().after(dayStart)).collect(Collectors.toList()); + BigDecimal sumToday = stZqrlBService.getFlowQSum(complexDayList); + vo.setCurrDayValSum(sumToday); + + + // 当月累计溢洪量 + List complexMonthList = complexList.stream().filter(complex -> (complex.getTm().after(monthStart) || complex.getTm().equals(monthStart)) + && complex.getTm().before(now) || complex.getTm().equals(now)).collect(Collectors.toList()); + BigDecimal sumMonth = stZqrlBService.getFlowQSum(complexMonthList); + vo.setCurrMonthSum(sumMonth); + + + // 当年累计溢洪量 + + BigDecimal sumYear = complexList.getLast().getTotalSv(); + vo.setCurrYearSum(sumYear); + + //计算溢洪次数 + // 0 0 0 1 1 0 1 0 1 + int overFlowCount = 0; + boolean isOverFlow = false; + //连续的sv > 0 才算一次 溢洪 + for (int i = 0; i < complexList.size(); i++) { + //BigDecimal sv = complexList.get(i).getSv(); + BigDecimal q = complexList.get(i).getQ(); + if (q != null && q.compareTo(BigDecimal.ZERO) > 0) { + if (!isOverFlow) { + overFlowCount++; + isOverFlow = true; + } + } else { + isOverFlow = false; + } + } + vo.setCurrYearCount(Long.valueOf(overFlowCount)); + return vo; + } + + public StZqrlBCount24Vo count24(Serializable stcd) { + StZqrlBCount24Vo vo = new StZqrlBCount24Vo(); + vo.setStcd(stcd.toString()); + + StRsvrR rsvrLatest = rsvrRService.lambdaQuery().eq(StRsvrR::getStcd, stcd).orderByDesc(StRsvrR::getTm).last("limit 1").one(); + if (rsvrLatest == null) { + return vo; + } + BigDecimal rzLatest = new BigDecimal(rsvrLatest.getRz()); + //获取水位-流量数据k + List zqrlBList = stZqrlBService.list(); + //TODO 转换溢洪流量计算 + BigDecimal qLatest = stZqrlBService.getQByZqrl(zqrlBList, rzLatest); + //BigDecimal qLatest = stZqrlBService.getQFromZqrl(rzLatest); + vo.setCurrWaterLevel(rzLatest); + vo.setFlowNum(qLatest);//当前溢洪量 就为 流量 + vo.setCreateTime(rsvrLatest.getTm()); + + LocalDateTime now = LocalDateTime.now(); + LocalDateTime before24 = now.minusHours(24); + List rsvrList = rsvrRService.lambdaQuery().ge(StRsvrR::getTm, before24).le(StRsvrR::getTm, now).orderByAsc(StRsvrR::getTm).list(); + //TODO 这个溢洪流量汇总的计算也需要进行公式计算 + List rsvrComplexVos = stZqrlBService.calculateSpilledVolumeList(rsvrList); + if(rsvrComplexVos.isEmpty()){ + vo.setSum24(BigDecimal.ZERO); + }else{ + vo.setSum24(rsvrComplexVos.getLast().getTotalSv()); + } + + return vo; + } + + public List calculateQtotal(List list) { + if (list == null || list.size() < 2) { + return list; + } + + // 第一条数据设为0或null + list.get(0).setQtotal(BigDecimal.ZERO); + + for (int i = 1; i < list.size(); i++) { + StZqrlB current = list.get(i); + StZqrlB previous = list.get(i - 1); + + // 使用Duration计算分钟差(精确到小数) + Duration duration = Duration.between(previous.getModitimeAsLocalDateTime(), current.getModitimeAsLocalDateTime()); + double minutesDiff = duration.toMillis() / 60000.0; // 毫秒转分钟 + + // 使用BigDecimal的valueOf方法,避免new BigDecimal(double)的精度问题 + BigDecimal minutesDecimal = BigDecimal.valueOf(minutesDiff); + + // 计算并设置qtotal + current.setQtotal(current.getQ().multiply(minutesDecimal)); + } + return list; + } + + private List getList(String stcd, LocalDateTime start, LocalDateTime end) { + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + List list = stZqrlBService.list(qw); + return list; + } + + private BigDecimal sumVal(String stcd, LocalDateTime start, LocalDateTime end) { + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(StZqrlB::getStcd, stcd); + qw.ge(StZqrlB::getModitime, start); + qw.le(StZqrlB::getModitime, end); + List list = stZqrlBService.list(qw); + if (CollectionUtil.isNotEmpty(list)) { + return list.stream().map(StZqrlB::getQ).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + } + return null; + } + + private Long countVal(String stcd, LocalDateTime start, LocalDateTime end) { + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(StZqrlB::getStcd, stcd); + qw.ge(StZqrlB::getModitime, start); + qw.le(StZqrlB::getModitime, end); + List list = stZqrlBService.list(qw); + if (CollectionUtil.isNotEmpty(list)) { + return list.stream().map(StZqrlB::getQ).filter(Objects::nonNull).filter(q -> q.compareTo(BigDecimal.ZERO) > 0).count(); + } + return 0l; + } + + private BigDecimal maxVal(String stcd, LocalDateTime start, LocalDateTime end) { + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(StZqrlB::getStcd, stcd); + qw.ge(StZqrlB::getModitime, start); + qw.le(StZqrlB::getModitime, end); + List list = stZqrlBService.list(qw); + if (CollectionUtil.isNotEmpty(list)) { + return list.stream().map(StZqrlB::getQ).filter(Objects::nonNull).max(Comparator.naturalOrder()).orElse(null); + } + return null; + } + + public List getPptnStations() { + return baseMapper.getPptnStations(); + } + + public List getRsvrStations() { + return baseMapper.getRsvrStations(); + } + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StStbprpCctvService.java b/src/main/java/com/gunshi/project/ss/service/StStbprpCctvService.java new file mode 100644 index 0000000..7b442d1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StStbprpCctvService.java @@ -0,0 +1,27 @@ +package com.gunshi.project.ss.service; + +import com.gunshi.project.ss.entity.vo.StStbprpCctvVo; +import com.gunshi.project.ss.mapper.StStbprpCctvMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Description: + * Created by wanyan on 2024/4/9 + * + * @author wanyan + * @version 1.0 + */ +@Service +public class StStbprpCctvService { + + @Resource + private StStbprpCctvMapper stStbprpCctvMapper; + + + public List listByStcd(String stcd) { + return stStbprpCctvMapper.listByStcd(stcd); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/StWaterFlowSerivce.java b/src/main/java/com/gunshi/project/ss/service/StWaterFlowSerivce.java new file mode 100644 index 0000000..9b17506 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StWaterFlowSerivce.java @@ -0,0 +1,15 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StWaterFlowMapper; +import com.gunshi.project.ss.model.StWaterFlow; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StWaterFlowSerivce extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/ss/service/StWaterRRealService.java b/src/main/java/com/gunshi/project/ss/service/StWaterRRealService.java new file mode 100644 index 0000000..6da02a9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StWaterRRealService.java @@ -0,0 +1,61 @@ +package com.gunshi.project.ss.service; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import com.gunshi.project.ss.util.DateUtil; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StWaterRRealMapper; +import com.gunshi.project.ss.model.StWaterRReal; + +import lombok.extern.slf4j.Slf4j; + +/** + * 描述: 供水量实时表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StWaterRRealService extends ServiceImpl +{ + + public List listRelated() { + List stWaterRReals = baseMapper.listRelated(); + // 获取当前时间整点(去掉分钟和秒) + Calendar now = Calendar.getInstance(); + now.set(Calendar.MINUTE, 0); + now.set(Calendar.SECOND, 0); + now.set(Calendar.MILLISECOND, 0); + Date currentHour = now.getTime(); + for (StWaterRReal stWaterRReal : stWaterRReals) { + Date tm = stWaterRReal.getTm(); + if(tm != null){ + if(tm.before(currentHour)){ + stWaterRReal.setTm(null); + stWaterRReal.setQ(null); + stWaterRReal.setV(null); + } + if(DateUtil.hoursBetweenDate(tm,new Date()) < 1){ + stWaterRReal.setStatus(1); + }else{ + stWaterRReal.setStatus(0); + } + }else{ + stWaterRReal.setStatus(0); + } + } + return stWaterRReals; + } + + public List listNewData() { + return this.baseMapper.listNewData(); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StWaterRReorganizeService.java b/src/main/java/com/gunshi/project/ss/service/StWaterRReorganizeService.java new file mode 100644 index 0000000..51fc386 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StWaterRReorganizeService.java @@ -0,0 +1,350 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.StWaterRReorganizeYearVo; +import com.gunshi.project.ss.mapper.StWaterRReorganizeMapper; +import com.gunshi.project.ss.model.StWaterRReorganize; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 描述: 供水量整编表 + * author: cxw + * date: 2024-07-24 11:22:46 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StWaterRReorganizeService extends ServiceImpl +{ + +// public List getYearStatisticAnalysis(int year, List resList) { +// // 查询 选择年 数据 +// QueryWrapper nowYearQw = new QueryWrapper() +// .select("LEFT(tm, 7) tm,ROUND( AVG ( ecology_q ), 2 ) ecology_q,SUM ( ecology_v ) ecology_v,ROUND( AVG ( life_q ), 2 ) life_q,SUM ( life_v ) life_v,SUM ( sum_v ) sum_v") +// .eq("LEFT(tm, 4)", String.valueOf(year)).groupBy("LEFT(tm, 7)").orderBy(true, true, "tm"); +// List nowYearList = this.list(nowYearQw); +// +// // 查询 选择年的前一年 数据 +// QueryWrapper lastYearQw = new QueryWrapper() +// .select("LEFT(tm, 7) tm,ROUND( AVG ( ecology_q ), 2 ) ecology_q,SUM ( ecology_v ) ecology_v,ROUND( AVG ( life_q ), 2 ) life_q,SUM ( life_v ) life_v,SUM ( sum_v ) sum_v") +// .eq("LEFT(tm, 4)", String.valueOf(year - 1)).groupBy("LEFT(tm, 7)").orderBy(true, true, "tm"); +// List lastYearList = this.list(lastYearQw); +// +// // 组装VO +// if(CollectionUtils.isNotEmpty(nowYearList)){ +// BigDecimal ecologyVSum = nowYearList.stream().map(StWaterRReorganize::getEcologyV).reduce(BigDecimal.ZERO, BigDecimal::add);// 年度生态水量的和 +// BigDecimal lifeVSum = nowYearList.stream().map(StWaterRReorganize::getLifeV).reduce(BigDecimal.ZERO, BigDecimal::add);// 年度生活水量的和 +// for(int i = 0; i < nowYearList.size(); i++){ +// String jiantou = ""; +// StWaterRReorganizeYearVo vo = new StWaterRReorganizeYearVo(); +// StWaterRReorganize nowStwrr = nowYearList.get(i); +// vo.setTm(nowStwrr.getTm()); +// vo.setEcologyYearRateV(nowStwrr.getEcologyV().divide(ecologyVSum, 1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); +// vo.setEcologyV(nowStwrr.getEcologyV().toString()); +// vo.setLifeYearRateV(nowStwrr.getEcologyV().divide(lifeVSum, 1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); +// vo.setLifeV(nowStwrr.getLifeV().toString()); +// +// StWaterRReorganize lastStwrr = lastYearList.stream() +// .filter(item -> nowStwrr.getTm() +// .equals(String.valueOf((Integer.valueOf(item.getTm().substring(0, 4)) + 1)) +// .concat(item.getTm().substring(4, 7)))).findAny().orElse(null); +// // 生态同比 (本期数 - 同期数) / 同期数 × 100% +// if(ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getEcologyV().compareTo(BigDecimal.ZERO) == 0){ +// vo.setEcologyYoyV("-"); +// } else { +// BigDecimal ecologyYoyV = (nowStwrr.getEcologyV().subtract(lastStwrr.getEcologyV())).divide(lastStwrr.getEcologyV(), 1, BigDecimal.ROUND_HALF_UP); +// jiantou = ""; +// if(ecologyYoyV.compareTo(BigDecimal.ZERO) == 0){ +// jiantou = "↔"; +// vo.setEcologyYoyV(jiantou); +// } else { +// if(ecologyYoyV.compareTo(BigDecimal.ZERO) < 0){ +// jiantou = "↓"; +// } else if(ecologyYoyV.compareTo(BigDecimal.ZERO) > 0){ +// jiantou = "↑"; +// } +// vo.setEcologyYoyV(jiantou.concat(ecologyYoyV.abs().toString()).concat("%")); +// } +// } +// // 生活同比 (本期数 - 同期数) / 同期数 × 100% +// if(ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getLifeV().compareTo(BigDecimal.ZERO) == 0){ +// vo.setLifeYoyV("-"); +// } else { +// BigDecimal lifeYoyV = (nowStwrr.getLifeV().subtract(lastStwrr.getLifeV())).divide(lastStwrr.getLifeV(), 1, BigDecimal.ROUND_HALF_UP); +// jiantou = ""; +// if(lifeYoyV.compareTo(BigDecimal.ZERO) == 0){ +// jiantou = "↔"; +// vo.setLifeYoyV(jiantou); +// } else { +// if(lifeYoyV.compareTo(BigDecimal.ZERO) < 0){ +// jiantou = "↓"; +// } else if(lifeYoyV.compareTo(BigDecimal.ZERO) > 0){ +// jiantou = "↑"; +// } +// vo.setLifeYoyV(jiantou.concat(lifeYoyV.abs().toString()).concat("%")); +// } +// } +// // 环比 (本期数 - 上期数) / 上期数 × 100% +// StWaterRReorganize lastOneStwrr; +// // 如果是1月,需要拿到去年12月的 +// if(i == 0 && nowStwrr.getTm().contains("-01")){ +// lastOneStwrr = lastYearList.stream().filter(item -> item.getTm().contains("-12")).findAny().orElse(null); +// } else { +// lastOneStwrr = nowYearList.get(i-1); +// } +// // 生态 +// if(ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getEcologyV().compareTo(BigDecimal.ZERO) == 0){ +// vo.setEcologyQoqV("-"); +// } else { +// BigDecimal ecologyQoqV = (nowStwrr.getEcologyV().subtract(lastOneStwrr.getEcologyV())).divide(lastOneStwrr.getEcologyV(), 1, BigDecimal.ROUND_HALF_UP); +// jiantou = ""; +// if(ecologyQoqV.compareTo(BigDecimal.ZERO) == 0){ +// jiantou = "↔"; +// vo.setEcologyQoqV(jiantou); +// } else { +// if(ecologyQoqV.compareTo(BigDecimal.ZERO) < 0){ +// jiantou = "↓"; +// } else if(ecologyQoqV.compareTo(BigDecimal.ZERO) > 0){ +// jiantou = "↑"; +// } +// vo.setEcologyQoqV(jiantou.concat(ecologyQoqV.abs().toString()).concat("%")); +// } +// } +// // 生活 +// if(ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getLifeV().compareTo(BigDecimal.ZERO) == 0){ +// vo.setLifeQoqV("-"); +// } else { +// BigDecimal lifeQoqV = (nowStwrr.getLifeV().subtract(lastOneStwrr.getLifeV())).divide(lastOneStwrr.getLifeV(), 1, BigDecimal.ROUND_HALF_UP); +// jiantou = ""; +// if(lifeQoqV.compareTo(BigDecimal.ZERO) == 0){ +// jiantou = "↔"; +// vo.setLifeQoqV(jiantou); +// } else { +// if(lifeQoqV.compareTo(BigDecimal.ZERO) < 0){ +// jiantou = "↓"; +// } else if(lifeQoqV.compareTo(BigDecimal.ZERO) > 0){ +// jiantou = "↑"; +// } +// vo.setLifeQoqV(jiantou.concat(lifeQoqV.abs().toString()).concat("%")); +// } +// } +// resList.add(vo); +// } +// } +// return resList; +// } + + public List getYearStatisticAnalysis(int year, List resList) { + // 查询 选择年 数据 + QueryWrapper nowYearQw = new QueryWrapper() + .select("LEFT(tm, 7) tm," + + "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + + "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + + "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") + .eq("LEFT(tm, 4)", String.valueOf(year)) + .groupBy("LEFT(tm, 7)") + .orderBy(true, true, "tm"); + List nowYearList = this.list(nowYearQw); + + // 查询 选择年的前一年 数据 + QueryWrapper lastYearQw = new QueryWrapper() + .select("LEFT(tm, 7) tm," + + "ROUND(AVG(mci1_q), 2) mci1_q, SUM(mci1_v) mci1_v," + + "ROUND(AVG(mci2_q), 2) mci2_q, SUM(mci2_v) mci2_v," + + "ROUND(AVG(ecology_q), 2) ecology_q, SUM(ecology_v) ecology_v") + .eq("LEFT(tm, 4)", String.valueOf(year - 1)) + .groupBy("LEFT(tm, 7)") + .orderBy(true, true, "tm"); + List lastYearList = this.list(lastYearQw); + + // 组装VO + if (CollectionUtils.isNotEmpty(nowYearList)) { + // 计算年度总量 + BigDecimal mci1VSum = nowYearList.stream().map(StWaterRReorganize::getMci1V).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal mci2VSum = nowYearList.stream().map(StWaterRReorganize::getMci2V).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal ecologyVSum = nowYearList.stream().map(StWaterRReorganize::getEcologyV).reduce(BigDecimal.ZERO, BigDecimal::add); + + for (int i = 0; i < nowYearList.size(); i++) { + String jiantou = ""; + StWaterRReorganizeYearVo vo = new StWaterRReorganizeYearVo(); + StWaterRReorganize nowStwrr = nowYearList.get(i); + vo.setTm(nowStwrr.getTm()); + + // 干渠灌溉1数据 + if(mci1VSum.compareTo(BigDecimal.ZERO) == 0){ + vo.setMci1YearRateV("0%"); + }else{ + vo.setMci1YearRateV(nowStwrr.getMci1V().divide(mci1VSum, 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); + } + vo.setMci1V(nowStwrr.getMci1V() == null?null:nowStwrr.getMci1V().toString()); + + // 干渠灌溉2数据 + if(mci2VSum.compareTo(BigDecimal.ZERO) == 0){ + vo.setMci2YearRateV("0%"); + }else{ + vo.setMci2YearRateV(nowStwrr.getMci2V().divide(mci2VSum, 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); + } + + vo.setMci2V(nowStwrr.getMci2V() == null?null:nowStwrr.getMci2V().toString()); + + // 生态数据 + if(ecologyVSum.compareTo(BigDecimal.ZERO) == 0){ + vo.setEcologyV("0%"); + }else{ + vo.setEcologyYearRateV(nowStwrr.getEcologyV().divide(ecologyVSum, 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP).toString().concat("%")); + } + + vo.setEcologyV(nowStwrr.getEcologyV() == null? null:nowStwrr.getEcologyV().toString()); + + // 查找去年同期数据 + StWaterRReorganize lastStwrr = lastYearList.stream() + .filter(item -> nowStwrr.getTm() + .equals(String.valueOf((Integer.valueOf(item.getTm().substring(0, 4)) + 1)) + .concat(item.getTm().substring(4, 7)))).findAny().orElse(null); + + // 干渠灌溉1同比 + if (ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getMci1V().compareTo(BigDecimal.ZERO) == 0) { + vo.setMci1YoyV("-"); + } else { + BigDecimal mci1YoyV = (nowStwrr.getMci1V().subtract(lastStwrr.getMci1V())) + .divide(lastStwrr.getMci1V(), 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); + jiantou = getArrowSymbol(mci1YoyV); + vo.setMci1YoyV(formatChangeRate(jiantou, mci1YoyV)); + } + + // 干渠灌溉2同比 + if (ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getMci2V().compareTo(BigDecimal.ZERO) == 0) { + vo.setMci2YoyV("-"); + } else { + BigDecimal mci2YoyV = (nowStwrr.getMci2V().subtract(lastStwrr.getMci2V())) + .divide(lastStwrr.getMci2V(), 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); + jiantou = getArrowSymbol(mci2YoyV); + vo.setMci2YoyV(formatChangeRate(jiantou, mci2YoyV)); + } + + // 生态同比 + if (ObjectUtils.isEmpty(lastStwrr) || lastStwrr.getEcologyV().compareTo(BigDecimal.ZERO) == 0) { + vo.setEcologyYoyV("-"); + } else { + BigDecimal ecologyYoyV = (nowStwrr.getEcologyV().subtract(lastStwrr.getEcologyV())) + .divide(lastStwrr.getEcologyV(), 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); + jiantou = getArrowSymbol(ecologyYoyV); + vo.setEcologyYoyV(formatChangeRate(jiantou, ecologyYoyV)); + } + + // 环比处理(查找上期数据) + StWaterRReorganize lastOneStwrr; + if (i == 0 && nowStwrr.getTm().contains("-01")) { + lastOneStwrr = lastYearList.stream().filter(item -> item.getTm().contains("-12")).findAny().orElse(null); + } else { + lastOneStwrr = (i > 0) ? nowYearList.get(i - 1) : null; + } + + // 干渠灌溉1环比 + if (ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getMci1V().compareTo(BigDecimal.ZERO) == 0) { + vo.setMci1QoqV("-"); + } else { + BigDecimal mci1QoqV = (nowStwrr.getMci1V().subtract(lastOneStwrr.getMci1V())) + .divide(lastOneStwrr.getMci1V(), 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); + jiantou = getArrowSymbol(mci1QoqV); + vo.setMci1QoqV(formatChangeRate(jiantou, mci1QoqV)); + } + + // 干渠灌溉2环比 + if (ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getMci2V().compareTo(BigDecimal.ZERO) == 0) { + vo.setMci2QoqV("-"); + } else { + BigDecimal mci2QoqV = (nowStwrr.getMci2V().subtract(lastOneStwrr.getMci2V())) + .divide(lastOneStwrr.getMci2V(), 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); + jiantou = getArrowSymbol(mci2QoqV); + vo.setMci2QoqV(formatChangeRate(jiantou, mci2QoqV)); + } + + // 生态环比 + if (ObjectUtils.isEmpty(lastOneStwrr) || lastOneStwrr.getEcologyV().compareTo(BigDecimal.ZERO) == 0) { + vo.setEcologyQoqV("-"); + } else { + BigDecimal ecologyQoqV = (nowStwrr.getEcologyV().subtract(lastOneStwrr.getEcologyV())) + .divide(lastOneStwrr.getEcologyV(), 4, BigDecimal.ROUND_HALF_UP) + .multiply(new BigDecimal(100)).setScale(1, BigDecimal.ROUND_HALF_UP); + jiantou = getArrowSymbol(ecologyQoqV); + vo.setEcologyQoqV(formatChangeRate(jiantou, ecologyQoqV)); + } + + resList.add(vo); + } + } + return resList; + } + + // 辅助方法:获取箭头符号 + private String getArrowSymbol(BigDecimal value) { + if (value.compareTo(BigDecimal.ZERO) == 0) { + return "↔"; + } else if (value.compareTo(BigDecimal.ZERO) < 0) { + return "↓"; + } else { + return "↑"; + } + } + + // 辅助方法:格式化变化率 + private String formatChangeRate(String arrow, BigDecimal value) { + if ("↔".equals(arrow)) { + return arrow; + } else { + return arrow.concat(value.abs().toString()).concat("%"); + } + } + + public Map getWaterSupplyerYeaarOrMonth(Integer type,String date) { + Map res = new HashMap<>(); + BigDecimal ggTotal = null; + BigDecimal stTotal = null; + List rReorganizes; + if(type == 0){ + rReorganizes = baseMapper.getWaterSupplyerYeaarOrMonth(type,date); + }else{ + rReorganizes = baseMapper.getWaterSupplyerYeaarOrMonth(type,date); + } + + if(rReorganizes.size() > 0){ + ggTotal = BigDecimal.ZERO; + stTotal = BigDecimal.ZERO; + for (StWaterRReorganize o : rReorganizes) { + if(o.getMci1V() != null){ + ggTotal = ggTotal.add(o.getMci1V()); + } + if(o.getMci2V() != null){ + ggTotal = ggTotal.add(o.getMci2V()); + } + if(o.getEcologyV() != null){ + stTotal = stTotal.add(o.getEcologyV()); + } + } + } + res.put("gg",ggTotal); + res.put("st",stTotal); + return res; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StWaterRService.java b/src/main/java/com/gunshi/project/ss/service/StWaterRService.java new file mode 100644 index 0000000..2f2a563 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StWaterRService.java @@ -0,0 +1,42 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.mapper.StWaterRMapper; +import com.gunshi.project.ss.model.StWaterR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 供水量表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StWaterRService extends ServiceImpl +{ + + public Map stat(DateTimeRangeSo dateTimeRangeSo) { + List list = baseMapper.stat(dateTimeRangeSo); + return list.stream() + .collect(Collectors.groupingBy(StWaterR::getStcd, Collectors.mapping(StWaterR::getV, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); + } + + public StWaterR selectNewDataByStcd(String stcd) { + return this.baseMapper.selectNewDataByStcd(stcd); + } + + public List queryDetail() { + return null; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StZqRSerivce.java b/src/main/java/com/gunshi/project/ss/service/StZqRSerivce.java new file mode 100644 index 0000000..a8c5eae --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StZqRSerivce.java @@ -0,0 +1,108 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StZqRMapper; +import com.gunshi.project.ss.model.StZqR; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StZqRSerivce extends ServiceImpl { + + + public BigDecimal getQByZqr(List zvarlList, BigDecimal rz) { + // 1. 参数校验 + if (zvarlList == null || zvarlList.isEmpty()) { + throw new IllegalArgumentException("水位-流量关系列表不能为空"); + } + if (rz == null) { + throw new IllegalArgumentException("水位值不能为空"); + } + + // 2. 检查边界情况:如果目标水位低于最低水位或高于最高水位 + BigDecimal minRz = zvarlList.get(0).getZ(); + BigDecimal maxRz = zvarlList.get(zvarlList.size() - 1).getZ(); + if (rz.compareTo(minRz) < 0) { + // 低于最低水位,返回0流量 + return BigDecimal.ZERO; + } + if (rz.compareTo(maxRz) > 0) { + // 高于最高水位,返回0流量 + return BigDecimal.ZERO; + } + + // 3. 二分查找水位区间 + int l = 0; + int r = zvarlList.size() - 1; + + while (l <= r) { + int mid = l + (r - l) / 2; + BigDecimal midRz = zvarlList.get(mid).getZ(); + int compareResult = midRz.compareTo(rz); + + if (compareResult == 0) { + // 找到完全匹配的水位,直接返回对应的流量 + return zvarlList.get(mid).getQ(); + } else if (compareResult < 0) { + l = mid + 1; + } else { + r = mid - 1; + } + } + + /** + * 此时: + * l 指向第一个大于rz的位置 + * r 指向最后一个小于rz的位置 + * 即:r为 (x1, y1) - 下限水位和流量 + * l为 (x2, y2) - 上限水位和流量 + */ + if (l >= zvarlList.size() || r < 0) { + return BigDecimal.ZERO; + } + + // 获取前后相邻的两个点 + StZqR lowerPoint = zvarlList.get(r); + StZqR upperPoint = zvarlList.get(l); + + // 使用线性插值计算流量 + return linearInterpolation( + lowerPoint.getZ(), lowerPoint.getQ(), + upperPoint.getZ(), upperPoint.getQ(), + rz + ).setScale(3, RoundingMode.HALF_UP); + } + + /** + * 线性插值辅助方法(可以复用之前的) + * @param x1 已知点1的水位 + * @param y1 已知点1的流量 + * @param x2 已知点2的水位 + * @param y2 已知点2的流量 + * @param x 目标水位 + * @return 目标水位对应的流量 + */ + private BigDecimal linearInterpolation(BigDecimal x1, BigDecimal y1, + BigDecimal x2, BigDecimal y2, + BigDecimal x) { + // 使用公式: y = y1 + ( (y2 - y1) / (x2 - x1) ) * (x - x1) + + // 计算斜率: (y2 - y1) / (x2 - x1) + BigDecimal slope = y2.subtract(y1) + .divide(x2.subtract(x1), 10, RoundingMode.HALF_UP); + + // 计算: slope * (x - x1) + BigDecimal xDiff = x.subtract(x1); + BigDecimal product = slope.multiply(xDiff); + + // 计算最终结果: y1 + product + return y1.add(product); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/StZqrlBService.java b/src/main/java/com/gunshi/project/ss/service/StZqrlBService.java new file mode 100644 index 0000000..bb54374 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StZqrlBService.java @@ -0,0 +1,247 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.vo.RsvrComplexVo; +import com.gunshi.project.ss.mapper.StZqrlBMapper; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.model.StZqrlB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 水位流量关系曲线表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StZqrlBService extends ServiceImpl { + + /** + * 计算溢洪量 + * + * @param rz 计算溢洪的起始水位 + * @param seconds 溢洪时间,是两条水位数据的时间差,单位秒 + * @param zqrlList 水位流量关系曲线 + * @return 溢洪量 + * @author lyf + */ + public BigDecimal calculateSpilledVolume(BigDecimal rz, long seconds, List zqrlList) { + return getQFromZqrl(rz, zqrlList).multiply(BigDecimal.valueOf(seconds)); + } + + /** + * 计算溢洪量 + * + * @param rz 计算溢洪的起始水位 + * @param seconds 溢洪时间,是两条水位数据的时间差,单位秒 + * @return 溢洪量 + * @author lyf + */ + public BigDecimal calculateSpilledVolume(BigDecimal rz, long seconds) { + return calculateSpilledVolume(rz, seconds, list()); + } + + /** + * 批量计算溢洪量 + * + * @param rsvrList 要计算的水位数据 + * @param zqrlList 水位流量关系曲线 + * @return 计算后的水位数据(时间倒序),含每条水位对应的流量和与上一条水位对应的溢洪量 + * @author lyf + */ + public List calculateSpilledVolumeList(List rsvrList, List zqrlList) { + rsvrList.sort(Comparator.comparing(StRsvrR::getTm)); + List ret = new ArrayList<>(); + BigDecimal sum = BigDecimal.ZERO; + for (int i = 0; i < rsvrList.size(); i++) { + StRsvrR rsvr = rsvrList.get(i); + BigDecimal rz = new BigDecimal(rsvr.getRz()); + Date tm = rsvr.getTm(); + RsvrComplexVo vo = RsvrComplexVo.of(rz, tm); + BigDecimal q = getQByZqrl(zqrlList,rz); + //TODO 这个需要公式进行对水位->流量的转换 + vo.setQ(q); + if (i == 0) { + vo.setTotalSv(BigDecimal.ZERO); + sum = BigDecimal.ZERO; + } else { + StRsvrR rsvrPrev = rsvrList.get(i - 1); + Date tmPrev = rsvrPrev.getTm(); + long seconds = tm.getTime() - tmPrev.getTime(); + sum = sum.add(vo.getQ().multiply(BigDecimal.valueOf(60 * 60))); + vo.setTotalSv(sum); + } + ret.add(vo); + } + return ret; + } + + /** + * 批量计算溢洪量 + * + * @param rsvrList 要计算的水位数据 + * @return 计算后的水位数据(时间倒序),含每条水位对应的流量和与上一条水位对应的溢洪量 + * @author lyf + */ + public List calculateSpilledVolumeList(List rsvrList) { + return calculateSpilledVolumeList(rsvrList, list()); + } + + /** + * 根据水位查表得流量 + * + * @param rz 水位 + * @return 查表流量 + * @author lyf + */ + public BigDecimal getQFromZqrl(BigDecimal rz) { + return getQFromZqrl(rz, list()); + } + + /** + * 根据水位查表得流量 + * + * @param rz 水位 + * @param zqrlList 水位流量关系曲线 + * @return 查表流量 + * @author lyf + */ + public BigDecimal getQFromZqrl(BigDecimal rz, List zqrlList) { + return toMap(zqrlList).getOrDefault(rz.setScale(3, RoundingMode.DOWN), BigDecimal.ZERO); + } + + /** + * 将水位流量曲线列表转为字典,水位作为键,注意BigDecimal做键的时候要匹配值和精度 + * + * @param zqrlList 水位流量曲线列表 + * @return 水位流量曲线字典 + * @author lyf + */ + private Map toMap(List zqrlList) { + return zqrlList.stream() + .map(item -> Map.entry(item.getZ().setScale(3, RoundingMode.DOWN), item.getQ())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + + public BigDecimal getQByZqrl(List zqrlBList, BigDecimal rz) { + // 1. 参数校验 + if (zqrlBList == null || zqrlBList.isEmpty()) { + throw new IllegalArgumentException("水位-流量关系列表不能为空"); + } + if (rz == null) { + throw new IllegalArgumentException("水位值不能为空"); + } + + // 2. 检查边界情况:如果目标水位低于最低水位或高于最高水位 + BigDecimal minRz = zqrlBList.get(0).getZ(); + BigDecimal maxRz = zqrlBList.get(zqrlBList.size() - 1).getZ(); + if (rz.compareTo(minRz) < 0) { + // 低于最低水位,返回0流量 + return BigDecimal.ZERO; + } + if (rz.compareTo(maxRz) > 0) { + // 高于最高水位,返回0流量 + return BigDecimal.ZERO; + } + + // 3. 二分查找水位区间 + int l = 0; + int r = zqrlBList.size() - 1; + + while (l <= r) { + int mid = l + (r - l) / 2; + BigDecimal midRz = zqrlBList.get(mid).getZ(); + int compareResult = midRz.compareTo(rz); + + if (compareResult == 0) { + // 找到完全匹配的水位,直接返回对应的流量 + return zqrlBList.get(mid).getQ(); + } else if (compareResult < 0) { + l = mid + 1; + } else { + r = mid - 1; + } + } + + /** + * 此时: + * l 指向第一个大于rz的位置 + * r 指向最后一个小于rz的位置 + * 即:r为 (x1, y1) - 下限水位和流量 + * l为 (x2, y2) - 上限水位和流量 + */ + if (l >= zqrlBList.size() || r < 0) { + return BigDecimal.ZERO; + } + + // 获取前后相邻的两个点 + StZqrlB lowerPoint = zqrlBList.get(r); + StZqrlB upperPoint = zqrlBList.get(l); + + // 使用线性插值计算流量 + return linearInterpolation( + lowerPoint.getZ(), lowerPoint.getQ(), + upperPoint.getZ(), upperPoint.getQ(), + rz + ).setScale(3, RoundingMode.HALF_UP); + } + + /** + * 线性插值辅助方法(可以复用之前的) + * @param x1 已知点1的水位 + * @param y1 已知点1的流量 + * @param x2 已知点2的水位 + * @param y2 已知点2的流量 + * @param x 目标水位 + * @return 目标水位对应的流量 + */ + private BigDecimal linearInterpolation(BigDecimal x1, BigDecimal y1, + BigDecimal x2, BigDecimal y2, + BigDecimal x) { + // 使用公式: y = y1 + ( (y2 - y1) / (x2 - x1) ) * (x - x1) + + // 计算斜率: (y2 - y1) / (x2 - x1) + BigDecimal slope = y2.subtract(y1) + .divide(x2.subtract(x1), 10, RoundingMode.HALF_UP); + + // 计算: slope * (x - x1) + BigDecimal xDiff = x.subtract(x1); + BigDecimal product = slope.multiply(xDiff); + + // 计算最终结果: y1 + product + return y1.add(product); + } + + /** + * 计算累计溢洪量 + * @param complexList + * @return + */ + public BigDecimal getFlowQSum(List complexList) { + BigDecimal sum = BigDecimal.ZERO; + if(complexList.isEmpty()){ + return null; + } + for (int i = 0; i < complexList.size(); i++) { + RsvrComplexVo current = complexList.get(i); + if (i == 0) { + // 第一条数据,累计量为0 + sum = BigDecimal.ZERO; + } else { + BigDecimal multiply = current.getQ().multiply(new BigDecimal(60 * 60)); + sum = sum.add(multiply); + } + } + return sum; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StZvarlBService.java b/src/main/java/com/gunshi/project/ss/service/StZvarlBService.java new file mode 100644 index 0000000..19cdc81 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StZvarlBService.java @@ -0,0 +1,162 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.StZvarlBMapper; +import com.gunshi.project.ss.model.StZvarlB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 库( 湖)容曲线表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StZvarlBService extends ServiceImpl { + + /** + * 根据水位查表得库容 + * + * @param rz 水位 + * @return 查表库容 + * @author lyf + */ + public BigDecimal getWFromZvarl(BigDecimal rz) { + return getWFromZvarl(rz, BigDecimal.ZERO, list()); + } + + /** + * 根据水位查表得库容 + * + * @param rz 水位 + * @param defaultValue 查不到时默认值 + * @return 查表库容 + * @author lyf + */ + public BigDecimal getWFromZvarl(BigDecimal rz, BigDecimal defaultValue) { + return getWFromZvarl(rz, defaultValue, list()); + } + + /** + * 根据水位查表得库容 + * + * @param rz 水位 + * @param defaultValue 查不到时默认值 + * @param zvarlList 水位库容关系曲线 + * @return 查表库容 + * @author lyf + */ + public BigDecimal getWFromZvarl(BigDecimal rz, BigDecimal defaultValue, List zvarlList) { + return toMap(zvarlList).getOrDefault(rz.setScale(3, RoundingMode.DOWN), defaultValue); + } + + /** + * 将水位库容曲线列表转为字典,水位作为键,注意BigDecimal做键的时候要匹配值和精度 + * + * @param zvarlList 水位库容曲线列表 + * @return 水位库容曲线字典 + * @author lyf + */ + private Map toMap(List zvarlList) { + return zvarlList.stream() + .map(item -> Map.entry(item.getRz().setScale(3, RoundingMode.DOWN), item.getW())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + + /** + * 分段线性计算水位->库容 + * 首先需要保证 水位->库容的数据要按水位从小到大进行排列 + * @param zvarlBS + * @param rz + * @return + */ + public BigDecimal getWByZvarl(List zvarlBS, BigDecimal rz) { + //对数据进行排序 + // 1. 参数校验 + if (zvarlBS == null || zvarlBS.isEmpty()) { + throw new IllegalArgumentException("水位-库容关系列表不能为空"); + } + if (rz == null) { + throw new IllegalArgumentException("水位值不能为空"); + } + // 2. 检查边界情况:如果目标水位低于最低水位或高于最高水位 + BigDecimal minRz = zvarlBS.get(0).getRz(); + BigDecimal maxRz = zvarlBS.get(zvarlBS.size() - 1).getRz(); + if (rz.compareTo(minRz) < 0) { + // 低于最低水位,返回值0 + return BigDecimal.ZERO; + } + if (rz.compareTo(maxRz) > 0) { + // 高于最高水位,返回值0 + return BigDecimal.ZERO; + } + int l = 0; + int r = zvarlBS.size() -1; + //二分查找 由线性On时间复杂度降为Ologn + while (l <= r) { + int mid = l + (r-l) / 2; + BigDecimal midRz = zvarlBS.get(mid).getRz(); + int compareResult = midRz.compareTo(rz); + if(compareResult == 0 ){ + return zvarlBS.get(mid).getW(); + }else if(compareResult < 0){ + l = mid + 1; + }else{ + r = mid - 1; + } + } + + /** + * 此时 l 指向第一个大于rz的位置 + * r 指向最后一个小于rz的位置 + * 既 r为 x1 y1 + * l为 x2 y2 + */ + if(l < 0 || r >= zvarlBS.size()){ + return BigDecimal.ZERO; + } + //获取前后差值的点 + StZvarlB lowerPoint = zvarlBS.get(r); + StZvarlB upperPoint = zvarlBS.get(l); + return linearInterpolation(lowerPoint.getRz(),lowerPoint.getW(),upperPoint.getRz(),upperPoint.getW(),rz).setScale(3); + } + + + /** + * 线性插值辅助方法 + * @param x1 已知点1的水位 + * @param y1 已知点1的库容 + * @param x2 已知点2的水位 + * @param y2 已知点2的库容 + * @param x 目标水位 + * @return 目标水位对应的库容 + */ + private BigDecimal linearInterpolation(BigDecimal x1, BigDecimal y1, + BigDecimal x2, BigDecimal y2, + BigDecimal x) { + // 使用公式: y = y1 + ( (y2 - y1) / (x2 - x1) ) * (x - x1) + + // 计算斜率: (y2 - y1) / (x2 - x1) + BigDecimal slope = y2.subtract(y1) + .divide(x2.subtract(x1), 10, RoundingMode.HALF_UP); + + // 计算: slope * (x - x1) + BigDecimal xDiff = x.subtract(x1); + BigDecimal product = slope.multiply(xDiff); + + // 计算最终结果: y1 + product,并设置小数位数和舍入模式 + return y1.add(product).setScale(3, RoundingMode.HALF_UP); + } + +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/StatisticsService.java b/src/main/java/com/gunshi/project/ss/service/StatisticsService.java new file mode 100644 index 0000000..fb0b983 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/StatisticsService.java @@ -0,0 +1,609 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.project.ss.common.model.vo.StRzVo; +import com.gunshi.project.ss.entity.so.StatisticsQuerySo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.mapper.StPptnRHMapper; +import com.gunshi.project.ss.model.StPptnRD; +import com.gunshi.project.ss.model.StPptnRH; +import com.gunshi.project.ss.util.DateUtil; +import com.gunshi.project.ss.util.ExcelUtil; +import com.gunshi.project.ss.util.MyBeanUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 报图报表 + * author: xusan + * date: 2024-07-08 17:30:37 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class StatisticsService { + + @Autowired + private StPptnRHMapper stPptnRHMapper; + + private static final String TIME_END_PREFIX = " 08:00:00"; + + private static final String ZERO_TIME_END_PREFIX = " 00:00:00"; + + public List sdJyRb(DateRangeSo dateRangeSo) { + List res = new ArrayList<>(); + String start = DateUtil.convertDateToString(dateRangeSo.getStart()) + TIME_END_PREFIX; + String end = DateUtil.getPlusDate(dateRangeSo.getEnd(), 1) + TIME_END_PREFIX; + List dates = DateUtil.getDatesBetween(dateRangeSo.getStart(), dateRangeSo.getEnd(), false); + List list = stPptnRHMapper.queryList(start, end); + for (String date : dates) { + SdJyRbVo vo = new SdJyRbVo(); + vo.setDate(date); + getDrp(vo, list); + res.add(vo); + } + return res; + } + + private void getDrp(SdJyRbVo vo, List list) { + if (CollectionUtils.isNotEmpty(list)) { + String date = vo.getDate(); + BigDecimal drpD = new BigDecimal(0); + Date start = DateUtil.convertStringToDate(date + TIME_END_PREFIX); + String end = DateUtil.getPlusTime(date + TIME_END_PREFIX, 24); + List dayList = list.stream().filter(o -> o.getTm().compareTo(start) > 0 && o.getTm().compareTo(DateUtil.convertStringToDate(end)) <= 0).collect(Collectors.toList()); + SimpleDateFormat simpleDateFormatHH = new SimpleDateFormat("HH"); + for (int i = 0; i < dayList.size(); i++) { + StPptnRH stPptnRH = dayList.get(i); + if (stPptnRH.getDrp() != null) { + vo = setHourDrp(vo, simpleDateFormatHH.format(stPptnRH.getTm()), stPptnRH.getDrp()); + drpD = drpD.add(stPptnRH.getDrp()); + } + } + vo.setDrpD(drpD); + } + } + + private SdJyRbVo setHourDrp(SdJyRbVo vo, String HH, BigDecimal drp) { + switch (HH) { + case "01": + vo.setDrpH1(drp); + break; + case "02": + vo.setDrpH2(drp); + break; + case "03": + vo.setDrpH3(drp); + break; + case "04": + vo.setDrpH4(drp); + break; + case "05": + vo.setDrpH5(drp); + break; + case "06": + vo.setDrpH6(drp); + break; + case "07": + vo.setDrpH7(drp); + break; + case "08": + vo.setDrpH8(drp); + break; + case "09": + vo.setDrpH9(drp); + break; + case "10": + vo.setDrpH10(drp); + break; + case "11": + vo.setDrpH11(drp); + break; + case "12": + vo.setDrpH12(drp); + break; + case "13": + vo.setDrpH13(drp); + break; + case "14": + vo.setDrpH14(drp); + break; + case "15": + vo.setDrpH15(drp); + break; + case "16": + vo.setDrpH16(drp); + break; + case "17": + vo.setDrpH17(drp); + break; + case "18": + vo.setDrpH18(drp); + break; + case "19": + vo.setDrpH19(drp); + break; + case "20": + vo.setDrpH20(drp); + break; + case "21": + vo.setDrpH21(drp); + break; + case "22": + vo.setDrpH22(drp); + break; + case "23": + vo.setDrpH23(drp); + break; + case "00": + vo.setDrpH24(drp); + break; + } + return vo; + } + + public void sdJyRbExport(DateRangeSo dateRangeSo, HttpServletResponse response) { + List list = sdJyRb(dateRangeSo); + String start = DateUtil.convertDateToChineseYmd(dateRangeSo.getStart()); + String end = DateUtil.convertDateToChineseYmd(dateRangeSo.getEnd()); + String fileName = start + "-" + end + "小时降雨量日报表"; + ExcelUtil.exportExcel(list, fileName, SdJyRbVo.class, response, fileName); + } + + public List sdSwRb(DateRangeSo dateRangeSo) { + List res = new ArrayList<>(); + String start = DateUtil.convertDateToString(dateRangeSo.getStart()) + ZERO_TIME_END_PREFIX; + String end = DateUtil.getPlusDate(dateRangeSo.getEnd(), 1) + ZERO_TIME_END_PREFIX; + List dates = DateUtil.getDatesBetween(dateRangeSo.getStart(), dateRangeSo.getEnd(), false); + List list = stPptnRHMapper.queryRzList(start, end); + for (String date : dates) { + SdSwRbVo vo = new SdSwRbVo(); + vo.setDate(date); + getRz(vo, list); + res.add(vo); + } + return res; + } + + private void getRz(SdSwRbVo vo, List list) { + if (CollectionUtils.isNotEmpty(list)) { + String date = vo.getDate(); + BigDecimal rzD = new BigDecimal(0); + Integer count = 0; + String start = date + ZERO_TIME_END_PREFIX; + String end = DateUtil.getPlusTime(date + ZERO_TIME_END_PREFIX, 24); + List dayList = list.stream().filter(o -> o.getTm().compareTo(start) >= 0 && o.getTm().compareTo(end) < 0).collect(Collectors.toList()); + SimpleDateFormat simpleDateFormatHH = new SimpleDateFormat("HH"); + for (int i = 0; i < dayList.size(); i++) { + StRzVo stRzVo = dayList.get(i); + if (stRzVo.getRz() != null) { + vo = setHourRz(vo, simpleDateFormatHH.format(DateUtil.convertStringToDate(stRzVo.getTm())), stRzVo.getRz()); + rzD = rzD.add(stRzVo.getRz()); + count++; + } + } + if(count > 0){ + vo.setRzAvg(rzD.divide(new BigDecimal(count), 2, RoundingMode.HALF_UP)); + } + } + } + + private SdSwRbVo setHourRz(SdSwRbVo vo, String HH, BigDecimal rz) { + switch (HH) { + case "01": + vo.setRzH1(rz); + break; + case "02": + vo.setRzH2(rz); + break; + case "03": + vo.setRzH3(rz); + break; + case "04": + vo.setRzH4(rz); + break; + case "05": + vo.setRzH5(rz); + break; + case "06": + vo.setRzH6(rz); + break; + case "07": + vo.setRzH7(rz); + break; + case "08": + vo.setRzH8(rz); + break; + case "09": + vo.setRzH9(rz); + break; + case "10": + vo.setRzH10(rz); + break; + case "11": + vo.setRzH11(rz); + break; + case "12": + vo.setRzH12(rz); + break; + case "13": + vo.setRzH13(rz); + break; + case "14": + vo.setRzH14(rz); + break; + case "15": + vo.setRzH15(rz); + break; + case "16": + vo.setRzH16(rz); + break; + case "17": + vo.setRzH17(rz); + break; + case "18": + vo.setRzH18(rz); + break; + case "19": + vo.setRzH19(rz); + break; + case "20": + vo.setRzH20(rz); + break; + case "21": + vo.setRzH21(rz); + break; + case "22": + vo.setRzH22(rz); + break; + case "23": + vo.setRzH23(rz); + break; + case "00": + vo.setRzH24(rz); + break; + } + return vo; + } + + public void sdSwRbExport(DateRangeSo dateRangeSo, HttpServletResponse response) { + List list = sdSwRb(dateRangeSo); + String start = DateUtil.convertDateToChineseYmd(dateRangeSo.getStart()); + String end = DateUtil.convertDateToChineseYmd(dateRangeSo.getEnd()); + String fileName = start + "-" + end + "时段水位日报表"; + ExcelUtil.exportExcel(list, fileName, SdSwRbVo.class, response, fileName); + } + + public List rjyNb(StatisticsQuerySo statisticsQuerySo,Integer type) { + List res = new ArrayList<>(); + Integer year = statisticsQuerySo.getYear(); + List list = new ArrayList<>(); + if(type != null){ + list = stPptnRHMapper.queryDayRz(year.toString()); + }else{ + list = stPptnRHMapper.queryDayDrp(year); + } + if (CollectionUtils.isEmpty(list)) { + return res; + } + Map> map = list.stream().collect(Collectors.groupingBy(StPptnRD::getDay)); + for (int i = 1; i < 32; i++) { + RjyNbVo vo = new RjyNbVo(); + String s = String.valueOf(i); + vo.setDate(s); + if(i < 10){ + s = "0" + i; + } + List rds = map.get(s); + if(CollectionUtils.isNotEmpty(rds)){ + for (int j = 0; j < rds.size(); j++) { + StPptnRD rd = rds.get(j); + if (rd.getDrp() != null) { + vo = setDayDrp(vo, rd.getMonth(), rd.getDrp().toString()); + } + } + } + res.add(vo); + } + return res; + } + + private RjyNbVo setDayDrp(RjyNbVo vo, String month, String drp) { + switch (month) { + case "01": + vo.setDrpM1(drp); + break; + case "02": + vo.setDrpM2(drp); + break; + case "03": + vo.setDrpM3(drp); + break; + case "04": + vo.setDrpM4(drp); + break; + case "05": + vo.setDrpM5(drp); + break; + case "06": + vo.setDrpM6(drp); + break; + case "07": + vo.setDrpM7(drp); + break; + case "08": + vo.setDrpM8(drp); + break; + case "09": + vo.setDrpM9(drp); + break; + case "10": + vo.setDrpM10(drp); + break; + case "11": + vo.setDrpM11(drp); + break; + case "12": + vo.setDrpM12(drp); + break; + } + return vo; + } + + public RjyNbStatVo rjyNbStat(StatisticsQuerySo statisticsQuerySo) { + RjyNbStatVo vo = new RjyNbStatVo(); + Integer year = statisticsQuerySo.getYear(); + List list = stPptnRHMapper.queryDayDrp(year); + if (CollectionUtils.isEmpty(list)) { + return vo; + } + BigDecimal drpSum = list.stream().map(StPptnRD::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setDrpSum(drpSum); + Long count = list.stream().filter(o -> o.getDrp().compareTo(new BigDecimal(0)) > 0).collect(Collectors.counting()); + vo.setDayCount(count); + //按月份分组 + Map> map = list.stream().collect(Collectors.groupingBy(StPptnRD::getMonth)); + + List childList = new ArrayList<>(); + RjyNbVo rjyNbVo = new RjyNbVo(); + rjyNbVo.setDate("月降雨量"); + setMonthSumDrp(rjyNbVo,map); + childList.add(rjyNbVo); + + RjyNbVo rVo = new RjyNbVo(); + rVo.setDate("降雨日数"); + setMonthDrpDay(rVo,map); + childList.add(rVo); + + RjyNbVo max = new RjyNbVo(); + max.setDate("最大日量"); + setMonthDrpMax(max,map); + childList.add(max); + + vo.setList(childList); + return vo; + } + + private void setMonthDrpMax(RjyNbVo rjyNbVo, Map> map) { + for(int i = 1;i< 13;i++){ + String s = String.valueOf(i); + if(i < 10){ + s = "0" + i; + } + List list = map.get(s); + if(CollectionUtils.isNotEmpty(list)) { + BigDecimal maxDrp = list.stream().max(Comparator.comparing(StPptnRD::getDrp)).get().getDrp(); + setDayDrp(rjyNbVo, s, maxDrp.toString()); + } + } + } + + + private void setMonthSumDrp(RjyNbVo rjyNbVo, Map> map) { + for(int i = 1;i< 13;i++){ + String s = String.valueOf(i); + if(i < 10){ + s = "0" + i; + } + List list = map.get(s); + if(CollectionUtils.isNotEmpty(list)){ + BigDecimal drpSum = list.stream().map(StPptnRD::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add); + setDayDrp(rjyNbVo,s,drpSum.toString()); + } + } + } + + private void setMonthDrpDay(RjyNbVo rjyNbVo, Map> map) { + for(int i = 1;i< 13;i++){ + String s = String.valueOf(i); + if(i < 10){ + s = "0" + i; + } + List list = map.get(s); + if(CollectionUtils.isNotEmpty(list)){ + Long count = list.stream().filter(o -> o.getDrp().compareTo(new BigDecimal(0)) > 0).collect(Collectors.counting()); + setDayDrp(rjyNbVo,s,new BigDecimal(count).toString()); + } + } + } + + public void rjyNbExport(StatisticsQuerySo statisticsQuerySo, HttpServletResponse response) { + //上方数据 + List rjyNb = rjyNb(statisticsQuerySo,null); + //下方统计数据 + RjyNbStatVo vo = rjyNbStat(statisticsQuerySo); + List list = vo.getList(); + rjyNb.addAll(list); + //最下方拼接一条数据 + RjyNbVo rjyNbVo = new RjyNbVo(); + rjyNbVo.setDate("年统计"); + rjyNbVo.setDrpM1("降水量"); + rjyNbVo.setDrpM2("降水量"); + rjyNbVo.setDrpM3(vo.getDrpSum().toString()); + rjyNbVo.setDrpM4(vo.getDrpSum().toString()); + rjyNbVo.setDrpM5(vo.getDrpSum().toString()); + rjyNbVo.setDrpM6(vo.getDrpSum().toString()); + rjyNbVo.setDrpM7("降雨日数"); + rjyNbVo.setDrpM8("降雨日数"); + rjyNbVo.setDrpM9(vo.getDayCount().toString()); + rjyNbVo.setDrpM10(vo.getDayCount().toString()); + rjyNbVo.setDrpM11(vo.getDayCount().toString()); + rjyNbVo.setDrpM12(vo.getDayCount().toString()); + rjyNb.add(rjyNbVo); + + String fileName = "檀树岗水库" + statisticsQuerySo.getYear() + "年日降雨年报表"; + ExcelUtil.exportExcel(rjyNb, fileName, RjyNbVo.class, response, fileName,1); + } + + public List rjswNb(StatisticsQuerySo statisticsQuerySo) { + return rjyNb(statisticsQuerySo,1); + } + + public RjswNbStatVo rjswNbStat(StatisticsQuerySo statisticsQuerySo) { + RjswNbStatVo vo = new RjswNbStatVo(); + Integer year = statisticsQuerySo.getYear(); + List list = stPptnRHMapper.queryDayRz(year.toString()); + if (CollectionUtils.isEmpty(list)) { + return vo; + } + BigDecimal max = list.stream().max(Comparator.comparing(StPptnRD::getDrp)).get().getDrp(); + vo.setMax(max); + BigDecimal min = list.stream().min(Comparator.comparing(StPptnRD::getDrp)).get().getDrp(); + vo.setMin(min); + BigDecimal sum = list.stream().map(StPptnRD::getDrp).reduce(BigDecimal.ZERO,BigDecimal::add); + Long count = list.stream().filter(o -> o.getDrp().compareTo(new BigDecimal(0)) > 0).collect(Collectors.counting()); + vo.setAvg(sum.divide(new BigDecimal(count),2,RoundingMode.HALF_UP)); + //按月份分组 + Map> map = list.stream().collect(Collectors.groupingBy(StPptnRD::getMonth)); + List statVos = statData(map); + + List childList = new ArrayList<>(); + + RjswNbVo rjswNbVo = new RjswNbVo(); + Map avgMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getAvg)); + RjyNbVo rjyNbVo = setDayRz(avgMap); + BeanUtils.copyProperties(rjyNbVo,rjswNbVo); + rjswNbVo.setTheme("月统计"); + rjswNbVo.setDate("平均"); + childList.add(rjswNbVo); + + RjswNbVo rjswNbVoMax = new RjswNbVo(); + Map maxMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getMax)); + RjyNbVo rjyNbVoMax = setDayRz(maxMap); + BeanUtils.copyProperties(rjyNbVoMax,rjswNbVoMax); + rjswNbVoMax.setTheme("月统计"); + rjswNbVoMax.setDate("最高"); + childList.add(rjswNbVoMax); + + RjswNbVo rjMaxDate = new RjswNbVo(); + Map maxDateMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getMaxDate)); + RjyNbVo rjyNbVoMaxDate = setDayRz(maxDateMap); + BeanUtils.copyProperties(rjyNbVoMaxDate,rjMaxDate); + rjMaxDate.setTheme("月统计"); + rjMaxDate.setDate("最高日期"); + childList.add(rjMaxDate); + + RjswNbVo rjswNbVoMin = new RjswNbVo(); + Map minMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getMin)); + RjyNbVo rjyNbVoMin = setDayRz(minMap); + BeanUtils.copyProperties(rjyNbVoMin,rjswNbVoMin); + rjswNbVoMin.setTheme("月统计"); + rjswNbVoMin.setDate("最低"); + childList.add(rjswNbVoMin); + + RjswNbVo rjMinDate = new RjswNbVo(); + Map minDateMap = statVos.stream().collect(Collectors.toMap(NbStatVo::getMonth, NbStatVo::getMinDate)); + RjyNbVo rjyNbVoMinDate = setDayRz(minDateMap); + BeanUtils.copyProperties(rjyNbVoMinDate,rjMinDate); + rjMinDate.setTheme("月统计"); + rjMinDate.setDate("最低日期"); + childList.add(rjMinDate); + + vo.setList(childList); + return vo; + } + + private RjyNbVo setDayRz(Map map) { + RjyNbVo rjyNbVo = new RjyNbVo(); + map.entrySet().forEach(entry->{ + String month = entry.getKey(); + String value = entry.getValue(); + setDayDrp(rjyNbVo,month,value); + }); + return rjyNbVo; + } + + + private List statData(Map> map) { + List statVos = new ArrayList<>(); + for(int i = 1;i< 13;i++){ + String s = String.valueOf(i); + if(i < 10){ + s = "0" + i; + } + List list = map.get(s); + if(CollectionUtils.isNotEmpty(list)){ + NbStatVo vo = new NbStatVo(); + vo.setMonth(s); + StPptnRD max = list.stream().max(Comparator.comparing(StPptnRD::getDrp)).get(); + vo.setMax(max.getDrp().toString()); + vo.setMaxDate(max.getDay()+"日"); + + StPptnRD min = list.stream().min(Comparator.comparing(StPptnRD::getDrp)).get(); + vo.setMin(min.getDrp().toString()); + vo.setMinDate(min.getDay()+"日"); + + BigDecimal sum = list.stream().map(StPptnRD::getDrp).reduce(BigDecimal.ZERO, BigDecimal::add); + Long count = list.stream().filter(o -> o.getDrp().compareTo(new BigDecimal(0)) > 0).collect(Collectors.counting()); + vo.setAvg(sum.divide(new BigDecimal(count),2,RoundingMode.HALF_UP).toString()); + statVos.add(vo); + } + } + return statVos; + } + + public void rjswNbExport(StatisticsQuerySo statisticsQuerySo, HttpServletResponse response) { + //上方数据 + List rjyNbVos = this.rjswNb(statisticsQuerySo); + List rjswNbVos = MyBeanUtil.collectionCopy(rjyNbVos, RjswNbVo.class); + rjswNbVos.stream().forEach(o->o.setTheme(o.getDate())); + //下方统计数据 + RjswNbStatVo statVo = this.rjswNbStat(statisticsQuerySo); + List list = statVo.getList(); + rjswNbVos.addAll(list); + + //最下方拼接一条数据 + RjswNbVo rjswNbVo = new RjswNbVo(); + rjswNbVo.setTheme("年统计"); + rjswNbVo.setDate("年统计"); + rjswNbVo.setDrpM1("最高水位"); + rjswNbVo.setDrpM2(statVo.getMax().toString()); + rjswNbVo.setDrpM3(statVo.getMax().toString()); + rjswNbVo.setDrpM4(statVo.getMax().toString()); + rjswNbVo.setDrpM5("最低水位"); + rjswNbVo.setDrpM6(statVo.getMin().toString()); + rjswNbVo.setDrpM7(statVo.getMin().toString()); + rjswNbVo.setDrpM8(statVo.getMin().toString()); + rjswNbVo.setDrpM9("平均水位"); + rjswNbVo.setDrpM10(statVo.getAvg().toString()); + rjswNbVo.setDrpM11(statVo.getAvg().toString()); + rjswNbVo.setDrpM12(statVo.getAvg().toString()); + rjswNbVos.add(rjswNbVo); + + String fileName = "檀树岗水库" + statisticsQuerySo.getYear() + "年日平均水位年报表"; + ExcelUtil.exportExcel(rjswNbVos, fileName, RjswNbVo.class, response, fileName,2); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/SyDataCheckRuleService.java b/src/main/java/com/gunshi/project/ss/service/SyDataCheckRuleService.java new file mode 100644 index 0000000..c87ce6f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SyDataCheckRuleService.java @@ -0,0 +1,60 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.SyDataCheckRulePageSo; +import com.gunshi.project.ss.mapper.SyDataCheckRuleMapper; +import com.gunshi.project.ss.model.SyDataCheckRule; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SyDataCheckRuleService extends ServiceImpl { + + public Page pageQuery(SyDataCheckRulePageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(page.getDvcd())){ + queryWrapper.eq(SyDataCheckRule::getDvcd,page.getDvcd()); + } + if(!StringUtils.isBlank(page.getDm())){ + queryWrapper.eq(SyDataCheckRule::getDm,page.getDm()); + } + Page syDataCheckRulePage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + return syDataCheckRulePage; + } + + public SyDataCheckRule saveData(SyDataCheckRule dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SyDataCheckRule::getDvcd,dto.getDvcd()); + SyDataCheckRule syDataCheckRule = this.baseMapper.selectOne(queryWrapper); + if(syDataCheckRule != null){ + throw new IllegalArgumentException("对不起,该测点已配置清洗策略"); + } + save(dto); + return dto; + } + + public Boolean updateData(SyDataCheckRule dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SyDataCheckRule::getDvcd,dto.getDvcd()); + queryWrapper.ne(SyDataCheckRule::getId,dto.getId()); + SyDataCheckRule syDataCheckRule = this.baseMapper.selectOne(queryWrapper); + if(syDataCheckRule != null){ + throw new IllegalArgumentException("对不起,该测点已配置清洗策略"); + } + boolean flag = updateById(dto); + return flag; + } + + public SyDataCheckRule getByDvcd(String dvcd) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SyDataCheckRule::getDvcd,dvcd); + return this.baseMapper.selectOne(queryWrapper); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/SyRegressionDataService.java b/src/main/java/com/gunshi/project/ss/service/SyRegressionDataService.java new file mode 100644 index 0000000..9b3c232 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SyRegressionDataService.java @@ -0,0 +1,171 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.entity.vo.ProjectSafeCalculateVo; + +import com.gunshi.project.ss.mapper.SyRegressionDataMapper; +import com.gunshi.project.ss.model.SyRegressionData; +import com.gunshi.project.ss.util.RegressionEquationFormatter; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.net.URLEncoder; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SyRegressionDataService extends ServiceImpl { + + + public List queryData(SyRegressionData dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(dto.getDvcd() != null){ + queryWrapper.eq(SyRegressionData::getDvcd, dto.getDvcd()); + } + if(dto.getOrder() != null){ + queryWrapper.eq(SyRegressionData::getOrder, dto.getOrder()); + } + queryWrapper.orderByDesc(SyRegressionData::getCreateTime) + .last("limit 1"); + List syRegressionData = this.baseMapper.selectList(queryWrapper); + return syRegressionData; + } + + public void export(String dvcd, ProjectSafeCalculateVo ans, HttpServletResponse response) { + try { + // 设置响应头 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("UTF-8"); + String fileName = URLEncoder.encode("渗透压力监测数据", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); + + // 创建Excel工作簿 + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("渗透压力监测数据"); + + // 创建单元格样式 - 支持换行 + CellStyle wrapStyle = workbook.createCellStyle(); + wrapStyle.setWrapText(true); // 设置自动换行 + + // 设置行号 + int rowNum = 0; + + // 第一行:测点编号(不合并) + Row row1 = sheet.createRow(rowNum++); + Cell label1 = row1.createCell(0); + label1.setCellValue("测点编号:"); + Cell value1 = row1.createCell(1); + value1.setCellValue(dvcd); + + // 第二行:一阶回归方程(从D列开始合并10个单元格) + Row row2 = sheet.createRow(rowNum++); + Cell label2 = row2.createCell(0); + label2.setCellValue("一阶回归方程:"); + Cell value2 = row2.createCell(3); // D列(索引为3) + String one = RegressionEquationFormatter.formatEquation(ans.getOne()); + value2.setCellValue(one != null ? one : ""); + value2.setCellStyle(wrapStyle); + // 合并D列到M列(共10个单元格):从第3列到第12列 + sheet.addMergedRegion(new CellRangeAddress(1, 1, 3, 12)); + + // 第三行:二阶回归方程(从D列开始合并10个单元格) + Row row3 = sheet.createRow(rowNum++); + Cell label3 = row3.createCell(0); + label3.setCellValue("二阶回归方程:"); + Cell value3 = row3.createCell(3); // D列(索引为3) + String tow = RegressionEquationFormatter.formatEquation(ans.getTwo()); + value3.setCellValue(tow != null ? tow : ""); + value3.setCellStyle(wrapStyle); + // 合并D列到M列(共10个单元格):从第3列到第12列 + sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 12)); + + // 第四行:三阶回归方程(从D列开始合并10个单元格) + Row row4 = sheet.createRow(rowNum++); + Cell label4 = row4.createCell(0); + label4.setCellValue("三阶回归方程:"); + Cell value4 = row4.createCell(3); // D列(索引为3) + String three = RegressionEquationFormatter.formatEquation(ans.getThree()); + value4.setCellValue(three != null ? three : ""); + value4.setCellStyle(wrapStyle); + // 合并D列到M列(共10个单元格):从第3列到第12列 + sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 12)); + + // 第五行:四阶回归方程(从D列开始合并10个单元格) + Row row5 = sheet.createRow(rowNum++); + Cell label5 = row5.createCell(0); + label5.setCellValue("四阶回归方程:"); + Cell value5 = row5.createCell(3); // D列(索引为3) + String four = RegressionEquationFormatter.formatEquation(ans.getFour()); + value5.setCellValue(four != null ? four : ""); + value5.setCellStyle(wrapStyle); + // 合并D列到M列(共10个单元格):从第3列到第12列 + sheet.addMergedRegion(new CellRangeAddress(4, 4, 3, 12)); + + // 空一行 + rowNum++; + + // 表头行 - 从第0列开始正常显示 + Row headerRow = sheet.createRow(rowNum++); + String[] headers = {"监测时间", "监测值", "库水位"}; + for (int i = 0; i < headers.length; i++) { + Cell headerCell = headerRow.createCell(i); + headerCell.setCellValue(headers[i]); + } + + // 数据行 + if (ans.getDatas() != null && !ans.getDatas().isEmpty()) { + for (OsmoticPressDetailVo data : ans.getDatas()) { + Row dataRow = sheet.createRow(rowNum++); + + // 监测时间 - 第0列 + Cell timeCell = dataRow.createCell(0); + timeCell.setCellValue(data.getTm() != null ? data.getTm() : ""); + + // 监测值 - 第1列 + Cell valueCell = dataRow.createCell(1); + if (data.getValue() != null) { + valueCell.setCellValue(data.getValue().doubleValue()); + } else { + valueCell.setCellValue(""); + } + + // 库水位 - 第2列 + Cell rzCell = dataRow.createCell(2); + if (data.getRz() != null) { + rzCell.setCellValue(data.getRz().doubleValue()); + } else { + rzCell.setCellValue(""); + } + } + } + + // 设置列宽 + sheet.setColumnWidth(0, 15 * 256); // A列:标签列,固定宽度 + sheet.setColumnWidth(1, 12 * 256); // B列:测点编号值,固定宽度 + sheet.setColumnWidth(2, 12 * 256); // C列:空列,固定宽度 + sheet.setColumnWidth(3, 50 * 256); // D列:方程列开始,固定宽度 + + // 自动调整数据表格的列宽(只对数据区域有效) + sheet.autoSizeColumn(0); // 监测时间列 + sheet.autoSizeColumn(1); // 监测值列 + sheet.autoSizeColumn(2); // 库水位列 + + // 写入响应流 + workbook.write(response.getOutputStream()); + workbook.close(); + + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("导出Excel失败"); + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/SysDictBService.java b/src/main/java/com/gunshi/project/ss/service/SysDictBService.java new file mode 100644 index 0000000..835a31a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SysDictBService.java @@ -0,0 +1,60 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.SysDictBMapper; +import com.gunshi.project.ss.model.SysDictB; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 系统字典表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SysDictBService extends ServiceImpl +{ + + + public List tree() { + List list = list(); + if (CollectionUtils.isEmpty(list)){ + return list; + } + Map> listMap = list.stream().collect(Collectors.groupingBy(SysDictB::getPid)); + + list.forEach(o -> o.setChildren(listMap.get(o.getId()))); + List parentList = list.stream().filter(o -> 0L == o.getPid()).collect(Collectors.toList()); + return sorted(parentList); + } + + private List sorted( List tree) { + + List sorteds = null; + + if (CollectionUtils.isNotEmpty(tree)){ + sorteds = tree.stream().sorted(Comparator.comparing(SysDictB::getSortOn) + ).collect(Collectors.toList()); + sorteds.forEach(o->{ + o.setChildren(sorted(o.getChildren())); + }); + } + + return sorteds; + } + + public List listByCd(String dictCd) { + return this.baseMapper.listByCd(dictCd); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/SzCaseService.java b/src/main/java/com/gunshi/project/ss/service/SzCaseService.java new file mode 100644 index 0000000..6e58cab --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SzCaseService.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.SzCaseMapper; +import com.gunshi.project.ss.model.SzCase; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SzCaseService extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/ss/service/SzRegulatoryFrameworkService.java b/src/main/java/com/gunshi/project/ss/service/SzRegulatoryFrameworkService.java new file mode 100644 index 0000000..da21818 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SzRegulatoryFrameworkService.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.SzRegulatoryFrameworkMapper; +import com.gunshi.project.ss.model.SzRegulatoryFramework; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SzRegulatoryFrameworkService extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/ss/service/SzRuleByLawService.java b/src/main/java/com/gunshi/project/ss/service/SzRuleByLawService.java new file mode 100644 index 0000000..e3c8b9b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SzRuleByLawService.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.SzRuleByLawMapper; +import com.gunshi.project.ss.model.SzRuleByLaw; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SzRuleByLawService extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/ss/service/SzTreatmentBasisService.java b/src/main/java/com/gunshi/project/ss/service/SzTreatmentBasisService.java new file mode 100644 index 0000000..ac099f5 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/SzTreatmentBasisService.java @@ -0,0 +1,21 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.SzTreatmentBasisMapper; +import com.gunshi.project.ss.model.SzTreatmentBasis; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Description: + * Created by XuSan on 2024/9/24. + * + * @author XuSan + * @version 1.0 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class SzTreatmentBasisService extends ServiceImpl { +} diff --git a/src/main/java/com/gunshi/project/ss/service/TermiteAdverPicService.java b/src/main/java/com/gunshi/project/ss/service/TermiteAdverPicService.java new file mode 100644 index 0000000..5036141 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/TermiteAdverPicService.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.TermiteAdverPicMapper; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.TermiteAdverPic; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 描述: 白蚁防治宣传图片墙 + * author: xusan + * date: 2024-08-29 17:33:09 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class TermiteAdverPicService extends ServiceImpl +{ + + @Autowired + private FileAssociationsService fileService; + + public TermiteAdverPic saveData(TermiteAdverPic dto) { + dto.setId(IdWorker.getId()); + dto.setCreateTime(new Date()); + boolean result = this.save(dto); + if (result) { + fileService.saveFile(Arrays.asList(dto.getPic()), getGroupId(), String.valueOf(dto.getId())); + } + return dto; + } + + public String getGroupId() { + return "termiteAdverPic"; + } + + public Boolean delData(Serializable id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + fileService.deleteFile(getGroupId(), id.toString()); + } + return data; + } + + public List queryList() { + List list = this.list().stream().sorted(Comparator.comparing(TermiteAdverPic::getCreateTime).reversed()).collect(Collectors.toList()); + for(TermiteAdverPic pic : list){ + List files = fileService.getFiles(getGroupId(), pic.getId().toString()); + pic.setPic(files.get(0)); + } + return list; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/TermiteSurveyDetailService.java b/src/main/java/com/gunshi/project/ss/service/TermiteSurveyDetailService.java new file mode 100644 index 0000000..b9fb921 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/TermiteSurveyDetailService.java @@ -0,0 +1,136 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +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.gunshi.project.ss.entity.so.TermiteSurveyPageSo; +import com.gunshi.project.ss.mapper.RiskControlInfoMapper; +import com.gunshi.project.ss.mapper.TermiteSurveyDetailMapper; +import com.gunshi.project.ss.model.BzDictRel; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.TermiteSurvey; +import com.gunshi.project.ss.model.TermiteSurveyDetail; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 描述: 白蚁普查明细 + * author: xusan + * date: 2024-08-28 10:25:17 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class TermiteSurveyDetailService extends ServiceImpl +{ + @Autowired + private FileAssociationsService fileService; + + @Autowired + private BzDictRelService bzDictRelService; + + @Autowired + private RiskControlInfoMapper controlInfoMapper; + + public void saveDetail(List details, Long id) { + if(!CollectionUtils.isEmpty(details)){ + List picList = new ArrayList<>(); + List videoList = new ArrayList<>(); + List relList = new ArrayList<>(); + for (TermiteSurveyDetail detail : details){ + Long detailId = IdWorker.getId(); + detail.setId(detailId); + detail.setSurveyId(id); + if(CollectionUtils.isNotEmpty(detail.getActSign())){ + detail.getActSign().stream().forEach(o->o.setBusinessId(detailId)); + relList.addAll(detail.getActSign()); + } + if(CollectionUtils.isNotEmpty(detail.getPics())){ + detail.getPics().stream().forEach(o->o.setBusinessId(detailId.toString())); + picList.addAll(detail.getPics()); + } + if(CollectionUtils.isNotEmpty(detail.getVideos())){ + detail.getVideos().stream().forEach(o->o.setBusinessId(detailId.toString())); + videoList.addAll(detail.getVideos()); + } + } + this.saveBatch(details); + bzDictRelService.saveRel(relList,null,getGroupId()); + fileService.save(picList,null,getGroupId(),getPicType()); + fileService.save(videoList,null,getGroupId(),getVideoType()); + } + + } + + private String getPicType() { + return "termitePic"; + } + + private String getVideoType() { + return "termiteVideo"; + } + + public String getGroupId() { + return "termiteSurvey"; + } + + + public void updateDetail(List details, Long id) { + delDetail(id); + saveDetail(details,id); + } + + public void delDetail(Long id) { + List list = getDetailById(id); + if(CollectionUtils.isEmpty(list)){ + return; + } + List detailIds = list.stream().map(TermiteSurveyDetail::getId).collect(Collectors.toList()); + List ids = detailIds.stream().map(Object::toString).collect(Collectors.toList()); + //删除附件 + fileService.removeByBzIds(ids); + //删除字典 + bzDictRelService.removeByBzIds(detailIds); + this.removeBatchByIds(detailIds); + } + + public TermiteSurvey detail(TermiteSurvey termiteSurvey) { + List list = getDetailById(termiteSurvey.getId()); + if(CollectionUtils.isEmpty(list)){ + return termiteSurvey; + } + List ids = list.stream().map(TermiteSurveyDetail::getId).collect(Collectors.toList()); + List relList = controlInfoMapper.queryRelList(ids); + Map> map = relList.stream().collect(Collectors.groupingBy(BzDictRel::getBusinessId)); + for(TermiteSurveyDetail detail : list){ + detail.setActSign(map.get(detail.getId())); + detail.setPics(fileService.queryFileList(detail.getId().toString(),getGroupId(),getPicType())); + detail.setVideos(fileService.queryFileList(detail.getId().toString(),getGroupId(),getVideoType())); + } + termiteSurvey.setDetails(list); + return termiteSurvey; + } + + private List getDetailById(Long id){ + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(TermiteSurveyDetail::getSurveyId,id); + return this.list(queryWrapper); + } + + + public Page pageQuery(TermiteSurveyPageSo page) { + return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/TermiteSurveyService.java b/src/main/java/com/gunshi/project/ss/service/TermiteSurveyService.java new file mode 100644 index 0000000..487d63a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/TermiteSurveyService.java @@ -0,0 +1,75 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.TermiteSurveyPageSo; +import com.gunshi.project.ss.mapper.TermiteSurveyMapper; +import com.gunshi.project.ss.model.TermiteSurvey; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.Objects; + +/** + * 描述: 白蚁普查 + * author: xusan + * date: 2024-08-28 10:29:58 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class TermiteSurveyService extends ServiceImpl +{ + @Autowired + private TermiteSurveyDetailService detailService; + + public TermiteSurvey saveData(TermiteSurvey dto) { + dto.setCreateTime(new Date()); + dto.setId(IdWorker.getId()); + boolean result = this.save(dto); + if (result) { + detailService.saveDetail(dto.getDetails(),dto.getId()); + } + return dto; + } + + public TermiteSurvey updateData(TermiteSurvey dto) { + if (Objects.isNull(this.getById(dto.getId()))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean result = this.updateById(dto); + if (result) { + detailService.updateDetail(dto.getDetails(),dto.getId()); + } + return dto; + } + + public Boolean delData(Long id) { + if (Objects.isNull(this.getById(id))) { + throw new IllegalArgumentException("当前数据不存在"); + } + boolean data = this.removeById(id); + if (data) { + detailService.delDetail(id); + } + return data; + } + + public TermiteSurvey detail(Long id) { + TermiteSurvey termiteSurvey = this.getById(id); + if(Objects.isNull(termiteSurvey)){ + throw new IllegalArgumentException("当前数据不存在"); + } + return detailService.detail(termiteSurvey); + } + + public Page pageQuery(TermiteSurveyPageSo page) { + return this.baseMapper.pageQuery(page.getPageSo().toPage(),page); + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/TyYearRainfallService.java b/src/main/java/com/gunshi/project/ss/service/TyYearRainfallService.java new file mode 100644 index 0000000..8cdab4b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/TyYearRainfallService.java @@ -0,0 +1,129 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +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.gunshi.project.ss.entity.so.TyYearRainfallPageSo; +import com.gunshi.project.ss.entity.vo.TyYearRainfallVo; +import com.gunshi.project.ss.mapper.TyYearRainfallMapper; +import com.gunshi.project.ss.model.TyYearRainfall; +import com.gunshi.project.ss.util.MyBeanUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 描述: 典型年降雨资料表 + * author: xusan + * date: 2024-07-08 17:30:38 + */ +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class TyYearRainfallService extends ServiceImpl +{ + + + public boolean saveData(TyYearRainfallVo dto) { + checkParam(dto); + TyYearRainfall tyYearRainfall = new TyYearRainfall(); + BeanUtils.copyProperties(dto,tyYearRainfall); + tyYearRainfall.setId(IdWorker.getId()); + List list = dto.getList(); + if(CollectionUtils.isNotEmpty(list)){ + list.stream().map(o->{ + o.setId(IdWorker.getId()); + return o; + }).collect(Collectors.toList()); + } + list.add(tyYearRainfall); + return this.saveBatch(list); + } + + private void checkParam(TyYearRainfallVo dto) { + Long id = dto.getId(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(TyYearRainfall::getYear,dto.getYear()) + .eq(TyYearRainfall::getType,1); + if(id != null){ + queryWrapper.ne(TyYearRainfall::getId,id); + } + if(this.count(queryWrapper ) > 0){ + throw new IllegalArgumentException("该年份已存在典型年降雨资料"); + } + Long len = dto.getList().stream().map(TyYearRainfall::getMonth).distinct().collect(Collectors.counting()); + if(dto.getList().size() != len.intValue()){ + throw new IllegalArgumentException("月份不可重复"); + } + } + + public Page pageQuery(TyYearRainfallPageSo tyYearRainfallPageSo) { + Page page = baseMapper.pageQuery(tyYearRainfallPageSo.getPageSo().toPage(), tyYearRainfallPageSo); + fillList(page); + return page; + } + + private void fillList(Page ret) { + if (ret.getRecords() != null) { + queryChild(ret.getRecords()); + } + } + + private void queryChild(List records) { + for (TyYearRainfallVo record : records) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(TyYearRainfall::getYear,record.getYear()) + .eq(TyYearRainfall::getType,2) + .orderByAsc(TyYearRainfall::getMonth); + record.setList(this.list(queryWrapper)); + } + } + + public boolean updateData(TyYearRainfallVo dto) { + checkParam(dto); + TyYearRainfall tyYearRainfall = new TyYearRainfall(); + BeanUtils.copyProperties(dto,tyYearRainfall); + this.updateById(tyYearRainfall); + deleteMonthData(dto.getYear()); + List list = dto.getList(); + if(CollectionUtils.isNotEmpty(list)){ + list.stream().map(o->{ + o.setId(IdWorker.getId()); + return o; + }).collect(Collectors.toList()); + } + return this.saveBatch(list); + } + + private void deleteMonthData(Integer year) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(TyYearRainfall::getYear,year) + .eq(TyYearRainfall::getType,2); + this.remove(queryWrapper); + } + + public Boolean removeData(Long id) { + TyYearRainfall tyYearRainfall = this.getById(id); + deleteMonthData(tyYearRainfall.getYear()); + return this.removeById(id); + } + + public List queryList() { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(TyYearRainfall::getType,1); + queryWrapper.orderByDesc(TyYearRainfall::getYear); + List list = this.list(queryWrapper); + List resList = MyBeanUtil.collectionCopy(list,TyYearRainfallVo.class); + queryChild(resList); + return resList; + } +} + + diff --git a/src/main/java/com/gunshi/project/ss/service/WarningConditionService.java b/src/main/java/com/gunshi/project/ss/service/WarningConditionService.java new file mode 100644 index 0000000..ab0ae80 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/WarningConditionService.java @@ -0,0 +1,78 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.mapper.WarningConditionMapper; +import com.gunshi.project.ss.model.WarningCondition; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class WarningConditionService extends ServiceImpl { + + + + public List getListByRuleId(Serializable id){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(WarningCondition::getRuleId,id); + queryWrapper.orderByAsc(WarningCondition::getOrder); + return this.list(queryWrapper); + } + + + public WarningCondition checkConditionExists(WarningCondition dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(dto.getId() != null){ + queryWrapper.ne(WarningCondition::getId, dto.getId()); + } + if(dto.getIndicatorType() != null){ + //预警指标类型 + queryWrapper.eq(WarningCondition::getIndicatorType,dto.getIndicatorType()); + } + if(dto.getWarningLevel() != null){ + //预警等级 + queryWrapper.eq(WarningCondition::getWarningLevel,dto.getWarningLevel()); + } + if(dto.getWarningType() != null){ + //预警类型 + queryWrapper.eq(WarningCondition::getWarningType,dto.getWarningType()); + } + if(dto.getOperator() != null){ + //比较符 + queryWrapper.eq(WarningCondition::getOperator,dto.getOperator()); + } + if(dto.getThresholdValue() != null){ + //阈值 + queryWrapper.eq(WarningCondition::getThresholdValue,dto.getThresholdValue()); + } + if(dto.getDurationHours() != null){ + //时长/时段(小时) + queryWrapper.eq(WarningCondition::getDurationHours,dto.getDurationHours()); + } + List warningConditions = this.baseMapper.selectList(queryWrapper); + WarningCondition warningCondition = null; + if(warningConditions != null && warningConditions.size() > 0){ + warningCondition = warningConditions.get(0); + } + return warningCondition; + } + + public boolean removeByRuleId(Long ruleId){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(WarningCondition::getRuleId,ruleId); + return this.remove(queryWrapper); + } + + public boolean deleteData(Long ruleId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(WarningCondition::getRuleId,ruleId); + boolean remove = this.remove(queryWrapper); + return remove; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/WarningRuleInfoService.java b/src/main/java/com/gunshi/project/ss/service/WarningRuleInfoService.java new file mode 100644 index 0000000..7e4f184 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/WarningRuleInfoService.java @@ -0,0 +1,48 @@ +package com.gunshi.project.ss.service; + +import com.alibaba.excel.util.StringUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.WarningRulePageSo; +import com.gunshi.project.ss.mapper.WarningRuleInfoMapper; +import com.gunshi.project.ss.model.WarningCondition; +import com.gunshi.project.ss.model.WarningRuleInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class WarningRuleInfoService extends ServiceImpl { + + @Autowired + private WarningConditionService warningConditionService; + + + public Page pageQuery(WarningRulePageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(page.getRuleName())){ + queryWrapper.like(WarningRuleInfo::getRuleName, page.getRuleName()); + } + if(!StringUtils.isBlank(page.getWarningType())){ + queryWrapper.eq(WarningRuleInfo::getWarningType, page.getWarningType()); + } + if(page.getDateTimeRangeSo() != null){ + queryWrapper.ge(WarningRuleInfo::getCreateTime,page.getDateTimeRangeSo().getStart()); + queryWrapper.le(WarningRuleInfo::getCreateTime,page.getDateTimeRangeSo().getEnd()); + } + queryWrapper.orderByDesc(WarningRuleInfo::getCreateTime); + Page warningRuleInfoPage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + List records = warningRuleInfoPage.getRecords(); + for (WarningRuleInfo record : records) { + List listByRuleId = warningConditionService.getListByRuleId(record.getRuleId()); + record.setConditions(listByRuleId); + } + return warningRuleInfoPage; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/WarningRuleService.java b/src/main/java/com/gunshi/project/ss/service/WarningRuleService.java new file mode 100644 index 0000000..ad7c705 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/WarningRuleService.java @@ -0,0 +1,113 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.WarningRulePageSo; +import com.gunshi.project.ss.mapper.WarningRuleMapper; +import com.gunshi.project.ss.model.WarningCondition; +import com.gunshi.project.ss.model.WarningRule; +import com.ruoyi.common.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.*; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class WarningRuleService extends ServiceImpl { + + @Autowired + private WarningConditionService warningConditionService; + + public Page pageQuery(WarningRulePageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(page.getRuleName())){ + queryWrapper.like(WarningRule::getRuleName, page.getRuleName()); + } + if(!StringUtils.isBlank(page.getWarningType())){ + queryWrapper.eq(WarningRule::getWarningType, page.getWarningType()); + } + queryWrapper.orderByDesc(WarningRule::getCreateTime); + Page warningRulePage = this.baseMapper.selectPage(page.getPageSo().toPage(), queryWrapper); + + for (WarningRule record : warningRulePage.getRecords()) { + List listByRuleId = warningConditionService.getListByRuleId(record.getId()); + record.setConditions(listByRuleId); + } + return warningRulePage; + } + + public List listData(){ + List warningRules = this.baseMapper.selectList(null); + for (WarningRule warningRule : warningRules) { + List listByRuleId = warningConditionService.getListByRuleId(warningRule.getId()); + warningRule.setConditions(listByRuleId); + } + return warningRules; + } + + public WarningRule saveData(WarningRule dto) { + dto.setCreateTime(LocalDateTime.now()); + if(dto.getConditions() == null || dto.getConditions().isEmpty()){ + throw new IllegalArgumentException("请至少配置一条预警规则"); + } + orderData(dto.getConditions()); + save(dto); + List conditions = dto.getConditions(); + for (WarningCondition condition : conditions) { +// WarningCondition warningCondition = warningConditionService.checkConditionExists(condition); +// if(warningCondition != null){ +// throw new IllegalArgumentException("对不起,该预警规则已配置"); +// } + condition.setRuleId(dto.getId()); + condition.setWarningType(dto.getWarningType()); + condition.setWarningLevel(dto.getWarningLevel()); + } + warningConditionService.saveBatch(conditions); + return dto; + } + + public boolean updateData(WarningRule dto) { + if(dto.getConditions() == null || dto.getConditions().isEmpty()){ + throw new IllegalArgumentException("请至少配置一条预警规则"); + } + orderData(dto.getConditions()); + updateById(dto); + List conditions = dto.getConditions(); + for (WarningCondition condition : conditions) { +// WarningCondition warningCondition = warningConditionService.checkConditionExists(condition); +// if(warningCondition != null){ +// throw new IllegalArgumentException("对不起,该预警规则已配置"); +// } + condition.setRuleId(dto.getId()); + } + warningConditionService.deleteData(dto.getId()); + + warningConditionService.saveBatch(conditions); + + return true; + } + + + public boolean deleteById(Serializable id) { + removeById(id); + warningConditionService.removeByRuleId(Long.valueOf(id.toString())); + return true; + } + + private void orderData(List warningConditions){ + if (warningConditions == null || warningConditions.size() <= 1) { + return; + } + + warningConditions.sort(Comparator.comparingInt(WarningCondition::getOrder)); + warningConditions.getLast().setRelationType(null); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/WaterAlarmService.java b/src/main/java/com/gunshi/project/ss/service/WaterAlarmService.java new file mode 100644 index 0000000..00c2fef --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/WaterAlarmService.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.entity.so.WaterAlarmPageSo; + +import com.gunshi.project.ss.entity.vo.WaterAlarmCount; +import com.gunshi.project.ss.entity.vo.WaterAlarmTypeCount; +import com.gunshi.project.ss.mapper.WaterAlarmMapper; + +import com.gunshi.project.ss.model.WaterAlarm; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class WaterAlarmService extends ServiceImpl { + + public boolean saveData(WaterAlarm dto) { + dto.setId(IdWorker.getId()); + boolean save = save(dto); + return save; + } + + public Page queryPage(WaterAlarmPageSo pageSo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (pageSo.getStcd() != null) { + queryWrapper.eq(WaterAlarm::getStcd,pageSo.getStcd()); + } + if(pageSo.getType() != null){ + queryWrapper.eq(WaterAlarm::getAlarmType,pageSo.getType()); + } + if(!StringUtils.isBlank(pageSo.getName())){ + queryWrapper.like(WaterAlarm::getStnm,pageSo.getName()); + } + + if(pageSo.getTimeRangeSo() != null){ + queryWrapper.between(WaterAlarm::getAlarmTime,pageSo.getTimeRangeSo().getStart(),pageSo.getTimeRangeSo().getEnd()); + } + queryWrapper.orderByDesc(WaterAlarm::getAlarmTime); + Page waterAlarmPage = this.baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); + return waterAlarmPage; + } + + public List count12(Integer year) { + return this.baseMapper.count12(year); + } + + public List countTypeByYear(Integer year) { + List res = this.baseMapper.countTypeByYear(year); + return res; + } + + public List listStation() { + return this.baseMapper.listStation(); + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/WaterCountAnalysisService.java b/src/main/java/com/gunshi/project/ss/service/WaterCountAnalysisService.java new file mode 100644 index 0000000..ea62033 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/WaterCountAnalysisService.java @@ -0,0 +1,148 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.db.dto.DateRangeSo; +import com.gunshi.project.ss.common.model.StRsvrR; +import com.gunshi.project.ss.entity.vo.WaterAnalysisVo; +import com.gunshi.project.ss.entity.vo.WaterCapacityAnalysisVo; +import com.gunshi.project.ss.model.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class WaterCountAnalysisService { + + @Autowired + private XlPlanService xlPlanService;//兴利计划 + + @Autowired + private StWaterRReorganizeService stWaterRReorganizeService;//供水量整编 + + @Autowired + private WaterDispatchService waterDispatchService;//水量调度 + + @Autowired + private StZvarlBService stZvarlBService;//水位-库容 + + @Autowired + private StRsvrRService stRsvrRService;//水库历史水位 + + @Autowired + private AttResBaseService attResBaseService; + + + public List waterSupplyAnalysis(Serializable id) { + XlPlan byId = xlPlanService.getById(id); + List res = new ArrayList<>(); + WaterAnalysisVo waterAnalysisGGVo = new WaterAnalysisVo(); + waterAnalysisGGVo.setType(0); + WaterAnalysisVo waterAnalysisSTVo = new WaterAnalysisVo(); + waterAnalysisSTVo.setType(1); + res.add(waterAnalysisGGVo); + res.add(waterAnalysisSTVo); + //判断该兴利计划是年度月度 + if(byId == null){ + throw new IllegalArgumentException("对不起,该计划不存在"); + } + //如果是月度 + //计划灌溉供水量 + BigDecimal ggWater = byId.getGgWater(); + waterAnalysisGGVo.setPlanSupply(ggWater); + //计划生态供水量 + BigDecimal stWater = byId.getStWater(); + waterAnalysisSTVo.setPlanSupply(stWater); + Map map; + if(byId.getPlanType().equals(byId.MONTH)){ + map = stWaterRReorganizeService.getWaterSupplyerYeaarOrMonth(byId.MONTH,byId.getPlanDate()); + }else{ + //年度 + map = stWaterRReorganizeService.getWaterSupplyerYeaarOrMonth(byId.YEAR,byId.getPlanDate()); + } + waterAnalysisGGVo.setRealSupply(map.get("gg")); + if(waterAnalysisGGVo.getRealSupply() == null){ + waterAnalysisGGVo.setGapSupply(null); + }else{ + waterAnalysisGGVo.setGapSupply(waterAnalysisGGVo.getRealSupply().subtract(waterAnalysisGGVo.getPlanSupply())); + } + waterAnalysisSTVo.setRealSupply(map.get("st")); + if(waterAnalysisSTVo.getRealSupply() == null){ + waterAnalysisSTVo.setGapSupply(null); + }else{ + waterAnalysisSTVo.setGapSupply(waterAnalysisSTVo.getRealSupply().subtract(waterAnalysisSTVo.getPlanSupply())); + } + return res; + } + + public List waterDispatchAnalysis(Serializable year) { + return waterDispatchService.lambdaQuery().apply("EXTRACT(YEAR FROM dis_start) = {0}", year) + .in(WaterDispatch::getExeStatus, 0, 2) + .list(); + } + + public List waterCapacityAnalysis(DateRangeSo dateRangeSo){ + List res = new ArrayList<>(); + List stZvarlBList = stZvarlBService.list();//获取水位-蓄水量 + stZvarlBList.sort(Comparator.comparing(StZvarlB::getRz)); + //查询时间段的 + List list = attResBaseService.list(); + AttResBase attResBase = list.get(0); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.apply("date_part('hour',tm) = 8") // 获取每天早上八点的数据 + .ge(StRsvrR::getTm,dateRangeSo.getStart()) + .le(StRsvrR::getTm, dateRangeSo.getEnd()) + .eq(StRsvrR::getStcd,attResBase.getStcd()); + queryWrapper.orderByDesc(StRsvrR::getTm);//根据时间降序 + List stRsvrRS = stRsvrRService.getBaseMapper().selectList(queryWrapper);//获取水库的历史时间段的水位 + + for (int i = 0; i < stRsvrRS.size(); i++) { + WaterCapacityAnalysisVo vo = new WaterCapacityAnalysisVo(); + vo.setTm(stRsvrRS.get(i).getTm()); + String rz = stRsvrRS.get(i).getRz();//历史水位 + BigDecimal currentCap = BigDecimal.ZERO; + if(rz != null){ + currentCap = stZvarlBService.getWByZvarl(stZvarlBList,new BigDecimal(rz));//根据水位计算出库容 + vo.setCap(currentCap); + }else{ + currentCap = BigDecimal.ZERO; + vo.setCap(currentCap); + } + + if(i < stRsvrRS.size() - 1){ + //获取前一天的库容(由于是降序排列,前一天的索引是i+1) + BigDecimal prevDayCap = null; + String prevRz = stRsvrRS.get(i + 1).getRz(); + if(prevRz != null){ + prevDayCap = stZvarlBService.getWByZvarl(stZvarlBList, new BigDecimal(prevRz)); + } + + if (prevDayCap == null || BigDecimal.ZERO.compareTo(prevDayCap) == 0) { + vo.setRate(BigDecimal.ZERO.setScale(2, RoundingMode.DOWN)); + } else { + //计算变化率: (当天 - 前一天) / 前一天 * 100 + BigDecimal diff = currentCap.subtract(prevDayCap); + BigDecimal rate = diff.divide(prevDayCap, 4, RoundingMode.HALF_UP) + .multiply(new BigDecimal(100)); + vo.setRate(rate.setScale(2, RoundingMode.HALF_UP)); + } + }else{ + //最后一天(时间上最早的一天)没有前一天数据,变化率为0 + vo.setRate(BigDecimal.ZERO.setScale(2, RoundingMode.DOWN)); + } + res.add(vo); + } + return res; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/WaterDeviceService.java b/src/main/java/com/gunshi/project/ss/service/WaterDeviceService.java new file mode 100644 index 0000000..85f460e --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/WaterDeviceService.java @@ -0,0 +1,35 @@ +package com.gunshi.project.ss.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.gunshi.project.ss.entity.so.WaterDevicePageSo; +import com.gunshi.project.ss.mapper.WaterDeviceMapper; +import com.gunshi.project.ss.common.model.JcskByB; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class WaterDeviceService extends ServiceImpl { + + public Page pageQuery(WaterDevicePageSo page) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + if(ObjectUtils.isNotNull(page.getCode())){ + queryWrapper.eq(JcskByB::getCode, page.getCode()); + } + if(ObjectUtils.isNotNull(page.getName())){ + queryWrapper.like(JcskByB::getName, page.getName()); + } + if(ObjectUtils.isNotNull(page.getMnNo())){ + queryWrapper.like(JcskByB::getMnNo, page.getMnNo()); + } + Page res = this.page(page.getPageSo().toPage(), queryWrapper); + return res; + } + +} diff --git a/src/main/java/com/gunshi/project/ss/service/WaterDispatchService.java b/src/main/java/com/gunshi/project/ss/service/WaterDispatchService.java new file mode 100644 index 0000000..38b3fa0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/WaterDispatchService.java @@ -0,0 +1,115 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.WaterDispatchPageSo; +import com.gunshi.project.ss.entity.vo.WdCountVo; +import com.gunshi.project.ss.mapper.WaterDispatchMapper; +import com.gunshi.project.ss.model.WaterDispatch; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.mapper.SysUserMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.Year; +import java.util.Date; +import java.util.Objects; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class WaterDispatchService extends ServiceImpl { + + @Autowired + private SysUserMapper sysUserMapper; + + public boolean saveData(WaterDispatch dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(WaterDispatch::getName, dto.getName()); + WaterDispatch one = getOne(queryWrapper); + if(Objects.nonNull(one)){ + throw new IllegalArgumentException("该调度已存在"); + } + if(dto.getIsDistribute() != null && dto.getIsDistribute() == 0){//如果选择下发 + dto.setExeStatus(2);//状态改为下发中 + }else{ + dto.setExeStatus(1);//否则为待下发 + dto.setIsDistribute(1); + } + dto.setFillTime(new Date()); + save(dto); + return true; + } + + public boolean feedBack(WaterDispatch dto) { + WaterDispatch byId = getById(dto.getId()); + if(byId == null){ + throw new IllegalArgumentException("抱歉,该调度不存在"); + } +// if(!dto.getExePersonId().equals(byId.getExePersonId())){ +// throw new IllegalArgumentException("对不起,您没有权限进行反馈"); +// } + if(dto.getIsCompelete() == 0){ + dto.setExeStatus(0); + } + dto.setResTm(new Date()); + dto.setFillTime(byId.getFillTime()); + updateById(dto); + return true; + } + + public boolean update(WaterDispatch dto) { + WaterDispatch byId = getById(dto.getId()); + if(byId == null){ + throw new IllegalArgumentException("抱歉,该调度不存在"); + } + if(dto.getIsDistribute() != null && dto.getIsDistribute() == 0){//如果选择下发 + dto.setExeStatus(2);//状态改为下发中 + }else{ + dto.setExeStatus(1);//否则为待下发 + dto.setIsDistribute(1); + } + updateById(dto); + return true; + } + + public Page pageQuery(WaterDispatchPageSo pageSo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(pageSo.getName())){ + queryWrapper.like(WaterDispatch::getName, pageSo.getName()); + } + if(pageSo.getStatus() != null){ + queryWrapper.eq(WaterDispatch::getExeStatus, pageSo.getStatus()); + } + Page waterDispatchPage = baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); + for (WaterDispatch record : waterDispatchPage.getRecords()) { + if(record.getExePersonId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getExePersonId())); + if(sysUser != null){ + record.setExePersonName(sysUser.getNickName()); + } + } + if(record.getResPersonId() != null){ + SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(record.getResPersonId())); + if(sysUser != null){ + record.setResPersonName(sysUser.getNickName()); + } + } + } + return waterDispatchPage; + } + + public WdCountVo getCount() { + int currYear = Year.now().getValue(); + int count = baseMapper.countCompeleteByYear(currYear); + WdCountVo vo = new WdCountVo(); + vo.setYear(String.valueOf(currYear)); + vo.setCount(count); + return vo; + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/XlPlanService.java b/src/main/java/com/gunshi/project/ss/service/XlPlanService.java new file mode 100644 index 0000000..bea7afb --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/XlPlanService.java @@ -0,0 +1,59 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gunshi.project.ss.entity.so.XlPlanPageSo; +import com.gunshi.project.ss.mapper.XlPlanMapper; +import com.gunshi.project.ss.model.XlPlan; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.Objects; + +@Service +@Slf4j +@Transactional(rollbackFor = Exception.class) +public class XlPlanService extends ServiceImpl { + + + public boolean saveData(XlPlan dto) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(XlPlan::getPlanName, dto.getPlanName()); + queryWrapper.eq(XlPlan::getPlanType, dto.getPlanType()); + queryWrapper.eq(XlPlan::getPlanDate, dto.getPlanDate()); + XlPlan xlPlan = baseMapper.selectOne(queryWrapper); + if(Objects.nonNull(xlPlan)){ + throw new IllegalArgumentException("该计划已存在,请检查"); + } + dto.setFillDate(new Date()); + save(dto); + return true; + } + + public boolean update(XlPlan dto) { + XlPlan byId = getById(dto.getId()); + if(Objects.isNull(byId)){ + throw new IllegalArgumentException("该计划不存在,无法删除"); + } + boolean flag = updateById(dto); + return flag; + } + + public Page pageQuery(XlPlanPageSo pageSo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if(!StringUtils.isBlank(pageSo.getName())){ + queryWrapper.like(XlPlan::getPlanName, pageSo.getName()); + } + if(pageSo.getType() != null){ + queryWrapper.eq(XlPlan::getPlanType, pageSo.getType()); + } + queryWrapper.orderByDesc(XlPlan::getFillDate); + Page xlPlanPage = baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); + return xlPlanPage; + } +} diff --git a/src/main/java/com/gunshi/project/ss/system/AppUpdateController.java b/src/main/java/com/gunshi/project/ss/system/AppUpdateController.java new file mode 100644 index 0000000..4521c3a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/AppUpdateController.java @@ -0,0 +1,136 @@ +package com.gunshi.project.ss.system; + +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.io.*; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@RestController +@RequestMapping("/appUpdate") +@Tag(name = "app端更新") +public class AppUpdateController { + + private static final String BASE_PATH = "/app/uploadPath/upload"; + + @GetMapping("/getApp/**") + public void downloadFile(HttpServletRequest request, HttpServletResponse response) throws Exception { + // 1. 获取URI + String uri = request.getRequestURI(); + System.out.println("收到请求URI: " + uri); + + // 2. 使用正则表达式提取日期部分和文件名 + // 匹配模式:/YYYY/MM/DD/文件名.apk + Pattern pattern = Pattern.compile("/(\\d{4}/\\d{2}/\\d{2}/[^/]+\\.apk)"); + Matcher matcher = pattern.matcher(uri); + + String path; + if (matcher.find()) { + // 找到日期文件路径,例如:2025/12/19/__UNI__DB7153B__20251218172415(1)_20251219102301A001.apk + path = matcher.group(1); + System.out.println("提取的日期文件路径: " + path); + } else { + // 如果没有找到日期格式的路径,使用原来的逻辑 + // 找到 "/getApp/" 的位置 + int startIndex = uri.indexOf("/getApp/"); + if (startIndex == -1) { + response.sendError(HttpServletResponse.SC_BAD_REQUEST, "URL格式错误"); + return; + } + + // 提取路径(去掉"/getApp/") + path = uri.substring(startIndex + "/getApp/".length()); + System.out.println("提取的相对路径: " + path); + + // 可选:移除可能的前缀如 "profile/upload/" + if (path.startsWith("profile/upload/")) { + path = path.substring("profile/upload/".length()); + System.out.println("移除profile/upload前缀后: " + path); + } + } + + // 3. 构建文件路径 + String fullPath = BASE_PATH + "/" + path; + System.out.println("完整文件路径: " + fullPath); + + File file = new File(fullPath); + + // 4. 检查文件是否存在 + if (!file.exists()) { + System.out.println("文件不存在: " + fullPath); + response.sendError(HttpServletResponse.SC_NOT_FOUND, "文件不存在"); + return; + } + + if (!file.isFile()) { + System.out.println("不是文件: " + fullPath); + response.sendError(HttpServletResponse.SC_NOT_FOUND, "不是有效的文件"); + return; + } + + System.out.println("文件大小: " + file.length() + " bytes"); + + // 5. 设置响应头 + String fileName = file.getName(); + String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString()) + .replaceAll("\\+", "%20"); + + // 根据文件扩展名设置Content-Type + String contentType = getContentType(fileName); + response.setContentType(contentType); + response.setHeader("Content-Disposition", + "attachment; filename=\"" + encodedFileName + "\""); + response.setContentLengthLong(file.length()); + + // 6. 流式传输文件 + try (InputStream in = new FileInputStream(file); + OutputStream out = response.getOutputStream()) { + + byte[] buffer = new byte[8192]; // 使用8KB缓冲区 + int bytesRead; + long totalBytes = 0; + + while ((bytesRead = in.read(buffer)) != -1) { + out.write(buffer, 0, bytesRead); + totalBytes += bytesRead; + } + + System.out.println("成功传输字节数: " + totalBytes); + out.flush(); + + } catch (IOException e) { + // 客户端可能中断了下载 + System.out.println("下载中断或错误: " + e.getMessage()); + if (!e.getMessage().contains("Broken pipe") && + !e.getMessage().contains("Connection reset")) { + throw e; + } + } + } + + /** + * 根据文件扩展名获取Content-Type + */ + private String getContentType(String fileName) { + if (fileName.toLowerCase().endsWith(".apk")) { + return "application/vnd.android.package-archive"; + } else if (fileName.toLowerCase().endsWith(".ipa")) { + return "application/iphone"; + } else if (fileName.toLowerCase().endsWith(".txt")) { + return "text/plain"; + } else if (fileName.toLowerCase().endsWith(".pdf")) { + return "application/pdf"; + } else if (fileName.toLowerCase().endsWith(".zip")) { + return "application/zip"; + } else { + return "application/octet-stream"; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/system/SysUserLoginLogController.java b/src/main/java/com/gunshi/project/ss/system/SysUserLoginLogController.java new file mode 100644 index 0000000..99efe4b --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/SysUserLoginLogController.java @@ -0,0 +1,267 @@ +package com.gunshi.project.ss.system; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.annotation.Get; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.project.ss.system.model.SysUserLoginLog; +import com.gunshi.project.ss.system.model.SysVisitMenuLog; +import com.gunshi.project.ss.system.mapper.SysUserLoginLogMapper; +import com.gunshi.project.ss.system.mapper.SysVisitMenuLogMapper; +import com.gunshi.project.ss.system.so.UserLoginLogPageSo; +import com.gunshi.project.ss.system.so.UserLoginLogSo; +import com.gunshi.project.ss.system.vo.TodayCountVo; +import com.gunshi.project.ss.system.vo.UserCountVo; +import com.gunshi.project.ss.system.vo.VisitCountVo; +import com.gunshi.project.ss.util.DateUtil; +import com.ruoyi.common.utils.SecurityUtils; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +/** + * Description: + * Created by XuSan on 2024/6/20. + * + * @author XuSan + * @version 1.0 + */ +@RestController +@RequestMapping("/userLoginLog") +@Tag(name = "用户访问记录") +public class SysUserLoginLogController { + + @Autowired + private SysUserLoginLogMapper thisMapper; + + @Autowired + private SysVisitMenuLogMapper thisMenuMapper; + +// @Autowired +// private ProjectCommonService projectCommonService; + + @Post(path = "/page", summary = "分页查询") + public R> page(@RequestBody @Validated UserLoginLogPageSo dto) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + + if (dto.getName() != null) { + queryWrapper.eq(SysUserLoginLog::getCreateId, dto.getName()); + } + + return R.ok(thisMapper.selectPage(dto.getPageSo().toPage(), queryWrapper)); + } + + @Get(path = "/todayCount", summary = "今日数据总览") + public R todayCount() { + + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(SysUserLoginLog.class) + .between(SysUserLoginLog::getCreateDate, DateUtil.convertStringToDate(LocalDate.now().toString() + " 00:00:00"), new Date()); + + List logs = thisMapper.selectList(wrapper); + + if (CollectionUtils.isEmpty(logs)) { + return R.ok(null); + } + + TodayCountVo vo = new TodayCountVo(); + + vo.setWeb1Count( + logs.stream() + .filter(o -> "0".equals(o.getLoginType())) + .count()); + + List webTimes = logs.stream() + .filter(o -> "0".equals(o.getLoginType())) + .filter(o -> o.getLogoutTime() != null && o.getLoginTime() != null) + .map(o -> o.getLogoutTime().getTime() - o.getLoginTime().getTime()) + .collect(Collectors.toList()); + + BigDecimal divisor = BigDecimal.valueOf(1000 * 60 * 60); + if(!webTimes.isEmpty()){ + vo.setWeb3Count( + BigDecimal.valueOf(webTimes.stream().mapToLong(o -> o).sum()) + .divide(BigDecimal.valueOf(webTimes.size()), 2, RoundingMode.HALF_UP) + .divide(divisor, 2, RoundingMode.HALF_UP) + ); + }else{ + vo.setWeb3Count(BigDecimal.ZERO); + } + + + vo.setApp1Count( + logs.stream() + .filter(o -> "1".equals(o.getLoginType())) + .count() + ); + + List appTimes = logs.stream() + .filter(o -> "1".equals(o.getLoginType())) + .filter(o -> o.getLogoutTime() != null && o.getLoginTime() != null) + .map(o -> o.getLogoutTime().getTime() - o.getLoginTime().getTime()) + .collect(Collectors.toList()); + if(!appTimes.isEmpty()){ + vo.setApp3Count( + BigDecimal.valueOf(appTimes.stream().mapToLong(o -> o).sum()) + .divide(BigDecimal.valueOf(appTimes.size()),2, RoundingMode.HALF_UP) + .divide(divisor,2, RoundingMode.HALF_UP) + ); + }else{ + vo.setApp3Count(BigDecimal.ZERO); + } + + + + Date start = DateUtil.convertStringToDate(LocalDate.now().toString() + " 00:00:00"); + LambdaQueryWrapper wrapperMenuLog = new LambdaQueryWrapper<>(); + wrapperMenuLog.between(SysVisitMenuLog::getCreateTime,start,new Date()); + + vo.setWeb2Count(0L); + vo.setApp2Count(0L); + + List wrapperMenuLogs = thisMenuMapper.selectList(wrapperMenuLog); + if (CollectionUtils.isNotEmpty(wrapperMenuLogs)) { + vo.setWeb2Count( + wrapperMenuLogs.stream() + .filter(o -> "0".equals(o.getLoginType())) + .count() + ); + + vo.setApp2Count( + wrapperMenuLogs.stream() + .filter(o -> "1".equals(o.getLoginType())) + .count() + ); + } + + return R.ok(vo); + } + + + @Post(path = "/visitCount", summary = "访问用户前十") + public R visitCount(@RequestBody @Validated UserLoginLogSo so) { + //C N M 的xjm,你妈的写的什么Ghots代码?嗯哼? 你TM自己都不测一下? +// List logs = thisMapper.getUserLoginLog(so.getStm(), so.getEtm()); + List logs = thisMenuMapper.getUserVisitLog(so.getStm(), so.getEtm()); + VisitCountVo vo = new VisitCountVo(); + if (CollectionUtils.isEmpty(logs)) { + return R.ok(vo); + } + vo.setWebList( + logs.stream() + .filter(o -> "0".equals(o.getLoginType())) + .collect(Collectors.groupingBy(SysVisitMenuLog::getName, Collectors.counting())) + .entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) // 按数量降序排序 + .limit(10) // 取前10名 + .map(o -> { + VisitCountVo.VisitCountDataVo dataVo = new VisitCountVo.VisitCountDataVo(); + dataVo.setCount(o.getValue()); + dataVo.setName(o.getKey()); + return dataVo; + }) + .collect(Collectors.toList()) + ); + + vo.setAppList( + logs.stream() + .filter(o -> "1".equals(o.getLoginType())) + .collect(Collectors.groupingBy(SysVisitMenuLog::getName, Collectors.counting())) + .entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) // 按数量降序排序 + .limit(10) // 取前10名 + .map(o -> { + VisitCountVo.VisitCountDataVo dataVo = new VisitCountVo.VisitCountDataVo(); + dataVo.setCount(o.getValue()); + dataVo.setName(o.getKey()); + return dataVo; + }) + .collect(Collectors.toList()) + ); + return R.ok(vo); + } + + @Post(path = "/userCount", summary = "日活跃用户数") + public R userCount(@RequestBody @Validated UserLoginLogSo so) { + + List logs = thisMapper.getUserLoginLog(so.getStm(), so.getEtm()); + + UserCountVo vo = new UserCountVo(); + if (CollectionUtils.isEmpty(logs)) { + return R.ok(vo); + } + + vo.setWebList(logs.stream() + .filter(o -> "0".equals(o.getLoginType())) + .collect(Collectors.groupingBy(SysUserLoginLog::getCreateDate, Collectors.counting())) + .entrySet().stream() + .map(o -> { + UserCountVo.UserCountDataVo dataVo = new UserCountVo.UserCountDataVo(); + dataVo.setCount(o.getValue()); + dataVo.setCreateDate(o.getKey()); + return dataVo; + }) + .sorted(Comparator.comparing(UserCountVo.UserCountDataVo::getCreateDate)) + .collect(Collectors.toList()) + ); + + vo.setAppList(logs.stream() + .filter(o -> "1".equals(o.getLoginType())) + .collect(Collectors.groupingBy(SysUserLoginLog::getCreateDate, Collectors.counting())) + .entrySet().stream() + .map(o -> { + UserCountVo.UserCountDataVo dataVo = new UserCountVo.UserCountDataVo(); + dataVo.setCount(o.getValue()); + dataVo.setCreateDate(o.getKey()); + return dataVo; + }) + .sorted(Comparator.comparing(UserCountVo.UserCountDataVo::getCreateDate)) + .collect(Collectors.toList()) + ); + return R.ok(vo); + } + + @Post(path = "/insert", summary = "添加") + public R insert(@RequestBody @Validated SysUserLoginLog dto) { + + if (Objects.isNull(dto.getCreateId())) { + Long loginUserId = SecurityUtils.getUserId(); + dto.setCreateId(loginUserId); + } + + // 查询当前时间是否存在 + List uLogs = thisMapper.selectList( + Wrappers + .lambdaQuery(SysUserLoginLog.class) + .eq(SysUserLoginLog::getCreateId,dto.getCreateId()) + .eq(SysUserLoginLog::getCreateDate, new Date())); + + + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(uLogs)) { + throw new RuntimeException("当前数据已存在"); + } + + Date date = new Date(); + + + // 第一次登录 + dto + .setCreateDate(date) + .setLoginTime(date) + .setLogoutTime(date); + + return R.ok(thisMapper.insert(dto) == 1); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/system/SysVisitMenuLogController.java b/src/main/java/com/gunshi/project/ss/system/SysVisitMenuLogController.java new file mode 100644 index 0000000..053895a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/SysVisitMenuLogController.java @@ -0,0 +1,95 @@ +package com.gunshi.project.ss.system; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.core.annotation.Post; +import com.gunshi.core.result.R; +import com.gunshi.core.result.exception.NeedLoginException; +import com.gunshi.project.ss.system.mapper.SysVisitMenuLogMapper; +import com.gunshi.project.ss.system.model.SysVisitMenuLog; +import com.gunshi.project.ss.system.so.VisitMenuLogPageSo; +import com.ruoyi.common.utils.SecurityUtils; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +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; + +/** + * Description: + * Created by XuSan on 2024/6/20. + * + * @author XuSan + * @version 1.0 + */ +@Slf4j +@RestController +@RequestMapping("/visitMenuLog") +@Tag(name = "页面访问记录") +public class SysVisitMenuLogController { + + @Autowired + private SysVisitMenuLogMapper thisMapper; + + +// @Resource +// private ProjectCommonService projectCommonService; + @Post(path = "/page", summary = "分页查询") + public R> page(@RequestBody @Validated VisitMenuLogPageSo dto) { +// LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); +// +// if (dto.getMenu() != null) { +// queryWrapper.like(SysVisitMenuLog::getMenu1, dto.getMenu()); +// queryWrapper.like(SysVisitMenuLog::getMenu2, dto.getMenu()); +// queryWrapper.like(SysVisitMenuLog::getMenu3, dto.getMenu()); +// } + + return R.ok(thisMapper.pageQuery(dto.getPageSo().toPage(),dto)); + } + + @Post(path = "/count", summary = "统计查询") + public R> count(@RequestBody @Validated VisitMenuLogPageSo dto) { + + LambdaQueryWrapper queryWrapper = Wrappers.query(SysVisitMenuLog.class) + .select("COUNT(ID) COUNT, menu2, menu1,menu3") + .lambda(); + if(dto.getLoginType() != null){ + queryWrapper.eq(SysVisitMenuLog::getLoginType, dto.getLoginType()); + } + + if (dto.getStm() != null) { + queryWrapper.ge(SysVisitMenuLog::getCreateTime, dto.getStm()); + } + + if (dto.getEtm() != null) { + queryWrapper.le(SysVisitMenuLog::getCreateTime, dto.getEtm()); + } + + queryWrapper.groupBy(SysVisitMenuLog::getMenu2, SysVisitMenuLog::getMenu1,SysVisitMenuLog::getMenu3) + .last("ORDER BY COUNT DESC"); + List list = thisMapper.selectList(queryWrapper); + return R.ok(list); + } + + @Post(path = "/insert", summary = "添加") + public R insert(@RequestBody @Validated SysVisitMenuLog dto) { + + Long loginUserId = null; + // 获取用户id + try { + loginUserId = SecurityUtils.getUserId(); + } catch (NeedLoginException e) { + log.info("获取登录账号id," + e.getMessage(), e); + } + if (null == dto.getCreateId() && null != loginUserId){ + dto.setCreateId(loginUserId); + } + return R.ok(thisMapper.insert(dto) == 1); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/system/aspect/SysUserLogAspect.java b/src/main/java/com/gunshi/project/ss/system/aspect/SysUserLogAspect.java new file mode 100644 index 0000000..09c8ae1 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/aspect/SysUserLogAspect.java @@ -0,0 +1,123 @@ +package com.gunshi.project.ss.system.aspect; + +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.gunshi.project.ss.system.mapper.SysUserLoginLogMapper; +import com.gunshi.project.ss.system.model.SysUserLoginLog; +import com.gunshi.project.ss.system.utils.ReqUtil; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.SecurityUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * Description: + * Created by XuSan on 2024/6/20. + * + * @author XuSan + * @version 1.0 + */ +@Aspect +@Slf4j +@Component +public class SysUserLogAspect { + + @Autowired + private SysUserLoginLogMapper userLoginLogMapper; + +// @Autowired +// private ProjectCommonService projectCommonService; + + + @Pointcut("execution(public * com.gunshi.project.ss.controller..*Controller.*(..))") + public void controllerPointcut() { + } + + @Before("controllerPointcut()") + public void doBefore(JoinPoint joinPoint) throws Throwable { + + log.info("进入记录日志切面"); + + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = attributes.getRequest(); + + Long loginUserId = null; + // 获取用户id + try { +// loginUserId = projectCommonService.getLoginUserId(); + loginUserId = SecurityUtils.getUserId(); + } catch (ServiceException e) { +// log.info("获取登录账号id," + e.getMessage(), e); + log.info("获取登录账号id异常,请重新登录"); + loginUserId = 1l; + } + if (loginUserId != null) { + + String loginType = request.getHeader("loginType"); + if (StringUtils.isBlank(loginType)){ + loginType = "0"; + } + + // 查询当前时间是否存在 + List uLogs = userLoginLogMapper.selectList( + Wrappers + .lambdaQuery(SysUserLoginLog.class) + .eq(SysUserLoginLog::getLoginType, loginType) + .eq(SysUserLoginLog::getCreateDate, new Date()) + .eq(SysUserLoginLog::getCreateId, loginUserId)); + + Integer id = null; + SysUserLoginLog o = new SysUserLoginLog(); + if (CollectionUtils.isNotEmpty(uLogs)) { + o = uLogs.getFirst(); + id = o.getId(); + } + + Date date = new Date(); + + + if (Objects.isNull(id)) { + String ip = request.getHeader("ClientIp"); + + if (StringUtils.isBlank(ip)) { + ip = ReqUtil.getIpAddress(request); + } + + // 第一次登录 + o.setLoginType(loginType); + o.setCreateId(loginUserId) + .setCreateDate(date) + .setLoginTime(date) + .setIp(ip) + .setLogoutTime(date); + if (userLoginLogMapper.insert(o) != 1) { + log.error("插入用户登录日志失败"); + } + } else { + o.setId(id); + o.setLogoutTime(date); + if (userLoginLogMapper.updateById(o) != 1) { + log.error("更新用户登录日志失败"); + } + } + + } + log.info("记录日志切面结束"); + + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/system/mapper/SysUserLoginLogMapper.java b/src/main/java/com/gunshi/project/ss/system/mapper/SysUserLoginLogMapper.java new file mode 100644 index 0000000..706d8a8 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/mapper/SysUserLoginLogMapper.java @@ -0,0 +1,24 @@ +package com.gunshi.project.ss.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gunshi.project.ss.system.model.SysUserLoginLog; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysUserLoginLogMapper extends BaseMapper { + + @Select(""" + + """) + List getUserLoginLog(@Param("stm") Date stm , @Param("etm") Date etm); + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/system/mapper/SysVisitMenuLogMapper.java b/src/main/java/com/gunshi/project/ss/system/mapper/SysVisitMenuLogMapper.java new file mode 100644 index 0000000..9ae0f4d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/mapper/SysVisitMenuLogMapper.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gunshi.project.ss.system.model.SysVisitMenuLog; +import com.gunshi.project.ss.system.so.VisitMenuLogPageSo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface SysVisitMenuLogMapper extends BaseMapper { + + + @Select(""" + + """) + Page pageQuery(Page page, VisitMenuLogPageSo dto); + + + @Select(""" + + """) + List getUserVisitLog(@Param("stm") Date stm, @Param("etm") Date etm); +} diff --git a/src/main/java/com/gunshi/project/ss/system/model/SysUserLoginLog.java b/src/main/java/com/gunshi/project/ss/system/model/SysUserLoginLog.java new file mode 100644 index 0000000..553f944 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/model/SysUserLoginLog.java @@ -0,0 +1,66 @@ +package com.gunshi.project.ss.system.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 流域基础信息表 + */ +@Schema(description="用户登录日志") +@Data +@TableName(value = "public.sys_user_login_log") +@Accessors(chain = true) +public class SysUserLoginLog implements Serializable { + + @TableId(value = "id", type = IdType.AUTO) + @Schema(description="主键id") + @JsonSerialize(using = ToStringSerializer.class) + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Integer id; + + @TableField(value = "create_id") + @Schema(description="用户编号") + private Long createId; + + @TableField(value = "login_type") + @Schema(description="登录类型, 0: web, 1:app") + private String loginType; + + @TableField(value = "ip") + @Schema(description="ip") + private String ip; + + @TableField(value = "create_date") + @Schema(description="日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date createDate; + + + @TableField(value = "login_time") + @Schema(description="登录时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date loginTime; + + + @TableField(value = "logout_time") + @Schema(description="登出时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date logoutTime; + + + @TableField(exist = false) + @Schema(description="用户名称") + private String userName; +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/system/model/SysVisitMenuLog.java b/src/main/java/com/gunshi/project/ss/system/model/SysVisitMenuLog.java new file mode 100644 index 0000000..fb4a531 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/model/SysVisitMenuLog.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.system.model; + +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 com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 流域基础信息表 + */ +@Schema(description="菜单访问日志") +@Data +@TableName(value = "public.sys_visit_menu_log") +public class SysVisitMenuLog implements Serializable { + + @TableId(value = "id", type = IdType.AUTO) + @Schema(description="主键id") + @JsonSerialize(using = ToStringSerializer.class) + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Integer id; + + @TableField(value = "create_id") + @Schema(description="用户编号") + private Long createId; + + @TableField(value = "login_type") + @Schema(description="登录类型, 0: web, 1:app") + private String loginType; + + @TableField(value = "create_time") + @Schema(description="创建时间") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD_HH_MM_SS, timezone = "GMT+8") + private Date createTime; + + @TableField(value = "menu1") + @Schema(description="菜单1") + private String menu1; + + @TableField(value = "menu2") + @Schema(description="菜单2") + private String menu2; + + @TableField(value = "menu3") + @Schema(description="菜单3") + private String menu3; + + @TableField(exist = false) + @Schema(description="统计数量") + private String count; + + @TableField(exist = false) + @Schema(description = "名称") + private String name; + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/system/so/UserLoginLogPageSo.java b/src/main/java/com/gunshi/project/ss/system/so/UserLoginLogPageSo.java new file mode 100644 index 0000000..6ffcffc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/so/UserLoginLogPageSo.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.system.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; + +/** + * + * Created by wanyan on 2024/4/7. + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "用户访问记录分页查询条件") +public class UserLoginLogPageSo { + + @NotNull(message = "分页参数不能为空") + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="名称") + private String name; + + @Schema(description="开始时间 yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date stm; + + @Schema(description="结束时间 yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date etm; + +} diff --git a/src/main/java/com/gunshi/project/ss/system/so/UserLoginLogSo.java b/src/main/java/com/gunshi/project/ss/system/so/UserLoginLogSo.java new file mode 100644 index 0000000..ad2b0b7 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/so/UserLoginLogSo.java @@ -0,0 +1,32 @@ +package com.gunshi.project.ss.system.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Date; + +/** + * + * Created by wanyan on 2024/4/7. + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "用户访问记录统计查询条件") +public class UserLoginLogSo { + + + @Schema(description="开始时间 yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @NotNull + private Date stm; + + @Schema(description="结束时间 yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @NotNull + private Date etm; + +} diff --git a/src/main/java/com/gunshi/project/ss/system/so/VisitMenuLogPageSo.java b/src/main/java/com/gunshi/project/ss/system/so/VisitMenuLogPageSo.java new file mode 100644 index 0000000..f5821fd --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/so/VisitMenuLogPageSo.java @@ -0,0 +1,41 @@ +package com.gunshi.project.ss.system.so; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.db.dto.PageSo; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * + * Created by wanyan on 2024/4/7. + * + * @author wanyan + * @version 1.0 + */ +@Data +@Schema(description = "页面访问记录分页查询条件") +public class VisitMenuLogPageSo { + + @Schema(description = "分页参数") + private PageSo pageSo; + + @Schema(description="菜单名") + private String menu; + + @Schema(description="名称") + private String name; + + @Schema(description="登录类型, 0: web, 1:app") + private String loginType; + + @Schema(description="开始时间 yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date stm; + + @Schema(description="结束时间 yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date etm; + +} diff --git a/src/main/java/com/gunshi/project/ss/system/utils/ReqUtil.java b/src/main/java/com/gunshi/project/ss/system/utils/ReqUtil.java new file mode 100644 index 0000000..54a6f1f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/utils/ReqUtil.java @@ -0,0 +1,150 @@ +package com.gunshi.project.ss.system.utils; + + +import jakarta.servlet.http.HttpServletRequest; + +public class ReqUtil { +// private static DbConfig config = null; + private static String dbPath = null; + +// private static DbSearcher searcher = null; + + /** + * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, + * 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢? + * 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。 + * 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100 + * 用户真实IP为: 192.168.1.110 + * + * @param request + * @return + */ + public static String getIpAddress(HttpServletRequest request) {// 获取客户端ip地址 + String clientIp = request.getHeader("x-forwarded-for"); + + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("Proxy-Client-IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("WL-Proxy-Client-IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getRemoteAddr(); + } + /* + * 对于获取到多ip的情况下,找到公网ip. + */ + String sIP = null; + if (clientIp != null && !clientIp.contains("unknown") && clientIp.indexOf(",") > 0) { + String[] ipsz = clientIp.split(","); + for (String anIpsz : ipsz) { + if (!isInnerIP(anIpsz.trim())) { + sIP = anIpsz.trim(); + break; + } + } + /* + * 如果多ip都是内网ip,则取第一个ip. + */ + if (null == sIP) { + sIP = ipsz[0].trim(); + } + clientIp = sIP; + } + if (clientIp != null && clientIp.contains("unknown")) { + clientIp = clientIp.replaceAll("unknown,", ""); + clientIp = clientIp.trim(); + } + if ("".equals(clientIp) || null == clientIp) { + clientIp = "127.0.0.1"; + } + return clientIp; + } + + /** + * 判断IP是否是内网地址 + * + * @param ipAddress ip地址 + * @return 是否是内网地址 + */ + public static boolean isInnerIP(String ipAddress) { + boolean isInnerIp; + long ipNum = getIpNum(ipAddress); + /** + 私有IP:A类 10.0.0.0-10.255.255.255 + B类 172.16.0.0-172.31.255.255 + C类 192.168.0.0-192.168.255.255 + 当然,还有127这个网段是环回地址 + **/ + long aBegin = getIpNum("10.0.0.0"); + long aEnd = getIpNum("10.255.255.255"); + + long bBegin = getIpNum("172.16.0.0"); + long bEnd = getIpNum("172.31.255.255"); + + long cBegin = getIpNum("192.168.0.0"); + long cEnd = getIpNum("192.168.255.255"); + isInnerIp = + isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || ipAddress.equals("127.0.0.1"); + return isInnerIp; + } + + private static long getIpNum(String ipAddress) { + String[] ip = ipAddress.split("\\."); + long a = Integer.parseInt(ip[0]); + long b = Integer.parseInt(ip[1]); + long c = Integer.parseInt(ip[2]); + long d = Integer.parseInt(ip[3]); + + return a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; + } + + private static boolean isInner(long userIp, long begin, long end) { + return (userIp >= begin) && (userIp <= end); + } + + public static String getRealIP(HttpServletRequest request) { + // 获取客户端ip地址 + String clientIp = request.getHeader("x-forwarded-for"); + + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getRemoteAddr(); + } + + String[] clientIps = clientIp.split(","); + if (clientIps.length <= 1) return clientIp.trim(); + + // 判断是否来自CDN + if (isComefromCDN(request)) { + if (clientIps.length >= 2) return clientIps[clientIps.length - 2].trim(); + } + + return clientIps[clientIps.length - 1].trim(); + } + + private static boolean isComefromCDN(HttpServletRequest request) { + String host = request.getHeader("host"); + return host.contains("www.189.cn") || host.contains("shouji.189.cn") || host.contains("image2.chinatelecom-ec" + + ".com") || host.contains("image1.chinatelecom-ec.com"); + } + +// public static synchronized String getRegion(String ip) { +// if (StrKit.isBlank(ip)) return null; +// boolean isIpAddress = Util.isIpAddress(ip); +// if (!isIpAddress) return null; +// try { +// if (searcher == null) { +// if (null == config) config = new DbConfig(); +// if (null == dbPath) dbPath = ReqUtil.class.getResource("/ip2region/ip2region.db").getPath(); +// searcher = new DbSearcher(config, dbPath); +// } +// +// DataBlock dataBlock = searcher.binarySearch(ip); +// return dataBlock.getRegion(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// return null; +// } +} diff --git a/src/main/java/com/gunshi/project/ss/system/vo/TodayCountVo.java b/src/main/java/com/gunshi/project/ss/system/vo/TodayCountVo.java new file mode 100644 index 0000000..5d1e2d9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/vo/TodayCountVo.java @@ -0,0 +1,36 @@ +package com.gunshi.project.ss.system.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Description: + * Created by XuSan on 2024/6/25. + * + * @author XuSan + * @version 1.0 + */ +@Data +public class TodayCountVo { + + @Schema(description = "WEB端访问次数") + private Long web1Count; + + @Schema(description = "WEB端浏览次数") + private Long web2Count; + + @Schema(description = "WEB端平均访问时长") + private BigDecimal web3Count; + + @Schema(description = "移动端访问次数") + private Long app1Count; + + @Schema(description = "移动端浏览次数") + private Long app2Count; + + @Schema(description = "移动端平均访问时长") + private BigDecimal app3Count; + +} diff --git a/src/main/java/com/gunshi/project/ss/system/vo/UserCountVo.java b/src/main/java/com/gunshi/project/ss/system/vo/UserCountVo.java new file mode 100644 index 0000000..902d74a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/vo/UserCountVo.java @@ -0,0 +1,37 @@ +package com.gunshi.project.ss.system.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gunshi.core.dateformat.DateFormatString; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/6/25. + * + * @author XuSan + * @version 1.0 + */ +@Data +public class UserCountVo { + + @Schema(description = "web统计数据") + private List webList; + + @Schema(description = "app统计数据") + private List appList; + + @Data + public static class UserCountDataVo { + + @Schema(description="日期") + @JsonFormat(pattern = DateFormatString.YYYY_MM_DD, timezone = "GMT+8") + private Date createDate; + + @Schema(description = "统计数据") + private Long count; + } +} diff --git a/src/main/java/com/gunshi/project/ss/system/vo/VisitCountVo.java b/src/main/java/com/gunshi/project/ss/system/vo/VisitCountVo.java new file mode 100644 index 0000000..f5aae7f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/system/vo/VisitCountVo.java @@ -0,0 +1,33 @@ +package com.gunshi.project.ss.system.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/6/25. + * + * @author XuSan + * @version 1.0 + */ +@Data +public class VisitCountVo { + + @Schema(description = "web统计数据") + private List webList; + + @Schema(description = "app统计数据") + private List appList; + + @Data + public static class VisitCountDataVo { + + @Schema(description = "名字") + private String name; + + @Schema(description = "统计数据") + private Long count; + } +} diff --git a/src/main/java/com/gunshi/project/ss/timetask/AlarmTask.java b/src/main/java/com/gunshi/project/ss/timetask/AlarmTask.java new file mode 100644 index 0000000..9427255 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/timetask/AlarmTask.java @@ -0,0 +1,189 @@ +package com.gunshi.project.ss.timetask; + + +import com.gunshi.project.ss.entity.enums.AlarmTypeEnum; +import com.gunshi.project.ss.entity.vo.AttResBaseVo; +import com.gunshi.project.ss.mapper.AlarmSetMapper; +import com.gunshi.project.ss.mapper.AttResBaseMapper; +import com.gunshi.project.ss.model.AlarmSet; +import com.gunshi.project.ss.common.model.StRiverRReal; +import com.gunshi.project.ss.model.WaterAlarm; +import com.gunshi.project.ss.service.StRiverRRealService; +import com.gunshi.project.ss.service.StStbprpBService; +import com.gunshi.project.ss.service.WaterAlarmService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.time.Instant; +import java.util.List; + +/** + * 告警定时任务 + */ +@Component +@Slf4j +@EnableScheduling +@Profile({"prod","dev","local"}) +public class AlarmTask { + + @Autowired + private AlarmSetMapper alarmSetMapper; + + @Autowired + private AttResBaseMapper attResBaseMapper; + + @Autowired + private WaterAlarmService waterAlarmService; + + @Autowired + private StRiverRRealService stRiverRRealService; + + @Autowired + private StStbprpBService stStbprpBService; + + @Async + @Scheduled(cron = "0 7 * * * *") + public void updateAlarmSet(){ + //查询告警设置中所有的配置的站点 + List alarmSets = alarmSetMapper.selectList(null); + //去实时水情查询数据 + for (AlarmSet alarmSet : alarmSets) { + String stcd = alarmSet.getStcd();//获取站点编号 + saveRiverData(stcd); + } + } + + @Async + @Scheduled(cron = "0 7 * * * *") + public void updateWaterAlarm(){ + List attResBaseVos = attResBaseMapper.queryList2(); + for (AttResBaseVo attResBaseVo : attResBaseVos) { + saveResStData(attResBaseVo); + } + } + + private void saveResStData(AttResBaseVo entity){ + Integer calState = entity.getCalState();//是否超校核 + + Integer desState = entity.getDesState();//是否超设计 + + Integer flState = entity.getFlState();//是否超汛限 + WaterAlarm waterAlarmNew = waterAlarmService.getBaseMapper().selectByStcdNew(entity.getStcd()); + if(waterAlarmNew != null){ + //判断最新的时间是否大于 + //最新数据时间 + Instant newDataInstant = entity.getTm().toInstant(); + //老数据告警时间 + Instant currentDataInstant = waterAlarmNew.getAlarmTime().toInstant(); + if(newDataInstant.compareTo(currentDataInstant) <= 0){ + //如果不是最新数据,直接结束 + return; + } + } + if(calState > 0){ + Integer level = AlarmTypeEnum.RESERVOIR_OVER_CHECK.getLevel(); + WaterAlarm waterAlarm = new WaterAlarm(); + waterAlarm.setStcd(entity.getStcd()); + waterAlarm.setStnm(entity.getStnm()); + waterAlarm.setAlarmTime(entity.getTm()); + waterAlarm.setCurValue(entity.getRz()); + waterAlarm.setAlarmValue(entity.getCalFloodLev()); + waterAlarm.setOverValue(entity.getRz().subtract(entity.getCalFloodLev())); + waterAlarm.setAlarmType(level); + waterAlarmService.save(waterAlarm); + } + if(desState > 0){ + Integer level = AlarmTypeEnum.RESERVOIR_OVER_DESIGN.getLevel(); + WaterAlarm waterAlarm = new WaterAlarm(); + waterAlarm.setStcd(entity.getStcd()); + waterAlarm.setStnm(entity.getStnm()); + waterAlarm.setAlarmTime(entity.getTm()); + waterAlarm.setCurValue(entity.getRz()); + waterAlarm.setAlarmValue(entity.getDesFloodLev()); + waterAlarm.setOverValue(entity.getRz().subtract(entity.getDesFloodLev())); + waterAlarm.setAlarmType(level); + waterAlarmService.save(waterAlarm); + } + if(flState > 0){ + Integer level = AlarmTypeEnum.RESERVOIR_OVER_FLOOD_LIMIT.getLevel(); + WaterAlarm waterAlarm = new WaterAlarm(); + waterAlarm.setStcd(entity.getStcd()); + waterAlarm.setStnm(entity.getStnm()); + waterAlarm.setAlarmTime(entity.getTm()); + waterAlarm.setCurValue(entity.getRz()); + waterAlarm.setAlarmValue(entity.getFlLowLimLev()); + waterAlarm.setOverValue(entity.getRz().subtract(entity.getFlLowLimLev())); + waterAlarm.setAlarmType(level); + waterAlarmService.save(waterAlarm); + } + } + + private void saveRiverData(String stcd){ + //根据站点编码查询真实水位数据 + StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().queryQByStcd(stcd); + //查询该站点最新一条数据 + WaterAlarm waterAlarmNew = waterAlarmService.getBaseMapper().selectByStcdNew(stcd); + + + if(stRiverRReal != null){ + //该站点,真实河道水位的最新数据的时间 + Instant newDateInstant = stRiverRReal.getTm().toInstant(); + //告警表中,该站点的最新数据的时间 + if(waterAlarmNew != null){ + Instant curDateInstant = waterAlarmNew.getAlarmTime().toInstant(); + if(newDateInstant.compareTo(curDateInstant) <= 0){ + //如果要插入数据的时间与当前告警表中数据相同,则直接跳过本条数据 + return; + } + } + AlarmSet alarmSet = alarmSetMapper.queryByStcd(stcd); + //警告水位 + BigDecimal warnWaterLevel = alarmSet.getWarnWaterLevel(); + //保证水位 + BigDecimal promiseWaterLevel = alarmSet.getPromiseWaterLevel(); + if(alarmSet == null){ + return; + }else{ + BigDecimal rz =stRiverRReal.getZ(); + if(rz == null){ + return; + } + if(rz.compareTo(warnWaterLevel) >=0 && rz.compareTo(promiseWaterLevel) <=0){ + BigDecimal gap = rz.subtract(warnWaterLevel); + //河道超警戒 + Integer level = AlarmTypeEnum.RIVER_OVER_WARNING.getLevel(); + WaterAlarm waterAlarm = new WaterAlarm(); + waterAlarm.setStcd(stRiverRReal.getStcd()); + waterAlarm.setStnm(stRiverRReal.getStnm()); + waterAlarm.setAlarmTime(stRiverRReal.getTm()); + waterAlarm.setCurValue(stRiverRReal.getZ()); + waterAlarm.setAlarmValue(warnWaterLevel); + waterAlarm.setOverValue(gap); + waterAlarm.setAlarmType(level); + waterAlarmService.save(waterAlarm); + }else if(rz.compareTo(promiseWaterLevel) >0){ + BigDecimal gap = rz.subtract(promiseWaterLevel); + //河道超保证 + Integer level = AlarmTypeEnum.RIVER_OVER_GUARANTEE.getLevel(); + WaterAlarm waterAlarm = new WaterAlarm(); + waterAlarm.setStcd(stRiverRReal.getStcd()); + waterAlarm.setStnm(stRiverRReal.getStnm()); + waterAlarm.setAlarmTime(stRiverRReal.getTm()); + waterAlarm.setCurValue(stRiverRReal.getZ()); + waterAlarm.setAlarmValue(promiseWaterLevel); + waterAlarm.setOverValue(gap); + waterAlarm.setAlarmType(level); + waterAlarmService.save(waterAlarm); + } + } + } + + + } +} diff --git a/src/main/java/com/gunshi/project/hsz/timetask/DataTask.java b/src/main/java/com/gunshi/project/ss/timetask/DataTask.java similarity index 100% rename from src/main/java/com/gunshi/project/hsz/timetask/DataTask.java rename to src/main/java/com/gunshi/project/ss/timetask/DataTask.java diff --git a/src/main/java/com/gunshi/project/ss/timetask/DataTaskHsz.java b/src/main/java/com/gunshi/project/ss/timetask/DataTaskHsz.java new file mode 100644 index 0000000..44291bc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/timetask/DataTaskHsz.java @@ -0,0 +1,612 @@ +package com.gunshi.project.ss.timetask; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.gunshi.project.ss.common.model.*; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.service.*; +import com.gunshi.project.ss.util.OkHttpUtil; +import lombok.extern.slf4j.Slf4j; +import okhttp3.FormBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** +*@description 檀树岗数据定时任务 +*@author cxw +*@classname DataTaskHsz.java +*@create 2024-09-20, 周五, 17:05:22 +*/ +@EnableScheduling//开启定时任务 +@Component +@Slf4j + @Profile({"prod","dev"}) +public class DataTaskHsz { + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + private static SimpleDateFormat sdfD = new SimpleDateFormat("yyyy-MM-dd"); + + + private static SimpleDateFormat sdfEight = new SimpleDateFormat("yyyy-MM-dd 08:00:00"); + + + @Value("${jcskPath}") + private String jcskPath;// 荆楚水库同步地址 + + @Value("${jcskToken}") + private String jcskToken;// 荆楚水库同步接口token + + @Value("${reloadCache}") + private String reloadCache;// 清除ip白名单缓存 + + public static String jcskPathPptnRoute = "/pptn/";// 雨情接口,需拼接源(sh、sw、qx) + + public static String jcskPathRrRiverRoute = "/river/";// ZZ河道水位接口 + public static String jcskPathZzRsvrRoute = "/rsvr/";// RR水库水位接口 + + public static String jcskPathWaterRRoute = "";//供水接口 + + // 实时雨情 + @Autowired + private StPptnRRealService stPptnRRealService; + + // 历史雨情 + @Autowired + private StPptnRService stPptnRService; + + // 小时雨情 + @Autowired + private StPptnRHService stPptnRHService; + + // 按天雨情 + @Autowired + private StPptnRDService stPptnRDService; + + // 实时水情 + @Autowired + private StRsvrRRealService stRsvrRRealService; + + // 历史水情 + @Autowired + private StRsvrRService stRsvrRService; + + // 实时水情 + @Autowired + private StRiverRRealService stRiverRRealService; + + // 历史水情 + @Autowired + private StRiverRService stRiverRService; + + //历史供水量 + @Autowired + private StWaterRService stWaterRService; + + //实时供水量 + @Autowired + private StWaterRRealService stWaterRRealService; + + //供水量整编 + @Autowired + private StWaterRReorganizeService stWaterRReorganizeService; + + /** + * @param + * @description: 定时获取水库雨情数据(历史、天、时、real) + * @return: void + * @auther: cxw + * @date: 2024-09-20, 周五, 17:07:23 + */ +// @Async +// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES) + @Deprecated(since = "改在hsz-datasync中同步") + public void getPptnData() { + Date now = new Date(); + System.out.println("雨情实时定时任务,执行时间:" + sdf.format(now)); + // 获取水库站点编码 + List stcdLastPptnDatas = stPptnRService.getStcdLastPptnData(); + OkHttpClient client = OkHttpUtil.build(); + try { + if (CollectionUtils.isNotEmpty(stcdLastPptnDatas)) { + for (StPptnR stPptnR : stcdLastPptnDatas) { + log.info("开始获取雨情数据:{}", stPptnR.getStcd()); + Calendar calendar = Calendar.getInstance(); + String stcd = stPptnR.getStcd(); + String source = stPptnR.getSource().toLowerCase(); + Date stm = stPptnR.getStm(); + // 默认30天前 + if (ObjectUtils.isEmpty(stm)) { + if ("sh".equals(stPptnR.getSource().toLowerCase())) { + calendar.add(Calendar.DATE, -30); + } else { + calendar.add(Calendar.DATE, -2); + calendar.add(Calendar.HOUR_OF_DAY, -20); + } + } else { + int diffDays = new BigDecimal((int) Math.ceil((now.getTime() - stm.getTime()) / (24 * 60 * 60 * 1000))).intValue(); + if (diffDays > 3) { + calendar.add(Calendar.DATE, -2); + calendar.add(Calendar.HOUR_OF_DAY, -20); + } else { + calendar.setTime(stm); + calendar.add(Calendar.MINUTE, 1); + } + } + stm = calendar.getTime(); + String url = jcskPath; + if ("shylres".equals(source)) { + url += "/" + source + "/pptn"; + } else { + url += jcskPathPptnRoute + stPptnR.getSource().toLowerCase(); + } + Response resp = client.newCall(new Request.Builder().url(url) + .post(new FormBody.Builder().add("stcd", stcd) + .add("stm", sdf.format(stm)) + .add("etm", sdf.format(now)) + .build()) + .header("Token", jcskToken) + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .build()).execute(); + String respStr = resp.body().string(); + JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); + // 清除同步平台的ip白名单缓存 + if ("401".equals(jsonObject.get("code").toString())) { + OkHttpClient clientCache = new OkHttpClient(); + Request request = new Request.Builder().url(reloadCache).build(); + clientCache.newCall(request).execute(); + } + JSONArray data = jsonObject.getJSONArray("data"); + if (ObjectUtils.isNotEmpty(data)) { + List rlist = data.toJavaList(StPptnR.class); + if (CollectionUtils.isNotEmpty(rlist)) { + // 全部替换为stcd,并去重 + rlist = rlist.stream().peek(entity -> entity.setStcd(stPptnR.getStcd())).collect(Collectors.toMap( + e -> e.getStcd().toUpperCase() + "_" + e.getTm(), // 使用属性组合作为键 + Function.identity(), + (existing, replacement) -> existing // 如果有冲突,保留现有的 + )).values().stream().collect(Collectors.toList()); + stPptnRService.saveBatch(rlist); + log.info("【{}】历史数据同步成功,数据条数:{}", stcd, rlist.size()); + // 更新到实时数据表 + stPptnRRealService.updatePptnRReal(rlist.get(0).getStcd()); + // 整编降雨量天表数据 + StPptnRD maxDataD = stPptnRDService.getMaxData(stPptnR.getStcd()); + Date tmMax = maxDataD.getTm(); + maxDataD.setTm(sdf.parse(sdfEight.format(tmMax))); + List listD = stPptnRDService.reorganizePptnRDData(stPptnR.getStcd(), maxDataD); + if (CollectionUtils.isNotEmpty(listD)) { + if (listD.size() > 0) { + listD = listD.stream() + .map(user -> { + user.setYear(Integer.valueOf(sdfD.format(user.getTm()).substring(0, 4))); // 修改属性值 + return user; + }).collect(Collectors.toList()); + QueryWrapper deleteWrapper = new QueryWrapper<>(); + deleteWrapper.eq("stcd", stcd).ge("tm", tmMax); + stPptnRDService.remove(deleteWrapper); + stPptnRDService.saveBatch(listD); + } + } + // 整编降雨量小时表数据 + StPptnRH maxDataH = stPptnRHService.getMaxData(stPptnR.getStcd()); + List listH = stPptnRHService.reorganizePptnRHData(stPptnR.getStcd(), maxDataH); + if (CollectionUtils.isNotEmpty(listH)) { + StPptnRH LastData = listH.get(0); + if (LastData.getTm().equals(maxDataH.getTm())) { + listH.remove(0); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("stcd", LastData.getStcd()).eq("tm", LastData.getTm()); + LastData.setDrp(LastData.getDrp()); + LastData.setChtm(maxDataH.getChtm()); + stPptnRHService.saveOrUpdate(LastData, updateWrapper); + } + if (listH.size() > 0) { + stPptnRHService.saveBatch(listH); + } + } + } + } + } + } + } catch (IOException e) { + log.error("荆楚水库雨情定时任务失败:", e.getMessage()); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + /** + * @description: 定时获取水库水情数据(历史、real) + * @param + * @return: void + * @auther: cxw + * @date: 2024-09-23, 周一, 11:23:04 + */ +// @Async +// @Scheduled(fixedRate = 5, timeUnit = TimeUnit.MINUTES) + @Deprecated(since = "改在hsz-datasync中同步") + public void getRiverData() { + Date now = new Date(); + System.out.println("水情历史定时任务,执行时间:" + sdf.format(now)); + // 获取水库站点编码历史水情表中站点最新数据时间 + List stcdLast = stRsvrRService.getStcdLastRsvrData(); + OkHttpClient client = OkHttpUtil.build(); + try { + if (CollectionUtils.isNotEmpty(stcdLast)) { + //对每个数据进行遍历 + for (StRsvrR stRsvrR : stcdLast) { + Date stm = stRsvrR.getStm(); + String source = stRsvrR.getSource().toLowerCase(); + String sttp = stRsvrR.getSttp().toLowerCase(); + Calendar calendar = Calendar.getInstance(); + // 默认40天前(接口最多40天),存在则加1小时(接口是按小时算且大于等于开始时间) + // 默认30天前 + if (ObjectUtils.isEmpty(stm)) { + //如果数据库中没有该站点任何时间得数据 + if ("sh".equals(source)) { + //对于sh源得数据,取前30天至今 + calendar.add(Calendar.DATE, -30); + } else { + //其它源得数据,取前2天20小时 + calendar.add(Calendar.DATE, -2); + calendar.add(Calendar.HOUR_OF_DAY, -20); + } + } else { + //如果又时间,则计算当前时间与最后一次同步得时间差 + int diffDays = new BigDecimal((int) Math.ceil((now.getTime() - stm.getTime()) / (24 * 60 * 60 * 1000))).intValue(); + if (diffDays > 3) { + //如果时间差大于3天 + calendar.add(Calendar.DATE, -2); + calendar.add(Calendar.HOUR_OF_DAY, -20); + } else { + //小于三天 + calendar.setTime(stm); + calendar.add(Calendar.MINUTE, 1); + } + } + stm = calendar.getTime(); + String url = jcskPath; + if("shylres".equals(source)) { + url += "/" + source + "/rsvr"; + } else { + if ("rr".equals(sttp)) { + url += jcskPathZzRsvrRoute + source; + } else if ("zz".equals(sttp)) { + url += jcskPathRrRiverRoute + source; + } else { + continue; + } + } + //构建HTTP请求 + Response resp = client.newCall(new Request.Builder().url(url) + .post(new FormBody.Builder().add("stcd", stRsvrR.getStcd()) + .add("stm", sdf.format(stm)) + .add("etm", sdf.format(now)) + .build()) + .header("Token", jcskToken) + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .build()).execute(); + String respStr = resp.body().string(); + JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); + if (!"200".equals(jsonObject.get("code").toString())) { + continue; + } + JSONArray data = jsonObject.getJSONArray("data"); + if (CollectionUtils.isNotEmpty(data)) { + //如果是zz类型站得数据 + if ("zz".equals(sttp)) { + List rlist = data.toJavaList(StRiverR.class); + stRiverRService.saveBatch(rlist); + // 更新实时表数据 + StRiverR stRiverRLast = rlist.get(rlist.size() - 1); + StRiverRReal stRiverRReal = new StRiverRReal(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("stcd", stRiverRLast.getStcd()).eq("tm", stRiverRLast.getTm()); + BeanUtils.copyProperties(stRiverRLast, stRiverRReal); + stRiverRReal.setChtm(new Date()); + stRiverRRealService.saveOrUpdate(stRiverRReal, updateWrapper); + } else if ("rr".equals(sttp)) { + List rlist = data.toJavaList(StRsvrR.class); + stRsvrRService.saveBatch(rlist); + // 更新实时表数据 + StRsvrR stRsvrRLast = rlist.get(rlist.size() - 1); + StRsvrRReal stRsvrRReal = new StRsvrRReal(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("stcd", stRsvrRLast.getStcd()).eq("tm", stRsvrRLast.getTm()); + BeanUtils.copyProperties(stRsvrRLast, stRsvrRReal); + stRsvrRReal.setChtm(new Date()); + stRsvrRRealService.saveOrUpdate(stRsvrRReal, updateWrapper); + } + } + } + } + } catch (IOException e) { + log.error("水情历史定时任务错误:", e.getMessage()); + } + } + + /** + * @description: 补雨量数据 + * @param + * @return: void + * @auther: cxw + * @date: 2024-10-16, 周三, 16:24:29 + */ +// @PostConstruct + public void supplementPptnData() { + Date now = new Date(); + System.out.println("补雨量数据任务,执行时间:" + sdf.format(now)); + List stcdLastPptnDatas = stPptnRService.getStcdFirstPptnData(); + OkHttpClient client = OkHttpUtil.build(); + try { + if (CollectionUtils.isNotEmpty(stcdLastPptnDatas)) { + for (StPptnR stPptnR : stcdLastPptnDatas) { + String stm = "2024-01-01 00:00:00";// 补数据的开始时间 + Calendar calendar = Calendar.getInstance(); + String source = stPptnR.getSource().toLowerCase(); + String url = jcskPath; + if ("shylres".equals(source)) { + url += "/" + source + "/pptn"; + } else { + url += jcskPathPptnRoute + stPptnR.getSource().toLowerCase(); + } + String stcd = stPptnR.getStcd(); + Date etmD = null; + if (ObjectUtils.isEmpty(stPptnR.getEtm())) { + etmD = now; + } else { + etmD = stPptnR.getEtm(); + } + String etm = sdf.format(etmD);// 补数据的结束时间 + if (stmIsBeforeEtm(etm, stm, "yyyy-MM-dd HH:mm:ss")) { + continue; + } + // 结束日期往前减4分钟,防止数据重复 + Calendar calendarEtm = Calendar.getInstance(); + calendarEtm.setTime(sdf.parse(etm)); + calendarEtm.add(Calendar.MINUTE, -4); + etm = sdf.format(calendarEtm.getTime()); + // 开始时间往后推3天,不超过结束日期 + while (stmIsBeforeEtm(stm, etm, "yyyy-MM-dd HH:mm:ss")) { + String newEtm = dateManipulation(stm, 3, "yyyy-MM-dd HH:mm:ss"); + if(stmIsBeforeEtm(etm, newEtm, "yyyy-MM-dd HH:mm:ss")){ + newEtm = etm; + } + Response resp = client.newCall(new Request.Builder().url(url).post(new FormBody.Builder().add("stcd", stcd).add("stm", stm).add("etm", newEtm).build()).header("Token", jcskToken).addHeader("Content-Type", "application/x-www" + + "-form-urlencoded").build()).execute(); + String respStr = resp.body().string(); + JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); + // 清除同步平台的ip白名单缓存 + if ("401".equals(jsonObject.get("code").toString())) { + OkHttpClient clientCache = new OkHttpClient(); + Request request = new Request.Builder().url(reloadCache).build(); + clientCache.newCall(request).execute(); + } + JSONArray data = jsonObject.getJSONArray("data"); + if (ObjectUtils.isNotEmpty(data)) { + List rlist = data.toJavaList(StPptnR.class); + if (CollectionUtils.isNotEmpty(rlist)) { + // 全部替换为stcd,并去重 + rlist = rlist.stream().peek(entity -> entity.setStcd(stPptnR.getStcd())).collect(Collectors.toMap(e -> e.getStcd().toUpperCase() + "_" + e.getTm(), // 使用属性组合作为键 + Function.identity(), (existing, replacement) -> existing // 如果有冲突,保留现有的 + )).values().stream().collect(Collectors.toList()); + stPptnRService.saveBatch(rlist); + // 更新到实时数据表 + stPptnRRealService.updatePptnRReal(rlist.get(0).getStcd()); + // 整编降雨量天表数据 + StPptnRD maxDataD = stPptnRDService.getMaxData(stPptnR.getStcd()); + Date tmMax = maxDataD.getTm(); + maxDataD.setTm(sdf.parse(sdfEight.format(tmMax))); + List listD = stPptnRDService.reorganizePptnRDData(stPptnR.getStcd(), maxDataD); + if (CollectionUtils.isNotEmpty(listD)) { + if (listD.size() > 0) { + listD = listD.stream().map(user -> { + user.setYear(Integer.valueOf(sdfD.format(user.getTm()).substring(0, 4))); // 修改属性值 + return user; + }).collect(Collectors.toList()); + QueryWrapper deleteWrapper = new QueryWrapper<>(); + deleteWrapper.eq("stcd", stcd).ge("tm", tmMax); + stPptnRDService.remove(deleteWrapper); + stPptnRDService.saveBatch(listD); + } + } + // 整编降雨量小时表数据 + StPptnRH maxDataH = stPptnRHService.getMaxData(stPptnR.getStcd()); + List listH = stPptnRHService.reorganizePptnRHData(stPptnR.getStcd(), maxDataH); + if (CollectionUtils.isNotEmpty(listH)) { + StPptnRH LastData = listH.get(0); + if (LastData.getTm().equals(maxDataH.getTm())) { + listH.remove(0); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("stcd", LastData.getStcd()).eq("tm", LastData.getTm()); + LastData.setDrp(LastData.getDrp()); + LastData.setChtm(maxDataH.getChtm()); + stPptnRHService.saveOrUpdate(LastData, updateWrapper); + } + if (listH.size() > 0) { + stPptnRHService.saveBatch(listH); + } + } + } + } + if (stmIsBeforeEtm(etm, newEtm, "yyyy-MM-dd HH:mm:ss")) { + stm = etm; + } else { + stm = newEtm; + } + calendar.setTime(sdf.parse(stm)); + calendar.add(Calendar.MINUTE, 5); + stm = sdf.format(calendar.getTime()); + } + } + } + } catch (IOException e) { + log.error("补雨量数据任务失败:", e.getMessage()); + } catch (ParseException e) { + throw new IllegalArgumentException(e); + } + } + + /** + * @description: 补水位数据 + * @param + * @return: void + * @auther: cxw + * @date: 2024-10-16, 周三, 17:13:33 + */ +// @PostConstruct + public void supplementRsvrData() { + Date now = new Date(); + System.out.println("补水位数据任务,执行时间:" + sdf.format(now)); + List stcdLast = stRsvrRService.getStcdFirstRsvrData(); + OkHttpClient client = OkHttpUtil.build(); + try { + if (CollectionUtils.isNotEmpty(stcdLast)) { + for (StRsvrR stRsvrR : stcdLast) { + String sttp = stRsvrR.getSttp().toLowerCase(); + String source = stRsvrR.getSource().toLowerCase(); + String stm = "2024-01-01 00:00:00";// 补数据的开始时间 + Calendar calendar = Calendar.getInstance(); + Date etmD = null; + if (ObjectUtils.isEmpty(stRsvrR.getEtm())) { + etmD = now; + } else { + etmD = stRsvrR.getEtm(); + } + String etm = sdf.format(etmD);// 补数据的结束时间 + if (stmIsBeforeEtm(etm, stm, "yyyy-MM-dd HH:mm:ss")) { + continue; + } + String url = jcskPath; + if("shylres".equals(source)) { + url += "/" + source + "/rsvr"; + } else { + if ("rr".equals(sttp)) { + url += jcskPathZzRsvrRoute + source; + } else if ("zz".equals(sttp)) { + url += jcskPathRrRiverRoute + source; + } else { + continue; + } + } + // 结束日期往前减4分钟,防止数据重复 + Calendar calendarEtm = Calendar.getInstance(); + calendarEtm.setTime(sdf.parse(etm)); + calendarEtm.add(Calendar.MINUTE, -4); + etm = sdf.format(calendarEtm.getTime()); + while (stmIsBeforeEtm(stm, etm, "yyyy-MM-dd HH:mm:ss")) { + String newEtm = dateManipulation(stm, 3, "yyyy-MM-dd HH:mm:ss"); + if(stmIsBeforeEtm(etm, newEtm, "yyyy-MM-dd HH:mm:ss")){ + newEtm = etm; + } + Response resp = client.newCall(new Request.Builder().url(url) + .post(new FormBody.Builder().add("stcd", stRsvrR.getStcd()) + .add("stm", stm) + .add("etm", newEtm) + .build()) + .header("Token", jcskToken) + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .build()).execute(); + String respStr = resp.body().string(); + JSONObject jsonObject = JSONObject.parseObject(respStr.toLowerCase()); + if (!"200".equals(jsonObject.get("code").toString())) { + continue; + } + JSONArray data = jsonObject.getJSONArray("data"); + if (CollectionUtils.isNotEmpty(data)) { + if ("zz".equals(sttp)) { + List rlist = data.toJavaList(StRiverR.class); + stRiverRService.saveBatch(rlist); + // 更新实时表数据 + StRiverR stRiverRLast = rlist.get(rlist.size() - 1); + StRiverRReal stRiverRReal = new StRiverRReal(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("stcd", stRiverRLast.getStcd()).eq("tm", stRiverRLast.getTm()); + BeanUtils.copyProperties(stRiverRLast, stRiverRReal); + stRiverRReal.setChtm(new Date()); + stRiverRRealService.saveOrUpdate(stRiverRReal, updateWrapper); + } else if ("rr".equals(sttp)) { + List rlist = data.toJavaList(StRsvrR.class); + stRsvrRService.saveBatch(rlist); + // 更新实时表数据 + StRsvrR stRsvrRLast = rlist.get(rlist.size() - 1); + StRsvrRReal stRsvrRReal = new StRsvrRReal(); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("stcd", stRsvrRLast.getStcd()).eq("tm", stRsvrRLast.getTm()); + BeanUtils.copyProperties(stRsvrRLast, stRsvrRReal); + stRsvrRReal.setChtm(new Date()); + stRsvrRRealService.saveOrUpdate(stRsvrRReal, updateWrapper); + } + } + if (stmIsBeforeEtm(etm, newEtm, "yyyy-MM-dd HH:mm:ss")) { + stm = etm; + } else { + stm = newEtm; + } + calendar.setTime(sdf.parse(stm)); + calendar.add(Calendar.MINUTE, 5); + stm = sdf.format(calendar.getTime()); + } + } + } + } catch (IOException e) { + log.error("补水位数据任务错误:", e.getMessage()); + } catch (ParseException e) { + throw new IllegalArgumentException(e); + } + } + + + private Boolean stmIsBeforeEtm(String stm, String etm, String fmt) { + Boolean ret = false; + try { + SimpleDateFormat sdf = new SimpleDateFormat(fmt); + Date date1 = sdf.parse(stm); + Date date2 = sdf.parse(etm); + if (date1.equals(date2)) { + ret = true; + } else if (date1.before(date2)) { + ret = true; + } + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("时间大小不正确!"); + } + return ret; + } + + private String dateManipulation(String tm, int daysToSubtract, String fmt) { + String newDateString = ""; + try { + SimpleDateFormat dateFormat = new SimpleDateFormat(fmt); + Date parsedDate = dateFormat.parse(tm); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parsedDate); + calendar.add(Calendar.DATE, daysToSubtract); + + newDateString = dateFormat.format(calendar.getTime()); + } catch (Exception e) { + throw new RuntimeException(e); + } + return newDateString; + } +} diff --git a/src/main/java/com/gunshi/project/ss/timetask/JcskDataTask.java b/src/main/java/com/gunshi/project/ss/timetask/JcskDataTask.java new file mode 100644 index 0000000..b8b09b9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/timetask/JcskDataTask.java @@ -0,0 +1,508 @@ +package com.gunshi.project.ss.timetask; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.db.dto.DateTimeRangeSo; +import com.gunshi.project.ss.common.model.*; +import com.gunshi.project.ss.common.model.so.OsmoticQuerySo; +import com.gunshi.project.ss.common.model.vo.OsmoticShiftValueVo2; +import com.gunshi.project.ss.common.util.LocalDateTimeConverter; +import com.gunshi.project.ss.entity.dto.ProjectSafeCalculateDto; +import com.gunshi.project.ss.entity.vo.ProjectSafeCalculateVo; +import com.gunshi.project.ss.mapper.JcskGnssREightAmMapper; +import com.gunshi.project.ss.common.mapper.JcskSlBMapper; +import com.gunshi.project.ss.mapper.JcskSlREightAmMapper; +import com.gunshi.project.ss.mapper.JcskSyREightAmMapper; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.service.*; +import com.gunshi.project.ss.util.DateTransforUtil; +import com.gunshi.project.ss.util.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +@EnableScheduling//开启定时任务 +@Component +@Slf4j +@Profile({"prod","dev","local"}) +public class JcskDataTask { + + + @Autowired + private JcskGnssREightAmMapper jcskGnssREightAmMapper; + + @Autowired + private JcskGnssRService jcskGnssRService; + + @Autowired + private JcskGnssBService service; + + @Autowired + private JcskSyREightAmMapper jcskSyREightAmMapper; + + @Autowired + private JcskSyRService jcskSyRService; + + @Autowired + private JcskSyBService jcskSyBService; + + @Autowired + private JcskSlBMapper jcskSlBMapper; + + @Autowired + private JcskSlREightAmMapper jcskSlREightAmMapper; + + @Autowired + private JcskSlBService jcskSlBService; + + @Autowired + private OsmoticWarnRuleService osmoticWarnRuleService; + + @Autowired + private JcskSlRService jcskSlRService; + + + + private static final Integer PRESS = 1; + + public static final Integer FLOW = 2; + + public static final Integer GNSS = 3; + +// @Scheduled(cron = "0 30 8 * * ?") + @Async + public void calculate(){ + List dvcds = jcskSyBService.getAllDvcd(); + for (String dvcd : dvcds) { + ProjectSafeCalculateDto dto = new ProjectSafeCalculateDto(); + LocalDateTime now = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(0); + LocalDateTime lastYear = now.minusYears(1); + lastYear = lastYear.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); + DateTimeRangeSo dateTimeRangeSo = new DateTimeRangeSo(); + dateTimeRangeSo.setStart(LocalDateTimeConverter.toDate(lastYear)); + dateTimeRangeSo.setEnd(LocalDateTimeConverter.toDate(now)); + dto.setDateTimeRangeSo(dateTimeRangeSo); + dto.setDvcd(dvcd); + ProjectSafeCalculateVo ans = jcskSyRService.calculate(dto); + } + } + + +// /** +// * 每5分钟扫描渗流。渗压、位移表 生成预警 +// */ +// @Scheduled(cron = "0 */30 * * * ?") +// @Async + public void syncWarn(){ + // 获取昨天的时间 + Date yesterday = getYesterday(); + Date syMaxTm = osmoticWarnRuleService.queryMaxTmByType(PRESS); + if(syMaxTm==null){ + syMaxTm = yesterday; + } + Date slMaxTm = osmoticWarnRuleService.queryMaxTmByType(FLOW); + if(slMaxTm==null){ + slMaxTm = yesterday; + } + Date gnssMaxTm = osmoticWarnRuleService.queryMaxTmByType(GNSS); + if(gnssMaxTm==null){ + gnssMaxTm = yesterday; + } + List syList = jcskSyRService.lambdaQuery().gt(JcskSyR::getMstm, syMaxTm).list(); + List slList = jcskSlRService.lambdaQuery().gt(JcskSlR::getMstm, slMaxTm).list(); + List gnssList = jcskGnssRService.lambdaQuery().gt(JcskGnssR::getTm, gnssMaxTm).list(); + for (JcskSyR jcskSyR : syList) { + osmoticWarnRuleService.checkWarn(jcskSyR); + } + for (JcskSlR jcskSlR : slList) { + osmoticWarnRuleService.checkWarn(jcskSlR); + } + for (JcskGnssR jcskGnssR : gnssList) { + osmoticWarnRuleService.checkWarn(jcskGnssR); + } + } + + private Date getYesterday() { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DAY_OF_YEAR, -1); + return calendar.getTime(); + } + + /** + * 同步渗流每日八点的数据 + */ +// @Scheduled(cron = "*/10 * * * * ?") +// @Scheduled(cron = "0 17 8 * * ?") +// @Async + public void syncSlREightAmData() { + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + DateTimeRangeSo so = new DateTimeRangeSo(); + List list = jcskSlBService.lambdaQuery().list(); + List cds = list.stream().map(JcskSlB::getDvcd).collect(Collectors.toList());//获取所有的测点编码(仪器编号) + osmoticQuerySo.setStationCodes(cds); + //获取整编表数量 + Long count = jcskSlREightAmMapper.selectCount(null); + List saveDatas = new ArrayList<>(); + List> syncData = new ArrayList<>(); + + if (count > 0) { + //增量同步 + //取最新的一个数据的时间,按每个测站测点分别同步 + for (JcskSlB jcskSlB : list) { + String mpcd = jcskSlB.getMpcd(); + String dvcd = jcskSlB.getDvcd(); + osmoticQuerySo.setStationCodes(Arrays.asList(dvcd)); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(JcskSlREightAm::getMpcd, mpcd) + .orderByDesc(JcskSlREightAm::getMstm).last("limit 1"); + JcskSlREightAm jcskGnssREightAm = jcskSlREightAmMapper.selectOne(wrapper); + + Calendar calendar = Calendar.getInstance(); + + if (jcskGnssREightAm != null) { + // 如果存在最新数据,从最新时间的第二天开始同步 + LocalDateTime latestDate = jcskGnssREightAm.getMstm(); + calendar.setTime(DateTransforUtil.transforLocalDateTimeToDate(latestDate)); + calendar.add(Calendar.DAY_OF_MONTH, 1); // 加1天 + } else { + // 如果为空,设置同步时间为前一个星期 + calendar.add(Calendar.DAY_OF_MONTH, -7); // 减7天 + } + + // 设置时间范围为8:00:00开始 + calendar.set(Calendar.HOUR_OF_DAY, 8); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date start = calendar.getTime(); + + so.setStart(start); + so.setEnd(new Date()); + osmoticQuerySo.setDateTimeRangeSo(so); + List osmoticValueVo2s = jcskSlBMapper.syncqueryValue(osmoticQuerySo); + if(!osmoticValueVo2s.isEmpty()){ + syncData.add(osmoticValueVo2s); + } + } + } else { + //全量同步 + osmoticQuerySo.setStationCodes(cds); + List osmoticValueVo2s = jcskSlBMapper.syncqueryValue(osmoticQuerySo); + if(!osmoticValueVo2s.isEmpty()){ + syncData.add(osmoticValueVo2s); + } + } + + // 使用 DateTimeFormatter 替代 SimpleDateFormat + DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH:mm"); + + if(syncData.size() > 0){ + for (List osmoticValueVo2s : syncData) { + //筛选出每天每个测点8-9点的数据 + List closestTo8AMList = osmoticValueVo2s.stream() + .filter(vo -> { + // 使用 DateTimeFormatter 格式化 LocalDateTime + String timeStr = vo.getMstm().format(formatter3); + return timeStr.compareTo("08:00") >= 0 && timeStr.compareTo("09:00") <=0; + }) + .collect(Collectors.groupingBy(vo -> { + // 分组键:日期(yyyy-MM-dd) + 测站编码 + 测点编码 + String date = vo.getMstm().format(formatter2); + return date + "_" + vo.getMpcd(); + })) + .values().stream() + .map(group -> group.stream() + .min((vo1, vo2) -> { + String time1 = vo1.getMstm().format(formatter3); + String time2 = vo2.getMstm().format(formatter3); + + // 计算与08:00的时间差(分钟数) + int diff1 = Math.abs( + Integer.parseInt(time1.substring(0, 2)) * 60 + + Integer.parseInt(time1.substring(3, 5)) - + 8 * 60 + ); + + int diff2 = Math.abs( + Integer.parseInt(time2.substring(0, 2)) * 60 + + Integer.parseInt(time2.substring(3, 5)) - + 8 * 60 + ); + //获取最接近于八点的数据 + return Integer.compare(diff1, diff2); + }) + .orElse(null) + ) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 处理筛选后的数据 + for (JcskSlR data : closestTo8AMList) { + JcskSlREightAm entity = new JcskSlREightAm(); + BeanUtils.copyProperties(data, entity); + saveDatas.add(entity); + } + + if(saveDatas.size() > 0){ + jcskSlREightAmMapper.insert(saveDatas); + } + saveDatas.clear(); + } + } + } + + + + + /** + * 同步渗压每日八点的数据 + */ +//@Scheduled(cron = "*/10 * * * * ?") +// @Scheduled(cron = "0 17 8 * * ?") +// @Async + public void syncSyREightAmData() { + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + DateTimeRangeSo so = new DateTimeRangeSo(); + List list = jcskSyBService.lambdaQuery().list(); + List cds = list.stream().map(JcskSyB::getDvcd).collect(Collectors.toList()); + //获取整编表数量 + Long count = jcskSyREightAmMapper.selectCount(null); + List saveDatas = new ArrayList<>(); + List> syncData = new ArrayList<>(); + + if (count > 0) { + //增量同步 + //取最新的一个数据的时间 + for (JcskSyB jcskSyB : list) { + String stcd = jcskSyB.getStcd(); + String mpcd = jcskSyB.getMpcd(); + String dvcd = jcskSyB.getDvcd(); + osmoticQuerySo.setStationCodes(Arrays.asList(dvcd)); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(JcskSyREightAm::getStcd, stcd) + .eq(JcskSyREightAm::getMpcd, mpcd) + .orderByDesc(JcskSyREightAm::getMstm).last("limit 1"); + JcskSyREightAm jcskGnssREightAm = jcskSyREightAmMapper.selectOne(wrapper); + + LocalDateTime startTime; + + if (jcskGnssREightAm != null) { + // 如果存在最新数据,从最新时间的第二天开始同步 + startTime = jcskGnssREightAm.getMstm().plusDays(1); // 加1天 + } else { + // 如果为空,设置同步时间为前一个星期 + startTime = LocalDateTime.now().minusDays(7); // 减7天 + } + // 设置时间范围为当天的8:00:00开始 + startTime = startTime.withHour(8).withMinute(0).withSecond(0).withNano(0); + + so.setStart(DateTransforUtil.transforLocalDateTimeToDate(startTime)); + so.setEnd(DateTransforUtil.transforLocalDateTimeToDate(LocalDateTime.now())); + osmoticQuerySo.setDateTimeRangeSo(so); + List osmoticValueVo2s = jcskSyRService.getBaseMapper().syncqueryValue(osmoticQuerySo); + if(!osmoticValueVo2s.isEmpty()){ + syncData.add(osmoticValueVo2s); + } + } + } else { + //全量同步 + osmoticQuerySo.setStationCodes(cds); + List osmoticValueVo2s = jcskSyRService.getBaseMapper().syncqueryValue(osmoticQuerySo); + if(!osmoticValueVo2s.isEmpty()){ + syncData.add(osmoticValueVo2s); + } + } + + // 使用DateTimeFormatter替代SimpleDateFormat + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); + + if(!syncData.isEmpty()){ + for (List osmoticValueVo2s : syncData) { + //筛选出每天每个测点8-9点的数据 + List closestTo8AMList = osmoticValueVo2s.stream() + .filter(vo -> { + // 使用LocalDateTime直接获取小时和分钟 + int hour = vo.getMstm().getHour(); + int minute = vo.getMstm().getMinute(); + // 过滤8:00到9:00之间的数据 + return (hour == 8 && minute >= 0) || (hour == 9 && minute == 0); + }) + .collect(Collectors.groupingBy(vo -> { + // 分组键:日期(yyyy-MM-dd) + 测站编码 + 测点编码 + String date = vo.getMstm().format(dateFormatter); + return date + "_" + vo.getStcd() + "_" + vo.getMpcd(); + })) + .values().stream() + .map(group -> group.stream() + .min((vo1, vo2) -> { + // 计算与08:00的时间差(分钟数) + int diff1 = Math.abs( + vo1.getMstm().getHour() * 60 + + vo1.getMstm().getMinute() - 8 * 60 + ); + + int diff2 = Math.abs( + vo2.getMstm().getHour() * 60 + + vo2.getMstm().getMinute() - 8 * 60 + ); + //获取最接近于八点的数据 + return Integer.compare(diff1, diff2); + }) + .orElse(null) + ) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 处理筛选后的数据 + for (JcskSyR data : closestTo8AMList) { + JcskSyREightAm entity = new JcskSyREightAm(); + BeanUtils.copyProperties(data, entity); + entity.setMstm(data.getMstm()); // 直接设置LocalDateTime + saveDatas.add(entity); + } + + if(!saveDatas.isEmpty()){ + // 批量插入,注意检查MyBatis-Plus是否支持批量插入 + for (JcskSyREightAm entity : saveDatas) { + jcskSyREightAmMapper.insert(entity); + } + // 或者使用批量插入方法(如果配置了) + // jcskSyREightAmMapper.insertBatch(saveDatas); + } + saveDatas.clear(); + } + } + } + + + + /** + * 同步位移监测每天最接近八点的数据 + */ + + //@Scheduled(cron = "*/30 * * * * ?") +// @Async +// @Scheduled(cron = "0 17 8 * * ?") + public void syncGnssREightAmData() { + OsmoticQuerySo osmoticQuerySo = new OsmoticQuerySo(); + DateTimeRangeSo so = new DateTimeRangeSo(); + List list = service.lambdaQuery().list(); + List cds = list.stream().map(JcskGnssB::getCd).collect(Collectors.toList());//获取所有的测点编码 + //获取整编表数量 + Long count = jcskGnssREightAmMapper.selectCount(null); + List saveDatas = new ArrayList<>(); + List> syncData = new ArrayList<>(); + if (count > 0) { + //增量同步 + //取最新的一个数据的时间 + //获取每个cd的最新时间按cd进行同步 + for (String cd : cds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(JcskGnssREightAm::getCd, cd) + .orderByDesc(JcskGnssREightAm::getTm).last("limit 1"); + osmoticQuerySo.setStationCodes(Arrays.asList(cd)); + JcskGnssREightAm jcskGnssREightAm = jcskGnssREightAmMapper.selectOne(wrapper); + + Calendar calendar = Calendar.getInstance(); + + if(jcskGnssREightAm != null){ + // 如果有历史数据,从最新时间的第二天开始同步 + String latestTm = jcskGnssREightAm.getTm(); + Date latestDate = DateUtil.convertStringToDate(latestTm); + calendar.setTime(latestDate); + calendar.add(Calendar.DAY_OF_MONTH, 1); // 加1天 + } else { + // 如果没有同步过数据,同步一个星期以前的数据 + calendar.add(Calendar.DAY_OF_MONTH, -7); // 减7天 + } + + // 设置时间范围为8:00:00开始 + calendar.set(Calendar.HOUR_OF_DAY, 8); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date start = calendar.getTime(); + so.setStart(start); + so.setEnd(new Date()); + osmoticQuerySo.setDateTimeRangeSo(so); + List shiftValueVo2s = jcskGnssRService.getBaseMapper().queryValue(osmoticQuerySo); + if(!shiftValueVo2s.isEmpty()){ + syncData.add(shiftValueVo2s); + } + } + + } else { + //全量同步 + osmoticQuerySo.setStationCodes(cds); + List shiftValueVo2s = jcskGnssRService.getBaseMapper().queryValue(osmoticQuerySo); + if(!shiftValueVo2s.isEmpty()){ + syncData.add(shiftValueVo2s); + } + } + + if(syncData.size()>0){ + //筛选出每天每个测点8-9点的数据 + for (List shiftValueVo2s : syncData) { + List closestTo8AMList = shiftValueVo2s.stream() + .filter(vo -> { + // 假设OsmoticShiftValueVo2中有getTm方法返回时间字符串 + String timePart = vo.getTm().substring(11, 16); // 提取HH:MM部分 + return timePart.compareTo("08:00") >= 0 && timePart.compareTo("09:00") <=0; + }) + .collect(Collectors.groupingBy(vo -> { + // 分组键:日期(yyyy-MM-dd) + 测点编码 + // 假设OsmoticShiftValueVo2中有getCd方法返回测点编码 + String date = vo.getTm().substring(0, 10); // 提取日期部分 + return date + "_" + vo.getCd(); + })) + .values().stream() + .map(group -> group.stream() + .min((vo1, vo2) -> { + String time1 = vo1.getTm().substring(11, 16); + String time2 = vo2.getTm().substring(11, 16); + + // 计算与08:00的时间差(分钟数) + int diff1 = Math.abs( + Integer.parseInt(time1.substring(0, 2)) * 60 + + Integer.parseInt(time1.substring(3, 5)) - + 8 * 60 + ); + + int diff2 = Math.abs( + Integer.parseInt(time2.substring(0, 2)) * 60 + + Integer.parseInt(time2.substring(3, 5)) - + 8 * 60 + ); + //获取最接近于八点的数据 + return Integer.compare(diff1, diff2); + }) + .orElse(null) + ) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 处理筛选后的数据 + for (OsmoticShiftValueVo2 data : closestTo8AMList) { + JcskGnssREightAm entity = new JcskGnssREightAm(); + BeanUtils.copyProperties(data, entity); + saveDatas.add(entity); + } + if(saveDatas.size()>0){ + jcskGnssREightAmMapper.insert(saveDatas); + } + saveDatas.clear(); + } + } + } + +} diff --git a/src/main/java/com/gunshi/project/ss/timetask/PaDataTask.java b/src/main/java/com/gunshi/project/ss/timetask/PaDataTask.java new file mode 100644 index 0000000..e541375 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/timetask/PaDataTask.java @@ -0,0 +1,233 @@ +package com.gunshi.project.ss.timetask; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.gunshi.algorithm.RunoffService; +import com.gunshi.project.ss.model.AttResBase; +import com.gunshi.project.ss.model.ForecastK; +import com.gunshi.project.ss.model.ForecastPa; +import com.gunshi.project.ss.model.ForecastUseparam; +import com.gunshi.project.ss.common.model.StPptnR; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.service.AttResBaseService; +import com.gunshi.project.ss.service.ForecastKService; +import com.gunshi.project.ss.service.ForecastPaService; +import com.gunshi.project.ss.service.ForecastResultsService; +import com.gunshi.project.ss.service.ForecastUseparamService; +import com.gunshi.project.ss.service.StPptnRService; +import com.gunshi.project.ss.service.StStbprpBService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author cxw + * @description Pa降雨值定时任务计算 + * @classname PaDataTask.java + * @create 2024-08-02, 星期五, 11:16:46 + */ +@EnableScheduling//开启定时任务 +@Component +@Slf4j +@Profile({"prod","dev","local"}) +public class PaDataTask { + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + private static SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd"); + + private static SimpleDateFormat eightSdf = new SimpleDateFormat("yyyy-MM-dd 08:00:00"); + + @Autowired + private ForecastUseparamService forecastUseparamService; + + @Autowired + private ForecastPaService forecastPaService; + + @Autowired + private ForecastKService forecastKService; + + @Autowired + private StPptnRService stPptnRService; + + @Autowired + private StStbprpBService stStbprpBService; + + @Autowired + private ForecastResultsService forecastResultsService; + + @Autowired + private AttResBaseService attResBaseService; + + /** + * @description: 每天8点30计算的Pa + * @param + * @return: void + * @auther: cxw + * @date: 2024-08-02, 周五, 11:21:00 + */ + @Async + @Scheduled(cron ="0 30 8 * * ?") +// @PostConstruct + public void PaDataCalc() throws ParseException { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + Date nowTime = calendar.getTime(); + // 获取配置参数 + List paramList = forecastUseparamService.list(new QueryWrapper().isNotNull("param_code").isNotNull("param_value")); + List kList = forecastKService.list(); + if (CollectionUtils.isEmpty(paramList) || CollectionUtils.isEmpty(kList)) { + return; + } + // 檀树岗使用多个站点的均值作为水库的降雨 + AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>()); + if (ObjectUtils.isNotEmpty(attResBase)) { + String resCode = attResBase.getResCode(); + String skStcd = attResBase.getStcd(); + // 先删除水库当天的pa,假如已经存在的话(有另一任务,提前算了第二天(此处为当天)的) + forecastPaService.remove(new QueryWrapper().eq("tm", sdfDay.format(nowTime)).eq("stcd", attResBase.getResCode())); + // 获取最新pa + ForecastPa forecastPaLast = forecastPaService.getOne(new QueryWrapper().eq("stcd", skStcd).orderBy(true, false, "tm").last("limit 1")); +// 补数据时解开 + if(ObjectUtils.isEmpty(forecastPaLast)){ + forecastPaLast = new ForecastPa(); + forecastPaLast.setStcd(skStcd); + forecastPaLast.setTm("2024-01-01"); + forecastPaLast.setK(new BigDecimal(0.97)); + forecastPaLast.setPa0(BigDecimal.ZERO); + forecastPaLast.setIm(new BigDecimal(120)); + forecastPaLast.setPt0(BigDecimal.ZERO); + forecastPaLast.setPa(BigDecimal.ZERO); + forecastPaLast.setChtm(new Date()); + + } + if (CollectionUtils.isNotEmpty(paramList) && CollectionUtils.isNotEmpty(kList) && ObjectUtils.isNotEmpty(forecastPaLast) && !forecastPaLast.getTm().equals(sdfDay.format(nowTime))) { + Calendar calendar2 = Calendar.getInstance(); + calendar2.setTime(sdfDay.parse(forecastPaLast.getTm())); + calendar2.add(Calendar.DAY_OF_MONTH, -3); + String searchTm = sdfDay.format(calendar2.getTime()); + String lastTm = forecastPaLast.getTm(); + // 获取空缺时间的所有降雨,当天8点到第二天8点间的drp和 + List> mapList = stPptnRService.getPptnRDataListByTask(resCode, skStcd, searchTm); + Map pptnrMap; + if (CollectionUtils.isNotEmpty(mapList)) { + pptnrMap = mapList.stream().collect(Collectors.toMap(map -> (String) map.get("tm"), map -> map.get("drp"))); + } else { + return; + } + Map kMap = kList.stream().collect(Collectors.toMap(ForecastK::getMonth, ForecastK::getKValue)); + Map paramMap = paramList.stream().collect(Collectors.toMap(ForecastUseparam::getParamCode, ForecastUseparam::getParamValue)); + double Im = Double.parseDouble(paramMap.get("Im"));// 土壤含水量最大值(最大初损值)Im + // 第一次的pa0是最新一条的pa + List list = new ArrayList<>(); + ForecastPa forecastPa = null; + while (!lastTm.equals(sdfDay.format(nowTime))) { + double lastPa0 = forecastPaLast.getPa().doubleValue(); + double lastPt0 = Double.valueOf(ObjectUtils.isEmpty(pptnrMap.get(lastTm)) ? "0.0" : pptnrMap.get(lastTm).toString()); + forecastPa = new ForecastPa(); + // 最新加1天 + calendar.setTime(sdfDay.parse(lastTm)); + calendar.add(Calendar.DAY_OF_MONTH, 1); + lastTm = sdfDay.format(calendar.getTime()); + double k = kMap.get(Integer.valueOf(lastTm.substring(5, 7))).doubleValue(); + double pa = RunoffService.PaCaculate(k, lastPa0, lastPt0, Im); + forecastPa.setStcd(skStcd); + forecastPa.setTm(lastTm); + forecastPa.setK(new BigDecimal(k).setScale(2, BigDecimal.ROUND_HALF_UP)); + forecastPa.setPa0(new BigDecimal(lastPa0)); + forecastPa.setIm(new BigDecimal(Im)); + forecastPa.setPt0(new BigDecimal(lastPt0).setScale(2, BigDecimal.ROUND_HALF_UP)); + forecastPa.setPa(new BigDecimal(pa)); + list.add(forecastPa); + forecastPaLast = forecastPa; + } + if (CollectionUtils.isNotEmpty(list)) { + forecastPaService.saveBatch(list); + } + } + } + } + + /** + * @description: 每天19点到24点每5分钟计算一次第二天的Pa + * @param + * @return: void + * @auther: cxw + * @date: 2024-08-16, 周五, 15:42:13 + */ + @Async + @Scheduled(cron ="0 0/5 20-23 * * ?") + public void PaNextDataCalc() throws ParseException { + Date nowTime = new Date(); + // 檀树岗使用多个站点的均值作为水库的降雨 + AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>()); + if (ObjectUtils.isNotEmpty(attResBase)) { + // 查询所有需要统计pa值的站点 + List stStbprpBList = stStbprpBService.list(new QueryWrapper().eq("res_code", attResBase.getResCode())); + if(CollectionUtils.isEmpty(stStbprpBList)){ + return; + } + // 获取配置参数 + List paramList = forecastUseparamService.list(new QueryWrapper().isNotNull("param_code").isNotNull("param_value")); + List kList = forecastKService.list(); + if (CollectionUtils.isEmpty(paramList) || CollectionUtils.isEmpty(kList)) { + return; + } + String skStcd = attResBase.getResCode(); + // 查询第二天的是否已经生成了 + Calendar calendarNext = Calendar.getInstance(); + calendarNext.setTime(nowTime); + calendarNext.add(Calendar.DAY_OF_MONTH, 1); + String nextTimeStr = sdfDay.format(calendarNext.getTime()); + ForecastPa hasPa = forecastPaService.getOne(new QueryWrapper().eq("stcd", skStcd).eq("tm", nextTimeStr)); + if (ObjectUtils.isNotEmpty(hasPa)) { + return; + } + // 获取最新pa(当天) + ForecastPa forecastPaLast = forecastPaService.getOne(new QueryWrapper().eq("stcd", skStcd).eq("tm", sdfDay.format(nowTime)).last("limit 1")); + if (CollectionUtils.isNotEmpty(paramList) && CollectionUtils.isNotEmpty(kList) && ObjectUtils.isNotEmpty(forecastPaLast)) { + List listAll = new ArrayList<>(); + for (StStbprpB stb : stStbprpBList) { + String stcd = stb.getStcd(); + // 获取当天大于08点到执行时间的真实降雨 + List qwExistedStcd = stPptnRService.list(new QueryWrapper().eq("stcd", stcd).gt("tm", sdf.parse(eightSdf.format(nowTime))).le("tm", nowTime).orderBy(true, true, "tm")); + // 获取当天的预测降雨 + List pptnRFutureListStcd = forecastResultsService.getForecastDrpData(nowTime, stcd); + listAll.addAll(qwExistedStcd); + listAll.addAll(pptnRFutureListStcd); + } + Double totalDrp = listAll.stream().mapToDouble(x -> Double.valueOf(x.getDrp())).sum(); + ForecastPa forecastPa = new ForecastPa(); + Map kMap = kList.stream().collect(Collectors.toMap(ForecastK::getMonth, ForecastK::getKValue)); + Map paramMap = paramList.stream().collect(Collectors.toMap(ForecastUseparam::getParamCode, ForecastUseparam::getParamValue)); + double Im = Double.parseDouble(paramMap.get("Im"));// 土壤含水量最大值(最大初损值)Im + double k = kMap.get(Integer.valueOf(nextTimeStr.substring(5, 7))).doubleValue(); + double pa = RunoffService.PaCaculate(k, Double.parseDouble(forecastPaLast.getPa().toString()), totalDrp, Im); + forecastPa.setStcd(skStcd); + forecastPa.setTm(nextTimeStr); + forecastPa.setK(new BigDecimal(k).setScale(2, BigDecimal.ROUND_HALF_UP)); + forecastPa.setPa0(forecastPaLast.getPa()); + forecastPa.setIm(new BigDecimal(Im)); + forecastPa.setPt0(new BigDecimal(totalDrp).setScale(2, BigDecimal.ROUND_HALF_UP)); + forecastPa.setPa(new BigDecimal(pa)); + forecastPaService.save(forecastPa); + } + } + } + +} diff --git a/src/main/java/com/gunshi/project/ss/timetask/PptnRDataTask.java b/src/main/java/com/gunshi/project/ss/timetask/PptnRDataTask.java new file mode 100644 index 0000000..1210540 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/timetask/PptnRDataTask.java @@ -0,0 +1,115 @@ +package com.gunshi.project.ss.timetask; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.gunshi.project.ss.common.model.StPptnR; +import com.gunshi.project.ss.model.StPptnRD; +import com.gunshi.project.ss.model.StPptnRH; +import com.gunshi.project.ss.service.StPptnRDService; +import com.gunshi.project.ss.service.StPptnRHService; +import com.gunshi.project.ss.service.StPptnRRealService; +import com.gunshi.project.ss.service.StPptnRService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + + +/** + * 降雨量数据 day表 和 hour表同不 + */ +@EnableScheduling//开启定时任务 +@Component +@Slf4j +@Profile({"prod","dev","local"}) +public class PptnRDataTask { + + // 实时雨情 + @Autowired + private StPptnRRealService stPptnRRealService; + + // 历史雨情 + @Autowired + private StPptnRService stPptnRService; + + // 小时雨情 + @Autowired + private StPptnRHService stPptnRHService; + + // 按天雨情 + @Autowired + private StPptnRDService stPptnRDService; + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + private static SimpleDateFormat sdfD = new SimpleDateFormat("yyyy-MM-dd"); + + + private static SimpleDateFormat sdfEight = new SimpleDateFormat("yyyy-MM-dd 08:00:00"); + + @Scheduled(fixedRate = 2, timeUnit = TimeUnit.MINUTES) + @Async + public void syncPptnRData(){ + try { + //获取所有站点最新的数据 + List stcdLastPptnData = stPptnRService.getStcdLastPptnData(); + if (CollectionUtils.isNotEmpty(stcdLastPptnData)){ + for (StPptnR stPptnR : stcdLastPptnData){ + String stcd = stPptnR.getStcd(); + // 整编降雨量天表数据 + //获取该站点在降雨量天表中最大的时间的数据 + StPptnRD maxDataD = stPptnRDService.getMaxData(stPptnR.getStcd()); + Date tmMax = maxDataD.getTm(); + maxDataD.setTm(sdf.parse(sdfEight.format(tmMax))); + //去历史表中查询大于该时间的数据 + List listD = stPptnRDService.reorganizePptnRDData(stPptnR.getStcd(), maxDataD); + if (CollectionUtils.isNotEmpty(listD)) { + if (listD.size() > 0) { + listD = listD.stream() + .map(user -> { + user.setYear(Integer.valueOf(sdfD.format(user.getTm()).substring(0, 4))); // 修改属性值 + return user; + }).collect(Collectors.toList()); + QueryWrapper deleteWrapper = new QueryWrapper<>(); + deleteWrapper.eq("stcd", stcd).ge("tm", tmMax); + stPptnRDService.remove(deleteWrapper); + stPptnRDService.saveBatch(listD); + } + } + + // 整编降雨量小时表数据 + StPptnRH maxDataH = stPptnRHService.getMaxData(stPptnR.getStcd()); + List listH = stPptnRHService.reorganizePptnRHData(stPptnR.getStcd(), maxDataH); + if (CollectionUtils.isNotEmpty(listH)) { + StPptnRH LastData = listH.get(0); + if (LastData.getTm().equals(maxDataH.getTm())) { + listH.remove(0); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("stcd", LastData.getStcd()).eq("tm", LastData.getTm()); + LastData.setDrp(LastData.getDrp()); + LastData.setChtm(maxDataH.getChtm()); + stPptnRHService.saveOrUpdate(LastData, updateWrapper); + } + if (listH.size() > 0) { + stPptnRHService.saveBatch(listH); + } + } + } + } + } catch (ParseException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/timetask/ScheduledPool.java b/src/main/java/com/gunshi/project/ss/timetask/ScheduledPool.java new file mode 100644 index 0000000..24b9525 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/timetask/ScheduledPool.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.timetask; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; + +/** + * @author cxw + * @description: 定时任务池 + * @classname ScheduledPool.java + * @create 2024-07-22, 星期一, 10:43:54 + */ +@Configuration +public class ScheduledPool { + @Bean + public TaskScheduler taskScheduler() { + ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); + // 设置定时任务线程数量 + taskScheduler.setPoolSize(20); + return taskScheduler; + } +} diff --git a/src/main/java/com/gunshi/project/ss/timetask/StWaterDataTask.java b/src/main/java/com/gunshi/project/ss/timetask/StWaterDataTask.java new file mode 100644 index 0000000..0505946 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/timetask/StWaterDataTask.java @@ -0,0 +1,310 @@ +package com.gunshi.project.ss.timetask; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.entity.vo.StFlowRVo; +import com.gunshi.project.ss.model.StWaterR; +import com.gunshi.project.ss.model.StWaterRReal; +import com.gunshi.project.ss.model.StWaterRReorganize; +import com.gunshi.project.ss.service.StFlowRService; +import com.gunshi.project.ss.service.StWaterRRealService; +import com.gunshi.project.ss.service.StWaterRReorganizeService; +import com.gunshi.project.ss.service.StWaterRService; +import com.gunshi.project.ss.util.DateTransforUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.ZoneId; +import java.util.*; +import java.util.stream.Collectors; + + +@EnableScheduling//开启定时任务 +@Component +@Slf4j +@Profile({"prod","dev","local"}) +public class StWaterDataTask { + + + @Autowired + private StFlowRService stFlowRService; + + @Autowired + private StWaterRService stWaterRService; + + @Autowired + private StWaterRReorganizeService stWaterRReorganizeService; + + @Autowired + private StWaterRRealService stWaterRRealService; + + @Scheduled(fixedDelay = 75 * 60 * 1000) // 75分钟,单位毫秒 + @Async + public void syncFlowToWater(){ + List stcds = stFlowRService.getStcdList(); + //去供水量表查数据 + for (String stcd : stcds) { + List syncData = new ArrayList<>(); + StWaterR firstData = stWaterRService.selectNewDataByStcd(stcd); + if(firstData == null) { + //取全部数据 + List queryData = stFlowRService.getDataByStcdAndTm(stcd, null); + for (int i = 0; i < queryData.size(); i++) { + StWaterR entity = new StWaterR(); + entity.setStcd(stcd); + entity.setQ(queryData.get(i).getQ()); + entity.setTm(DateTransforUtil.transforLocalDateTimeToDate(queryData.get(i).getTm())); + BigDecimal v = BigDecimal.ZERO;//水量 + if (i == 0) { + v = BigDecimal.ZERO; + } else { + // 其他数据:与前一条数据的时间差 + long seconds = java.time.Duration.between( + queryData.get(i - 1).getTm(), + queryData.get(i).getTm() + ).getSeconds(); + v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); + } + entity.setV(v); + syncData.add(entity); + } + // 批量保存 + if (!syncData.isEmpty()) { + stWaterRService.saveBatch(syncData); + + //实时表更新 + StWaterR stWaterR = syncData.get(syncData.size() - 1); + StWaterRReal stWaterRReal = new StWaterRReal(); + BeanUtils.copyProperties(stWaterR, stWaterRReal); + stWaterRReal.setV(stWaterR.getV().toString()); + boolean flag = stWaterRRealService.getBaseMapper().insertOrUpdate(stWaterRReal); + } + }else{ + List queryData = stFlowRService.getDataByStcdAndTm(stcd, firstData.getTm()); + for (int i = 0; i < queryData.size(); i++) { + StWaterR entity = new StWaterR(); + entity.setStcd(stcd); + entity.setQ(queryData.get(i).getQ()); + entity.setTm(DateTransforUtil.transforLocalDateTimeToDate(queryData.get(i).getTm())); + BigDecimal v = BigDecimal.ZERO;//水量 + if (i == 0) { + // 第一条数据:与firstData的时间差 + long seconds = java.time.Duration.between( + firstData.getTm().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(), + queryData.get(i).getTm() + ).getSeconds(); + v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); + }else { + // 其他数据:与前一条数据的时间差 + long seconds = java.time.Duration.between( + queryData.get(i-1).getTm(), + queryData.get(i).getTm() + ).getSeconds(); + v = queryData.get(i).getQ().multiply(new BigDecimal(seconds)); + } + entity.setV(v); + syncData.add(entity); + } + // 批量保存 + if (!syncData.isEmpty()) { + stWaterRService.saveBatch(syncData); + //实时表更新 + StWaterR stWaterR = syncData.get(syncData.size() - 1); + StWaterRReal stWaterRReal = new StWaterRReal(); + BeanUtils.copyProperties(stWaterR, stWaterRReal); + stWaterRReal.setV(stWaterR.getV().toString()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StWaterRReal::getStcd, stWaterR.getStcd()); + boolean remove = stWaterRRealService.remove(queryWrapper); + stWaterRRealService.save(stWaterRReal); + } + } + } + } + + @Scheduled(fixedDelay = 76 * 60 * 1000) // 75分钟,单位毫秒 + @Async + public void syncWaterToReorganize(){ + List list = stWaterRReorganizeService.lambdaQuery() + .orderByDesc(StWaterRReorganize::getTm).last("limit 1").list(); + List syncData = new ArrayList<>(); + + if(!list.isEmpty()){ + StWaterRReorganize stWaterRReorganize = list.get(0);//查询最新的一条整编数据 + String tm = stWaterRReorganize.getTm();//varchar 13 例如 2025-01-01 01 + + // 将字符串时间转换为Date用于查询 + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH"); + Date startTime; + try { + Date lastTime = formatter.parse(tm); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(lastTime); + calendar.add(Calendar.HOUR, 1); // 从下个小时开始 + startTime = calendar.getTime(); + } catch (Exception e) { + log.error("时间转换错误", e); + return; + } + + // 查询st_water_r表中大于该时间的数据 + List waterData = stWaterRService.lambdaQuery() + .ge(StWaterR::getTm, startTime) + .orderByAsc(StWaterR::getTm) + .list(); + + // 按小时分组,每个小时每个站点取最新记录 + Map> hourlyData = waterData.stream() + .collect(Collectors.groupingBy( + data -> { + // 按小时分组,格式:yyyy-MM-dd HH + SimpleDateFormat hourFormatter = new SimpleDateFormat("yyyy-MM-dd HH"); + return hourFormatter.format(data.getTm()); + }, + Collectors.groupingBy( + StWaterR::getStcd, + Collectors.collectingAndThen( + Collectors.maxBy(Comparator.comparing(StWaterR::getTm)), + Optional::get + ) + ) + )); + + // 处理每个小时的数据 + for (Map.Entry> hourEntry : hourlyData.entrySet()) { + String hourKey = hourEntry.getKey(); // 格式:2025-10-16 16 + Map stationData = hourEntry.getValue(); + + StWaterRReorganize reorganize = new StWaterRReorganize(); + reorganize.setTm(hourKey); + + // 获取三个站点的数据(根据实际情况调整站点代码) + StWaterR ecologyData = stationData.get("1114"); // 生态供水 + StWaterR mci1Data = stationData.get("1112"); // 干渠灌溉1 + StWaterR mci2Data = stationData.get("1113"); // 干渠灌溉2 + + // 设置生态供水数据 + if (ecologyData != null) { + reorganize.setEcologyQ(ecologyData.getQ()); + reorganize.setEcologyV(ecologyData.getV()); + } else { + reorganize.setEcologyQ(BigDecimal.ZERO); + reorganize.setEcologyV(BigDecimal.ZERO); + } + + // 设置干渠灌溉1数据 + if (mci1Data != null) { + reorganize.setMci1Q(mci1Data.getQ()); + reorganize.setMci1V(mci1Data.getV()); + } else { + reorganize.setMci1Q(BigDecimal.ZERO); + reorganize.setMci1V(BigDecimal.ZERO); + } + + // 设置干渠灌溉2数据 + if (mci2Data != null) { + reorganize.setMci2Q(mci2Data.getQ()); + reorganize.setMci2V(mci2Data.getV()); + } else { + reorganize.setMci2Q(BigDecimal.ZERO); + reorganize.setMci2V(BigDecimal.ZERO); + } + + // 计算水量小计(三个站点的总和) + BigDecimal sumV = reorganize.getEcologyV() == null? BigDecimal.ZERO: reorganize.getEcologyV() + .add(reorganize.getMci1V() == null? BigDecimal.ZERO: reorganize.getMci1V()) + .add(reorganize.getMci2V() == null? BigDecimal.ZERO: reorganize.getMci2V()); + reorganize.setSumV(sumV); + + syncData.add(reorganize); + } + + } else { + //全量同步 + List allWaterData = stWaterRService.lambdaQuery() + .orderByAsc(StWaterR::getTm) + .list(); + + // 按小时分组,每个小时每个站点取最新记录 + Map> hourlyData = allWaterData.stream() + .collect(Collectors.groupingBy( + data -> { + SimpleDateFormat hourFormatter = new SimpleDateFormat("yyyy-MM-dd HH"); + return hourFormatter.format(data.getTm()); + }, + Collectors.groupingBy( + StWaterR::getStcd, + Collectors.collectingAndThen( + Collectors.maxBy(Comparator.comparing(StWaterR::getTm)), + Optional::get + ) + ) + )); + + // 处理每个小时的数据 + for (Map.Entry> hourEntry : hourlyData.entrySet()) { + String hourKey = hourEntry.getKey(); + Map stationData = hourEntry.getValue(); + + StWaterRReorganize reorganize = new StWaterRReorganize(); + reorganize.setTm(hourKey); + + // 获取三个站点的数据 + StWaterR ecologyData = stationData.get("1114"); // 生态供水 + StWaterR mci1Data = stationData.get("1112"); // 干渠灌溉1 + StWaterR mci2Data = stationData.get("1113"); // 干渠灌溉2 + + // 设置生态供水数据 + if (ecologyData != null) { + reorganize.setEcologyQ(ecologyData.getQ()); + reorganize.setEcologyV(ecologyData.getV()); + } else { + reorganize.setEcologyQ(BigDecimal.ZERO); + reorganize.setEcologyV(BigDecimal.ZERO); + } + + // 设置干渠灌溉1数据 + if (mci1Data != null) { + reorganize.setMci1Q(mci1Data.getQ()); + reorganize.setMci1V(mci1Data.getV()); + } else { + reorganize.setMci1Q(BigDecimal.ZERO); + reorganize.setMci1V(BigDecimal.ZERO); + } + + // 设置干渠灌溉2数据 + if (mci2Data != null) { + reorganize.setMci2Q(mci2Data.getQ()); + reorganize.setMci2V(mci2Data.getV()); + } else { + reorganize.setMci2Q(BigDecimal.ZERO); + reorganize.setMci2V(BigDecimal.ZERO); + } + + // 计算水量小计(三个站点的总和) + BigDecimal sumV = reorganize.getEcologyV() == null? BigDecimal.ZERO: reorganize.getEcologyV() + .add(reorganize.getMci1V() == null? BigDecimal.ZERO: reorganize.getMci1V()) + .add(reorganize.getMci2V() == null? BigDecimal.ZERO: reorganize.getMci2V()); + reorganize.setSumV(sumV); + + syncData.add(reorganize); + } + } + + // 批量保存数据 + if (!syncData.isEmpty()) { + stWaterRReorganizeService.saveBatch(syncData); + } + } + + + + +} diff --git a/src/main/java/com/gunshi/project/ss/timetask/WarningRuleTask.java b/src/main/java/com/gunshi/project/ss/timetask/WarningRuleTask.java new file mode 100644 index 0000000..0bde619 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/timetask/WarningRuleTask.java @@ -0,0 +1,424 @@ +package com.gunshi.project.ss.timetask; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gunshi.project.ss.common.model.StRiverRReal; +import com.gunshi.project.ss.common.model.StRsvrRReal; +import com.gunshi.project.ss.common.model.StStbprpB; +import com.gunshi.project.ss.common.util.LocalDateTimeConverter; +import com.gunshi.project.ss.entity.so.WeatherSo; +import com.gunshi.project.ss.entity.vo.*; +import com.gunshi.project.ss.model.*; +import com.gunshi.project.ss.service.*; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@EnableScheduling//开启定时任务 +@Component +@Slf4j +@Profile({"prod","dev","local"}) +public class WarningRuleTask { + + + @Autowired + private WarningRuleService warningRuleService; + + + @Autowired + private WarningRuleInfoService warningRuleInfoService; + + //河道水位 + @Autowired + private RiverWaterService riverWaterService; + + @Autowired + private StRiverRRealService stRiverRRealService; + + + //水库水位 + @Autowired + private ReservoirWaterService reservoirWaterService; + + @Autowired + private StRsvrRRealService stRsvrRRealService; + + @Autowired + private ForecastResultsService forecastResultsService; + + @Resource + private ForecastService forecastService; + + + @Autowired + private RainBasinDivisionService rainBasinDivisionService; + +// @Scheduled(fixedDelay = 60 * 60 * 1000) // 75分钟,单位毫秒 +// @Async + public void warningRuleExecute(){ + //获取配置的预警规则 + List warningRules = warningRuleService.listData(); + //过滤出启动了的预警规则 + warningRules = warningRules.stream().filter(o ->{ + return o.getStatus() != null && o.getStatus() == 1; + }).collect(Collectors.toList()); + + for (WarningRule warningRule : warningRules) { + //获取预警类型 + String warningType = warningRule.getWarningType(); + //获取预警的规则细节 + List conditions = warningRule.getConditions(); + + if (conditions == null || conditions.isEmpty()) { + continue; + } + + // 为每个条件计算实际值并设置是否满足 + for (WarningCondition condition : conditions) { + BigDecimal actualValue = calculateActualValue(condition, warningType); + condition.setIsEnjoy(compareValue(actualValue, condition)); + } + + // 根据条件关系判断整个规则是否满足 + boolean isRuleSatisfied = evaluateConditions(conditions); + + // 这里可以根据 isRuleSatisfied 进行后续处理,比如触发预警等 + if (isRuleSatisfied) { + log.info("预警规则 {} 满足条件,触发预警", warningRule.getRuleName()); + + // 生成规则信息 + String ruleInfo = generateRuleInfo(conditions); + + WarningRuleInfo warningRuleInfo = new WarningRuleInfo(); + warningRuleInfo.setCreateName(warningRule.getCreateName()); + warningRuleInfo.setRuleId(warningRule.getId()); + warningRuleInfo.setRuleName(warningRule.getRuleName()); + warningRuleInfo.setConditions(conditions); + warningRuleInfo.setCreateTime(LocalDateTime.now()); + warningRuleInfo.setRuleInfo(ruleInfo); + warningRuleInfo.setWarningType(warningType); + warningRuleInfo.setWarningLevel(warningRule.getWarningLevel()); + warningRuleInfo.setStatus(warningRule.getStatus()); + warningRuleInfoService.save(warningRuleInfo); + } + } + } + + /** + * 生成规则信息描述 + */ + private String generateRuleInfo(List conditions) { + List conditionInfos = new ArrayList<>(); + + for (WarningCondition condition : conditions) { + if (condition.getIsEnjoy()) { // 只记录满足条件的报警信息 + String conditionInfo = generateSingleConditionInfo(condition); + if (conditionInfo != null && !conditionInfo.isEmpty()) { + conditionInfos.add(conditionInfo); + } + } + } + + return String.join(";", conditionInfos); + } + + + @Autowired + private StStbprpBService stStbprpBService; + /** + * 生成单个条件的描述信息 - 修改格式 + */ + private String generateSingleConditionInfo(WarningCondition condition) { + String indicatorType = condition.getIndicatorType(); + String stcd = condition.getStcd(); + String stnm=""; + List stStbprpBS = stStbprpBService.lambdaQuery().eq(StStbprpB::getStcd, stcd).last("limit 1").list(); + if(stStbprpBS != null && !stStbprpBS.isEmpty()){ + stnm = stStbprpBS.get(0).getStnm(); + } + BigDecimal thresholdValue = condition.getThresholdValue(); + Integer durationHours = condition.getDurationHours(); + + switch (indicatorType) { + case "REAL_WATER_LEVEL": + BigDecimal currentWaterLevel = getRzByStcd(stcd); + return String.format("%s测点监测水位%sm %s %sm", + stnm, currentWaterLevel, condition.getOperator(), thresholdValue); + + case "PEAK_FLOW": + return String.format("未来%dh预报洪峰流量 %s %s m³/s", + durationHours != null ? durationHours : 24, condition.getOperator(), thresholdValue); + + case "RAINFALL": + BigDecimal currentRainfall = getRealRainFall(stcd, durationHours); + return String.format("%s测点过去%dh降雨量%smm %s %smm", + stnm, durationHours != null ? durationHours : 24, + currentRainfall, condition.getOperator(), thresholdValue); + + case "WATER_STORAGE": + BigDecimal currentStoragePercent = getWaterStorage(condition.getYear()); + return String.format("蓄水量 %s 同期%s%%", + condition.getOperator(), thresholdValue); + + case "FORECAST_RAINFALL": + return String.format("%s测点未来%dh降雨量 %s %smm", + stnm, durationHours != null ? durationHours : 24, + condition.getOperator(), thresholdValue); + + default: + return String.format("未知指标类型%s %s %s", stcd, condition.getOperator(), thresholdValue); + } + } + + /** + * 计算条件的实际值 + */ + private BigDecimal calculateActualValue(WarningCondition condition, String warningType) { + String indicatorType = condition.getIndicatorType(); + String stcd = condition.getStcd(); + Integer durationHours = condition.getDurationHours(); + + switch (indicatorType) { + case "REAL_WATER_LEVEL": + return getRzByStcd(stcd); + case "PEAK_FLOW": + return getFloowMaxQ(durationHours); + case "RAINFALL": + return getRealRainFall(stcd, durationHours); + case "WATER_STORAGE": + return getWaterStorage(condition.getYear()); + case "FORECAST_RAINFALL": + return getForecastRainFall(stcd, durationHours); + default: + return BigDecimal.ZERO; + } + } + + /** + * 比较实际值和阈值 + */ + private boolean compareValue(BigDecimal actualValue, WarningCondition condition) { + if (actualValue == null || condition.getThresholdValue() == null) { + return false; + } + + String operator = condition.getOperator(); + BigDecimal threshold = condition.getThresholdValue(); + + switch (operator) { + case ">": + return actualValue.compareTo(threshold) > 0; + case ">=": + return actualValue.compareTo(threshold) >= 0; + case "<": + return actualValue.compareTo(threshold) < 0; + case "<=": + return actualValue.compareTo(threshold) <= 0; + default: + return false; + } + } + + /** + * 评估条件组合是否满足 + * 处理 AND/OR 逻辑关系 + */ + private boolean evaluateConditions(List conditions) { + if (conditions.isEmpty()) { + return false; + } + + boolean result = false; + boolean currentGroup = conditions.get(0).getIsEnjoy(); + + for (int i = 0; i < conditions.size() - 1; i++) { + WarningCondition current = conditions.get(i); + WarningCondition next = conditions.get(i + 1); + String relation = current.getRelationType(); + + if ("AND".equals(relation)) { + // AND 关系:当前组与下一个条件进行与运算 + currentGroup = currentGroup && next.getIsEnjoy(); + } else if ("OR".equals(relation)) { + // OR 关系:当前结果与当前组进行或运算,然后开始新的组 + result = result || currentGroup; + currentGroup = next.getIsEnjoy(); + } + } + + // 处理最后一个条件 + result = result || currentGroup; + + return result; + } + + //获取实时水位 + private BigDecimal getRzByStcd(String stcd){ + //获取河道水位的站点编码 + List riverStcd = riverWaterService.getRiverStcd(); + if(riverStcd.contains(stcd)){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StRiverRReal::getStcd,stcd); + StRiverRReal stRiverRReal = stRiverRRealService.getBaseMapper().selectOne(queryWrapper); + if(stRiverRReal != null){ + return stRiverRReal.getZ(); + } + return BigDecimal.ZERO; + }else{ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StRsvrRReal::getStcd,stcd); + StRsvrRReal stRsvrRReal = stRsvrRRealService.getBaseMapper().selectOne(queryWrapper); + if(stRsvrRReal != null){ + return stRsvrRReal.getRz(); + } + return BigDecimal.ZERO; + } + } + + //获取预报洪峰流量 + private BigDecimal getFloowMaxQ(Integer durationHours){ + ForecastTask forecastTask = new ForecastTask(); + // 设置当前时间整点 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime nowHour = now.withMinute(0).withSecond(0).withNano(0); + forecastTask.setNowTime(LocalDateTimeConverter.toDate(nowHour)); + + // 设置开始时间(当前时间减去一天) + LocalDateTime startTime = nowHour.minusDays(1); + forecastTask.setStartTime(LocalDateTimeConverter.toDate(startTime)); + + // 设置结束时间(当前时间加上durationHours) + LocalDateTime endTime = nowHour.plusHours(durationHours); + forecastTask.setEndTime(LocalDateTimeConverter.toDate(endTime)); + + forecastTask.setForecastWarm(1); + forecastTask.setForecastPeriod(durationHours); // 设置预报时长 + List humanForecastResult = forecastResultsService.getHumanForecastResult(forecastTask); + //过滤出预报的数据 + humanForecastResult = humanForecastResult.stream().filter(o ->{ + return o.getIspreDrp().equals("1") && o.getYcRkQValue() != null; + }).collect(Collectors.toList()); + BigDecimal totalQ = BigDecimal.ZERO; + for (ForecastResultVo forecastResultVo : humanForecastResult) { + totalQ = totalQ.add(forecastResultVo.getYcRkQValue()); + } + return totalQ; + } + + + //获取降雨量的值 + public BigDecimal getRealRainFall(String stcd,Integer durationHours){ + StPptnDetailsVo stPptnDetailsVo = rainBasinDivisionService.queryStPptnDetailsByStcd(stcd); + if (stPptnDetailsVo == null) { + return BigDecimal.ZERO; // 或返回 BigDecimal.ZERO,根据业务需求调整 + } + + BigDecimal result = switch (durationHours) { + case 1 -> stPptnDetailsVo.getH1(); + case 3 -> stPptnDetailsVo.getH3(); + case 6 -> stPptnDetailsVo.getH6(); + case 12 -> stPptnDetailsVo.getH12(); + case 24 -> stPptnDetailsVo.getH24(); + case 48 -> stPptnDetailsVo.getH48(); + // 3. 未匹配的时长(如2、5等),返回null或默认值 + default -> BigDecimal.ZERO; // 或 throw new IllegalArgumentException("不支持的时长:" + durationHours); + }; + return result == null?BigDecimal.ZERO:result; + } + + @Autowired + private HisWaterDataService hisWaterDataService; + + //获取蓄水量 - 修改后的逻辑 + private BigDecimal getWaterStorage(String year){ + List list = reservoirWaterService.list(); + if (list == null || list.isEmpty()) { + return BigDecimal.ZERO; + } + + AttResBaseVo reservoir = list.get(0); + BigDecimal nowCap = reservoir.getNowCap() == null ? BigDecimal.ZERO : reservoir.getNowCap(); + BigDecimal deadCap = reservoir.getDeadCap() == null ? BigDecimal.ZERO : reservoir.getDeadCap(); + BigDecimal availableWater = nowCap.subtract(deadCap); // 当前可用水量 + + // 获取当前月份 + int currentMonth = LocalDateTime.now().getMonthValue(); + String month = String.valueOf(currentMonth); + + // 获取某年同月的蓄水量作为基准值 + List hisWaterDataList = hisWaterDataService.lambdaQuery() + .eq(HisWaterData::getYear, year) + .eq(HisWaterData::getMonth, month) + .eq(HisWaterData::getType,2) + .list(); + + BigDecimal baseWaterStorage = BigDecimal.ZERO; + if (!hisWaterDataList.isEmpty()) { + HisWaterData hisWaterData = hisWaterDataList.get(0); + baseWaterStorage = hisWaterData.getAvgWater() == null ? BigDecimal.ZERO : hisWaterData.getAvgWater(); + } + + // 如果基准值为0,避免除零错误,返回0 + if (baseWaterStorage.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.ZERO; + } + + // 计算当前可用水量占同期蓄水量的百分比 + BigDecimal percentage = availableWater.divide(baseWaterStorage, 4, RoundingMode.HALF_UP) + .multiply(new BigDecimal("100")); + + return percentage; + } + + + + //获取预测降雨量 + private BigDecimal getForecastRainFall(String stcd,Integer durationHours) { + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + // 获取当前日期(默认系统时区,可指定时区如:ZoneId.of("UTC")) + LocalDate today = LocalDate.now(ZoneId.systemDefault()); + String todayDateStr = today.format(dateFormatter); // 结果示例:20251120 + String tm = todayDateStr + "08"; // 拼接固定小时,最终格式:2025112008 + WeatherSo weatherSo = new WeatherSo(); + weatherSo.setTm(tm); + List fore = forecastService.fore(weatherSo); + for (ForeRainVo foreRainVo : fore) { + if (stcd.equals(foreRainVo.getStcd())) { + BigDecimal forecastRain = BigDecimal.ZERO; + switch (durationHours) { + case 1: + forecastRain = foreRainVo.getH1(); + return forecastRain; + case 3: + forecastRain = foreRainVo.getH3(); + return forecastRain; + case 6: + forecastRain = foreRainVo.getH6(); + return forecastRain; + case 12: + forecastRain = foreRainVo.getH12(); + return forecastRain; + case 24: + forecastRain = new BigDecimal(foreRainVo.getH24()); + return forecastRain; + default: + return BigDecimal.ZERO; + } + } + } + return BigDecimal.ZERO; + } + +} diff --git a/src/main/java/com/gunshi/project/ss/util/BigdecimalUtil.java b/src/main/java/com/gunshi/project/ss/util/BigdecimalUtil.java new file mode 100644 index 0000000..1ce13ee --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/BigdecimalUtil.java @@ -0,0 +1,47 @@ +package com.gunshi.project.ss.util; + +import org.apache.commons.math3.distribution.GammaDistribution; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; + +/** + * @author cxw + * @description + * @classname BigdecimalUtil.java + * @create 2024-11-06, 星期三, 10:33:41 + */ +public class BigdecimalUtil { + + + /** + * @description: 小数指数计算 + * @param base 底数 + * @param exponent 指数 + * @return: java.math.BigDecimal + * @auther: cxw + * @date: 2024-11-06, 周三, 10:34:47 + */ + public static BigDecimal bigDecimalExponentiation(BigDecimal base, double exponent) { + BigDecimal result = BigDecimal.valueOf(Math.pow(base.doubleValue(), exponent)).round(new MathContext(10, RoundingMode.HALF_UP)); + return result; + } + + + /** + * @description: 计算x的伽马函数 + * @param x + * @return: java.math.BigDecimal + * @auther: cxw + * @date: 2024-11-06, 周三, 11:31:24 + */ + public static double gammaDist(double x, double alpha, double beta, boolean cumulative) { + GammaDistribution gammaDist = new GammaDistribution(alpha, 1/beta); + if (cumulative) { + return gammaDist.cumulativeProbability(x); + } else { + return gammaDist.density(x); + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/util/ConvertUtil.java b/src/main/java/com/gunshi/project/ss/util/ConvertUtil.java new file mode 100644 index 0000000..63ee30c --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/ConvertUtil.java @@ -0,0 +1,50 @@ +package com.gunshi.project.ss.util; + +/** + * @author cxw + * @description: (描述这个类或者方法的作用) + * @classname ConvertUtil.java + * @create 2024-07-10, 星期三, 10:34:14 + */ +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +public class ConvertUtil { + public static final Logger logger = LoggerFactory.getLogger(ConvertUtil.class); + + public static T entityToVo(Object source, Class target) { + if (source == null) { + return null; + } + T targetObject = null; + try { + targetObject = target.newInstance(); + BeanUtils.copyProperties(source, targetObject); + } catch (Exception e) { + e.printStackTrace(); + } + return targetObject; + } + + public static List entityToVoList(Collection sourceList, Class target) { + if (sourceList == null) { + return null; + } + List targetList = new ArrayList<>(sourceList.size()); + + try { + for (Object source : sourceList) { + T targetObject = target.newInstance(); + BeanUtils.copyProperties(source, targetObject); + targetList.add(targetObject); + } + } catch (Exception e) { + logger.error("convert error ", e); + } + return targetList; + } +} diff --git a/src/main/java/com/gunshi/project/ss/util/DataHandleUtil.java b/src/main/java/com/gunshi/project/ss/util/DataHandleUtil.java new file mode 100644 index 0000000..bef1c5d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/DataHandleUtil.java @@ -0,0 +1,82 @@ +package com.gunshi.project.ss.util; + + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + + +public class DataHandleUtil { + + /** + * 判断BigDecimal的小数部分是否为0 + * @param bigDecimal + * @return + */ + public static long BigDecimalIntegerPart(BigDecimal bigDecimal) { + BigDecimal integerPart = bigDecimal.setScale(0, RoundingMode.UP); + return integerPart.longValue(); + } + + + public static BigDecimal calcData(BigDecimal rz, Map map,List list) { + //库容曲线中最近的一组水位 + BigDecimal lowerRz = new BigDecimal(0); + BigDecimal upperRz = new BigDecimal(0); + + //库容曲线中最近的一组水位对应的库容 + BigDecimal lowerW = new BigDecimal(0); + BigDecimal upperW = new BigDecimal(0); + + for(int i=0;i= 0 && rz.compareTo(list.get(i+1)) <= 0) { + lowerRz = list.get(i); + upperRz = list.get(i+1); + + lowerW = map.get(lowerRz); + upperW = map.get(upperRz); + break; + } + } + BigDecimal diff = rz.subtract(lowerRz); + return lowerW.add(diff.multiply(upperW.subtract(lowerW)).divide(upperRz.subtract(lowerRz),2,RoundingMode.UP)); + } + + public static List tableData( List> list){ + List list2 = new ArrayList<>(); + Collection values; + for (int i = 0; i < list.size(); i++) { + values = list.get(i).values(); + List objects = new ArrayList<>(); + for (Object value : values) { + objects.add(value == null ? "" : value.toString()); + } + list2.add(objects); + } + return list2; + } + + public static List paginate(List list, int pageNumber, int pageSize) { + if (list == null || list.isEmpty()) { + return new ArrayList(); + } + + int totalSize = list.size(); + int fromIndex = (pageNumber - 1) * pageSize; + if (fromIndex >= totalSize || fromIndex < 0) { + return new ArrayList(); + } + + int toIndex = fromIndex + pageSize; + if (toIndex > totalSize) { + toIndex = totalSize; + } + + return list.subList(fromIndex, toIndex); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/util/DateTransforUtil.java b/src/main/java/com/gunshi/project/ss/util/DateTransforUtil.java new file mode 100644 index 0000000..9aa7f47 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/DateTransforUtil.java @@ -0,0 +1,190 @@ +package com.gunshi.project.ss.util; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Date; + +public class DateTransforUtil { + + // 默认日期时间格式 + private static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; + private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; + + /** + * 将Date转换为字符串(默认格式:yyyy-MM-dd HH:mm:ss) + */ + public static String transforDateToString(Date date) { + if (date == null) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); + return transforDateToString(date, formatter); + } + + /** + * 将Date转换为字符串(指定格式) + */ + public static String transforDateToString(Date date, DateTimeFormatter formatter) { + if (date == null) { + return null; + } + LocalDateTime localDateTime = date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + return localDateTime.format(formatter); + } + + /** + * 将Date转换为字符串(指定格式字符串) + */ + public static String transforDateToString(Date date, String pattern) { + if (date == null) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + return transforDateToString(date, formatter); + } + + /** + * 将字符串转换为Date(指定格式) + */ + public static Date transforStringToDate(String date, DateTimeFormatter formatter) { + if (date == null || date.trim().isEmpty()) { + return null; + } + LocalDateTime localDateTime = LocalDateTime.parse(date, formatter); + return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 将字符串转换为Date(默认格式:yyyy-MM-dd HH:mm:ss) + */ + public static Date transforStringToDate(String date) { + if (date == null || date.trim().isEmpty()) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); + return transforStringToDate(date, formatter); + } + + /** + * 将字符串转换为Date(指定格式字符串) + */ + public static Date transforStringToDate(String date, String pattern) { + if (date == null || date.trim().isEmpty()) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + return transforStringToDate(date, formatter); + } + + /** + * 将LocalDateTime转换为字符串(默认格式:yyyy-MM-dd HH:mm:ss) + */ + public static String transforLocalDateTimeToString(LocalDateTime date) { + if (date == null) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); + return date.format(formatter); + } + + /** + * 将LocalDateTime转换为字符串(指定格式) + */ + public static String transforLocalDateTimeToString(LocalDateTime date, DateTimeFormatter formatter) { + if (date == null) { + return null; + } + return date.format(formatter); + } + + /** + * 将LocalDateTime转换为字符串(指定格式字符串) + */ + public static String transforLocalDateTimeToString(LocalDateTime date, String pattern) { + if (date == null) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + return date.format(formatter); + } + + /** + * 将字符串转换为LocalDateTime(默认格式:yyyy-MM-dd HH:mm:ss) + */ + public static LocalDateTime transforStringToLocalDateTime(String date) { + if (date == null || date.trim().isEmpty()) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT); + return LocalDateTime.parse(date, formatter); + } + + /** + * 将字符串转换为LocalDateTime(指定格式) + */ + public static LocalDateTime transforStringToLocalDateTime(String date, DateTimeFormatter formatter) { + if (date == null || date.trim().isEmpty()) { + return null; + } + return LocalDateTime.parse(date, formatter); + } + + /** + * 将字符串转换为LocalDateTime(指定格式字符串) + */ + public static LocalDateTime transforStringToLocalDateTime(String date, String pattern) { + if (date == null || date.trim().isEmpty()) { + return null; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); + return LocalDateTime.parse(date, formatter); + } + + /** + * 将Date转换为LocalDateTime + */ + public static LocalDateTime transforDateToLocalDateTime(Date date) { + if (date == null) { + return null; + } + return date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + } + + /** + * 将LocalDateTime转换为Date + */ + public static Date transforLocalDateTimeToDate(LocalDateTime date) { + if (date == null) { + return null; + } + return Date.from(date.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 将LocalDate转换为Date + */ + public static Date transforLocalDateToDate(LocalDate date) { + if (date == null) { + return null; + } + return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } + + /** + * 将Date转换为LocalDate + */ + public static LocalDate transforDateToLocalDate(Date date) { + if (date == null) { + return null; + } + return date.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/util/DateUtil.java b/src/main/java/com/gunshi/project/ss/util/DateUtil.java new file mode 100644 index 0000000..5aee26a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/DateUtil.java @@ -0,0 +1,267 @@ +package com.gunshi.project.ss.util; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; + +/** + * Description: + * Created by wanyan on 2024/2/28 + * + * @author wanyan + * @version 1.0 + */ +public class DateUtil { + + // 使用 ConcurrentMap 来缓存 SimpleDateFormat 实例 + private static final ConcurrentMap> DATE_FORMAT_CACHE = new ConcurrentHashMap<>(); + + private static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + private static SimpleDateFormat chineseYmd = new SimpleDateFormat("yyyy年MM月dd日"); + + private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + private static DateTimeFormatter ymdformat = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + private static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd日HH时"); + + private static DateTimeFormatter ym = DateTimeFormatter.ofPattern("YYYYMM"); + + public static Date convertStringToDate(String str){ + try { + return df.parse(str); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + public static final ThreadLocal sdfhmsS = new ThreadLocal() { + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + } + }; + + public static String convertDateToString(Date date){ + return sdf.format(date); + } + + public static String convertDateToMDSString(Date date){ + return df.format(date); + } + + public static String convertDateToChineseYmd(Date date){ + return chineseYmd.format(date); + } + + public static long hoursBetweenDate(Date start,Date end){ + long startTime = start.getTime(); + long endTime = end.getTime(); + long hours = TimeUnit.MILLISECONDS.toHours(endTime - startTime); + return Math.round(hours); + } + + /** + * 年初 + * @param year + * @return + */ + public static LocalDateTime beginningOfYear(Integer year){ + return LocalDateTime.of(year, 1, 1, 0, 0, 0, 0); + } + + /** + * 年末 + * @param year + * @return + */ + public static LocalDateTime endOfYear(Integer year){ + return beginningOfYear(year).plusYears(1).minusSeconds(1); + } + + + /** + * 年初 + * @param year + * @return + */ + public static Date beginOfYearToDate(Integer year){ + if (year == null) { + throw new IllegalArgumentException("Year cannot be null"); + } + + LocalDate localDate = LocalDate.of(year, 1, 1); + return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } + + /** + * 年末 + * @param year + * @return + */ + public static Date endOfYearToDate(Integer year){ + if (year == null) { + throw new IllegalArgumentException("Year cannot be null"); + } + LocalDateTime time = LocalDateTime.of(year, 1, 1, 0, 0, 0, 0); + time = time.plusYears(1).minusSeconds(1); + return Date.from(time.atZone(ZoneId.systemDefault()).toInstant()); + } + + + + /** + * 将Date对象转换为LocalDateTime对象. + * + * @param date 需要转换的Date对象 + * @return 转换后的LocalDateTime对象 + */ + public static Optional convertFromDate(Date date) { + if (date == null) { + throw new IllegalArgumentException("date is null"); + } + + Instant instant = date.toInstant(); + return Optional.of(instant.atZone(ZoneId.systemDefault()).toLocalDateTime()); + } + + + public static String getIntegerTime(){ + LocalDateTime now = LocalDateTime.now(); + LocalDateTime roundedTime = now.withMinute(0).withSecond(0).withNano(0); + return roundedTime.format(formatter); + } + + public static String getMinusIntegerTime(){ + LocalDateTime yesterday = LocalDateTime.now().minusDays(1); + LocalDateTime roundedTime = yesterday.withMinute(0).withSecond(0).withNano(0); + return roundedTime.format(formatter); + } + + public static String convertDH(String str){ + LocalDateTime dateTime = LocalDateTime.parse(str, formatter); + return dateTime.format(dtf); + } + + public static String getMinusTime(String str,long hour){ + LocalDateTime dateTime = LocalDateTime.parse(str, formatter); + LocalDateTime minusTime = dateTime.minusHours(hour); + return minusTime.format(formatter); + } + + public static String getPlusTime(String str,long hour){ + LocalDateTime dateTime = LocalDateTime.parse(str, formatter); + LocalDateTime plusTime = dateTime.plusHours(hour); + return plusTime.format(formatter); + } + + public static String getPlusDate(Date date,long day){ + String str = convertDateToString(date); + LocalDate localDate = LocalDate.parse(str, ymdformat); + LocalDate plusDay = localDate.plusDays(day); + return plusDay.format(ymdformat); + } + + public static String getTodayEight(){ + LocalDateTime now = LocalDateTime.now(); + LocalDateTime roundedTime = now.withHour(8).withMinute(0).withSecond(0).withNano(0); + return roundedTime.format(formatter); + } + + public static Integer getMD(int year, int month) { + if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { + return 31; + } else if (month == 4 || month == 6 || month == 9 || month == 11) { + return 30; + } else if (month == 2) { + //判断是否是闰年 + if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { + return 29; + } else { + return 28; + } + } + return 31; + } + + public static String getYM() { + LocalDateTime now = LocalDateTime.now(); + return now.format(ym); + } + + public static List getDatesBetween(Date startDate, Date endDate,Boolean isDesc) { + List dates = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(); + while (startDate.getTime()<=endDate.getTime()){ + // 把日期添加到集合 + dates.add(convertDateToString(startDate)); + // 设置日期 + calendar.setTime(startDate); + //把日期增加一天 + calendar.add(Calendar.DATE, 1); + // 获取增加后的日期 + startDate=calendar.getTime(); + } + if(isDesc){ + return dates.reversed(); + } + return dates; + } + + public static List getDatesBetween(Date startDate, Date endDate) { + List dates = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + + while (calendar.getTime().before(endDate)) { + dates.add(calendar.getTime()); + calendar.add(Calendar.DATE, 1); + } + dates.add(endDate); + return dates; + } + + + public static boolean isValidDate(Date date, String format) { + if (date == null || format == null || format.isEmpty()) { + return false; + } + + try { + SimpleDateFormat sdf = getThreadSafeFormatter(format); + sdf.setLenient(false); // 设置严格模式 + sdf.parse(date.toString()); + return true; + } catch (IllegalArgumentException | ParseException e) { + return false; + } + } + + private static SimpleDateFormat getThreadSafeFormatter(String format) { + return DATE_FORMAT_CACHE.computeIfAbsent(format, key -> ThreadLocal.withInitial(() -> new SimpleDateFormat(key))).get(); + } + + public static List getMonthsBetweenDates(String startDateStr, String endDateStr) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDate startDate = LocalDate.parse(startDateStr, formatter); + LocalDate endDate = LocalDate.parse(endDateStr, formatter); + + List months = new ArrayList<>(); + while (startDate.isBefore(endDate)) { + months.add(startDate.getMonthValue()); + startDate = startDate.plusMonths(1); + } + + return months; + } +} diff --git a/src/main/java/com/gunshi/project/ss/util/ExcelUtil.java b/src/main/java/com/gunshi/project/ss/util/ExcelUtil.java new file mode 100644 index 0000000..096c44d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/ExcelUtil.java @@ -0,0 +1,279 @@ +package com.gunshi.project.ss.util; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.resource.ClassPathResource; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; +import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.gunshi.project.ss.util.excel.ExcelFillCellMergeStrategy; +import com.gunshi.project.ss.util.excel.ExcelListener; +import com.gunshi.project.ss.util.excel.ExcelResult; +import com.gunshi.project.ss.util.excel.VoteTitleHandler; +import jakarta.servlet.http.HttpServletResponse; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Map; + +public class ExcelUtil { + + /** + * 导出excel + * + * @param list 导出数据集合,加动态表头 + * @param filename 工作表的名称 + * @param clazz 实体类 + * @param response 响应体 + */ + public static void exportExcel(List list, String filename, Class clazz, HttpServletResponse response, String sheetName) { + OutputStream out = null; + try { + out = getOutputStream(filename, response); + ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) + //是否自动关闭流 + .autoCloseStream(Boolean.FALSE) + //自动列宽(不太精确) + .registerWriteHandler(new VoteTitleHandler(filename)) + .sheet(sheetName); + builder.doWrite(list); + } finally { + try { + if (out != null) { + out.flush(); + out.close(); + } + } catch (IOException e) { + throw new RuntimeException("导出Excel异常"); + } + } + } + + public static void exportExcel(List list, String filename, Class clazz,int mergeRowIndex, int[] mergeColumnIndex, HttpServletResponse response, String sheetName) { + OutputStream out = null; + try { + out = getOutputStream(filename, response); + ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) + //是否自动关闭流 + .autoCloseStream(Boolean.FALSE) + //自动列宽(不太精确) + .registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex)) + .sheet(sheetName); + builder.doWrite(list); + } finally { + try { + if (out != null) { + out.flush(); + out.close(); + } + } catch (IOException e) { + throw new RuntimeException("导出Excel异常"); + } + } + } + + /** + * 导出excel,合并指定单元格 + * + * @param list 导出数据集合,加动态表头 + * @param filename 工作表的名称 + * @param clazz 实体类 + * @param response 响应体 + */ + public static void exportExcel(List list, String filename, Class clazz, HttpServletResponse response, String sheetName, Integer type) { + OutputStream out = null; + try { + out = getOutputStream(filename, response); + if (type == 1) { + OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(36, 36, 1, 2); + OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(36, 36, 3, 6); + OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(36, 36, 7, 8); + OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(36, 36, 9, 12); + ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) + //是否自动关闭流 + .autoCloseStream(Boolean.FALSE) + //自动列宽(不太精确) + .registerWriteHandler(new VoteTitleHandler(filename)) + .registerWriteHandler(strategy) + .registerWriteHandler(strategy1) + .registerWriteHandler(strategy2) + .registerWriteHandler(strategy3) + .sheet(sheetName); + builder.doWrite(list); + } else { + OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(33, 37, 0, 0); + OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(38, 38, 0, 1); + OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(38, 38, 3, 5); + OnceAbsoluteMergeStrategy strategy4 = new OnceAbsoluteMergeStrategy(38, 38, 7, 9); + OnceAbsoluteMergeStrategy strategy5 = new OnceAbsoluteMergeStrategy(38, 38, 11, 13); + ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) + //是否自动关闭流 + .autoCloseStream(Boolean.FALSE) + .registerWriteHandler(new VoteTitleHandler(filename)) + .registerWriteHandler(strategy1) + .registerWriteHandler(strategy2) + .registerWriteHandler(strategy3) + .registerWriteHandler(strategy4) + .registerWriteHandler(strategy5) + .sheet(sheetName); + for (int i = 2; i < 33; i++) { + OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(i, i, 0, 1); + builder.registerWriteHandler(strategy); + } + builder.doWrite(list); + } + } finally { + try { + if (out != null) { + out.flush(); + out.close(); + } + } catch (IOException e) { + throw new RuntimeException("导出Excel异常"); + } + } + } + + /** + * 导出动态列 + * + * @param head 表头 + * @param data 数据 + * @param filename + * @param response + * @param sheetName + * @param + */ + public static void exportExcel(List> head, List data, String filename, HttpServletResponse response, String sheetName) { + OutputStream out = null; + try { + out = getOutputStream(filename, response); + ExcelWriterSheetBuilder builder = EasyExcel.write(out) + //是否自动关闭流 + .autoCloseStream(Boolean.FALSE) + //自动列宽(不太精确) + .registerWriteHandler(new VoteTitleHandler(filename)) + .head(head) + .sheet(sheetName); + builder.doWrite(data); + } finally { + try { + if (out != null) { + out.flush(); + out.close(); + } + } catch (IOException e) { + throw new RuntimeException("导出Excel异常"); + } + } + } + + /** + * 导出动态列,带合并单元格 + * + * @param head 表头 + * @param data 表格数据 + * @param mergeRowIndex 从第几行开始合并 + * @param mergeColumnIndex 合并字段的下标,如第一到五列new int[]{0,1,2,3,4} + * @param filename + * @param response + * @param sheetName + * @param + */ + public static void exportExcel(List> head, List data, int mergeRowIndex, int[] mergeColumnIndex, String filename, HttpServletResponse response, String sheetName) { + OutputStream out = null; + try { + out = getOutputStream(filename, response); + ExcelWriterSheetBuilder builder = EasyExcel.write(out) + //是否自动关闭流 + .autoCloseStream(Boolean.FALSE) + .registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex)) + .head(head) + .sheet(sheetName); + builder.doWrite(data); + } finally { + try { + if (out != null) { + out.flush(); + out.close(); + } + } catch (IOException e) { + throw new RuntimeException("导出Excel异常"); + } + } + } + + /** + * 单表多数据模板导出 模板格式为 {.属性} + * + * @param filename 文件名 + * @param templatePath 模板路径 resource 目录下的路径包括模板文件名 + * 例如: excel/temp.xlsx + * 重点: 模板文件必须放置到启动类对应的 resource 目录下 + * @param data 模板需要的数据 + * @param list 模板需要的集合数据 + */ + public static void exportTemplate(Map data, List list, String filename, String templatePath, HttpServletResponse response) { + OutputStream out = null; + try { + out = getOutputStream(filename, response); + ClassPathResource templateResource = new ClassPathResource(templatePath); + ExcelWriter excelWriter = EasyExcel.write(out) + .withTemplate(templateResource.getStream()) + .excelType(ExcelTypeEnum.XLSX) + .build(); + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + if (CollUtil.isEmpty(data)) { + throw new IllegalArgumentException("数据为空"); + } + excelWriter.fill(list, writeSheet); + excelWriter.fill(data, writeSheet); + excelWriter.finish(); + } finally { + try { + if (out != null) { + out.flush(); + out.close(); + } + } catch (IOException e) { + throw new RuntimeException("导出Excel异常"); + } + } + } + + private static OutputStream getOutputStream(String fileName, HttpServletResponse response) { + try { + fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"); + response.setCharacterEncoding("utf8"); + response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx"); + response.setHeader("Pragma", "public"); + response.setHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); + return response.getOutputStream(); + } catch (IOException e) { + System.out.println(e.getMessage()); + } + return null; + } + + /** + * 使用自定义监听器 异步导入 自定义返回 + * + * @param is 输入流 + * @param clazz 对象类型 + * @param listener 自定义监听器 + * @return 转换后集合 + */ + public static ExcelResult importExcel(InputStream is, Class clazz, ExcelListener listener) { + EasyExcel.read(is, clazz, listener).sheet().doRead(); + return listener.getExcelResult(); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/util/LocalDateTimeUtils.java b/src/main/java/com/gunshi/project/ss/util/LocalDateTimeUtils.java new file mode 100644 index 0000000..2e2a571 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/LocalDateTimeUtils.java @@ -0,0 +1,221 @@ +package com.gunshi.project.ss.util; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class LocalDateTimeUtils { + + /** + * 判断月份是否在阶段时间内 + */ + public static boolean isMonthInPeriod(int month, LocalDateTime startTime, LocalDateTime endTime) { + if (startTime == null || endTime == null) { + return false; + } + + LocalDate startDate = startTime.toLocalDate(); + LocalDate endDate = endTime.toLocalDate(); + LocalDate current = startDate; + + while (!current.isAfter(endDate)) { + if (current.getMonthValue() == month) { + return true; + } + current = current.plusDays(1); + } + + return false; + } + + /** + * 计算阶段在指定月份的天数 + */ + public static int calculateDaysInMonthForPeriod(LocalDateTime startTime, LocalDateTime endTime, int targetMonth) { + if (startTime == null || endTime == null) { + return 0; + } + + LocalDate startDate = startTime.toLocalDate(); + LocalDate endDate = endTime.toLocalDate(); + LocalDate current = startDate; + int daysInTargetMonth = 0; + + while (!current.isAfter(endDate)) { + if (current.getMonthValue() == targetMonth) { + daysInTargetMonth++; + } + current = current.plusDays(1); + } + + return daysInTargetMonth; + } + + /** + * 获取指定月份的总天数 + */ + public static int getTotalDaysInMonth(int year, int month) { + LocalDate date = LocalDate.of(year, month, 1); + return date.lengthOfMonth(); + } + + /** + * 获取时间段内包含的月份 + */ + public static List getMonthsInPeriod(LocalDateTime startTime, LocalDateTime endTime) { + List months = new ArrayList<>(); + if (startTime == null || endTime == null) { + return months; + } + + LocalDate current = startTime.toLocalDate(); + LocalDate end = endTime.toLocalDate(); + + while (!current.isAfter(end)) { + int month = current.getMonthValue(); + if (!months.contains(month)) { + months.add(month); + } + current = current.plusDays(1); + } + + // 按月份顺序排序 + Collections.sort(months); + return months; + } + + /** + * 获取阶段跨越的月份集合 + */ + public static Set getMonthsInPeriodSet(LocalDateTime startTime, LocalDateTime endTime) { + Set months = new HashSet<>(); + LocalDateTime current = startTime; + + while (!current.isAfter(endTime)) { + months.add(current.getMonthValue()); + current = current.plusMonths(1).withDayOfMonth(1); + } + + return months; + } + + /** + * 根据传入的时间范围,获取所有天数,从小到大排列 + * + * @param startTime 开始时间(包含) + * @param endTime 结束时间(包含) + * @return 时间范围内的所有天数列表 + */ + public static List getAllDaysByStartAndEndTime(LocalDateTime startTime, LocalDateTime endTime) { + // 1. 参数校验 + if (startTime == null || endTime == null) { + throw new IllegalArgumentException("开始时间和结束时间不能为空"); + } + + if (startTime.isAfter(endTime)) { + throw new IllegalArgumentException("开始时间不能晚于结束时间"); + } + + List result = new ArrayList<>(); + + // 2. 获取开始日期的0点 + LocalDateTime currentDay = startTime.toLocalDate().atStartOfDay(); + LocalDateTime endDay = endTime.toLocalDate().atStartOfDay(); + + // 3. 循环添加每一天 + while (!currentDay.isAfter(endDay)) { + result.add(currentDay); + currentDay = currentDay.plusDays(1); + } + + return result; + } + + /** + * 根据时间范围获取包含的所有年份 + * @param startTime 起始时间 + * @param endTime 结束时间 + * @return 年份列表(升序) + */ + public static List getYearByRangeDate(LocalDateTime startTime, LocalDateTime endTime) { + if (startTime == null || endTime == null) { + throw new IllegalArgumentException("开始时间和结束时间不能为空"); + } + + if (startTime.isAfter(endTime)) { + throw new IllegalArgumentException("开始时间不能晚于结束时间"); + } + + int startYear = startTime.getYear(); + int endYear = endTime.getYear(); + + // 使用Stream生成年份列表 + return IntStream.rangeClosed(startYear, endYear) + .boxed() + .collect(Collectors.toList()); + } + + /** + * 根据开始时间和结束时间,计算时间间隔内的总天数 + * 包含开始日期和结束日期(两头都算) + * + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 总天数(包含起止日) + */ + public static Integer getTotalDayByRangeDate(LocalDateTime startTime, LocalDateTime endTime) { + if (startTime == null || endTime == null) { + throw new IllegalArgumentException("开始时间和结束时间不能为空"); + } + + if (startTime.isAfter(endTime)) { + throw new IllegalArgumentException("开始时间不能晚于结束时间"); + } + + // 转换为LocalDate,忽略时间部分 + LocalDate startDate = startTime.toLocalDate(); + LocalDate endDate = endTime.toLocalDate(); + + // 使用ChronoUnit.DAYS.between计算天数差,+1表示包含起止日 + long days = ChronoUnit.DAYS.between(startDate, endDate) + 1; + + // 转换为Integer,注意数值范围检查 + if (days > Integer.MAX_VALUE) { + throw new ArithmeticException("天数超出Integer范围"); + } + + return (int) days; + } + + /** + * 计算忽略年份的时间范围内的天数(用于年循环的周期,如生长周期) + * 处理跨年情况,如11月15日到次年3月15日 + * + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 天数(假设为同一年计算) + */ + public static int calculateDaysIgnoringYear(LocalDateTime startTime, LocalDateTime endTime) { + if (startTime == null || endTime == null) { + return 0; + } + // 将开始和结束时间调整为同一年(比如都调整为2020年) + int baseYear = 2020; // 选择一个基准年 + + LocalDateTime adjustedStart = startTime.withYear(baseYear); + LocalDateTime adjustedEnd = endTime.withYear(baseYear); + + // 如果调整后开始时间在结束时间之后,说明是跨年周期 + // 如:11月15日(2020年)到3月15日(2020年)实际上应该是11月15日到次年3月15日 + if (adjustedStart.isAfter(adjustedEnd)) { + adjustedEnd = adjustedEnd.plusYears(1); // 结束时间加一年 + } + + // 计算天数 + return getTotalDayByRangeDate(adjustedStart, adjustedEnd); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/util/MyBeanUtil.java b/src/main/java/com/gunshi/project/ss/util/MyBeanUtil.java new file mode 100644 index 0000000..249f924 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/MyBeanUtil.java @@ -0,0 +1,125 @@ +package com.gunshi.project.ss.util; + +import org.springframework.beans.BeanUtils; +import org.springframework.util.CollectionUtils; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.*; + +/** + * Description:BeanUtils拓展工具类 + * Created by wanyan on 2024/7/10 + * + * @author wanyan + * @version 1.0 + */ +public class MyBeanUtil extends BeanUtils{ + + public MyBeanUtil() { + } + + public static T propertiesCopy(Object source, Class clazz) { + if (null == source) { + return null; + } else { + try { + T obj = clazz.newInstance(); + BeanUtils.copyProperties(source, obj); + return obj; + } catch (IllegalAccessException | InstantiationException var3) { + throw new RuntimeException(var3); + } + } + } + + /** + * list中对象的copy + * @param source + * @param clazz + * @param + * @return + */ + public static List collectionCopy(Collection source, Class clazz) { + if (null == source) { + return new ArrayList(); + } else { + List list = new ArrayList(); + Iterator var3 = source.iterator(); + + while(var3.hasNext()) { + Object o = var3.next(); + list.add(propertiesCopy(o, clazz)); + } + + return list; + } + } + + /** + * 将对象转换为map + * @param obj + * @return + */ + public static Map object2Map(Object obj) { + Map map = new HashMap(); + if (obj == null) { + return map; + } else { + Class clazz = obj.getClass(); + Field[] fields = clazz.getDeclaredFields(); + + try { + Field[] var4 = fields; + int var5 = fields.length; + + for(int var6 = 0; var6 < var5; ++var6) { + Field field = var4[var6]; + field.setAccessible(true); + map.put(field.getName(), field.get(obj)); + } + + return map; + } catch (Exception var8) { + throw new RuntimeException(var8); + } + } + } + + + /** + * 将map转换为对象,必须保证属性名称相同 + * @return + */ + public static Object map2Object(Map map,Class clzz){ + try { + Object target = clzz.newInstance(); + if(CollectionUtils.isEmpty(map)){ + return target; + } + Field[] fields = clzz.getDeclaredFields(); + if(!CollectionUtils.isEmpty(Arrays.asList(fields))){ + Arrays.stream(fields).filter((Field field) -> map.containsKey(field.getName())).forEach(var -> { + //获取属性的修饰符 + int modifiers = var.getModifiers(); + if(Modifier.isStatic(modifiers) || Modifier.isFinal(modifiers)){ + //在lambada中结束本次循环是用return,它不支持continue和break + return; + } + //设置权限 + var.setAccessible(true); + try { + var.set(target,map.get(var.getName())); + } catch (IllegalAccessException e) { + //属性类型不对,非法操作,跳过本次循环,直接进入下一次循环 + throw new RuntimeException(e); + } + }); + } + return target; + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/com/gunshi/project/ss/util/OkHttpUtil.java b/src/main/java/com/gunshi/project/ss/util/OkHttpUtil.java new file mode 100644 index 0000000..1c1b726 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/OkHttpUtil.java @@ -0,0 +1,30 @@ +package com.gunshi.project.ss.util; + +import com.google.common.base.Suppliers; +import okhttp3.OkHttpClient; + +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; + +public class OkHttpUtil { + private OkHttpUtil(){ + + } + private static final Supplier OK_HTTP_CLIENT_FACTORY = Suppliers.memoize(OkHttpClient::new); + + public static OkHttpClient build(){ + return OK_HTTP_CLIENT_FACTORY.get().newBuilder().retryOnConnectionFailure(true) + .connectTimeout(10, TimeUnit.SECONDS) + .callTimeout(240, TimeUnit.SECONDS) + .readTimeout(240, TimeUnit.SECONDS) + .build(); + } + + public static OkHttpClient build(int timeout, int callTimeout){ + return OK_HTTP_CLIENT_FACTORY.get().newBuilder().retryOnConnectionFailure(true) + .connectTimeout(timeout, TimeUnit.SECONDS) + .callTimeout(callTimeout, TimeUnit.SECONDS) + .readTimeout(callTimeout, TimeUnit.SECONDS) + .build(); + } +} diff --git a/src/main/java/com/gunshi/project/ss/util/ProjectCalculateUtil.java b/src/main/java/com/gunshi/project/ss/util/ProjectCalculateUtil.java new file mode 100644 index 0000000..b09a577 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/ProjectCalculateUtil.java @@ -0,0 +1,204 @@ +package com.gunshi.project.ss.util; + +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.model.RegressionEquation; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 工程安全分析-线性回归方程计算 + */ +public class ProjectCalculateUtil { + + private static List filterValidData(List data) { + return data.stream() + .filter(vo -> vo.getRz() != null && vo.getValue() != null) + .collect(Collectors.toList()); + } + + private static BigDecimal calculateRSquared(List data, + List coefficients, + BigDecimal meanY) { + BigDecimal ssTot = BigDecimal.ZERO; + BigDecimal ssRes = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : data) { + BigDecimal x = vo.getRz(); + BigDecimal y = vo.getValue(); + BigDecimal yPredicted = predictWithCoefficients(x, coefficients); + + BigDecimal diffActual = y.subtract(meanY); + ssTot = ssTot.add(diffActual.multiply(diffActual)); + + BigDecimal diffResidual = y.subtract(yPredicted); + ssRes = ssRes.add(diffResidual.multiply(diffResidual)); + } + + if (ssTot.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.ONE; + } + + return BigDecimal.ONE.subtract(ssRes.divide(ssTot, 30, RoundingMode.HALF_UP)); + } + + private static BigDecimal predictWithCoefficients(BigDecimal x, List coefficients) { + BigDecimal result = BigDecimal.ZERO; + BigDecimal xPower = BigDecimal.ONE; + + for (BigDecimal coeff : coefficients) { + result = result.add(coeff.multiply(xPower)); + xPower = xPower.multiply(x); + } + + return result; + } + + private static BigDecimal calculateDeterminant3x3(BigDecimal a11, BigDecimal a12, BigDecimal a13, + BigDecimal a21, BigDecimal a22, BigDecimal a23, + BigDecimal a31, BigDecimal a32, BigDecimal a33) { + return a11.multiply(a22.multiply(a33).subtract(a23.multiply(a32))) + .subtract(a12.multiply(a21.multiply(a33).subtract(a23.multiply(a31)))) + .add(a13.multiply(a21.multiply(a32).subtract(a22.multiply(a31)))); + } + + /** + * 计算线性回归方程(1阶) 库水位x轴,检测值y轴 + */ + public static RegressionEquation calculateLinear(List data) { + List validData = filterValidData(data); + if (validData.isEmpty()) { + throw new IllegalArgumentException("没有有效的数据点进行计算"); + } + + int n = validData.size(); + + BigDecimal sumX = BigDecimal.ZERO; + BigDecimal sumY = BigDecimal.ZERO; + BigDecimal sumXY = BigDecimal.ZERO; + BigDecimal sumX2 = BigDecimal.ZERO; + BigDecimal sumY2 = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : validData) { + BigDecimal x = vo.getRz(); + BigDecimal y = vo.getValue(); + + sumX = sumX.add(x); + sumY = sumY.add(y); + sumXY = sumXY.add(x.multiply(y)); + sumX2 = sumX2.add(x.multiply(x)); + sumY2 = sumY2.add(y.multiply(y)); + } + + BigDecimal nBig = new BigDecimal(n); + BigDecimal meanX = sumX.divide(nBig, 30, RoundingMode.HALF_UP); + BigDecimal meanY = sumY.divide(nBig, 30, RoundingMode.HALF_UP); + + BigDecimal numerator = sumXY.subtract(nBig.multiply(meanX).multiply(meanY)); + BigDecimal denominator = sumX2.subtract(nBig.multiply(meanX).multiply(meanX)); + + if (denominator.compareTo(BigDecimal.ZERO) == 0) { + throw new IllegalArgumentException("数据点x值相同,无法计算斜率"); + } + + BigDecimal slope = numerator.divide(denominator, 30, RoundingMode.HALF_UP); + BigDecimal intercept = meanY.subtract(slope.multiply(meanX)); + + // 计算R² + BigDecimal rSquared = calculateRSquared(validData, + List.of(intercept, slope), meanY); + + // 系数列表:[常数项, 一次项系数] + List coefficients = List.of( + intercept.setScale(10, RoundingMode.HALF_UP), + slope.setScale(10, RoundingMode.HALF_UP) + ); + + return new RegressionEquation(1, coefficients, rSquared, n); + } + + /** + * 计算二次回归方程(2阶) + */ + public static RegressionEquation calculateQuadratic(List data) { + List validData = filterValidData(data); + if (validData.size() < 3) { + throw new IllegalArgumentException("二次回归至少需要3个数据点"); + } + + int n = validData.size(); + + BigDecimal sumX = BigDecimal.ZERO, sumY = BigDecimal.ZERO; + BigDecimal sumX2 = BigDecimal.ZERO, sumX3 = BigDecimal.ZERO, sumX4 = BigDecimal.ZERO; + BigDecimal sumXY = BigDecimal.ZERO, sumX2Y = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : validData) { + BigDecimal x = vo.getRz(); + BigDecimal y = vo.getValue(); + + BigDecimal x2 = x.multiply(x); + BigDecimal x3 = x2.multiply(x); + BigDecimal x4 = x3.multiply(x); + + sumX = sumX.add(x); + sumY = sumY.add(y); + sumX2 = sumX2.add(x2); + sumX3 = sumX3.add(x3); + sumX4 = sumX4.add(x4); + sumXY = sumXY.add(x.multiply(y)); + sumX2Y = sumX2Y.add(x2.multiply(y)); + } + + BigDecimal nBig = new BigDecimal(n); + + // 使用克莱姆法则求解 + BigDecimal det = calculateDeterminant3x3( + nBig, sumX, sumX2, + sumX, sumX2, sumX3, + sumX2, sumX3, sumX4 + ); + + if (det.compareTo(BigDecimal.ZERO) == 0) { + throw new IllegalArgumentException("矩阵奇异,无法求解二次回归方程"); + } + + BigDecimal detA0 = calculateDeterminant3x3( + sumY, sumX, sumX2, + sumXY, sumX2, sumX3, + sumX2Y, sumX3, sumX4 + ); + + BigDecimal detA1 = calculateDeterminant3x3( + nBig, sumY, sumX2, + sumX, sumXY, sumX3, + sumX2, sumX2Y, sumX4 + ); + + BigDecimal detA2 = calculateDeterminant3x3( + nBig, sumX, sumY, + sumX, sumX2, sumXY, + sumX2, sumX3, sumX2Y + ); + + BigDecimal a0 = detA0.divide(det, 30, RoundingMode.HALF_UP); + BigDecimal a1 = detA1.divide(det, 30, RoundingMode.HALF_UP); + BigDecimal a2 = detA2.divide(det, 30, RoundingMode.HALF_UP); + + // 计算R² + BigDecimal meanY = sumY.divide(nBig, 30, RoundingMode.HALF_UP); + BigDecimal rSquared = calculateRSquared(validData, + List.of(a0, a1, a2), meanY); + + // 系数列表:[常数项, 一次项系数, 二次项系数] + List coefficients = List.of( + a0.setScale(10, RoundingMode.HALF_UP), + a1.setScale(10, RoundingMode.HALF_UP), + a2.setScale(10, RoundingMode.HALF_UP) + ); + + return new RegressionEquation(2, coefficients, rSquared, n); + } + +} diff --git a/src/main/java/com/gunshi/project/ss/util/RegressionAnalysis.java b/src/main/java/com/gunshi/project/ss/util/RegressionAnalysis.java new file mode 100644 index 0000000..8ab132a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/RegressionAnalysis.java @@ -0,0 +1,747 @@ +package com.gunshi.project.ss.util; + +import com.gunshi.project.ss.common.model.vo.OsmoticPressDetailVo; +import com.gunshi.project.ss.model.RegressionEquation; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 回归分析工具类 + * + * + * 库水位rz为x轴 + * 检测值value为y轴 + */ +public class RegressionAnalysis { + + /** + * 计算线性回归方程(1阶) + */ + public static RegressionEquation calculateLinear(List data) { + int n = 0; + BigDecimal rSquared = null; + List coefficients = null; + try { + List validData = filterValidData(data); + if (validData.isEmpty()) { + throw new IllegalArgumentException("没有有效的数据点进行计算"); + } + + n = validData.size(); + + // 检查所有x值是否相同 + boolean allXSame = checkAllXSame(validData); + if (allXSame) { + // 所有x值相同,返回常数函数(y = 平均值) + BigDecimal meanY = calculateMeanY(validData); + List collect = List.of(meanY); + BigDecimal rSquareds = BigDecimal.ZERO; // 这种情况下R²为0 + return new RegressionEquation(1, collect, rSquareds, n); + } + + BigDecimal sumX = BigDecimal.ZERO; + BigDecimal sumY = BigDecimal.ZERO; + BigDecimal sumXY = BigDecimal.ZERO; + BigDecimal sumX2 = BigDecimal.ZERO; + BigDecimal sumY2 = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : validData) { + BigDecimal x = vo.getRz(); + BigDecimal y = vo.getValue(); + + sumX = sumX.add(x); + sumY = sumY.add(y); + sumXY = sumXY.add(x.multiply(y)); + sumX2 = sumX2.add(x.multiply(x)); + sumY2 = sumY2.add(y.multiply(y)); + } + + BigDecimal nBig = new BigDecimal(n); + BigDecimal meanX = sumX.divide(nBig, 100, RoundingMode.HALF_UP); + BigDecimal meanY = sumY.divide(nBig, 100, RoundingMode.HALF_UP); + + BigDecimal numerator = sumXY.subtract(nBig.multiply(meanX).multiply(meanY)); + BigDecimal denominator = sumX2.subtract(nBig.multiply(meanX).multiply(meanX)); + + if (denominator.compareTo(BigDecimal.ZERO) == 0) { + throw new IllegalArgumentException("数据点x值相同,无法计算斜率"); + } + + BigDecimal slope = numerator.divide(denominator, 100, RoundingMode.HALF_UP); + BigDecimal intercept = meanY.subtract(slope.multiply(meanX)); + + // 计算R² + rSquared = calculateRSquared(validData, List.of(intercept, slope), meanY); + + // 系数列表:[常数项, 一次项系数] - 不进行四舍五入 + coefficients = List.of(intercept, slope); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + return null; + } + + return new RegressionEquation(1, coefficients, rSquared, n); + } + + /** + * 计算二次回归方程(2阶) + */ + public static RegressionEquation calculateQuadratic(List data) { + int n = 0; + BigDecimal rSquared = null; + List coefficients = null; + try { + List validData = filterValidData(data); + if (validData.size() < 3) { + throw new IllegalArgumentException("二次回归至少需要3个数据点"); + } + + n = validData.size(); + + // 检查所有x值是否相同 + boolean allXSame = checkAllXSame(validData); + if (allXSame) { + // 所有x值相同,返回常数函数 + BigDecimal meanY = calculateMeanY(validData); + List collect = List.of(meanY); + BigDecimal rSquaredsame = BigDecimal.ZERO; + return new RegressionEquation(2, collect, rSquaredsame, n); + } + + // 计算各项和 + BigDecimal sumX = BigDecimal.ZERO, sumY = BigDecimal.ZERO; + BigDecimal sumX2 = BigDecimal.ZERO, sumX3 = BigDecimal.ZERO, sumX4 = BigDecimal.ZERO; + BigDecimal sumXY = BigDecimal.ZERO, sumX2Y = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : validData) { + BigDecimal x = vo.getRz(); + BigDecimal y = vo.getValue(); + + BigDecimal x2 = x.multiply(x); + BigDecimal x3 = x2.multiply(x); + BigDecimal x4 = x3.multiply(x); + + sumX = sumX.add(x); + sumY = sumY.add(y); + sumX2 = sumX2.add(x2); + sumX3 = sumX3.add(x3); + sumX4 = sumX4.add(x4); + sumXY = sumXY.add(x.multiply(y)); + sumX2Y = sumX2Y.add(x2.multiply(y)); + } + + BigDecimal nBig = new BigDecimal(n); + + // 使用克莱姆法则求解 + BigDecimal det = calculateDeterminant3x3( + nBig, sumX, sumX2, + sumX, sumX2, sumX3, + sumX2, sumX3, sumX4 + ); + + if (det.compareTo(BigDecimal.ZERO) == 0) { + throw new IllegalArgumentException("矩阵奇异,无法求解二次回归方程"); + } + + // 求解常数项 a + BigDecimal detA = calculateDeterminant3x3( + sumY, sumX, sumX2, + sumXY, sumX2, sumX3, + sumX2Y, sumX3, sumX4 + ); + + // 求解一次项系数 b + BigDecimal detB = calculateDeterminant3x3( + nBig, sumY, sumX2, + sumX, sumXY, sumX3, + sumX2, sumX2Y, sumX4 + ); + + // 求解二次项系数 c + BigDecimal detC = calculateDeterminant3x3( + nBig, sumX, sumY, + sumX, sumX2, sumXY, + sumX2, sumX3, sumX2Y + ); + + BigDecimal a = detA.divide(det, 100, RoundingMode.HALF_UP); // 常数项 + BigDecimal b = detB.divide(det, 100, RoundingMode.HALF_UP); // 一次项系数 + BigDecimal c = detC.divide(det, 100, RoundingMode.HALF_UP); // 二次项系数 + + // 计算R² + BigDecimal meanY = sumY.divide(nBig, 100, RoundingMode.HALF_UP); + rSquared = calculateRSquared(validData, List.of(a, b, c), meanY); + + // 系数列表:[常数项, 一次项系数, 二次项系数] - 不进行四舍五入 + coefficients = List.of(a, b, c); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + return null; + } + + return new RegressionEquation(2, coefficients, rSquared, n); + } + + + /** + * 计算三次回归方程(3阶)- 高精度版本 + */ + public static RegressionEquation calculateCubic(List data) { + try { + List validData = filterValidData(data); + if (validData.size() < 4) { + throw new IllegalArgumentException("三次回归至少需要4个数据点"); + } + + int n = validData.size(); + + // 使用高精度计算各项和 + MathContext mc = new MathContext(200, RoundingMode.HALF_UP); // 提高精度到200位 + + BigDecimal sumX = BigDecimal.ZERO, sumY = BigDecimal.ZERO; + BigDecimal sumX2 = BigDecimal.ZERO, sumX3 = BigDecimal.ZERO, sumX4 = BigDecimal.ZERO; + BigDecimal sumX5 = BigDecimal.ZERO, sumX6 = BigDecimal.ZERO; + BigDecimal sumXY = BigDecimal.ZERO, sumX2Y = BigDecimal.ZERO, sumX3Y = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : validData) { + BigDecimal x = vo.getRz(); + BigDecimal y = vo.getValue(); + + BigDecimal x2 = x.multiply(x, mc); + BigDecimal x3 = x2.multiply(x, mc); + BigDecimal x4 = x3.multiply(x, mc); + BigDecimal x5 = x4.multiply(x, mc); + BigDecimal x6 = x5.multiply(x, mc); + + sumX = sumX.add(x, mc); + sumY = sumY.add(y, mc); + sumX2 = sumX2.add(x2, mc); + sumX3 = sumX3.add(x3, mc); + sumX4 = sumX4.add(x4, mc); + sumX5 = sumX5.add(x5, mc); + sumX6 = sumX6.add(x6, mc); + sumXY = sumXY.add(x.multiply(y, mc), mc); + sumX2Y = sumX2Y.add(x2.multiply(y, mc), mc); + sumX3Y = sumX3Y.add(x3.multiply(y, mc), mc); + } + + BigDecimal nBig = new BigDecimal(n); + + // 构建正规方程组 - 使用中心化数据提高数值稳定性 + BigDecimal meanX = sumX.divide(nBig, mc); + + // 重新计算中心化后的各阶矩 + BigDecimal m2 = BigDecimal.ZERO, m3 = BigDecimal.ZERO, m4 = BigDecimal.ZERO, m5 = BigDecimal.ZERO, m6 = BigDecimal.ZERO; + BigDecimal m1y = BigDecimal.ZERO, m2y = BigDecimal.ZERO, m3y = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : validData) { + BigDecimal xCentered = vo.getRz().subtract(meanX, mc); + BigDecimal y = vo.getValue(); + + BigDecimal x2 = xCentered.multiply(xCentered, mc); + BigDecimal x3 = x2.multiply(xCentered, mc); + BigDecimal x4 = x3.multiply(xCentered, mc); + BigDecimal x5 = x4.multiply(xCentered, mc); + BigDecimal x6 = x5.multiply(xCentered, mc); + + m2 = m2.add(x2, mc); + m3 = m3.add(x3, mc); + m4 = m4.add(x4, mc); + m5 = m5.add(x5, mc); + m6 = m6.add(x6, mc); + m1y = m1y.add(xCentered.multiply(y, mc), mc); + m2y = m2y.add(x2.multiply(y, mc), mc); + m3y = m3y.add(x3.multiply(y, mc), mc); + } + + // 中心化后的正规方程组(常数项为0) + BigDecimal[][] matrix = { + {nBig, BigDecimal.ZERO, m2, m3}, + {BigDecimal.ZERO, m2, m3, m4}, + {m2, m3, m4, m5}, + {m3, m4, m5, m6} + }; + + // 注意:第一个方程对应常数项,右侧是sumY + BigDecimal[] vector = { + sumY, // 对应常数项 + m1y, // 对应一次项 + m2y, // 对应二次项 + m3y // 对应三次项 + }; + + // 使用高精度求解 + BigDecimal[] centeredCoefficients = solveLinearSystemHighPrecision(matrix, vector, mc); + if (centeredCoefficients == null) { + throw new IllegalArgumentException("无法求解三次回归方程"); + } + + // 将中心化系数转换回原始坐标 + BigDecimal[] originalCoefficients = convertCenteredToOriginalCubic(centeredCoefficients, meanX, mc); + + // 计算R² + BigDecimal meanY = sumY.divide(nBig, mc); + List coefficientsList = Arrays.asList(originalCoefficients); + BigDecimal rSquared = calculateRSquared(validData, coefficientsList, meanY); + + return new RegressionEquation(3, coefficientsList, rSquared, n); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + return null; + } + } + + /** + * 高精度线性方程组求解 + */ + private static BigDecimal[] solveLinearSystemHighPrecision(BigDecimal[][] matrix, BigDecimal[] vector, MathContext mc) { + int n = vector.length; + + // 复制矩阵和向量 + BigDecimal[][] a = new BigDecimal[n][n]; + BigDecimal[] b = new BigDecimal[n]; + for (int i = 0; i < n; i++) { + a[i] = matrix[i].clone(); + b[i] = vector[i]; + } + + // 部分主元高斯消元 + for (int k = 0; k < n; k++) { + // 寻找主元 + int maxRow = k; + BigDecimal maxVal = a[k][k].abs(); + for (int i = k + 1; i < n; i++) { + BigDecimal current = a[i][k].abs(); + if (current.compareTo(maxVal) > 0) { + maxVal = current; + maxRow = i; + } + } + + // 交换行 + if (maxRow != k) { + BigDecimal[] tempRow = a[k]; + a[k] = a[maxRow]; + a[maxRow] = tempRow; + + BigDecimal tempB = b[k]; + b[k] = b[maxRow]; + b[maxRow] = tempB; + } + + // 检查主元是否为0 - 增加容错 + if (a[k][k].abs().compareTo(new BigDecimal("1E-100")) < 0) { + // 尝试使用伪逆或特殊处理 + return solveSingularSystem(a, b, mc); + } + + // 消元 + for (int i = k + 1; i < n; i++) { + BigDecimal factor = a[i][k].divide(a[k][k], mc); + for (int j = k; j < n; j++) { + a[i][j] = a[i][j].subtract(factor.multiply(a[k][j], mc), mc); + } + b[i] = b[i].subtract(factor.multiply(b[k], mc), mc); + } + } + + // 回代 + BigDecimal[] x = new BigDecimal[n]; + for (int i = n - 1; i >= 0; i--) { + BigDecimal sum = BigDecimal.ZERO; + for (int j = i + 1; j < n; j++) { + sum = sum.add(a[i][j].multiply(x[j], mc), mc); + } + x[i] = b[i].subtract(sum, mc).divide(a[i][i], mc); + } + + return x; + } + + /** + * 处理奇异或接近奇异的系统 + */ + private static BigDecimal[] solveSingularSystem(BigDecimal[][] a, BigDecimal[] b, MathContext mc) { + int n = b.length; + + // 简单处理:将接近0的主元设为一个小值 + for (int k = 0; k < n; k++) { + if (a[k][k].abs().compareTo(new BigDecimal("1E-100")) < 0) { + a[k][k] = new BigDecimal("1E-50"); // 设置一个小值 + } + + for (int i = k + 1; i < n; i++) { + BigDecimal factor = a[i][k].divide(a[k][k], mc); + for (int j = k; j < n; j++) { + a[i][j] = a[i][j].subtract(factor.multiply(a[k][j], mc), mc); + } + b[i] = b[i].subtract(factor.multiply(b[k], mc), mc); + } + } + + // 回代 + BigDecimal[] x = new BigDecimal[n]; + for (int i = n - 1; i >= 0; i--) { + BigDecimal sum = BigDecimal.ZERO; + for (int j = i + 1; j < n; j++) { + sum = sum.add(a[i][j].multiply(x[j], mc), mc); + } + x[i] = b[i].subtract(sum, mc).divide(a[i][i], mc); + } + + return x; + } + + /** + * 将中心化三次系数转换回原始坐标 + */ + private static BigDecimal[] convertCenteredToOriginalCubic(BigDecimal[] centeredCoeffs, BigDecimal mean, MathContext mc) { + // centered: y = a + b(x-μ) + c(x-μ)² + d(x-μ)³ + // original: y = A + Bx + Cx² + Dx³ + + BigDecimal a = centeredCoeffs[0]; + BigDecimal b = centeredCoeffs[1]; + BigDecimal c = centeredCoeffs[2]; + BigDecimal d = centeredCoeffs[3]; + + BigDecimal mu = mean; + BigDecimal mu2 = mu.multiply(mu, mc); + BigDecimal mu3 = mu2.multiply(mu, mc); + + BigDecimal A = a.subtract(b.multiply(mu, mc), mc) + .add(c.multiply(mu2, mc), mc) + .subtract(d.multiply(mu3, mc), mc); + + BigDecimal B = b.subtract(BigDecimal.valueOf(2).multiply(c, mc).multiply(mu, mc), mc) + .add(BigDecimal.valueOf(3).multiply(d, mc).multiply(mu2, mc), mc); + + BigDecimal C = c.subtract(BigDecimal.valueOf(3).multiply(d, mc).multiply(mu, mc), mc); + BigDecimal D = d; + + return new BigDecimal[]{A, B, C, D}; + } + + + // 其他辅助方法 + private static List filterValidData(List data) { + return data.stream() + .filter(vo -> vo.getRz() != null && vo.getValue() != null) + .collect(Collectors.toList()); + } + + private static BigDecimal calculateDeterminant3x3(BigDecimal a11, BigDecimal a12, BigDecimal a13, + BigDecimal a21, BigDecimal a22, BigDecimal a23, + BigDecimal a31, BigDecimal a32, BigDecimal a33) { + return a11.multiply(a22.multiply(a33).subtract(a23.multiply(a32))) + .subtract(a12.multiply(a21.multiply(a33).subtract(a23.multiply(a31)))) + .add(a13.multiply(a21.multiply(a32).subtract(a22.multiply(a31)))); + } + + + private static BigDecimal predictWithCoefficients(BigDecimal x, List coefficients) { + BigDecimal result = BigDecimal.ZERO; + BigDecimal xPower = BigDecimal.ONE; + + for (BigDecimal coeff : coefficients) { + result = result.add(coeff.multiply(xPower)); + xPower = xPower.multiply(x); + } + + return result; + } + + + /** + * 计算四次回归方程(4阶)- 与三阶保持一致精度,失败时自动降级为三阶 + */ + public static RegressionEquation calculateQuartic(List data) { + try { + List validData = filterValidData(data); + if (validData.size() < 5) { + // 数据点不足5个,尝试三阶 + return calculateCubic(data); + } + + int n = validData.size(); + + // 检查所有x值是否相同 + boolean allXSame = checkAllXSame(validData); + if (allXSame) { + BigDecimal meanY = calculateMeanY(validData); + return new RegressionEquation(1, List.of(meanY), BigDecimal.ZERO, n); + } + + // 与三阶保持一致的200位精度 + MathContext mc = new MathContext(200, RoundingMode.HALF_UP); + + // 计算各项和(高精度) + BigDecimal sumX = BigDecimal.ZERO, sumY = BigDecimal.ZERO; + BigDecimal sumX2 = BigDecimal.ZERO, sumX3 = BigDecimal.ZERO, sumX4 = BigDecimal.ZERO; + BigDecimal sumX5 = BigDecimal.ZERO, sumX6 = BigDecimal.ZERO, sumX7 = BigDecimal.ZERO, sumX8 = BigDecimal.ZERO; + BigDecimal sumXY = BigDecimal.ZERO, sumX2Y = BigDecimal.ZERO, sumX3Y = BigDecimal.ZERO, sumX4Y = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : validData) { + BigDecimal x = vo.getRz(); + BigDecimal y = vo.getValue(); + + BigDecimal x2 = x.multiply(x, mc); + BigDecimal x3 = x2.multiply(x, mc); + BigDecimal x4 = x3.multiply(x, mc); + BigDecimal x5 = x4.multiply(x, mc); + BigDecimal x6 = x5.multiply(x, mc); + BigDecimal x7 = x6.multiply(x, mc); + BigDecimal x8 = x7.multiply(x, mc); + + sumX = sumX.add(x, mc); + sumY = sumY.add(y, mc); + sumX2 = sumX2.add(x2, mc); + sumX3 = sumX3.add(x3, mc); + sumX4 = sumX4.add(x4, mc); + sumX5 = sumX5.add(x5, mc); + sumX6 = sumX6.add(x6, mc); + sumX7 = sumX7.add(x7, mc); + sumX8 = sumX8.add(x8, mc); + sumXY = sumXY.add(x.multiply(y, mc), mc); + sumX2Y = sumX2Y.add(x2.multiply(y, mc), mc); + sumX3Y = sumX3Y.add(x3.multiply(y, mc), mc); + sumX4Y = sumX4Y.add(x4.multiply(y, mc), mc); + } + + BigDecimal nBig = new BigDecimal(n); + + // 中心化处理(与三阶逻辑一致,提高稳定性) + BigDecimal meanX = sumX.divide(nBig, mc); + + // 计算中心化后的各阶矩 + BigDecimal m2 = BigDecimal.ZERO, m3 = BigDecimal.ZERO, m4 = BigDecimal.ZERO, m5 = BigDecimal.ZERO, m6 = BigDecimal.ZERO, m7 = BigDecimal.ZERO, m8 = BigDecimal.ZERO; + BigDecimal m1y = BigDecimal.ZERO, m2y = BigDecimal.ZERO, m3y = BigDecimal.ZERO, m4y = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : validData) { + BigDecimal xCentered = vo.getRz().subtract(meanX, mc); + BigDecimal y = vo.getValue(); + + BigDecimal x2 = xCentered.multiply(xCentered, mc); + BigDecimal x3 = x2.multiply(xCentered, mc); + BigDecimal x4 = x3.multiply(xCentered, mc); + BigDecimal x5 = x4.multiply(xCentered, mc); + BigDecimal x6 = x5.multiply(xCentered, mc); + BigDecimal x7 = x6.multiply(xCentered, mc); + BigDecimal x8 = x7.multiply(xCentered, mc); + + m2 = m2.add(x2, mc); + m3 = m3.add(x3, mc); + m4 = m4.add(x4, mc); + m5 = m5.add(x5, mc); + m6 = m6.add(x6, mc); + m7 = m7.add(x7, mc); + m8 = m8.add(x8, mc); + m1y = m1y.add(xCentered.multiply(y, mc), mc); + m2y = m2y.add(x2.multiply(y, mc), mc); + m3y = m3y.add(x3.multiply(y, mc), mc); + m4y = m4y.add(x4.multiply(y, mc), mc); + } + + // 中心化后的正规方程组 + BigDecimal[][] matrix = { + {nBig, BigDecimal.ZERO, m2, m3, m4}, + {BigDecimal.ZERO, m2, m3, m4, m5}, + {m2, m3, m4, m5, m6}, + {m3, m4, m5, m6, m7}, + {m4, m5, m6, m7, m8} + }; + + BigDecimal[] vector = { + sumY, // 常数项 + m1y, // 一次项 + m2y, // 二次项 + m3y, // 三次项 + m4y // 四次项 + }; + + // 高精度求解四阶方程 + BigDecimal[] centeredCoefficients = solveLinearSystemHighPrecision(matrix, vector, mc); + if (centeredCoefficients == null) { + // 四阶求解失败,自动降级为三阶 + return calculateCubic(data); + } + + // 将中心化系数转换回原始坐标 + BigDecimal[] originalCoefficients = convertCenteredToOriginalQuartic(centeredCoefficients, meanX, mc); + + // 计算R² + BigDecimal meanY = sumY.divide(nBig, mc); + List coefficientsList = Arrays.asList(originalCoefficients); + BigDecimal rSquared = calculateRSquared(validData, coefficientsList, meanY); + + return new RegressionEquation(4, coefficientsList, rSquared, n); + } catch (Exception e) { + // 任何异常都降级为三阶 + return calculateCubic(data); + } + } + + /** + * 将中心化四次系数转换回原始坐标 + */ + private static BigDecimal[] convertCenteredToOriginalQuartic(BigDecimal[] centeredCoeffs, BigDecimal mean, MathContext mc) { + // centered: y = a + b(x-μ) + c(x-μ)² + d(x-μ)³ + e(x-μ)⁴ + // original: y = A + Bx + Cx² + Dx³ + Ex⁴ + BigDecimal a = centeredCoeffs[0]; + BigDecimal b = centeredCoeffs[1]; + BigDecimal c = centeredCoeffs[2]; + BigDecimal d = centeredCoeffs[3]; + BigDecimal e = centeredCoeffs[4]; + + BigDecimal mu = mean; + BigDecimal mu2 = mu.multiply(mu, mc); + BigDecimal mu3 = mu2.multiply(mu, mc); + BigDecimal mu4 = mu3.multiply(mu, mc); + + BigDecimal A = a.subtract(b.multiply(mu, mc), mc) + .add(c.multiply(mu2, mc), mc) + .subtract(d.multiply(mu3, mc), mc) + .add(e.multiply(mu4, mc), mc); + + BigDecimal B = b.subtract(BigDecimal.valueOf(2).multiply(c, mc).multiply(mu, mc), mc) + .add(BigDecimal.valueOf(3).multiply(d, mc).multiply(mu2, mc), mc) + .subtract(BigDecimal.valueOf(4).multiply(e, mc).multiply(mu3, mc), mc); + + BigDecimal C = c.subtract(BigDecimal.valueOf(3).multiply(d, mc).multiply(mu, mc), mc) + .add(BigDecimal.valueOf(6).multiply(e, mc).multiply(mu2, mc), mc); + + BigDecimal D = d.subtract(BigDecimal.valueOf(4).multiply(e, mc).multiply(mu, mc), mc); + + BigDecimal E = e; + + return new BigDecimal[]{A, B, C, D, E}; + } + + + /** + * 计算R² + */ + private static BigDecimal calculateRSquared(List data, + List coefficients, + BigDecimal meanY) { + BigDecimal ssTot = BigDecimal.ZERO; + BigDecimal ssRes = BigDecimal.ZERO; + + for (OsmoticPressDetailVo vo : data) { + BigDecimal x = vo.getRz(); + BigDecimal y = vo.getValue(); + BigDecimal yPredicted = predictWithCoefficients(x, coefficients); + + BigDecimal diffActual = y.subtract(meanY); + ssTot = ssTot.add(diffActual.multiply(diffActual)); + + BigDecimal diffResidual = y.subtract(yPredicted); + ssRes = ssRes.add(diffResidual.multiply(diffResidual)); + } + + if (ssTot.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.ONE; // 总平方和为0,拟合完美 + } + return BigDecimal.ONE.subtract(ssRes.divide(ssTot, MathContext.DECIMAL128), MathContext.DECIMAL128); + } + + /** + * 检查所有数据点的x值是否相同 + */ + private static boolean checkAllXSame(List data) { + if (data.isEmpty()) return false; + + BigDecimal firstX = data.get(0).getRz(); + for (OsmoticPressDetailVo vo : data) { + if (vo.getRz().compareTo(firstX) != 0) { + return false; + } + } + return true; + } + + /** + * 计算y值的平均值 + */ + private static BigDecimal calculateMeanY(List data) { + BigDecimal sum = BigDecimal.ZERO; + for (OsmoticPressDetailVo vo : data) { + sum = sum.add(vo.getValue()); + } + return sum.divide(new BigDecimal(data.size()), MathContext.DECIMAL128); + } + + /** + * 生成回归方程字符串(使用数学符号表示) + */ + public static String generateEquationString(int order, List coefficients) { + StringBuilder sb = new StringBuilder("y = "); + + for (int i = 0; i < coefficients.size(); i++) { + BigDecimal coeff = coefficients.get(i); + if (coeff.compareTo(BigDecimal.ZERO) == 0) { + continue; + } + + // 处理符号 + if (i > 0) { + if (coeff.compareTo(BigDecimal.ZERO) > 0) { + sb.append(" + "); + } else { + sb.append(" - "); + coeff = coeff.abs(); + } + } + + // 处理系数 + if (i == 0 || coeff.compareTo(BigDecimal.ONE) != 0) { + // 格式化系数,避免科学计数法 + String coeffStr = coeff.toPlainString(); + // 去除不必要的尾随零 + if (coeffStr.contains(".")) { + coeffStr = coeffStr.replaceAll("0+$", "").replaceAll("\\.$", ""); + } + sb.append(coeffStr); + } + + // 处理x的幂次 + if (i > 0) { + sb.append("x"); + if (i > 1) { + // 使用Unicode上标数字 + sb.append(getSuperscript(i)); + } + } + } + + return sb.toString(); + } + + /** + * 获取数字的Unicode上标表示 + */ + private static String getSuperscript(int number) { + String numStr = String.valueOf(number); + StringBuilder superscript = new StringBuilder(); + for (char c : numStr.toCharArray()) { + switch (c) { + case '0': superscript.append('⁰'); break; + case '1': superscript.append('¹'); break; + case '2': superscript.append('²'); break; + case '3': superscript.append('³'); break; + case '4': superscript.append('⁴'); break; + case '5': superscript.append('⁵'); break; + case '6': superscript.append('⁶'); break; + case '7': superscript.append('⁷'); break; + case '8': superscript.append('⁸'); break; + case '9': superscript.append('⁹'); break; + default: superscript.append(c); + } + } + return superscript.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/util/RegressionEquationFormatter.java b/src/main/java/com/gunshi/project/ss/util/RegressionEquationFormatter.java new file mode 100644 index 0000000..ce332dc --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/RegressionEquationFormatter.java @@ -0,0 +1,144 @@ +package com.gunshi.project.ss.util; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 回归方程格式化工具类 + */ +public class RegressionEquationFormatter { + + /** + * 格式化回归方程,保留小数点后指定有效小数位数(四舍五入) + * @param equation 原始方程字符串 + * @param decimalDigits 小数点后有效小数位数 + * @return 格式化后的方程字符串 + */ + public static String formatEquation(String equation, int decimalDigits) { + if (equation == null || equation.trim().isEmpty()) { + return equation; + } + + // 使用正则表达式匹配数字 + String regex = "-?\\d+\\.\\d+"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(equation); + + StringBuffer result = new StringBuffer(); + while (matcher.find()) { + String numberStr = matcher.group(); + try { + // 截取小数点后指定位数,进行四舍五入 + String formatted = roundDecimal(numberStr, decimalDigits); + matcher.appendReplacement(result, formatted); + } catch (Exception e) { + // 如果处理失败,保留原数字 + matcher.appendReplacement(result, numberStr); + } + } + matcher.appendTail(result); + + return result.toString(); + } + + /** + * 截取小数点后指定位数,进行四舍五入 + */ + private static String roundDecimal(String numberStr, int decimalDigits) { + boolean isNegative = numberStr.startsWith("-"); + if (isNegative) { + numberStr = numberStr.substring(1); + } + + // 使用BigDecimal进行精确的四舍五入 + BigDecimal bd = new BigDecimal(numberStr); + bd = bd.setScale(decimalDigits, RoundingMode.HALF_UP); + + // 转换为字符串 + String result = bd.toPlainString(); + + // 确保显示所有小数位(即使末尾是0) + if (result.contains(".")) { + String[] parts = result.split("\\."); + String integerPart = parts[0]; + String decimalPart = parts[1]; + + // 如果小数部分长度不足,补0 + while (decimalPart.length() < decimalDigits) { + decimalPart += "0"; + } + result = integerPart + "." + decimalPart; + } + + return isNegative ? "-" + result : result; + } + + /** + * 格式化回归方程,默认保留小数点后4位有效小数(四舍五入) + * @param equation 原始方程字符串 + * @return 格式化后的方程字符串 + */ + public static String formatEquation(String equation) { + return formatEquation(equation, 4); + } + + /** + * 格式化单个数字,保留小数点后指定有效小数位数(四舍五入) + * @param number 原始数字 + * @param decimalDigits 小数点后有效小数位数 + * @return 格式化后的字符串 + */ + public static String formatNumber(double number, int decimalDigits) { + String numberStr = String.valueOf(number); + return roundDecimal(numberStr, decimalDigits); + } + + /** + * 格式化单个数字,默认保留小数点后4位有效小数(四舍五入) + * @param number 原始数字 + * @return 格式化后的字符串 + */ + public static String formatNumber(double number) { + return formatNumber(number, 4); + } + + /** + * 格式化单个数字,保留小数点后指定有效小数位数(四舍五入) + * @param number 原始数字 + * @param decimalDigits 小数点后有效小数位数 + * @return 格式化后的字符串 + */ + public static String formatNumber(BigDecimal number, int decimalDigits) { + if (number == null) { + return "0"; + } + number = number.setScale(decimalDigits, RoundingMode.HALF_UP); + String result = number.toPlainString(); + + // 确保显示所有小数位(即使末尾是0) + if (result.contains(".")) { + String[] parts = result.split("\\."); + String integerPart = parts[0]; + String decimalPart = parts[1]; + + // 如果小数部分长度不足,补0 + while (decimalPart.length() < decimalDigits) { + decimalPart += "0"; + } + result = integerPart + "." + decimalPart; + } + + return result; + } + + /** + * 格式化单个数字,默认保留小数点后4位有效小数(四舍五入) + * @param number 原始数字 + * @return 格式化后的字符串 + */ + public static String formatNumber(BigDecimal number) { + return formatNumber(number, 4); + } +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/util/ResultJson.java b/src/main/java/com/gunshi/project/ss/util/ResultJson.java new file mode 100644 index 0000000..8013715 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/ResultJson.java @@ -0,0 +1,170 @@ +package com.gunshi.project.ss.util; + +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.stereotype.Component; + +import java.io.Serializable; +import java.util.Date; + +@Schema(description = "数据传输对象") +@Component +@SuppressWarnings("all") +public class ResultJson implements Serializable { + + private static final long serialVersionUID = 1L; + /** + * 成功 + */ + public static final Integer SUCCESS = 200; + public static final String SUCCESS_MSG = "success"; + + /** + * 失败 + */ + public static final Integer FAIL = 900; + public static final String FAIL_MSG = "fail"; + + public static final Integer PARAM_ERROR = 400; // 失败、参数错误等 + public static final Integer UNAUTHORIZED = 401; // 用户验证失败,或者用户验证信息过期 + public static final Integer PERMISSION_DENIED = 403; // 没有权限 + public static final Integer NOT_FOUND = 404; // 未找到资源 + public static final Integer METHOD_NOT_ALLOWED = 405; // 不支持的类型 + public static final Integer NSUPPORTED_MEDIA_TYPE = 415; // 不支持的媒体 + public static final Integer NOT_ALLOWED = 405; // 请求太频繁,同一个用户(token)、同一个url、同样的请求参数,请求间隔小于0.5秒 + public static final Integer SERVER_ERROR = 500; // 后台错误 + public static final Integer SRC_TIMEOUT = 504; // 请求资源超时 + + + @Schema(description="数据消息") + private String msg; + + @Schema(description="传输状态码(200=成功;400=参数错误; 500=后端错误;900=失败)") + private Integer code; + + @Schema(description="传输数据") + private T data; + + @Schema(description="接口响应时间戳") + private String restm; // 接口响应时间戳。如果有缓存,则该时间表示最后接口响应时间 + + public static ResultJson error() { + return error(FAIL, "未知异常,请联系管理员"); + } + + public static ResultJson error(String msg) { + return error(FAIL, msg); + } + + public static ResultJson error(int code, String msg) { + ResultJson r = new ResultJson(); + r.setCode(code); + r.setMsg(msg); + r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); + return r; + } + + public static ResultJson error(int code, String msg, Object data) { + ResultJson r = new ResultJson(); + r.setCode(code); + r.setMsg(msg); + r.setData(data); + r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); + return r; + } + + public static ResultJson ok(Integer code, String msg) { + ResultJson r = new ResultJson(); + r.setMsg(msg); + r.setCode(code); + r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); + return r; + } + + public static ResultJson ok() { + ResultJson r = new ResultJson(); + r.setCode(SUCCESS); + r.setMsg(SUCCESS_MSG); + r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); + return r; + } + + public static ResultJson ok(Object data) { + ResultJson r = new ResultJson(); + r.setCode(SUCCESS); + r.setMsg(SUCCESS_MSG); + r.setData(data); + r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); + return r; + } + + public static ResultJson ok(Object data, String msg) { + ResultJson r = new ResultJson(); + r.setData(data); + r.setCode(SUCCESS); + r.setMsg(msg); + r.setRestm(DateUtil.sdfhmsS.get().format(new Date())); + return r; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public static Integer getSUCCESS() { + return SUCCESS; + } + + public static String getSuccessMsg() { + return SUCCESS_MSG; + } + + public static Integer getFAIL() { + return FAIL; + } + + public static String getFailMsg() { + return FAIL_MSG; + } + + public String getRestm() { + return restm; + } + + public void setRestm(String restm) { + this.restm = restm; + } + + @Override + public String toString() { + return "ResultJson{" + + "msg='" + msg + "'" + + ", code=" + code + + ", data=" + data + + ", restm=" + restm + + '}'; + } +} diff --git a/src/main/java/com/gunshi/project/ss/util/ServiceException.java b/src/main/java/com/gunshi/project/ss/util/ServiceException.java new file mode 100644 index 0000000..ab3fb37 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/ServiceException.java @@ -0,0 +1,64 @@ +package com.gunshi.project.ss.util; + +/** + * 业务异常 + * + * @author ruoyi + */ +public final class ServiceException extends RuntimeException { + private static final long serialVersionUID = 1L; + + /** + * 错误码 + */ + private Integer code; + + /** + * 错误提示 + */ + private String message; + + /** + * 错误明细,内部调试错误 + *

+ */ + private String detailMessage; + + /** + * 空构造方法,避免反序列化问题 + */ + public ServiceException() { + } + + public ServiceException(String message) { + this.message = message; + } + + public ServiceException(String message, Integer code) { + this.message = message; + this.code = code; + } + + public String getDetailMessage() { + return detailMessage; + } + + @Override + public String getMessage() { + return message; + } + + public Integer getCode() { + return code; + } + + public ServiceException setMessage(String message) { + this.message = message; + return this; + } + + public ServiceException setDetailMessage(String detailMessage) { + this.detailMessage = detailMessage; + return this; + } +} diff --git a/src/main/java/com/gunshi/project/ss/util/excel/DefautExcelResult.java b/src/main/java/com/gunshi/project/ss/util/excel/DefautExcelResult.java new file mode 100644 index 0000000..1583ad9 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/excel/DefautExcelResult.java @@ -0,0 +1,72 @@ +package com.gunshi.project.ss.util.excel; + +import cn.hutool.core.util.StrUtil; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; + +/** + * 默认excel返回对象 + * + * + */ +public class DefautExcelResult implements ExcelResult { + + /** + * 数据对象list + */ + @Setter + private List list; + + /** + * 错误信息列表 + */ + @Setter + private List errorList; + + public DefautExcelResult() { + this.list = new ArrayList<>(); + this.errorList = new ArrayList<>(); + } + + public DefautExcelResult(List list, List errorList) { + this.list = list; + this.errorList = errorList; + } + + public DefautExcelResult(ExcelResult excelResult) { + this.list = excelResult.getList(); + this.errorList = excelResult.getErrorList(); + } + + @Override + public List getList() { + return list; + } + + @Override + public List getErrorList() { + return errorList; + } + + /** + * 获取导入回执 + * + * @return 导入回执 + */ + @Override + public String getAnalysis() { + int successCount = list.size(); + int errorCount = errorList.size(); + if (successCount == 0) { + return "读取失败,未解析到数据"; + } else { + if (errorCount == 0) { + return StrUtil.format("恭喜您,全部读取成功!共{}条", successCount); + } else { + return ""; + } + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/util/excel/ExcelFillCellMergeStrategy.java b/src/main/java/com/gunshi/project/ss/util/excel/ExcelFillCellMergeStrategy.java new file mode 100644 index 0000000..630e0c0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/excel/ExcelFillCellMergeStrategy.java @@ -0,0 +1,96 @@ +package com.gunshi.project.ss.util.excel; + +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import lombok.Data; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddress; + +import java.util.List; + + +@Data +public class ExcelFillCellMergeStrategy implements CellWriteHandler { + /** + * 合并字段的下标,如第一到五列new int[]{0,1,2,3,4} + */ + private int[] mergeColumnIndex; + /** + * 从第几行开始合并,如果表头占两行,这个数字就是2 + */ + private int mergeRowIndex; + + + public ExcelFillCellMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndex = mergeColumnIndex; + } + + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, + Head head, Integer integer, Integer integer1, Boolean aBoolean) { + + } + + @Override + public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, + Head head, Integer integer, Boolean aBoolean) { + + } + + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, + List> list, Cell cell, Head head, Integer integer, Boolean aBoolean) { + //当前行 + int curRowIndex = cell.getRowIndex(); + //当前列 + int curColIndex = cell.getColumnIndex(); + + if (curRowIndex > mergeRowIndex) { + for (int i = 0; i < mergeColumnIndex.length; i++) { + if (curColIndex == mergeColumnIndex[i]) { + mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); + break; + } + } + } + } + + private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) { + //获取当前行的当前列的数据和上一行的当前列列数据,通过上一行数据是否相同进行合并 + Object curData = cell.getCellTypeEnum() == CellType.STRING ? cell.getStringCellValue() : + cell.getNumericCellValue(); + Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); + Object preData = preCell.getCellTypeEnum() == CellType.STRING ? preCell.getStringCellValue() :preCell.getNumericCellValue(); + // 比较当前行的第一列的单元格与上一行是否相同,相同合并当前单元格与上一行 + if (curData.equals(preData)) { + Sheet sheet = writeSheetHolder.getSheet(); + List mergeRegions = sheet.getMergedRegions(); + boolean isMerged = false; + for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { + CellRangeAddress cellRangeAddr = mergeRegions.get(i); + // 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元 + if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { + sheet.removeMergedRegion(i); + cellRangeAddr.setLastRow(curRowIndex); + sheet.addMergedRegion(cellRangeAddr); + isMerged = true; + } + } + // 若上一个单元格未被合并,则新增合并单元 + if (!isMerged) { + CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, + curColIndex); + sheet.addMergedRegion(cellRangeAddress); + } + } + } +} + diff --git a/src/main/java/com/gunshi/project/ss/util/excel/ExcelListener.java b/src/main/java/com/gunshi/project/ss/util/excel/ExcelListener.java new file mode 100644 index 0000000..e17a54f --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/excel/ExcelListener.java @@ -0,0 +1,14 @@ +package com.gunshi.project.ss.util.excel; + +import com.alibaba.excel.read.listener.ReadListener; + +/** + * Excel 导入监听 + * + * @author Lion Li + */ +public interface ExcelListener extends ReadListener { + + ExcelResult getExcelResult(); + +} diff --git a/src/main/java/com/gunshi/project/ss/util/excel/ExcelResult.java b/src/main/java/com/gunshi/project/ss/util/excel/ExcelResult.java new file mode 100644 index 0000000..653c692 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/excel/ExcelResult.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.util.excel; + +import java.util.List; + +/** + * excel返回对象 + * + * @author Lion Li + */ +public interface ExcelResult { + + /** + * 对象列表 + */ + List getList(); + + /** + * 错误列表 + */ + List getErrorList(); + + /** + * 导入回执 + */ + String getAnalysis(); +} diff --git a/src/main/java/com/gunshi/project/ss/util/excel/LengthValid.java b/src/main/java/com/gunshi/project/ss/util/excel/LengthValid.java new file mode 100644 index 0000000..04f0f42 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/excel/LengthValid.java @@ -0,0 +1,23 @@ +package com.gunshi.project.ss.util.excel; + +import java.lang.annotation.*; + +/** + * Description: + * Created by wanyan on 2024/8/19 + * + * @author wanyan + * @version 1.0 + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +public @interface LengthValid { + + int length() default 0; + + String msg() default ""; + +} + + diff --git a/src/main/java/com/gunshi/project/ss/util/excel/VoteTitleHandler.java b/src/main/java/com/gunshi/project/ss/util/excel/VoteTitleHandler.java new file mode 100644 index 0000000..caec0e0 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/excel/VoteTitleHandler.java @@ -0,0 +1,45 @@ +package com.gunshi.project.ss.util.excel; + +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import org.apache.poi.ss.usermodel.Row; +import org.springframework.util.PropertyPlaceholderHelper; + +import java.util.Date; +import java.util.List; +import java.util.Properties; + + +public class VoteTitleHandler implements CellWriteHandler { + + private String title; + + private String describe; + + private Date voteTime; + + PropertyPlaceholderHelper placeholderHelper = new PropertyPlaceholderHelper("${", "}"); + + public VoteTitleHandler(String title) { + this.title = title; + } + + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, + Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) { + if (head != null) { + List headNameList = head.getHeadNameList(); + if (CollectionUtils.isNotEmpty(headNameList)) { + Properties properties = new Properties(); + properties.setProperty("title", title); + for (int i = 0; i < headNameList.size(); i++) { + headNameList.set(i, placeholderHelper.replacePlaceholders(headNameList.get(i), properties)); + } + } + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/util/spring/SpringUtils.java b/src/main/java/com/gunshi/project/ss/util/spring/SpringUtils.java new file mode 100644 index 0000000..22e427a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/util/spring/SpringUtils.java @@ -0,0 +1,65 @@ +package com.gunshi.project.ss.util.spring; + +import cn.hutool.extra.spring.SpringUtil; +import org.springframework.aop.framework.AopContext; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.stereotype.Component; + +/** + * spring工具类 + * + * + */ +@Component +public final class SpringUtils extends SpringUtil { + + /** + * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true + * + * @param name + * @return boolean + */ + public static boolean containsBean(String name) { + return getBeanFactory().containsBean(name); + } + + /** + * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 + * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException) + * + * @param name + * @return boolean + */ + public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { + return getBeanFactory().isSingleton(name); + } + + /** + * @param name + * @return Class 注册对象的类型 + */ + public static Class getType(String name) throws NoSuchBeanDefinitionException { + return getBeanFactory().getType(name); + } + + /** + * 如果给定的bean名字在bean定义中有别名,则返回这些别名 + * + * @param name + */ + public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { + return getBeanFactory().getAliases(name); + } + + /** + * 获取aop代理对象 + * + * @param invoker + * @return + */ + @SuppressWarnings("unchecked") + public static T getAopProxy(T invoker) { + return (T) AopContext.currentProxy(); + } + +} diff --git a/src/main/resources/config-common.yml b/src/main/resources/config-common.yml index 1113e5e..8842d11 100644 --- a/src/main/resources/config-common.yml +++ b/src/main/resources/config-common.yml @@ -1,7 +1,7 @@ server: - port: 24205 + port: 24305 servlet: - context-path: /gunshiApp/hsz + context-path: /gunshiApp/ss compression: # 打开 gzip 传输 enabled: true @@ -22,7 +22,7 @@ spring: max-request-size: 100MB gunshi: core: - appName: project-hsz + appName: project-ss shqxjsCloudowrCnPath: http://shqxjs.cloudowr.cn/service/ diff --git a/src/main/resources/config-dev.yml b/src/main/resources/config-dev.yml index b912bf4..88b7589 100644 --- a/src/main/resources/config-dev.yml +++ b/src/main/resources/config-dev.yml @@ -5,18 +5,18 @@ spring: dynamic: datasource: master: - url: jdbc:postgresql://postgres:5432/hsz?stringtype=unspecified + url: jdbc:postgresql://postgres:5432/ss?stringtype=unspecified username: gunshiiot password: 1234567a driver-class-name: org.postgresql.Driver access-logging: - url: jdbc:postgresql://postgres:5432/hsz + url: jdbc:postgresql://postgres:5432/ss username: gunshiiot password: 1234567a driver-class-name: org.postgresql.Driver data: redis: - host: hsz-redis + host: ss-redis port: 6379 #password: 1234567a database: 0 @@ -26,19 +26,19 @@ mybatis-plus: gunshi: core: - appName: project-hsz + appName: project-ss file: key: 6gaWRs4bz4mxpXXxgZF4 secret: 3QFbff974hVwpH6laAondq33iShpzs6YG4XsrTRT endpoint: http://10.42.6.75:9100 - publicBucket: gs-hsz - loginBucket: gs-hsz - privateBucket: gs-hsz + publicBucket: gs-ss + loginBucket: gs-ss + privateBucket: gs-ss # 洪水预测数据库连接信息 algorithem: datasource: - url: jdbc:postgresql://postgres:5432/hsz?stringtype=unspecified + url: jdbc:postgresql://postgres:5432/ss?stringtype=unspecified username: gunshiiot password: 1234567a driver-class-name: org.postgresql.Driver diff --git a/src/main/resources/config-local.yml b/src/main/resources/config-local.yml index f34f567..fa01898 100644 --- a/src/main/resources/config-local.yml +++ b/src/main/resources/config-local.yml @@ -5,12 +5,12 @@ spring: dynamic: datasource: master: - url: jdbc:postgresql://localhost:5432/hsz-dp?stringtype=unspecified + url: jdbc:postgresql://localhost:5432/ss?stringtype=unspecified username: postgres password: postgres driver-class-name: org.postgresql.Driver access-logging: - url: jdbc:postgresql://localhost:5432/hsz-dp + url: jdbc:postgresql://localhost:5432/ss username: postgres password: postgres driver-class-name: org.postgresql.Driver @@ -26,19 +26,19 @@ mybatis-plus: gunshi: core: - appName: project-hsz + appName: project-ss file: key: 6gaWRs4bz4mxpXXxgZF4 secret: 3QFbff974hVwpH6laAondq33iShpzs6YG4XsrTRT endpoint: http://10.42.6.75:9100 - publicBucket: gs-hsz - loginBucket: gs-hsz - privateBucket: gs-hsz + publicBucket: gs-ss + loginBucket: gs-ss + privateBucket: gs-ss # 洪水预测数据库连接信息 algorithem: datasource: - url: jdbc:postgresql://localhost:5432/hsz-dp?stringtype=unspecified + url: jdbc:postgresql://localhost:5432/ss?stringtype=unspecified username: postgres password: postgres driver-class-name: org.postgresql.Driver diff --git a/src/main/resources/config-prod.yml b/src/main/resources/config-prod.yml index 03b0fdf..872327a 100644 --- a/src/main/resources/config-prod.yml +++ b/src/main/resources/config-prod.yml @@ -5,18 +5,18 @@ spring: dynamic: datasource: master: - url: jdbc:postgresql://postgres:5432/hsz?stringtype=unspecified + url: jdbc:postgresql://postgres:5432/ss?stringtype=unspecified username: gunshiiot password: 1234567a driver-class-name: org.postgresql.Driver access-logging: - url: jdbc:postgresql://postgres:5432/hsz + url: jdbc:postgresql://postgres:5432/ss username: gunshiiot password: 1234567a driver-class-name: org.postgresql.Driver data: redis: - host: hsz-redis + host: ss-redis port: 6379 #password: 1234567a database: 4 @@ -26,19 +26,19 @@ mybatis-plus: gunshi: core: - appName: project-hsz + appName: project-ss file: key: 6gaWRs4bz4mxpXXxgZF4 secret: 3QFbff974hVwpH6laAondq33iShpzs6YG4XsrTRT endpoint: http://10.42.6.75:9100 - publicBucket: gs-hsz - loginBucket: gs-hsz - privateBucket: gs-hsz + publicBucket: gs-ss + loginBucket: gs-ss + privateBucket: gs-ss # 洪水预测数据库连接信息 algorithem: datasource: - url: jdbc:postgresql://postgres:5432/hsz?stringtype=unspecified + url: jdbc:postgresql://postgres:5432/ss?stringtype=unspecified username: gunshiiot password: 1234567a driver-class-name: org.postgresql.Driver diff --git a/src/main/resources/mapper/RealRainMapper.xml b/src/main/resources/mapper/RealRainMapper.xml index ec84faa..180ab2a 100644 --- a/src/main/resources/mapper/RealRainMapper.xml +++ b/src/main/resources/mapper/RealRainMapper.xml @@ -1,7 +1,7 @@ - with m1 as ( select t1.stcd, t1.sttp, diff --git a/src/main/resources/mapper/StPptnRDMapper.xml b/src/main/resources/mapper/StPptnRDMapper.xml index ffc1279..139a91d 100644 --- a/src/main/resources/mapper/StPptnRDMapper.xml +++ b/src/main/resources/mapper/StPptnRDMapper.xml @@ -2,7 +2,7 @@ - SELECT stb.stcd, stb.adcd, r.tm stm @@ -13,11 +13,11 @@ WHERE stb.source = 'SK' - SELECT #{stcd} stcd, COALESCE(max(tm), '2021-01-01 00:00:00') tm FROM st_pptn_r_d WHERE stcd = #{stcd} - select d.stcd, to_char(d.day_date, 'YYYY-MM-DD 00:00:00') tm, d.drp from (SELECT stcd, -- 计算分组键:直接调整时间戳以8点为基准 diff --git a/src/main/resources/mapper/StPptnRHMapper.xml b/src/main/resources/mapper/StPptnRHMapper.xml index b949558..d825940 100644 --- a/src/main/resources/mapper/StPptnRHMapper.xml +++ b/src/main/resources/mapper/StPptnRHMapper.xml @@ -2,25 +2,25 @@ - select tm,drp from public.st_pptn_r_h where tm ]]> #{start} and tm #{end} and stcd = (select stcd from public.att_res_base where res_code = '42118130001') order by tm asc - select tm,rz from public.st_rsvr_r where tm =]]> #{start} and tm #{end} and stcd = (select stcd from public.att_res_base where res_code = '42118130001') order by tm asc - select tm,drp,TO_CHAR(tm, 'DD') as day,TO_CHAR(tm, 'MM') as month from public.st_pptn_r_d where year = #{year} and stcd = (select stcd from public.att_res_base where res_code = '42118130001') order by tm asc - SELECT h.stcd, h.hour_tm tm, h.drp from (SELECT r.stcd, DATE_TRUNC('hour', r.tm - INTERVAL '1 second') + INTERVAL '1 hour' AS hour_tm, SUM ( r.drp ) AS drp @@ -36,11 +36,11 @@ hour_tm) h - SELECT #{stcd} stcd, COALESCE(max(tm), '2021-01-01 00:00:00') tm, MAX ( chtm ) chtm FROM st_pptn_r_h WHERE stcd = #{stcd} - select tm,rz as drp,TO_CHAR(tm, 'DD') as day,TO_CHAR(tm, 'MM') as month from public.st_rsvr_r where TO_CHAR(tm, 'YYYY') = #{year} and TRIM(TO_CHAR(tm, 'HH24')) = '08' and stcd = (select stcd from public.att_res_base where res_code = '42118130001') diff --git a/src/main/resources/mapper/StWaterRRealMapper.xml b/src/main/resources/mapper/StWaterRRealMapper.xml index ca6bacd..7727bc7 100644 --- a/src/main/resources/mapper/StWaterRRealMapper.xml +++ b/src/main/resources/mapper/StWaterRRealMapper.xml @@ -2,7 +2,7 @@ - SELECT stb.stcd, stb.sttp, diff --git a/src/main/resources/mapper/StWaterRReorganizeMapper.xml b/src/main/resources/mapper/StWaterRReorganizeMapper.xml index d346547..bff495e 100644 --- a/src/main/resources/mapper/StWaterRReorganizeMapper.xml +++ b/src/main/resources/mapper/StWaterRReorganizeMapper.xml @@ -3,7 +3,7 @@ - select * from st_water_r_reorganize t WHERE 1=1