dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/DataDashboardController.java
@@ -3,14 +3,16 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.demo.domain.bo.RsDangerTotalBo; import org.dromara.demo.domain.vo.*; import org.dromara.demo.service.IDataDashboardService; import org.springframework.web.bind.annotation.GetMapping; 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; import java.util.Map; /** * @author ghl @@ -64,9 +66,37 @@ * 安全隐患统计 */ @SaCheckPermission("demo:dangerTotal:list") @GetMapping("/dangerTotal") public R<RsDangerTotalDashboardVo> getDangerTotal() { return R.ok(service.getDangerTotal()); @GetMapping("/dangerTotal/{period}") public R<RsDangerTotalDashboardVo> getDangerTotal(@PathVariable String period) { return R.ok(service.getDangerTotal(period)); } /** * 交通宣传 */ @SaCheckPermission("demo:trafficPropaganda:list") @GetMapping("/trafficPropaganda") public TableDataInfo<RsTrafficPropagandaVo> getTrafficPropaganda() { return TableDataInfo.build(service.getTrafficPropaganda()); } /** * 交通事故 */ @SaCheckPermission("demo:trafficAccident:list") @GetMapping("/trafficAccident") public TableDataInfo<RsTrafficAccidentVo> getTrafficAccident() { return TableDataInfo.build(service.getTrafficAccident()); } /** * 数据上图 */ @SaCheckPermission("demo:geographyData:list") @GetMapping("/geographyData") public R<List<Map<String, Object>>> getGeographyData() { return R.ok(service.getGeographyData()); } } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/RsTrafficAccidentController.java
New file @@ -0,0 +1,105 @@ package org.dromara.demo.controller; import java.util.List; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.web.core.BaseController; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.demo.domain.vo.RsTrafficAccidentVo; import org.dromara.demo.domain.bo.RsTrafficAccidentBo; import org.dromara.demo.service.IRsTrafficAccidentService; import org.dromara.common.mybatis.core.page.TableDataInfo; /** * 交通事故 * * @author gonghl * @date 2024-03-11 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/demo/trafficAccident") public class RsTrafficAccidentController extends BaseController { private final IRsTrafficAccidentService rsTrafficAccidentService; /** * 查询交通事故列表 */ @SaCheckPermission("demo:trafficAccident:list") @GetMapping("/list") public TableDataInfo<RsTrafficAccidentVo> list(RsTrafficAccidentBo bo, PageQuery pageQuery) { return rsTrafficAccidentService.queryPageList(bo, pageQuery); } /** * 导出交通事故列表 */ @SaCheckPermission("demo:trafficAccident:export") @Log(title = "交通事故", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(RsTrafficAccidentBo bo, HttpServletResponse response) { List<RsTrafficAccidentVo> list = rsTrafficAccidentService.queryList(bo); ExcelUtil.exportExcel(list, "交通事故", RsTrafficAccidentVo.class, response); } /** * 获取交通事故详细信息 * * @param id 主键 */ @SaCheckPermission("demo:trafficAccident:query") @GetMapping("/{id}") public R<RsTrafficAccidentVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable String id) { return R.ok(rsTrafficAccidentService.queryById(id)); } /** * 新增交通事故 */ @SaCheckPermission("demo:trafficAccident:add") @Log(title = "交通事故", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R<Void> add(@Validated(AddGroup.class) @RequestBody RsTrafficAccidentBo bo) { return toAjax(rsTrafficAccidentService.insertByBo(bo)); } /** * 修改交通事故 */ @SaCheckPermission("demo:trafficAccident:edit") @Log(title = "交通事故", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public R<Void> edit(@Validated(EditGroup.class) @RequestBody RsTrafficAccidentBo bo) { return toAjax(rsTrafficAccidentService.updateByBo(bo)); } /** * 删除交通事故 * * @param ids 主键串 */ @SaCheckPermission("demo:trafficAccident:remove") @Log(title = "交通事故", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable String[] ids) { return toAjax(rsTrafficAccidentService.deleteWithValidByIds(List.of(ids), true)); } } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/RsTrafficAccident.java
New file @@ -0,0 +1,45 @@ package org.dromara.demo.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serial; import java.util.Date; /** * 交通事故对象 rs_traffic_accident * * @author gonghl * @date 2024-03-11 */ @Data @TableName("rs_traffic_accident") public class RsTrafficAccident { @Serial private static final long serialVersionUID = 1L; /** * 编号 */ @TableId(value = "id") private String id; /** * 标题 */ private String title; /** * 排序 */ private Long sequence; /** * 启用状态 1启用 2未启用 */ private Long status; private Date createTime; } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/bo/RsTrafficAccidentBo.java
New file @@ -0,0 +1,48 @@ package org.dromara.demo.domain.bo; import org.dromara.demo.domain.RsTrafficAccident; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; /** * 交通事故业务对象 rs_traffic_accident * * @author gonghl * @date 2024-03-11 */ @Data @EqualsAndHashCode(callSuper = true) @AutoMapper(target = RsTrafficAccident.class, reverseConvertGenerate = false) public class RsTrafficAccidentBo extends BaseEntity { /** * 编号 */ @NotBlank(message = "编号不能为空", groups = { EditGroup.class }) private String id; /** * 标题 */ @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) private String title; /** * 排序 */ @NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class }) private Long sequence; /** * 启用状态 1启用 2未启用 */ @NotNull(message = "启用状态 1启用 2未启用不能为空", groups = { AddGroup.class, EditGroup.class }) private Long status; } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerInfoVo.java
@@ -1,17 +1,16 @@ package org.dromara.demo.domain.vo; import org.dromara.demo.domain.RsDangerInfo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.demo.domain.RsDangerInfo; import org.dromara.system.domain.vo.SysOssVo; import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; /** @@ -75,4 +74,7 @@ */ @ExcelProperty(value = "创建时间") private Date createTime; private List<SysOssVo> imgList; } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsTrafficAccidentVo.java
New file @@ -0,0 +1,62 @@ package org.dromara.demo.domain.vo; import org.dromara.demo.domain.RsTrafficAccident; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.util.Date; /** * 交通事故视图对象 rs_traffic_accident * * @author gonghl * @date 2024-03-11 */ @Data @ExcelIgnoreUnannotated @AutoMapper(target = RsTrafficAccident.class) public class RsTrafficAccidentVo implements Serializable { @Serial private static final long serialVersionUID = 1L; /** * 编号 */ @ExcelProperty(value = "编号") private String id; /** * 标题 */ @ExcelProperty(value = "标题") private String title; /** * 排序 */ @ExcelProperty(value = "排序") private Long sequence; /** * 创建时间 */ @ExcelProperty(value = "创建时间") private Date createTime; /** * 启用状态 1启用 2未启用 */ @ExcelProperty(value = "启用状态 1启用 2未启用") private Long status; } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsTrafficIndexVo.java
@@ -9,7 +9,7 @@ import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; /** @@ -182,5 +182,9 @@ @ExcelProperty(value = "创建时间") private Date createTime; private String targetOneIcon; private String targetTwoIcon; private String targetThreeIcon; private String targetFourIcon; } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsTrafficPropagandaVo.java
@@ -58,4 +58,6 @@ @ExcelProperty(value = "创建时间") private Date createTime; private String url; } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsDangerInfoMapper.java
@@ -4,6 +4,8 @@ import org.dromara.demo.domain.vo.RsDangerInfoVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import java.util.List; /** * 安全隐患信息Mapper接口 * @@ -12,4 +14,5 @@ */ public interface RsDangerInfoMapper extends BaseMapperPlus<RsDangerInfo, RsDangerInfoVo> { List<RsDangerInfoVo> getDangerInfo(); } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsDangerTotalMapper.java
@@ -5,6 +5,8 @@ import org.dromara.demo.domain.vo.RsDangerTotalVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import java.util.List; /** * 安全隐患统计Mapper接口 * @@ -18,4 +20,11 @@ * @return 隐患统计数量 */ RsDangerTotalDashboardVo getDangerTotalNums(); /** * 获取隐患统计列表 * @param periodDate 统计周期 * @return 隐患统计列表 */ List<RsDangerTotalVo> getDangerTotalInfo(String periodDate); } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsGeographyDataMapper.java
@@ -1,8 +1,11 @@ package org.dromara.demo.mapper; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.demo.domain.RsGeographyData; import org.dromara.demo.domain.vo.RsGeographyDataVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import java.util.List; import java.util.Map; /** * 数据上图Mapper接口 @@ -12,4 +15,5 @@ */ public interface RsGeographyDataMapper extends BaseMapperPlus<RsGeographyData, RsGeographyDataVo> { List<Map<String, Object>> getGeographyData(); } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsTrafficAccidentMapper.java
New file @@ -0,0 +1,18 @@ package org.dromara.demo.mapper; import org.dromara.demo.domain.RsTrafficAccident; import org.dromara.demo.domain.vo.RsTrafficAccidentVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import java.util.List; /** * 交通事故Mapper接口 * * @author gonghl * @date 2024-03-11 */ public interface RsTrafficAccidentMapper extends BaseMapperPlus<RsTrafficAccident, RsTrafficAccidentVo> { List<RsTrafficAccidentVo> getTrafficAccident(); } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsTrafficIndexMapper.java
@@ -20,4 +20,10 @@ * @return 图标 */ List<Map<String, String>> icon(); /** * 近3年交通事故指数 * @return 近3年交通事故指数 */ RsTrafficIndexVo getTrafficIndex(); } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsTrafficPropagandaMapper.java
@@ -4,6 +4,8 @@ import org.dromara.demo.domain.vo.RsTrafficPropagandaVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import java.util.List; /** * 交通宣传Mapper接口 * @@ -19,4 +21,9 @@ */ void addSequence(Long sequence, String id); /** * 交通宣传 * @return 交通宣传 */ List<RsTrafficPropagandaVo> getTrafficPropaganda(); } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IDataDashboardService.java
@@ -3,6 +3,7 @@ import org.dromara.demo.domain.vo.*; import java.util.List; import java.util.Map; /** * @author ghl @@ -41,7 +42,29 @@ /** * 安全隐患统计 * * @return 安全隐患统计 */ RsDangerTotalDashboardVo getDangerTotal(); RsDangerTotalDashboardVo getDangerTotal(String period); /** * 交通宣传 * * @return 交通宣传 */ List<RsTrafficPropagandaVo> getTrafficPropaganda(); /** * 交通事故 * * @return 交通事故 */ List<RsTrafficAccidentVo> getTrafficAccident(); /** * 数据上图 * * @return 数据上图 */ List<Map<String, Object>> getGeographyData(); } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IRsTrafficAccidentService.java
New file @@ -0,0 +1,49 @@ package org.dromara.demo.service; import org.dromara.demo.domain.RsTrafficAccident; import org.dromara.demo.domain.vo.RsTrafficAccidentVo; import org.dromara.demo.domain.bo.RsTrafficAccidentBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import java.util.Collection; import java.util.List; /** * 交通事故Service接口 * * @author gonghl * @date 2024-03-11 */ public interface IRsTrafficAccidentService { /** * 查询交通事故 */ RsTrafficAccidentVo queryById(String id); /** * 查询交通事故列表 */ TableDataInfo<RsTrafficAccidentVo> queryPageList(RsTrafficAccidentBo bo, PageQuery pageQuery); /** * 查询交通事故列表 */ List<RsTrafficAccidentVo> queryList(RsTrafficAccidentBo bo); /** * 新增交通事故 */ Boolean insertByBo(RsTrafficAccidentBo bo); /** * 修改交通事故 */ Boolean updateByBo(RsTrafficAccidentBo bo); /** * 校验并批量删除交通事故信息 */ Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid); } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/DataDashboardServiceImpl.java
@@ -3,14 +3,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.demo.domain.RsDangerInfo; import org.dromara.demo.domain.RsTrafficIndex; import org.dromara.demo.domain.vo.*; import org.dromara.demo.mapper.*; import org.dromara.demo.service.IDataDashboardService; import org.dromara.demo.util.PeriodDate; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * @author gonghl @@ -25,12 +26,13 @@ private final RsSceneryOperationDataMapper sceneryOperationDataMapper; private final RsDangerInfoMapper dangerInfoMapper; private final RsDangerTotalMapper dangerTotalMapper; private final RsTrafficPropagandaMapper trafficPropagandaMapper; private final RsTrafficAccidentMapper trafficAccidentMapper; private final RsGeographyDataMapper geographyDataMapper; @Override public RsTrafficIndexVo getTrafficIndex() { LambdaQueryWrapper<RsTrafficIndex> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(RsTrafficIndex::getStatus, 1).orderByDesc(RsTrafficIndex::getCreateTime).last("limit 1"); return trafficIndexMapper.selectVoOne(queryWrapper); return trafficIndexMapper.getTrafficIndex(); } @Override @@ -45,15 +47,30 @@ @Override public List<RsDangerInfoVo> getDangerInfo() { LambdaQueryWrapper<RsDangerInfo> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(RsDangerInfo::getStatus, 1).orderByDesc(RsDangerInfo::getCreateTime); return dangerInfoMapper.selectVoList(queryWrapper); return dangerInfoMapper.getDangerInfo(); } @Override public RsDangerTotalDashboardVo getDangerTotal() { public RsDangerTotalDashboardVo getDangerTotal(String period) { RsDangerTotalDashboardVo dangerTotalDashboardVo = dangerTotalMapper.getDangerTotalNums(); // dangerTotalMapper. String periodDate = "quarter".equals(period) ? new PeriodDate().firstdateTimSeason : new PeriodDate().MonthFirst; List<RsDangerTotalVo> list = dangerTotalMapper.getDangerTotalInfo(periodDate); dangerTotalDashboardVo.setList(list); return dangerTotalDashboardVo; } @Override public List<RsTrafficPropagandaVo> getTrafficPropaganda() { return trafficPropagandaMapper.getTrafficPropaganda(); } @Override public List<RsTrafficAccidentVo> getTrafficAccident() { return trafficAccidentMapper.getTrafficAccident(); } @Override public List<Map<String, Object>> getGeographyData() { return geographyDataMapper.getGeographyData(); } } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsGeographyDataServiceImpl.java
@@ -63,6 +63,7 @@ Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<RsGeographyData> lqw = Wrappers.lambdaQuery(); lqw.like(StringUtils.isNotBlank(bo.getName()), RsGeographyData::getName, bo.getName()); lqw.orderByDesc(RsGeographyData::getCreateTime); return lqw; } @@ -86,7 +87,6 @@ @Override public Boolean updateByBo(RsGeographyDataBo bo) { RsGeographyData update = MapstructUtils.convert(bo, RsGeographyData.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsPcrDataServiceImpl.java
@@ -105,7 +105,6 @@ @Override public Boolean updateByBo(RsPcrDataBo bo) { RsPcrData update = MapstructUtils.convert(bo, RsPcrData.class); validEntityBeforeSave(update); // 启用新数据将其余同类型数据改为禁用 if (bo.getStatus().equals(1L)) { LambdaUpdateWrapper<RsPcrData> updateWrapper = new LambdaUpdateWrapper<>(); dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsTrafficAccidentServiceImpl.java
New file @@ -0,0 +1,111 @@ package org.dromara.demo.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.demo.domain.RsTrafficAccident; import org.dromara.demo.domain.bo.RsTrafficAccidentBo; import org.dromara.demo.domain.vo.RsTrafficAccidentVo; import org.dromara.demo.mapper.RsTrafficAccidentMapper; import org.dromara.demo.service.IRsTrafficAccidentService; import org.springframework.stereotype.Service; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; /** * 交通事故Service业务层处理 * * @author gonghl * @date 2024-03-11 */ @RequiredArgsConstructor @Service public class RsTrafficAccidentServiceImpl implements IRsTrafficAccidentService { private final RsTrafficAccidentMapper baseMapper; /** * 查询交通事故 */ @Override public RsTrafficAccidentVo queryById(String id) { return baseMapper.selectVoById(id); } /** * 查询交通事故列表 */ @Override public TableDataInfo<RsTrafficAccidentVo> queryPageList(RsTrafficAccidentBo bo, PageQuery pageQuery) { LambdaQueryWrapper<RsTrafficAccident> lqw = buildQueryWrapper(bo); Page<RsTrafficAccidentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询交通事故列表 */ @Override public List<RsTrafficAccidentVo> queryList(RsTrafficAccidentBo bo) { LambdaQueryWrapper<RsTrafficAccident> lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper<RsTrafficAccident> buildQueryWrapper(RsTrafficAccidentBo bo) { Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<RsTrafficAccident> lqw = Wrappers.lambdaQuery(); lqw.like(StringUtils.isNotBlank(bo.getTitle()), RsTrafficAccident::getTitle, bo.getTitle()); lqw.eq(bo.getStatus() != null, RsTrafficAccident::getStatus, bo.getStatus()); lqw.orderByAsc(RsTrafficAccident::getSequence); return lqw; } /** * 新增交通事故 */ @Override public Boolean insertByBo(RsTrafficAccidentBo bo) { RsTrafficAccident add = MapstructUtils.convert(bo, RsTrafficAccident.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } return flag; } /** * 修改交通事故 */ @Override public Boolean updateByBo(RsTrafficAccidentBo bo) { RsTrafficAccident update = MapstructUtils.convert(bo, RsTrafficAccident.class); return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(RsTrafficAccident entity) { entity.setCreateTime(new Date()); } /** * 批量删除交通事故 */ @Override public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) { if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; } } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/RsTrafficIndexServiceImpl.java
@@ -116,7 +116,6 @@ @Override public Boolean updateByBo(RsTrafficIndexBo bo) { RsTrafficIndex update = MapstructUtils.convert(bo, RsTrafficIndex.class); validEntityBeforeSave(update); // 启用新数据将所有数据改为禁用 if (bo.getStatus().equals(1)) { LambdaUpdateWrapper<RsTrafficIndex> updateWrapper = new LambdaUpdateWrapper<>(); dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/TargetDataServiceImpl.java
@@ -88,7 +88,6 @@ @Override public Boolean updateByBo(TargetDataBo bo) { TargetData update = MapstructUtils.convert(bo, TargetData.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } dujy-modules/dujy-demo/src/main/java/org/dromara/demo/util/PeriodDate.java
New file @@ -0,0 +1,315 @@ package org.dromara.demo.util; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import org.springframework.util.StringUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class PeriodDate { public static final String FORMAT_YYYY_MM_DD = "yyyy-MM-dd"; //今天 public String today = DateUtil.today(); public DateTime date = DateUtil.date(); //本月 public String month = DateUtil.format(date, "M"); //本周的第一天 public String weekFirst = PeriodDate.getThisWeekOfFirstDate(); //本周的最后一天 public String weekEnd = DateUtil.format(DateUtil.offsetDay(date, 4), "yyyy-MM-dd"); //本月的第一天 public String MonthFirst = PeriodDate.getThisMonthOfFirstDate(0); //本月的最后一天 public String MonthEnd = PeriodDate.getThisMouthLastDay(); //本季度的最后一天 public String lastdateTimSeason = PeriodDate.getCurrQuarter(Integer.valueOf(PeriodDate.getQuarter()))[1]; //本季度的第一天 public String firstdateTimSeason = PeriodDate.getCurrQuarter(Integer.valueOf(PeriodDate.getQuarter()))[0]; //本月天数 public int daysInMonth = PeriodDate.getDaysOfMonth(); public static String changeSqlNotNull(String sql) { String[] strings = sql.split(","); String returnSql = ""; for (String str : strings) { if (str.contains("''")) { returnSql = returnSql + str + ","; } else { returnSql = returnSql + "ifnull(" + str + ",'') " + str + ","; } } return returnSql.substring(0, returnSql.length() - 1); } /** * 获取两个日期之间的所有日期(字符串格式, 按天计算) * * @param startTime String 开始时间 yyyy-MM-dd * @param endTime String 结束时间 yyyy-MM-dd * @return */ public static List<String> getBetweenDays(String startTime, String endTime) throws ParseException { if (StringUtils.isEmpty(startTime) || StringUtils.isEmpty(endTime)) { return null; } //1、定义转换格式 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date start = df.parse(startTime); Date end = df.parse(endTime); if (StringUtils.isEmpty(start) || StringUtils.isEmpty(end)) { return null; } List<String> result = new ArrayList<String>(); Calendar tempStart = Calendar.getInstance(); tempStart.setTime(start); tempStart.add(Calendar.DAY_OF_YEAR, 1); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar tempEnd = Calendar.getInstance(); tempEnd.setTime(end); result.add(sdf.format(start)); while (tempStart.before(tempEnd) || tempStart.equals(tempEnd)) { result.add(sdf.format(tempStart.getTime())); tempStart.add(Calendar.DAY_OF_YEAR, 1); } return result; } /** * 本周的第一天 * * @return */ public static String getThisWeekOfFirstDate() { SimpleDateFormat format = new SimpleDateFormat(FORMAT_YYYY_MM_DD); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return format.format(calendar.getTime()); } /** * @param i 为0表示本月,为1表示下月,为-1表示上月 * @return * @throws * @Title: DateUtil * @Description: 获取本月当前时间(或者上月下月) * @author lin * @since 2019年12月5日下午4:02:44 */ public static String getTime1(Integer i) { Calendar calendar = Calendar.getInstance(); if (i != null) { calendar.add(Calendar.MONTH, i); } int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DATE); return year + "-" + (month + 1) + "-" + day; } /** * @param //i为0表示本月为1表示下月 * @return * @throws * @Title: DateUtil * @Description: 获取本月第一天(获取本月的第一天) * @author lin * @since 2019年12月5日下午3:59:55 */ public static String getThisMonthOfFirstDate(Integer i) { SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd"); Calendar calendar = Calendar.getInstance(); if (i != null) { calendar.add(Calendar.MONTH, i); } calendar.set(Calendar.DAY_OF_MONTH, Calendar.SUNDAY); return format.format(calendar.getTime()); } /** * 获取本月最后一天 * * @return */ public static String getThisMouthLastDay() { //设置时间格式 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //获得实体类 Calendar ca = Calendar.getInstance(); //设置最后一天 ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); //最后一天格式化 String lastDay = format.format(ca.getTime()); return lastDay; } /** * 某一个月第一天和最后一天 * * @param date 指定日期 * @param pattern 日期格式 * @param //isNeedHms是否需要时分秒 * @return */ public static Map<String, Object> getFirstLastDayByMonth(Date date, String pattern, boolean isNeedHms) { SimpleDateFormat df = new SimpleDateFormat(pattern); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); Date theDate = calendar.getTime(); // 第一天 GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance(); gcLast.setTime(theDate); gcLast.set(Calendar.DAY_OF_MONTH, 1); String day_first = df.format(gcLast.getTime()); StringBuffer str = new StringBuffer().append(day_first); if (isNeedHms) { str.append(" 00:00:00"); } day_first = str.toString(); // 最后一天 calendar.add(Calendar.MONTH, 1); // 加一个月 calendar.set(Calendar.DATE, 1); // 设置为该月第一天 calendar.add(Calendar.DATE, -1); // 再减一天即为上个月最后一天 String day_last = df.format(calendar.getTime()); StringBuffer endStr = new StringBuffer().append(day_last); if (isNeedHms) { endStr.append(" 23:59:59"); } day_last = endStr.toString(); Map<String, Object> map = new HashMap<String, Object>(); map.put("first", day_first); map.put("last", day_last); return map; } /** * 获取当前季度 */ public static String getQuarter() { Calendar c = Calendar.getInstance(); int month = c.get(Calendar.MONTH) + 1; int quarter = 0; if (month >= 1 && month <= 3) { quarter = 1; } else if (month >= 4 && month <= 6) { quarter = 2; } else if (month >= 7 && month <= 9) { quarter = 3; } else { quarter = 4; } return quarter + ""; } /** * 获取某季度的第一天和最后一天 * * @param //num第几季度 */ public static String[] getCurrQuarter(int num) { String[] s = new String[2]; String str = ""; // 设置本年的季 Calendar quarterCalendar = null; switch (num) { case 1: // 本年到现在经过了一个季度,在加上前4个季度 quarterCalendar = Calendar.getInstance(); quarterCalendar.set(Calendar.MONTH, 3); quarterCalendar.set(Calendar.DATE, 1); quarterCalendar.add(Calendar.DATE, -1); str = PeriodDate.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd"); s[0] = str.substring(0, str.length() - 5) + "01-01"; s[1] = str; break; case 2: // 本年到现在经过了二个季度,在加上前三个季度 quarterCalendar = Calendar.getInstance(); quarterCalendar.set(Calendar.MONTH, 6); quarterCalendar.set(Calendar.DATE, 1); quarterCalendar.add(Calendar.DATE, -1); str = PeriodDate.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd"); s[0] = str.substring(0, str.length() - 5) + "04-01"; s[1] = str; break; case 3:// 本年到现在经过了三个季度,在加上前二个季度 quarterCalendar = Calendar.getInstance(); quarterCalendar.set(Calendar.MONTH, 9); quarterCalendar.set(Calendar.DATE, 1); quarterCalendar.add(Calendar.DATE, -1); str = PeriodDate.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd"); s[0] = str.substring(0, str.length() - 5) + "07-01"; s[1] = str; break; case 4:// 本年到现在经过了四个季度,在加上前一个季度 quarterCalendar = Calendar.getInstance(); str = PeriodDate.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd"); s[0] = str.substring(0, str.length() - 5) + "10-01"; s[1] = str.substring(0, str.length() - 5) + "12-31"; break; } return s; } /** * 用途:以指定的格式格式化日期字符串 * * @param pattern 字符串的格式 * @param currentDate 被格式化日期 * @return String 已格式化的日期字符串 * @throws NullPointerException 如果参数为空 */ public static String formatDate(Date currentDate, String pattern) { if (currentDate == null || "".equals(pattern) || pattern == null) { return null; } SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(currentDate); } /** * @return java.util.List<java.lang.String> * @Author Lin * @Description * @Date 2021/3/10 14:17 * @Param [] **/ public static List<String> getStartDateToEndDate(String startDate, String endDate) { List<String> betweenDays = null; try { betweenDays = PeriodDate.getBetweenDays(startDate, endDate); System.out.println(betweenDays); } catch (ParseException e) { e.printStackTrace(); } return betweenDays; } /** * @return int * @Author Lin * @Description 本月天数 * @Date 2021/3/10 14:48 * @Param [date] **/ public static int getDaysOfMonth() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } } dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsDangerInfoMapper.xml
@@ -4,4 +4,19 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.dromara.demo.mapper.RsDangerInfoMapper"> <resultMap id="DangerInfoList" type="org.dromara.demo.domain.vo.RsDangerInfoVo"> <id column="id" jdbcType="VARCHAR" property="id" /> <result column="notification_time" jdbcType="VARCHAR" property="notificationTime" /> <result column="danger_type" jdbcType="VARCHAR" property="dangerType" /> <result column="accountability_unit" jdbcType="VARCHAR" property="accountabilityUnit" /> <result column="rectification_time_limit" jdbcType="VARCHAR" property="rectificationTimeLimit" /> <result column="performance" jdbcType="VARCHAR" property="performance" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="status" jdbcType="INTEGER" property="status" /> <collection property="imgList" ofType="org.dromara.system.domain.vo.SysOssVo"/> </resultMap> <select id="getDangerInfo" resultMap="DangerInfoList"> select * from rs_danger_info a left join sys_oss b on a.id = b.tenant_id where `status` = 1 order by a.create_time, b.create_time </select> </mapper> dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsDangerTotalMapper.xml
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.dromara.demo.mapper.RsDangerTotalMapper"> <select id="getDangerTotalNums" resultType="org.dromara.demo.domain.vo.RsDangerTotalDashboardVo"> @@ -10,5 +10,12 @@ where status = 1 </select> <select id="getDangerTotalInfo" resultType="org.dromara.demo.domain.vo.RsDangerTotalVo"> select * from rs_danger_total where period_date >= SUBSTRING(#{periodDate}, 1, 7) and status = 1 order by create_time desc </select> </mapper> dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsGeographyDataMapper.xml
@@ -4,4 +4,27 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.dromara.demo.mapper.RsGeographyDataMapper"> <select id="getGeographyData" resultType="java.util.Map"> select b.type, count(id) as nums from rs_geography_data a right join (select '事故易发多发路段' as type, 1 as sort union all select '重点旅游通道' as type, 2 as sort union all select '都江堰景区' as type, 3 as sort union all select '警力配备' as type, 4 as sort union all select '打围施工' as type, 5 as sort union all select '交通事故易发点' as type, 6 as sort union all select '重点运输企业' as type, 7 as sort union all select '公交线路' as type, 8 as sort union all select '安全隐患' as type, 9 as sort) b on a.type = b.type and a.status = 1 group by b.type order by b.sort </select> </mapper> dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsTrafficAccidentMapper.xml
New file @@ -0,0 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.dromara.demo.mapper.RsTrafficAccidentMapper"> <select id="getTrafficAccident" resultType="org.dromara.demo.domain.vo.RsTrafficAccidentVo"> select a.*, b.url from rs_traffic_accident a left join sys_oss b on a.id = b.tenant_id where `status` = 1 order by sequence </select> </mapper> dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsTrafficIndexMapper.xml
@@ -8,4 +8,14 @@ select * from rs_target_icon order by id </select> <select id="getTrafficIndex" resultType="org.dromara.demo.domain.vo.RsTrafficIndexVo"> select *, (select url from rs_target_icon a left join sys_oss b on a.id = b.tenant_id where `name` = '指标1图标') as target_one_icon, (select url from rs_target_icon a left join sys_oss b on a.id = b.tenant_id where `name` = '指标2图标') as target_two_icon, (select url from rs_target_icon a left join sys_oss b on a.id = b.tenant_id where `name` = '指标3图标') as target_three_icon, (select url from rs_target_icon a left join sys_oss b on a.id = b.tenant_id where `name` = '指标4图标') as target_four_icon from rs_traffic_index where `status` = 1 order by create_time desc limit 1 </select> </mapper> dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsTrafficPropagandaMapper.xml
@@ -8,4 +8,8 @@ update rs_traffic_propaganda set sequence = sequence + 1 where sequence >= #{sequence} and id != #{id} </update> <select id="getTrafficPropaganda" resultType="org.dromara.demo.domain.vo.RsTrafficPropagandaVo"> select a.*, b.url from rs_traffic_propaganda a left join sys_oss b on a.id = b.tenant_id where `status` = 1 order by sequence </select> </mapper>