冲突解决

This commit is contained in:
glj 2023-04-20 09:19:09 +08:00
commit 3716fc1fb8
63 changed files with 1550 additions and 234 deletions

View File

@ -16,4 +16,8 @@ public class AdminManager extends DisasterInfo{
private Long managerId;
private Integer status;
private String occupation;
private String researchField;
}

View File

@ -1,6 +1,7 @@
package com.kening.vordm.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.protostuff.runtime.ArraySchemas;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
@ -26,6 +27,7 @@ public class Administrator extends BaseEntity {
private String account;
@JsonIgnore
private String password;
private String name;

View File

@ -2,6 +2,8 @@ package com.kening.vordm.entity;
import lombok.Data;
import java.util.Date;
/**
* 数据上传实体类
* @author liyuchen
@ -16,5 +18,9 @@ public class DataUpload extends EntityData{
private String disasterKeyword;
private String disasterCountry;
private Date disasterTime;
private Long disasterId;
}

View File

@ -0,0 +1,10 @@
package com.kening.vordm.entity;
import lombok.Data;
@Data
public class DisasterData {
private String type;
private Integer value;
private String date;
}

View File

@ -116,6 +116,11 @@ public class DisasterInfo implements Serializable {
*/
private String sponsorOrganization;
/**
* 灾害管理者id
*/
private Long chiefId;
/**
* 管理用户
*/
@ -141,10 +146,15 @@ public class DisasterInfo implements Serializable {
private List<Websites> websitesList;
/**
* 审核状态 0未审核 1审核通过 2审核不通过 3未认领
*/
@TableField(exist = false)
private String guestManageDisasterRefStatus;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
private Long chiefId;
private String chiefName;

View File

@ -71,10 +71,6 @@ public class EntityData implements Serializable {
*/
private Double visualLat;
/**
* 审核时间
*/
private Date examTime;
/**
* 0 未审核1-审核已通过2-审核未通过
@ -111,6 +107,13 @@ public class EntityData implements Serializable {
*/
private Integer isDeleted;
/**
* 上传人姓名
*/
@TableField(exist = false)
private String uploaderName;
@TableField(exist = false)
private static final long serialVersionUID = 1L;

View File

@ -61,6 +61,16 @@ public class GuestInfo implements Serializable {
*/
private String professionalTitle;
/**
*
*/
private String lastName;
/**
* 名字
*/
private String firstName;
@TableField(exist = false)
private static final long serialVersionUID = 1L;

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 灾害响应表每一个灾害可能有多个用户响应
@ -25,11 +26,6 @@ public class GuestManageDisasterRef implements Serializable {
*/
private Long sponsorId;
/**
* 响应用户
*/
private Long uploaderId;
/**
* 管理人
*/
@ -40,16 +36,21 @@ public class GuestManageDisasterRef implements Serializable {
*/
private Long disasterId;
/**
* 灾害id
*/
private String responseOrganization;
/**
* 审核状态 0未审核 1审核通过 2审核不通过
*/
private Integer status;
/**
* 申请时间
*/
private Date applyTime;
/**
* 通过时间
*/
private Date reviewTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;

View File

@ -6,7 +6,6 @@ import org.springframework.web.multipart.MultipartFile;
/**
* 其他数据实体类
* @extends 继承基础数据实体类
* @author liyuchen
* @date 2023/04/12
*/

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
import java.util.Date;
@ -66,6 +67,12 @@ public class PictureInfo implements Serializable {
*/
private Integer isDeleted;
/**
* 图片对象
*/
@TableField(exist = false)
private MultipartFile file;
@TableField(exist = false)
private static final long serialVersionUID = 1L;

View File

@ -3,10 +3,12 @@ package com.kening.vordm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kening.vordm.vo.productResolutionVo;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 遥感影像源数据
@ -81,6 +83,11 @@ public class RemoteSensingSourceData implements Serializable {
*/
private String satelliteCode;
/**
* 卫星类型0-sentinel,1-landset,2-searchone
*/
private String satelliteType;
/**
* 接收时间
*/
@ -153,8 +160,45 @@ public class RemoteSensingSourceData implements Serializable {
* 来源机构
*/
private String sourceOrganization;
/**
* 0-爬虫获取1-未审核2-已审核上传源数据未补充下载 链接3-已审核上传源数据已补充下载链接
*/
private Integer status;
/**
* 分辨率集合最大值
*/
@TableField(exist = false)
private Double productResolutionMax;
/**
* 分辨率集合最小值
*/
@TableField(exist = false)
private Double productResolutionMin;
/**
* 卫星类型集合
*/
@TableField(exist = false)
private String satelliteCodeList;
/**
* 卫星类型集合
*/
@TableField(exist = false)
private List<String> satelliteCodeListNew;
/**
* 卫星类型集合
*/
@TableField(exist = false)
private List<productResolutionVo> productResolutionVos;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

View File

@ -80,7 +80,14 @@ public class Tool implements Serializable {
* 上传人
*/
private Long uploader;
/**
* 昵称
*/
private String show_name;
/**
* 昵称
*/
private String e_mail;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
@TableField(exist = false)

View File

@ -68,6 +68,11 @@ public class WordCLouds implements Serializable {
*/
private Integer isDeleted;
/**
* 数据类型0-twitter ,1-weibo
*/
private Integer type;
@TableField(exist = false)
private static final long serialVersionUID = 1L;

View File

@ -21,4 +21,8 @@ public class WorldCharts {
* 频次
*/
private Integer value;
/**
* 频次
*/
private Integer type;
}

View File

@ -38,8 +38,23 @@ public class CallForHelpVo extends DisasterInfo {
*/
private String researchField;
/**
* 灾害管理员id-查询条件
*/
private Long chiefIdEquals;
/**
* 创建时间
*/
private Date createTime;
/**
*
*/
private String lastName;
/**
* 名字
*/
private String firstName;
}

View File

@ -0,0 +1,156 @@
package com.kening.vordm.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import lombok.Data;
/**
*
* @TableName center_disaster_info
*/
@TableName(value ="center_disaster_info")
@Data
public class CenterDisasterInfo implements Serializable {
/**
* 唯一值
*/
private Long id;
/**
* 灾害类型
*/
private String disasterType;
/**
* 灾害关键词
*/
private String disasterKeyword;
/**
* 灾害发生时间
*/
private Date disasterTime;
/**
* 灾害发起时间
*/
private Date uploadTime;
/**
* 灾害区域地理字段
*/
private String geometry;
/**
* 灾害强度或震级
*/
private String disasterLevel;
/**
* 受灾国家
*/
private String disasterCountry;
/**
* 响应状态0未审批1审批未通过2审批通过并正在响应3审批通过并且响应完成
*/
private Integer respondStatus;
/**
* 本灾害的用户访问次数
*/
private Integer visitCount;
/**
* 本灾害的数据下载次数
*/
private Integer downloadCount;
/**
* 爬虫类型
*/
private Integer spiderType;
/**
* 爬虫起始时间
*/
private Date tempendTime;
/**
* 爬虫终止时间
*/
private Date tempStartTime;
/**
* 数据条目创建时间
*/
private Date createTime;
/**
* 灾害id,审批通过后生成
*/
private String vordmId;
/**
* 灾害响应时间
*/
private Date respondTime;
/**
* 灾害申请组织
*/
private String sponsorOrganization;
/**
* 字典名称
*/
private String dictValue;
/**
* 数据存储链接
*/
private String disasterImg;
/**
*
*/
private Long size;
/**
*
*/
private String news;
/**
* 用户名称
*/
private String userName;
/**
* 审核状态 0未审核 1审核通过 2审核不通过 3未认领
*/
private Integer status;
/**
* 申请管理员时间
*/
private LocalDateTime applyTime;
/**
* 审批管理员时间
*/
private LocalDateTime reviewTime;
/**
* 用户邮件
*/
private String email;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

View File

@ -9,7 +9,7 @@ import java.util.Date;
import lombok.Data;
/**
*
*
* @TableName disaster_info_vo
*/
@TableName(value ="disaster_info_vo")
@ -106,7 +106,7 @@ public class DisasterInfoVo implements Serializable {
private String sponsorOrganization;
/**
*
*
*/
private String disasterImg;
@ -116,15 +116,20 @@ public class DisasterInfoVo implements Serializable {
private String dictValue;
/**
*
*
*/
private Long size;
/**
*
*
*/
private String news;
/**
* 发起人昵称
*/
private String userName;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}
}

View File

@ -144,6 +144,32 @@ public class EntityDataUserVo {
*/
private String code;
/**
* 产品波段树
*/
private String productBandsNum;
/**
* 卫星代号
*/
private String satelliteCode;
/**
* 产品分辨率
*/
private Double productResolution;
/**
* 云层覆盖量
*/
private Integer cloudCover;
/**
* 生产时间
*/
private Date productTime;
/**
* 文件信息
*/

View File

@ -0,0 +1,87 @@
package com.kening.vordm.vo;
import lombok.Data;
@Data
public class UserVo {
private Long id;
/**
* 验证码
*/
private String code;
/**
* 邮箱
*/
private String email;
/**
* 密码1
*/
private String password;
/**
* 密码2
*/
private String password2;
/**
* 验证码key
*/
private String key;
/**
* 机构Id
*/
private String tenantId;
/**
* 用户平台
*/
private String userType;
/**
* 账号
*/
private String account;
/**
* 昵称
*/
private String name;
/**
* 真名
*/
private String realName;
/**
* 头像
*/
private String avatar;
/**
* 组织机构
*/
private String organization;
/**
* 手机
*/
private String phone;
/**
* 研究范围
*/
private String researchField;
/**
* 职业
*/
private String occupation;
}

View File

@ -0,0 +1,12 @@
package com.kening.vordm.vo;
import lombok.Data;
@Data
public class productResolutionVo {
private Double productResolutionMin;
private Double productResolutionMax;
}

View File

@ -11,7 +11,6 @@ import org.springframework.cloud.client.SpringCloudApplication;
@SpringCloudApplication
public class VoRdmApplication {
public static void main(String[] args) {
BladeApplication.run("yyhouc-"+CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args);
// BladeApplication.run("zqq-" + CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args);
BladeApplication.run("glj-"+CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args);
}
}

View File

@ -9,6 +9,7 @@ import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DigestUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@ -49,13 +50,23 @@ public class AdministratorController {
return R.status(service.saveChiefAdmin(administrator));
}
/**
* 更新管理员信息
* @param administrator
* @return
*/
@PutMapping("/update")
public R<Boolean> update(@RequestBody Administrator administrator){
return R.status(service.updateById(administrator));
}
/**
* 删除管理员用户
* @param ids
* @return
*/
@DeleteMapping("/delete")
public R<Boolean> delete(@RequestParam Long ids){
return R.status(service.removeById(ids));
public R<Boolean> delete(@RequestParam String ids){
return R.status(service.deleteLogic(Func.toLongList(ids)));
}
}

View File

@ -0,0 +1,72 @@
package com.kening.vordm.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.kening.vordm.entity.Tool;
import com.kening.vordm.service.CenterDisasterInfoService;
import com.kening.vordm.service.DisasterInfoVoService;
import com.kening.vordm.service.GuestInfoService;
import com.kening.vordm.service.ToolService;
import com.kening.vordm.vo.CenterDisasterInfo;
import com.kening.vordm.vo.DisasterInfoVo;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Date;
import java.util.Map;
@RestController
@AllArgsConstructor
@RequestMapping("/ui/center")
public class CenterController {
private final CenterDisasterInfoService centerDisasterInfoService;
private final GuestInfoService guestInfoService;
/**
* 个人中心 Responding列表
* 必传email
* @param query
* @return
*/
@GetMapping("/respondingList")
public R<IPage<CenterDisasterInfo>> disasterInfoList(Query query, @RequestParam Map<String, String> params) {
return R.data(centerDisasterInfoService.page(Condition.getPage(query), Wrappers.<CenterDisasterInfo>lambdaQuery()
.eq(CenterDisasterInfo::getRespondStatus,2)
.eq(CenterDisasterInfo::getEmail,String.valueOf(params.get("email")))
.orderByDesc(CenterDisasterInfo::getApplyTime)
));
}
/**
* 个人中心 Responded列表
* 必传email
* @param query
* @return
*/
@GetMapping("/respondedList")
public R<IPage<CenterDisasterInfo>> respondedList(Query query, @RequestParam Map<String, String> params) {
return R.data(centerDisasterInfoService.page(Condition.getPage(query), Wrappers.<CenterDisasterInfo>lambdaQuery()
.eq(CenterDisasterInfo::getRespondStatus,3)
.eq(CenterDisasterInfo::getEmail,String.valueOf(params.get("email")))
.eq(CenterDisasterInfo::getStatus, 1)
.orderByDesc(CenterDisasterInfo::getVordmId)
));
}
@PostMapping("/updatePassword")
public R<Boolean> updatePassword(String oldPassword, String password, String email) {
return R.data(guestInfoService.updatePassword(oldPassword, password, email));
}
}

View File

@ -52,6 +52,19 @@ public class DisasterInfoController {
private final DisasterInfoVoService disasterInfoVoService;
@GetMapping("/saveGuestManageDisasterRef")
public R saveGuestManageDisasterRef(Long disasterId, Long managerId) {
LambdaQueryWrapper<GuestManageDisasterRef> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(GuestManageDisasterRef::getDisasterId, disasterId);
GuestManageDisasterRef one = guestManageDisasterRefService.getOne(queryWrapper);
one.setManagerId(managerId);
one.setApplyTime(new Date());
one.setStatus(0);
return R.status(guestManageDisasterRefService.updateById(one));
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "分页", notes = "传入Tool")
@ApiImplicitParams({
@ -173,11 +186,11 @@ public class DisasterInfoController {
@GetMapping("/homeDisasterInfo")
public R<IPage<DisasterInfoVo>> gethomeDisasterInfo(Query query, @RequestParam Map<String, String> params) {
String dateType = String.valueOf(params.get("dateType"));
if(StringUtils.isNotBlank(dateType) && !"4".equals(dateType) && !"null".equals(dateType)){
if (StringUtils.isNotBlank(dateType) && !"4".equals(dateType) && !"null".equals(dateType)) {
LocalDate date = LocalDate.now();
//如果有时间类型
switch (dateType){
case "1" :
switch (dateType) {
case "1":
//Latest week 上一周
date = LocalDate.now().minusWeeks(1);
break;
@ -192,55 +205,58 @@ public class DisasterInfoController {
default:
break;
}
return R.data(disasterInfoVoService.page(Condition.getPage(query),Wrappers.<DisasterInfoVo>lambdaQuery()
return R.data(disasterInfoVoService.page(Condition.getPage(query), Wrappers.<DisasterInfoVo>lambdaQuery()
.eq(DisasterInfoVo::getRespondStatus, Integer.valueOf(params.get("respondStatus")))
.ge(DisasterInfoVo::getDisasterTime,date)
.le(DisasterInfoVo::getDisasterTime,LocalDate.now())
.eq(StringUtils.isNotBlank(String.valueOf(params.get("disasterType"))) && !"null".equals(String.valueOf(params.get("disasterType"))),DisasterInfoVo::getDisasterType, String.valueOf(params.get("disasterType")))
.and(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea")))
,Wrappers->Wrappers.like(DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("affectedArea"))).or().like(DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("affectedArea"))))
.ge(DisasterInfoVo::getDisasterTime, date)
.le(DisasterInfoVo::getDisasterTime, LocalDate.now())
.eq(StringUtils.isNotBlank(String.valueOf(params.get("disasterType"))) && !"null".equals(String.valueOf(params.get("disasterType"))), DisasterInfoVo::getDisasterType, String.valueOf(params.get("disasterType")))
// .and(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea")))
// ,Wrappers->Wrappers.like(DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("affectedArea"))).or().like(DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("affectedArea"))))
.like(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea"))), DisasterInfoVo::getDisasterCountry, String.valueOf(params.get("affectedArea")))
// .eq("type".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getDisasterType,String.valueOf(params.get("leftVal")))
// .eq("country".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("leftVal")))
// .eq("sponsorOrganization".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("leftVal")))
// .inSql("responseOrganization".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getId,"select t.disaster_id from guest_manage_disaster_ref t " +
// " where t.response_organization = " + params.get("leftVal"))
.orderByDesc("Visits".equals(String.valueOf(params.get("order"))),DisasterInfoVo::getVisitCount)
.orderByDesc("Downloads".equals(String.valueOf(params.get("order"))),DisasterInfoVo::getDownloadCount)
.orderByDesc("Visits".equals(String.valueOf(params.get("order"))), DisasterInfoVo::getVisitCount)
.orderByDesc("Downloads".equals(String.valueOf(params.get("order"))), DisasterInfoVo::getDownloadCount)
.orderByDesc(DisasterInfoVo::getVordmId)
));
}
if("4".equals(dateType)){
if ("4".equals(dateType)) {
//自定义时间
return R.data(disasterInfoVoService.page(Condition.getPage(query),Wrappers.<DisasterInfoVo>lambdaQuery()
return R.data(disasterInfoVoService.page(Condition.getPage(query), Wrappers.<DisasterInfoVo>lambdaQuery()
.eq(DisasterInfoVo::getRespondStatus, Integer.valueOf(params.get("respondStatus")))
.ge(DisasterInfoVo::getDisasterTime,LocalDate.parse(String.valueOf(params.get("startTime"))))
.le(DisasterInfoVo::getDisasterTime,LocalDate.parse(String.valueOf(params.get("endTime"))))
.eq(StringUtils.isNotBlank(String.valueOf(params.get("disasterType"))) && !"null".equals(String.valueOf(params.get("disasterType"))),DisasterInfoVo::getDisasterType, String.valueOf(params.get("disasterType")))
.and(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea")))
,Wrappers->Wrappers.like(DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("affectedArea"))).or().like(DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("affectedArea"))))
.ge(DisasterInfoVo::getDisasterTime, LocalDate.parse(String.valueOf(params.get("startTime"))))
.le(DisasterInfoVo::getDisasterTime, LocalDate.parse(String.valueOf(params.get("endTime"))))
.eq(StringUtils.isNotBlank(String.valueOf(params.get("disasterType"))) && !"null".equals(String.valueOf(params.get("disasterType"))), DisasterInfoVo::getDisasterType, String.valueOf(params.get("disasterType")))
.like(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea"))), DisasterInfoVo::getDisasterCountry, String.valueOf(params.get("affectedArea")))
// .and(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea")))
// ,Wrappers->Wrappers.like(DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("affectedArea"))).or().like(DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("affectedArea"))))
// .eq("type".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getDisasterType,String.valueOf(params.get("leftVal")))
// .eq("country".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("leftVal")))
// .eq("sponsorOrganization".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("leftVal")))
// .inSql("responseOrganization".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getId,"select t.disaster_id from guest_manage_disaster_ref t " +
// " where t.response_organization = " + params.get("leftVal"))
.orderByDesc("Visits".equals(String.valueOf(params.get("order"))),DisasterInfoVo::getVisitCount)
.orderByDesc("Downloads".equals(String.valueOf(params.get("order"))),DisasterInfoVo::getDownloadCount)
.orderByDesc("Visits".equals(String.valueOf(params.get("order"))), DisasterInfoVo::getVisitCount)
.orderByDesc("Downloads".equals(String.valueOf(params.get("order"))), DisasterInfoVo::getDownloadCount)
.orderByDesc(DisasterInfoVo::getVordmId)
));
} else{
} else {
//没有时间相关的
return R.data(disasterInfoVoService.page(Condition.getPage(query),Wrappers.<DisasterInfoVo>lambdaQuery()
return R.data(disasterInfoVoService.page(Condition.getPage(query), Wrappers.<DisasterInfoVo>lambdaQuery()
.eq(DisasterInfoVo::getRespondStatus, Integer.valueOf(params.get("respondStatus")))
.eq(StringUtils.isNotBlank(String.valueOf(params.get("disasterType"))) && !"null".equals(String.valueOf(params.get("disasterType"))),DisasterInfoVo::getDisasterType, String.valueOf(params.get("disasterType")))
.and(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea")))
,Wrappers->Wrappers.like(DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("affectedArea"))).or().like(DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("affectedArea"))))
.eq(StringUtils.isNotBlank(String.valueOf(params.get("disasterType"))) && !"null".equals(String.valueOf(params.get("disasterType"))), DisasterInfoVo::getDisasterType, String.valueOf(params.get("disasterType")))
.like(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea"))), DisasterInfoVo::getDisasterCountry, String.valueOf(params.get("affectedArea")))
// .and(StringUtils.isNotBlank(String.valueOf(params.get("affectedArea"))) && !"null".equals(String.valueOf(params.get("affectedArea")))
// ,Wrappers->Wrappers.like(DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("affectedArea"))).or().like(DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("affectedArea"))))
// .eq("type".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getDisasterType,String.valueOf(params.get("leftVal")))
// .eq("country".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getDisasterCountry,String.valueOf(params.get("leftVal")))
// .eq("sponsorOrganization".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getSponsorOrganization,String.valueOf(params.get("leftVal")))
// .inSql("responseOrganization".equals(String.valueOf(params.get("leftType"))) && !"null".equals(String.valueOf(params.get("leftType"))),DisasterInfoVo::getId,"select t.disaster_id from guest_manage_disaster_ref t " +
// " where t.response_organization = " + params.get("leftVal"))
.orderByDesc("Visits".equals(String.valueOf(params.get("order"))),DisasterInfoVo::getVisitCount)
.orderByDesc("Downloads".equals(String.valueOf(params.get("order"))),DisasterInfoVo::getDownloadCount)
.orderByDesc("Visits".equals(String.valueOf(params.get("order"))), DisasterInfoVo::getVisitCount)
.orderByDesc("Downloads".equals(String.valueOf(params.get("order"))), DisasterInfoVo::getDownloadCount)
.orderByDesc(DisasterInfoVo::getVordmId)
));
}
@ -305,7 +321,7 @@ public class DisasterInfoController {
* call for help
*/
@PostMapping("Call-for-help")
public R<Boolean> insertRespondInfo(@RequestBody CallForHelpVo callForHelpVo ){
public R<Boolean> insertRespondInfo(@RequestBody CallForHelpVo callForHelpVo) {
GuestInfo guestInfo = new GuestInfo();
BeanUtil.copyProperties(callForHelpVo, guestInfo);
guestInfo.setId(IdWorker.getId());
@ -326,14 +342,59 @@ public class DisasterInfoController {
@PostMapping("review")
public R<Boolean> review( @RequestBody DisasterInfo disasterInfo){
Boolean flag=disasterInfoService.updateById(disasterInfo);
public R<Boolean> review(@RequestBody DisasterInfo disasterInfo) {
Boolean flag = disasterInfoService.updateById(disasterInfo);
return R.data(flag);
}
@ApiOperationSupport(order = 6)
@ApiOperation(value = "提交", notes = "传入Tool")
@PostMapping("/submit")
public R submit(@ApiParam(value = "Tool对象", required = true) @RequestBody DisasterInfo disasterInfo) {
return R.status(disasterInfoService.saveOrUpdate(disasterInfo));
}
/**
* 后台管理系统-控制台灾害各项统计
*
* @return
*/
@GetMapping("/statistics")
public R statistics() {
return R.data(disasterInfoService.statistics());
}
/**
* 批量更新灾害的chief管理者
*
* @param disasterInfoList
* @return
*/
@PutMapping("/updateBatch")
public R updateBatch(@RequestBody List<DisasterInfo> disasterInfoList) {
return R.status(disasterInfoService.updateBatchById(disasterInfoList));
}
/**
* 批量更新灾害的chief管理者
*
* @param disasterInfoList
* @return
*/
@PutMapping("/removeManage")
public R removeManage(@RequestBody List<DisasterInfo> disasterInfoList) {
return R.status(disasterInfoService.removeManage(disasterInfoList));
}
/**
* 判断用户是否管理当前灾害
*
* @param userId 用户Id
* @param disasterId 灾害Id
* @return
*/
@GetMapping("/getByUserDisasterInfo")
public R getByUserDisasterInfo(Long userId, Long disasterId) {
return R.data(disasterInfoService.getByUserDisasterInfo(userId, disasterId));
}
}

View File

@ -50,5 +50,13 @@ public class EntityDataController {
public R saveEntityData(EntityDataUserVo entityDataUserVo) {
return R.data(entityDataService.saveEntityData(entityDataUserVo));
}
@GetMapping("/updateByIdEntityDataStatus")
public R updateByIdEntityDataStatus(Long id,Integer status) {
EntityData entityData = new EntityData();
entityData.setId(id);
entityData.setStatus(status);
return R.data(entityDataService.updateById(entityData));
}
}

View File

@ -0,0 +1,62 @@
package com.kening.vordm.controller;
import com.kening.vordm.service.DisasterInfoService;
import com.kening.vordm.service.EmailService;
import com.kening.vordm.vo.UserVo;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import javax.mail.MessagingException;
@RestController
@RequiredArgsConstructor
@RequestMapping("/ui/login")
public class LoginController {
//实体数据服务层
private final DisasterInfoService disasterInfoService;
//邮箱发送服务
private final EmailService emailService;
/**
* 新增用户信息
*
* @param userVo
* @return
*/
@PostMapping("/saveUserData")
public R saveUserData(@RequestBody UserVo userVo) {
return disasterInfoService.saveUserData(userVo);
}
/**
* 邮箱发送
* @param userVo
* @return
* @throws MessagingException
*/
@PostMapping("/sendUserPasswordEmail")
public R sendUserPasswordEmail(@RequestBody UserVo userVo) throws MessagingException {
return emailService.sendUserPasswordEmail(userVo);
}
/**
* 根据邮箱获取用户信息-游客信息
* @param email 邮箱
* @return
*/
@GetMapping("/getUserByEmail")
public R getUserByEmail(String email) {
return R.data(disasterInfoService.getUserByEmail(email));
}
@GetMapping("/getBladeUserByEmail")
public R getBladeUserByEmail(String email) {
return R.data(disasterInfoService.getBladeUserByEmail(email));
}
}

View File

@ -1,8 +1,10 @@
package com.kening.vordm.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kening.vordm.entity.DataUpload;
import com.kening.vordm.entity.EntityData;
import com.kening.vordm.entity.Hotspot;
import com.kening.vordm.entity.OtherData;
import com.kening.vordm.service.DataUploadService;
import com.kening.vordm.service.OtherDataService;
@ -11,6 +13,7 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@ -65,10 +68,7 @@ public class OtherDataController {
* @return
*/
@DeleteMapping("/remove")
public R remove(@RequestParam Long id){
EntityData entityData = new EntityData();
entityData.setId(id);
entityData.setIsDeleted(1);
return R.status(service.updateById(entityData));
public R remove(@RequestParam String id){
return R.status(service.removeByIds(Func.toLongList(id)));
}
}

View File

@ -1,7 +1,9 @@
package com.kening.vordm.controller;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kening.vordm.entity.*;
import com.kening.vordm.service.HotspotService;
import com.kening.vordm.service.PictureInfoService;
@ -11,8 +13,10 @@ import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
@ -38,25 +42,39 @@ public class PictureInfoController {
return R.data(service.page(Condition.getPage(query),Condition.getQueryWrapper(params,PictureInfo.class)));
}
@GetMapping("/getPictureInfoByDisasterId")
public R<List<PictureInfo>> getPictureInfoByDisasterId(Long disasterId){
LambdaQueryWrapper<PictureInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PictureInfo::getDisasterId,disasterId);
return R.data(service.list(queryWrapper));
}
/**
* 批量上传
* @return
*/
@PostMapping("/upload")
public R audit(OtherData OtherData){
public R upload(OtherData OtherData){
return R.status(service.uploadData(OtherData));
}
/**
* 修改图片信息
* @param pictureInfo
* @return
*/
@PutMapping("/update")
public R upadte(PictureInfo pictureInfo){
return R.status(service.updatePicture(pictureInfo));
}
/**
* 逻辑删除图片数据
* @param id
* @return
*/
@DeleteMapping("/remove")
public R remove(@RequestParam Long id){
PictureInfo pictureInfo = new PictureInfo();
pictureInfo.setId(id);
pictureInfo.setIsDeleted(1);
return R.status(service.updateById(pictureInfo));
public R remove(@RequestParam String id){
return R.status(service.removeByIds(Func.toLongList(id)));
}
}

View File

@ -1,10 +1,9 @@
package com.kening.vordm.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kening.vordm.entity.DisasterInfo;
import com.kening.vordm.entity.EntityData;
import com.kening.vordm.entity.RemoteSensingSourceData;
import com.kening.vordm.entity.*;
import com.kening.vordm.service.DisasterInfoService;
import com.kening.vordm.service.RemoteSensingSourceDataService;
import com.kening.vordm.vo.GroupByUse;
@ -13,11 +12,10 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@AllArgsConstructor
@ -45,23 +43,27 @@ public class RemoteSensingSourceDataController {
/**
* 实体数据列表信息
* @param remoteSensingSourceData 实体数据条件信息
* @param optionsJson 实体数据条件信息
* @param query current当前页 size 每页数据量
* @return
*/
@GetMapping("/Condition")
public R<IPage<RemoteSensingSourceData>> getRemoteSensingSourceDataByCondition(RemoteSensingSourceData remoteSensingSourceData, Query query) {
public R<IPage<RemoteSensingSourceData>> getRemoteSensingSourceDataByCondition( String optionsJson, Query query) {
RemoteSensingSourceData remoteSensingSourceData = new RemoteSensingSourceData();
if (optionsJson!=null){
remoteSensingSourceData = (RemoteSensingSourceData)JSON.parseObject(optionsJson, RemoteSensingSourceData.class);
}
return R.data(remoteSensingSourceDataService.getRemoteSensingSourceDataByCondition(Condition.getPage(query), remoteSensingSourceData));
}
// /**
// * 根据页码和灾害信息查出遥感影像源数据可多个灾害
// * @param remoteSensingSourceData
// * @param query
// * @return
// */
// @GetMapping("/Condition1")
// public R<IPage<RemoteSensingSourceData>> getRemoteSensingSourceDataByCondition(RemoteSensingSourceData remoteSensingSourceData, Query query){
// return R.data(remoteSensingSourceDataService.page(Condition.getPage(query),Condition.getQueryWrapper(remoteSensingSourceData)));
// }
/**
* 实体数据列表信息
* @param params
* @param query
* @return
*/
@GetMapping("/PagesData")
public R<IPage<RemoteSensingSourceData>> Pages(@RequestParam Map<String,Object> params, Query query){
return R.data(remoteSensingSourceDataService.page(Condition.getPage(query),Condition.getQueryWrapper(params,RemoteSensingSourceData.class)));
}
}

View File

@ -1,6 +1,7 @@
package com.kening.vordm.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kening.vordm.entity.*;
import com.kening.vordm.service.HotspotService;
import com.kening.vordm.service.OtherDataService;
@ -10,6 +11,7 @@ import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@ -63,6 +65,27 @@ public class VisualDataController {
return R.data(hotspotService.page(Condition.getPage(query),Condition.getQueryWrapper(params,Hotspot.class)));
}
/**
* 更新词云数据
* @param wordCLouds
* @return
*/
@PutMapping("/updateWordCloud")
public R updateWordCloud(@RequestBody WordCLouds wordCLouds){
return R.status(wordCloudsService.updateById(wordCLouds));
}
/**
* 更新热点数据
* @param hotspot
* @return
*/
@PutMapping("/updateHotspot")
public R updateHotspot(@RequestBody Hotspot hotspot){
return R.status(hotspotService.updateById(hotspot));
}
/**
* 移除词云或者热点数据
* @param id
@ -70,17 +93,11 @@ public class VisualDataController {
* @return
*/
@DeleteMapping("/remove")
public R remove(@RequestParam Long id,@RequestParam Integer type){
public R remove(@RequestParam String id,@RequestParam Integer type){
if(type == 1){
WordCLouds wordCLouds = new WordCLouds();
wordCLouds.setId(id);
wordCLouds.setIsDeleted(1);
return R.status(wordCloudsService.updateById(wordCLouds));
return R.status(wordCloudsService.removeByIds(Func.toLongList(id)));
}else {
Hotspot hotspot = new Hotspot();
hotspot.setId(id);
hotspot.setIsDeleted(1);
return R.status(hotspotService.updateById(hotspot));
return R.status(hotspotService.removeByIds(Func.toLongList(id)));
}
}

View File

@ -16,4 +16,11 @@ public interface AdministratorMapper extends BaseMapper<Administrator> {
* @return
*/
Long getChiefRole(@Param("roleName") String roleName);
/**
* 根据租户名称查询租户id
* @param tenantName
* @return
*/
String getChiefTenant(@Param("tenantName") String tenantName);
}

View File

@ -15,4 +15,16 @@
</if>
</where>
</select>
<select id="getChiefTenant" resultType="java.lang.String">
select
tenant_id
from blade_tenant
<where>
and is_deleted = 0
<if test="tenantName!=null and tenantName!=''">
and tenant_name = #{tenantName}
</if>
</where>
</select>
</mapper>

View File

@ -0,0 +1,18 @@
package com.kening.vordm.mapper;
import com.kening.vordm.vo.CenterDisasterInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author wangns
* @description 针对表center_disaster_info的数据库操作Mapper
* @createDate 2023-04-19 11:46:32
* @Entity com.kening.vordm.vo.CenterDisasterInfo
*/
public interface CenterDisasterInfoMapper extends BaseMapper<CenterDisasterInfo> {
}

View File

@ -0,0 +1,47 @@
<?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="com.kening.vordm.mapper.CenterDisasterInfoMapper">
<resultMap id="BaseResultMap" type="com.kening.vordm.vo.CenterDisasterInfo">
<result property="id" column="id" jdbcType="BIGINT"/>
<result property="disasterType" column="disaster_type" jdbcType="VARCHAR"/>
<result property="disasterKeyword" column="disaster_keyword" jdbcType="VARCHAR"/>
<result property="disasterTime" column="disaster_time" jdbcType="DATE"/>
<result property="uploadTime" column="upload_time" jdbcType="TIMESTAMP"/>
<result property="geometry" column="geometry" jdbcType="VARCHAR"/>
<result property="disasterLevel" column="disaster_level" jdbcType="VARCHAR"/>
<result property="disasterCountry" column="disaster_country" jdbcType="VARCHAR"/>
<result property="respondStatus" column="respond_status" jdbcType="SMALLINT"/>
<result property="visitCount" column="visit_count" jdbcType="INTEGER"/>
<result property="downloadCount" column="download_count" jdbcType="INTEGER"/>
<result property="spiderType" column="spider_type" jdbcType="INTEGER"/>
<result property="tempendTime" column="tempend_time" jdbcType="TIMESTAMP"/>
<result property="tempStartTime" column="temp_start_time" jdbcType="TIMESTAMP"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="vordmId" column="vordm_id" jdbcType="VARCHAR"/>
<result property="respondTime" column="respond_time" jdbcType="TIMESTAMP"/>
<result property="sponsorOrganization" column="sponsor_organization" jdbcType="VARCHAR"/>
<result property="dictValue" column="dict_value" jdbcType="VARCHAR"/>
<result property="disasterImg" column="disaster_img" jdbcType="VARCHAR"/>
<result property="size" column="size" jdbcType="DECIMAL"/>
<result property="news" column="news" jdbcType="VARCHAR"/>
<result property="userName" column="user_name" jdbcType="VARCHAR"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="applyTime" column="apply_time" jdbcType="TIMESTAMP"/>
<result property="reviewTime" column="review_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,disaster_type,disaster_keyword,
disaster_time,upload_time,geometry,
disaster_level,disaster_country,respond_status,
visit_count,download_count,spider_type,
tempend_time,temp_start_time,create_time,
vordm_id,respond_time,sponsor_organization,
dict_value,disaster_img,size,
news,user_name,status,
apply_time,review_time
</sql>
</mapper>

View File

@ -20,7 +20,9 @@
select
di.disaster_keyword,
bdb.dict_value as disasterType,
di.id as disasterId
di.id as disasterId,
di.disaster_time as disasterTime,
di.disaster_country as disasterCountry
from entity_data ed
left join blade_user bu on bu.id = ed.uploader_id
left join disaster_info di on di.id = ed.disaster_id

View File

@ -4,14 +4,13 @@ package com.kening.vordm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kening.vordm.entity.DisasterInfo;
import com.kening.vordm.vo.CallForHelpVo;
import com.kening.vordm.vo.DisasterMangerInfo;
import com.kening.vordm.vo.GroupByUse;
import com.kening.vordm.vo.UserTenantVo;
import com.kening.vordm.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.poi.ss.formula.functions.T;
import org.springblade.core.secure.BladeUser;
import java.util.List;
import java.util.Map;
/**
* @author G1393
@ -49,4 +48,24 @@ public interface DisasterInfoMapper extends BaseMapper<DisasterInfo> {
List<GroupByUse> getLeft2Data();
List<CallForHelpVo> page(IPage page,@Param("callForHelpVo" )CallForHelpVo callForHelpVo);
Integer getUserEmail(@Param("email") String email);
Integer saveUserData(@Param("userVo") UserVo userVo);
UserVo getUserByEmail(String email);
/**
* 获取灾害数据 关联字典项
* @return
*/
List<DisasterInfo> getAllData(@Param("chiefId") Long chiefId);
/**
* 查询每个月响应的灾害
* @return
*/
List<Map<String, Object>> getDisasterInfoByMouth(@Param("start") String start,@Param("end") String end,@Param("type") Integer type,@Param("chiefId") Long chiefId);
void updataUserByEmail(@Param("email") String email,@Param("password") String password);
}

View File

@ -26,18 +26,39 @@
</resultMap>
<sql id="Base_Column_List">
di.id,di.disaster_type,di.disaster_keyword,
di
.
id
,di.disaster_type,di.disaster_keyword,
di.disaster_time,di.upload_time,di.geometry,
di.disaster_level,di.disaster_country,di.respond_status,
di.visit_count,di.spider_type,di.tempend_time,
di.temp_start_time,di.create_time,di.vordm_id,
di.respond_time,di.download_count,di.sponsor_organization
</sql>
<sql id="Home_Disaster_Info">
d.disaster_type,d.disaster_time,d.disaster_country,
d
.
disaster_type
,d.disaster_time,d.disaster_country,
m.organization
</sql>
<insert id="saveUserData">
insert into blade_user (tenant_id, password, email, status, is_deleted)
values (#{userVo.tenantId}, #{userVo.password}, #{userVo.email}, 1, 0);
</insert>
<update id="updataUserByEmail">
UPDATE blade_user SET password = #{password}
<where>
<if test="email !=null and email != ''">
email = #{email}
</if>
</where>
</update>
<select id="getDisasterInfoDetail" resultType="com.kening.vordm.entity.DisasterInfo">
select
<include refid="Base_Column_List"/>,
@ -45,7 +66,8 @@
gi.organization AS sponsorOrganization,
bu.name AS managerName,
bu.organization AS managerOrganization,
bdb.dict_value AS dictValue
bdb.dict_value AS dictValue,
gmdr.status AS guestManageDisasterRefStatus
from disaster_info di
left join guest_manage_disaster_ref gmdr on gmdr.disaster_id = di.id
left join blade_dict_biz bdb on bdb.dict_key = di.disaster_type
@ -63,15 +85,15 @@
from disaster_info
left join blade_dict_biz bdb on bdb.dict_key = disaster_info.disaster_type
<where>
<if test="disaster_type !=null and disaster_type!=''">
disaster_type = #{disaster_type}
</if>
<if test="disaster_country !=null and disaster_country!=''">
and disaster_country like concat('%',#{disaster_country},'%')
</if>
<if test="disaster_time!=null and disaster_time!=''">
and disaster_time like concat('%',#{disaster_time},'%')
</if>
<if test="disaster_type !=null and disaster_type!=''">
disaster_type = #{disaster_type}
</if>
<if test="disaster_country !=null and disaster_country!=''">
and disaster_country like concat('%',#{disaster_country},'%')
</if>
<if test="disaster_time!=null and disaster_time!=''">
and disaster_time like concat('%',#{disaster_time},'%')
</if>
</where>
</select>
@ -100,23 +122,33 @@
<select id="getLeft3Data" resultType="com.kening.vordm.vo.GroupByUse">
select t.sponsor_organization as `name`, count(*) as cnt, 'sponsorOrganization' as `type`
from disaster_info t where t.sponsor_organization != ''
from disaster_info t
where t.sponsor_organization != ''
GROUP BY t.sponsor_organization
ORDER BY cnt desc LIMIT 3
ORDER BY cnt desc LIMIT 5
</select>
<select id="getLeft4Data" resultType="com.kening.vordm.vo.GroupByUse">
select t.response_organization as `name`, count(*) as cnt, 'responseOrganization' as `type`
from guest_manage_disaster_ref t where t.response_organization != '' GROUP BY t.response_organization ORDER BY cnt desc LIMIT 3
select gi.organization as `name`, count(*) as cnt, 'responseOrganization' as `type`
from guest_manage_disaster_ref t
INNER JOIN guest_info gi on gi.id = t.manager_id
where gi.organization != '' and t.`status` = '1'
GROUP BY gi.organization
ORDER BY cnt desc LIMIT 5
</select>
<select id="getLeft1Data" resultType="com.kening.vordm.vo.GroupByUse">
select b.dict_key, b.dict_value as name, count(t.disaster_type) as cnt, 'type' as `type`,
CONCAT('/icon_disastertype/icon-',b.dict_key,'.png') as icon
from blade_dict_biz b left join disaster_info t on b.dict_key = t.disaster_type
where b.`code` = 'disaster' and b.parent_id != 0
group by b.dict_key, b.dict_value
order by cnt desc
select b.dict_key,
b.dict_value as name,
count(t.disaster_type) as cnt,
'type' as `type`,
CONCAT('/icon_disastertype/icon-', b.dict_key, '.png') as icon
from blade_dict_biz b
left join disaster_info t on b.dict_key = t.disaster_type
where b.`code` = 'disaster'
and b.parent_id != 0
group by b.dict_key, b.dict_value
order by cnt desc
limit 7
</select>
@ -126,45 +158,115 @@
INNER JOIN
(select t.disaster_country as name, count(*) as cnt, 'country' as `type`
from disaster_info t
group by t.disaster_country
order by cnt desc limit 7) b on c.flagname = b.`name`
group by t.disaster_country limit 5) b on c.flagname = b.`name`
order by b.cnt desc
</select>
<select id="page" parameterType="com.kening.vordm.vo.CallForHelpVo" resultType="com.kening.vordm.vo.CallForHelpVo">
SELECT
u.username ,
u.id as uid ,
u.email,
u.research_field,
u.organization,
d.id,
d.disaster_type,
d.disaster_time,
d.disaster_keyword,
d.upload_time,
d.geometry,
d.respond_status,
d.chief_id,
d.chief_name
d.chief_id,
d.chief_name,
u.username ,
u.last_name AS lastName,
u.first_name AS firstName,
u.id as uid ,
u.email,
u.research_field,
u.organization,
d.id,
d.disaster_type,
d.disaster_time,
d.disaster_keyword,
d.disaster_country,
d.disaster_level,
d.upload_time,
d.geometry,
d.respond_status,
bdb.dict_value as dictValue
From
guest_manage_disaster_ref ud join
guest_info u on u.id = ud.sponsor_id JOIN
disaster_info d on d.id = ud.disaster_id
guest_manage_disaster_ref ud join
guest_info u on u.id = ud.sponsor_id JOIN
disaster_info d on d.id = ud.disaster_id
left join blade_dict_biz bdb on d.disaster_type = bdb.dict_key
<where>
<if test="callForHelpVo.respondStatus == 0 or callForHelpVo.respondStatus == '0'" >
d.respond_status = 1 or d.respond_status = 0
<if test="callForHelpVo.respondStatus!=null">
<if test="callForHelpVo.respondStatus == 0 or callForHelpVo.respondStatus == '0'">
d.respond_status = 1 or d.respond_status = 0
</if>
<if test="callForHelpVo.respondStatus != 0 and callForHelpVo.respondStatus != '0' and callForHelpVo.respondStatus != 3 and callForHelpVo.respondStatus != '3'">
d.respond_status = 2
</if>
<if test="callForHelpVo.respondStatus == 3 or callForHelpVo.respondStatus == '3'">
d.respond_status = 2 or d.respond_status = 3
</if>
</if>
<if test="callForHelpVo.respondStatus != 0 and callForHelpVo.respondStatus != '0' and callForHelpVo.respondStatus != 3 and callForHelpVo.respondStatus != '3'" >
d.respond_status = 2
<if test="callForHelpVo.chiefId != null">
and d.chief_id is null
</if>
<if test="callForHelpVo.respondStatus == 3 or callForHelpVo.respondStatus == '3'" >
d.respond_status = 2 or d.respond_status = 3
<if test="callForHelpVo.chiefIdEquals != null">
and d.chief_id = #{callForHelpVo.chiefIdEquals}
</if>
<if test="callForHelpVo.chiefId != null" >
<if test="callForHelpVo.disasterType != null and callForHelpVo.disasterType != ''">
and bdb.dict_value like concat('%', #{callForHelpVo.disasterType},'%')
</if>
</where>
order by d.upload_time desc
</select>
<select id="getUserEmail" resultType="java.lang.Integer">
select count(id) from blade_user
<where>
<if test="email != null and email != ''">
email = #{email}
</if>
<if test="callForHelpVo.chiefId != null">
d.chief_id = #{callForHelpVo.chiefId}
</if>
</where>
order by d.upload_time desc
</select>
<select id="getUserByEmail" resultType="com.kening.vordm.vo.UserVo">
select password from blade_user
<where>
<if test="email != null and email != ''">
email = #{email}
</if>
</where>
</select>
<select id="getAllData" resultType="com.kening.vordm.entity.DisasterInfo">
select
<include refid="Base_Column_List"/>,
bdb.dict_value AS dictValue
from disaster_info di
left join blade_dict_biz bdb on bdb.dict_key = di.disaster_type
<where>
<if test="chiefId != null">
di.chief_id = #{chiefId}
</if>
</where>
</select>
<select id="getDisasterInfoByMouth" resultType="java.util.Map">
SELECT
<if test="type == 1">
date_format(di.disaster_time,'%m') AS date,
</if>
<if test="type == 2">
date_format(di.respond_time,'%m') AS date,
</if>
COUNT(1) AS value
FROM
disaster_info di
WHERE
di.respond_time BETWEEN #{start} AND #{end}
<if test="type == 2">
AND di.respond_status > 1
</if>
<if test="chiefId != null">
and di.chief_id = #{chiefId}
</if>
GROUP BY date
</select>
</mapper>

View File

@ -16,7 +16,6 @@
<result property="visualFlag" column="visual_flag" jdbcType="INTEGER"/>
<result property="visualLon" column="visual_lon" jdbcType="DOUBLE"/>
<result property="visualLat" column="visual_lat" jdbcType="DOUBLE"/>
<result property="examTime" column="exam_time" jdbcType="TIMESTAMP"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="uploaderId" column="uploader_id" jdbcType="BIGINT"/>
<result property="managerId" column="manager_id" jdbcType="BIGINT"/>
@ -28,15 +27,17 @@
ed.id,ed.title,ed.size,
ed.type,ed.link,ed.remark,
ed.upload_time,ed.disaster_id,ed.visual_flag,
ed.visual_lon,ed.visual_lat,ed.exam_time,
ed.visual_lon,ed.visual_lat,
ed.status,ed.uploader_id,ed.manager_id,
ed.review_time, ed.source_organization
</sql>
<select id="getEntityDataList" resultType="com.kening.vordm.entity.EntityData">
select
<include refid="Base_Column_List"/>
<include refid="Base_Column_List"/>,
gi.username AS uploaderName
from entity_data ed
left join guest_info gi on gi.id = ed.uploader_id
<where>
<if test="entityData.disasterId != null and entityData.disasterId != ''">
ed.disaster_id = #{entityData.disasterId}

View File

@ -3,6 +3,8 @@ package com.kening.vordm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kening.vordm.entity.GuestInfo;
import com.kening.vordm.vo.UserVo;
import org.apache.ibatis.annotations.Param;
/**
* @author G1393
@ -13,4 +15,7 @@ import com.kening.vordm.entity.GuestInfo;
public interface GuestInfoMapper extends BaseMapper<GuestInfo> {
UserVo getBladeUserByEmail(@Param("email") String email);
int updatePassword(String email, String password);
}

View File

@ -14,11 +14,23 @@
<result property="isManage" column="is_manage" jdbcType="INTEGER"/>
<result property="occupation" column="occupation" jdbcType="VARCHAR"/>
<result property="professionalTitle" column="professional_title" jdbcType="VARCHAR"/>
<result property="lastName" column="last_name" jdbcType="VARCHAR"/>
<result property="firstName" column="first_name" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,username,email,
id ,username,email,
organization,research_field,create_time,
is_manage,occupation,professional_title
is_manage,occupation,professional_title,last_name,first_name
</sql>
<update id="updatePassword">
update blade_user t set t.password = #{password} where t.email = #{email}
</update>
<select id="getBladeUserByEmail" resultType="com.kening.vordm.vo.UserVo">
select * FROM blade_user
<where>
email = #{email}
</where>
</select>
</mapper>

View File

@ -7,15 +7,14 @@
<resultMap id="BaseResultMap" type="com.kening.vordm.entity.GuestManageDisasterRef">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="sponsorId" column="sponsor_id" jdbcType="BIGINT"/>
<result property="uploaderId" column="uploader_id" jdbcType="BIGINT"/>
<result property="managerId" column="manager_id" jdbcType="BIGINT"/>
<result property="disasterId" column="disaster_id" jdbcType="BIGINT"/>
<result property="responseOrganization" column="response_organization"/>
<result property="status" column="status"/>
</resultMap>
<sql id="Base_Column_List">
id,sponsor_id,uploader_id,
manager_id,disaster_id,response_organization
id,sponsor_id,
manager_id,disaster_id,status
</sql>
<select id="queryPage" resultType="com.kening.vordm.entity.AdminManager">
@ -24,9 +23,10 @@
gmdr.sponsor_id,
gmdr.manager_id,
gmdr.disaster_id,
gmdr.response_organization,
gmdr.status,
bu.name as managerName,
bu.research_field as researchField,
bu.occupation,
bdb.dict_value as disasterType,
di.disaster_keyword,
di.disaster_time,

View File

@ -20,7 +20,9 @@
select
di.disaster_keyword,
bdb.dict_value as disasterType,
di.id as disasterId
di.id as disasterId,
di.disaster_time as disasterTime,
di.disaster_country as disasterCountry
from disaster_info di
left join blade_dict_biz bdb on di.disaster_type = dict_key
</select>

View File

@ -21,5 +21,4 @@ public interface RemoteSensingSourceDataMapper extends BaseMapper<RemoteSensingS
List<RemoteSensingSourceData> getRemoteSensingSourceData(@Param("disasterType") String disasterType,@Param("disasterCountry") String disasterCountry,@Param("disasterTime") String disasterTime);
IPage<RemoteSensingSourceData> getRemoteSensingSourceDataByCondition(@Param("remoteSensingSourceData") RemoteSensingSourceData remoteSensingSourceData, IPage<Object> page);
}

View File

@ -71,11 +71,17 @@
<if test="remoteSensingSourceData.disasterId != null and remoteSensingSourceData.disasterId != ''">
r.disaster_id = #{remoteSensingSourceData.disasterId}
</if>
<if test="remoteSensingSourceData.productResolution != null and remoteSensingSourceData.productResolution != ''">
and r.product_resolution = #{remoteSensingSourceData.productResolution}
<if test="remoteSensingSourceData.productResolutionMax != null and remoteSensingSourceData.productResolutionMin != null">
and r.product_resolution &gt;= #{remoteSensingSourceData.productResolutionMin} and r.product_resolution &lt; #{remoteSensingSourceData.productResolutionMax}
</if>
<if test="remoteSensingSourceData.satelliteCode != null and remoteSensingSourceData.satelliteCode != ''">
and r.satellite_code = #{remoteSensingSourceData.satelliteCode}
<if test="remoteSensingSourceData.productResolutionMax == null and remoteSensingSourceData.productResolutionMin != null">
and r.product_resolution &gt; #{remoteSensingSourceData.productResolutionMin}
</if>
<if test="remoteSensingSourceData.satelliteCodeListNew != null and remoteSensingSourceData.satelliteCodeListNew != '' and remoteSensingSourceData.satelliteCodeListNew.size() != 0">
and r.satellite_code in
<foreach item="AList" index="index" collection="remoteSensingSourceData.satelliteCodeListNew"
open="(" separator="," close=")">#{AList}
</foreach>
</if>
</where>
</select>

View File

@ -18,6 +18,8 @@
<result property="type" column="type" jdbcType="VARCHAR"/>
<result property="voluntaryFlag" column="voluntary_flag" jdbcType="INTEGER"/>
<result property="uploader" column="uploader" jdbcType="BIGINT"/>
<result property="show_name" column="show_name" jdbcType="VARCHAR"/>
<result property="e_mail" column="e_mail" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
@ -25,6 +27,6 @@
Introduction,link,detail,
create_time,upload_id,manager_id,
review_time,type,voluntary_flag,
uploader
uploader,show_name,e_mail
</sql>
</mapper>

View File

@ -20,7 +20,9 @@
select
di.disaster_keyword,
bdb.dict_value as disasterType,
di.id as disasterId
di.id as disasterId,
di.disaster_time as disasterTime,
di.disaster_country as disasterCountry
from disaster_info di
left join blade_dict_biz bdb on di.disaster_type = dict_key
</select>

View File

@ -14,6 +14,7 @@
<result property="status" column="status" jdbcType="SMALLINT"/>
<result property="managerId" column="manager_id" jdbcType="BIGINT"/>
<result property="reviewTime" column="review_time" jdbcType="TIMESTAMP"/>
<result property="type" column="type" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
@ -25,7 +26,8 @@
select
DATE_FORMAT(time,'%Y-%m-%d') date,
frequency value,
word name
word name,
type
from word_clouds
<where>
and `status` = 1

View File

@ -0,0 +1,13 @@
package com.kening.vordm.service;
import com.kening.vordm.vo.CenterDisasterInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author wangns
* @description 针对表center_disaster_info的数据库操作Service
* @createDate 2023-04-19 11:46:32
*/
public interface CenterDisasterInfoService extends IService<CenterDisasterInfo> {
}

View File

@ -4,12 +4,12 @@ package com.kening.vordm.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kening.vordm.entity.DisasterInfo;
import com.kening.vordm.vo.CallForHelpVo;
import com.kening.vordm.vo.DisasterMangerInfo;
import com.kening.vordm.vo.GroupByUse;
import com.kening.vordm.vo.UserTenantVo;
import com.kening.vordm.entity.GuestInfo;
import com.kening.vordm.vo.*;
import org.springblade.core.tool.api.R;
import java.util.List;
import java.util.Map;
/**
* @author G1393
@ -55,4 +55,19 @@ public interface DisasterInfoService extends IService<DisasterInfo> {
Boolean addVisitCount(Long id);
IPage<CallForHelpVo> page(IPage<CallForHelpVo> page, CallForHelpVo callForHelpVo);
R saveUserData(UserVo userVo);
/**
* 后台管理系统-控制台灾害各项统计
* @return
*/
Map<String,Object> statistics();
boolean removeManage(List<DisasterInfo> disasterInfoList);
GuestInfo getUserByEmail(String email);
UserVo getBladeUserByEmail(String email);
Integer getByUserDisasterInfo(Long userId, Long disasterId);
}

View File

@ -2,6 +2,8 @@ package com.kening.vordm.service;
import com.kening.vordm.entity.Email;
import com.kening.vordm.vo.UserVo;
import org.springblade.core.tool.api.R;
import javax.mail.MessagingException;
@ -14,4 +16,6 @@ public interface EmailService {
void sendMimeMessage(Email email) throws MessagingException;
void sendTemplate(Email email) throws MessagingException;
R sendUserPasswordEmail(UserVo userVo) throws MessagingException;
}

View File

@ -11,4 +11,5 @@ import com.kening.vordm.entity.GuestInfo;
*/
public interface GuestInfoService extends IService<GuestInfo> {
Boolean updatePassword(String oldPassword, String password, String email);
}

View File

@ -14,7 +14,15 @@ public interface PictureInfoService extends IService<PictureInfo> {
/**
* 上传图片信息数据
* @param otherData
* @return
*/
boolean uploadData(OtherData otherData);
/**
* 修改图片信息
* @param pictureInfo
* @return
*/
boolean updatePicture(PictureInfo pictureInfo);
}

View File

@ -8,6 +8,7 @@ import com.kening.vordm.mapper.AdministratorMapper;
import com.kening.vordm.service.AdministratorService;
import com.kening.vordm.service.EmailService;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.DigestUtil;
@ -25,10 +26,14 @@ import java.util.Map;
*/
@Slf4j
@Service
@AllArgsConstructor
@RequiredArgsConstructor
public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMapper,Administrator> implements AdministratorService {
private EmailService emailService;
private final EmailService emailService;
@Value("${mail.home.link}")
private String link;
/**
* 根据角色名称获取角色id
@ -52,7 +57,8 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
if(admin!=null){
throw new RuntimeException("The account has been registered");
}
administrator.setTenantId("595035");
String tenantId = baseMapper.getChiefTenant("VORDM");
administrator.setTenantId(tenantId);
administrator.setUserType(1);
administrator.setRealName(administrator.getName());
//密码默认为1234
@ -60,22 +66,22 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
//角色为chief
Long roleId = baseMapper.getChiefRole("chief");
administrator.setRoleId(String.valueOf(roleId));
//保存chief管理员信息
save(administrator);
try{
//设置标题
String subject = "Welcome to register";
//设置要使用的模板
String emailTemplate = "email";
//设置要填充模板的参数
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("account", administrator.getAccount());
//默认密码 1234
dataMap.put("password", "1234");
dataMap.put("link",link);
dataMap.put("time", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")));
Email email = new Email();
email.setSubject(subject);
email.setDataMap(dataMap);
email.setTos(new String[]{administrator.getEmail()});
email.setForm("15806764589@163.com");
emailService.sendTemplate(email);
log.info("邮件发送成功");
}catch (Exception e){

View File

@ -0,0 +1,22 @@
package com.kening.vordm.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kening.vordm.vo.CenterDisasterInfo;
import com.kening.vordm.service.CenterDisasterInfoService;
import com.kening.vordm.mapper.CenterDisasterInfoMapper;
import org.springframework.stereotype.Service;
/**
* @author wangns
* @description 针对表center_disaster_info的数据库操作Service实现
* @createDate 2023-04-19 11:46:32
*/
@Service
public class CenterDisasterInfoServiceImpl extends ServiceImpl<CenterDisasterInfoMapper, CenterDisasterInfo>
implements CenterDisasterInfoService{
}

View File

@ -1,66 +1,89 @@
package com.kening.vordm.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Maps;
import com.kening.vordm.entity.DisasterData;
import com.kening.vordm.entity.DisasterInfo;
import com.kening.vordm.entity.GuestInfo;
import com.kening.vordm.entity.GuestManageDisasterRef;
import com.kening.vordm.mapper.DisasterInfoMapper;
import com.kening.vordm.mapper.GuestInfoMapper;
import com.kening.vordm.service.DisasterInfoService;
import com.kening.vordm.vo.CallForHelpVo;
import com.kening.vordm.vo.DisasterMangerInfo;
import com.kening.vordm.vo.GroupByUse;
import com.kening.vordm.vo.UserTenantVo;
import com.kening.vordm.service.GuestManageDisasterRefService;
import com.kening.vordm.vo.*;
import lombok.RequiredArgsConstructor;
import org.springblade.common.cache.CacheNames;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.DigestUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author G1393
* @description 针对表disaster_info(灾害信息表存储灾害信息)的数据库操作Service实现
* @createDate 2023-04-04 15:54:30
*/
* @author G1393
* @description 针对表disaster_info(灾害信息表存储灾害信息)的数据库操作Service实现
* @createDate 2023-04-04 15:54:30
*/
@Service
@RequiredArgsConstructor
public class DisasterInfoServiceImpl extends ServiceImpl<DisasterInfoMapper, DisasterInfo>
implements DisasterInfoService {
implements DisasterInfoService {
private final BladeRedis bladeRedis;
private final GuestInfoMapper guestInfoMapper;
private final GuestManageDisasterRefService guestManageDisasterRefService;
/**
* 返回指定的灾害条目
*
* @param type
* @param country
* @param time
* @param name
* @return
*/
public List<GroupByUse> getConditionData(String type, String country, String time, String name){
List<GroupByUse> disasterInfos=this.baseMapper.getSelectCondition(type,country,time,name);
public List<GroupByUse> getConditionData(String type, String country, String time, String name) {
List<GroupByUse> disasterInfos = this.baseMapper.getSelectCondition(type, country, time, name);
return disasterInfos;
}
/**
* 用于获取灾害id类型
*
* @param disasterInfo
* @return
*/
public List<Long> getDisasterId(DisasterInfo disasterInfo){
public List<Long> getDisasterId(DisasterInfo disasterInfo) {
QueryWrapper<DisasterInfo> qw = new QueryWrapper<>();
if (disasterInfo.getDisasterType()!=null){
qw.eq("disaster_type",disasterInfo.getDisasterType());
if (disasterInfo.getDisasterType() != null) {
qw.eq("disaster_type", disasterInfo.getDisasterType());
}
if (disasterInfo.getDisasterCountry()!=null){
qw.eq("disaster_country",disasterInfo.getDisasterCountry());
if (disasterInfo.getDisasterCountry() != null) {
qw.eq("disaster_country", disasterInfo.getDisasterCountry());
}
if (disasterInfo.getDisasterTime()!=null){
qw.eq("disaster_time",disasterInfo.getDisasterTime());
if (disasterInfo.getDisasterTime() != null) {
qw.eq("disaster_time", disasterInfo.getDisasterTime());
}
List<DisasterInfo> disasterInfos = this.baseMapper.selectList(qw);
List<Long> ids = new ArrayList<>();
if (!disasterInfos.isEmpty()){
if (!disasterInfos.isEmpty()) {
disasterInfos.stream().forEach(disasterInfo1 -> {
ids .add(disasterInfo1.getId());
ids.add(disasterInfo1.getId());
});
return ids;
}
@ -69,6 +92,7 @@ implements DisasterInfoService {
/**
* 获取债害详情信息
*
* @param id
* @return
*/
@ -79,14 +103,15 @@ implements DisasterInfoService {
/**
* 进行灾害信息的统计国家类型
*
* @param name
* @return
*/
public List<GroupByUse> getDisasterStatistics(String name){
public List<GroupByUse> getDisasterStatistics(String name) {
return this.baseMapper.getDisasterStatistics(name);
}
public IPage<DisasterMangerInfo> getHomeDisaster(IPage<DisasterMangerInfo> page, Integer respondStatus){
public IPage<DisasterMangerInfo> getHomeDisaster(IPage<DisasterMangerInfo> page, Integer respondStatus) {
List<DisasterMangerInfo> disasterMangerInfos = this.baseMapper.getHomeDisaster(page, respondStatus);
return page.setRecords(disasterMangerInfos);
}
@ -128,8 +153,170 @@ implements DisasterInfoService {
@Override
public IPage<CallForHelpVo> page(IPage<CallForHelpVo> page, CallForHelpVo callForHelpVo) {
return page.setRecords(this.baseMapper.page(page,callForHelpVo));
return page.setRecords(this.baseMapper.page(page, callForHelpVo));
}
@Override
public R saveUserData(UserVo userVo) {
//通过邮箱判断当前用户是否存在
Integer userEmail = this.baseMapper.getUserEmail(userVo.getEmail());
if (userEmail > 0) {
return R.data(1405, "The current email is already bound to a user");
}
// 获取验证码
String redisCode = bladeRedis.get(CacheNames.CAPTCHA_KEY + userVo.getKey());
// 判断验证码
if (userVo.getCode() == null || !StringUtil.equalsIgnoreCase(redisCode, userVo.getCode())) {
return R.data(1404, "Verification code error");
}
//密码
userVo.setPassword(DigestUtil.encrypt(userVo.getPassword()));
Integer integer = this.baseMapper.saveUserData(userVo);
return R.status(integer > 0);
}
/**
* 移除管理灾害权限
* @param disasterInfoList
* @return
*/
@Override
public boolean removeManage(List<DisasterInfo> disasterInfoList) {
for (DisasterInfo disasterInfo : disasterInfoList) {
update(Wrappers.<DisasterInfo>lambdaUpdate()
.eq(DisasterInfo::getId, disasterInfo.getId())
.set(DisasterInfo::getChiefId, null));
}
return Boolean.TRUE;
}
@Override
public GuestInfo getUserByEmail(String email) {
LambdaQueryWrapper<GuestInfo> qw = new LambdaQueryWrapper<>();
qw.eq(GuestInfo::getEmail,email);
return guestInfoMapper.selectOne(qw);
}
@Override
public UserVo getBladeUserByEmail(String email) {
return guestInfoMapper.getBladeUserByEmail(email);
}
@Override
public Integer getByUserDisasterInfo(Long userId, Long disasterId) {
LambdaQueryWrapper<GuestManageDisasterRef> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(GuestManageDisasterRef::getDisasterId,disasterId);
queryWrapper.eq(GuestManageDisasterRef::getStatus,1);
queryWrapper.eq(GuestManageDisasterRef::getManagerId,userId);
return guestManageDisasterRefService.count(queryWrapper);
}
/**
* 后台管理系统-控制台灾害各项统计
* @description 暂时没有条件查询 所有统计都暂时写在一个查询里面
* @return
*/
@Override
public Map<String, Object> statistics() {
Map<String,Object> resultMap = Maps.newHashMap();
boolean isAdmin = AuthUtil.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? true : false;
//查询灾害表数据
List<DisasterInfo> disasterInfoList = isAdmin ? list():list(Wrappers.<DisasterInfo>lambdaQuery().eq(DisasterInfo::getChiefId,AuthUtil.getUserId()));
//统计head头部的数据
Map<String,Object> headMap = headData(disasterInfoList);
//统计灾害发生区域占比
Map<String,Long> countryData = disasterCountryProportion(disasterInfoList);
//统计当年的灾害申请次数 按月查询
List<Map<String,Object>> applyMonth = getDisasterReponseByMouth(1,isAdmin);
//统计灾害数量占比
Map<String,Long> disasterNum = disasterNumProportion(isAdmin);
//统计当年的灾害响应次数 按月查询
List<Map<String,Object>> responseMonth = getDisasterReponseByMouth(2,isAdmin);
resultMap.put("header",headMap);
resultMap.put("country",countryData);
resultMap.put("disasterNum",disasterNum);
resultMap.put("responseMonth",responseMonth);
resultMap.put("applyMonth",applyMonth);
return resultMap;
}
/**
* 统计head头部信息
* @return
*/
private Map<String,Object> headData(List<DisasterInfo> disasterInfoList){
Map<String,Object> headMap = Maps.newHashMap();
//用户访问量
Integer visitCount = disasterInfoList.stream().map(DisasterInfo::getVisitCount).reduce(Integer::sum).orElse(0);
//数据下载量
Integer downloadCount = disasterInfoList.stream().map(DisasterInfo::getDownloadCount).reduce(Integer::sum).orElse(0);
//灾害响应申请次数
Integer size = disasterInfoList.size();
//灾害响应实际次数
Long actResponseNum = disasterInfoList.stream().filter(data-> data.getRespondStatus() > 1).count();
//灾害响应百分比
headMap.put("visitCount",visitCount);
headMap.put("downloadCount",downloadCount);
headMap.put("applyCount",size);
headMap.put("actResponseNum",actResponseNum);
return headMap;
}
/**
*计算每个国家的灾害占比
* @return
*/
private Map<String,Long> disasterCountryProportion(List<DisasterInfo> disasterInfoList){
Map<String,Long> proportionMap;
//根据国家分组统计次数以及总灾害的占比
proportionMap = disasterInfoList.stream().filter(data->data.getDisasterCountry()!=null).collect(Collectors.groupingBy(DisasterInfo::getDisasterCountry,Collectors.counting()));
return proportionMap;
}
/**
* 计算每个灾害发生的次数
* @return
*/
private Map<String,Long> disasterNumProportion(boolean type){
List<DisasterInfo> disasterInfoList = baseMapper.getAllData(type ? null:AuthUtil.getUserId());
Map<String,Long> proportionMap = disasterInfoList.stream().filter(data->data.getDictValue()!=null).collect(Collectors.groupingBy(DisasterInfo::getDictValue,Collectors.counting()));
return proportionMap;
}
/**
* 按月统计当年每个月的响应或者申请量
* @return
*/
private List<Map<String, Object>> getDisasterReponseByMouth(Integer type,boolean isAdmin){
//统计每个月的个数
final String[] MONTH = new String[]{"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"};
int year = LocalDate.now().getYear();
List<Map<String, Object>> resultList = new ArrayList<>();
//查询开始时间
String start = year + "-01-01 00:00:00";
//查询结束时间
String end = year + 1 + "-01-01 00:00:00";
List<Map<String, Object>> mapList = baseMapper.getDisasterInfoByMouth(start,end,type,isAdmin ? null:AuthUtil.getUserId());
List<DisasterData> disasterList = mapList.stream().map((map) -> {
return cn.hutool.core.bean.BeanUtil.mapToBean(map, DisasterData.class, true);
}).collect(Collectors.toList());
int size = MONTH.length;
Map<String, List<DisasterData>> collect = disasterList.stream().collect(Collectors.groupingBy(DisasterData::getDate));
for (int i = 0; i < size; ++i) {
Map<String, Object> result = Maps.newLinkedHashMap();
String month = MONTH[i];
List<DisasterData> disasterData = collect.get(month);
if (disasterData!=null&&!disasterData.isEmpty()){
DisasterData disasterData1 = disasterData.get(0);
result.put(year+"-"+month,disasterData1);
}else {
result.put(year+"-"+month,null);
}
resultList.add(result);
}
return resultList;
}
}

View File

@ -1,8 +1,14 @@
package com.kening.vordm.service.impl;
import com.kening.vordm.entity.Email;
import com.kening.vordm.mapper.DisasterInfoMapper;
import com.kening.vordm.service.DisasterInfoService;
import com.kening.vordm.service.EmailService;
import com.kening.vordm.vo.UserVo;
import lombok.RequiredArgsConstructor;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DigestUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
@ -30,6 +36,8 @@ public class EmailServiceImpl implements EmailService {
private final TemplateEngine templateEngine;
private final DisasterInfoMapper disasterInfoMapper;
@Value("${spring.mail.username}")
private String from;
@ -44,6 +52,24 @@ public class EmailServiceImpl implements EmailService {
javaMailSender.send(buildTemplateMail(email));
}
@Override
public R sendUserPasswordEmail(UserVo userVo) throws MessagingException {
//通过邮箱判断当前用户是否存在
UserVo bladeUser = disasterInfoMapper.getUserByEmail(userVo.getEmail());
if (bladeUser == null || bladeUser.getPassword()==null){
return R.data(1405, "There are currently no bound users for this email");
}
disasterInfoMapper.updataUserByEmail(userVo.getEmail(),"1790ae2beb8e6c6a4c6744667e11c4ba26abeb09");
Email email = new Email();
email.setSubject("您的登录密码");
String encrypt = DigestUtil.encrypt(bladeUser.getPassword());
email.setText("Your login password has been updated to“admin@#”");
email.setHtmlText(false);
email.setTos(userVo.getEmail().split(","));
javaMailSender.send(buildMimeMessage(email));
return R.status(true);
}
/**
* 构建模板邮件
* @param email

View File

@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kening.vordm.entity.EntityData;
import com.kening.vordm.entity.GuestInfo;
import com.kening.vordm.entity.RemoteSensingSourceData;
import com.kening.vordm.mapper.EntityDataMapper;
import com.kening.vordm.mapper.GuestInfoMapper;
import com.kening.vordm.mapper.RemoteSensingSourceDataMapper;
import com.kening.vordm.service.EntityDataService;
import com.kening.vordm.vo.EntityDataUserVo;
import com.kening.vordm.vo.UserTenantVo;
@ -40,6 +42,7 @@ public class EntityDataServiceImpl extends ServiceImpl<EntityDataMapper, EntityD
private GuestInfoMapper guestInfoMapper;
private RemoteSensingSourceDataMapper remoteSensingSourceDataMapper;
/**
* 验证码
*/
@ -71,19 +74,7 @@ public class EntityDataServiceImpl extends ServiceImpl<EntityDataMapper, EntityD
public R saveEntityData(EntityDataUserVo entityDataUserVo) {
//创建实体数据
EntityData entityData = new EntityData();
//路径拼接
List<String> link = new ArrayList<>();
//文件大小
List<Long> size = new ArrayList<>();
//文件数据
List<MultipartFile> filesArray = entityDataUserVo.getFilesArray();
filesArray.stream().forEach(files->{
BladeFile bladeFile = minioTemplate.putFile(files);
//获取文件大小
Long fileSize = files.getSize();
link.add(bladeFile.getLink());
size.add(fileSize);
});
//判断上传用户是否存在
LambdaQueryWrapper<GuestInfo> qw = new LambdaQueryWrapper<>();
@ -105,16 +96,44 @@ public class EntityDataServiceImpl extends ServiceImpl<EntityDataMapper, EntityD
entityData.setUploaderId(guestInfo1.getId());
}
Long sum = size.stream().reduce(Long::sum).orElse(0L);
//实体数据
entityData.setTitle(entityDataUserVo.getTitle());
entityData.setSize(sum);
entityData.setLink(StringUtils.join(link,","));
entityData.setDisasterId(entityDataUserVo.getDisasterId());
entityData.setUploadTime(new Date());
entityData.setRemark(entityDataUserVo.getRemark());
entityData.setSourceOrganization(entityDataUserVo.getOrganization());
return R.status(this.baseMapper.insert(entityData)>0);
if (entityDataUserVo.getType().equals("4")) {
RemoteSensingSourceData remoteSensingSourceData = new RemoteSensingSourceData();
remoteSensingSourceData.setDisasterId(entityDataUserVo.getDisasterId());
remoteSensingSourceData.setSourceOrganization(entityDataUserVo.getOrganization());
remoteSensingSourceData.setSatelliteCode(entityDataUserVo.getSatelliteCode());
remoteSensingSourceData.setProductResolution(entityDataUserVo.getProductResolution());
remoteSensingSourceData.setCloudCover(entityDataUserVo.getCloudCover());
remoteSensingSourceData.setProductTime(entityDataUserVo.getProductTime());
remoteSensingSourceData.setProductBandsNum(entityDataUserVo.getProductBandsNum());
remoteSensingSourceData.setStatus(1);
return R.status(remoteSensingSourceDataMapper.insert(remoteSensingSourceData) > 0);
} else {
//路径拼接
List<String> link = new ArrayList<>();
//文件大小
List<Long> size = new ArrayList<>();
//文件数据
List<MultipartFile> filesArray = entityDataUserVo.getFilesArray();
filesArray.stream().forEach(files -> {
BladeFile bladeFile = minioTemplate.putFile(files);
//获取文件大小
Long fileSize = files.getSize();
link.add(bladeFile.getLink());
size.add(fileSize);
});
Long sum = size.stream().reduce(Long::sum).orElse(0L);
//实体数据
entityData.setTitle(entityDataUserVo.getTitle());
entityData.setSize(sum);
entityData.setLink(StringUtils.join(link, ","));
entityData.setDisasterId(entityDataUserVo.getDisasterId());
entityData.setUploadTime(new Date());
entityData.setRemark(entityDataUserVo.getRemark());
entityData.setSourceOrganization(entityDataUserVo.getOrganization());
return R.status(this.baseMapper.insert(entityData) > 0);
}
}

View File

@ -1,9 +1,12 @@
package com.kening.vordm.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kening.vordm.entity.GuestInfo;
import com.kening.vordm.mapper.GuestInfoMapper;
import com.kening.vordm.service.GuestInfoService;
import com.kening.vordm.vo.UserVo;
import org.springblade.core.tool.utils.DigestUtil;
import org.springframework.stereotype.Service;
/**
@ -15,4 +18,17 @@ import org.springframework.stereotype.Service;
public class GuestInfoServiceImpl extends ServiceImpl<GuestInfoMapper, GuestInfo>
implements GuestInfoService {
@Override
public Boolean updatePassword(String oldPassword, String password, String email) {
String op = DigestUtil.encrypt(oldPassword);
UserVo user = this.baseMapper.getBladeUserByEmail(email);
int i = 0;
if(op.equals(user.getPassword())){
i = this.baseMapper.updatePassword(email, password);
return true;
}else{
return false;
}
}
}

View File

@ -35,6 +35,25 @@ implements PictureInfoService {
*/
private MinioTemplate minioTemplate;
/**
* 修改图片信息
* @param pictureInfo
* @return
*/
@Override
public boolean updatePicture(PictureInfo pictureInfo) {
MultipartFile multipartFile = pictureInfo.getFile();
BladeFile bladeFile = minioTemplate.putFile(multipartFile);
PictureInfo picture = new PictureInfo();
picture.setLink(bladeFile.getLink());
picture.setName(bladeFile.getOriginalName());
picture.setSize(multipartFile.getSize());
picture.setType(multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().indexOf(".")+1));
picture.setIsMain(pictureInfo.getIsMain());
picture.setId(pictureInfo.getId());
return updateById(picture);
}
/**
* 上传图片
* @param otherData

View File

@ -1,15 +1,19 @@
package com.kening.vordm.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kening.vordm.entity.EntityData;
import com.kening.vordm.entity.RemoteSensingSourceData;
import com.kening.vordm.mapper.RemoteSensingSourceDataMapper;
import com.kening.vordm.service.RemoteSensingSourceDataService;
import com.kening.vordm.vo.GroupByUse;
import com.kening.vordm.vo.productResolutionVo;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;
/**
* @author G1393
@ -27,6 +31,35 @@ implements RemoteSensingSourceDataService {
@Override
public IPage<RemoteSensingSourceData> getRemoteSensingSourceDataByCondition(IPage<Object> page, RemoteSensingSourceData remoteSensingSourceData) {
return this.baseMapper.getRemoteSensingSourceDataByCondition(remoteSensingSourceData, page);
List<productResolutionVo> productResolutionVos = remoteSensingSourceData.getProductResolutionVos();
String satelliteCodeList = remoteSensingSourceData.getSatelliteCodeList();
List<String> result = new ArrayList<>();
if (satelliteCodeList!=null) {
result = Arrays.asList(satelliteCodeList.split(","));
remoteSensingSourceData.setSatelliteCodeListNew(result);
}
IPage<RemoteSensingSourceData> remoteSensingSourceDataByCondition = new Page<>();
if (productResolutionVos != null && !productResolutionVos.isEmpty()){
List<RemoteSensingSourceData> remoteSensingSourceData1 = new ArrayList<>();
productResolutionVos.stream().forEach(productResolutionVo -> {
if (Objects.equals(productResolutionVo.getProductResolutionMax(), new Double("1000"))){
remoteSensingSourceData.setProductResolutionMax(null);
remoteSensingSourceData.setProductResolutionMin(productResolutionVo.getProductResolutionMin());
}else {
remoteSensingSourceData.setProductResolutionMin(productResolutionVo.getProductResolutionMin());
remoteSensingSourceData.setProductResolutionMax(productResolutionVo.getProductResolutionMax());
}
IPage<RemoteSensingSourceData> remoteSensingSourceDataByConditionNew = this.baseMapper.getRemoteSensingSourceDataByCondition(remoteSensingSourceData, page);
remoteSensingSourceData1.addAll(remoteSensingSourceDataByConditionNew.getRecords());
});
remoteSensingSourceDataByCondition.setRecords(remoteSensingSourceData1);
remoteSensingSourceDataByCondition.setTotal(remoteSensingSourceData1.size());
}else {
remoteSensingSourceDataByCondition = this.baseMapper.getRemoteSensingSourceDataByCondition(remoteSensingSourceData, page);
}
return remoteSensingSourceDataByCondition;
}
}

View File

@ -0,0 +1,48 @@
<?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="com.kening.vordm.mapper.CenterDisasterInfoMapper">
<resultMap id="BaseResultMap" type="com.kening.vordm.vo.CenterDisasterInfo">
<result property="id" column="id" jdbcType="BIGINT"/>
<result property="disasterType" column="disaster_type" jdbcType="VARCHAR"/>
<result property="disasterKeyword" column="disaster_keyword" jdbcType="VARCHAR"/>
<result property="disasterTime" column="disaster_time" jdbcType="DATE"/>
<result property="uploadTime" column="upload_time" jdbcType="TIMESTAMP"/>
<result property="geometry" column="geometry" jdbcType="VARCHAR"/>
<result property="disasterLevel" column="disaster_level" jdbcType="VARCHAR"/>
<result property="disasterCountry" column="disaster_country" jdbcType="VARCHAR"/>
<result property="respondStatus" column="respond_status" jdbcType="SMALLINT"/>
<result property="visitCount" column="visit_count" jdbcType="INTEGER"/>
<result property="downloadCount" column="download_count" jdbcType="INTEGER"/>
<result property="spiderType" column="spider_type" jdbcType="INTEGER"/>
<result property="tempendTime" column="tempend_time" jdbcType="TIMESTAMP"/>
<result property="tempStartTime" column="temp_start_time" jdbcType="TIMESTAMP"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="vordmId" column="vordm_id" jdbcType="VARCHAR"/>
<result property="respondTime" column="respond_time" jdbcType="TIMESTAMP"/>
<result property="sponsorOrganization" column="sponsor_organization" jdbcType="VARCHAR"/>
<result property="dictValue" column="dict_value" jdbcType="VARCHAR"/>
<result property="disasterImg" column="disaster_img" jdbcType="VARCHAR"/>
<result property="size" column="size" jdbcType="DECIMAL"/>
<result property="news" column="news" jdbcType="VARCHAR"/>
<result property="userName" column="user_name" jdbcType="VARCHAR"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="applyTime" column="apply_time" jdbcType="TIMESTAMP"/>
<result property="reviewTime" column="review_time" jdbcType="TIMESTAMP"/>
<result property="email" column="email" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id,disaster_type,disaster_keyword,
disaster_time,upload_time,geometry,
disaster_level,disaster_country,respond_status,
visit_count,download_count,spider_type,
tempend_time,temp_start_time,create_time,
vordm_id,respond_time,sponsor_organization,
dict_value,disaster_img,size,
news,user_name,status,
apply_time,review_time,email
</sql>
</mapper>

View File

@ -11,3 +11,7 @@ mybatis-plus:
swagger:
base-packages:
- com.kening.vordm
mail:
home:
link: http://192.168.31.77:8888

View File

@ -66,23 +66,17 @@
<!--您好,感谢您的注册,这是一封验证邮件,请点击下面的链接完成注册,感谢您的支持!
<a href="#" th:href="@{http://www.baidu.com/register/{id}(id=${id})}">激活账号</a>-->
<div class="container">
<!-- <div class="header">
<h1>欢迎加入宠物之家!</h1>
</div>-->
<div class="content">
<h2>Hello, thank you for your registration</h2>
<p>Your account number<b><span th:text="${account}"></span></b></p>
<p>Your password<b><span th:text="${password}"></span></b></p>
<p>The date you registered<b><span th:text="${time}"></span></b></p>
<P><b>Please click login:<a href="http://192.168.31.77:8888">Point-me jump</a></b></P>
<P><b>Please click login:<a th:href="${link}">Point-me jump</a></b></P>
<p></p>
<!-- <p>当您在使用本网站时,务必要遵守法律法规</p>
<p>如果您有什么疑问可以联系管理员Email: <b>r1624603357@126.com</b></p>-->
</div>
<div class="footer">
<p>This is system mail, please do not reply</p>
<p>Please take good care of your information to avoid misappropriation</p>
<!-- <p>©Rk</p>-->
</div>
</div>
</body>